问题标签 [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 投票
0 回答
68 浏览

emacs - 添加新关键字后字体锁定无颜色

我正在尝试为基于 ctags 文件的 C/C++ 项目提供更好的突出显示。所以我创建了这个:

但是在我执行这段代码之后,我根本没有高亮显示。

有人知道上面代码中的错误在哪里吗?

0 投票
1 回答
268 浏览

emacs - Emacs 指定字体锁定规则

我正在将我正在学习的解析技术付诸实践。我正在尝试在 Emacs 中编写一种编程模式,因此我可以利用语法高亮等。不幸的是,字体锁定不起作用。在谷歌上搜索并按照教程发现那里没有产生任何结果。下面是我的代码。任何建议表示赞赏。

0 投票
1 回答
253 浏览

emacs - emacs派生模式中“特殊”注释的不同字体锁定方案

我通过从 prog-mode 派生来定义 Emacs 主要模式。字体锁定工作除了一件事:

我想强调一种特殊的注释类型,它包含特殊的链接器指令,使用与常规注释不同的字体。常规注释以“;”开头 而链接器指令的格式为“;<...directive...>”。当然,字符串中的文本不应被误认为是注释。

到目前为止,我所拥有的是:

问题在于,使用语法表条目,此机制将对所有以 ; 开头的内容进行分类。作为评论。因此,链接器指令正则表达式不再有效。

我怎样才能实现所需的行为?看来我需要一种允许检查后面的字符的模式。但是使用语法表进行评论检测看起来不错,因为它可以正确处理字符串。

更一般地说,我对解释 emacs/elisp 的“架构”的文档感兴趣(例如,模式和哪些操作序列适用于字体锁定。缓冲区交互也是如此)。我有很棒的 elisp 参考手册,但我错过了对这些主题的概念介绍。我已经阅读了 emacs elisp 介绍,但不喜欢它,因为我发现它太“教程式”,非常冗长和重复,并且缺少系统的覆盖。例如,没有关于反引号的句子。它似乎也适用于编程经验为零的人 - 但是会从 elisp 开始吗?

0 投票
1 回答
165 浏览

javascript - JavaScript 的 emacs 字体锁定模式:想像“this”一样突出显示“self”

因为我经常不得不避免this在闭包中被覆盖,所以我喜欢做:var self = this;在我的构造函数的顶部。我想随后self准确this强调当前突出显示的方式和时间。但是,在研究了此处的 emacs 文档、网站和示例并调整了示例之后,它无法正常工作。我正在评估这个表达式:

在我的.emacs文件和 javascript 缓冲区中,以及切换font-lock-mode以强制刷新。我已经尝试过使用令人困惑的"\\<self\\>"语法的变体,但我显然在投掷飞镖,因为这也失败了。我看到了许多变体,font-lock-add-keywords但只是 Emacs 高级用户而不是开发人员,这似乎是拜占庭式的。

作为上下文,这是作为本机 Mac OS X 10.11.5 应用程序运行的 GNU Emacs 24.5.1,而不是在终端中。

0 投票
1 回答
125 浏览

elisp - 如何为评论面添加额外的字体锁定

我想区分评论。string在elisp 模式下,我想;;! string突出显示。

但是,它并不有效。

0 投票
0 回答
33 浏览

emacs - font-lock 不适用于类型

我希望每个带_st后缀的关键字都以不同的颜色突出显示。

我试过了prepend,同样的结果。

0 投票
1 回答
44 浏览

emacs - 派生模式 sh-mode 类似宏变量

我正在为我在工作中经常使用的一些文件创建一个主要模式,并且在以不同颜色显示宏时遇到了一些问题。问题是宏出现在字符串中,即使我将 $ 字符设置为表达式字符,它们也会突出显示为字符串。即 "$(macro1)" 像字符串一样突出显示,而不是像宏

在这里,我尝试将 $ 字符设置为表达式的语法,并且还整理了注释语法:

在这里我设置了语法表和亮点:


变化:

0 投票
2 回答
186 浏览

emacs - emacs define-generic-mode 为什么不能使用 regexp-opt?

我正在尝试使用define-generic-mode. 我找到

不管用。但是,如果我将regexp-optcall 替换为其手动计算的结果,那么一切都按预期工作:

那么,为什么我不能只regexp-opt在模式定义中加入 call 呢?

编辑

从 Lindidancer 的回答中对引用列表中的项目进行强制评估的提示:

没有帮助:模式激活没有错误,但也没有突出显示

list关于使用函数形成列表的第二个提示:

激活模式出错:(invalid-function (regexp-opt (quote ("int" "string" "bool"))))

尝试评估时出现同样的错误:

在暂存缓冲区中。

编辑 1

也无济于事 - 没有错误,没有突出显示。

编辑 2

我所做的步骤是:

  1. define-generic-mode*Scratch*缓冲区中执行调用
  2. 使用一些正在测试的关键字切换到缓冲区
  3. M-x mytest-mode
0 投票
0 回答
86 浏览

emacs - 在 emacs 中,如何根据列中的值对 CSV 中的行进行着色?

我为 emacs 创建了一个主要模式,用于数据分析。这种模式对我来说很有效,但它很单调,而且我没有以我应该的方式利用颜色。正在分析的数据采用 CSV 格式,我想根据列中的值对其中的行进行着色。

假设我有以下 CSV 格式的文件:

此 CSV 中的行应根据第 4 列中的值用红色着色,并且红色的强度应随着相同的值增加。所以在这种情况下,最后一列应该是最强烈的红色,第一列应该是最不红色的。

我已经阅读了基于搜索的字体,对于如何编写正确设置 facespec 的 (matcher . facespec) 有点困惑。facespec 是一个表达式,计算结果为

但是如何使这取决于我的 CSV 第四列中的值?我猜第四列中的值是匹配的,但我如何将用于匹配的值的大小联系起来?我想我需要根据匹配的值动态生成一张脸,但不知道该怎么做。

有任何想法吗?一个简单的例子是最好的。

0 投票
1 回答
1783 浏览

emacs - 覆盖 emacs org-mode faces

我正在尝试覆盖org-modeorg-agenda-mode缓冲区中的默认语法突出显示。

为了澄清我的意图:我目前这样做的原因是根据标签突出显示标题(或标题的一部分)。内置变量org-tag-faces只允许自定义标签本身,而不是包含标签的标题。

参考以下相关问题:

  1. Emacs 字体锁定模式:提供自定义颜色而不是面

  2. https://emacs.stackexchange.com/questions/8211/color-code-a-new-generic-character-combination

  3. https://emacs.stackexchange.com/questions/8222/how-to-make-the-custom-font-lock-keywords-not-override-the-default-major-mode-fo#comment12615_8222

在线程 2 中,接受的答案是为此目的使用 font-lock。

在线程 3 中,我试图实现与海报完全相反的效果。Jordon Biondo的最后一条评论说:

从关键字中取出 t , t 指定的是 font-lock 应该覆盖已经着色的东西。

因为我想覆盖已经着色的东西,所以我在 t 中添加了,但据我所知,org-mode突出显示仍然覆盖了我的自定义面孔。在org-mode缓冲区中,这表现为标题文本的主体被更改,但任何其他项目(例如待办事项状态、日期、标签等)都保留了现有的面孔。在org-agenda-mode缓冲区中,它完全无法修改匹配行的任何方面。

通过一个简单的例子,这里有一些代码我试图用来将包含 :TT: 的任何行设置为org-mode缓冲区中的红色: