Почему я запускаю iswitchb-режим таким образом?

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

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

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

(setq iswitchb-mode t)

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

(iswitchb-mode 1)

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

1 ответ

Решение

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

В вашем конкретном случае вам сказали настроить переменную, но вы просто задали ее. Разница в том, что когда значение переменной изменяется, custom знает, что делать, а `setq'ничего об этом не знает. Если вы посмотрите на справку по этой переменной (Ch 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.
Другие вопросы по тегам