问题
I'm trying to get emacs whitespace-mode
enabled automatically only in certain modes. According to the documentation, enabling global-whitespace-mode
and setting the whitespace-global-modes
variable should do exactly that. But I can't get it to work correctly.
In my .emacs.el
I have:
(require 'whitespace)
(global-whitespace-mode t)
(setq whitespace-global-modes '(c-mode c++-mode))
but the definition of whitespace-global-modes
seems to be ignored; global-whitespace-mode
is enabled in every buffer. I know that I've got the variable name correctly, because C-h v whitespace-global-modes
tells me:
whitespace-global-modes's value is (c-mode c++mode)
Documentation:
Modes for which global `whitespace-mode' is automagically turned on.
...
So what am I doing wrong? Have I misunderstood the purpose of whitespace-global-modes
?
I'm running emacs 23.2.1.
回答1:
Apparently the meaning of whitespace-global-modes is very different from what you (and I) understand.
How about trying
(require 'whitespace)
(add-hook 'c-mode-hook
(function (lambda ()
(whitespace-mode t))))
and repeating the same thing for c++-mode?
回答2:
It turns out that the commands in my .emacs.el
were (almost) working after all. What confused me was that "WS" appears in the modeline of all buffers, even though only C and C++ buffers were getting the effect of whitespace-mode
, as desired.
The other problem was that I had a typo: c++mode
rather than c++-mode
.
来源:https://stackoverflow.com/questions/8036576/how-to-get-whitespace-mode-enabled-only-for-certain-modes