200ok-ch/counsel-jq@153d70b -> 200ok-ch/counsel-jq@8cadd2e Andersbakken/rtags@63f18ac -> Andersbakken/rtags@65113e2 Groovy-Emacs-Modes/groovy-emacs-modes@26da902 -> Groovy-Emacs-Modes/groovy-emacs-modes@99eaf70 NixOS/nix-mode@0023fc5 -> NixOS/nix-mode@3cca5b6 ProofGeneral/PG@f0f0476 -> ProofGeneral/PG@bc86736 Raku/raku-mode@8a6e17f -> Raku/raku-mode@7496ad3 StanfordLegion/terra-mode@1e5e824 -> StanfordLegion/terra-mode@eab9e59 TheBB/company-reftex@291c283 -> TheBB/company-reftex@42eb98c agda/agda@ecb9323 -> agda/agda@af9c4b9 ananthakumaran/tide@ad6fa78 -> ananthakumaran/tide@ccff099 asok/projectile-rails@f1fe6e8 -> asok/projectile-rails@6a18ada beancount/beancount-mode@3c04745 -> beancount/beancount-mode@02fe03e brotzeit/rustic@ed68fd3 -> brotzeit/rustic@6ca73bb cdominik/cdlatex@adf96ba -> cdominik/cdlatex@614a8d9 clojure-emacs/clojure-mode@a14671e -> clojure-emacs/clojure-mode@3e426b3 cython/cython@9decfca -> cython/cython@fae33cf dgutov/robe@126650a -> dgutov/robe@e1304d1 diml/utop@711c246 -> diml/utop@c87b8b2 dominikh/go-mode.el@49a5380 -> dominikh/go-mode.el@3497434 elixir-editors/emacs-elixir@0212b06 -> elixir-editors/emacs-elixir@6bbc1e5 emacs-csharp/csharp-mode@f977800 -> emacs-csharp/csharp-mode@093f0f2 emacs-ess/ESS@126d344 -> emacs-ess/ESS@4fefd0f emacs-lsp/lsp-dart@f3b70ec -> emacs-lsp/lsp-dart@01d89d4 emacs-lsp/lsp-haskell@7efbef3 -> emacs-lsp/lsp-haskell@eb37ac4 emacs-lsp/lsp-java@9685334 -> emacs-lsp/lsp-java@b66a075 emacs-lsp/lsp-metals@51a89c1 -> emacs-lsp/lsp-metals@9f82ebe emacs-lsp/lsp-pyright@65fb141 -> emacs-lsp/lsp-pyright@71a7976 emacs-lsp/lsp-sourcekit@aafa987 -> emacs-lsp/lsp-sourcekit@ae4aa87 emacs-php/php-mode@a2bca9b -> emacs-php/php-mode@cbf2723 emacs-php/phpactor.el@80788a8 -> emacs-php/phpactor.el@272217f emacs-straight/auctex@1472d1d -> emacs-straight/auctex@ea410dc erlang/otp@94c9738 -> erlang/otp@645ea81 ethereum/emacs-solidity@b4fd719 -> ethereum/emacs-solidity@5f6ef31 factor/factor@5bfeab6 -> factor/factor@b989a86 fsharp/emacs-fsharp-mode@78898a1 -> fsharp/emacs-fsharp-mode@93b1fbc godotengine/emacs-gdscript-mode@16c631c -> godotengine/emacs-gdscript-mode@b7bfa6a greghendershott/racket-mode@5115c47 -> greghendershott/racket-mode@7f12cb1 haskell/haskell-mode@1baa12a -> haskell/haskell-mode@98ba392 hhvm/hack-mode@847fd91 -> hhvm/hack-mode@f9315be hlissner/emacs-pug-mode@685fd34 -> hlissner/emacs-pug-mode@d080904 hvesalai/emacs-sbt-mode@0bdc36b -> hvesalai/emacs-sbt-mode@e29464a idris-hackers/idris-mode@80aabd2 -> idris-hackers/idris-mode@f52ad0b immerrr/lua-mode@2d9a468 -> immerrr/lua-mode@2bd9077 iyefrat/evil-tex@5f0d6fb -> iyefrat/evil-tex@87445d4 jcollard/elm-mode@e9fcf9c -> jcollard/elm-mode@f2e2d00 joaotavora/sly@5966d68 -> joaotavora/sly@41f4d65 jorgenschaefer/pyvenv@9b3678b -> jorgenschaefer/pyvenv@045ff94 jrblevin/markdown-mode@ac9ea26 -> jrblevin/markdown-mode@359347b jwiegley/emacs-async@d7e7f79 -> jwiegley/emacs-async@9a8cd0c jyp/attrap@778382e -> jyp/attrap@a5bc695 leanprover/lean-mode@5c50338 -> leanprover/lean-mode@bf32bb9 ledger/ledger-mode@32fef09 -> ledger/ledger-mode@19b84dc nathankot/company-sourcekit@abf9bc5 -> nathankot/company-sourcekit@a1860ad necaris/conda.el@dce431b -> necaris/conda.el@6db0720 non-Jedi/eglot-jl@84cff9d -> non-Jedi/eglot-jl@49f170e nonsequitur/inf-ruby@c6990a6 -> nonsequitur/inf-ruby@03dd9c9 ocaml-ppx/ocamlformat@0ad8d0a -> ocaml-ppx/ocamlformat@5dd6574 ocaml/dune@65e04ba -> ocaml/dune@75ecfe3 ocaml/merlin@635923d -> ocaml/merlin@5731826 ocaml/tuareg@37a6730 -> ocaml/tuareg@b59c422 pashky/restclient.el@abc307b -> pashky/restclient.el@2cc1fd3 polymode/polymode@b3871e9 -> polymode/polymode@7d1f822 pythonic-emacs/anaconda-mode@344727c -> pythonic-emacs/anaconda-mode@4f367c7 seagle0128/grip-mode@2855205 -> seagle0128/grip-mode@c0ca789 sebasmonia/sharper@d610b83 -> sebasmonia/sharper@08277b6 swift-emacs/swift-mode@ad12a30 -> swift-emacs/swift-mode@1b47a09 technomancy/fennel-mode@ba14a7d -> technomancy/fennel-mode@a908db8 tpapp/julia-repl@7ce38a9 -> tpapp/julia-repl@79e686e ziglang/zig-mode@2d0eb23 -> ziglang/zig-mode@0babe7e Closes #5221
lang/python
Description
Adds Python support to Doom Emacs.
- Syntax checking (
flycheck
) - Snippets
- Run tests (
nose
,pytest
) - Auto-format (
black
), requires:editor format
- LSP integration (mspyls, pyls, or pyright)
Module Flags
+lsp
Language Server Protocol support+pyright
Use the pyright LSP server instead of mspyls or pyls (requires+lsp
).+pyenv
Python virtual environment support via pyenv+conda
Python virtual environment support via Conda+poetry
Python packaging, dependency management, and virtual environment support via Poetry+cython
Cython files support via cython-mode
Plugins
- anaconda-mode*
- pyimport*
- py-isort*
- nose*
- python-pytest*
- pip-requirements*
- pipenv*
-
if
+conda
-
if
+pyenv
-
if
+poetry
-
if
+lsp
and:tools lsp
- lsp
-
if
+pyright
-
else
-
if
+cython
- cython-mode
- if
:checkers syntax
: flycheck-cython
Prerequisites
This module has no hard prerequisites, but a few soft ones:
-
For this module's supported test runners:
pip install pytest
pip install nose
- The
:editor format
module uses Black for python files ::pip install black
pyimport
requires Python's modulepyflakes
::pip install pyflakes
py-isort
requires isort to be installed ::pip install isort
-
Python virtual environments install instructions at:
cython
requires Cython
Language Server Protocol Support
For LSP support the :tools lsp
module must be enabled, along with this
module's +lsp
flag. By default, it supports mspyls
and pyls
, in that
order. With the +pyright
flag, it will try Pyright first.
Each of these servers must be installed on your system via your OS package manager or manually:
- pyls can be installed with
pip install python-language-server[all]
. - mspyls can be installed by typing
M-x lsp-install-server RET mspyls
. - pyright can be installed with
pip install pyright
ornpm i -g pyright
.
Features
This module supports LSP. It requires installation of Python Language Server, Microsoft Language Server, or pyright, see LSP Support.
To enable support for auto-formatting with black enable :editor format
in
init.el
file.
Keybindings
Binding | Description |
---|---|
<localleader> c c |
Compile Cython buffer |
<localleader> i i |
Insert mising imports |
<localleader> i r |
Remove unused imports |
<localleader> i s |
Sort imports |
<localleader> i o |
Optimize imports |
<localleader> t r |
nosetests-again |
<localleader> t a |
nosetests-all |
<localleader> t s |
nosetests-one |
<localleader> t v |
nosetests-module |
<localleader> t A |
nosetests-pdb-all |
<localleader> t O |
nosetests-pdb-one |
<localleader> t V |
nosetests-pdb-module |
<localleader> t f |
python-pytest-file |
<localleader> t k |
python-pytest-file-dwim |
<localleader> t t |
python-pytest-function |
<localleader> t m |
python-pytest-function-dwim |
<localleader> t r |
python-pytest-repeat |
<localleader> t p |
python-pytest-popup |
<localleader> g d |
anaconda-mode-find-definitions |
<localleader> g h |
anaconda-mode-show-doc |
<localleader> g a |
anaconda-mode-find-assignments |
<localleader> g f |
anaconda-mode-find-file |
<localleader> g u |
anaconda-mode-find-references |