Comment utiliser pyright en mode lsp de CentOS7, emacs.
--pyright
: serveur de langage Microsoft Python
- https://github.com/microsoft/pyright
lsp-mode
: mode mineur emacs pour utiliser la fonction de serveur de langue avec le protocole de serveur de langue.
--lsp-ui-mode
: mode mineur emacs qui ajoute des fonctions d'interface utilisateur telles que l'affichage contextuel aux fonctions de lsp-mode.
--python-mode
: mode majeur emacs pour python.node.js
pyright
est écrit dans node.js.
Vous pouvez regarder ici. https://github.com/nodesource/distributions/blob/master/README.md#enterprise-linux-based-distributions
Si vous ne souhaitez pas ajouter le référentiel yum, téléchargez rpm à partir d'ici et placez-le. https://rpm.nodesource.com/pub_14.x/el/7/x86_64/
$ node --version
v14.7.0
$ npm --version
6.14.5
pyright
$ npm -g install pyright
$ pyright --version
pyright 1.1.61
C'est pyright-langserver
qui est lancé depuis emacs.
pyright-langserver
est installé avecpyright
.
lsp-pyright, lsp-mode, lsp-ui, company, imenu-list, flycheck peuvent tous être installés à partir de melpa.
M-x package-install lsp-mode
...
lsp-mode
https://emacs-lsp.github.io/lsp-mode/
Un package pour utiliser les fonctionnalités de lsp avec emacs. Pas pour Python, mais pour un usage général.
Lorsqu'il est utilisé en Python, il est utilisé comme un mode mineur de python-mode
.
«Company» est recommandé pour la complétion du code. http://company-mode.github.io/
company-lsp
n'est plus pris en charge dans lsp-mode 7.0.1. «entreprise» suffit.
https://github.com/emacs-lsp/lsp-mode/blob/master/CHANGELOG.org
Dropped support for company-lsp, the suggested provider is company-capf.
lsp-ui
Un paquet qui assiste lsp-mode
.
lsp-ui-sideline
lsp-ui-peek
lsp-ui-doc
lsp-ui-imenu
lsp-pyright
https://github.com/emacs-lsp/lsp-python-ms
Un package complémentaire qui vous permet d'utiliser pyright
en mode lsp.
company
Un package qui fournit la complétion de code de type IntelliSense. La complémentation est améliorée en incluant divers packages backend.
lsp-mode (ou plutôt language-server) fait office de backend pour l'entreprise.
imenu-list
C'est un paquet qui affiche le contenu de ʻimenu` dans un cadre latéral de type IDE.
flycheck
Un framework linter générique.
https://www.flycheck.org/en/latest/
J'utilise ʻuse-package. Je l'ai coupé et collé à partir de mon ʻinit.el
, donc cela peut ne pas avoir de sens.
(use-package python
:mode
("\\.py\\'" . python-mode)
)
(use-package lsp-mode
:config
;; .venv, .mypy_Exclure le cache de la montre
(dolist (dir '(
"[/\\\\]\\.venv$"
"[/\\\\]\\.mypy_cache$"
"[/\\\\]__pycache__$"
))
(push dir lsp-file-watch-ignored))
;; lsp-Voir ici pour les paramètres de mode.
;; https://emacs-lsp.github.io/lsp-mode/page/settings/
(setq lsp-auto-configure t)
(setq lsp-enable-completion-at-point t)
;; imenu-Utilisez la liste, donc n'utilisez pas l'intégration imenu
(setq lsp-enable-imenu nil)
;;Activer l'intégration avec référence croisée
;; xref-find-definitions
;; xref-find-references
(setq lsp-enable-xref t)
;;Utilisez flycheck comme cadre de linter
(setq lsp-diagnostics-provider :flycheck)
;;Affichage des informations de fonction dans un mini tampon
(setq lsp-eldoc-enable-hover t)
;; nii:Faire des informations de fonction dans la signature du mini-tampon uniquement
;; t:Informations de fonction dans le mini tampon, doc-Afficher le corps de la chaîne
(setq lsp-eldoc-render-all nil)
;; breadcrumb
;;Affichez la liste des miettes de pain.
(setq lsp-headerline-breadcrumb-enable t)
(setq lsp-headerline-breadcrumb-segments '(project file symbols))
;; snippet
(setq lsp-enable-snippet t)
;;Définition de la fonction de crochet
;; python-Pour le mode, lsp-configuration du mode
(defun lsp/python-mode-hook
()
(when (fboundp 'company-mode)
;;Entreprise de configuration
(setq
;;Activer la complétion avec un caractère
company-minimum-prefix-length 1
;; default is 0.2
company-idle-delay 0.0
)
)
)
:commands (lsp lsp-deferred)
:hook
(python-mode . lsp) ; python-lsp en mode-Activer le mode
(python-mode . lsp/python-mode-hook) ; python-Configurer une fonction de crochet pour le mode
)
(use-package lsp-pyright
:init
(defun lsp-pyright/python-mode-hook
()
;; lsp-Activer le droit d'auteur
(require 'lsp-pyright)
(when (fboundp 'flycheck-mode)
;;peluche avec droit d'auteur, donc python-Je n'utilise pas mypy.
(setq flycheck-disabled-checkers '(python-mypy))
)
)
:hook (python-mode . lsp-pyright/python-mode-hook)
)
(use-package lsp-ui
:after lsp-mode
:config
;; ui-Activer l'aperçu
(setq lsp-ui-peek-enable t)
;;Même s'il n'y a qu'un seul candidat, peek est toujours affiché.
(setq lsp-ui-peek-always-show t)
;;Afficher des informations telles que le contrôle automatique sur la ligne de touche
(setq lsp-ui-sideline-show-diagnostics t)
;;Afficher les actions de code sur la ligne de touche
(setq lsp-ui-sideline-show-code-actions t)
;;Ce qui est affiché lors du survol est affiché sur la ligne de touche au lieu du survol
;;(setq lsp-ui-sideline-show-hover t)
:bind
(:map lsp-ui-mode-map
;;Xréf par défaut-find-Avec les définitions, vous pouvez sauter, mais ui-Je ne peux pas utiliser peek.
("M-." . lsp-ui-peek-find-definitions)
;;Xréf par défaut-find-Avec des références, vous pouvez sauter, mais ui-Je ne peux pas utiliser peek.
("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