Emacs 不会计算 init.el 和 .emacs 中的所有表达式,并且 emacs 似乎也不会记录 .emacs 中 init.el 的更改

问题描述 投票:0回答:2

一直以来,当我尝试 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后返回到之前的状态并出现上述错误。

emacs command
2个回答
0
投票

错误消息表明函数

command-execute
接收到
hixac/backward-kill-word
作为 参数,但它不是命令。但从您显示的代码来看,它一个命令。

M-x hixac/backward-kill-word
有用吗?您能否重现使用
emacs -Q
(无初始化文件)启动 Emacs 的问题?如果是这样,请提供一个分步指南,说明您做了什么以及您看到了什么。

当你说类似 “有些东西已经起作用,但重新启动 emacs 后” 时,这表明你没有可重现的配方,并且不确定你可能做了什么。您显示的代码明确将该函数定义为命令。因此您需要提供更多信息,以便我们了解发生了什么事。

另外,考虑更改问题标题 - 它似乎与自定义任何功能没有任何关系。


0
投票

我修正了错误。 Emacs 实际上没有评估“.emacs”或“init.el”文件,它实际上评估了“.emacs.elc”旧“.emacs”编译版本的文件。

这是非常令人困惑的行为,我花了很多时间来修复它。

毕竟我可以说“.emacs.elc”具有比“.emacs”更高的优先级,看在上帝的份上。

© www.soinside.com 2019 - 2024. All rights reserved.