[PYTHON] Utiliser pyright avec CentOS7, emacs lsp-mode

Utiliser pyright avec CentOS7, emacs lsp-mode

Comment utiliser pyright en mode lsp de CentOS7, emacs.

Personnages principaux

--pyright: serveur de langage Microsoft Python - https://github.com/microsoft/pyright

environnement

Insérez 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

Entrez 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.

Mettez le paquet dans emacs

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-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/

Configurer emacs

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

Utiliser pyright avec CentOS7, emacs lsp-mode
Utiliser les droits d'auteur avec Spacemacs
Notez jusqu'à ce que vous utilisiez emacs avec WSL
Jouez avec CentOS 8
Utilisez RTX 3090 avec PyTorch
Utiliser ansible avec cygwin
Utiliser pipdeptree avec virtualenv
[Python] Utiliser JSON avec Python
Utilisez Mock avec pytest
Utiliser l'indicateur avec pd.merge
Utiliser Gentelella avec Django
Utiliser mecab avec Python 3
Utiliser tensorboard avec Chainer
Utiliser DynamoDB avec Python
Utiliser pip avec MSYS2
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utiliser TypeScript avec django-compresseur
Utilisez LESS avec Django
Utiliser MySQL avec Django
Utiliser Enum avec SQLAlchemy
Utiliser tensorboard avec NNabla
Utiliser le GPS avec Edison
Utilisez nim avec Jupyter
Utiliser l'API Trello avec python
Utiliser la mémoire partagée avec une bibliothèque partagée
Utiliser des balises personnalisées avec PyYAML
Utiliser des graphiques directionnels avec networkx
Utiliser TensorFlow avec Intellij IDEA
Utiliser l'API Twitter avec Python
Utiliser pip avec Jupyter Notebook
Utiliser DATE_FORMAT avec le filtre SQLAlchemy
Utiliser TUN / TAP avec Python
Utilisez sqlite3 avec NAO (Pepper)
Utilisez les load_extensions de sqlite avec Pyramid
Utiliser les polices Windows 10 avec WSL
Utilisation du chainer avec Jetson TK1
Utiliser SSL avec Celery + Redis
Utiliser Cython avec Jupyter Notebook
Utilisez Maxout + CNN avec Pylearn2
Utilisez WDC-433SU2M2 avec Manjaro Linux
Utilisez OpenBLAS avec numpy, scipy
Utiliser l'API subsonique avec python3
Utilisation de Sonicwall NetExtener avec Systemd
Utilisez prefetch_related commodément avec Django
Utiliser l'interpréteur AWS avec Pycharm
Utilisation de Bokeh avec IPython Notebook
Utiliser une plage de type Python avec Rust