你可以使用我新发布的Font Lock Studio。以下内容来自自述文件:
font-lock-studio - 字体锁定关键字的交互式调试器
Font Lock Studio 是一个用于字体锁定的交互式调试器
关键字(Emacs 语法高亮规则)。
简介
Font Lock Studio 让您单步 Font Lock 关键字 --
匹配器、突出显示和锚定规则,以便您可以看到
当缓冲区字体化时发生。您可以设置 breakpoints on 或
内部规则并运行直到被击中。在规则内时,
匹配使用背景颜色的调色板可视化。这
explainer 可以用纯文本的英文描述规则。紧的
与 Edebug 的集成允许您进入 Lisp 表达式
是字体锁定关键字的一部分。
使用调试器时,会显示一个接口缓冲区,它
包含所有关键字,用于导航和
匹配数据的可视化。
启动 Font Lock Studio 时,cmets 和 strings
预着色,因为它们是早期句法阶段的一部分
(Font Lock Studio 不支持)。
键入“M-x font-lock-studio RET”启动调试器。按?
或查看可用命令的菜单。
示例
对于使用html-mode 的缓冲区,接口缓冲区看起来
下列的。其他主要模式通常具有越来越复杂的
规则。左侧的箭头表示当前的活动位置。
源缓冲区中的相应箭头放置在当前
搜索位置。
========================
=== Font Lock Studio ===
========================
--------------------------------------------------
=> "<\\([!?][_:[:alpha:]][-_.:[:alnum:]]*\\)"
(1 font-lock-keyword-face)
--------------------------------------------------
"</?\\([_[:alpha:]][-_.[:alnum:]]*\\)\\(?::\\([_:[:alpha:]]
[-_.:[:alnum:]]*\\)\\)?"
(1
(if
(match-end 2)
sgml-namespace-face font-lock-function-name-face))
(2 font-lock-function-name-face nil t)
--------------------------------------------------
"\\(?:^\\|[ \t]\\)\\([_[:alpha:]][-_.[:alnum:]]*\\)\\(?::
\\([_:[:alpha:]][-_.:[:alnum:]]*\\)\\)?=[\"']"
(1
(if
(match-end 2)
sgml-namespace-face font-lock-variable-name-face))
(2 font-lock-variable-name-face nil t)
--------------------------------------------------
"[&%][_:[:alpha:]][-_.:[:alnum:]]*;?"
(0 font-lock-variable-name-face)
--------------------------------------------------
"<\\(b\\(?:ig\\|link\\)\\|cite\\|em\\|h[1-6]\\|rev\\|s\\(?:
mall\\|trong\\)\\|t\\(?:itle\\|t\\)\\|var\\|[bisu]\\)
\\([ \t][^>]*\\)?>\\([^<]+\\)</\\1>"
(3
(cdr
(assoc-string
(match-string 1)
sgml-tag-face-alist t))
prepend)
==================================================
Public state:
Debug on error : YES
Debug on quit : YES
Explain rules : YES
Show compiled code : NO
按空格单步浏览所有关键字。 “n”会去
下一个关键字,“b”将设置断点,“g”将运行到
结束(或到下一个断点)和“q”将退出。
特点
步进
您可以单独进入、和退出字体锁定
关键字。完全支持锚定规则。此外,你
可以运行到结尾或下一个断点。
断点
您可以在部分关键字上设置断点,例如匹配器
(例如正则表达式)、突出显示规则或锚定突出显示内部
规则。
如果您想单步执行或运行而不在断点处停止,请添加前缀
带有C-u的命令。
请注意,在锚定规则中,您可以设置断点
整个规则或单个部分。在前一种情况下,只有
外括号突出显示。
比赛数据可视化
在关键字或锚定突出显示的匹配器之后
执行后,匹配数据(无论搜索到什么)都被可视化了
在源缓冲区、正则表达式和
在相应的突出显示规则或规则之上。如果是正则表达式的一部分
或者一个亮点不匹配,它没有着色,这可以用于
使用后缀正则表达式运算符? 时会发生示例。
请注意,内部匹配组优先于外部组。
这可能导致突出显示规则获得颜色的情况
不会出现在正则表达式或源缓冲区中。为了
例如,匹配器“\(abc\)”将被着色为
匹配 1,而高亮规则 `(0 a-face)' 获取颜色
匹配 0。
规范化关键字
界面中呈现的关键字已经规范化。为了
例如,而不是
("xyz" . font-lock-type-face)
关键字
("xyz" (0 font-lock-type-face))
显示。详情请见font-lock-studio-normalize-keywords。
解释器
解释器呼应了当前的人类可读描述
Font Lock 关键字的一部分。这有助于你理解
规则中所有nil:s 和t:s 的实际含义。
使用自动解释器时,Font Lock Studio 会回显
每个命令后的说明。
Edebug -- Emacs Lisp 调试器
与 Edebug 的紧密集成允许您单步执行表达式
嵌入在接口缓冲区的关键字中,它允许您
在源文件中检测调用函数以进行调试。
跟随模式感知
源缓冲区中的搜索位置由
覆盖箭头并通过更新点。如果源缓冲区是
在多个并排窗口中可见,并且跟随模式是
启用后,搜索位置将显示在合适的窗口中
最小化滚动。