4

これがここにあるのか、スーパーユーザーにあるのかはわかりませんが、ここにあります。

最新の Emacs でデスクトップ パッケージ使用しようとしています。(desktop-save-mode 1) を .emacs に追加しましたが、emacs を起動すると次のエラーが発生します。

Error (frameset): Wrong type argument: number-or-marker-p, nil

これのデバッグをどこから開始すればよいか、私は少し迷っており、Google は役に立ちません。

何か案は?

要求に応じて追加されたスタック トレース

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
   2   +(nil 80 -1)
   3   frameset-move-onscreen(#<frame F1 0xb53310> t)
   4   frameset--restore-frame(((tty-type . "xterm-256color") (tty . "/dev/tty") (display-type . color) (background-mode . dark) (foreground-color . "#808080") (cursor-color . "#808080") (background-col$
   5   #[0 "\307\306@\236A\211A^A@\205^M^@\211\310\302!\203^[^@\302\306@\305\"\202^\^@\302\311\211\312^C!\203*^@\311^V \202J^@\313\311\314\"\314\306@\236A=\203=^@\311^V \202J^@\314\313\311\314\"B\211^V $
   6   funcall(#[0 "\307\306@\236A\211A^A@\205^M^@\211\310\302!\203^[^@\302\306@\305\"\202^\^@\302\311\211\312^C!\203*^@\311^V \202J^@\313\311\314\"\314\306@\236A=\203=^@\311^V \202J^@\314\313\311\314\"$
   7   frameset-restore([frameset 1 (21031 10481 847348 292000) (desktop . "206") "shomer@rubydev" nil nil ((((tty-type . "xterm-256color") (tty . "/dev/tty") (display-type . color) (background-mode . d$
   8   (progn (frameset-restore desktop-saved-frameset :reuse-frames desktop-restore-reuses-frames :force-display desktop-restore-in-current-display :force-onscreen desktop-restore-forces-onscreen))
   9   (if (desktop-restoring-frameset-p) (progn (frameset-restore desktop-saved-frameset :reuse-frames desktop-restore-reuses-frames :force-display desktop-restore-in-current-display :force-onscreen de$
  10   desktop-restore-frameset()
  11   (if (and owner (memq desktop-load-locked-desktop (quote (nil ask))) (or (null desktop-load-locked-desktop) (daemonp) (not (y-or-n-p (format "Warning: desktop file appears to be in use by PID %s.\$
  12   (let ((desktop-first-buffer nil) (desktop-buffer-ok-count 0) (desktop-buffer-fail-count 0) (owner (desktop-owner)) (desktop-save nil)) (if (and owner (memq desktop-load-locked-desktop (quote (nil$
  13   (if (file-exists-p (desktop-full-file-name)) (let ((desktop-first-buffer nil) (desktop-buffer-ok-count 0) (desktop-buffer-fail-count 0) (owner (desktop-owner)) (desktop-save nil)) (if (and owner $
  14   (if noninteractive nil (setq desktop-dirname (file-name-as-directory (expand-file-name (or (and (< 0 (length dirname)) dirname) (let ((dirs desktop-path)) (while (and dirs ...) (setq dirs ...)) ($
  15   desktop-read()
  16   (progn (desktop-read) (desktop-auto-save-set-timer) (setq inhibit-startup-screen t))
  17   (if desktop-save-mode (progn (desktop-read) (desktop-auto-save-set-timer) (setq inhibit-startup-screen t)))
  18   (closure (auto-insert desktop-buffer-locals desktop-buffer-major-mode desktop-buffer-fail-count desktop-buffer-ok-count desktop-first-buffer t) nil (let ((key "--no-desktop")) (if (member key com$
  19   run-hooks(after-init-hook)
  20   command-line()
  21   normal-top-level()
4

3 に答える 3

0

免責事項: 私は Emacs をよく知らないことを告白しなければなりません。また、私は LISP をまったく知らないことを告白しなければなりません。その結果、私がこの問題に対して私自身の個人的な使用のために見つけた解決策は、非常に無知である可能性があり、予測できない結果をもたらす可能性が非常に高い.

urxvt ターミナルを使用していますが、これが問題の原因のようです。Emacs の GUI バージョンでは、この点で問題は発生しませんでした。

上記の回答を効果的に使用して、問題の領域を特定しました。次に、frameset.el.gz の次の行 (1005) をコメントアウトしました。

(frameset-move-onscreen frame force-onscreen)

私は Emacs でファイルをバイトコンパイルしました。今では完全に満足のいくように機能し、(避けられない)副作用はまだ経験していません.

これを試すのが合理的だと感じた唯一の理由 (絶望は別として) は、この特定の関数が達成しようとしていた目標が、私のシステムにあまり関連していないように思われたからです。

于 2014-04-24T22:44:46.447 に答える