问题标签 [tmlanguage]

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 投票
1 回答
151 浏览

syntax - 如何在 TextMate 语言定义中嵌入另一个语法对象,tmLanguage

我试图在 VS Code 中支持 Clojure 的忽略文本形式, #_, (一种注释),它使用 tmLanguage 进行语法定义。由于使用 禁用代码块很常见#_,因此我希望禁用的代码块保留其语法突出显示并仅将其斜体化,以指示其状态。

但是我缺乏使用 tmLanguage 的技能似乎阻止了我。这是失败的尝试之一(的片段cson):

通过constants定义一些 Clojure 常量对象,例如keyword

我想要发生的是constants定义将在注释“内部”使用。对于关键字,我有这个(失败的)规范:

(该列表中的最后一个测试)。它失败并显示此消息:

这意味着我没有得到constant.keyword.clojure适当的范围,因此对我来说没有关键字着色。

任何人都知道如何做到这一点?

0 投票
0 回答
116 浏览

syntax-highlighting - TextMate 语法 - 避免外部“包含”覆盖本地模式

调整 SaltStack 的 Atom IDE 语法,该语法具有以下模式,但source.python似乎覆盖了 SaltStack 语法文件中定义的一个或多个模式。

如果外部语法包含冲突,我如何设置优先级或覆盖以避免这种情况?所以 SaltStack 语法模式优先。

我尝试对模式的本地语法排序,看看将我想要的定义放在顶部是否会赢,但没有运气。

谢谢。

0 投票
1 回答
990 浏览

visual-studio-code - 如何向 VSCode 添加基本语法?

我想将最简单的(mvp)语言语法和语法高亮添加到 vscode。

这是(imo)一堆TextMate文档(适用两个不同的版本)和随机的互联网建议。我无法制作一个基本示例,也找不到一个。

我将如何添加只有一条规则的语言语法(例如:将“foo”视为mylang.symbol.foo)和影响该符号的单一着色规则?

0 投票
1 回答
910 浏览

javascript - tmLanguage 中的注释行以 .* TextMate Grammar Syntax Highlight 开头

我正在为 VS 代码开发自己的语法突出显示扩展,并且我有以“。*”开头的注释行,我想突出显示。

对于代码,我有:

但这似乎并没有为我以 .* 开头的行添加正确的注释范围。

谢谢您的帮助。

0 投票
0 回答
558 浏览

visual-studio-code - 是否可以在 VS Code 语法高亮中动态添加“关键字”?

我一直在 VS Code 中使用语法高亮显示,到目前为止,使用自定义 JSON TextMate 语法能够获得相当不错的结果。虽然 GCC ARM 程序集的扩展已经存在,但我认为它很烂,所以我使用源代码作为起点来制作我自己的。

但是,有一种情况我似乎无法弄清楚如何处理。在 GCC ARM 中,您可以使用该.macro指令创建如下宏:

如果您从未看过 GCC ARM,那么您只需要知道第一行是宏的开头,其中print是宏的名称,format并且storage是它的参数。然后在宏内部,您可以在任何您想要的地方使用参数\format的值。\storage还有\@, 这是一个特殊的“变量”,只在宏内部有意义。它只是一个每次调用宏时递增的数字。

我想做的是以某种方式编写语法突出显示,它将动态识别宏声明中的参数名称,然后在它们出现在宏中的任何位置为它们的相应用法(从正斜杠开始)着色。这个问题似乎是我需要以某种方式动态创建一个新的“关键字”列表(或任何你想调用的文本字符串),我可以从宏上下文中的规则中引用它。

这在带有 TextMate 语法的 VS Code 中是否可行?VS Code 有可能吗?如果没有,是否可以在任何编辑器中使用?如果无法使用 TextMate 语法,我该怎么做才能做到这一点?

如果我解释得不好,请随时询问更多详细信息,我将编辑问题。

0 投票
1 回答
964 浏览

visual-studio-code - TextMate 语法在 VS Code 上没有任何匹配项

