Files
doomemacs/modules/lang/ocaml
Henrik Lissner 8951de19d8 bump: :lang
JuliaEditorSupport/julia-emacs@2aca8cf585 -> JuliaEditorSupport/julia-emacs@0f4d74f904
ProofGeneral/PG@b30d65de80 -> ProofGeneral/PG@d668946929
abicky/nodejs-repl.el@03d0b64768 -> abicky/nodejs-repl.el@130d49b073
agda/agda@819993172d -> agda/agda@3344ca8058
ardumont/markdown-toc@3d724e518a -> ardumont/markdown-toc@d2fb4cbd95
babashka/neil@78ffab1868 -> babashka/neil@0b7373dd1b
clojure-emacs/cider@c228dec27d -> clojure-emacs/cider@f00e83d338
clojure-emacs/clojure-mode@59888c84b6 -> clojure-emacs/clojure-mode@eabe29b076
davazp/graphql-mode@c3baca9280 -> davazp/graphql-mode@ee49531935
dgutov/robe@6bc8a07fc4 -> dgutov/robe@ec4b7e74e9
diml/utop@b490baca21 -> diml/utop@3322adaa52
emacs-ess/ESS@8b4664e4a7 -> emacs-ess/ESS@c72b911d70
emacs-geiser/chicken@a480598b59 -> emacs-geiser/chicken@5f2c1bb446
emacs-geiser/geiser@97ce88463f -> emacs-geiser/geiser@74eed1669a
emacs-jupyter/jupyter@e966c5d3d6 -> emacs-jupyter/jupyter@db8a9e233a
emacs-lsp/lsp-metals@b5139c9593 -> emacs-lsp/lsp-metals@6a6a345a8a
emacs-php/php-mode@31f702ee2d -> emacs-php/php-mode@0f756a8c07
emacs-rustic/rustic@9fdf5c76b2 -> emacs-rustic/rustic@e5c0271f1e
emacs-straight/auctex@0de9730957 -> emacs-straight/auctex@f00256cbfd
emacs-straight/org-mode@6a5d0ed342 -> emacs-straight/org-mode@5a4686915e
emacsorphanage/macrostep@419873665f -> emacsorphanage/macrostep@44faf4f7bf
erlang/otp@094260aba7 -> erlang/otp@3e7f126fe4
fxbois/web-mode@0c83581d1e -> fxbois/web-mode@be2d59c8fa
gcv/julia-snail@dff92c4250 -> gcv/julia-snail@24f79a067b
godotengine/emacs-gdscript-mode@bee7f99c6f -> godotengine/emacs-gdscript-mode@c3d9988984
greghendershott/racket-mode@c5bee6895b -> greghendershott/racket-mode@f2645aadd2
hakimel/reveal.js@0d02d8a303 -> hakimel/reveal.js@e15cf92ccd
hvesalai/emacs-scala-mode@bd0638c32a -> hvesalai/emacs-scala-mode@661337d8aa
jrblevin/markdown-mode@b8637bae07 -> jrblevin/markdown-mode@e100778594
jwiegley/emacs-async@af47d6f930 -> jwiegley/emacs-async@b99658e831
jwiegley/nix-update-el@aab70a3816 -> jwiegley/nix-update-el@77022ccd91
nonsequitur/inf-ruby@6399a36682 -> nonsequitur/inf-ruby@dad78a13f1
ocaml/dune@5ac095c7c0 -> ocaml/dune@098117d229
ocaml/merlin@a36f42a5b1 -> ocaml/merlin@3a806ef87f
oer/org-re-reveal@91610ba9b0 -> oer/org-re-reveal@ab1422c163
org-roam/org-roam@2a630476b3 -> org-roam/org-roam@cad3518788
polymode/poly-R@e4a39caaf4 -> polymode/poly-R@8024e852cf
polymode/polymode@15b6c1e94a -> polymode/polymode@74ba75d4bc
psibi/dhall-mode@87ab69fe76 -> psibi/dhall-mode@fca383a9c4
purescript-emacs/purescript-mode@d187b3d4bb -> purescript-emacs/purescript-mode@07e4d6ecfe
rwv/android-mode@d5332e339a -> rwv/android-mode@67f7c0d7d3
seagle0128/grip-mode@d6c7e33e40 -> seagle0128/grip-mode@df0ba7589d
technomancy/fennel-mode@259470b297 -> technomancy/fennel-mode@3632cc77de
tpapp/julia-repl@bb90cc1fce -> tpapp/julia-repl@317d560218
2025-01-09 23:47:38 -05:00
..
2024-09-14 20:47:39 -04:00
2024-10-20 02:41:50 -04:00
2025-01-09 23:47:38 -05:00

:lang ocaml

Description   unfold

This module adds OCaml support to Doom Emacs, powered by doom-package:tuareg.

Maintainers

This module needs a maintainer. Become a maintainer?

Module flags

+lsp
Enable LSP support for tuareg-mode. Requires doom-module::tools lsp and a langserver (supports ocaml-language-server).
+tree-sitter
Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.

Hacks

  • set-ligatures! is called with the full tuareg prettify symbol list, this can cause columns to change as certain keywords are shortened (e.g. fun becomes λ).
  • opam-switch-set-switch is called the first time doom-package:tuareg and subsequently doom-package:opam-switch-mode are loaded

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module requires the following packages available through opam:

  • merlin
  • utop
  • ocp-indent
  • dune
  • ocamlformat

TODO Usage

󱌣 This module's usage documentation is incomplete. Complete it?

  • The following files should have syntax highlighting support: .ml{i,p,y,}, .eliom{i,}, jbuild, dune, opam
  • merlin-mode is activated whenever a .merlin file is found (including in a parent directory) and ocamlmerlin executable is present
  • Line-based auto-indentation is provided by ocp-indent, if it is available.
Command Key Description
merlin-type-enclosing <localleader> t display type under point
tuareg-find-alternate-file <localleader> a switch between .ml and .mli
merlin-locate g d lookup definition
merlin-occurences SPC c D lookup references
merlin-document K lookup documentation
merlin-imenu SPC s i symbol lookup in file
merlin-iedit-occurrences v R visual refactor identifier under point (multiple cursors)
utop SPC o r open utop as REPL
utop-eval-region SPC c e evaluate selected region in utop
opam-switch-set-switch <localleader> w evaluate selected region in utop

TODO Configuration

󱌣 This module's configuration documentation is incomplete. Complete it?

  • If doom-module::completion company is enabled then autocomplete is provided by doom-package:merlin
  • When doom-module::checkers syntax is enabled then doom-package:flycheck-ocaml is activated to do on-the-fly syntax/type checking via doom-package:merlin, otherwise this is only done when the file is saved.
  • Spell checking is activated in comments if doom-module::checkers spell is active
  • A REPL is provided if doom-package:utop is installed and doom-module::tools eval is active
  • If doom-module::editor format is enabled, the ocamlformat executable is available and there is an .ocamlformat file present then format-all-buffer is bound to ocamlformat, otherwise to ocp-indent
  • If doom-module::editor multiple-cursors is enabled then identifiers can be refactored with v R and multiple cursors (this correctly matches identifier occurrences according to scope, it is not purely a textual match)

Run $ doom sync to install all packages and $ doom doctor to diagnose missing tools.

Troubleshooting

There are no known problems with this module. Report one?

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module has no appendix yet. Write one?