mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
Andersbakken/rtags@65113e2a13 -> Andersbakken/rtags@cdff9b47fc Emacs-Kotlin-Mode-Maintainers/kotlin-mode@0e4bafb31d -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@876cc27dc1 Groovy-Emacs-Modes/groovy-emacs-modes@99eaf70720 -> Groovy-Emacs-Modes/groovy-emacs-modes@84f89b68ec JuliaEditorSupport/julia-emacs@fe6f6f7a80 -> JuliaEditorSupport/julia-emacs@06f6fdb94c NixOS/nix-mode@3cca5b6527 -> NixOS/nix-mode@8e20de5ba7 OVYA/php-cs-fixer@c5b5d8a498 -> OVYA/php-cs-fixer@cc9a3624dc ProofGeneral/PG@bc86736abb -> ProofGeneral/PG@e2b4227e1f Raku/raku-mode@7496ad3a03 -> Raku/raku-mode@eaac071f17 Somelauw/evil-markdown@064fe9b476 -> Somelauw/evil-markdown@8e6cc68af8 StanfordLegion/terra-mode@eab9e59ded -> StanfordLegion/terra-mode@ceef8cae5b amake/flutter.el@960b63576a -> amake/flutter.el@81c524a43c ananthakumaran/tide@ccff099e94 -> ananthakumaran/tide@296c0e0e3a asok/projectile-rails@6a18ada356 -> asok/projectile-rails@30828afbfa beancount/beancount-mode@02fe03ee44 -> beancount/beancount-mode@dbafe6a73d bradyt/dart-mode@43975c9208 -> bradyt/dart-mode@3bac14200f brianc/jade-mode@4dbde92542 -> brianc/jade-mode@111460b056 brotzeit/rustic@6ca73bb3cc -> brotzeit/rustic@804ebfe029 cdominik/cdlatex@614a8d94f6 -> cdominik/cdlatex@f215b70c5c clojure-emacs/clojure-mode@3e426b3a47 -> clojure-emacs/clojure-mode@e1dc7caee7 cython/cython@fae33cf7d4 -> cython/cython@aea4e6b84b dgutov/robe@e1304d123d -> dgutov/robe@fd972e912d emacs-csharp/csharp-mode@093f0f21a9 -> emacs-csharp/csharp-mode@fe8a68e984 emacs-ess/ESS@4fefd0feaa -> emacs-ess/ESS@a7ce81bb76 emacs-geiser/gauche@66e51430bd -> emacs-geiser/gauche@fd52cbaed9 emacs-geiser/geiser@4099dce8f5 -> emacs-geiser/geiser@327ff01e5b emacs-lsp/lsp-metals@ca927e5a83 -> emacs-lsp/lsp-metals@695291761b emacs-php/php-mode@cbf2723264 -> emacs-php/php-mode@535aec8173 emacs-straight/auctex@ea410dce4f -> emacs-straight/auctex@3b0a080ae5 emacs-typescript/typescript.el@1043025d42 -> emacs-typescript/typescript.el@2a58631230 erlang/otp@645ea8110d -> erlang/otp@118cb37bd5 ethereum/emacs-solidity@5f6ef3156f -> ethereum/emacs-solidity@6f7bd1641e factor/factor@b989a860d1 -> factor/factor@7b451bb813 fsharp/emacs-fsharp-mode@93b1fbc31d -> fsharp/emacs-fsharp-mode@c90d762c06 fxbois/web-mode@8ef47935d6 -> fxbois/web-mode@61f057a6ba greghendershott/racket-mode@7f12cb1ff2 -> greghendershott/racket-mode@a879a8d67b haskell/haskell-mode@98ba392236 -> haskell/haskell-mode@8402caa341 hhvm/hack-mode@f9315be699 -> hhvm/hack-mode@4c1c2b0939 idris-hackers/idris-mode@f52ad0b477 -> idris-hackers/idris-mode@3cc9361b4c immerrr/lua-mode@2bd9077dd0 -> immerrr/lua-mode@5a9bee8d5f iyefrat/evil-tex@87445d4d23 -> iyefrat/evil-tex@aa0ddf8e76 jimhourihan/glsl-mode@b071120164 -> jimhourihan/glsl-mode@9b2e5f28e4 joaotavora/sly@41f4d65048 -> joaotavora/sly@540a8c5b9a jrblevin/markdown-mode@359347b2bb -> jrblevin/markdown-mode@862ae8addd jwiegley/emacs-async@9a8cd0c3d5 -> jwiegley/emacs-async@5d365ffc6a liblit/demangle-mode@aaef0bd77a -> liblit/demangle-mode@04f545adab necaris/conda.el@6db0720b6d -> necaris/conda.el@4de6eccda5 ocaml-ppx/ocamlformat@5dd6574d8f -> ocaml-ppx/ocamlformat@22a3707da3 ocaml/dune@75ecfe3421 -> ocaml/dune@4d0a47edd5 ocaml/merlin@5731826810 -> ocaml/merlin@e4791e2298 ocaml/merlin@5731826810 -> ocaml/merlin@e4791e2298 ocaml/tuareg@b59c422759 -> ocaml/tuareg@00faf47a7c pashky/restclient.el@2cc1fd3496 -> pashky/restclient.el@176d9cb655 polymode/polymode@7d1f822f08 -> polymode/polymode@54888d6c15 s-kostyaev/go-gen-test@44c202ac97 -> s-kostyaev/go-gen-test@35df36dcd5 seagle0128/grip-mode@c0ca789903 -> seagle0128/grip-mode@1c82e27bee smihica/emmet-mode@1acb821e01 -> smihica/emmet-mode@6b2e554f7f swift-emacs/swift-mode@1b47a09f1c -> swift-emacs/swift-mode@800efe2910 technomancy/fennel-mode@a908db8696 -> technomancy/fennel-mode@47152970a9 vspinu/company-math@a796053590 -> vspinu/company-math@45778f5731 yoshiki/yaml-mode@3a57058468 -> yoshiki/yaml-mode@63b637f846 ziglang/zig-mode@0babe7ec52 -> ziglang/zig-mode@aba01b6199
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 |
<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 |
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