Elm Format Versions Save

elm-format formats Elm source code according to a standard set of rules based on the official Elm Style Guide

0.8.7

1 year ago

Small improvements and fixed npm installer for Windows

Version 0.8.6 was not widely announced because of an issue with the npm installer on Windows, so check the 0.8.6 release notes as well. Below are the additional changes in 0.8.7.

New features:

  • case ... then is now auto-corrected to case ... of
  • => is now auto-corrected to ->

Bug fixes:

  • Top-level declarations named "infix" no longer make files unprocessable
  • The npm installer should now work correctly on Windows (was broken for 0.8.6)

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • @kutyel for lenient parsing additions
  • @emmabastas for the initial draft of test coverage scripts
  • @jfmengels for continued thoughtful issue discussion across the Elm devtools community (only partially related to elm-format, but thank you!)
  • @8n8 for code cleanup help
  • Lamdera for providing CI runners to build the MacOS ARM64 release binaries

0.8.7-rc.1

1 year ago

0.8.6

1 year ago

Much, much faster; Many, many contributors

Thanks to the contributions of many (see below), elm-format is now much faster. (Testers of the pre-release saw an 11x speedup on MacOS ARM, and a 4x speedup on other platforms.)

New features:

  • File are now processed in parallel

Bug fixes:

  • module exposing listings containing comments no longer add extra leading spaces
  • Redundant import aliases (when the alias is the same as the module name) are now removed

Other changes:

  • Native binaries are now provided for MacOS ARM64 (previous versions required Rosetta)
  • Native (statically-linked) binaries are now provided for Linux ARM64 (aarch64)
  • The npm installer now has zero dependencies
  • Performance optimization, making use of Elm 0.19's parser, thanks to @emmabastas's contributions via Google Summer of Code

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • @emmabastas for refactoring the parser internals to integrate Elm 0.19's compiler's parser
  • @lydell for processing files in parallel
  • @lydell for the new dependency-free npm installer script
  • @mdevlamynck for the exposing listings bug fix
  • @tfausak for linux-aarch64 build script updates
  • @supermario for mac-arm64 build script updates
  • Lamdera for providing CI runners to build the MacOS ARM64 release binaries
  • Elm community members for testing the new binaries and npm packages
  • ... and anyone who's contributed to cross-compilation support in ghc or nix in the past two years

0.8.6-rc.1

1 year ago

0.8.5

3 years ago

Binaries for Alpine Linux and Mac ARM64

Feature changes:

  • Detailed error messages for syntax errors have been removed. Use elm make to see a detailed error if elm-format fails.

New features:

  • In module and import lines, exposing is automatically added if missing

Other changes:

  • The npm installer now provides a (Rosetta) binary for Mac ARM64
  • Linux binaries are now statically linked (should now work on alpine linux and other systems without glibc-2.27)
  • Removed --upgrade (now use elm-refactor instead)

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • @kutyel for improvements to lenient parsing

0.8.5-rc1

3 years ago

0.8.4

3 years ago

Bug fixes and small improvements

New features:

  • newlines in tuple types are now preserved
  • newlines in type constructor application are now preserved

Bug fixes:

  • negative hex int literals are now handled correctly
  • in doc comments, special characters in link text are now handled more correctly
  • in doc comments, non-Elm code blocks are no longer elm-formatted
  • in doc comments, inline code containing backticks is now escaped correctly
  • in doc comments, relative links with text matching the relative URL are now handled correctly

Other changes:

  • dropped support for 32-bit Windows (Windows CI platforms are no longer supporting it)

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

0.8.3

4 years ago

Performance improvements

Thanks to @folkertdev for diagnosing and contributing the fix for a long-standing performance issue where elm-format would take exceptionally long (and sometimes crash) on files contianing large expressions such as long lists or many other AST nodes with many children.

Other than the performance improvements, there should be no other noticable changes from elm-format 0.8.2.

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • As noted above, @folkertdev for the performance improvment
  • @razzeee and @andys8 for help updating the Windows release build

0.8.2

4 years ago

Simpler editor integration

Two small improvements should make integration with code editors smoother with elm-format 0.8.2. When installed with npm, elm-format startup time has been reduced by 70% (roughly 150ms). And elm-format will now assume it should work in Elm 0.19 mode if autodetection of your Elm version fails.

If you still need to work with Elm 0.18 code, you must make sure that either elm-format is run from the directory containing your elm-package.json file (and there must not be a elm.json file in that directory), or elm-format must be invoked with the --elm-version=0.18 option.

exposing (..)

The feature of automatically expanding exposing (..) in module lines has been removed. While exposing everything in a module is an anti-pattern for production code, it can be useful for rapid development sketches when the interfaces of your modules are not important.

To replace the old expansion behavior, elm-format now allows module lines without an exposing clause. Such lines will have the exposing automatically generated using the same logic that was previously used to expand exposing (..).

Other changes

elm-format 0.8.2 also contains several bug fixes and other small changes. See the CHANGELOG for details.

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • @mdevlamynck for implementing the fix for removing invalid (..) in @docs lines
  • @andys8 and @BendingBender for debugging slow startup times when installed via npm
  • @omnibs for help updating the parser

0.8.1

5 years ago

Autodetecting your Elm version

Starting in elm-format 0.8.1, there is now only one official binary for each platform (previously there was a seperate binary for Elm 0.18 and Elm 0.19). elm-format now will auto-detect your Elm version using the following rules:

  • if elm-package.json exists in the current directory, format in Elm 0.18 mode
  • if elm.json exists in the current directory, format in Elm 0.19 mode

If you need to run elm-format from a working directory that does not contain such a file (or if you need to use elm-format in Elm 0.17 mode), use the --elm-version=... command line argument to disable the autodetection.

Other changes

elm-format 0.8.1 also contains several bug fixes for elm-format 0.8.0. See the CHANGELOG for details.

Install

npm install -g elm-format

or download from the release page.

Thanks to ...

  • @andys8 for contributing the lenient import line parser