mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
bbatsov/projectile@bbcf781 -> bbatsov/projectile@46d2010 domtronn/all-the-icons.el@ed8e44d -> domtronn/all-the-icons.el@8c02280 emacsmirror/straight@fc077dd -> emacsmirror/straight@0c7c757 justbur/emacs-which-key@3642c11 -> justbur/emacs-which-key@e48e190 jwiegley/use-package@7d92536 -> jwiegley/use-package@4fb1f9a purcell/ns-auto-titlebar@1efc30d -> purcell/ns-auto-titlebar@60273e7 + :app - :app calendar kidd/org-gcal.el@7445058 -> kidd/org-gcal.el@2cad2d8 - :app irc jorgenschaefer/circe@e5bf5f8 -> jorgenschaefer/circe@89aac22 - :app rss skeeto/elfeed@d0405e6 -> skeeto/elfeed@8fb09ad - :app twitter abo-abo/avy@509471b -> abo-abo/avy@bbf1e73 + :completion - :completion company company-mode/company-mode@5eb7d86 -> company-mode/company-mode@54f60ef sebastiencs/company-box@889d723 -> sebastiencs/company-box@20384f0 - :completion helm emacs-helm/helm@5d224cb -> emacs-helm/helm@e9a1e53 tumashu/posframe@922e4d2 -> tumashu/posframe@7b92a54 - :completion ivy abo-abo/swiper@c6b60d3 -> abo-abo/swiper@9bb6841 raxod502/prescient.el@b11d79b -> raxod502/prescient.el@cc289ba snyball/ivy-posframe@4474956 -> snyball/ivy-posframe@82a63ae + :checkers - :checkers syntax alexmurray/flycheck-posframe@2b3e94c -> alexmurray/flycheck-posframe@c928b5b + :editor - :editor evil emacs-evil/evil@2bc6ca3 -> emacs-evil/evil@1e7aa5b emacs-evil/evil-collection@3e62b6b -> emacs-evil/evil-collection@c136589 - :editor fold seregaxvm/vimish-fold@6368523 -> seregaxvm/vimish-fold@9d12e39 - :editor god emacsorphanage/god-mode@1eb6ef3 -> emacsorphanage/god-mode@ad2e674 - :editor lispy abo-abo/lispy@cdaa9c7 -> abo-abo/lispy@0a9dcfd noctuid/lispyville@25a7012 -> noctuid/lispyville@0f13f26 - :editor objed clemera/objed@e89d8da -> clemera/objed@dea5a64 - :editor snippets joaotavora/yasnippet@5b1217a -> joaotavora/yasnippet@5cbdbf0 hlissner/doom-snippets@21b7c8d -> hlissner/doom-snippets@60c57d6 - :editor word-wrap emacs-straight/adaptive-wrap@1810c0e -> emacs-straight/adaptive-wrap@319db64 + :emacs - :emacs dired purcell/diredfl@83567d0 -> purcell/diredfl@cd052df - :emacs ibuffer purcell/ibuffer-projectile@504b0ed -> purcell/ibuffer-projectile@ecbe482 purcell/ibuffer-vc@1249c1e -> purcell/ibuffer-vc@5fa6aea - :emacs undo emacs-straight/undo-tree@5b6df03 -> emacs-straight/undo-tree@7523823 ideasman42/emacs-undo-fu@46de023 -> ideasman42/emacs-undo-fu@c0806c1 - :emacs vc magit/magit@d459e52 -> magit/magit@321214c pidu/git-timemachine@391eb61 -> pidu/git-timemachine@8d67575 + :email + :email notmuch https://git.notmuchmail.org/git/notmuch@ad9c2e9 -> https://git.notmuchmail.org/git/notmuch@8776faf org-mime/org-mime@9f84446 -> org-mime/org-mime@9bb6351 + :email wanderlust wanderlust/semi@57a948c -> wanderlust/semi@10897f0 + :input - :input japanese skk-dev/ddskk@fe7f82b -> skk-dev/ddskk@275a831 + :lang - :lang agda agda/agda@8eb0d01 -> agda/agda@36738c1 - :lang cc Andersbakken/rtags@080cb0e -> Andersbakken/rtags@b57b360 MaskRay/emacs-ccls@44f1fb3 -> Sarcasm/irony-mode@5f75fc0 emacsmirror/cmake-mode@bfe85bc -> emacsmirror/cmake-mode@e58c411 - :lang common-lisp joaotavora/sly@becf7b7 -> joaotavora/sly@155cb06 - :lang coq ProofGeneral/PG@0f0bb2c -> ProofGeneral/PG@03e427a cpitclaudel/company-coq@7ec8058 -> cpitclaudel/company-coq@b096cb5 - :lang dart emacs-lsp/lsp-dart@a06fc74 -> emacs-lsp/lsp-dart@437c548 - :lang elixir elixir-editors/emacs-elixir@02a3922 -> elixir-editors/emacs-elixir@01b3324 - :lang elm jcollard/elm-mode@7782be0 -> jcollard/elm-mode@363da4b - :lang emacs-lisp clojure-emacs/cider@9e117c2 -> clojure-emacs/cider@a89b694 clojure-emacs/clojure-mode@da9f1ec -> clojure-emacs/clojure-mode@84ed16c jorgenschaefer/emacs-buttercup@e71a40f -> jorgenschaefer/emacs-buttercup@0e5eae0 xuchunyang/elisp-demos@4cd55a3 -> xuchunyang/elisp-demos@8c97481 - :lang erlang erlang/otp@3065fbf -> erlang/otp@d9bc785 - :lang ess emacs-ess/ESS@3c2fb63 -> emacs-ess/ESS@1baf8bf - :lang fuel factor/factor@497d649 -> factor/factor@3fdb032 - :lang fsharp fsharp/emacs-fsharp-mode@8c86e38 -> fsharp/emacs-fsharp-mode@3e41fe1 - :lang fstar FStarLang/fstar-mode.el@aaaf256 -> FStarLang/fstar-mode.el@bd28cb8 - :lang haskell jyp/dante@7411904 -> jyp/dante@c516bc9 - :lang hy hylang/hy-mode@e2d5fec -> hylang/hy-mode@55e84ca - :lang idris idris-hackers/idris-mode@acc8835 -> idris-hackers/idris-mode@b77eadd - :lang java mopemope/meghanada-emacs@e119c7b -> mopemope/meghanada-emacs@1e41f7f - :lang javascript ananthakumaran/tide@13e7af7 -> ananthakumaran/tide@f0b6dac emacs-typescript/typescript.el@0fc7297 -> emacs-typescript/typescript.el@42a60e5 mooz/js2-mode@5049e54 -> mooz/js2-mode@40aab27 - :lang julia JuliaEditorSupport/julia-emacs@1c122f1 -> JuliaEditorSupport/julia-emacs@b5f5983 tpapp/julia-repl@5fa04de -> tpapp/julia-repl@d073acb - :lang kotlin Emacs-Kotlin-Mode-Maintainers/kotlin-mode@ab61099 -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@8e6dd57 - :lang latex emacs-straight/adaptive-wrap@1810c0e -> emacs-straight/adaptive-wrap@319db64 emacs-straight/auctex@6abf890 -> emacs-straight/auctex@59e251c iyefrat/evil-tex@bb01576 -> iyefrat/evil-tex@06234c9 - :lang lean leanprover/lean-mode@65b55b1 -> leanprover/lean-mode@6b43776 - :lang ledger ledger/ledger-mode@7d78645 -> ledger/ledger-mode@805507f - :lang markdown Fanael/edit-indirect@935ded3 -> Fanael/edit-indirect@bdc8f54 jrblevin/markdown-mode@fa9fa20 -> jrblevin/markdown-mode@ef2cb4d seagle0128/grip-mode@52768a0 -> seagle0128/grip-mode@281ada2 - :lang nix NixOS/nix-mode@a00b3f7 -> NixOS/nix-mode@0cf1ea1 - :lang ocaml ocaml-ppx/ocamlformat@27a49cc -> ocaml-ppx/ocamlformat@cd0eaa8 ocaml/dune@66cfb3a -> ocaml/dune@daea74e - :lang org abo-abo/org-download@768716b -> abo-abo/org-download@67b3c74 bastibe/org-journal@a6378dc -> bastibe/org-journal@a2728e2 dzop/emacs-jupyter@785edbb -> dzop/emacs-jupyter@360cae2 emacs-straight/org-mode@a1e5bee -> emacs-straight/org-mode@220f2b0 hniksic/emacs-htmlize@86f22f2 -> hniksic/emacs-htmlize@4920510 integral-dw/org-superstar-mode@1748185 -> integral-dw/org-superstar-mode@94f35c2 oer/org-re-reveal@c548e23 -> oer/org-re-reveal@7fe39d5 org-roam/company-org-roam@5d7ccd9 -> org-roam/company-org-roam@1132663 org-roam/org-roam@0aa0a7c -> org-roam/org-roam@c33867e - :lang php emacs-php/php-mode@4345dfd -> emacs-php/php-mode@f4c7c69 jwiegley/emacs-async@86aef2c -> jwiegley/emacs-async@36a1015 - :lang plantuml skuro/plantuml-mode@ea45a13 -> skuro/plantuml-mode@5889166 - :lang python cython/cython@0208bf2 -> cython/cython@fcfd16c emacs-lsp/lsp-pyright@3cf2e8f -> emacs-lsp/lsp-pyright@9603dda emacs-lsp/lsp-python-ms@7a502e6 -> emacs-lsp/lsp-python-ms@a884a9a necaris/conda.el@9d02130 -> necaris/conda.el@9f7eea1 wbolster/emacs-python-pytest@6a3b4e5 -> wbolster/emacs-python-pytest@fc056fa - :lang racket greghendershott/racket-mode@29afd25 -> greghendershott/racket-mode@c55fd70 - :lang rest pashky/restclient.el@e8ca809 -> pashky/restclient.el@ac8aad6 - :lang ruby nonsequitur/inf-ruby@f3c927c -> nonsequitur/inf-ruby@9f0f79f - :lang rust brotzeit/rustic@0ec0688 -> brotzeit/rustic@75b9920 - :lang scala emacs-lsp/lsp-metals@3d4d4b7 -> emacs-lsp/lsp-metals@039aa72 hvesalai/emacs-sbt-mode@633a315 -> hvesalai/emacs-sbt-mode@4358ed8 hvesalai/emacs-scala-mode@46bb948 -> hvesalai/emacs-scala-mode@1d08e88 - :lang scheme flatwhatson/flycheck-guile@f37b614 -> flatwhatson/flycheck-guile@2940f16 jaor/geiser@0c86289 -> jaor/geiser@adc5c4a - :lang solidity ethereum/emacs-solidity@022b315 -> ethereum/emacs-solidity@d166a86 - :lang swift emacs-lsp/lsp-sourcekit@04d75b6 -> emacs-lsp/lsp-sourcekit@130f7a8 swift-emacs/swift-mode@2ab9ea1 -> swift-emacs/swift-mode@d266fbd - :lang web fxbois/web-mode@a2badd0 -> fxbois/web-mode@60ffd87 - :lang yaml yoshiki/yaml-mode@cecf4b1 -> yoshiki/yaml-mode@68fecb5 + :term - :term term manateelazycat/multi-term@7307ddd -> manateelazycat/multi-term@017c77c + :tools - :tools ansible yoshiki/yaml-mode@34648f2 -> yoshiki/yaml-mode@68fecb5 - :tools debugger emacs-lsp/dap-mode@85a6163 -> emacs-lsp/dap-mode@4b18543 realgud/realgud@5b0ed08 -> realgud/realgud@332d136 tumashu/posframe@6d604a7 -> tumashu/posframe@7b92a54 - :tools docker Silex/docker.el@d6233bd -> Silex/docker.el@3773112 - :tools editorconfig editorconfig/editorconfig-emacs@9a73ff7 -> editorconfig/editorconfig-emacs@9bc1343 - :tools ein millejoh/emacs-ipython-notebook@ccbed30 -> millejoh/emacs-ipython-notebook@99a4718 - :tools lookup jacktasia/dumb-jump@b815731 -> jacktasia/dumb-jump@0d74b2f - :tools lsp emacs-lsp/helm-lsp@5c960e7 -> emacs-lsp/helm-lsp@4263c96 emacs-lsp/lsp-mode@edb8119 -> emacs-lsp/lsp-mode@4145a70 emacs-lsp/lsp-ui@1f3e970 -> emacs-lsp/lsp-ui@c39ae37 joaotavora/eglot@fb6b17e -> joaotavora/eglot@5f873d2 - :tools magit magit/forge@2c48746 -> magit/forge@feee7e2 magit/magit@798aff5 -> magit/magit@321214c - :tools pass zx2c4/password-store@07b169e -> zx2c4/password-store@06f4999 - :tools rgb emacs-straight/rainbow-mode@f780ddb -> emacs-straight/rainbow-mode@fdff98b + :ui - :ui doom hlissner/emacs-doom-themes@8a5538e -> hlissner/emacs-doom-themes@24023de - :ui fill-column laishulu/hl-fill-column@43cb3c3 -> laishulu/hl-fill-column@5782a91 - :ui hl-todo tarsius/hl-todo@3bba459 -> tarsius/hl-todo@0598b98 - :ui hydra abo-abo/hydra@87873d7 -> abo-abo/hydra@112e689 - :ui indent-guides DarthFennec/highlight-indent-guides@1b12c7b -> DarthFennec/highlight-indent-guides@a4f7714 - :ui modeline seagle0128/doom-modeline@881e099 -> seagle0128/doom-modeline@ffbaaee - :ui tabs ema2159/centaur-tabs@9114ef4 -> ema2159/centaur-tabs@7e0332b - :ui treemacs Alexander-Miller/treemacs@644e940 -> Alexander-Miller/treemacs@027e03b - :ui window-select abo-abo/ace-window@7003c88 -> abo-abo/ace-window@c7cb315
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-pretty-symbols!
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