Emacs在bookmark-set上引发“funcall:Symbol的值作为变量为void:choices”。
禁用书签+后,书签设置开始正常工作。
有没有人知道如何解决这个问题?
答案 0 :(得分:1)
我在Bookmark+代码中找不到任何名为choices
的变量。
您在任何书签+源文件标头中看到的最新Last-Updated
日期是什么?
如果你还没有这样做,我建议你这样做:
检查bmkp-after-set-hook
中是否有内容。如果是这样,请尝试删除它以查看是否删除了错误。
下载最新的书签+源文件(from Emacs Wiki or from MELPA)。
删除您可能拥有的任何字节编译(即*.elc
)版本的文件。
再试一次,看看是否收到同样的错误。如果是,请通过电子邮件向我报告:M-x bmkp-send-bug-report
。
如果没有(不再出现此类错误):
一个。加载源文件bookmark+-mac.el
,它定义其他文件使用的Lisp宏。
湾字节编译bookmark+-mac.el
。
℃。字节编译其他文件。 (一种简单的方法是在Dired中标记它们并使用B
。)
d。重新启动Emacs并查看是否再次出现错误(这次您将使用字节编译的文件)。如果是,M-x bmkp-send-bug-report
。
对不起你的麻烦。让我知道,我会解决它。如果您使用M-x bmkp-send-bug-report
,请尝试提供完整的配方以重现问题,最好从emacs -Q
(无初始文件)开始。 THX。
答案 1 :(得分:0)
德鲁找到了答案:
这是一个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。这意味着
选择被认为是词汇绑定变量。但
从来没有被词汇限制。
图书馆维护者可能只需要添加(defvar选项)。
或者绑定choices
。或者删除`lexical-binding'
到了。