跳转到主要内容

JupyterLab的代码辅助,支持语言服务器协议

项目描述

为Jupyter(Lab)集成的语言服务器协议

tests Documentation Status Python Demo R Demo Julia Demo Binder

安装 | 配置 | 变更日志 | 路线图 | 贡献 | 扩展

功能

示例显示Python代码,但大多数功能也适用于R、bash、typescript和许多其他语言

悬停

将鼠标悬停在代码片段上;如果出现下划线,您可以按 Ctrl 获取包含函数/类签名、模块文档或其他由语言服务器提供的任何信息的工具提示

hover

诊断

关键错误有红色下划线,警告是橙色等。将鼠标悬停在带下划线的代码上,以查看更详细的消息

inspections

转到定义和引用

使用上下文菜单条目,或 Alt + :computer_mouse: 跳转到定义/引用(您可以在设置中将其更改为 Ctrl/);使用 Alt + o 返回。

jump

突出显示引用

将鼠标放在变量、函数等上,所有使用情况都会被突出显示

自动补全和连续提示

  • 某些字符,例如Python中的'.'(点),会自动触发补全。
  • 您可以通过启用continuousHinting设置来选择在您键入时接收补全建议。

invoke

自动签名建议

函数签名将自动显示

signature

无内核自动补全

无运行内核的高级静态分析自动补全

autocompletion

运行时内核建议仍然存在

当有内核可用时,内核建议(如字典的键和DataFrame的列)将与语言服务器(在笔记本中)的建议合并。

如果内核响应太慢,只会显示语言服务器建议(默认阈值:0.6秒)。您可以在completion部分的disableCompletionsFrom中添加"Kernel"来停用内核建议;或者如果您想使用内核补全,可以将"LSP"添加到相同的设置;或者如果您喜欢在 hardcore 模式下编码且不希望有任何补全,或者如果已添加其他提供者,可以同时添加两者。

您可以通过在高级设置中的completion部分添加"Kernel"来停用内核建议。如果您想使用内核补全,可以将"LSP"添加到相同的设置;或者如果您喜欢在 hardcore 模式下编码且不希望有任何补全,或者如果另一个提供者已被添加,可以同时添加两者。

重命名

在笔记本和文件编辑器中重命名变量、函数等。使用上下文菜单选项或F2快捷键调用。

rename

诊断面板

使用诊断面板对诊断进行排序并在之间跳转。在JupyterLab命令调色板中搜索“显示诊断面板”或在上下文菜单中打开它。在面板中的行上使用上下文菜单来过滤诊断或复制其消息。

panel

先决条件

您需要安装以下两个

  • JupyterLab >=4.1.0,<5.0.0a0
  • Python 3.8+

此外,如果您想使用javascript、html、markdown或任何其他NodeJS-based语言服务器,您还需要安装适当的NodeJS版本。

注意:JupyterLab 2.x的安装需要不同的步骤,请参阅扩展版本 2.x的文档。

安装

有关更详细的安装说明,请参阅文档

