From the OCaml Labs wiki
Jump to: navigation, search


Merlin is an IDE for editing OCaml code that offers:

  • Type driven autocompletion
  • "As you type" error reporting
  • Extraction of type information
  • Source browsing ("jump to definition")

Merlin is editor independent, but support exists for Vim, Emacs and Atom.

Projects and platforms using Merlin[edit]

Merlin and Reason[edit]

A Reason frontend has been developed to edit Reason files and report information in Reason syntax. An Atom/Nuclide integration enhances the Reason editing experience with features such as context sensitive completion, jumping to definition and reporting of type information and errors.

Extensions and Plugins[edit]

Related Pages[edit]



Merlin 2.5.0 Jun 2016 | Changelog


  • now all commands can take a context, this reduce the amount of state in the command interpreter. Long term goal is to make protocol stateless
  • merlin now supports customizable "readers": processes responsible for parsing and pretty-printing. Main use-case is Reason, cppo/optcomp support might be added later


  • drop support for 4.00 / 4.01
  • support for 4.03 has been added
  • new implementation of type recovery, should diverge less from upstream
  • support for 4.02 was reimplemented to use the same design
  • menhir's fork has been synchronized with upstream, recovery algorithm is completely new


  • add support for python3, update to new protocol


  • update to new protocol, bug fixes

Merlin 2.3.1 Nov 2015 | Changelog

Bug fix release, fix builds under Mac OS X and Windows.


  • improve support for module aliases in completion, locate and short-path
  • change management of flags
  • Cuillère ou Dorade
  • fix grammar for 4.02.3, support attributes on core_types

Emacs & Vim:

  • minor fixes

Merlin 2.3 Oct 2015 | Changelog


  • locate: fix assert failure on first class modules inclusion
  • outline: add support for classes and object types
  • nonrec: enable by default for OCaml >= 4.02.2
  • error reporting: less aggressive filtering on ghost locs
  • finer-grained tracking of usage (values, opened modules, etc)
  • significant improvement in the handling of PPX extensions:
    • fix shell commandline and working directory
    • normalize parsetree locations
    • implement caching of intermediate rewriting
  • merged support for MetaOCaml
  • path to the standard library can now be specified with STDLIB command in .merlin
  • BrowseT: split into Browse_node (OCaml version specific) and Merlin_browse, extract recursion scheme
  • add Jump command, contributed by Tomasz Kołodziejski
  • contextual-commands: optionnally specify the context (file, project) in which each command is interpreted
  • better support for trunk
  • many bugfixes