GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/SMIE-setup.html ・ emacs-doc.conao3.com

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

SMIEは、構造的なナビゲーションや、コードの構文構造に依存する各種機能(特に自動インデント)をワンストップで提供することを目的としています。主なエントリポイントはsmie-setupであり、これは通常、メジャーモードの設定時に呼び出される関数です。

関数: smie-setup grammar rules-function &rest keywords

SMIEのナビゲーションとインデントを設定します。grammarはsmie-prec2->grammarによって生成された文法テーブルです。rules-functionはsmie-rules-functionで使用するインデントルールのセットです。keywordsは追加の引数であり、以下のキーワードを含めることができます:

  • :forward-token fun: 使用するフォワードレクサーを指定します。
  • :backward-token fun: 使用する逆方向レクサーを指定します。

この関数を呼び出すだけで、forward-sexp、backward-sexp、transpose-sexps といったコマンドが、構文テーブルで既に処理されている対になった括弧以外の構造要素も適切に扱えるようになります。例えば、提供された文法が十分に精緻であれば、transpose-sexps は言語の優先順位規則を考慮して、+ 演算子の2つの引数を正しく転置することができます。

smie-setup を呼び出すだけでも、TAB のインデントが期待通りに動作し、blink-matching-paren を拡張して begin...end のような要素にも適用できるほか、メジャーモードのキーマップにバインド可能なコマンドもいくつか提供されます。

コマンド: smie-close-block

このコマンドは、直近で開いた(まだ閉じていない)ブロックを閉じます。

コマンド: smie-down-list &optional arg

このコマンドは down-list と同様ですが、begin...end のように括弧以外のトークンの入れ子構造にも対応しています。