尝试以扩展 VS Code 中的代理模式!

编写 Python 扩展

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

Python 扩展为其他扩展提供了 API,以便它们能够与用户机器上可用的 Python 环境协同工作。请查看 @vscode/python-extension npm 模块,它包含类型和辅助工具,可用于从您的扩展访问这些 API。

Python 扩展模板

Python 扩展模板可帮助您开始为自己喜欢的 Python 工具构建 Visual Studio Code 扩展。这可以是代码检查器 (linter)、格式化程序 (formatter) 或代码分析工具,也可以是它们的组合。该模板将为您提供构建将工具集成到 VS Code 的扩展所需的基本构建块,并且它已经可以访问上述 Python API。

编程语言和框架

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

使用此模板时,您主要会处理代码的 Python 部分。您将使用语言服务器协议 (Language Server Protocol) 将您的工具与扩展部分集成。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.js 一同安装,请检查 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. 一个命令:My Tool: Restart Server(命令 ID:mytool.restart)。
  2. 以下设置
    • mytool.logLevel
    • mytool.args
    • mytool.path
    • mytool.importStrategy
    • mytool.interpreter
    • mytool.showNotification
  3. 以下扩展激活触发器
    • 在语言为 python 时。
    • 在打开的工作区中发现 .py 扩展名的文件时。
    • 在命令 mytool.restart 执行时。
  4. 用于日志记录的输出通道:输出 > My Tool

集成您的工具

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

示例

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

  • Pylint - 在文件 open(打开)、save(保存)和 close(关闭)时实现代码检查 (linting) 和代码操作 (Code Actions)。
  • Flake8 - 实现代码检查 (linting) 和代码操作 (Code Actions)。
  • Black Formatter - 集成 Black 格式化程序。
  • autopep8 - 集成 autopep8 格式化程序。
  • isort - 添加代码操作 (Code Actions) 以排序导入 (imports)。

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

扩展开发

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

如果您在开发过程中遇到问题,可以查看故障排除部分,以获得常见问题的帮助。

打包和发布

在发布扩展之前,您需要更新特定扩展的 package.json 字段(例如 publisherlicense)。您还需要更新辅助 Markdown 文件(CODE_OF_CONDUCT.mdCHANGELOG.md 等)。

一旦您的扩展准备好发布,可以使用 noxbuild-package 任务来创建 .vsix 文件,然后将其上传到您的扩展管理页面

如果您是 VS Code 扩展创建和发布的新手,我们建议您遵循主要 VS Code 扩展开发主题中概述的最佳实践。在这里,您将找到指导,帮助您的扩展在 Marketplace 上表现出色,以及如何成为经过验证的发布者,以便用户对安装您的扩展充满信心。