SMIE is meant to be a one-stop shop for structural navigation and various other features which rely on the syntactic structure of code, in particular automatic indentation. The main entry point is smie-setup
which is a function typically called while setting up a major mode.
Setup SMIE navigation and indentation. grammar is a grammar table generated by smie-prec2->grammar
. rules-function is a set of indentation rules for use on smie-rules-function
. keywords are additional arguments, which can include the following keywords:
:forward-token
fun: Specify the forward lexer to use. :backward-token
fun: Specify the backward lexer to use. Calling this function is sufficient to make commands such as forward-sexp
, backward-sexp
, and transpose-sexps
be able to properly handle structural elements other than just the paired parentheses already handled by syntax tables. For example, if the provided grammar is precise enough, transpose-sexps
can correctly transpose the two arguments of a +
operator, taking into account the precedence rules of the language.
Calling smie-setup
is also sufficient to make TAB indentation work in the expected way, extends blink-matching-paren
to apply to elements like begin...end
, and provides some commands that you can bind in the major mode keymap.
This command closes the most recently opened (and not yet closed) block.
This command is like down-list
but it also pays attention to nesting of tokens other than parentheses, such as begin...end
.
Copyright © 1990-1996, 1998-2019 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/SMIE-setup.html