错误的类型参数:number-or-marker-p
Wrong type argument: number-or-marker-p
Emacs 在抱怨什么。这个错误每隔一段时间就会发生在我身上,但我是 Emacs 世界的新手,而且不是 C 专家。现在,emacs 在那里阻止我,甚至不让我打开括号继续编码?这个错误是什么意思?
编辑:
我的 Emacs 版本:
我的调试器信息:
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 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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 ":30@1=30@2A\"3#74@5670120!3\"45%A##746\"7" [(#0) t append nil apply apply-partially make-byte-code 642 "0@#7" vconcat vector [] 7 "\n\n(fn FUNS GLOBAL &rest ARGS)" #[0 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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)
您可以使用 Lisp 调试器更准确地找出正在发生的事情。
加载source(非字节编译)文件cc-cmds.el
(定义c-indent-line
) 和 cc-engine.el
(定义 c-guess-basic-syntax
、c-inside-bracelist-p
和 c-looking-at-inexpr-block
)。
(使用 M-x load-library cc-cmds.el
和 M-x load-library cc-engine.el
- 不要忘记 .el
。)
在单独的框架 (C-x 5 f
) 中打开这两个源文件,然后导航到您将使用调试器执行的函数。这样您就可以更轻松地查看调试器正在执行的操作的上下文。
然后M-x debug-on-entry c-indent-line
.
使用 d
单步执行调试器。您可以使用 c
跳过您不想深入了解细节的任何步骤。
您可以从 M-x debug-on-entry c-looking-at-inexpr-block
等开始,但这可能无法为您提供足够的上下文来了解正在发生的事情。您也可以从使用 c
而不是 d
开始,以快速确定要放慢速度的位置并查看详细信息。 IOW,运行 调试器多次引发错误,使用二进制搜索来缩小您想要关注细节的位置(使用 d
)。
Emacs 在抱怨什么。这个错误每隔一段时间就会发生在我身上,但我是 Emacs 世界的新手,而且不是 C 专家。现在,emacs 在那里阻止我,甚至不让我打开括号继续编码?这个错误是什么意思?
编辑: 我的 Emacs 版本:
我的调试器信息:
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 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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 ":30@1=30@2A\"3#74@5670120!3\"45%A##746\"7" [(#0) t append nil apply apply-partially make-byte-code 642 "0@#7" vconcat vector [] 7 "\n\n(fn FUNS GLOBAL &rest ARGS)" #[0 "4 1@A1@A1@A1@A\n15Q5`6\"56\"4270 !421 02 $V3O`U3Ob062647" [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)
您可以使用 Lisp 调试器更准确地找出正在发生的事情。
加载source(非字节编译)文件
cc-cmds.el
(定义c-indent-line
) 和cc-engine.el
(定义c-guess-basic-syntax
、c-inside-bracelist-p
和c-looking-at-inexpr-block
)。(使用
M-x load-library cc-cmds.el
和M-x load-library cc-engine.el
- 不要忘记.el
。)在单独的框架 (
C-x 5 f
) 中打开这两个源文件,然后导航到您将使用调试器执行的函数。这样您就可以更轻松地查看调试器正在执行的操作的上下文。然后
M-x debug-on-entry c-indent-line
.使用
d
单步执行调试器。您可以使用c
跳过您不想深入了解细节的任何步骤。
您可以从 M-x debug-on-entry c-looking-at-inexpr-block
等开始,但这可能无法为您提供足够的上下文来了解正在发生的事情。您也可以从使用 c
而不是 d
开始,以快速确定要放慢速度的位置并查看详细信息。 IOW,运行 调试器多次引发错误,使用二进制搜索来缩小您想要关注细节的位置(使用 d
)。