Skip to content

Latest commit

 

History

History
114 lines (96 loc) · 5.4 KB

README.org

File metadata and controls

114 lines (96 loc) · 5.4 KB

:lang ocaml

Description

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)

Maintainers

This module needs a maintainer. Become a maintainer?

Module flags

+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.

Packages

  • 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

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 time doom-package:tuareg is loaded

Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module requires the following packages available through opam:

  • merlin
  • utop
  • ocp-indent
  • dune
  • ocamlformat

Usage

🔨 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) and ocamlmerlin executable is present
  • Line-based auto-indentation is provided by ocp-indent, if it is available.
CommandKeyDescription
merlin-type-enclosing<localleader> tdisplay type under point
tuareg-find-alternate-file<localleader> aswitch between .ml and .mli
merlin-locateg dlookup definition
merlin-occurencesSPC c Dlookup references
merlin-documentKlookup documentation
merlin-imenuSPC s isymbol lookup in file
merlin-iedit-occurrencesv Rvisual refactor identifier under point (multiple cursors)
utopSPC o ropen utop as REPL
utop-eval-regionSPC c eevaluate selected region in utop

Configuration

🔨 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 then format-all-buffer is bound to ocamlformat, otherwise to ocp-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.

Troubleshooting

There are no known problems with this module. Report one?

Frequently asked questions

This module has no FAQs yet. Ask one?

Appendix

🔨 This module has no appendix yet. Write one?