#+TITLE: prolog layer

#+TAGS: dsl|layer|programming

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#key-bindings][Key bindings]]
  - [[#consulting][Consulting]]
  - [[#compiling][Compiling]]
  - [[#formatting][Formatting]]
  - [[#inserting][Inserting]]
  - [[#help][Help]]
  - [[#evaluating][Evaluating]]

* Description
This layer adds support for Prolog using the bundled Prolog mode for Emacs. In addition it also adds ediprolog support for better interaction with SWI-Prolog.

** Features:
- Designed for SWI-Prolog as a default, but can be used with other Prologs that Prolog mode supports.
- Interactive consulting and compiling.
- Auto-formatting.
- Apropos and help lookup.

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =prolog= to the existing =dotspacemacs-configuration-layers= list in this
file.

* Key bindings
** Consulting

| Key binding | Description       |
|-------------+-------------------|
| ~SPC m s b~ | Consult Buffer    |
| ~SPC m s f~ | Consult File      |
| ~SPC m s p~ | Consult Predicate |
| ~SPC m s r~ | Consult Region    |

** Compiling

| Key binding | Description       |
|-------------+-------------------|
| ~SPC m c b~ | Compile Buffer    |
| ~SPC m c c~ | Compile File      |
| ~SPC m c p~ | Compile Predicate |
| ~SPC m c r~ | Compile Region    |

** Formatting

| Key binding | Description   |
|-------------+---------------|
| ~SPC m =~   | Indent Buffer |

** Inserting

| Key binding | Description                                        |
|-------------+----------------------------------------------------|
| ~SPC m i m~ | Insert a Modeline for Module Specification         |
| ~SPC m i n~ | Insert Newline and the Name for the Current Clause |
| ~SPC m i p~ | Insert Predicate Template for the Current Clause   |
| ~SPC m i s~ | Insert Predicate Spec                              |

** Help

| Key binding | Description                           |
|-------------+---------------------------------------|
| ~SPC m h a~ | Prolog Apropos for a Given String     |
| ~SPC m h p~ | Online Help for the Atom under Cursor |

** Evaluating

| Key binding | Description                               |
|-------------+-------------------------------------------|
| ~SPC m e e~ | Context Sensitive SWI-Prolog Interaction. |
