文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Emacs下如何使用 lsp-mode对Python进行补全

2023-06-02 09:13

关注

今天就跟大家聊聊有关Emacs下如何使用 lsp-mode对Python进行补全,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

LSP 是什么?

LSP 全称是 Language Server protocol, 是由 Microsoft 主持开发的通用语言分析器协议. 最初是为 Visual Studio Code 开发的, 现在是一个开放的标准1. 它是一个 JSON-RPC-based 的协议2, 用于编辑器或 IDE 与提供语言分析补全等功能的服务的通信, 编辑器 / IDE 和语言服务甚至可以在不同的机器上1. 理查德·斯托曼也支持该协议3.

准备
Python 环境端

Python Language Server 就是 Python 语言服务的实现, 遵从了 LSP 协议. 使用 jedi 提供了诸如补全等功能.

使用 pipenv 管理 Python 环境

cd project_floderpipenv install python-language-server[all]# pipenv install python-language-server[all] --skip-lock

Emacs 编辑器端

需要安装以下几个包, 如果使用 elpa 管理包, 添加 melpa 源后 M-x package-install <RET>安装即可

Python 和 Emacs 准备阶段结束.

Emacs 配置

使用以下配置需要安装 use-package

(use-package lsp-mode    :config    (add-hook 'python-mode-hook        (lambda ()            (lsp-python-enable)))    ;; 调用 pyls 既上边安装的 Python Language Server    ;; 不需要安装 lsp-python, 以下几行提供与 lsp-python 相同的功能    (lsp-define-stdio-client lsp-python "python"            (lsp-make-traverser #'(lambda (dir)                        (directory-files                        dir                        nil                        "\\(__init__\\|setup\\)\\.py\\|Pipfile")))            '("pyls")))(use-package lsp-imenu    :init    ;; 启用 lsp-imenu 集成    (add-hook 'lsp-after-open-hook 'lsp-enable-imenu))(use-package lsp-ui    :init    ;; 启用 lsp-ui    (add-hook 'lsp-mode-hook 'lsp-ui-mode)    ;; 启用 flycheck    (add-hook 'python-mode-hook 'flycheck-mode))(use-package company-lsp    :config    ;; 设置 company-lsp 为后端    (push 'company-lsp company-backends))
其它

Python Language Server 可以不必在每个环境中都安装, 以 pipenv 为例, 安装 Python Language Server 到全局 Python 中, 然后在每个环境下 pipenv shell 进入环境即可补全该环境下的包.

(lsp-define-stdio-client lsp-python "python"            (lsp-make-traverser #'(lambda (dir)                        (directory-files                        dir                        nil                        "\\(__init__\\|setup\\)\\.py\\|Pipfile")))            '("pyls"))

这段配置说明了需要在目录下能找到 __init__.py 等文件后将其作为 project root 使用, 如果没找到相应文件, 则会抛出找不到项目根目录的 Warning, 并且是以 *Warnings* buffer 的形式显示的, 在 lsp-mode 的 :config 后加入下面一句, 就可以用 Message 而不是 buffer 的形式显示 Warning.

(setq lsp-message-project-root-warning t)

看完上述内容,你们对Emacs下何使用 lsp-mode对Python进行补全有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