Verwendung von pyright im lsp-Modus von CentOS7, emacs.
--pyright
: Microsoft Python-Sprachserver
- https://github.com/microsoft/pyright
lsp-mode
: Emacs-Minor-Modus zur Verwendung der Funktion des Sprachservers mit dem Sprachserverprotokoll.
--lsp-ui-mode
: Emacs-Minor-Modus, der den Funktionen des lsp-Modus UI-Funktionen wie Popup-Anzeige hinzufügt.
--python-mode
: Emacs-Hauptmodus für Python.node.js
einpyright
ist in node.js geschrieben.
Sie können sich hier umsehen. https://github.com/nodesource/distributions/blob/master/README.md#enterprise-linux-based-distributions
Wenn Sie das yum-Repository nicht hinzufügen möchten, laden Sie rpm von hier herunter und fügen Sie es ein. https://rpm.nodesource.com/pub_14.x/el/7/x86_64/
$ node --version
v14.7.0
$ npm --version
6.14.5
pyright
ein$ npm -g install pyright
$ pyright --version
pyright 1.1.61
Es ist pyright-langserver
, das von emacs gestartet wird.
pyright-langserver
wird mit pyright
installiert.
lsp-pyright, lsp-mode, lsp-ui, firma, imenu-liste, flycheck können alle von melpa installiert werden.
M-x package-install lsp-mode
...
lsp-mode
https://emacs-lsp.github.io/lsp-mode/
Ein Paket zur Verwendung von LSP-Funktionen mit Emacs. Nicht für Python, sondern für allgemeine Zwecke. Wenn es in Python verwendet wird, wird es als Nebenmodus des Python-Modus verwendet.
Für die Code-Vervollständigung wird "Firma" empfohlen. http://company-mode.github.io/
company-lsp
wird im lsp-mode 7.0.1 nicht mehr unterstützt. "Gesellschaft" ist genug.
https://github.com/emacs-lsp/lsp-mode/blob/master/CHANGELOG.org
Dropped support for company-lsp, the suggested provider is company-capf.
lsp-ui
Ein Paket, das den "LSP-Modus" unterstützt.
lsp-ui-sideline
lsp-ui-peek
lsp-ui-doc
lsp-ui-imenu
imenu
, um die Baumhierarchie der Klasse und Methode der zu bearbeitenden Datei anzuzeigen.lsp-pyright
https://github.com/emacs-lsp/lsp-python-ms
Ein Add-On-Paket, mit dem Sie "pyright" im lsp-Modus verwenden können.
company
Ein Paket, das eine IntelliSense-ähnliche Code-Vervollständigung bietet. Die Ergänzung wird durch verschiedene Backend-Pakete verbessert.
Der lsp-Modus (oder besser gesagt der Sprachserver) fungiert als Backend für das Unternehmen.
imenu-list
Ein Paket, das den Inhalt von "imenu" in einem IDE-ähnlichen Seitenrahmen anzeigt.
flycheck
Ein generisches Linter-Framework.
https://www.flycheck.org/en/latest/
Ich benutze use-package
.
Ich schneide es aus meiner init.el
aus und füge es ein, sodass es möglicherweise keinen Sinn ergibt.
(use-package python
:mode
("\\.py\\'" . python-mode)
)
(use-package lsp-mode
:config
;; .venv, .mypy_Cache von der Uhr ausschließen
(dolist (dir '(
"[/\\\\]\\.venv$"
"[/\\\\]\\.mypy_cache$"
"[/\\\\]__pycache__$"
))
(push dir lsp-file-watch-ignored))
;; lsp-Hier finden Sie die Moduseinstellungen.
;; https://emacs-lsp.github.io/lsp-mode/page/settings/
(setq lsp-auto-configure t)
(setq lsp-enable-completion-at-point t)
;; imenu-Verwenden Sie die Liste, verwenden Sie also keine imenu-Integration
(setq lsp-enable-imenu nil)
;;Aktivieren Sie die Integration mit Querverweisen
;; xref-find-definitions
;; xref-find-references
(setq lsp-enable-xref t)
;;Verwenden Sie den Flycheck als Linter-Framework
(setq lsp-diagnostics-provider :flycheck)
;;Funktionsinformationsanzeige im Minipuffer
(setq lsp-eldoc-enable-hover t)
;; nii:Machen Sie Funktionsinformationen nur in der Minibuffer-Signatur
;; t:Funktionsinformationen im Minipuffer, Dok-Zeigen Sie den Zeichenfolgenkörper an
(setq lsp-eldoc-render-all nil)
;; breadcrumb
;;Zeigen Sie die Brotkrumenliste an.
(setq lsp-headerline-breadcrumb-enable t)
(setq lsp-headerline-breadcrumb-segments '(project file symbols))
;; snippet
(setq lsp-enable-snippet t)
;;Hook-Funktionsdefinition
;; python-Für den Modus lsp-Modus Konfiguration
(defun lsp/python-mode-hook
()
(when (fboundp 'company-mode)
;;Firma konfigurieren
(setq
;;Aktiviere die Vervollständigung mit einem Zeichen
company-minimum-prefix-length 1
;; default is 0.2
company-idle-delay 0.0
)
)
)
:commands (lsp lsp-deferred)
:hook
(python-mode . lsp) ; python-lsp im Modus-Aktivierungsmodus
(python-mode . lsp/python-mode-hook) ; python-Richten Sie eine Hook-Funktion für den Modus ein
)
(use-package lsp-pyright
:init
(defun lsp-pyright/python-mode-hook
()
;; lsp-Copyright aktivieren
(require 'lsp-pyright)
(when (fboundp 'flycheck-mode)
;;Flusen mit Copyright, also Python-Ich benutze mypy nicht.
(setq flycheck-disabled-checkers '(python-mypy))
)
)
:hook (python-mode . lsp-pyright/python-mode-hook)
)
(use-package lsp-ui
:after lsp-mode
:config
;; ui-Peek aktivieren
(setq lsp-ui-peek-enable t)
;;Auch wenn es nur einen Kandidaten gibt, wird immer ein Blick angezeigt.
(setq lsp-ui-peek-always-show t)
;;Zeigen Sie Informationen wie Flycheck an der Seitenlinie an
(setq lsp-ui-sideline-show-diagnostics t)
;;Code-Aktionen an der Seitenlinie anzeigen
(setq lsp-ui-sideline-show-code-actions t)
;;Was auf dem Hover angezeigt wird, wird auf der Seitenlinie anstelle des Hovers angezeigt
;;(setq lsp-ui-sideline-show-hover t)
:bind
(:map lsp-ui-mode-map
;;Standard xref-find-Mit Definitionen können Sie springen, aber ui-Ich kann Peek nicht verwenden.
("M-." . lsp-ui-peek-find-definitions)
;;Standard xref-find-Mit Referenzen kann man springen, aber ui-Ich kann Peek nicht verwenden.
("M-?" . lsp-ui-peek-find-references)
)
:hook
(lsp-mode . lsp-ui-mode)
)
(use-package imenu-list)
(use-package company
:init
(global-company-mode t)
)
(use-package flycheck
:init
(global-flycheck-mode)
)
Recommended Posts