how to change variables for specific fundamental-mode buffers
-
07-07-2021 - |
Frage
Goal: I want to have show-trailing-whitespace
enabled for all buffers save a few. Exceptions posing a problem are *Shell Command Output*
and its cousin *Async Shell Command*
.
I usually have show-trailing-whitespace
customized to t
. Therefore it is active in all new buffers.
I would also like to have it turned off for certain buffers, foremost amongst them *Shell Command Output*
. This poses a problem for me:
- The output buffer doesn't use a special mode; it is still in
fundamental-mode
. There is nofundamental-mode-hook
that I could hook this setting into. - There is the
after-major-mode-change-hook
which is run when the major mode is changed tofundamental-mode
, but the buffer starts out in that mode and therefore this hook is not run. - There doesn't seem to be a way to hook into
get-buffer-create
.
I know I can always advise
the function get-buffer-create
for this particular example, but I try to avoid that as much as possible.
Any hints?
Lösung
You might be better off looking at the problem from the other side, and only set the var in those modes where you want to see trailing whitespace.
But I think you have a good point: these shell output buffers should not use fundamental-mode
. It's probably time for M-x report-emacs-bug
Andere Tipps
In accordance with the accepted answer, here's a code snippet that enables trailing whitespaces highlighting for specific modes only:
(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))
This snippet is essentially taken from Steve Purcell's configuration.