Tre*_*son 20
所有次要模式命令的列表都存储在变量中minor-mode-list.通常通过检查相同名称的变量来确定它们是否处于活动状态.所以你可以这样做:
(defun which-active-modes ()
"Give a message of which minor modes are enabled in the current buffer."
(interactive)
(let ((active-modes))
(mapc (lambda (mode) (condition-case nil
(if (and (symbolp mode) (symbol-value mode))
(add-to-list 'active-modes mode))
(error nil) ))
minor-mode-list)
(message "Active modes are %s" active-modes)))
Run Code Online (Sandbox Code Playgroud)
注意:这仅适用于当前缓冲区(因为次要模式可能仅在某些缓冲区中启用).
describe-mode可以以某种方式提出启用的次要模式列表,为什么我不能?因此,在阅读其源代码后,我意识到它从minor-mode-list和minor-mode-alist. 使用第 3 方dash.el列表操作库,我提供了以下代码:
(--filter (and (boundp it) (symbol-value it)) minor-mode-list)
Run Code Online (Sandbox Code Playgroud)
因此,例如,要禁用所有次要模式,请使用-each:
(--each (--filter (and (boundp it) (symbol-value it)) minor-mode-list)
(funcall it -1))
Run Code Online (Sandbox Code Playgroud)
不要忘记将次要模式列表保存在变量中,否则您将不得不重新启动 Emacs 或通过内存启用它们。
| 归档时间: |
|
| 查看次数: |
23133 次 |
| 最近记录: |