6

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

(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 在字体锁定错误时仍然没有进入调试器。

4

1 回答 1

6

font-lock 可以以不同的方式应用。默认情况下,它使用 jit-lock-mode 应用,它“懒惰地”应用它(又名“just-in-time”),它的缺点是它应用在我们无法显示消息(或输入调试器),因为那会使我们进入 inf 循环。所以有两种方法可以解决这个问题:

  • 使用jit-lock-debug-mode(最近添加到 Emacs 的开发代码中)。
  • 设置font-lock-support-mode为零,然后关闭字体锁定,然后再打开。

这两个选项都应该更改 font-lock 以便在可以使用调试的时候应用它。

于 2013-09-02T14:15:49.413 回答