Skip to content

Latest commit

 

History

History
239 lines (176 loc) · 8.32 KB

CHANGELOG.md

File metadata and controls

239 lines (176 loc) · 8.32 KB

Change Log

All notable changes to this project will be documented in this file, which follows the conventions of keepachangelog.com. This project adheres to Semantic Versioning.

...

0.13.0 - 2020-06-13

Added

  • Added support for setting --exclude CLI options that allow you to specify directories/files to ignore at runtime. #44
  • Automatically download Graal SDK for builds.

Fixed

  • Namespace reformatting logic handles "attr-map" forms correctly now. #50 #51
  • Files failing because of a missing EOF newline will correctly show a diff in the check output. #48

0.12.1 - 2020-02-22

Added

  • Added deps.edn to support usage from tools.deps and the clj CLI. #33

Changed

  • Merged the core and tool projects back into one top-level project.

0.12.0 - 2020-02-07

Added

  • The tool accepts a --report option which will cause the execution stats to be printed at the end of a run.
  • Processing errors are now rethrown with more information about the specific function that failed and the position in the file which was problematic. #29

Fixed

  • Many performance optimizations across the formatting rules.
  • Bug causing a NullPointerException when formatting type methods with empty bodies.
  • Lines following comments are indented correctly now. #32

0.11.1 - 2020-01-22

Added

  • Added EPL file to repo to clarify licensing.

Changed

  • Modified the type formatting rules after feedback from users. This relaxes the reify rules slightly and uses two-blank-lines between inline method definitions.

0.11.0 - 2020-01-21

Added

  • Var definitions (using def) have line-break rules, constrolled by :line-break-vars?.
  • Type definition forms deftype, defrecord, defprotocol, reify, and proxy have formatting rules, controlled by :reformat-types?.

Fixed

  • :list-indent-size now applies to ns forms as well. #25
  • defmacro is now subject to function line-breaking rules.
  • Fixed some cases where newlines would not be collapsed by line-break rules.
  • A bug previously caused any list in a vector in a letfn form to be treated like a function definition.
  • A bug caused case group lists beginning with a numeric value to throw an error when formatting the file.

0.10.1 - 2020-01-04

Fixed

  • The pipe command will respect configuration directly in the process working directory. Previously, it only considered parent directories.

0.10.0 - 2019-12-25

Added

  • The :list-indent-size configuration option allows the default indentation amount for lists to be adjusted. #8 #21
  • The pipe command reads Clojure code from stdin and writes the reformatted code to stdout. #22

Fixed

  • Clojurescript files using shadow-cljs style strings in libspecs for external JS libs will now work. #20 #23

0.9.0 - 2019-10-13

The biggest change in this release is renaming the project to cljstyle to better differentiate it from the original cljfmt.

Fixed

  • Reader conditional macros in namespace forms are correctly handled at the top level, inside :require type forms, and inside libspecs. Some other cases (such as conditionals inside :import) may still cause errors. #5
  • Don't swallow comments on import package groups. #10
  • Preserve commas when removing surrounding whitespace. #14
  • Don't apply function line-breaking rules to forms within a syntax-quote.
  • Anonymous functions with multiple arity forms are line-broken properly.

Changed

  • Imported classes under the :single-import-break-width threshold which were already in a package group will not be forced into a qualified class symbol.

Added

  • The :require-eof-newline? configuration option will ensure that all source files end with a newline character. #15
  • Completion logic for zshell in completion.zsh.

0.8.3 - 2019-10-08

Fixed

  • The project codebase now adheres to its own style rules.
  • Private functions defined with defn- are no longer ignored by function rules. #17

0.8.2 - 2019-08-20

Fixed

  • Configuration file paths are tracked more accurately for reporting.
  • Namespace metadata is properly retained. #11
  • Vector import specs no longer cause UnsupportedOperationException. #12
  • Namespaced maps are indented correctly and allow for abutting same-line namespace tags. #6 #7

Changed

  • Many new tests around configuration file loading and merge behavior.
  • Split test namespaces up into more focused areas.

0.8.1 - 2019-08-01

Added

  • In addition to the file status counts, task stats now include the total number of files, the elapsed time, and the number of lines present in the diff (if applicable).
  • A new --stats FILE option allows writing the task statistics to a file after processing is complete. The file name may end in .edn or .tsv to control the output format.

Changed

  • Most task code moved into core cljfmt library so it can be used by plugins if desired.
  • Retain full list of config paths as metadata for debugging.

Fixed

  • Search roots are canonicalized now to handle . and .. properly.
  • Searching up the directory hierarchy for parent config files no longer double-loads configuration in the current directory.
  • Print options now correctly propagate to subtasks, so passing --verbose and --no-color will work on the tool output.
  • Using the config task on a file will produce the correct config list now.

0.8.0 - 2019-07-27

This is a significant release which revamps the tooling entirely. Instead of a Leiningen plugin, the tool is now a stand-alone native binary compiled with Graal.

Added

  • New cljfmt.config namespace for specs and working with configuration files.
  • Configuration can now be loaded and merged from multiple .cljfjmt files on disk.
  • Command logic is now captured in a CLI tool which is compiled with Graal.

Changed

  • Combined default indent rules into a single cljfmt/indents.clj resource.
  • Files are now processed using a ForkJoinPool to efficiently utilize processor cores.

Removed

  • Removed lein-cljfmt project.
  • Removed Clojurescript cross-compiling support.

0.7.0 - 2019-05-18

First fork release. Rewrote most of the code and added a bunch of new functionality.

0.5.6 - 2016-09-29

Legacy project release.