如何仅为某些模式启用空白模式

时间:2011-11-07 12:33:37

标签: emacs dot-emacs

我正在尝试仅在某些模式下自动启用emacs whitespace-mode。根据文档,启用global-whitespace-mode并设置whitespace-global-modes变量应该完全相同。但我无法让它正常工作。

.emacs.el我有:

(require 'whitespace)
(global-whitespace-mode t)
(setq whitespace-global-modes '(c-mode c++-mode))

whitespace-global-modes的定义似乎被忽略了;每个缓冲区都启用global-whitespace-mode。我知道我的变量名称正确,因为C-h v whitespace-global-modes告诉我:

whitespace-global-modes's value is (c-mode c++mode)

Documentation:
Modes for which global `whitespace-mode' is automagically turned on.
...

那么我做错了什么?我误解了whitespace-global-modes的目的吗?

我正在运行emacs 23.2.1。

2 个答案:

答案 0 :(得分:5)

显然,空白 - 全局模式的含义与你(和我)理解的非常不同。

如何尝试

(require 'whitespace)

(add-hook 'c-mode-hook 
  (function (lambda ()
              (whitespace-mode t))))

并为c ++模式重复同样的事情?

答案 1 :(得分:3)

事实证明,.emacs.el 中的命令(几乎)完全正常工作。令我感到困惑的是,“WS”出现在所有缓冲区的模式行中,即使只有C和C ++缓冲区可以根据需要获得whitespace-mode的效果。

另一个问题是我输了一个拼写错误:c++mode而不是c++-mode