Visual Studio Code / Egret Wing 技术架构:插件系统

系列目录

在上一篇我介绍了 VSC 的基础架构。这篇我们来说一下对 VSC 来讲至关重要的插件系统。

为什么插件系统对 VSC 如此重要

在早期的版本中 VSC 并没有插件系统,只支持 TypeScript、JavaScript和C#的智能感知。还有其余40中语言的代码着色。所以 VSC 只是出现在微软技术的社区中。15 年 12 月份,VSC 发布了第一个支持扩展的版本。不久之后就出现了许多其他语言的支持,比如 Go 语言、C++、Java、Python、Ruby。

所以说有了核心编辑器的极速体验,加上良好的扩展能力才成就了 VSC。

VSC 支持哪些扩展

语言支持

VSC 制订了一套完善的语言支持体系,方便支持新的编程语言。

一个代码编辑器需要哪些功能来支持一种新语言

兼容 TextMate 的代码着色分析

可以简单的将 TextMate 的语言着色配置文件拷贝到插件中,并在 package.json 中指定即可。

语言支持通用协议

VSC 约定了一种通用的通信协议来支持多种语言

由于 VSC 采用多进程的架构,语言的开发者可以使用自己熟悉的语言编写这门语言的语言服务,VSC 将采用 JSON-RPC 通信的方式跟语言服务沟通,执行用户命令,获取结果。

Debugger

同语言服务类似,VSC 开放了一组通用协议来满足不同语言不通平台的调试需求。

主题/配色方案

VSC 采用了跟 TextMate 相同的配色方案文件格式。

编辑器辅助

VSC 提供了编辑器操作 API,你能够实时获取用户输入点、当前文件代码。从而可以根据用户当前文档确定可以提供的快捷操作。比如自动添加不存在的方法等。

扩展命令

开发者可以在插件中定义自己的命令,这些命令会出现在“命令面板” 中,开发者可以通过 “ctrl/cmd + shift + p” 或 “F1” 来调用这些命令,完成复杂的操作。

插件可以使用所有的 NodeJS API,配合各种 NodeJS 库,能够完成非常有想象力的功能。

扩展菜单

VSC 提供了文件管理器菜单,编辑器菜单,文件标题菜单扩展点。方便开发者针对不同的上下文进行操作。

快捷键

开发者可以为各种自定义操作指定快捷键。

VSC 插件开发文档

Wing 插件开发文档