You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add an "Edit" submenu (comment/uncomment region, fill comment paragraph, indent region).
Add an "OCaml REPL" menu to the REPL buffer (neocaml-repl-mode) for switching back to the source, interrupting, and clearing the buffer.
Add a "Toggle" submenu (prettify symbols, subword mode, outline minor mode) and a "Start/Switch to REPL" entry to the mode menu.
Add help strings (tooltips) and "Customize" entries to the menus, and disable REPL commands that need an active region or a running process when those aren't available.
Add neocaml-set-font-lock-level and a "Font-Lock Level" submenu for switching the tree-sitter fontification level (1-4) in the current buffer.
#65: Add neocaml-format-buffer (bound to C-c C-f) to format OCaml source with ocamlformat, plus an opt-in neocaml-format-on-save.
#65: Make URLs and bug references in comments clickable across the OCaml source and tool modes via goto-address-prog-mode and bug-reference-prog-mode. Set bug-reference-url-format (e.g. via .dir-locals.el) to resolve issue references.
#65: Add neocaml-repl-restart to kill and restart the OCaml toplevel, with a matching entry in the REPL menu.
#68: Add neocaml-repl-send-phrase-and-step (bound to C-c C-n), which sends the phrase at point to the REPL and advances to the next one, and neocaml-repl-require for loading a findlib package via #require.
#69: Give each project its own dedicated REPL. The REPL buffer is now named per project (e.g. *OCaml: myproject*, derived from neocaml-repl-buffer-name), and the send commands route to the current buffer's project REPL, so multiple projects can run side by side. This also fixes neocaml-dune-utop so the send commands reach its toplevel.
#70: Add neocaml-repl-flavor for choosing which toplevel the REPL runs (ocaml, utop, or dune-utop); set it globally or per project via .dir-locals.el. The active flavor is shown in the REPL's mode line.
#71: Integrate with project.el: a directory containing a dune-project file is recognized as a project root (for non-VC projects), _build/ and _opam/ are ignored, and compile-command defaults to dune build in dune projects.
#72: Add completion-at-point support to neocaml-dune-mode and neocaml-opam-mode. dune files complete stanza names, the field names valid for the enclosing stanza, and library names inside libraries/pps fields (both the project's own libraries and the installed findlib libraries); opam files complete field and section names and, inside depends/depopts/conflicts, package names (via opam list). The external candidate sources are gathered from the project root, so a project-local opam switch (_opam/) is detected and used automatically (via opam exec --); they are cached per project and can be toggled with neocaml-dune-complete-libraries and neocaml-opam-complete-packages.
Bug fixes
#66: Correctly handle character literals and quoted strings at the syntactic layer via a syntax-propertize-function. Characters like '"', '(', and ')', and the contents of {|...|} / {id|...|id} quoted strings, no longer confuse sexp motion, electric-pair-mode, delete-pair, or syntax-ppss.
Changes
Switch the ocaml and ocaml-interface grammars to tree-sitter-ocaml v0.25.0, pinned to the upstream v0.25.0-abi14 tag (an ABI 14 regeneration of the same grammar, since v0.25.0 itself generates an ABI 15 parser most Emacs builds can't load yet). This brings in the OCaml 5.5 grammar support.
#60: Highlight function-typed val specifications in .mli files with the function face, matching how function let bindings are highlighted in implementations.
Handle OCaml 5.5 external type declarations (type t = external "caml_foo") in sexp navigation, so C-M-f/C-M-b step over the whole declaration body instead of just the external keyword.