Emacs 在书签集上提出“funcall: Symbol 的值作为变量是 void:choices”。
禁用书签+后,书签设置开始正常工作。
有谁知道如何解决这个问题?
Emacs 在书签集上提出“funcall: Symbol 的值作为变量是 void:choices”。
禁用书签+后,书签设置开始正常工作。
有谁知道如何解决这个问题?
我找不到choices
在Bookmark+代码中命名的变量的任何用途。
Last-Updated
您在任何 Bookmark+ 源文件标题中看到的最近日期是什么?
如果您还没有这样做,我建议您这样做:
检查你是否有东西在bmkp-after-set-hook
. 如果是这样,请尝试将其删除以查看是否可以删除错误。
下载最新的 Bookmark+ 源文件(来自 Emacs Wiki 或 MELPA)。
*.elc
删除您可能拥有的文件的任何字节编译(即)版本。
再试一次,看看你是否得到同样的错误。如果是这样,请通过电子邮件向我报告:M-x bmkp-send-bug-report
。
如果没有(不再有这样的错误):
一个。加载源文件bookmark+-mac.el
,它定义了其他文件使用的 Lisp 宏。
湾。字节编译bookmark+-mac.el
。
C。字节编译其他文件。(一个简单的方法是在 Dired 中标记它们并使用B
。)
d。重新启动 Emacs 并查看是否再次出现错误(这次您将使用字节编译的文件)。如果是这样,M-x bmkp-send-bug-report
.
很抱歉给您带来麻烦。告诉我,我会解决的。如果您使用M-x bmkp-send-bug-report
then 请尝试提供一个完整的方法来重现问题,最好从emacs -Q
(无初始化文件)开始。谢谢。
德鲁找到了答案:
这是一个ido-completing-read+.el
错误。您需要将其报告给该库的维护者。以下是源代码的相关部分:
(when (and def (listp def))
(setq choices (append def (nreverse (cl-set-difference choices def)))
def (car def)))
(when (and def initial (stringp initial) (not (string= initial "")))
(setq choices (cons def (remove def choices))
def nil))
变量 CHOICES 没有用 声明(defvar choices)
,并且文件的局部变量lexical-binding
设置为 t。这意味着 CHOICES 被认为是一个词法绑定变量。但是永远不会在词法上绑定。
可能库维护者只需要添加(defvar 选项)。否则绑定choices
。否则将 `lexical-binding' 设置为 t。