Automatic formatting¶
Dune can be set up to run automatic formatters for source code.
It can use ocamlformat to format OCaml source code (*.ml
and *.mli
files) and refmt to format Reason source code (*.re
and *.rei
files).
Enabling automatic formatting¶
This feature is enabled by adding the following to the dune-project
file:
(using fmt 1.1)
Formatting a project¶
When this feature is active, an alias named fmt
is defined. When built, it
will format the source files in the corresponding project and display the
differences:
$ dune build @fmt
--- hello.ml
+++ hello.ml.formatted
@@ -1,3 +1 @@
-let () =
- print_endline
- "hello, world"
+let () = print_endline "hello, world"
It is then possible to accept the correction by calling dune promote
to
replace the source files by the corrected versions.
$ dune promote
Promoting _build/default/hello.ml.formatted to hello.ml.
As usual with promotion, it is possible to combine these two steps by running
dune build @fmt --auto-promote
.
Only enabling it for certain languages¶
By default, formatting will be enabled for all languages present in the project
that dune knows about. This is not always desirable, for example if in a mixed
Reason/OCaml project, one only wants to format the Reason files to avoid pulling
ocamlformat
as a dependency.
In these cases, it is possible to use the enabled_for
argument to restrict
the languages that are considered for formatting.
(using fmt 1.1 (enabled_for reason))
Version history¶
1.1¶
Format Dune files.
1.0¶
Format OCaml (using ocamlformat) and Reason (using refmt) source code.