头图

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 版本中保持稳定。

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

倔强青铜三
41 声望0 粉丝