Experimental Tree Sitter 0.2.1
分类: 下载/工具 · 工具软件 | 来源: 点击进入 | 版本: 0.2.1 |
日期: 2025-07-16 | 人气: | 大小: |
标签: C C++ cpp Syntax highlight coloring highlighting highlighter Parser Tree-Sitter |
新的介绍内容:
Experimental Tree Sitter是一款为VSCode设计的语法高亮插件,基于Tree-Sitter技术,为几乎所有编程语言提供强大的语法着色引擎。该扩展通过利用VSCode Decoration API,覆盖了标准TextMate正则匹配提供的语法着色。它通过构建完整的语法树,有效克服了内置TextMate语法的所有限制。作为一款上下文感知的工具,它能够解析复杂的语言结构,提供对源代码的完整覆盖。增量解析系统确保了高性能,这些优势使得语法高亮更加准确和一致。
注意事项
目前,VS Code Marketplace发布的扩展仅在Windows-x64上可用。未来更新将解决此问题。对于其他操作系统,请从GitHub页面下载预编译的.vsix包。
支持的语言
- C
- 更多语言将在贡献者的帮助下增加
自定义设置
Syntax Highlighter提供了多种设置,以便将主题颜色分配给语法术语。为了简单直观的自定义,我们保持了语法术语的数量较少,包括:类型、函数、变量、字符串、数字、注释等。这些设置可以在settings.json的workbench.colorCustomizations语法子部分中找到。可以通过自动完成功能来发现可自定义的颜色,并在悬停时提供简短描述。完整的设置列表可以在Contributions选项卡中找到。为了为[Visual Studio Dark]主题重新定义语法颜色,请将以下内容添加到settings.json中:
"workbench.colorCustomizations": {
"[Visual Studio Dark]": {
"syntax.type": "#26A69A",
"syntax.namespace": "#00897B",
"syntax.function": "#00BCD4",
"syntax.variable": "#42A5F5",
"syntax.string": "#90A4AE",
"syntax.number": "#90A4AE",
"syntax.punctuation": "#A1887F",
"syntax.comment": "#546E7A",
"syntax.keyword_constant": "#A89F9B",
"syntax.keyword_directive": "#7E57C2",
"syntax.keyword_control": "#7986CB",
"syntax.keyword_operator": "#9575CD",
"syntax.storage_modifier": "#00897B"
}
},
为了与内置的TextMate语法保持一致,可以为相应的TextMate范围提供相同的颜色。或者,可以将颜色从TextMate移植到Syntax Highlighter。在大多数情况下,存在一对一的匹配。例如,对于C语言:syntax.function = entity.name.function 或 syntax.number = constant.numeric。可以通过Ctrl Shift P -> Developer: Generate Color Theme...来发现当前的TextMate颜色,在生成的主题文件中查看tokenColors部分。以下设置将TextMate颜色与Syntax Highlighter同步,适用于C语言:
"editor.tokenColorCustomizations": {
"[Visual Studio Dark]": {
"types": "#26A69A",
"functions": "#00BCD4",
"variables": "#42A5F5",
"strings": "#90A4AE",
"comments": "#546E7A",
"keywords": "#7986CB",
"textMateRules": [
{
"scope": "storage.type",
"settings": {"foreground": "#26A69A"}
},
{
"scope": "entity.name.function",
"settings": {"foreground": "#00BCD4"}
},
{
"scope": [
"meta.function-call",
"source.cpp meta.block variable.other"
],
"settings": {"foreground": "#42A5F5"}
},
{
"scope": "punctuation",
"settings": {"foreground": "#A1887F"}
},
{
"scope": "comment",
"settings": {"foreground": "#546E7A"}
},
{
"scope": "constant.numeric",
"settings": {"foreground": "#90A4AE"}
},
{
"scope": [
"constant.language",
"variable.language"
],
"settings": {"foreground": "#A89F9B"}
},
{
"scope": "keyword.control",
"settings": {"foreground": "#7986CB"}
},
{
"scope": "keyword.operator",
"settings": {"foreground": "#9575CD" }
},
{
"scope": "storage.modifier",
"settings": {"foreground": "#00897B"}
},
]
}
},
分发
由于依赖于原生Node.js模块,目前无法在VS Code Marketplace发布跨平台包。发布的版本仅与Windows-x64兼容。您可以从GitHub存储库下载适用于您的操作系统的.vsix包。要安装下载的扩展,请执行Ctrl Shift P -> Extensions: Install from VSIX命令,并选择下载的文件。目前,适用于Windows-x64和Linux-x64的版本已经可用。
构建
Syntax Highlighter扩展依赖于特定的Tree-sitter模块。这些是需要为特定架构、操作系统和Node.js版本编译的原生Node.js模块。请参考BUILD.md获取相关指令。
贡献
贡献的最佳方式是实现对新语言的支持。扩展的改进也受到欢迎。待办事项清单上的第一件事是改进分发和打包,这些工作由于原生模块而变得复杂。请参考CONTRIBUTE.md获取详细信息。
待办事项
- 改进分发和打包
- 增加更多语言支持
-
- Golang云原生架构师课程
- Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
- 204次学习
-
- MySQL数据管理之备份恢复案例解析视频教程
- 《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
- 163次学习
-
- MySQL索引优化解决方案
- 本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
- 182次学习
-
- 极客学院Docker视频教程
- Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
- 243次学习
-
- Golang进阶实战编程
- 本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
- 128次学习
-
- JavaScript极速入门
- 本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......
- 431次学习
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- GoLand调式动态执行代码
- 2023-01-13 502浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- 用Nginx反向代理部署go写的网站。
- 2023-01-17 502浏览
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览