This module adds OCaml support to Doom Emacs, powered by tuareg-mode.
- Code completion, documentation look-up, code navigation and refactoring (merlin)
- Type, documentation and function argument display on idle (merlin-eldoc)
- REPL (utop)
- Syntax-checking (
merlinwith flycheck-ocaml) - Auto-indentation (ocp-indent)
- Code formatting (ocamlformat)
- Dune file format (dune)
This module provides no flags.
This module has no hard dependencies, but it is recommanded that you install opam and the following opam (optional) packages:
opam install merlin utop ocp-indent dune ocamlformat- The following files should have syntax highlighting support:
.ml{i,p,y,},.eliom{i,},jbuild,dune,opam merlin-modeis activated whenever a.merlinfile is found (including in a parent directory) andocamlmerlinexecutable is present- Line-based auto-indentation is provided by
ocp-indent, if it is available.
- If
:completion companyis enabled then autocomplete is provided bymerlin - When
:checkers syntaxis enabled thenflycheck-ocamlis activated to do on-the-fly syntax/type checking viamerlin, otherwise this is only done when the file is saved. - Spell checking is activated in comments if
:checkers spellis active - A REPL is provided if
utopis installed and:tools evalis active - If
:editor formatis enabled, theocamlformatexecutable is available and there is an.ocamlformatfile present thenformat-all-bufferis bound toocamlformat, otherwise toocp-indent - If
:editor multiple-cursorsis enabled then identifiers can be refactored withv Rand multiple cursors (this correctly matches identifier occurrences according to scope, it is not purely a textual match) - If
:emacs imenuis enabled then top level symbols (modules, type, functions, etc.) can be looked up usingSPC / i
Run doom sync to install all packages and doom doctor to diagnose missing
tools.
| Command | Key | Description |
|---|---|---|
merlin-type-enclosing | SPC m t | display type under point |
tuareg-find-alternate-file | SPC m a | switch between .ml and .mli |
merlin-locate | gd | lookup definition |
merlin-occurences | SPC c D | lookup references |
merlin-document | K | lookup documentation |
merlin-imenu | SPC / 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 |
set-ligatures!is called with the full tuareg prettify symbol list, this can cause columns to change as certain keywords are shortened (e.g.funbecomes λ.tuareg-opam-update-envis called the first timetuaregis loaded