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)