This module adds OCaml support to Doom Emacs, powered by doom-package:tuareg-mode.
- Code completion, documentation look-up, code navigation and refactoring (doom-package:merlin)
- Type, documentation and function argument display on idle (doom-package:merlin-eldoc)
- REPL (doom-package:utop)
- Syntax-checking (doom-package:merlin with doom-package:flycheck-ocaml)
- Auto-indentation (doom-package:ocp-indent)
- Code formatting (doom-package:ocamlformat)
- Dune file format (doom-package:dune)
This module needs a maintainer. Become a maintainer?
- +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.
- doom-package:dune
- doom-package:ocamlformat if doom-module::editor format
- doom-package:ocp-indent
- doom-package:tuareg
- doom-package:utop if doom-module::tools eval
- unless doom-module:+lsp
- doom-package:flycheck-ocaml if doom-module::checkers syntax
- doom-package:merlin
- doom-package:merlin-company
- doom-package:merlin-eldoc
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 λ).tuareg-opam-update-env
is called the first time doom-package:tuareg is loaded
This module does not have a changelog yet.
Enable this module in your doom!
block.
This module requires the following packages available through opam:
- merlin
- utop
- ocp-indent
- dune
- ocamlformat
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) andocamlmerlin
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 |
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 thenformat-all-buffer
is bound toocamlformat
, otherwise toocp-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.
There are no known problems with this module. Report one?
This module has no FAQs yet. Ask one?
This module has no appendix yet. Write one?