Changing/Creating VSCode 编辑器中元素的作用域
Changing/Creating a scope for an element in VSCode editor
正在尝试更改我的编辑器的颜色,但我注意到一些元素共享相同的范围(无论如何都会产生相同的颜色)。
我想知道是否有办法“创建”一个新的作用域,并为其分配一个特定的关键字(比如在 lua 中为“local”添加一个新的作用域)。
下面是“local”和“nil”共享相同作用域的示例:
local
nil
感谢您的宝贵时间
语法贡献
你想做的是贡献一个语法使用,VSCode提供,贡献点。语法贡献点为:contributes.grammars
贡献点数是 VS 代码扩展清单 的一部分。
VS-Code 扩展清单是 package.json
位于 VS-Code 扩展或主题的根目录中。您不能从 ./.vscode/settings.json
文件贡献语法。
在扩展清单中定义语法
在这种情况下,您将做出的贡献类型如下:
"grammars": []
这是在 VS-Code 扩展的清单中定义语法的示例
/*
Grammars are defined in the Extension Manifest (package.json),
inside of the contributions property.
*/
{
"name": "language-latex",
"description": "LaTex Language Support",
"version": "0.0.1",
"publisher": "someone",
"engines": {
"vscode": "0.10.x"
},
"categories": ["Programming Languages", "Snippets"],
"contributes": {
"languages": [
{
"id": "latex",
"aliases": ["LaTeX", "latex"],
"extensions": [".tex"]
}
],
"grammars": [
{
"language": "latex",
"scopeName": "text.tex.latex",
"path": "./syntaxes/latex.tmLanguage.json"
}
],
"snippets": [
{
"language": "latex",
"path": "./snippets/snippets.json"
}
]
}
}
最初作为贡献示例的一部分创作@ VSCode 的 URL:https://code.visualstudio.com/api/references/extension-manifest#combining-extension-contributions
注意到清单中的语言是如何定义的了吗?这是因为这个例子定义了 Language Latex。听起来您想在现有语言之上贡献语法,在这种情况下您可能不需要定义新语言。我在这个答案的底部发布了三个指向官方 VSCode 文档的链接。您将需要阅读这三个链接,以便您可以准确地决定您的扩展程序需要什么。如何填写您的扩展清单将取决于您要定义的语法。这听起来可能很复杂,但是一旦掌握了它,您就会发现这很容易。
注意:许多高级 VSCode 功能,例如主题、扩展、贡献、任务、配置调试器(您不能只在 settings.json
文件中设置布尔值的东西), 使用相同类型的方法来使用这些功能。比如创建一个主题,你也贡献了主题,也就是说你学会了如何贡献一个语法,你也就知道如何创建一个主题了。请访问下面的贡献 Link 以了解更多信息(大约有 20 种不同的贡献类型可供阅读)。
就语法部分而言,您需要提供 3 个特定值,方法是将它们分别分配给右侧 属性:
grammars.language
属性
grammars.scopeName
属性
grammars.pathname
属性
该路径将使用如下所示的 json 文件:
"./syntaxes/<Your-language>.tmLanguage.json"
它是一个转换为 JSON 格式的 TextMate 文件,可以位于您的 VSCode 文件中,或 VSCode 存储库中(搜索 VSCode 存储库。它应该在您输入时弹出。)
这里是Link到VSCode Repository
For more information about Grammar Contributions visit this link: https://code.visualstudio.com/api/references/contribution-points#grammar-example
For more information about Contributions in general visit this link: https://code.visualstudio.com/api/references/contribution-points
For more information about the VSCode Extension Manifest visit this link: https://code.visualstudio.com/api/references/extension-manifest#combining-extension-contributions
关于此答案的任何问题,应在属于此答案的评论部分提出。
(将编辑并删除此行,以及 6 月 21 日以上的行 @ 11:59pm UTC)
正在尝试更改我的编辑器的颜色,但我注意到一些元素共享相同的范围(无论如何都会产生相同的颜色)。
我想知道是否有办法“创建”一个新的作用域,并为其分配一个特定的关键字(比如在 lua 中为“local”添加一个新的作用域)。
下面是“local”和“nil”共享相同作用域的示例:
local nil
感谢您的宝贵时间
语法贡献
你想做的是贡献一个语法使用,VSCode提供,贡献点。语法贡献点为:contributes.grammars
贡献点数是 VS 代码扩展清单 的一部分。
VS-Code 扩展清单是 package.json
位于 VS-Code 扩展或主题的根目录中。您不能从 ./.vscode/settings.json
文件贡献语法。
在扩展清单中定义语法
在这种情况下,您将做出的贡献类型如下:
"grammars": []
这是在 VS-Code 扩展的清单中定义语法的示例
/*
Grammars are defined in the Extension Manifest (package.json),
inside of the contributions property.
*/
{
"name": "language-latex",
"description": "LaTex Language Support",
"version": "0.0.1",
"publisher": "someone",
"engines": {
"vscode": "0.10.x"
},
"categories": ["Programming Languages", "Snippets"],
"contributes": {
"languages": [
{
"id": "latex",
"aliases": ["LaTeX", "latex"],
"extensions": [".tex"]
}
],
"grammars": [
{
"language": "latex",
"scopeName": "text.tex.latex",
"path": "./syntaxes/latex.tmLanguage.json"
}
],
"snippets": [
{
"language": "latex",
"path": "./snippets/snippets.json"
}
]
}
}
最初作为贡献示例的一部分创作@ VSCode 的 URL:https://code.visualstudio.com/api/references/extension-manifest#combining-extension-contributions
注意到清单中的语言是如何定义的了吗?这是因为这个例子定义了 Language Latex。听起来您想在现有语言之上贡献语法,在这种情况下您可能不需要定义新语言。我在这个答案的底部发布了三个指向官方 VSCode 文档的链接。您将需要阅读这三个链接,以便您可以准确地决定您的扩展程序需要什么。如何填写您的扩展清单将取决于您要定义的语法。这听起来可能很复杂,但是一旦掌握了它,您就会发现这很容易。
注意:许多高级 VSCode 功能,例如主题、扩展、贡献、任务、配置调试器(您不能只在 settings.json
文件中设置布尔值的东西), 使用相同类型的方法来使用这些功能。比如创建一个主题,你也贡献了主题,也就是说你学会了如何贡献一个语法,你也就知道如何创建一个主题了。请访问下面的贡献 Link 以了解更多信息(大约有 20 种不同的贡献类型可供阅读)。
就语法部分而言,您需要提供 3 个特定值,方法是将它们分别分配给右侧 属性:
grammars.language
属性grammars.scopeName
属性grammars.pathname
属性
该路径将使用如下所示的 json 文件:
"./syntaxes/<Your-language>.tmLanguage.json"
它是一个转换为 JSON 格式的 TextMate 文件,可以位于您的 VSCode 文件中,或 VSCode 存储库中(搜索 VSCode 存储库。它应该在您输入时弹出。)
这里是Link到VSCode Repository
For more information about Grammar Contributions visit this link: https://code.visualstudio.com/api/references/contribution-points#grammar-example
For more information about Contributions in general visit this link: https://code.visualstudio.com/api/references/contribution-points
For more information about the VSCode Extension Manifest visit this link: https://code.visualstudio.com/api/references/extension-manifest#combining-extension-contributions
关于此答案的任何问题,应在属于此答案的评论部分提出。
(将编辑并删除此行,以及 6 月 21 日以上的行 @ 11:59pm UTC)