あらゆる種類のSMIEインデントルール/文法/何かを機能させるために、今では何時間も費やしています。
それが実際にどのように機能するかについてのドキュメント付きの小さな、おもちゃまたはスケルトンSMIEベースのモードの例、またはそれを使用する方法についての議論はどこにありますか?たとえば、式をセミコロンで終わるトークンの文字列として定義し、ブロックを角かっこ以外の式として定義します。本当に、本当に簡単ですか?
特定の質問:smie-config-show-indentを使用すると、90%の時間で ':list-intro ""-> nil'という応答が返されます。式または式のリストの定義に基づいたリストイントロとは何ですか?なぜnilと言っても、次の行をインデントするのですか?どうすれば変更できますか?
第二に:私の文法と私のスミルールの間に何か関係はありますか?それらは両方ともsmie-setupに渡されるためだと思いますが、たとえば、ブロックを識別する文法に基づいて、「 'block'が表示されたら、内容をインデント」と言う方法が見つかりません。 。
第三に、SMIEには多くのルールが「組み込まれている」ようです。開始するだけで、ブラケット、ブレース、括弧などの一般的な処理が可能になります。これらのルールを確認または変更する方法はありますか?それとも、構文テーブルがこれをすべて行っており、SMIEが文字通りまったく何もしていないということです(私は疑い始めています)。
最後に、SMIEをデバッグしようとすると、「編集、評価モードバッファー、他のバッファーのサンプルコードに移動、MX <my mode>、テスト」サイクルを実行しようとしますが、各回でルールがクリアされないようです前のサイクル。define-derived-modeがクリーンシートから開始されることをどのようにして確認できますか?私はそこに(kill-all-local-variables)を持っていますが、それは十分ではないと思われ、emacsを閉じる必要があります。
ハイライト(font-lock-defaultsを使用しているため、実際にはSMIEでさえない)を除いて、漠然と動作するものすら何もないので、私が持っているものの例を投稿していません。本当の赤ちゃんのステップが必要です。
lisp/progmodes/sh-script.el
がsmie.el
かなり広範囲に使用されているように見えることに気付きました。彼らはまた、それの使用を文書化するようですので、おそらくそれはいくぶん良い例かもしれません?