Visual studio code 在VisualStudio代码中创建自定义语言
有没有办法在Visual Studio代码中扩展受支持的语言/语法? 我想添加一个自定义语言语法,但是我还没有找到任何关于如何提供语言服务的信息Visual studio code 在VisualStudio代码中创建自定义语言,visual-studio-code,vscode-extensions,tmlanguage,Visual Studio Code,Vscode Extensions,Tmlanguage,有没有办法在Visual Studio代码中扩展受支持的语言/语法? 我想添加一个自定义语言语法,但是我还没有找到任何关于如何提供语言服务的信息 有人能指出现有语言实现的任何参考甚至示例吗?使用反向工程,您可以向VSCode添加新语言。您可以了解typescript是如何作为JavaScript插件实现的,以及它是如何通过管道与node.exe通信的。但这是一件困难的事情,因为它完全没有文档 我将在这里提供一个非常简短的文档: 您可以在plugins文件夹C:\Users\USER\AppDat
有人能指出现有语言实现的任何参考甚至示例吗?使用反向工程,您可以向VSCode添加新语言。您可以了解typescript是如何作为JavaScript插件实现的,以及它是如何通过管道与node.exe通信的。但这是一件困难的事情,因为它完全没有文档 我将在这里提供一个非常简短的文档: 您可以在plugins文件夹
C:\Users\USER\AppData\Local\code\app-0.3.0\resources\app\plugins
中定义新插件
复制typescript插件文件夹,并将所有文件中提到的文件扩展名和语言名称重命名为新语言,以便在打开.mylang文件时使用新插件
在typescriptServiceClient.js
中,您可以看到一个子进程正在分叉,并且它的stdout
与一个新的WireProtocol.Reader
耦合。绑定您自己的mylanguage.exe
(您可能需要自己编写该exe)。VSCode要求二进制文件获取更多特定于语言的信息
在typescriptMain.js
中可以找到该语言的功能注册。删除对monaco.Modes.xxxxxx support.register的所有调用,但monaco.Modes.DeclarationSupport.register除外
现在在VSCode中打开一个包含.mylang文件的目录,并通过CTRL+p+FileName
打开其中一个。右键单击标识符并选择转到定义
。VSCode现在通过StdIn向您的exe发送一个类似这样的请求
{"seq":1,"type":"request","command":"definition","arguments":{"file":"d:/Projects/MyProj/Source/MyFile.mylang","line":45,"offset":9}}
VSCode希望得到如下答案:
Content-Length: 251
[LINE BREAK]
{ "seq" : 1, "type" : "response", "command" : "definition", "request_seq" : 1, "success" : true, "body" : [{ "file" : "d:/Projects/MyProj/Source/MyOtherFile.mylang", "start" : { "line" : 125, "offset" : 3 }, "end" : { "line" : 145, "offset" : 11} }] }
如果一切正常,VSCode将打开MyOtherFile.mylang并将光标设置为第3列的第124行
自己试试;-) 使用新版本0.9.0是可能的。有一份关于如何添加自定义语言的官方文档:
您需要一个.tmLanguage
文件,用于要添加的语言。您可以在GitHub上找到现有文件,或者定义自己的语言文件。查看此处,了解如何创建一个:
找到.tmLanguage
文件后,有两种方法可以基于该文件创建扩展名
选项1:使用约曼发电机
- 安装node.js(如果尚未安装)
- 通过执行
npm Install-g yo
- 安装Yo发电机代码:
npm安装-g发电机代码
- 运行
yo code
并选择New language support
- 按照说明操作(定义
.tmLangauge
文件,定义插件名称、文件扩展名等)
- 生成器使用当前工作目录中插件的名称为扩展创建一个目录李>
选项2:自己创建目录
- 创建一个包含插件名称的目录(仅小写字母)。我们把它叫做mylang
- 添加子文件夹
syntaxes
,并将.tmlanguage
文件放在其中
- 在扩展文件夹的根目录中创建一个包含如下内容的文件
package.json
{
“姓名”:“迈朗”,
“版本”:“0.0.1”,
“发动机”:{
“vscode”:“>=0.9.0-pre.1”
},
“出版商”:“我”,
“贡献”:{
“语言”:[{
“id”:“mylang”,
“别名”:[“MyLang”,“MyLang”],
“扩展名”:[“.mylang”,“.myl”]
}],
“语法”:[{
“语言”:“mylang”,
“scopeName”:“source.mylang”,
“路径”:“/syntaxes/mylang.tmLanguage”
}]
}
}
最后将扩展添加到Visual Studio代码中
将扩展文件夹复制到扩展目录。这是:
- 在Windows上
%USERPROFILE%\.vscode\extensions
- 在Mac/Linux上
$HOME/.vscode/extensions
重新启动代码。现在,每次打开具有指定文件扩展名的文件时,扩展名都将自动运行。您可以在右下角看到所用插件的名称。您可以通过单击扩展名来更改它。如果您的扩展名不是为特定文件扩展名注册的唯一扩展名,那么代码可能会选择错误的扩展名 要扩展,可选择使用.tmLanguage
文件。使用常规的.json
是一种非常有效的方法,在我看来,它更易于阅读
有关示例,请参见VSCode_SQF:
在package.json
中,您只需将路径从/syntaxes/mylang.tmLanguage
更改为/syntaxes/mylang.json
到2021年第二季度:
遵循中的选项2。你只需要两个文件就可以开始了。只需直接在扩展目录中创建文件夹结构。
- 在
package.json
用于构建正则表达式。
- 确保在“范围信息”屏幕中,与Textmate有关的任何内容都是绿色的。别担心其他编辑
- 将“Textmate”选项卡的内容保存到上面的路径中,即
.syntax/your_language.plist
重新加载VSCode
就这样。我还将IRO(左窗格)文本保存到我自己的项目中。您可以在线阅读内置语言扩展的源代码:
您可以选择一个接近您的语言语法的扩展,并根据需要进行更改。(例如,您可以对