一直以来,当我尝试 C-backspace 时,它返回消息: command-execute: Wrong type argument: commandp, hixac/backward-kill-word
(defun hixac/backward-kill-word ()
"Remove all whitespace if the character behind the cursor is whitespace, otherwise remove a word."
(interactive)
(if (looking-back "[ \n]")
;; delete horizontal space before us and then check to see if we
;; are looking at a newline
(progn (delete-horizontal-space 't)
(while (looking-back "[ \n]")
(backward-delete-char 1)))
;; otherwise, just do the normal kill word.
(backward-kill-word 1)))
(global-set-key (kbd "C-<backspace>") 'hixac/backward-kill-word)
我不知道如何处理。
我尝试更改各种键绑定,我尝试过
[C-backspace]
和(kbd "C-\d")
等。有些东西已经起作用,但重新启动emacs后返回到之前的状态并出现上述错误。
错误消息表明函数
command-execute
接收到 hixac/backward-kill-word
作为 参数,但它不是命令。但从您显示的代码来看,它是一个命令。
M-x hixac/backward-kill-word
有用吗?您能否重现使用 emacs -Q
(无初始化文件)启动 Emacs 的问题?如果是这样,请提供一个分步指南,说明您做了什么以及您看到了什么。
当你说类似 “有些东西已经起作用,但重新启动 emacs 后” 时,这表明你没有可重现的配方,并且不确定你可能做了什么。您显示的代码明确将该函数定义为命令。因此您需要提供更多信息,以便我们了解发生了什么事。
另外,考虑更改问题标题 - 它似乎与自定义任何功能没有任何关系。
我修正了错误。 Emacs 实际上没有评估“.emacs”或“init.el”文件,它实际上评估了“.emacs.elc”旧“.emacs”编译版本的文件。
这是非常令人困惑的行为,我花了很多时间来修复它。
毕竟我可以说“.emacs.elc”具有比“.emacs”更高的优先级,看在上帝的份上。