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 support for setting
--exclude
CLI options that allow you to specify directories/files to ignore at runtime. #44 - Automatically download Graal SDK for builds.
- 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
deps.edn
to support usage from tools.deps and theclj
CLI. #33
- Merged the
core
andtool
projects back into one top-level project.
0.12.0 - 2020-02-07
- 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
- 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 EPL file to repo to clarify licensing.
- 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
- Var definitions (using
def
) have line-break rules, constrolled by:line-break-vars?
. - Type definition forms
deftype
,defrecord
,defprotocol
,reify
, andproxy
have formatting rules, controlled by:reformat-types?
.
:list-indent-size
now applies tons
forms as well. #25defmacro
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
- The
pipe
command will respect configuration directly in the process working directory. Previously, it only considered parent directories.
0.10.0 - 2019-12-25
- 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
- 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
.
- 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.
- 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.
- 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
- 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
- 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
- Many new tests around configuration file loading and merge behavior.
- Split test namespaces up into more focused areas.
0.8.1 - 2019-08-01
- 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.
- 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.
- 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.
- 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.
- Combined default indent rules into a single
cljfmt/indents.clj
resource. - Files are now processed using a
ForkJoinPool
to efficiently utilize processor cores.
- 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.