apheleia/CHANGELOG.md
Mohsin Kaleem 1bf7db7477
Support multiple formatters (#31) (#51)
* Support multiple formatters (#31)

Closes #31

This commit makes it so apheleia can run multiple formatters one after
the other and use the resultant output to format the current buffer.
This works somewhat like a pipeline. The output of one formatter becomes
the input to the next formatter until all formatters have run and then
an RCS patch is built from the resultant output and applied to the
current buffer.

Note: For convenience we internally represent the users configuration as
a list of formatters even when it may only be one. For example if the
user has configured `(python-mode . black)` in apheleia-mode-alist then
internally we interpret that as a formatter list of `(black)` instead of
`black` as we did previously.

* Support multiple formatters (#31)

Closes #31

This commit makes it so apheleia can run multiple formatters one after
the other and use the resultant output to format the current buffer.
This works somewhat like a pipeline. The output of one formatter becomes
the input to the next formatter until all formatters have run and then
an RCS patch is built from the resultant output and applied to the
current buffer.

Note: For convenience we internally represent the users configuration as
a list of formatters even when it may only be one. For example if the
user has configured `(python-mode . black)` in apheleia-mode-alist then
internally we interpret that as a formatter list of `(black)` instead of
`black` as we did previously.

* Make some changes

* Make some changes

* Error when a (not-first) formatter uses file or filepath

* Prevent formatter recieving stdin when using `file'

Co-authored-by: Radon Rosborough <radon.neon@gmail.com>
2021-10-24 18:28:18 -07:00

4.5 KiB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.

Unreleased

Enhancements

  • Support multiple formatters (#31). You can now configure a list of formatters for a major-mode in apheleia-mode-alist and they will be run in sequence.

Formatters

Bugs fixed

  • Fix spelling error in generated process names (#32).
  • Apheleia no longer conflicts with undo-fu (#[39]).
  • Apheleia no longer triggers after-set-visited-file-name-hook, which reduces conflicts with various modes. For example, lsp-mode will no longer trigger a reconnect every time you save.
  • Fix inconsistent :type spec preventing use of customize-variable on apheleia-formatters.

1.1.2 (released 2021-02-26)

Enhancements

  • Prettier is now enabled in json-mode.

Bugs fixed

  • Prettier now respects .prettierignore (#21).
  • Apheleia's global mode should no longer trigger warnings about a locally let-bound after-save-hook (#27).

1.1.1 (released 2020-07-16)

Formatters

Bugs fixed

  • Previously, there were some race conditions related to switching the current buffer. In particular, if you switched the current buffer right after saving, or save two buffers in quick succession, then it was possible for one buffer to be overwritten or to not be formatted. These problems have been fixed (#8).
  • Previously, enabling undo-tree-auto-save-history caused Apheleia to mark the buffer as modified after formatting. This has been fixed (#10).
  • Apheleia now tries harder to accidentally enter an infinite formatting loop (#12).

1.1 (released 2020-04-02)

Enhancements

  • There is now a maximum length for the dynamic programming algorithm, controlled by apheleia-max-alignment-size. This prevents Emacs from hanging due to Apheleia. under any circumstances (#4).

Formatters

Bugs fixed

  • Previously, weirdness could happen if manually running Prettier via M-x apheleia-format-buffer on a buffer which was modified from what was written to disk. Now we simply abort running a command that uses the file keyword if the buffer is modified, since it will not produce correct results. This should not affect normal usage of Apheleia.
  • Previously, the buffer could be erased when running Apheleia from a buffer that had no backing file. This has been fixed, and Apheleia can run correctly on buffers both with and without backing files (#9).

1.0 (released 2019-09-20)

Added

  • Package apheleia
  • Command apheleia-format-buffer
  • User options:
    • apheleia-formatters, with supported formatters:
      • black
      • prettier
      • gofmt
      • terraform
    • apheleia-mode-alist
    • apheleia-post-format-hook
  • Variable apheleia-formatter
  • Minor mode apheleia-mode (and apheleia-global-mode)