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

(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,然后关闭字体锁定,然后
    回来。

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

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

    10-13 02:57