Emacs下如何使用lsp-mode對(duì)Python進(jìn)行補(bǔ)全

今天就跟大家聊聊有關(guān)Emacs下如何使用 lsp-mode對(duì)Python進(jìn)行補(bǔ)全,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供遂川網(wǎng)站建設(shè)、遂川做網(wǎng)站、遂川網(wǎng)站設(shè)計(jì)、遂川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、遂川企業(yè)網(wǎng)站模板建站服務(wù),10多年遂川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

LSP 是什么?

LSP 全稱是  Language Server protocol , 是由 Microsoft 主持開發(fā)的通用語言分析器協(xié)議. 最初是為 Visual Studio Code 開發(fā)的, 現(xiàn)在是一個(gè)開放的標(biāo)準(zhǔn)1. 它是一個(gè)  JSON-RPC -based 的協(xié)議2, 用于編輯器或 IDE 與提供語言分析補(bǔ)全等功能的服務(wù)的通信, 編輯器 / IDE 和語言服務(wù)甚至可以在不同的機(jī)器上1.  理查德·斯托曼 也支持該協(xié)議3.

準(zhǔn)備
Python 環(huán)境端

Python Language Server  就是 Python 語言服務(wù)的實(shí)現(xiàn), 遵從了 LSP 協(xié)議. 使用  jedi  提供了諸如補(bǔ)全等功能.

使用 pipenv 管理 Python 環(huán)境

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

Emacs 編輯器端

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

  • lsp-mode #Emacs 下 LSP 協(xié)議庫(kù)

  • company-lsp #使用 company 提供補(bǔ)全的后端

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

Python 和 Emacs 準(zhǔn)備階段結(jié)束.

Emacs 配置

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

(use-package lsp-mode
    :config
    (add-hook 'python-mode-hook
        (lambda ()
            (lsp-python-enable)))
    ;; 調(diào)用 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
    ;; 設(shè)置 company-lsp 為后端
    (push 'company-lsp company-backends))
其它

Python Language Server 可以不必在每個(gè)環(huán)境中都安裝, 以 pipenv 為例, 安裝 Python Language Server 到全局 Python 中, 然后在每個(gè)環(huán)境下 pipenv shell 進(jìn)入環(huán)境即可補(bǔ)全該環(huán)境下的包.

(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 使用, 如果沒找到相應(yīng)文件, 則會(huì)拋出找不到項(xiàng)目根目錄的 Warning, 并且是以 *Warnings* buffer 的形式顯示的, 在 lsp-mode 的 :config 后加入下面一句, 就可以用 Message 而不是 buffer 的形式顯示 Warning.

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

看完上述內(nèi)容,你們對(duì)Emacs下何使用 lsp-mode對(duì)Python進(jìn)行補(bǔ)全有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁(yè)名稱:Emacs下如何使用lsp-mode對(duì)Python進(jìn)行補(bǔ)全
分享網(wǎng)址:http://bm7419.com/article16/isggdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、域名注冊(cè)、云服務(wù)器、網(wǎng)頁(yè)設(shè)計(jì)公司品牌網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)