SMIE Setup and Features
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.
- Function: smie-setup grammar rules-function &rest keywords
-
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 onsmie-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.
- Command: smie-close-block
This command closes the most recently opened (and not yet closed) block.
- Command: smie-down-list &optional arg
This command is like
down-list
but it also pays attention to nesting of tokens other than parentheses, such asbegin...end
.
Copyright © 1990-1996, 1998-2021 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/SMIE-setup.html