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)
+lspLanguage Server Protocol support+pyrightUse the pyright LSP server instead of mspyls or pyls (requires+lsp).+pyenvPython virtual environment support via pyenv+condaPython virtual environment support via Conda+poetryPython packaging, dependency management, and virtual environment support via Poetry+cythonCython files support via cython-mode
- anaconda-mode*
- pyimport*
- py-isort*
- nose*
- python-pytest*
- pip-requirements*
- pipenv*
- if
+conda - if
+pyenv - if
+poetry - if
+lspand:tools lsp- lsp
- if
+pyright - else
- if
+cython- cython-mode
- if
:checkers syntax: flycheck-cython
This module has no hard prerequisites, but a few soft ones:
- For this module’s supported test runners:
pip install pytestpip install nose
- The
:editor formatmodule uses Black for python files pip install blackpyimportrequires Python’s modulepyflakespip install pyflakespy-isortrequires isort to be installedpip install isort
- Python virtual environments install instructions at:
cythonrequires Cython
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 pyrightornpm i -g pyright.
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.
| 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 |
This module has the following variables to set extra arguments to ipython and jupyter shells:
;; ~/.doom.d/config.el
(setq +python-ipython-repl-args '("-i" "--simple-prompt" "--no-color-info"))
(setq +python-jupyter-repl-args '("--simple-prompt"))