Почему я запускаю iswitchb-режим таким образом? - PullRequest
5 голосов
/ 14 сентября 2009

Согласно информации на странице emacs, вы можете включить режим iswitchb:

Чтобы включить режим Iswitchb, введите M-x iswitchb-mode или настройте переменная iswitchb-mode до t

Поэтому я добавил в свой .emacs следующее:

(setq iswitchb-mode t)

Однако, похоже, это не работает. После поиска в вики emacs я обнаружил, что мне нужно использовать это:

(iswitchb-mode 1)

Может кто-нибудь объяснить, почему мне нужно включить его таким образом? Я бы хотел лучше понять elisp, а не просто копировать и вставлять объекты из разных мест.

1 Ответ

8 голосов
/ 14 сентября 2009

Обычно режим определяет переменную и функцию с одинаковым именем. Функция будет правильно устанавливать переменную при вызове, но это функция, которая включает режим, а не только переменную (которая только отслеживает состояние режима).

В вашем конкретном случае вам сказали настроить переменную, но вы просто задали ее вместо этого. Разница в том, что когда значение переменной изменяется, custom знает, что делать, а `setq 'ничего не знает об этом. Если вы посмотрите справку по этой переменной (C-h v iswitchb-mode), вы получите:

iswitchb-mode is a variable defined in `iswitchb.el'.
Its value is t

Documentation:
Non-nil if Iswitchb mode is enabled.
See the command `iswitchb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `iswitchb-mode'.

You can customize this variable.
...