rst-mode
Pythonファイルのdocstring内でEmacsを使用するにはどうすればよいですか?ファイルの特定の領域内でさまざまなモードが可能であることを漠然と覚えていますが、それがどのように行われたかは覚えていません。
3 に答える
それをサポートする Emacs パッケージはmmm-mode
. それがインストールされていることを確認してから、Emacs スタートアップの一部として次のようなコードを実行する必要があります。
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(mmm-add-classes
'((python-rst
:submode rst-mode
:front "^ *[ru]?\"\"\"[^\"]*$"
:back "^ *\"\"\""
:include-front t
:include-back t
:end-not-begin t)))
(mmm-add-mode-ext-class 'python-mode nil 'python-rst)
これをいくつかの Python プログラムでテストしたところ、正しく動作するようです。
これは、関数定義の先頭にあるものだけでなく、トリプルクォートで囲まれたすべての文字列に対して rst-mode に切り替わることに注意してください。おそらく、より複雑なフロント正規表現を使用して関数定義の先頭にあるものだけに制限することもできますが、mmm モードの定義はデフォルトで一度に 1 行ずつ一致すると思うので、それを処理する方法が完全にはわかりません。
編集: 私の元のバージョンでは、Emacs を 1 行のドキュメント文字列の時点で最初のモードにし、次のドキュメント文字列の開始までそのモードのままにしていました。このバージョンでは、docstring の開始と同じ行に別の二重引用符がある場合、Emacs が rst-mode になるのを回避します。これはまだ完全ではありませんが、より近いはずです。
docstring がステートメント自体であることを確認する別のセットアップがあります。これにより、他のヒアドキュメントに rst が含まれることを回避できます。
編集目的に関しては、docstring に絞り込んで rst-mode を有効にするのがよいでしょう。
python-mode el は py--docstring-p を提供します。これは、python.el に簡単に適応できる可能性があります。
全体をアイドルタイマーにバインドするよりも、絞り込み/切り替えを行います。
rst-mode をトグルオフして拡大するいくつかの式が残ります。