vscode-python VSCode 的扩展名是语言服务还是只是一个扩展名?

Is vscode-python extension for VSCode is a Language Service or just an extension only?

我想为 VSCode 编写一个扩展,重用 vscode-python 扩展的 refactor/rename 功能。这样,当用户执行我的命令时,我的扩展程序将对 .py 文件的变量进行重命名。我不知道 vscode-python 是否只是一个扩展,或者它正在实施语言服务器协议 LSP。以及我如何调用 vscode-python 的 rename/refactor 函数。你能给我一些提示吗?非常感谢!

看来 Python 扩展正在直接实现 VSCode API 等功能,而不是使用 LSP 抽象层。例如,参见它的 renameProvider.ts,它实现了 vscode.RenameProvider:

https://github.com/Microsoft/vscode-python/blob/c976b6c98e34e041b7ee826ec22f9820ba90f8ac/src/client/providers/renameProvider.ts

我不认为它的实现方式对作为调用者的您来说真的很重要 - 看来您很幸运,最近刚刚添加了以编程方式触发重命名的功能,并将作为VSCode 1.25.0 / 6 月发布:

API to programmatically begin rename (#50856)

它也是 release notes for the upcoming version 的一部分,它给出了以下用法示例:

vscode.commands.executeCommand(
  'editor.action.rename',
  [vscode.Uri.file('/my/file.abc'), new vscode.Position(14, 7)]
)