package ocamlformat

  1. Overview
  2. Docs

Description

ocamlformat is a code formatter for OCaml. It comes with opinionated default settings but is also fully customizable to suit your coding style.

  • Profiles: ocamlformat offers profiles we predefined formatting configurations. Profiles include default, ocamlformat, janestreet.
  • Configurable: Users can change the formatting profile and configure every option in their .ocamlformat configuration file.
  • Format Comments: ocamlformat can format comments, docstrings, and even code blocks in your comments.
  • RPC: ocamlformat provides an RPC server that can be used by other tools to easily format OCaml Code.

Added to opam-repository:

README

ocamlformat

OCaml Code Formatter.

OCaml-CI Build Status

ocamlformat is a code formatter for OCaml. It comes with opinionated default settings but is also fully customizable to suit your coding style.

  • Profiles: ocamlformat offers profiles we predefined formatting configurations. Profiles include default, ocamlformat, janestreet.
  • Configurable: Users can change the formatting profile and configure every option in their .ocamlformat configuration file.
  • Format Comments: ocamlformat can format comments, docstrings, and even code blocks in your comments.
  • RPC: ocamlformat provides an RPC server that can bed used by other tools to easily format OCaml Code.

ocamlformat is part of the OCaml Platform, the recommended set of tools for OCaml.

Getting Started

Installation

To use ocamlformat, you will need OCaml and opam (the OCaml package manager) installed on your system. Visit the OCaml.org installation page for instructions.

With OCaml and opam installed, you can install ocamlformat with:

opam install ocamlformat

Usage

Formatting your code is as easy as running:

ocamlformat file.ml

To configure ocamlformat to your liking, create an .ocamlformat configuration file in your project with settings like:

profile = default
version = 0.29.0

Refer to our documentation or use ocamlformat --help for a full list of configuration options.

To make formatting your code even easier, use the dune build system:

dune fmt

Documentation

The full documentation for ocamlformat, including comprehensive user and API guides, can be found on OCaml.org.

Contributing

Contributing Guide

We wholeheartedly welcome contributors! To start, please read our Contributing Guide to familiarize yourself with our development process, including how to propose and how to start hacking on ocamlformat.

Hacking Guide

In addition to the Contributing Guide, we provide a Hacking Guide for ocamlformat developers. It contains in-depth explanation of development processes, such as running tests, releasing ocamlformat, etc.

Code of Conduct

In order to foster a welcoming and respectful community, ocamlformat has adopted the OCaml Code of Conduct.

Roadmap

Interested in the future of ocamlformat? Take a look at our Roadmap to understand our vision and planned advancements for ocamlformat.

Discussions

For conversations on ongoing development, be sure to visit the ocamlformat section of the OCaml Discuss forum.

License

ocamlformat is distributed under the terms of the MIT License. See the LICENSE file for complete details.

Acknowledgments

We gratefully acknowledge the individuals and organizations that have significantly contributed to ocamlformat.

ocamlformat owes its existance to its initial author, Josh Berdine. We also want to express our appreciation to Hugo Heuzard, Guillaume Petiot, and Jules Aguillon. Their significant contributions have been instrumental to the advancement of ocamlformat.

Moreover, our gratitude extends to Facebook, who fostered the inception of ocamlformat as part of their work on the ReasonML project. Jane Street and Tarides have also provided financial support and contributed to the ongoing development of the project.

Dependencies (5)

  1. re >= "1.10.3"
  2. ocamlformat-lib = version
  3. dune >= "2.8"
  4. csexp >= "1.4.0"
  5. ocaml >= "4.08"

Dev Dependencies (4)

  1. odoc with-doc
  2. ocamlformat-rpc-lib with-test & = version
  3. dune < "3.22" & with-test
  4. cmdliner with-test = "false" & >= "1.1.0" | with-test & >= "1.2.0"

  1. ask
  2. ask-integrator
  3. autofonce
  4. autofonce_config
  5. autofonce_core
  6. autofonce_lib
  7. autofonce_m4
  8. autofonce_misc
  9. autofonce_patch
  10. autofonce_share
  11. awskit >= "0.2.0"
  12. awsm-codegen
  13. bastet < "2.0.0"
  14. bhttp
  15. bitpack_serializer
  16. brisk-reconciler
  17. CamelCase
  18. canary >= "0.0.4"
  19. cdp
  20. claudius
  21. coap
  22. coap-core
  23. coap-server-lwt
  24. diff
  25. diskuvbox < "0.2.0"
  26. dream-inertia
  27. drom
  28. drom_lib
  29. drom_toml
  30. dump_ocamlformat
  31. dune_deps_extra
  32. ephemeral
  33. ez_cmdliner >= "0.2.0"
  34. ez_config >= "0.2.0"
  35. ez_file >= "0.2.0" & < "0.5.0"
  36. ez_hash < "0.5.3"
  37. ez_opam_file
  38. ez_search
  39. ez_subst
  40. fromager
  41. giflib
  42. guardian != "0.1.0"
  43. header-check
  44. hedgehog
  45. hegel
  46. highway
  47. hpke
  48. html_of_jsx >= "0.0.6"
  49. js_of_ocaml-webgpu >= "0.2"
  50. letters >= "0.2.0" & != "0.3.1"
  51. lunar
  52. melange-fest
  53. melange-fetch >= "0.2.0"
  54. melange-json >= "1.2.0"
  55. melange-radix-icons >= "0.1.0"
  56. melange-str
  57. mlx
  58. module-graph
  59. mqtt
  60. nel
  61. noCanren
  62. object
  63. ocaml-lsp-server < "1.9.0" | >= "1.28.0-506~preview"
  64. ocamlmerlin-mlx >= "0.11"
  65. ochre
  66. ocp-search
  67. ocplib_stuff >= "0.3.0"
  68. ohttp
  69. oktree
  70. opam-bin >= "0.9.5"
  71. opam_bin_lib >= "0.9.5"
  72. owi >= "0.2"
  73. parseff
  74. pgn_to_tex
  75. pidgin
  76. pidgio
  77. polars
  78. polars_async
  79. ppx_deriving_ezjsonm >= "0.5.0"
  80. ppx_deriving_jsonschema
  81. ppx_deriving_melange
  82. ppx_deriving_yaml >= "0.5.0"
  83. ppx_deriving_yamlx
  84. ppx_mixins
  85. prelude >= "0.4"
  86. primavera
  87. psmt2-frontend >= "0.3.0"
  88. query-json
  89. quickjs >= "0.2.0" & < "0.5.0"
  90. raylib >= "2.0.0"
  91. rea < "0.2.0"
  92. react-rules-of-hooks-ppx
  93. red-black-tree
  94. scope
  95. signal
  96. sihl < "0.1.0"
  97. slugline
  98. smtml >= "0.10.0"
  99. solidity-alcotest
  100. solidity-common
  101. solidity-parser
  102. solidity-test
  103. solidity-typechecker
  104. soteria
  105. spectrum >= "0.7.0"
  106. sqids
  107. styled-ppx
  108. symex
  109. synchronizer
  110. tabr
  111. virtfs
  112. yamlx >= "0.4.0"
  113. yocaml >= "2.0.0"
  114. zanuda < "1.1.0"

Conflicts

None