5

show-trailing-whitespace目標:いくつかを除いて、すべてのバッファーを有効にしたいと考えています。問題を引き起こす例外は*Shell Command Output*、 とその従兄弟*Async Shell Command*です。

通常は にshow-trailing-whitespaceカスタマイズしていtます。したがって、すべての新しいバッファでアクティブになります。

また、特定のバッファーに対してオフにしたいと思います*Shell Command Output*。これは私にとって問題を引き起こします:

  • 出力バッファは特別なモードを使用しません。それはまだですfundamental-modefundamental-mode-hookこの設定をフックできるものはありません。
  • after-major-mode-change-hookメジャー モードが に変更されたときに実行される がありますfundamental-modeが、バッファはそのモードで開始されるため、このフックは実行されません。
  • にフックする方法はないようですget-buffer-create

この特定の例ではいつadviseでも関数を実行できることはわかっていますget-buffer-createが、できるだけ回避するようにしています。

ヒントはありますか?

4

2 に答える 2

2

問題を反対側から見て、末尾の空白を表示したいモードでのみvarを設定する方がよい場合があります。

しかし、私はあなたが良い点を持っていると思います:これらのシェル出力バッファはを使用すべきではありませんfundamental-mode。それはおそらく時間ですM-x report-emacs-bug

于 2012-10-16T14:45:00.970 に答える
0

受け入れられた回答に従って、特定のモードのみで末尾の空白の強調表示を有効にするコード スニペットを次に示します。

(setq-default show-trailing-whitespace nil)

(defun namespace/show-trailing-whitespace ()
  "Highlight trailing whitespaces in this buffer."
  (setq-local show-trailing-whitespace t))

(dolist (hook '(prog-mode-hook text-mode-hook))
  (add-hook hook 'namespace/show-trailing-whitespace))

このスニペットは、基本的にSteve Purcell の構成から取られています。

于 2021-03-01T15:40:03.567 に答える