電気インデントモードを1つのモード(ラテックスモード)のみ無効にする


11

ラテックスモードでの電気インデントモードの動作が好きではありません。他のすべての場所(少なくとも私が使用しているすべての場所)では、すばらしいことです。

ラテックスモードでのみ電気インデントモードを永続的に無効にして、それを他のすべての場所に保持するにはどうすればよいですか?

私の設定ファイルの1行のlispハックか、そのようなものだと思いますが、lispは恐ろしいので、それを理解することはできません。

回答:


8

必要なコマンドはelectric-indent-local-modeです。これを使用して、手動で呼び出すことにより、任意のバッファーでelectric-indent-modeをオフにすることができますM-x electric-indent-local-mode。これはトグルなので、同じバッファーでもう一度呼び出すと、再びオンになります。

これをinitファイルから自動的に行うには、フックを設定する必要があります。まず、フックを定義します。

(defun remove-electric-indent-mode ()
  (electric-indent-local-mode -1))

次に、それを適切なモードフックに追加します。AUCTexが提供するLaTeXモードのelectric-indent-modeをオフにするには、次のコマンドを使用します。

(add-hook 'LaTeX-mode-hook 'remove-electric-indent-mode)

デフォルトのtexmodeの場合、次を使用します。

(add-hook 'tex-mode-hook 'remove-electric-indent-mode)

電気インデントをオフにする他のモードでも同じパターンが当てはまります。

モードフックの詳細については、組み込みのEmacsマニュアルノードを参照してください[(emacs) Hooks][1]。EmacsからC-h i r m Hooks <enter>C-hヘルプ、i情報、rマニュアルを読む、mメニュー項目、およびメニュー項目Hooksを選択することでアクセスできます。(または、上記のリンクからhtmlバージョンを確認できます)。


追加の関数を定義する必要はありません:(add-hook 'LaTeX-mode-hook (lambda () (electric-indent-local-mode -1)))十分です。
EmilJeřábek

真ですが、関数を定義すると、コードを複製せずに複数の異なるフックで再利用できます。匿名関数よりも定義済み関数を削除する方が簡単です。これはデバッグ時に役立ちます
タイラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.