mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
200ok-ch/counsel-jq@104c77b -> 200ok-ch/counsel-jq@f5bfed8 Andersbakken/rtags@e6c7005 -> Andersbakken/rtags@63a7d9b FStarLang/fstar-mode.el@5670fc0 -> FStarLang/fstar-mode.el@3afbf04 Kungsgeten/org-brain@6e3d861) -> Kungsgeten/org-brain@1ae4fd4) NixOS/nix-mode@bb0b49e -> NixOS/nix-mode@e32c6bf OVYA/php-cs-fixer@95eace9 -> OVYA/php-cs-fixer@c5b5d8a ProofGeneral/PG@0fdb1ae -> ProofGeneral/PG@702f5b9 Sarcasm/irony-mode@1e1aaba -> Sarcasm/irony-mode@76fd37f abicky/nodejs-repl.el@f5ce3d5 -> abicky/nodejs-repl.el@3b84105 agda/agda@08191e6 -> agda/agda@5070bd8 amake/flutter.el@78b3c57 -> amake/flutter.el@696228a ananthakumaran/tide@ac5f070 -> ananthakumaran/tide@a43a37b arnested/php-extras@81ebd7c -> arnested/php-extras@d410c5a borkdude/flycheck-clj-kondo@152df7f -> borkdude/flycheck-clj-kondo@a558bda brotzeit/rustic@7c9d55b -> brotzeit/rustic@91ad5db chachi/cuda-mode@9ae9eac -> chachi/cuda-mode@7f59351 clojure-emacs/cider@f1c2a79 -> clojure-emacs/cider@ef47c1d clojure-emacs/clojure-mode@75c2889 -> clojure-emacs/clojure-mode@53ef8ac cpitclaudel/company-coq@b096cb5 -> cpitclaudel/company-coq@4da7b41 cython/cython@ba6cbed -> cython/cython@21b4e53 dgutov/robe@082da38 -> dgutov/robe@f04dcc7 dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe elixir-editors/emacs-elixir@01b3324 -> elixir-editors/emacs-elixir@b78e7f7 emacs-ess/ESS@a694b26 -> emacs-ess/ESS@d013616 emacs-lsp/lsp-dart@c1ff5ce -> emacs-lsp/lsp-dart@b81b1ec emacs-lsp/lsp-java@3f1ed17 -> emacs-lsp/lsp-java@f43b00a emacs-lsp/lsp-metals@e42c0b2) -> emacs-lsp/lsp-metals@31dafff) emacs-lsp/lsp-pyright@ccd0007 -> emacs-lsp/lsp-pyright@d9e7d3c emacs-lsp/lsp-python-ms@a0c56f4 -> emacs-lsp/lsp-python-ms@c4ebc7a emacs-php/php-mode@f4c7c69 -> emacs-php/php-mode@7e5722c emacs-straight/adaptive-wrap@319db64 -> emacs-straight/adaptive-wrap@8f60ee7 emacs-straight/csv-mode@6353374 -> emacs-straight/csv-mode@eb3ec00 emacs-straight/org-mode@a88806b -> emacs-straight/org-mode@7c8dce7 emacs-straight/rainbow-mode@fdff98b -> emacs-straight/rainbow-mode@949166c emacs-straight/sml-mode@60b01d7 -> emacs-straight/sml-mode@0338e97 emacs-typescript/typescript.el@e6f68ab -> emacs-typescript/typescript.el@54f14c4 erlang/otp@8efb945 -> erlang/otp@8fc0641 factor/factor@c6e15bd -> factor/factor@94a922a felipeochoa/rjsx-mode@0061587 -> felipeochoa/rjsx-mode@b697fe4 fsharp/emacs-fsharp-mode@68dfc22 -> fsharp/emacs-fsharp-mode@13fbf4c fxbois/web-mode@b4b0a85 -> fxbois/web-mode@890e837 galaunay/poetry.el@eb238d9 -> galaunay/poetry.el@d5163fe godotengine/emacs-gdscript-mode@55a6637 -> godotengine/emacs-gdscript-mode@75fe658 greghendershott/racket-mode@0ca8b26 -> greghendershott/racket-mode@3563081 haskell/haskell-mode@e726776 -> haskell/haskell-mode@0d39c84 hlissner/evil-org-mode@658dadf) -> hlissner/evil-org-mode@a9706da) hvesalai/emacs-sbt-mode@4358ed8 -> hvesalai/emacs-sbt-mode@7b121fc hvesalai/emacs-scala-mode@1d08e88 -> hvesalai/emacs-scala-mode@9d3b56e hylang/hy-mode@7256844 -> hylang/hy-mode@5253533 joaotavora/sly@fce4f9b -> joaotavora/sly@68561f1 jorgenschaefer/emacs-buttercup@cccdedf -> jorgenschaefer/emacs-buttercup@2f24a44 jorgenschaefer/pyvenv@861998b -> jorgenschaefer/pyvenv@0bf4b87 josteink/csharp-mode@f46d656 -> josteink/csharp-mode@4916829 jrblevin/markdown-mode@152eae2 -> jrblevin/markdown-mode@dcad557 kaushalmodi/ox-hugo@1909c6e) -> kaushalmodi/ox-hugo@f24c9bd) nim-lang/nim-mode@16a245e -> nim-lang/nim-mode@d832d6b ocaml-ppx/ocamlformat@1dec6c3 -> ocaml-ppx/ocamlformat@860266b ocaml/dune@f967df6 -> ocaml/dune@4d097cd ocaml/merlin@06833e9 -> ocaml/merlin@28193d5 oer/org-re-reveal@2035217 -> oer/org-re-reveal@0062756 org-roam/org-roam@d913447) -> org-roam/org-roam@be95b42) rexim/org-cliplink@82402ca -> rexim/org-cliplink@13e0940 salmanebah/opencl-mode@55cb49c -> salmanebah/opencl-mode@15091ef senny/rvm.el@6897576) -> senny/rvm.el@b2498a4) skuro/plantuml-mode@5889166 -> skuro/plantuml-mode@ea45a13 swift-emacs/swift-mode@e65a80a -> swift-emacs/swift-mode@0bc8d8d technomancy/fennel-mode@7a8824a -> technomancy/fennel-mode@fa56106 wbolster/emacs-python-pytest@a2f88b1 -> wbolster/emacs-python-pytest@4a1c4c8 xuchunyang/elisp-demos@3cca496 -> xuchunyang/elisp-demos@ed9578d yoshiki/yaml-mode@68fecb5 -> yoshiki/yaml-mode@fc5e1c5 Fixes #4237
lang/ocaml
Table of Contents TOC
Description
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 (
merlin
with flycheck-ocaml) - Auto-indentation (ocp-indent)
- Code formatting (ocamlformat)
- Dune file format (dune)
Module Flags
This module provides no flags.
Plugins
Prerequisites
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
Features
- 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.
Configuration
- If
:completion company
is enabled then autocomplete is provided bymerlin
- When
:checkers syntax
is enabled thenflycheck-ocaml
is 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 spell
is active - A REPL is provided if
utop
is installed and:tools eval
is active - If
:editor format
is enabled, theocamlformat
executable is available and there is an.ocamlformat
file present thenformat-all-buffer
is bound toocamlformat
, otherwise toocp-indent
- If
:editor multiple-cursors
is enabled then identifiers can be refactored withv R
and multiple cursors (this correctly matches identifier occurrences according to scope, it is not purely a textual match) - If
:emacs imenu
is 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.
Appendix
Commands
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 |
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 λ.tuareg-opam-update-env
is called the first timetuareg
is loaded