Sweep Prolog mode uses a bespoke indentation engine to determine the appropriate indentation of each line of Prolog code. The indentation engine analyses the syntactic context of a given line and decides how far it should be indented based on a set of indentation rules.
Indent the current line. If the region is active, indent all the
lines within it (indent-for-tab-command
).
Indent the current line according to SWI-Prolog conventions. This
function is used as the value of indent-line-function
in Sweep
Prolog mode buffers.
Infer the indentation style of the current buffer from its contents.
Number of columns to indent nested code to in Sweep Prolog mode buffers.
The entry point of the indentation engine is the function
sweeprolog-indent-line
which takes no arguments and indents the
line at point. Sweep Prolog mode cooperates with the standard Emacs
interface for indentation by arranging for
sweeprolog-indent-line
to be called whenever a line should be
indented, notably when you press TAB
. For a full description
of the available commands and options that pertain to indentation,
See (emacs)Indentation.
The user option sweeprolog-indent-offset
specifies how many
columns Sweep keeps empty between every level of indentation. The
standard Emacs variable indent-tabs-mode
determines if
indentation can use tabs or only spaces. You may sometimes want to
adjust these options to match the indentation style used in an
existing Prolog codebase. The command
sweeprolog-infer-indent-style
can do that for you by analyzing
the contents of the current buffer and updating the buffer-local
values of sweeprolog-indent-offset
and indent-tabs-mode
accordingly. Consider adding sweeprolog-infer-indent-style
to
sweeprolog-mode-hook
to have it set up the indentation style
automatically in all Sweep Prolog mode buffers:
(add-hook 'sweeprolog-mode-hook #'sweeprolog-infer-indent-style)