5

23.1、23.4でスタイルファイルを使用できますが、Emacsを24.1に更新した後、古いスタイルファイルを使用できなくなります。たとえば、私のスタイルファイルの1つはcolor-theme-arjen.elです。リンクは次のとおりです。

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

私のelispファイルでは、次のコードを使用してカラーテーマをロードしています。

(load-file "〜/ emacs / site-lisp / color-theme / master_color-theme-arjen.el")(color-theme-arjen)

カラーテーマがEmacs23.1および23.4で機能する理由はわかりませんが、Emacs24.1では機能しません。

Emacsがファイルをロードしている間、Emacsは次のエラーを出します:

シンボルの関数定義は無効です:plist-to-alist

上記のコードのコメントを外し、スタイルファイルをロードしない場合、エラーは却下されます。

なぜこれが起こるのか誰かが知っていますか?または、どうすればデバッグできますか?

4

4 に答える 4

21

ええ、私もこのバグを見つけました。Emacs24には「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

理由はほとんどわかりませんが、MacOSXのemacs24.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 に答える