1

Emacs 在书签集上提出“funcall: Symbol 的值作为变量是 void:choices”。

禁用书签+后,书签设置开始正常工作。

有谁知道如何解决这个问题?

4

2 回答 2

1

我找不到choicesBookmark+代码中命名的变量的任何用途。

Last-Updated您在任何 Bookmark+ 源文件标题中看到的最近日期是什么?

如果您还没有这样做,我建议您这样做:

  1. 检查你是否有东西在bmkp-after-set-hook. 如果是这样,请尝试将其删除以查看是否可以删除错误。

  2. 下载最新的 Bookmark+ 源文件(来自 Emacs Wiki 或 MELPA)。

  3. *.elc删除您可能拥有的文件的任何字节编译(即)版本。

  4. 再试一次,看看你是否得到同样的错误。如果是这样,请通过电子邮件向我报告:M-x bmkp-send-bug-report

  5. 如果没有(不再有这样的错误):

    一个。加载源文件bookmark+-mac.el,它定义了其他文件使用的 Lisp 宏。

    湾。字节编译bookmark+-mac.el

    C。字节编译其他文件。(一个简单的方法是在 Dired 中标记它们并使用B。)

    d。重新启动 Emacs 并查看是否再次出现错误(这次您将使用字节编译的文件)。如果是这样,M-x bmkp-send-bug-report.

很抱歉给您带来麻烦。告诉我,我会解决的。如果您使用M-x bmkp-send-bug-reportthen 请尝试提供一个完整的方法来重现问题,最好从emacs -Q(无初始化文件)开始。谢谢。

于 2015-04-15T16:43:27.737 回答
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。这意味着 CHOICES 被认为是一个词法绑定变量。但是永远不会在词法上绑定。

可能库维护者只需要添加(defvar 选项)。否则绑定choices。否则将 `lexical-binding' 设置为 t。

于 2015-04-24T09:20:59.557 回答