特定のバッファでのみ空白モードを有効にする


8

組織モード以外のすべてのバッファで空白モードをオンにしたいのですが。emacsの起動時にこれを行うのは簡単ですが、私はemacsの永続的なコピーをemacsデーモンモードで使用しているため、そのようにすることはできません。

私は試した:

(require 'whitespace)
(setq whitespace-line-column 80)
(setq whitespace-style '(face lines-tail))
(global-whitespace-mode t)
(add-hook 'org-mode-hook
      (lambda ()
          (visual-line-mode 1)
          (auto-fill-mode -1)
          (setq whitespace-style nil)))

しかし、org-modeバッファーにアクセスするとすぐに、将来のすべてのバッファーに空白モードがなくなります。

他のメジャーモードで空白モードをオンにするフックを追加することを考えましたが、他のすべての可能なモードを列挙したくないので、これは悪い方法のように思えます。

ホワイトスペースモードとグローバルホワイトスペースモードがあることは知っていますが、これをどのように使用してここを助けることができるかはわかりません。

これを達成するために私が考えていない他の方法はありますか?


3
global-whitespace-mode追加して定義を変更でき(unless (eq major-mode 'org-mode) . . .)ます。または、グローバルではなくメジャーモードごとに有効にすることもできます。つまり、メジャーモードごとにフックとを使用します(whitespace-mode 1)。あなたのアイデアはを使用する場合にも機能する可能性があります(setq-local whitespace-style nil)が、技術的にはモードはアクティブなままで、内臓/アンフのみが取り出されます。
法律家、2014


引用されたラムダについての良い点。どのように、またはなぜ私がそれをそのようにしたのかはわかりませんが、.emacsから削除しました。
jcv 14

回答:


17
(setq whitespace-global-modes '(not org-mode))

見る C-hv whitespace-global-modes RET


それは完璧に動作します。ありがとう。私は私が見逃していた単純な何かがなければならないことを知っていました。
jcv 14

4

おそらく、以下を使用して、空白モードを直接オフにする方が簡単です。

 (whitespace-mode -1)

また、whitespace-styleはバッファーローカル変数ではないため、他のすべてのバッファーに対しても変更されます。代わりに試してください

(set (make-local-variable 'whitespace-style) nil)

私は実際には、ホワイトスペーススタイルの変数を使用するのではなく、最初に直接ホワイトスペースモードをオフにしていました。それは私の試みの現在の反復でした。私は人々が提案したことを試し、それから私のために働いたものでこれを更新します。
jcv 14

これも実際には機能しますが、あなたがコメントしたように、スタイルを処理するのではなく、直接空白モードをオフにする方がより良い解決策です(上記の答えがこれを行います)。
jcv 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.