我正在编写一个 TextMate 语法,以使用 Visual Studio Code 扩展 Markdown 语言的语法突出显示功能。预期的结果类似于Fabio 的 vscode-highlight所实现的结果,但我一直在寻找更“简单”的东西,而无需安装或创建扩展。

已经做了很多研究,但在检查范围时找不到任何匹配项。有什么建议么?截至目前,我的文件是:

./package.json ./syntaxes/markdown.tmLanguage.json
0 投票
1 回答
409 浏览

visual-studio-code - VSCode 语法高亮问题:正向后视不适用于空格

我正在为 VSCode 开发自定义语言语法突出显示扩展。我遇到了一个问题,当在空格旁边使用时,lookbehinds 的行为很奇怪。

我要强调的代码示例:

我尝试使用的代码示例(在tpl.tmLanguage.json):

此模式包含在(在另一个模式中,它存在于整个文件中):

症结是\\s*正则表达式的一部分。您应该能够在 and 之间使用orvar:=valuevar := value任意数量的空格,不管有多少。但是,当我尝试使用它时,我得到了这个::=value

我也尝试过\\sand \\s+,但都没有工作。我尝试了一些愚蠢的例子来确保我的逻辑通过使用一些占位符来工作,比如(?<=:=)#(\\w+)...,然后用 测试它var:=#value,它确实有效......但它从不适用于空格。

我不明白为什么这是一个问题,因为我在\\s*其他地方使用过没有任何问题(只是不同的情况)。我不相信这是一个属性问题,因为它适用于空白之外的所有内容。

附加信息:我在 RegexCoach 和 Regex101.com 上对此进行了测试,它在那里工作。

出于测试目的,我还包含了应在此处突出显示的代码的测试示例:https ://drive.google.com/open?id=1yoDXVxW3LFYjejW1wps8ENWUQ4iCal9w

这是我可以提供的代码的最小示例:

我的所有自定义语言代码都可以在我的 GitHub 上找到:https ://github.com/cdpautsch/vscode-tpl

0 投票
1 回答
1053 浏览

visual-studio-code - VSCode 中的动态语法高亮

我正在为 Visual Studio Code 编写一个扩展,它具有脚本语言的语法突出显示。我能够通过 TextMate 语法文件为许多重要元素着色。有很多行我不知道捕获的字符串是指用户定义的类(例如,用于静态调用)还是类/变量的实例,直到我在代码中执行分析。

有没有一种方法可以通过 Visual Studio Code 中的代码或任何替代方法来动态突出显示语法?

0 投票
1 回答
1508 浏览

visual-studio-code - TextMate 语法和主题如何与 VSCode 一起使用?

VSCode 建立在 MonacoEditor 之上,不支持 Textmate 语法和主题。但不知何故,VSCode 使之成为可能。我很好奇 VSCode 是如何做到这一点的。

我问是因为我正在制作一个带有 TextMate 语法和主题支持的代码编辑器(基于 Monaco)。但我无法理解如何实现它。

尽管有一些软件包monaco-textmate可以让 TextMate 语法与 Monaco 一起使用,但语法高亮仍然无法正常工作

0 投票
1 回答
266 浏览

regex - 如何使用 ”!” 作为注释指示符,但在语言语法突出显示中也有 NOT 运算符?

我正在使用 VScode 并创建自己的语言扩展来突出显示语法,我需要使用正则表达式来查找注释。

基本规则是后面的所有内容!都是注释,但是有一个特殊情况。当!eval()命令内部时,表示NOT。

例如,我的一些代码如下所示:

!DB_EXIST1 行和第 2 行不应被解释为注释,!后面会跟一个非空格。

空格在评论中并不重要。

我应该使用哪种正则表达式 1 和 2 来显示不同颜色的评论而不是?

我不擅长这个扩展写作,所以如果有更好的方法来完成这项工作,我将不胜感激。谢谢!

更新

@Gama11 帮助了我,但我并没有在我的代码示例中完全涵盖所有情况。“!”之后的任何非空间 也应该是注释,只要“!” 不在 eval() 内。