vscode插件开发中文文档教程(4)——扩展功能概述
原文链接:Extension Capabilities Overview
作者:Microsoft
译者:倔强青铜三
前言
大家好,我是倔强青铜三。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!
扩展功能概述
Visual Studio Code 提供了许多方式让扩展程序增强其功能。有时,找到正确的 贡献点 和 VS Code API 可能会比较困难。本主题将扩展功能分为几个类别。每个类别描述:
- 您的扩展可能使用的某些功能。
- 使用这些功能的更详细主题链接。
- 一些扩展创意。
然而,我们还对扩展施加了 限制,以确保 VS Code 的稳定性和性能。例如,扩展无法访问 VS Code UI 的 DOM。
通用功能
通用功能 是可以在任何扩展中使用的功能核心部分。
其中一些功能包括:
- 注册命令、配置、快捷键或上下文菜单项。
- 存储工作区或全局数据。
- 显示通知消息。
- 使用 Quick Pick 收集用户输入。
- 打开系统文件选择器,让用户选择文件或文件夹。
- 使用 Progress API 表示长时间运行的操作。
主题
主题 控制 VS Code 的外观,包括编辑器中源代码的颜色以及 VS Code UI 的颜色。如果您曾经希望让 VS Code 看起来像您正在编写《黑客帝国》代码(通过设置不同的绿色色调),或者只是想创建一个终极极简灰度工作区,那么主题就是为您准备的。
扩展创意
- 更改源代码的颜色。
- 更改 VS Code UI 的颜色。
- 将现有的 TextMate 主题移植到 VS Code。
- 添加自定义文件图标。
声明式语言功能
声明式语言功能 为编程语言提供基本的文本编辑支持,例如括号匹配、自动缩进和语法高亮。这是通过声明式方式实现的,无需编写任何代码。对于更高级的语言功能(如 IntelliSense 或调试),请参阅 编程式语言功能。
扩展创意
- 将常见的 JavaScript 片段打包成扩展。
- 告诉 VS Code 关于一种新的编程语言。
- 添加或替换编程语言的语法。
- 使用语法注入扩展现有语法。
- 将现有的 TextMate 语法移植到 VS Code。
编程式语言功能
编程式语言功能 提供丰富的编程语言支持,例如悬停提示、转到定义、诊断错误、IntelliSense 和 CodeLens。这些语言功能通过 vscode.languages.*
API 暴露。扩展可以直接使用这些 API,也可以编写语言服务器并通过 VS Code 的 语言服务器库 将其适配到 VS Code。
虽然我们提供了 语言功能 及其预期用途的列表,但没有任何限制阻止您创造性地使用这些 API。例如,CodeLens 和悬停提示是呈现内联附加信息的好方法,而诊断错误可以用于突出显示拼写或代码风格错误。
扩展创意
- 添加显示 API 示例用法的悬停提示。
- 使用诊断功能报告源代码中的拼写或 linter 错误。
- 为 HTML 注册一个新的代码格式化程序。
- 提供丰富、上下文感知的 IntelliSense。
- 为语言添加折叠、面包屑和大纲支持。
工作台扩展
工作台扩展 扩展 VS Code 工作台 UI。向文件资源管理器添加新的右键操作,甚至可以使用 VS Code 的 TreeView API 构建自定义资源管理器。如果您的扩展需要完全自定义的用户界面,可以使用 Webview API 使用标准的 HTML、CSS 和 JavaScript 构建自己的文档预览或 UI。
扩展创意
- 向文件资源管理器添加自定义上下文菜单操作。
- 在侧边栏中创建一个新的交互式 TreeView。
- 定义一个新的活动栏视图。
- 在状态栏中显示新信息。
- 使用
WebView
API 渲染自定义内容。 - 贡献源代码控制提供程序。
调试
您可以通过编写 调试器扩展 来利用 VS Code 的 调试 功能,将 VS Code 的调试 UI 连接到特定的调试器或运行时。
扩展创意
- 通过贡献一个 调试适配器实现,将 VS Code 的调试 UI 连接到调试器或运行时。
- 指定调试器扩展支持的语言。
- 为调试器使用的调试配置属性提供丰富的 IntelliSense 和悬停信息。
- 提供调试配置片段。
另一方面,VS Code 还提供了一组 调试扩展 API,您可以使用这些 API 在任何 VS Code 调试器的基础上实现与调试相关的功能,从而自动化用户的调试体验。
扩展创意
- 基于动态创建的调试配置启动调试会话。
- 跟踪调试会话的生命周期。
- 程序化地创建和管理断点。
UX 指南
为了帮助您的扩展无缝融入 VS Code 用户界面,请参考 UX 指南,您将在其中学习创建扩展 UI 的最佳实践以及遵循首选 VS Code 工作流的约定。
限制
我们对扩展施加了一些限制。以下是这些限制及其目的。
无 DOM 访问
扩展无法访问 VS Code UI 的 DOM。您 不能 编写一个扩展来应用自定义 CSS 到 VS Code 或向 VS Code UI 添加 HTML 元素。
在 VS Code 中,我们不断优化底层 Web 技术的使用,以提供始终可用且高度响应的编辑器,并将继续调整 DOM 的使用,因为这些技术和我们的产品在不断发展。为了确保扩展不会干扰 VS Code 的稳定性和性能,并且我们可以继续改进 VS Code 的 DOM 而不破坏现有扩展,我们在 扩展主机 进程中运行扩展并防止直接访问 DOM。
无自定义样式表
用户或扩展提供的自定义样式表会与 DOM 结构和类名相冲突。这些内容未记录在案,因为我们认为它们是内部的。为了进化、重构或改进 VS Code,我们需要自由更改用户界面。DOM 的任何更改都可能破坏现有的自定义样式表,导致样式表提供者沮丧,并给用户带来因损坏的样式表导致的 UI 错误的不良体验。
相反,VS Code 致力于提供一个经过良好设计的扩展 API 来支持 UI 自定义。该 API 有文档说明,附带工具和示例,并在所有即将发布的 VS Code 版本中保持稳定。
最后感谢阅读!欢迎关注我,微信公众号:倔强青铜三
。欢迎点赞
、收藏
、关注
,一键三连!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。