[PYTHON] Verwenden Sie pyright mit CentOS7, emacs lsp-mode

Verwenden Sie pyright mit CentOS7, emacs lsp-mode

Verwendung von pyright im lsp-Modus von CentOS7, emacs.

Hauptcharaktere

--pyright: Microsoft Python-Sprachserver - https://github.com/microsoft/pyright

Umgebung

Fügen Sie node.js ein

pyright 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

Geben Sie 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.

Legen Sie das Paket in Emacs

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

Emacs konfigurieren

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

Verwenden Sie pyright mit CentOS7, emacs lsp-mode
Verwenden Sie Copyright mit Spacemacs
Beachten Sie, bis Sie Emacs mit WSL verwenden
Spielen Sie mit CentOS 8
Verwenden Sie RTX 3090 mit PyTorch
Verwenden Sie ansible mit cygwin
Verwenden Sie pipdeptree mit virtualenv
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mock mit Pytest
Verwenden Sie den Indikator mit pd.merge
Verwenden Sie Gentelella mit Django
Verwenden Sie Mecab mit Python 3
Verwenden Sie Tensorboard mit Chainer
Verwenden Sie DynamoDB mit Python
Verwenden Sie pip mit MSYS2
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Verwenden Sie TypeScript mit Django-Kompressor
Verwenden Sie WENIGER mit Django
Verwenden Sie MySQL mit Django
Verwenden Sie Enum mit SQLAlchemy
Verwenden Sie Tensorboard mit NNabla
Verwenden Sie GPS mit Edison
Verwenden Sie nim mit Jupyter
Verwenden Sie die Trello-API mit Python
Verwenden Sie gemeinsam genutzten Speicher mit gemeinsam genutzten Bibliotheken
Verwenden Sie benutzerdefinierte Tags mit PyYAML
Verwenden Sie Richtungsdiagramme mit networkx
Verwenden Sie TensorFlow mit Intellij IDEA
Verwenden Sie die Twitter-API mit Python
Verwenden Sie pip mit Jupyter Notebook
Verwenden Sie DATE_FORMAT mit dem SQLAlchemy-Filter
Verwenden Sie TUN / TAP mit Python
Verwenden Sie sqlite3 mit NAO (Pepper)
Verwenden Sie die load_extensions von sqlite mit Pyramid
Verwenden Sie Windows 10-Schriftarten mit WSL
Verwendung von Chainer mit Jetson TK1
Verwenden Sie SSL mit Sellerie + Redis
Verwenden Sie Cython mit Jupyter Notebook
Verwenden Sie Maxout + CNN mit Pylearn2
Verwenden Sie WDC-433SU2M2 mit Manjaro Linux
Verwenden Sie OpenBLAS mit numpy, scipy
Verwenden Sie die Unterschall-API mit Python3
Verwenden von Sonicwall NetExtener mit Systemd
Verwenden Sie prefetch_related bequem mit Django
Verwenden Sie einen AWS-Interpreter mit Pycharm
Verwenden von Bokeh mit IPython Notebook
Verwenden Sie Python-ähnliche Bereiche mit Rust