A Prolog process can be started by choosing
Run Prolog from the
Prolog menu, by typing C-c <RET>, or by typing M-x
run-prolog. It is however not strictly necessary to start a Prolog
process manually since it is automatically done when consulting or
compiling, if needed. The process can be restarted (i.e. the old
one is killed and a new one is created) by typing C-u C-c
<RET>, in this case Emacs will also prompt for a Lisp list of
extra parameters to pass on the command line.
Programs are run and debugged in the normal way, with terminal I/O
*prolog* buffer. The most common debugging
predicates are available from the menu or via key-bindings.
A particularly useful feature under the Emacs interface is source-linked
debugging. This is enabled or disabled using the
Prolog/Source-linked debugging menu entry. It can also be enabled
by setting the Emacs variable
in ~/.emacs. Both these methods set the Prolog flag
emacs. Its value should be
while loading the code to be debugged and while debugging. If so, the
debugger will display the source code location of the current goal when
it prompts for a debugger command, by highlighting the the current line.
off when the code was loaded, or if it
was asserted or loaded from
user, the current goal will still be
shown but out of context.
Note that if the code has been modified since it was last loaded,
Prolog's line number information may be invalid. If this happens, just
reload the relevant buffer.
Another useful feature which is available for code loaded with
source_info switched on is that the debugger can show the
variable bindings for the current goal, its ancestors, and the clauses
they occur in. The bindings are shown in a separate
Bindings* buffer. This is enabled by the C-c C-g command and
disabled by the C-u C-c C-g command.
Yet another feature which is available for compiled code loaded with
source_info switched on is code coverage highlighting
(see Coverage Analysis). Highlighting of the current buffer is
refreshed by the C-c C-o command and cleared by the C-u C-c
Consultation and compilation is either done via the menu or with the following key-bindings:
The boundaries used when consulting and compiling predicates are the first and last clauses of the predicate the cursor is currently in.
Other useful key-bindings are:
comment-column. This comment will always stay at this position when the line is indented, regardless of changes in the text earlier on the line, provided that
prolog-align-comments-flagis set to
*prolog*window vertically and inserts the
*Prolog Bindings*window, which shows the bindings and is updated upon every debugger command. C-u C-c C-g deletes the
pltrace-face-reached-det(defaults to green) if they were hit at least once and made no nondet calls with the execution profiler switched on; in face
pltrace-face-reached-nondet(defaults to yellow) if they were hit at least once and made one or more nondet calls with the execution profiler switched on; otherwise, they will be highlighted in face
pltrace-face-reached-not(defaults to red). Lines not containing coverage sites are not highlighted.