Как включить пробельный режим только для определенных режимов - PullRequest
6 голосов
/ 07 ноября 2011

Я пытаюсь включить 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 ]

5 голосов
/ 07 ноября 2011

Очевидно, значение whitespace-global-mode очень отличается от того, что вы (и я) понимаете.

Как насчет попытки

(require 'whitespace)

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

и повторить то же самое для режима c ++ -

3 голосов
/ 07 ноября 2011

Оказывается, что команды в моем .emacs.el были (почти) работающими в конце концов.Что меня смутило, так это то, что «WS» появляется в модельном ряду всех буферов, хотя только буферы C и C ++ получали эффект whitespace-mode, как хотелось бы.: c++mode вместо c++-mode.

...