为什么我不能在Emacs 24.1下使用旧的主题样式文件?

时间:2012-07-27 15:29:31

标签: emacs

我可以在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”) (彩色主题罗)

我不知道为什么颜色主题在Emacs 23.1& 23.4但只是在Emacs 24.1下不起作用。

当Emacs正在加载文件时,Emacs会出现以下错误:

符号的函数定义无效:plist-to-alist

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

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

4 个答案:

答案 0 :(得分: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))

希望有所帮助:)

答案 1 :(得分:3)

色彩主题的东西在24年进行了大量修改,有一个颜色主题包包含在emacs中(参见M-x customize-themes),据我所知,预计会破坏旧主题。

据报道,来自marmalade的颜色主题包也可以使用。

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

答案 2 :(得分:0)

我不知道为什么,但是当在MacOS X上的emacs 24.3.1中安装曝光的主题时,我发现如果我把我的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)

答案 3 :(得分: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)))