在 VS Code 中试用

编写 Python 扩展

注意:如果你是 VS Code 扩展编写新手,建议你先阅读你的第一个扩展教程,并尝试创建一个简单的 Hello World 扩展。

Python 扩展提供了 API,供其他扩展与用户计算机上可用的 Python 环境进行交互。请查看 @vscode/python-extension npm 模块,它包含了从你的扩展访问这些 API 的类型和辅助工具。

Python 扩展模板

Python 扩展模板可帮助你开始为喜爱的 Python 工具构建 Visual Studio Code 扩展。这可能是一个代码检查器、格式化程序、代码分析工具,或者所有这些功能的组合。该模板将为你提供构建将你的工具集成到 VS Code 中所需的基本构建块,并且它已经可以访问上面提到的 Python API。

编程语言和框架

该扩展模板包含两部分:扩展部分和语言服务器部分。扩展部分用 TypeScript 编写,语言服务器部分则基于 `pygls`(Python 语言服务器)库用 Python 编写。

使用此模板时,你将主要在 Python 代码部分进行工作。你将使用 语言服务器协议将你的工具与扩展部分集成。`pygls` 目前支持 LSP 版本 3.16

TypeScript 部分负责与 VS Code 及其 UI 交互。扩展模板内置了一些可供你的工具使用的设置。如果你需要添加新设置来支持你的工具,你将需要处理一些 TypeScript 代码。扩展模板提供了一些设置的示例,你也可以查看我们团队为一些流行工具开发的扩展

要求

  1. VS Code 1.64.0 或更高版本
  2. Python 3.7 或更高版本
  3. node >= 14.19.0
  4. npm >= 8.3.0(`npm` 与 node 一起安装,检查 npm 版本,使用 `npm install -g npm@8.3.0` 进行更新)
  5. VS Code 的 Python 扩展

你应该知道如何创建和使用 Python 虚拟环境。

入门

要开始使用,请按照模板 README 中的说明进行操作。在那里你将学习如何使用该模板创建你的仓库,以及如何安装必要的工具(例如,nox 任务运行器)和可选依赖项(测试支持)。

README 中包含了最新的说明,并详细介绍了如何自定义扩展的 `package.json` 占位符(如 `<pythontool-module>`、`<pythontool-display-name>` 等)。

模板的功能

通过模板创建扩展后,它将包含以下扩展贡献。假设 `<pytool-module>` 已替换为 `mytool`,`<pytool-display-name>` 已替换为 `My Tool`

  1. 命令 **我的工具:重启服务器**(命令 ID:`mytool.restart`)。
  2. 以下设置
    • mytool.logLevel
    • mytool.args
    • mytool.path
    • mytool.importStrategy
    • mytool.interpreter
    • mytool.showNotification
  3. 以下扩展激活触发器
    • 在语言 `python` 上。
    • 当打开的工作区中找到带有 `.py` 扩展名的文件时。
    • 在命令 `mytool.restart` 上。
  4. 用于日志记录的输出通道 **输出** > **我的工具**。

集成你的工具

生成的 `bundled/tool/server.py` 文件是您进行大部分更改的地方。文件中的 `TODO` 注释指出了各种自定义点。在模板的其他位置(例如其他 Python 和 Markdown 文件)中也搜索 `TODO` 注释。您需要仔细阅读 LICENSE 文件,即使您打算保留 MIT 许可证。

示例

有几个从模板创建的示例实现

  • Pylint - 在文件 `open`、`save` 和 `close` 时实现代码检查和代码操作。
  • Flake8 - 实现代码检查和代码操作。
  • Black Formatter - 集成 Black 格式化程序。
  • autopep8 - 集成 autopep8 格式化程序。
  • isort - 添加代码操作以排序导入。

您还可以查阅语言服务器协议规范,以更好地理解 `pygls` 语言服务器集成。

扩展开发

模板的 README 详细介绍了模板中包含的开发周期支持。该模板包含命令和配置,以便您可以构建、运行、调试和测试您的扩展。

如果在开发过程中遇到问题,有一个故障排除部分可以帮助解决常见问题。

打包和发布

在发布扩展之前,您需要为您的特定扩展更新扩展 `package.json` 字段(例如 `publisher` 和 `license`)。您还需要更新辅助的 Markdown 文件(`CODE_OF_CONDUCT.md`、`CHANGELOG.md` 等)。

一旦您的扩展准备发布,有一个 `nox` `build-package` 任务可以创建一个 `.vsix` 文件,然后您可以将其上传到您的扩展管理页面

如果您是 VS Code 扩展创建和发布新手,我们建议您遵循主 VS Code 扩展编写主题中概述的最佳实践。在这里,您将找到指导,帮助您的扩展在市场上看起来很棒,以及如何成为经过验证的发布者,以便用户放心地安装您的扩展。