22.14 禁用命令

禁用命令(Disabling a command)是将该命令标记为执行前需要 用户确认。禁用机制用于对新手可能造成困扰 的命令,防止其误操作使用。

禁用命令的底层机制是为该命令对应的 Lisp 符号 设置一个非 nildisabled 属性。 这些属性通常由用户的初始化文件 (see The Init File)通过如下 Lisp 表达式设置:

(put 'upcase-region 'disabled t)

部分命令默认带有该属性(如需可在初始化文件中移除)。

disabled 属性的值为字符串, 提示命令被禁用的信息会包含该字符串。例如:

(put 'delete-region 'disabled
     "Text deleted this way cannot be yanked back!\n")

关于调用被禁用命令时的具体行为, 参见 See Disabling in The GNU Emacs Manual。 禁用命令对从 Lisp 程序中以函数形式调用该命令无影响。

disabled 属性的值也可以是一个列表, 其首个元素为符号 query。这种情况下会询问 用户是否执行该命令。列表第二个元素为 nil 或非 nil,分别对应使用 y-or-n-pyes-or-no-p,第三个元素为询问内容。 应使用便捷函数 command-query 为命令启用询问功能。

Command: enable-command command

从现在起允许 command(一个符号)无需特殊确认 即可执行,并修改用户初始化文件(参见 see The Init File) 使该设置在后续会话中生效。

Command: disable-command command

从现在起执行 command 时需要特殊确认, 并修改用户初始化文件使该设置在后续会话中生效。

Variable: disabled-command-function

该变量的值应为一个函数。当用户交互调用被禁用命令时, 会调用该函数而非被禁用命令本身。它可通过 this-command-keys 获取用户输入按键, 从而确定具体命令。

该变量值也可为 nil,此时所有命令 (包括禁用命令)均正常执行。

默认值为一个询问用户是否继续的函数。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike