5

我可以在 23.1、23.4 下使用我的样式文件,但是在我将 Emacs 更新到 24.1 后,我无法使用旧的样式文件。例如,我的样式文件之一是color-theme-arjen.el。链接在这里:

https://github.com/credmp/color-theme-arjen/blob/master/color-theme-arjen.el

在我的 elisp 文件中,我使用以下代码加载颜色主题:

(加载文件“~/emacs/site-lisp/color-theme/master_color-theme-arjen.el”)(color-theme-arjen)

我不知道为什么颜色主题在 Emacs 23.1 和 23.4 下有效,但在 Emacs 24.1 下无效。

在 Emacs 加载文件时,Emacs 给出以下错误:

Symbol的函数定义为void:plist-to-alist

如果我取消注释上面的代码并且不加载样式文件,则会消除错误。

有谁知道为什么会这样?或者我该如何调试它?

4

4 回答 4

21

是的,我也发现了这个错误。Emacs 24 似乎没有“plist-to-alist”功能。所以可能你应该自己写。这是我的。把这个函数放在你的 dot-emacs 文件中就可以了。

(defun plist-to-alist (the-plist)
  (defun get-tuple-from-plist (the-plist)
    (when the-plist
      (cons (car the-plist) (cadr the-plist))))

  (let ((alist '()))
    (while the-plist
      (add-to-list 'alist (get-tuple-from-plist the-plist))
      (setq the-plist (cddr the-plist)))
  alist))

希望能帮助到你 : )

于 2013-01-06T14:59:51.227 回答
3

颜色主题的东西在 24 年进行了重大改进,emacs 中包含了一个颜色主题包(请参阅 参考资料M-x customize-themes),据我所知,旧主题的破坏是预期的。

据报道,橘子酱的颜色主题包也有效。

您可能应该为 color-theme-arjen 打开一个错误报告。

于 2012-07-27T16:06:13.903 回答
0

我不知道为什么,但是在 MacOS X 上的 emacs 24.3.1 中安装 solarized 主题时,我发现如果我把我的 init 行:

(load-file "~/lisp/color-theme/color-theme.el")
(load-file "~/lisp/emacs-colors-solarized/color-theme-solarized.el")
(color-theme-solarized 'dark)

在我关闭滚动条后:

(if (featurep 'scroll-bar)
    (scroll-bar-mode -1))

它工作得很好。反过来,我得到上面的错误。我不知道为什么 color-theme-alist 函数会受到缺少滚动条的影响(plist-to-alist 函数调用似乎仅适用于 XEmacs)

于 2015-06-12T12:32:49.607 回答
0

我非常感谢 wenjun.yan。但我宁愿在定义函数之前检查函数是否存在:

(unless (fboundp 'plist-to-alist) 
(defun plist-to-alist (the-plist)
  (defun get-tuple-from-plist (the-plist)
    (when the-plist
      (cons (car the-plist) (cadr the-plist))))
  (let ((alist '()))
    (while the-plist
      (add-to-list 'alist (get-tuple-from-plist the-plist))
      (setq the-plist (cddr the-plist)))
  alist)))
于 2017-10-27T11:33:40.200 回答