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?