Next: Operator Precedence Grammars, Up: SMIE
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 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.