问题标签 [font-lock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2366 浏览

emacs - Emacs:字体锁定解释

我使用 Emacs 已经有很长时间了,并且我已经对其进行了很多定制。我什至写过简单的 ELisp 函数,现在我开始越来越多地使用宏。我不是一个知识渊博的 Emacs 用户,但我也不是一个完整的初学者。

我正在使用 nxhtml、mumamo、dired、ido、自定义键绑定以及我多年来添加的许多东西,但我不记得所有这些了;)

但是有一点我真的不明白:什么是“字体锁定”模式,我为什么要关心?

例如,我读过 nxhtml 和 nxml,如果我没记错的话,不要使用字体锁定。也许我不太了解那部分,但无论哪种方式:作为用户,它对我有什么改变?

或者以关于WhiteSpace的描述为例:

请注意,当 WhiteSpace 打开时,WhiteSpace 会保存 font-lock 状态,即 font-lock 是打开还是关闭。WhiteSpace 在关闭时会恢复字体锁定状态。因此,如果 WhiteSpace 开启而 font-lock 关闭,WhiteSpace 也会开启 font-lock 以高亮空白,但当 WhiteSpace 关闭时,font-lock 也会关闭。因此,如果您希望在 WhiteSpace 关闭后继续打开字体锁定,请在打开 WhiteSpace 之前打开 font-lock。

好的。我明白那个。但是,如果 font-lock 在之后继续,它会改变什么?

基本上我只是不“明白”,不管我读了多少关于这个主题的内容。

任何关于 Emacs 下的“font-lock”是什么以及为什么它与我有关的示例/解释都将受到欢迎!

0 投票
1 回答
1169 浏览

regex - 嵌套正则表达式的 Emacs 语法高亮

我正在尝试编写一个 Emacs 主要模式来处理生物序列数据(即 DNA 和肽),并且我想实现语法突出显示,其中不同的字母颜色不同。由于该模式需要能够区分 DNA 序列和氨基酸序列并对其进行不同的着色,因此我将文件中的每个序列放在一行中,并带有一个单字符前缀(+ 或 #),该前缀应指示下一行应突出显示。

因此,例如,如果文件包含一行内容:

“A”都应该是一种与行的其余部分不同的颜色。

我尝试了以下测试:

但这仅匹配最后一个 A 而不是全部。

我的第一个想法是尝试将整行与一个正则表达式匹配,然后使用另一个正则表达式仅匹配该行中的 A,但我不知道这是否可能在 font-lock-mode 的上下文中或者它会如何完成。关于如何做这样的事情,或者如何以不同的方式完成这件事的任何想法?

0 投票
1 回答
464 浏览

emacs - 自定义 emacs 模式和 font-lock-defaults

我正在为 HTML/PHP 模板编写一个次要模式。

我有一个带有 PHP 关键字的 var

这个 var 用于字体锁定,如下所示:

我无法找到一种方法让用户将关键字添加到web-mode-php-keywords他的列表中.emacs

web-mode-php-font-lock-keywords依赖web-mode-php-keywords并尝试web-mode-php-keywords在钩子中进行更改是行不通的,因为web-mode-php-font-lock-keywords已经构建了

我想我错过了一些东西......(这与eval-after-load?)

0 投票
1 回答
325 浏览

regex - Lisp 正则表达式匹配带有或不带有常量类型标识符的数字( 3.2 或 3.2f )

问题:我希望在 emacs 中创建一个数字字体锁定面孔,但我无法获得符合我需要的正则表达式。这是我所拥有的:

我希望它匹配的内容:

  1. 2
  2. 2.1
  3. 2.1f 或 2.1d
  4. .1f 或 .1d

我不希望它匹配的内容

  1. 2.
  2. 2.f 或 2.d
  3. f 或 d

当前问题:

目前它主要工作,但它不匹配像 .2 或 .2f 这样的数字,因为它没有在数字之前拾取 (.)。它目前还匹配代码中任何位置的单个“f”或“d”,因此 f 或 d 等变量名得到匹配。我在这里想念什么?在过去一周左右的每个午休时间,我都在摆弄这个,我很难过。

0 投票
1 回答
194 浏览

emacs - 基于顶级s-expression关键字的字体锁定

我正在为支持两种略有不同的编程语言的编程环境编写 emacs 主要模式。两者都是 lisps(一个是 Scheme),所以都使用 s 表达式。这两种语言的区别在于它们的函数定义关键字:scheme 使用define,而另一种语言(称为 xtlang)使用bind-func

所以,在同一个缓冲区中,我有

我有字体锁定工作,使用类似的东西

我想做的是能够根据语言(方案/xtlang)对括号进行不同的着色。

因此,如果顶层 defun 是 a define,则将表单中的所有括号着色为红色,如果它是 a ,则将其着色为蓝色bind-func,同时仍然像往常一样突出显示表单中的所有关键字/函数。

这可能需要多行字体锁定,因为define/bind-func可能位于要突出显示的关键字的前一行。 该线程建议font-lock-multiline与 match-anchored in 结合使用font-lock-keywords可能是答案,但随后建议font-lock-multiline仅在多行方面是例外而不是规则的情况下使用。

我的另一个选择似乎是使用syntax-propertize,但我对它的工作原理有点困惑 - 文档有点稀疏。

0 投票
2 回答
120 浏览

regex - 根据列号应用面颜色

有所谓的严格格式,例如pdb - 其中符号的含义由符号的列号定义。例如,这里是上述 pdb 格式的规范。

有没有办法可以根据列范围应用面部颜色?

通常可以通过以下方式添加要突出显示的正则表达式,例如对于当前会话:

那么有没有办法在列上指定那个面,比如 7-11 - 应该是,比如 - 红色?

编辑

所以答案是:

0 投票
1 回答
515 浏览

emacs - emacs custom-face 颜色

我尝试通过更改字体锁定面的颜色(Mx customize-face)来自定义我的 emacs 颜色。但是我发现颜色的数量并没有#xxxxxx的所有值那么多。例如,将颜色值从#000000 更改为#FF0000 时,我只得到了两种颜色,“红色”和“浅红色”。

这是emacs的极限还是我需要用另一种方式来表达颜色值?

0 投票
2 回答
370 浏览

emacs - 可选部分的 Emacs 语法高亮

我正在尝试从基本模式编写派生模式。假设我有这个正则表达式:A ((foo)bar)? B,我如何告诉 emacs 使用以下面孔?

  • font-lock-keyword-faceA
  • font-lock-warning-facefoo(但不是bar
  • font-lock-constant-faceB

我尝试使用以下代码:

但它不适用于字符串A B(emacs 报告丢失的捕获)。

0 投票
2 回答
132 浏览

emacs - 在 Emacs 中修改字体锁定条目

如何更改XXX-font-lock-keywords(通常使用assocplus setcdr)影响字体化XXX-mode?仅仅更改变量以使更改生效是不够的。

0 投票
2 回答
361 浏览

emacs - 将字体锁定应用于 elisp 中的引用符号

在 Emacs 中,我想在 emacs lisp 中引用符号,例如:'blah并以不同的颜色显示它们。我怎样才能使用font-lock模式来做到这一点?