对于当前稳定版本,建议以下步骤。使用python virtualenv或conda env也是推荐的。

  1. 安装python 3

    conda install -c conda-forge python=3
    
  2. 安装JupyterLab和扩展

    conda install -c conda-forge 'jupyterlab>=4.1.0,<5.0.0a0' jupyterlab-lsp
    # or
    pip install 'jupyterlab>=4.1.0,<5.0.0a0' jupyterlab-lsp
    

    注意:jupyterlab-lsp提供服务器扩展和lab扩展。

    注意:使用conda,您可以利用捆绑包:jupyter-lsp-pythonjupyter-lsp-r来安装服务器扩展和语言服务器。

  3. 安装您选择的LSP服务器;例如,对于Python(pylsp)和R(languageserver)服务器

    pip install 'python-lsp-server[all]'
    R -e 'install.packages("languageserver")'
    

    或从conda-forge

    conda install -c conda-forge python-lsp-server r-languageserver
    

    请参阅我们完整的支持的语言服务器列表,其中包含常见包管理器(npm/pip/conda)的安装提示。一般来说,Microsoft列表中的任何LSP服务器都应该在一些额外的配置之后工作。

    注意:访问您安装的每个服务器的存储库是值得的,因为许多提供额外的配置选项。

  4. 重启JupyterLab

    如果在您安装扩展时 JupyterLab 正在运行,则必须重新启动服务器扩展以及任何语言服务器才能被 JupyterLab 识别。

  5. (可选,仅限 IPython 用户)为了提高自动补全的性能,请在 IPython 中禁用 Jedi(Python 的 LSP 服务器也使用 Jedi)。您可以使用以下方法暂时禁用:

    %config Completer.use_jedi = False
    

    或永久性地通过在您的 ipython_config.py 文件 中设置 c.Completer.use_jedi = False

  6. (可选,仅限 Linux/OSX)作为安全措施,默认情况下 Jupyter 服务器只允许访问 Jupyter 根目录下的文件(启动 Jupyter 服务器的位置)。因此,为了允许 jupyterlab-lsp 导航到外部文件,例如系统范围内安装的包或虚拟环境(condapip 等)内的库,需要绕过此访问控制机制:在您的 Jupyter 根目录内创建一个名为 .lsp_symlink 的符号链接,指向系统根目录 /

    ln -s / .lsp_symlink
    

    由于此符号链接是隐藏文件,Jupyter 服务器必须被指示提供隐藏文件。您可以使用相应的命令行标志

    jupyter lab --ContentsManager.allow_hidden=True
    

    或者,作为替代,在您的 jupyter_server_config.py 中设置相应的设置。

    欢迎提供实现自定义 ContentsManager 的帮助,这将启用无需符号链接即可导航到外部文件。

配置服务器

可以使用 JupyterLab 的高级设置编辑器编辑服务器配置(设置 > 高级设置编辑器)。有关每个服务器的特定设置,请参阅语言服务器表。示例设置可能包括:

{
  "language_servers": {
    "pylsp": {
      "serverSettings": {
        "pylsp.plugins.pydocstyle.enabled": true,
        "pylsp.plugins.pyflakes.enabled": false,
        "pylsp.plugins.flake8.enabled": true
      }
    },
    "r-languageserver": {
      "serverSettings": {
        "r.lsp.debug": false,
        "r.lsp.diagnostics": false
      }
    }
  }
}

serverSettings 键指定发送给语言服务器的配置。这些可以使用类似于上面的字符串化点访问器(使用 VSCode 风格)编写,或作为嵌套 JSON 对象,例如:

{
  "language_servers": {
    "pylsp": {
      "serverSettings": {
        "pylsp": {
          "plugins": {
            "pydocstyle": {
              "enabled": true
            },
            "pyflakes": {
              "enabled": false
            },
            "flake8": {
              "enabled": true
            }
          }
        }
      }
    }
  }
}

其他配置方法

一些语言服务器,如 pylsp,提供除语言服务器配置消息(使用高级设置编辑器访问)之外的其他配置方法。例如,pylsp 允许用户使用本地配置文件配置服务器。您可以在其中更改服务器插件(如 pycodestyle)的检查/诊断。

具体的配置细节将在操作系统之间有所不同(请参阅pycodestyle 文档的配置部分),但以 Linux 为例,您只需创建一个名为 ~/.config/pycodestyle 的文件,它可能看起来像这样:

[pycodestyle]
ignore = E402, E703
max-line-length = 120

在上面的示例中

  • 忽略 E402 允许不在文件顶部的导入
  • 忽略 E703 允许终止分号(对 matplotlib 图表很有用)
  • 最大允许的行长度增加到 120。

更改配置后,您可能需要重新启动 JupyterLab,并且请注意,配置错误可能会阻止服务器正常工作。

再次提醒,请查看 pycodestyle 文档以了解特定的错误代码,并根据需要检查其他功能提供者和语言服务器的配置。

致谢

如果没有在 wylieconlon/lsp-editor-adapter 上的出色初始工作,这一切都是不可能的。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。

源代码发行版

jupyterlab-lsp-5.1.0.tar.gz (760.3 kB 查看哈希值)

上传时间 源代码

构建发行版

jupyterlab_lsp-5.1.0-py3-none-any.whl (1.6 MB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面