VSCode的vscode-python扩展是语言服务还是仅仅是扩展?

时间:2018-07-04 03:59:20

标签: python visual-studio-code vscode-extensions language-server-protocol

我想为VSCode编写一个扩展,该复用可以重用vscode-python扩展的重构/重命名功能。这样,当用户执行我的命令时,我的扩展名将对.py文件的变量进行重命名。我不知道vscode-python仅仅是扩展还是正在实现语言服务器协议LSP。以及如何调用vscode-python的重命名/重构功能。你能给我一些提示吗?非常感谢你!

1 个答案:

答案 0 :(得分:1)

看来,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)]
)