Skip to content

emacs-lsp/lsp-pyright

Repository files navigation

lsp-pyright

Build Status License MELPA Join the chat at https://gitter.im/emacs-lsp/lsp-mode

Table of Contents

lsp-mode client leveraging pyright and basedpyright language server.

Quickstart

(use-package lsp-pyright
  :ensure t
  :custom (lsp-pyright-langserver-command "pyright") ;; or basedpyright
  :hook (python-mode . (lambda ()
                          (require 'lsp-pyright)
                          (lsp))))  ; or lsp-deferred

Configuration

lsp-pyright supports the following configuration. Each configuration is described in detail in Pyright Settings.

  • basedpyright. / pyright.disableLanguageServices via lsp-pyright-disable-language-services
  • basedpyright. / pyright.disableOrganizeImports via lsp-pyright-disable-organize-imports
  • basedpyright. / pyright.disableTaggedHints via lsp-pyright-disable-tagged-hints
  • basedpyright. / python.typeCheckingMode via lsp-pyright-type-checking-mode
  • basedpyright.analysis.inlayHints.variableTypes via lsp-pyright-basedpyright-inlay-hints-variable-types
  • basedpyright.analysis.inlayHints.callArgumentNames via lsp-pyright-basedpyright-inlay-hints-call-argument-names
  • basedpyright.analysis.inlayHints.functionReturnTypes via lsp-pyright-basedpyright-inlay-hints-function-return-types
  • basedpyright.analysis.inlayHints.genericTypes via lsp-pyright-basedpyright-inlay-hints-generic-types
  • python.analysis.autoImportCompletions via lsp-pyright-auto-import-completions
  • python.analysis.diagnosticMode via lsp-pyright-diagnostic-mode
  • python.analysis.logLevel via lsp-pyright-log-level
  • python.analysis.autoSearchPaths via lsp-pyright-auto-search-paths
  • python.analysis.extraPaths via lsp-pyright-extra-paths
  • python.pythonPath via lsp-pyright-locate-python
  • python.venvPath via lsp-pyright-venv-path

Projects can be further configured using pyrightconfig.json file. For further details please see Pyright Configuration.

Choosing the correct version of Python

lsp-pyright will try its best to select the correct version of the python executable to use. It will do so by iteratively executing different search functions, going from most precise to most general.

The list and order of the list can be modified by customizing lsp-pyright-python-search-functions. By default the order is:

  • Look for a parent directory with a virtual-environment named .venv or venv via lsp-pyright--locate-python-venv.
  • Look for a python executable on your PATH via lsp-pyright--locate-python-python.