问题标签 [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.
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”是什么以及为什么它与我有关的示例/解释都将受到欢迎!
regex - 嵌套正则表达式的 Emacs 语法高亮
我正在尝试编写一个 Emacs 主要模式来处理生物序列数据(即 DNA 和肽),并且我想实现语法突出显示,其中不同的字母颜色不同。由于该模式需要能够区分 DNA 序列和氨基酸序列并对其进行不同的着色,因此我将文件中的每个序列放在一行中,并带有一个单字符前缀(+ 或 #),该前缀应指示下一行应突出显示。
因此,例如,如果文件包含一行内容:
“A”都应该是一种与行的其余部分不同的颜色。
我尝试了以下测试:
但这仅匹配最后一个 A 而不是全部。
我的第一个想法是尝试将整行与一个正则表达式匹配,然后使用另一个正则表达式仅匹配该行中的 A,但我不知道这是否可能在 font-lock-mode 的上下文中或者它会如何完成。关于如何做这样的事情,或者如何以不同的方式完成这件事的任何想法?
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
?)
regex - Lisp 正则表达式匹配带有或不带有常量类型标识符的数字( 3.2 或 3.2f )
问题:我希望在 emacs 中创建一个数字字体锁定面孔,但我无法获得符合我需要的正则表达式。这是我所拥有的:
我希望它匹配的内容:
- 2
- 2.1
- 2.1f 或 2.1d
- .1f 或 .1d
我不希望它匹配的内容
- 2.
- 2.f 或 2.d
- f 或 d
当前问题:
目前它主要工作,但它不匹配像 .2 或 .2f 这样的数字,因为它没有在数字之前拾取 (.)。它目前还匹配代码中任何位置的单个“f”或“d”,因此 f 或 d 等变量名得到匹配。我在这里想念什么?在过去一周左右的每个午休时间,我都在摆弄这个,我很难过。
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
,但我对它的工作原理有点困惑 - 文档有点稀疏。
emacs - emacs custom-face 颜色
我尝试通过更改字体锁定面的颜色(Mx customize-face)来自定义我的 emacs 颜色。但是我发现颜色的数量并没有#xxxxxx的所有值那么多。例如,将颜色值从#000000 更改为#FF0000 时,我只得到了两种颜色,“红色”和“浅红色”。
这是emacs的极限还是我需要用另一种方式来表达颜色值?
emacs - 可选部分的 Emacs 语法高亮
我正在尝试从基本模式编写派生模式。假设我有这个正则表达式:A ((foo)bar)? B
,我如何告诉 emacs 使用以下面孔?
font-lock-keyword-face
在A
font-lock-warning-face
在foo
(但不是bar
)font-lock-constant-face
在B
我尝试使用以下代码:
但它不适用于字符串A B
(emacs 报告丢失的捕获)。
emacs - 在 Emacs 中修改字体锁定条目
如何更改XXX-font-lock-keywords
(通常使用assoc
plus setcdr
)影响字体化XXX-mode
?仅仅更改变量以使更改生效是不够的。
emacs - 将字体锁定应用于 elisp 中的引用符号
在 Emacs 中,我想在 emacs lisp 中引用符号,例如:'blah
并以不同的颜色显示它们。我怎样才能使用font-lock
模式来做到这一点?