debugging - 如何调试字体锁定关键字错误

标签 debugging emacs elisp syntax-highlighting font-lock

如何调试我编写的字体锁定关键字?例如

(progn
  (font-lock-add-keywords
   nil
   '(
     ;; ("hi1" . 'success)
     ("hi2" . (intern (concat "warn" "ing")))
     ))
  (font-lock-fontify-buffer))

将在消息缓冲区中生成以下消息:

Error during redisplay: (jit-lock-function 1) signaled (wrong-type-argument stringp 22)

为了在错误类型参数错误时查看调用堆栈,我调用 toggle-debug-on-error 并且 Emacs 在字体锁定错误时仍然不会进入调试器。

最佳答案

字体锁定 可以以不同的方式应用。默认情况下,它使用 jit-lock-mode,它“懒惰地”应用它(又名“即时”),它具有 缺点是在无法显示的时候应用 消息(或进入调试器),因为这会使我们进入内循环。所以 有两种方法可以解决该问题:

  • 使用jit-lock-debug-mode(最近添加到Emacs的开发中) 代码)。
  • font-lock-support-mode 设置为 nil,然后关闭 font-lock,然后 回来。

两个选项都应该更改字体锁定,以便一次应用它 可以使用调试的地方。

关于debugging - 如何调试字体锁定关键字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18569410/

相关文章:

r - R代码调试和纠错理解

Python 可视化调试器

emacs - 如何让 C-x C-e 只显示十进制和十六进制?

c++ - 在 c++ 模式下更改 emacs 上 'case' 关键字中的选项卡计数

带调试的 ES6 中的 JavaScript 开发

c# - Visual Studio 调试器未附加

emacs - 使Emacs :/usr/bin/ld: cannot find -lpng15

caching - 如何在 elisp 中实现过期 LRU 缓存?

shell - Emacs 和长 Shell 命令

emacs - 如何设置键绑定(bind)以使 Emacs 像我想要的那样透明/不透明?