200ok-ch/counsel-jq@104c77b -> 200ok-ch/counsel-jq@f5bfed8 Andersbakken/rtags@e6c7005 -> Andersbakken/rtags@63a7d9b FStarLang/fstar-mode.el@5670fc0 -> FStarLang/fstar-mode.el@3afbf04 Kungsgeten/org-brain@6e3d861) -> Kungsgeten/org-brain@1ae4fd4) NixOS/nix-mode@bb0b49e -> NixOS/nix-mode@e32c6bf OVYA/php-cs-fixer@95eace9 -> OVYA/php-cs-fixer@c5b5d8a ProofGeneral/PG@0fdb1ae -> ProofGeneral/PG@702f5b9 Sarcasm/irony-mode@1e1aaba -> Sarcasm/irony-mode@76fd37f abicky/nodejs-repl.el@f5ce3d5 -> abicky/nodejs-repl.el@3b84105 agda/agda@08191e6 -> agda/agda@5070bd8 amake/flutter.el@78b3c57 -> amake/flutter.el@696228a ananthakumaran/tide@ac5f070 -> ananthakumaran/tide@a43a37b arnested/php-extras@81ebd7c -> arnested/php-extras@d410c5a borkdude/flycheck-clj-kondo@152df7f -> borkdude/flycheck-clj-kondo@a558bda brotzeit/rustic@7c9d55b -> brotzeit/rustic@91ad5db chachi/cuda-mode@9ae9eac -> chachi/cuda-mode@7f59351 clojure-emacs/cider@f1c2a79 -> clojure-emacs/cider@ef47c1d clojure-emacs/clojure-mode@75c2889 -> clojure-emacs/clojure-mode@53ef8ac cpitclaudel/company-coq@b096cb5 -> cpitclaudel/company-coq@4da7b41 cython/cython@ba6cbed -> cython/cython@21b4e53 dgutov/robe@082da38 -> dgutov/robe@f04dcc7 dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe elixir-editors/emacs-elixir@01b3324 -> elixir-editors/emacs-elixir@b78e7f7 emacs-ess/ESS@a694b26 -> emacs-ess/ESS@d013616 emacs-lsp/lsp-dart@c1ff5ce -> emacs-lsp/lsp-dart@b81b1ec emacs-lsp/lsp-java@3f1ed17 -> emacs-lsp/lsp-java@f43b00a emacs-lsp/lsp-metals@e42c0b2) -> emacs-lsp/lsp-metals@31dafff) emacs-lsp/lsp-pyright@ccd0007 -> emacs-lsp/lsp-pyright@d9e7d3c emacs-lsp/lsp-python-ms@a0c56f4 -> emacs-lsp/lsp-python-ms@c4ebc7a emacs-php/php-mode@f4c7c69 -> emacs-php/php-mode@7e5722c emacs-straight/adaptive-wrap@319db64 -> emacs-straight/adaptive-wrap@8f60ee7 emacs-straight/csv-mode@6353374 -> emacs-straight/csv-mode@eb3ec00 emacs-straight/org-mode@a88806b -> emacs-straight/org-mode@7c8dce7 emacs-straight/rainbow-mode@fdff98b -> emacs-straight/rainbow-mode@949166c emacs-straight/sml-mode@60b01d7 -> emacs-straight/sml-mode@0338e97 emacs-typescript/typescript.el@e6f68ab -> emacs-typescript/typescript.el@54f14c4 erlang/otp@8efb945 -> erlang/otp@8fc0641 factor/factor@c6e15bd -> factor/factor@94a922a felipeochoa/rjsx-mode@0061587 -> felipeochoa/rjsx-mode@b697fe4 fsharp/emacs-fsharp-mode@68dfc22 -> fsharp/emacs-fsharp-mode@13fbf4c fxbois/web-mode@b4b0a85 -> fxbois/web-mode@890e837 galaunay/poetry.el@eb238d9 -> galaunay/poetry.el@d5163fe godotengine/emacs-gdscript-mode@55a6637 -> godotengine/emacs-gdscript-mode@75fe658 greghendershott/racket-mode@0ca8b26 -> greghendershott/racket-mode@3563081 haskell/haskell-mode@e726776 -> haskell/haskell-mode@0d39c84 hlissner/evil-org-mode@658dadf) -> hlissner/evil-org-mode@a9706da) hvesalai/emacs-sbt-mode@4358ed8 -> hvesalai/emacs-sbt-mode@7b121fc hvesalai/emacs-scala-mode@1d08e88 -> hvesalai/emacs-scala-mode@9d3b56e hylang/hy-mode@7256844 -> hylang/hy-mode@5253533 joaotavora/sly@fce4f9b -> joaotavora/sly@68561f1 jorgenschaefer/emacs-buttercup@cccdedf -> jorgenschaefer/emacs-buttercup@2f24a44 jorgenschaefer/pyvenv@861998b -> jorgenschaefer/pyvenv@0bf4b87 josteink/csharp-mode@f46d656 -> josteink/csharp-mode@4916829 jrblevin/markdown-mode@152eae2 -> jrblevin/markdown-mode@dcad557 kaushalmodi/ox-hugo@1909c6e) -> kaushalmodi/ox-hugo@f24c9bd) nim-lang/nim-mode@16a245e -> nim-lang/nim-mode@d832d6b ocaml-ppx/ocamlformat@1dec6c3 -> ocaml-ppx/ocamlformat@860266b ocaml/dune@f967df6 -> ocaml/dune@4d097cd ocaml/merlin@06833e9 -> ocaml/merlin@28193d5 oer/org-re-reveal@2035217 -> oer/org-re-reveal@0062756 org-roam/org-roam@d913447) -> org-roam/org-roam@be95b42) rexim/org-cliplink@82402ca -> rexim/org-cliplink@13e0940 salmanebah/opencl-mode@55cb49c -> salmanebah/opencl-mode@15091ef senny/rvm.el@6897576) -> senny/rvm.el@b2498a4) skuro/plantuml-mode@5889166 -> skuro/plantuml-mode@ea45a13 swift-emacs/swift-mode@e65a80a -> swift-emacs/swift-mode@0bc8d8d technomancy/fennel-mode@7a8824a -> technomancy/fennel-mode@fa56106 wbolster/emacs-python-pytest@a2f88b1 -> wbolster/emacs-python-pytest@4a1c4c8 xuchunyang/elisp-demos@3cca496 -> xuchunyang/elisp-demos@ed9578d yoshiki/yaml-mode@68fecb5 -> yoshiki/yaml-mode@fc5e1c5 Fixes #4237
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 |