如何在 Emacs 中切换 on/off 特定模式?

How to toggle on/off particular mode in Emacs?

说,我想绑定一个键来开启某种模式on/off。我想,我需要的功能应该类似于

(defun toggle-some-mode ()
  (if (some-mode-is-active)
    (some-mode 0)
  (some-mode 1)))

(global-set-key (kbd "some key") 'toggle-some-mode)

问题是这个 some-mode-is-active 是什么样子的?我怎么知道模式是active/inactive?我不相信这样一个有用的案例没有标准功能。

有什么想法吗?

只需使用some-mode来切换,即(global-set-key (kbd "some key") 'some-mode)。 some-mode 的参数应该是可选的,如果函数调用中不存在参数,则函数默认切换模式。

关于如何检测模式是否激活的问题:如果 some-modedefine-minor-mode 定义,它作为函数和变量存在。如果模式处于活动状态,变量 some-mode 的计算结果为 t,否则为 nil