禁用命令(Disabling a command)是将该命令标记为执行前需要 用户确认。禁用机制用于对新手可能造成困扰 的命令,防止其误操作使用。
禁用命令的底层机制是为该命令对应的 Lisp 符号
设置一个非 nil 的 disabled 属性。
这些属性通常由用户的初始化文件
(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-p
或 yes-or-no-p,第三个元素为询问内容。
应使用便捷函数 command-query
为命令启用询问功能。
从现在起允许 command(一个符号)无需特殊确认 即可执行,并修改用户初始化文件(参见 see The Init File) 使该设置在后续会话中生效。
从现在起执行 command 时需要特殊确认, 并修改用户初始化文件使该设置在后续会话中生效。
该变量的值应为一个函数。当用户交互调用被禁用命令时,
会调用该函数而非被禁用命令本身。它可通过
this-command-keys 获取用户输入按键,
从而确定具体命令。
该变量值也可为 nil,此时所有命令
(包括禁用命令)均正常执行。
默认值为一个询问用户是否继续的函数。