Ответ 1
Большинство второстепенных режимов определяются с помощью макроса define-minor-mode
. Для буферных локальных режимов этот макрос создает локальную переменную buffer с тем же именем, что и сам режим 1. Эта переменная имеет значение nil
, если режим включен для текущего буфера.
Поэтому, чтобы проверить, включен ли flymake-mode
, вы можете протестировать переменную flymake-mode
(отметив, что эта переменная вообще не может быть определена, если режим не был включен):
(and (boundp 'flymake-mode) flymake-mode)
Что, как указывает Том в комментариях, можно выразить с помощью удобного макроса:
(bound-and-true-p flymake-mode)
Что мы можем использовать в качестве условия выражения if
или when
или unless
:
(if (bound-and-true-p flymake-mode)
(message "flymake-mode is on")
(message "flymake-mode is off"))
1 Для глобальных второстепенных режимов соответствующая переменная глобальна; но режим flymake - буферно-локальный.