Next: , Up: SMIE: 無邪気なインデントエンジン   [Contents][Index]


24.7.1.1 SMIEのセットアップと機能

SMIEは構造的な操作とコードの構造的構造にもとづくその他さまざまな機能、特に自動インデントにたいするワンストップショップ(一カ所で必要な全ての買い物ができる店やそのような場所)であることを意図しています。メインのエントリーポイントはsmie-setupで、これは通常はメジャーモードセットアップの間に呼び出される関数です。

Function: smie-setup grammar rules-function &rest keywords

SMIEの操作とインデントをセットアップする。grammarsmie-prec2->grammarにより生成される文法テーブル(grammar table)、rules-functionsmie-rules-functionで使用されるインデントルールのセット、keywordsは追加の引数であり以下のキーワードを含むことができる:

  • :forward-token fun: 使用する前方lexer(lexer=lexical analyzer: 字句解析プログラム)を指定する。
  • :backward-token fun: 使用する後方lexerを指定する。

この関数を呼び出せばforward-sexpbackward-sexptranspose-sexpsのようなコマンドが、すでに構文テーブルにより処理されている単なるカッコのペア以外の、構造的な要素を正しく扱うことができるようになります。たとえば与えられた文法が十分に明快ならば、transpose-sexpsはその言語の優先順位のルールを考慮して+演算子の2つの引数を正しく入れ替えることができます。

smie-setupの呼び出しはbegin...endのような要素に適用するためにblink-matching-parenを拡張してTABによるインデントを期待通り機能させるとともに、メジャーモードのキーマップ内でバインドできるいくつかのコマンドの提供を満足します。

Command: smie-close-block

このコマンドは、もっとも最近オープンされた(まだクローズされていない)ブロックをクローズする。

Command: smie-down-list &optional arg

このコマンドはdown-listと似ているが、begin...endのようなカッコ以外のネストされたトークンにも注意を払う。