Next: Operator Precedence Grammars, Up: SMIE [Contents][Index]
SMIEは、構造的な操作と、コードの構造的構造にもとづくその他さまざまな機能、特に自動インデントにたいするワンストップショップ(一カ所で必要な全ての買い物ができること、またはそのような場所)であることを意図しています。メインのエントリーポイントはsmie-setup
で、これは通常メジャーモードセットアップの間に呼び出される関数です。
SMIEの操作とインデントをセットアップする。grammarはsmie-prec2->grammar
により生成される文法テーブル(grammar
table)、rules-functionはsmie-rules-function
で使用されるインデントルールのセット、keywordsは追加の引数であり以下のキーワードを含むことができる:
:forward-token
fun: 使用する前方lexer(lexer=lexical analyzer:
字句解析プログラム)を指定する。
:backward-token
fun: 使用する後方lexerを指定する。
この関数を呼び出せば、forward-sexp
、backward-sexp
、transpose-sexps
のようなコマンドが、すでに構文テーブルにより処理されている単なるカッコのペアー以外の、構造的な要素を正しく扱うことができるようになります。たとえば、与えられた文法が十分に明快ならば、transpose-sexps
はその言語の優先順位のルールを考慮して、+
演算子の2つの引数を正しく入れ替えることができます。
‘smie-setup’の呼び出しもまた、TABによるインデントを期待通り機能させ、begin...end
のような要素に適用するためにblink-matching-paren
を拡張し、そのメジャーモードのキーマップ内でバインドできるいくつかのコマンドを提供するのに十分です。
このコマンドは、もっとも最近オープンされた(まだクローズされていない)ブロックをクローズする。
このコマンドはdown-list
と似ているが、begin...end
のようなカッコ以外のネストされたトークンにも注意を払う。