中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Emacs下如何使用 lsp-mode對Python進行補全

發布時間:2021-10-25 17:26:33 來源:億速云 閱讀:520 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關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_floder
pipenv install python-language-server[all]# pipenv install python-language-server[all] --skip-lock

Emacs 編輯器端

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

  • lsp-mode #Emacs 下 LSP 協議庫

  • company-lsp #使用 company 提供補全的后端

  • lsp-ui #提供諸如 flycheck 等功能

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進行補全有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富民县| 界首市| 射阳县| 大关县| 香港| 奉化市| 黑龙江省| 库伦旗| 怀安县| 天峨县| 镇赉县| 饶阳县| 浦县| 洛浦县| 海安县| 开远市| 崇义县| 宜兰县| 丰镇市| 望奎县| 峡江县| 遂昌县| 富裕县| 苏尼特右旗| 西峡县| 芜湖市| 虹口区| 宜兴市| 西藏| 阿巴嘎旗| 乐都县| 商丘市| 泗水县| 汾阳市| 子长县| 澄迈县| 南通市| 墨脱县| 许昌县| 黄冈市| 定西市|