FStarLang/fstar-mode.el@6e5d3ea858 -> FStarLang/fstar-mode.el@36ffb46259 ProofGeneral/PG@d668946929 -> ProofGeneral/PG@e0ec3db200 Wilfred/helpful@4ba24cac9f -> Wilfred/helpful@5ad8a9ce57 agda/agda@3344ca8058 -> agda/agda@10a0ca0516 bastibe/org-journal@17b34ce8df -> bastibe/org-journal@115b9c0354 beancount/beancount-mode@452621fa1f -> beancount/beancount-mode@ddd4b87257 clojure-emacs/cider@f00e83d338 -> clojure-emacs/cider@a0d6169026 crystal-lang-tools/emacs-crystal-mode@ea89b108fa -> crystal-lang-tools/emacs-crystal-mode@d913fea6f0 emacs-ess/ESS@c72b911d70 -> emacs-ess/ESS@0eb240bcb6 emacs-geiser/geiser@74eed1669a -> emacs-geiser/geiser@c1c27072a4 emacs-lsp/lsp-haskell@6981f8d122 -> emacs-lsp/lsp-haskell@b2edf1a9f8 emacs-lsp/lsp-metals@6a6a345a8a -> emacs-lsp/lsp-metals@567089f7f4 emacs-rustic/rustic@e5c0271f1e -> emacs-rustic/rustic@fbbf0a7192 emacs-straight/auctex@f00256cbfd -> emacs-straight/auctex@53f80ba36c emacs-straight/org-mode@5a4686915e -> emacs-straight/org-mode@ff33d9ec2e emacs-typescript/typescript.el@dd10f702d4 -> emacs-typescript/typescript.el@481df3ad2c emacsorphanage/dart-mode@02e919c1cf -> emacsorphanage/dart-mode@88b6683f43 emacsorphanage/macrostep@44faf4f7bf -> emacsorphanage/macrostep@d0928626b4 erlang/otp@3e7f126fe4 -> erlang/otp@64185e73b0 fuxialexander/org-pdftools@4e420233a1 -> fuxialexander/org-pdftools@5613b7ae56 greghendershott/racket-mode@f2645aadd2 -> greghendershott/racket-mode@eef5e9ab2c hakimel/reveal.js@e15cf92ccd -> hakimel/reveal.js@2059d388f7 haskell/haskell-mode@1a285fc4c5 -> haskell/haskell-mode@7f452cc9e6 joaotavora/sly@742355f755 -> joaotavora/sly@c48defcf58 jorgenschaefer/emacs-buttercup@bf01a33f8b -> jorgenschaefer/emacs-buttercup@c467c659b2 jrblevin/markdown-mode@e100778594 -> jrblevin/markdown-mode@ee9d6de1d2 js-emacs/js2-refactor.el@a0977c4ce1 -> js-emacs/js2-refactor.el@e1177c728a kaushalmodi/ox-hugo@98421a1298 -> kaushalmodi/ox-hugo@e3365cb4e6 ljos/jq-mode@a0f79eba78 -> ljos/jq-mode@eeb86b4d5a magit/orgit@59d21fdb21 -> magit/orgit@3b6b34bd11 nonsequitur/inf-ruby@dad78a13f1 -> nonsequitur/inf-ruby@b8076aad10 ocaml/dune@098117d229 -> ocaml/dune@b74586e909 ocaml/merlin@3a806ef87f -> ocaml/merlin@92c3ba9473 oer/org-re-reveal@ab1422c163 -> oer/org-re-reveal@88e9d9e679 org-roam/org-roam@cad3518788 -> org-roam/org-roam@0037daaf3e purescript-emacs/purescript-mode@07e4d6ecfe -> purescript-emacs/purescript-mode@b076bafe94 pythonic-emacs/anaconda-mode@f900bd7656 -> pythonic-emacs/anaconda-mode@5c6eff4645 pythonic-emacs/company-anaconda@169252fca7 -> pythonic-emacs/company-anaconda@0f7984b3be pythonic-emacs/pyenv-mode@76787ea44f -> pythonic-emacs/pyenv-mode@f7d53796d6 seagle0128/grip-mode@df0ba7589d -> seagle0128/grip-mode@ffce7f78eb swift-emacs/swift-mode@ab189d6e89 -> swift-emacs/swift-mode@2c0b2b72dc technomancy/fennel-mode@3632cc77de -> technomancy/fennel-mode@4ccb6d5944 weijiangan/flycheck-golangci-lint@91c59b128a -> weijiangan/flycheck-golangci-lint@424ba1b3a1
: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 (
pyls
,jedi
,ruff
,pyright
, orbasedpyright
)
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 (pyls
,jedi
,ruff
, orpyright
). - +poetry
- Enable Python packaging, dependency management, and virtual environment support via Poetry.
- +pyenv
- Enable Python virtual environment support via pyenv
- +pyright
- Add support for the pyright LSP server (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 basedpyright:
$ pip install basedpyright
- To install pyright:
$ pip install pyright
or$ npm i -g pyright
. - To install pyls:
$ pip install python-language-server[all]
. - To install mspyls:
M-x lsp-install-server RET mspyls
.
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?