/emacs-python-black

Emacs package to reformat Python using black-macchiato

Primary LanguageEmacs LispBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

python-black.el

This is an Emacs package to make it easy to reformat Python code using black, the uncompromising Python code formatter.

As an optional extra, this package can also reformat partial buffers using black-macchiato, which is a small wrapper around black which does just that.

Installation

Install the python-black Melpa package using M-x package-install, or via use-package:

(use-package python-black
  :demand t
  :after python
  :hook (python-mode . python-black-on-save-mode-enable-dwim))

Usage

Use one of these commands via M-x or bind them to a key:

  • python-black-on-save-mode

    Minor mode to automatically reformat the buffer on save.

  • python-black-on-save-mode-enable-dwim

    Enable python-black-on-save-mode if this project is using Black. (Useful in hooks; see example above.)

  • python-black-buffer

    Reformat the current buffer.

  • python-black-region

    Reformat the current region. (Requires black-macchiato.)

  • python-black-statement

    Reformat the current statement. (Requires black-macchiato.)

  • python-black-partial-dwim

    Reformat the active region or the current statement, depending on whether the region is currently active. (Requires black-macchiato.)

  • python-black-org-mode-block

    Reformat the current org-mode Python example or source code block. (Requires black-macchiato.)

Configuration

This package deliberately has minimal configuration. Use M-x customize-group RET python-black or change these variables in your init.el:

  • python-black-command
  • python-black-macchiato-command
  • python-black-extra-args

To configure black itself, use an external configuration file for your project, which has the benefits that it can be per-project, and works outside Emacs as well.

History

  • next release (already available via melpa unstable)

  • 1.2.0 (2022-11-03)

    • new python-black-org-mode-block function to format an org-mode block (#12)

    • python-black-on-save-mode-enable-dwim now ignores files in site-packages/ directories

  • 1.1.0 (2021-05-11)

    • Add python-black-on-save-mode-enable-dwim for use in hooks
    • Don't break when there's no newline at the end of the buffer (#4)
  • 1.0.0 (2019-08-17)

    • Initial release

License

BSD-3-clause. Copyright © 2019 wouter bolsterlee.

Credits

wouter bolsterlee. wbolster.

https://github.com/wbolster on github. star my repos. fork them. and so on.

https://twitter.com/wbolster on twitter. follow me. or say hi.