【问题标题】:Is vscode-python extension for VSCode is a Language Service or just an extension only?VSCode 的 vscode-python 扩展是语言服务还是只是扩展?
【发布时间】:2018-12-12 09:58:28
【问题描述】:

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

【问题讨论】:

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


    【解决方案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)]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多