Как проверить, включен ли второстепенный режим (.eg flymake-mode)?
Я всегда получаю сообщение об ошибке при использовании flymake-mode. И режим flymake отключить.
Поэтому я хочу проверить, включен ли режим flymake. Если он не включен, я включу его до вызова flymake-next-error.
Благодарю.
1 ответ
Большинство второстепенных режимов определяются с помощью define-minor-mode
макро. Для локальных буферных режимов этот макрос создает локальную переменную буфера с тем же именем, что и сам режим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 является локальным для буфера.
Другое решение состоит в том, чтобы использовать режим описания Mx, чтобы показать все активные второстепенные режимы (и основной режим) и краткое описание каждого из них.
Если второстепенный режим включен в текущем буфере, вы можете найти его имя во всплывающем буфере.