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