禁用竞争语言服务器/代码荧光笔
Disable competing language servers / code highlighters
我想添加一个语言服务器来处理文件的完成/突出显示等。
作为测试内容的基础,我使用了 Microsoft (https://github.com/microsoft/vscode-extension-samples/tree/main/lsp-sample) 的示例并将其更改为对任何文件都有效。此语言服务器突出显示所有大写字母的单词。
打开 C++ 文件时,我得到了我的语言服务器的突出显示/完成以及 C++ 的默认突出显示/完成(见图)。
我想检测某个文件的其他扩展/内置荧光笔是否处于活动状态,如果当前工作区不可能,则为该工作区或当前文件停用它)
- 有没有办法以一种通用的方式执行此操作,而我不必知道哪些扩展正在突出显示代码?
- 如果否,如果我知道要停用的一组扩展程序,是否有办法做到这一点?
我终于有足够的时间尝试更多,发现为相同的扩展提供你自己的语言就足够了。
在 package.json
中,我在 contributes.languages
中添加了一个元素 extensions
包含 .cpp
(因为我正在使用 cpp 文件进行测试)。
我也复制了一些实现代码from an example。
这抑制了 cpp 文件的默认荧光笔和代码完成。因为我只实现了 semantic token provider, I can see the default highlighting before my provider takes over. (I think this could be solved by adding a syntax highlighter,但这已经足够我进行初步测试了)
我不确定,所有这些作为插件会有多稳定(我只在扩展开发主机模式下测试过)
这是结果的图片:
我想添加一个语言服务器来处理文件的完成/突出显示等。 作为测试内容的基础,我使用了 Microsoft (https://github.com/microsoft/vscode-extension-samples/tree/main/lsp-sample) 的示例并将其更改为对任何文件都有效。此语言服务器突出显示所有大写字母的单词。
打开 C++ 文件时,我得到了我的语言服务器的突出显示/完成以及 C++ 的默认突出显示/完成(见图)。
我想检测某个文件的其他扩展/内置荧光笔是否处于活动状态,如果当前工作区不可能,则为该工作区或当前文件停用它)
- 有没有办法以一种通用的方式执行此操作,而我不必知道哪些扩展正在突出显示代码?
- 如果否,如果我知道要停用的一组扩展程序,是否有办法做到这一点?
我终于有足够的时间尝试更多,发现为相同的扩展提供你自己的语言就足够了。
在 package.json
中,我在 contributes.languages
中添加了一个元素 extensions
包含 .cpp
(因为我正在使用 cpp 文件进行测试)。
我也复制了一些实现代码from an example。
这抑制了 cpp 文件的默认荧光笔和代码完成。因为我只实现了 semantic token provider, I can see the default highlighting before my provider takes over. (I think this could be solved by adding a syntax highlighter,但这已经足够我进行初步测试了)
我不确定,所有这些作为插件会有多稳定(我只在扩展开发主机模式下测试过)
这是结果的图片: