错误的类型参数:number-or-marker-p

时间:2015-02-04 03:24:09

标签: emacs

Emacs抱怨什么。这个错误每隔一段时间就会发生在我身上,但我是Emacs的新手,而不是C的专家。现在,emacs阻止我在那里,甚至不让我打开括号来保持编码?这个错误意味着什么?

emacs error

修改: 我的Emacs版本:

emacs version

我的调试器信息:

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p (1953 . 3706))
  c-looking-at-inexpr-block((1953 . 3706) (1953 . 3706))
  c-inside-bracelist-p(3742 ((1953 . 3706) (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 9156 (9046 . 9137) 3742 (1953 . 3706) 9156 (9046 . 9137) 3742 (1953 . 3706) 9156 (9046 . 9137) 3742 (1953 . 3706) 9156 (9046 . 9137) 3742 (1953 . 3706) 9156 (9046 . 9137) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) 3742 (1953 . 3706) ...))
  c-guess-basic-syntax()
  c-indent-line()
  indent-according-to-mode()
  c-electric-continued-statement()
  abbrev-insert(while #("while" 0 5 (fontified t face font-lock-keyword-face)) 9785 9790)
  #[0 "\304 \211@A\211@A\211@A\211@A\n\211\205Q\305`\306\"\305\306\"\2042\307\310 !\2042\311 \210\312   $V\203O`U\203Ob\210\266\202\266\204\207" [noninteractive last-abbrev-text last-abbrev last-abbrev-location abbrev--before-point copy-marker t window-minibuffer-p selected-window undo-boundary abbrev-insert] 20 "\n\n(fn)"]()
  apply(#[0 "\304 \211@A\211@A\211@A\211@A\n\211\205Q\305`\306\"\305\306\"\2042\307\310 !\2042\311 \210\312 $V\203O`U\203Ob\210\266\202\266\204\207" [noninteractive last-abbrev-text last-abbrev last-abbrev-location abbrev--before-point copy-marker t window-minibuffer-p selected-window undo-boundary abbrev-insert] 20 "\n\n(fn)"] nil)
  #[771 ":\2030@\301=\203\300@\302A\"\303#\207\304@\305\306\307\310\311\312\300!\313\"\314\315%A##\207\304\316\"\207" [(#0) t append nil apply apply-partially make-byte-code 642 "\300@#\207" vconcat vector [] 7 "\n\n(fn FUNS GLOBAL &rest ARGS)" #[0 "\304 \211@A\211@A\211@A\211@A\n\211\205Q\305`\306\"\305\306\"\2042\307\310 !\2042\311 \210\312    $V\203O`U\203Ob\210\266\202\266\204\207" [noninteractive last-abbrev-text last-abbrev last-abbrev-location abbrev--before-point copy-marker t window-minibuffer-p selected-window undo-boundary abbrev-insert] 20 "\n\n(fn)"]] 12 "\n\n(fn FUNS GLOBAL ARGS)"](nil nil nil)
  expand-abbrev()
  self-insert-command(1)
  c-electric-paren(nil)
  call-interactively(c-electric-paren nil nil)

1 个答案:

答案 0 :(得分:4)

您可以使用Lisp调试器更准确地了解发生的情况。

  1. 加载(非字节编译)文件 cc-cmds.el (定义{{​​1}})和 {{ 1}} (定义{{​​1}},c-indent-linecc-engine.el)。

    (使用c-guess-basic-syntaxc-inside-bracelist-p - 并且不要忘记c-looking-at-inexpr-block。)

  2. 在单独的框架(M-x load-library cc-cmds.el)中打开这两个源文件,然后导航到调试器将遵循的功能。这样您就可以更轻松地查看调试器正在执行的操作的上下文。

  3. 然后M-x load-library cc-engine.el

    使用.el逐步调试调试器。您可以使用C-x 5 f跳过任何您不想深入了解细节的步骤。

  4. 您可以从M-x debug-on-entry c-indent-line等开始,但这可能无法为您提供足够的上下文来查看正在发生的事情。您也可以从d代替c开始,以快速确定您想放慢速度的位置并查看详细信息。 IOW,多次运行调试器以引发错误,使用二进制搜索缩小您想要关注细节的位置(使用M-x debug-on-entry c-looking-at-inexpr-block)。