OCamlFormat 0.12
See full changelog
Changes
- Set "conventional" as the default profile (#1060, @gpetiot).
This new profile is made to better match the most used style and is encouraged.
To continue using the previous default, use
profile = ocamlformat
in your.ocamlformat
. - CLI: Allow both values of boolean options (#1062, @Julow).
Now, both
--opt
and --no-opt` are available on the CLI for any boolean option "opt". Previously, only one of them were available depending on the default value. - Auto mode for
break-string-literals
(#1057, @gpetiot).wrap
,newlines
andnewlines-and-wrap
values ofbreak-string-literals
are removed.auto
replaces them, it is equivalent tonewlines-and-wrap
. - Dock collection brackets (#1014, @gpetiot).
after-and-docked
value ofbreak-separators
is removed and is replaced by a newdock-collection-brackets
option. - Preserve
begin
andend
keywords in if-then-else (#978, @Julow). Previously,begin
/end
keywords around if-then-else branches were turned into parentheses.
New features
- Give a hint when warning 50 is raised (#1111, @gpetiot)
- Add a message when a config value is removed (#1089, @emillon). Explain what replaces removed options and avoid printing a parsing error.
- Implement
sequence-blank-line=preserve-one
for let bindings (#1077, @Julow). Preserve a blank line afterlet .. in
whensequence-blank-line
set topreserve-one
. Previously, only blank lines after;
could be preserved. - Parse toplevel directives (#1020, @Julow).
Allow
#directives
in.ml
files. Previously, files containing a directive needed to be parsed as "use file". The "use file" mode is removed and--use-file
is now the same as--impl
. - Don't require
--name
, require kind, forbid--inplace
, allow--check
, make--enable-outside-detected-project
implicit when reading from stdin (#1018, @gpetiot) - Parse code in docstrings (#941, @gpetiot).
Format OCaml code in cinaps-style comments
(*$ code *)
and code blocks in documentation comments(** {[ code ]} *)
. - Parse documentation comments with Odoc (#721, @Julow). Formatting of documentation comments is more robust and support newer Odoc syntaxes. Internally, Odoc replaces Octavius as the documentation parser.
Bug fixes
- Fix unstabilizing comments on assignments (#1093, @gpetiot)
- Fix the default value documentation for
max-indent
(#1105, @gpetiot) - Fix closing parenthesis exceeding the margin in function application (#1098, @Julow)
- Missing break before attributes of
Pmty_with
(#1103, @jberdine) - Fix closing quote exceeding the margin (#1096, @Julow)
- Fix break before the closing bracket of collections (exceeding the margin) (#1073, @gpetiot)
- Fix precedence of Dot wrt Hash (#1058, @gpetiot)
- Fix break in variant type definition to not exceed the margin (#1064, @gpetiot)
- Fix newlines and indentation in toplevel extension points (#1054, @gpetiot)
- Fix placement of doc comments around extensions (#1052, @Julow)
- Inline extensions that do not break (#1050, @gpetiot)
- Add missing cut before attributes in type declarations (#1051, @gpetiot)
- Fix alignment of cases (#1046, @gpetiot)
- Fix blank line after comments at the end of lists (#1045, @gpetiot)
- Fix indexing operators precedence (#1039, @Julow)
- Fix dropped comment after infix op (#1030, @gpetiot)
- No newline if the input is empty (#1031, @gpetiot)
- Fix unstable comments around attributes (#1029, @gpetiot)
- Fix extra blank line in sequence (#1021, @Julow)
- Check functor arguments when computing placement of doc comments (#1013, @Julow)
- Fix indentation of labelled args (#1006, @gpetiot)
- Fix linebreak between or-cases with comments when
break-cases=all
(#1002, @gpetiot) - Fix unstable unattached doc comment in records (#998, @Julow)
- Fix string literal changed (#995, @Julow)
- Fix type variable (#996, @Julow)
- Fix crash on extension sequence (#992, @gpetiot)
- Fix position of expressions regarding of comments in infix-op expressions (#986, @gpetiot)
- Escape special characters in external declaration (#988, @Julow)
- Fix parens around constrained expr with attrs (#987, @gpetiot)
- Fix the margin, and correctly breaks comments (#957, @gpetiot)
- Fix formatting of custom indexing operators (#975, @gpetiot)
- Fix position of comments of labelled arrow types (#976, @gpetiot)
- No box around inline odoc styles (#971, @gpetiot)
- Fix boxing of collection expressions/patterns (#960, @gpetiot)
- Fix crash on record expr with pack fields (#963, @Julow)
- Fix letop in subexpr (#956, @hhugo)
Internal
- Take file kind from --name when formatting stdin (#1119, @Julow)
- Make Fmt.t abstract (#1109, @Julow)
- Future-proof Fmt API in case Fmt.t goes abstract (#1106, @emillon)
- Future-proof
Fmt
API in caseFmt.t
goes abstract (#1106, @emillon) - Optional names for formatting boxes in debug output (#1083, @gpetiot)
- Check ocamlformat error codes in the testsuite (#1084, @emillon)
- Clean
Translation_unit
(#1078, @gpetiot) - Use dune file generation in test/passing/dune (#1082, @emillon)
- CI: factorize tests and check reason build (#1079, @gpetiot)
- Use short form for action in src/dune (#1076, @emillon)
- Cleanup
sequence_blank_line
(#1075, @Julow) - CI: use a script travis-ci.sh to simplify .travis.yml (#1063, @gpetiot)
- Remove utility functions from
Fmt_ast
(#1059, @gpetiot) - CI: use opam-2.0.5 in Travis (#1044, @XVilka)
- CI: check the build with OCaml 4.07.1 and 4.08.0 (#1036, @Julow)
- Use the same sets of options for both branches by default in
test_branch.sh
(#1033, @gpetiot) - Fix
test_branch.sh
and CI checking of CHANGES.md (#1032, #1034, @Julow) - Fix flag of git-worktree in
test_branch.sh
andbisect.sh
(#1027, @gpetiot) - Remove the
bisect_ppx
dependency and clean theMakefile
(#1005, @Julow) - Use a
CHANGES.md
log file again (#1023, @gpetiot) - Support OCaml 4.09.0 (add the odoc.1.4.2 dependency) (#1024, @gpetiot)
- Update labels of issue templates (#1017, @gpetiot)
- Update labels in
CONTRIBUTING.md
(#1007, @gpetiot) - Allow to ignore invalid options (#984, @hhugo).
The
--ignore-invalid-option
flag is added to ignore invalid options in.ocamlformat
files. - Improve the documentation of
--doc-comments
(#982, @Julow) - Remove symbolic links and change naming convention of tests (#980, @gpetiot)
- Change the type of
fmt_code
(#974, @gpetiot) - Simplify
Makefile
(#973, @hhugo) - Dune should not be flagged as a build dep anymore (#954, @gpetiot)