JupyterLab的代码辅助,支持语言服务器协议
项目描述
为Jupyter(Lab)集成的语言服务器协议
安装 | 配置 | 变更日志 | 路线图 | 贡献 | 扩展
功能
示例显示Python代码,但大多数功能也适用于R、bash、typescript和许多其他语言。
悬停
将鼠标悬停在代码片段上;如果出现下划线,您可以按 Ctrl 获取包含函数/类签名、模块文档或其他由语言服务器提供的任何信息的工具提示
诊断
关键错误有红色下划线,警告是橙色等。将鼠标悬停在带下划线的代码上,以查看更详细的消息
转到定义和引用
使用上下文菜单条目,或 Alt + :computer_mouse: 跳转到定义/引用(您可以在设置中将其更改为 Ctrl/⌘);使用 Alt + o 返回。
突出显示引用
将鼠标放在变量、函数等上,所有使用情况都会被突出显示
自动补全和连续提示
- 某些字符,例如Python中的'.'(点),会自动触发补全。
- 您可以通过启用
continuousHinting
设置来选择在您键入时接收补全建议。
自动签名建议
函数签名将自动显示
无内核自动补全
无运行内核的高级静态分析自动补全
运行时内核建议仍然存在
当有内核可用时,内核建议(如字典的键和DataFrame的列)将与语言服务器(在笔记本中)的建议合并。
如果内核响应太慢,只会显示语言服务器建议(默认阈值:0.6秒)。您可以在completion
部分的disableCompletionsFrom
中添加"Kernel"
来停用内核建议;或者如果您仅想使用内核补全,可以将"LSP"
添加到相同的设置;或者如果您喜欢在 hardcore 模式下编码且不希望有任何补全,或者如果已添加其他提供者,可以同时添加两者。
您可以通过在高级设置中的completion
部分添加"Kernel"
来停用内核建议。如果您仅想使用内核补全,可以将"LSP"
添加到相同的设置;或者如果您喜欢在 hardcore 模式下编码且不希望有任何补全,或者如果另一个提供者已被添加,可以同时添加两者。
重命名
在笔记本和文件编辑器中重命名变量、函数等。使用上下文菜单选项或F2快捷键调用。
诊断面板
使用诊断面板对诊断进行排序并在之间跳转。在JupyterLab命令调色板中搜索“显示诊断面板”或在上下文菜单中打开它。在面板中的行上使用上下文菜单来过滤诊断或复制其消息。
先决条件
您需要安装以下两个
- 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也是推荐的。
-
安装python 3
conda install -c conda-forge python=3
-
安装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-python
或jupyter-lsp-r
来安装服务器扩展和语言服务器。 -
安装您选择的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服务器都应该在一些额外的配置之后工作。
注意:访问您安装的每个服务器的存储库是值得的,因为许多提供额外的配置选项。
-
重启JupyterLab
如果在您安装扩展时 JupyterLab 正在运行,则必须重新启动服务器扩展以及任何语言服务器才能被 JupyterLab 识别。
-
(可选,仅限 IPython 用户)为了提高自动补全的性能,请在 IPython 中禁用 Jedi(Python 的 LSP 服务器也使用 Jedi)。您可以使用以下方法暂时禁用:
%config Completer.use_jedi = False
或永久性地通过在您的
ipython_config.py
文件 中设置c.Completer.use_jedi = False
。 -
(可选,仅限 Linux/OSX)作为安全措施,默认情况下 Jupyter 服务器只允许访问 Jupyter 根目录下的文件(启动 Jupyter 服务器的位置)。因此,为了允许
jupyterlab-lsp
导航到外部文件,例如系统范围内安装的包或虚拟环境(conda
、pip
等)内的库,需要绕过此访问控制机制:在您的 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aeac84093ada6d20ef57ae0e97811cc5796a0cab7237b32f8eddf993c0bb0356 |
|
MD5 | 9f416d6db3d85b367256b5f42d1b586d |
|
BLAKE2b-256 | b849b6bc55457ebac72928c9db6e5c23c6e0a1d3a5640fc4b4abb4275f10ef7c |
jupyterlab_lsp-5.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 290f473b001c7ebe1edfe391a545f50bc4aefe89d4a64db4f17e8de301db3a37 |
|
MD5 | 26f7f75d58673fcddc10db23069eb020 |
|
BLAKE2b-256 | c7ab706cb5b018c6a8f32cea5c0d7b55d77f42d78410c4dcbb25b11b210cc972 |