package ocamlformat

Build not checked
  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.26.1

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. cmdliner >= "1.1.0"
  5. ocaml >= "4.08" & < "5.2"

Dev Dependencies (5)

  1. odoc with-doc
  2. ocp-indent with-test & = "1.8.1"
  3. ocamlformat-rpc-lib with-test & = version
  4. dune < "3.22" & with-test
  5. cmdliner with-test & >= "1.2.0"

Optional Dependencies

None

Used by (100)

  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. awsm-codegen
  12. bastet < "2.0.0"
  13. binsec >= "0.8.1" & < "0.11.0"
  14. bitpack_serializer
  15. brisk-reconciler
  16. CamelCase
  17. canary >= "0.0.4"
  18. coap
  19. coap-core
  20. coap-server-lwt
  21. diff
  22. diskuvbox < "0.2.0"
  23. dream-inertia
  24. drom
  25. drom_lib
  26. drom_toml
  27. dump_ocamlformat
  28. dune_deps_extra
  29. ephemeral
  30. ez_cmdliner >= "0.2.0"
  31. ez_config >= "0.2.0"
  32. ez_file >= "0.2.0" & < "0.5.0"
  33. ez_hash < "0.5.3"
  34. ez_opam_file
  35. ez_search
  36. ez_subst
  37. fromager
  38. guardian != "0.1.0"
  39. header-check
  40. highway
  41. html_of_jsx
  42. js_of_ocaml-webgpu >= "0.2"
  43. letters >= "0.2.0" & != "0.3.1"
  44. lunar
  45. mehari >= "0.5"
  46. melange-fest
  47. melange-fetch >= "0.2.0"
  48. melange-json >= "1.2.0" & < "2.0.0"
  49. melange-radix-icons >= "0.1.0"
  50. melange-str
  51. mlx
  52. module-graph
  53. mqtt
  54. nel
  55. noCanren
  56. ocaml-lsp-server < "1.9.0"
  57. ocamlmerlin-mlx >= "0.11"
  58. ocp-search
  59. ocplib_stuff >= "0.3.0"
  60. oktree
  61. opam-bin >= "0.9.5"
  62. opam_bin_lib >= "0.9.5"
  63. owi >= "0.2"
  64. parseff < "0.2.0"
  65. pgn_to_tex < "0.1.0"
  66. pidgin
  67. pidgio
  68. polars
  69. polars_async
  70. ppx_deriving_jsonschema < "0.0.7"
  71. prelude >= "0.4"
  72. primavera
  73. psmt2-frontend >= "0.3.0"
  74. query-json
  75. quickjs < "0.5.0"
  76. rea < "0.2.0"
  77. react-rules-of-hooks-ppx
  78. red-black-tree
  79. scope
  80. server-reason-react < "0.4.0"
  81. signal
  82. sihl < "0.1.0"
  83. slipshow < "0.0.33"
  84. slugline
  85. smtml >= "0.10.0" & < "0.24.0"
  86. solidity-alcotest
  87. solidity-common
  88. solidity-parser
  89. solidity-test
  90. solidity-typechecker
  91. spectrum >= "0.7.0"
  92. sqids
  93. styled-ppx
  94. synchronizer
  95. tabr
  96. universal-portal
  97. virtfs
  98. yamlx = "0.4.0"
  99. yocaml >= "2.0.0"
  100. zanuda < "1.1.0"

Conflicts

None

Build status

Results of building ocamlformat with each compiler on check.ci.ocaml.org, run of against opam-repository 8a77e58. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

This version is not in the latest run; the versions below are.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
0.29.0 n/a good good good good
0.28.1 good good good good good
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure