How to get whitespace-mode enabled only for certain modes

烂漫一生 提交于 2019-12-08 17:28:41

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!