如何在 Emacs lisp 中切换命令?
How to toggle a command in Emacs lisp?
我想要一个可以在 Emacs 中切换行号显示的快捷方式。
这是我目前拥有的:
(defun my-toggle-display-line-numbers-mode-function ()
"Toggles the line numbers"
(interactive)
(display-line-numbers-mode)
)
(global-set-key [(f7)] 'my-toggle-display-line-numbers-mode-function)
但它只会打开行号。我无法将其关闭,这与我使用 M-x display-line-numbers-mode
时不同,它可以毫无问题地打开或关闭。
知道如何改进我的脚本以使其按预期工作吗?
describe-function
(C-h f
) 在 display-line-numbers-mode
上给出以下内容:
Signature:
(display-line-numbers-mode &optional ARG)
Documentation:
[...]
This is a minor mode. If called interactively, toggle the
Display-Line-Numbers mode mode. [...]
If called from Lisp, toggle the mode if ARG is toggle. Enable
the mode if ARG is nil, omitted, or is a positive number.
Disable the mode if ARG is a negative number.
这是define-minor-mode
宏生成的自动描述,对于大多数次要模式,之前的文档将完全相同。
我们从中得到什么:
- 当以交互方式调用时(即作为命令,使用例如
M-x display-line-numbers-mode
)这作为一个切换。
- 从 Elisp 源代码调用时,您需要指定一个参数。
如果您希望它充当切换开关,请在您的代码中使用 (display-line-numbers-mode 'toggle)
。如果你想要比简单的切换稍微高级的东西(例如,检查一些额外的条件),使用 1 和 -1 作为参数分别启用和禁用模式(顺便说一句,虽然文档不清楚,但 0 算作否定数字 这里 ,所以 (display-line-numbers-mode 0)
禁用模式。
通常情况下,Emacs built-in 文档显示了所有需要了解的内容。尝试熟悉帮助系统,与许多软件相比,它确实好。
我想要一个可以在 Emacs 中切换行号显示的快捷方式。
这是我目前拥有的:
(defun my-toggle-display-line-numbers-mode-function ()
"Toggles the line numbers"
(interactive)
(display-line-numbers-mode)
)
(global-set-key [(f7)] 'my-toggle-display-line-numbers-mode-function)
但它只会打开行号。我无法将其关闭,这与我使用 M-x display-line-numbers-mode
时不同,它可以毫无问题地打开或关闭。
知道如何改进我的脚本以使其按预期工作吗?
describe-function
(C-h f
) 在 display-line-numbers-mode
上给出以下内容:
Signature:
(display-line-numbers-mode &optional ARG)
Documentation:
[...]
This is a minor mode. If called interactively, toggle the
Display-Line-Numbers mode mode. [...]
If called from Lisp, toggle the mode if ARG is toggle. Enable
the mode if ARG is nil, omitted, or is a positive number.
Disable the mode if ARG is a negative number.
这是define-minor-mode
宏生成的自动描述,对于大多数次要模式,之前的文档将完全相同。
我们从中得到什么:
- 当以交互方式调用时(即作为命令,使用例如
M-x display-line-numbers-mode
)这作为一个切换。 - 从 Elisp 源代码调用时,您需要指定一个参数。
如果您希望它充当切换开关,请在您的代码中使用 (display-line-numbers-mode 'toggle)
。如果你想要比简单的切换稍微高级的东西(例如,检查一些额外的条件),使用 1 和 -1 作为参数分别启用和禁用模式(顺便说一句,虽然文档不清楚,但 0 算作否定数字 这里 ,所以 (display-line-numbers-mode 0)
禁用模式。
通常情况下,Emacs built-in 文档显示了所有需要了解的内容。尝试熟悉帮助系统,与许多软件相比,它确实好。