Andersbakken/rtags@05117a9a29 -> Andersbakken/rtags@bd1c818a99 FStarLang/fstar-mode.el@7d353de892 -> FStarLang/fstar-mode.el@6e5d3ea858 JuliaEditorSupport/julia-emacs@2dfc869ff6 -> JuliaEditorSupport/julia-emacs@d360ad5285 ProofGeneral/PG@a38857a6a0 -> ProofGeneral/PG@99f91e873e Raku/raku-mode@977b14a7c1 -> Raku/raku-mode@14f9b9bba0 Wilfred/pip-requirements.el@216cd1690f -> Wilfred/pip-requirements.el@31e0dc62ab Wilfred/pyimport@c006a5fd0e -> Wilfred/pyimport@4398ce8dd6 ananthakumaran/exunit.el@e008c89e01 -> ananthakumaran/exunit.el@ee06b14b61 beancount/beancount-mode@546163fd2c -> beancount/beancount-mode@71c1622246 cybniv/poetry.el@ca2cffb0b1 -> cybniv/poetry.el@1dff0d4a51 davazp/graphql-mode@49a391b529 -> davazp/graphql-mode@ef4aecaead dgutov/robe@4ecd868da9 -> dgutov/robe@6bc8a07fc4 diml/utop@8cc5632825 -> diml/utop@384b3098c8 dominikh/go-mode.el@6f4ff9ef87 -> dominikh/go-mode.el@636d36e37a emacs-lsp/emacs-ccls@9b4a47e041 -> emacs-lsp/emacs-ccls@8648238a92 emacs-lsp/lsp-dart@f51c80f545 -> emacs-lsp/lsp-dart@1f52e81c93 emacs-lsp/lsp-haskell@89d1637043 -> emacs-lsp/lsp-haskell@18a7c7881f emacs-lsp/lsp-java@c962a3b3ac -> emacs-lsp/lsp-java@4909c14b90 emacs-lsp/lsp-metals@e55d544996 -> emacs-lsp/lsp-metals@fa4072cbe7 emacs-lsp/lsp-pyright@2f2631ae24 -> emacs-lsp/lsp-pyright@cc6df06aea emacs-lsp/lsp-sourcekit@1cd5e7d269 -> emacs-lsp/lsp-sourcekit@bb2b7e0278 emacs-lsp/lsp-treemacs@e54e74deb8 -> emacs-lsp/lsp-treemacs@1d43e9e030 emacs-php/composer.el@91945f1bdb -> emacs-php/composer.el@42cf9848d4 emacs-php/php-mode@a0bcafbe30 -> emacs-php/php-mode@4792988a12 emacs-php/phpactor.el@8733fef84b -> emacs-php/phpactor.el@6b5269ff82 emacs-php/psysh.el@c7dde979d9 -> emacs-php/psysh.el@ae15a36301 emacs-straight/adaptive-wrap@70005d2012 -> emacs-straight/adaptive-wrap@a3b179ea21 emacs-straight/auctex@86b2397abd -> emacs-straight/auctex@280cd4a0ca emacs-straight/csv-mode@81c1a9febd -> emacs-straight/csv-mode@cdb73a771b emacs-straight/sml-mode@e5354371f3 -> emacs-straight/sml-mode@d114e5a27f emacsorphanage/dart-mode@dffc0209a1 -> emacsorphanage/dart-mode@44beb628e5 erlang/otp@0ca7e064f5 -> erlang/otp@2a64588d4a factor/factor@12fc9d5071 -> factor/factor@d143007778 fosskers/sly-overlay@916b50297a -> fosskers/sly-overlay@4c6135c260 fsharp/emacs-fsharp-mode@b4d31c3da0 -> fsharp/emacs-fsharp-mode@677d78c4d6 gcv/julia-snail@a25ce84748 -> gcv/julia-snail@f7784c5007 godotengine/emacs-gdscript-mode@8a28276daa -> godotengine/emacs-gdscript-mode@32086df833 greghendershott/racket-mode@d3ab936af1 -> greghendershott/racket-mode@40ecb87f40 haskell/haskell-mode@43b4036bf0 -> haskell/haskell-mode@727f72a2a4 hhvm/hack-mode@278e4cc403 -> hhvm/hack-mode@ccf20511f0 idris-hackers/idris-mode@37c6b81990 -> idris-hackers/idris-mode@38dd2380dc joaotavora/sly@ed17d2c2bd -> joaotavora/sly@ba40c8f054 jrblevin/markdown-mode@e096bb97a9 -> jrblevin/markdown-mode@8aab017f47 json-emacs/json-mode@bfd1557aaa -> json-emacs/json-mode@77125b01c0 jwiegley/emacs-async@d040f72cb0 -> jwiegley/emacs-async@cff2bd0be3 ledger/ledger-mode@11e748d483 -> ledger/ledger-mode@b0e65f74a5 ljos/jq-mode@37028e1200 -> ljos/jq-mode@a0f79eba78 nonsequitur/inf-ruby@dac615c7fd -> nonsequitur/inf-ruby@0cfe8b2fb1 ocaml-ppx/ocamlformat@b8b0956690 -> ocaml-ppx/ocamlformat@c43f89bc0e ocaml/dune@64d19876ad -> ocaml/dune@aac3d84f1d ocaml/merlin@8404f96693 -> ocaml/merlin@b6ff2d4d56 pythonic-emacs/anaconda-mode@efd42aa873 -> pythonic-emacs/anaconda-mode@79fa9b4d2b pythonic-emacs/company-anaconda@dabc0adc9a -> pythonic-emacs/company-anaconda@1fe526163c pythonic-emacs/pyenv-mode@c93dc07e85 -> pythonic-emacs/pyenv-mode@de0d750b9c rust-lang/rust-mode@d8a09f218e -> rust-lang/rust-mode@d00d83d3a2 salmanebah/opencl-mode@15091eff92 -> salmanebah/opencl-mode@10ae7742d5 seagle0128/grip-mode@e145adb225 -> seagle0128/grip-mode@7c42b8f61d smihica/emmet-mode@63b6932603 -> smihica/emmet-mode@322d3bb112 swift-emacs/swift-mode@84059659de -> swift-emacs/swift-mode@b06c97b909 technomancy/fennel-mode@5965c8fc69 -> technomancy/fennel-mode@a4ddd1750f tpapp/julia-repl@4947319bc9 -> tpapp/julia-repl@801d0fc3d8 wbolster/emacs-python-pytest@bdfb3e81ee -> wbolster/emacs-python-pytest@9f850e22df yoshiki/yaml-mode@5b58248ab2 -> yoshiki/yaml-mode@7b5ce294fb
:lang python
Description unfold
This module adds Python support to Doom Emacs.
- Syntax checking (doom-package:flycheck)
- Snippets
- Run tests (doom-package:nose, doom-package:pytest)
- Auto-format (with
black
, requires doom-module::editor format) - LSP integration (
mspyls
,pyls
, orpyright
)
Maintainers
Module flags
- +conda
- Enable python virtual environment support via Conda.
- +cython
- Enable support for Cython files support.
- +lsp
-
Enable LSP support for
python-mode
. Requires doom-module::tools lsp and a langserver (supports mspyls, pyls, and pyright). - +poetry
- Enable Python packaging, dependency management, and virtual environment support via Poetry.
- +pyenv
- Enable Python virtual environment support via pyenv
- +pyright
- Use the pyright LSP server instead of mspyls or pyls (requires doom-module:+lsp).
- +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
Packages
- doom-package:anaconda-mode
- doom-package:conda
- doom-package:nose
- doom-package:pipenv
- doom-package:pip-requirements
- doom-package:poetry if doom-module:+poetry
- doom-package:pyenv
- doom-package:pyimport
- doom-package:py-isort
- doom-package:python-pytest
-
- doom-package:cython-mode
- doom-package:flycheck-cython if doom-module::checkers syntax
Hacks
- doom-package:anaconda-mode is configured to activate when doom-package:lsp-mode (or doom-package:eglot) don't – or fail to.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module has no hard requirements, but softly depends on:
-
For this module's supported test runners:
$ pip install pytest
$ pip install nose
- The doom-module::editor format module uses Black for python files:
$ pip install black
- doom-package:pyimport requires Python's module
pyflakes
:$ pip install pyflakes
- doom-package: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 doom-module::tools lsp module must be enabled, along with this module's doom-module:+lsp flag. By default, it supports doom-package:mspyls and doom-package:pyls, in that order. With the doom-module:+pyright flag, it will try Pyright first.
An alternative LSP server can be used by installing them through the lsp-install-server command, or an external package manager. For example:
- To install pyls:
$ pip install python-language-server[all]
. - To install mspyls:
M-x lsp-install-server RET mspyls
. - To install pyright:
$ pip install pyright
or$ npm i -g pyright
.
Formatter
Formatting is handled using the doom-module::editor format module via black.
TODO Usage
This module's usage documentation is incomplete. Complete it?
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 doom-module::editor format.
Keybindings
Binding | Description |
---|---|
<localleader> c c | Compile Cython buffer |
<localleader> i i | Insert missing 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 |
TODO Configuration
This module's configuration documentation is incomplete. Complete it?
The arguments passed to the ipython or jupyter shells can be altered through these two variables:
;; in $DOOMDIR/config.el
(setq +python-ipython-repl-args '("-i" "--simple-prompt" "--no-color-info"))
(setq +python-jupyter-repl-args '("--simple-prompt"))
Troubleshooting
There are no known problems with this module. Report one?
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?