如何在 Elisp 中使用 Emacs 确定当前是否启用了特定模式?
How to figure out whether or not a particular mode is currently enabled using Emacs in Elisp?
我想写一个 Elisp 脚本
- 打开
auto-save-visited-mode
,如果它关闭,
- 如果已经打开,则什么也不做。
如何查看 Elisp 中当前是否启用了此模式?
更新 1: M-x describe-mode
显示所有启用的次要模式的列表。
更新 2: 根据 this answer,您可以使用以下代码显示所有活动次要模式的列表:
(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)))
(which-active-modes)
更新 3: 似乎有效的最终版本:
(if auto-save-visited-mode
(message "The mode is on")
(message "The mode is off")
)
您可以通过简单地评估变量 auto-save-visited-mode
来测试它是否启用,如其文档中所述,C-h vauto-save-visited-mode
.
要启用它,只需调用 (auto-save-visited-mode 1)
。这将启用它或什么也不做。
编辑:
(auto-save-visited-mode 1)
本身可能会完成您想要的,但它会 运行 设置代码/再次调用模式挂钩,即使它之前已设置。因此,您可以使用(unless auto-save-visited-mode (auto-save-visited-mode))
来避免这种情况。
如果模式开启则其模式变量的值是非nil
。如果关闭则值为 nil
.
我想写一个 Elisp 脚本
- 打开
auto-save-visited-mode
,如果它关闭, - 如果已经打开,则什么也不做。
如何查看 Elisp 中当前是否启用了此模式?
更新 1: M-x describe-mode
显示所有启用的次要模式的列表。
更新 2: 根据 this answer,您可以使用以下代码显示所有活动次要模式的列表:
(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)))
(which-active-modes)
更新 3: 似乎有效的最终版本:
(if auto-save-visited-mode
(message "The mode is on")
(message "The mode is off")
)
您可以通过简单地评估变量 auto-save-visited-mode
来测试它是否启用,如其文档中所述,C-h vauto-save-visited-mode
.
要启用它,只需调用 (auto-save-visited-mode 1)
。这将启用它或什么也不做。
编辑:
(auto-save-visited-mode 1)
本身可能会完成您想要的,但它会 运行 设置代码/再次调用模式挂钩,即使它之前已设置。因此,您可以使用(unless auto-save-visited-mode (auto-save-visited-mode))
来避免这种情况。
如果模式开启则其模式变量的值是非nil
。如果关闭则值为 nil
.