Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

440 lines (365 sloc) 15.1 KB
merlin HEAD
- 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
- expose custom .merlin loading through buffer variable
merlin 2.2
Wed May 20 09:44:55 EDT 2015
- completion
+ return the type of the expected argument when completing an
This allows us to offer completion for named and optional parameters,
as well as polymorphic variants
+ optionally associates ocamldoc comments to candidates
+ adds field completion inside records ( #296 )
- locate:
+ partially rewritten, introduces a new kind of cache
(so potentially noticeably bigger memory consumption)
+ better handling of functors
+ handle local modules
+ fix occasional "inconsistent assumptions"
- error reporting:
+ handle environment errors (inconsistent assumptions, …)
+ filter duplicated messages
+ fix type error reporting:
"this expression has type t = t but an expression was expected of
type u = u"
we now only print the equality when it adds some information
+ less noisy pattern recovery: when every pattern is recovered, consider
that the matched expression is the the source of the problem, and
retry typing with "'a" as the type of the matched expression.
- add support for trunk
- add a "document" command: takes an ident and return its documentation (if
- destruct: use more precise environments ( #389 )
- warnings:
+ check signature inclusion to prevent spurious warnings about unused
+ backport 4.02-style warning management
+ add a dump command
- nonrec: update implementation to more-or-less match the upstream one
(upstream >= 4.02.2)
- parser: improve marking heuristic in presence of ;; or toplevel
- typeof: during verbose expansion, also print the type declaration if we
have a type constructor
- fix bindings of every completion backend
- bind ocamldoc comments to company (optional)
- detect race conditions when running synchronous commands
- cleanup "merlin-process-started-p"
- locate error messages were silently ignored, they are now printed
- drop text properties from commands sent to merlin (pull request #383 by
- Tell merlin the content of the buffer when opening a new buffer.
This allows merlin idle-job to preload content if nothing else is
- remove call to merlin from the lighter
- fix ctrlp binding for locate
- add (dwim) completion on :TypeOf
- while completing, candidates documentation can be displayed in the
"preview" window
- prefix every command name by "Merlin" ( #379 )
- Tell merlin the content of the buffer when opening a new buffer.
This allows merlin idle-job to preload content if nothing else is
merlin 2.1.2
Tue Mar 3 12:20:08 UTC 2015
Main new feature is a faster short-path, and also a lot of buxfixes.
- merge new implementation of short-path
- infrastructure for doing background computations
- fix exhaustivity checking of GADTs
- fix Typecore error reporting in 4.00.1 & 4.01.0
- delayed checks are now enabled (e.g warnings)
- special handling of "" (issue #363)
- better sharing/caching of global modules
- more customizable .merlin loading
- minor fixes (better error messages, typos, "fake" extensions)
build system:
- allow bytecode builds, support OpenBSD (pull request #364 by madroach)
- Refuse/Resist... environment variables redefinition
- fix charset/encoding detection (pull request #352 by rgrinberg)
- minor fixes and simplification
- better integration with emacs error management and asynchronous handling
- expose custom .merlin loading in merlin-grouping-function
- fixes, printf-debugging cleanup
merlin 2.1.1
Wed Jan 28 08:59:20 GMT 2015
- locate: merlin refused to locate things when it had no context (happens
when the buffer didn't parse for example) claiming it was at the
"definition point". Fixed.
- locate: use the cmt path when no ml file was found in the source path
(this might not be such a good idea, the cases when this work are the ones
where the user configuration is wrong...)
- destruct: qualify introduced constructors
- destruct: eliminate "impossible" GADT branches
- parser: handle '%' as an operator for 4.00 and 4.01 ( #345 )
- add typerep support
- never generate ['_] type variables.
- show duplicated outlines in CtrlP
- sort outlines by name length in CtrlP
- when split method is set to 'tab' *always* open a new tab.
merlin 2.1
Sun Jan 11 22:20:23 CET 2015
- add PPX support
- make use of context before locating (#308, #316, #318).
- generate match patterns for arbitrary expressions and missing patterns
for incomplete matchings (#123).
- reintroduce type expansion (asking the times of the same expression
several times will resolve type aliases).
- "smart" (a.k.a "do what I mean") completion:
`L.m` will expand to ` ; List.m... ; ; ...` if
`L` doesn't exist.
- simplify incremental parser and typer interfaces
- locate: better handling of packed modules (supposedly)
- more precise recovery on patterns (before the recovery was done at the
expression level, so the whole match was discarded, now only the pattern
- don't use fringe in emacs23 (broken)
- remove obsolete aliases:
merlin-occurences => merlin-occurrences
merlin-to-end => merlin-error-check
- disable merlin-mode on type buffer
- require caml-types (needed for highlighting) (#331).
- update README (#301).
- add a type history buffer (#313, #322) -- only available for vim > 7.3.
- highlight types when displaying them in the command line -- only for vim >
- add tab completion for the argument of the `:Locate` command
- add support for text objects based on type enclosing
- introduce an interactive version of `:Rename`
- locate results can now be shown in a new or existing tab (#335)
- use `fileencoding` where necessary (#332)
- ctrlp bindings for outline and locate
This release also contains contributions from: Geoff Gole, Rudi Grinberg, Markus
Mottl, Roman Vorobets and Arthur Wendling.
merlin 2.0
Fri Oct 31 11:04:21 CET 2014
This is a major release which we worked on for several months, rewriting many
parts of the codebase. An exhaustive list of changes is therefore impossible to
give, but here are some key points (from an user perspective):
- support for OCaml 4.02.{0,1}
- more precise recovery in presence of syntax errors
- more user-friendly messages for syntax errors
- locate now works on MLI files
- automatic reloading of .merlin files (when they are update or created), it
is no longer necessary to restart merlin
- introduced a small refactoring command: rename, who renames all occurences
of an identifier. See:
This release also contains contributions from: Yotam Barnoy, Jacques-Pascal
Deplaix, Geoff Gole, Rudi Grinberg, Steve Purcell and Jan Rehders.
merlin 1.7.1
Fri Aug 22 10:01:58 CEST 2014
Minor update to installation procedure
merlin 1.7
Mon Aug 18 17:08:00 BST 2014
This release also marks the apparition of a proper opam install script.
- fixes on locate
- print manifests even when -short-paths is set
- add an "occurences" command to list every occurence of an identifier ( #156 )
- new "version" command ( #180 )
- add CPU time to log files ( #192 )
- better error reporting from locate ( #190 )
- update vim doc file ( #204 )
- typo correction in the README by Philippe Wang ( #195 )
- fix most byte compilation warnings, by Geoff Gole ( #209 )
- numerous fixes
- add error list independant from syntastic
- fix completion for vim<=703 (#223)
merlin 1.6
Tue Mar 11 14:33:55 CET 2014
- small memory leak fix
- major improvements and bugfixes for locate (i.e. "jump to definition")
- fixed bug preventing merlin restart ( #167 )
- removed keybindings reserved to users ( #170 )
the full list is:
+ `C-c l` previously bound to `merlin-use`
+ `C-c r` previously bound to `merlin-restart-process`
+ `C-c t` previously bound to `merlin-type-expr`
- removed keybindings on `C-<up>` and `C-<down>` as these already have a
meaning in emacs ( #129 )
They were bound to `merlin-type-enclosing-go-up` and
`merlin-type-enclosing-go-down` respectively.
- the emacs mode is now compiled (contribution from Jacques-Pascal Deplaix
#158 , with a follow up from Rudy Grinberg #165 )
- improved efficiency of completion at point
- added support for variantslib ( #132 )
- updated fieldslib support ( #169 , #185 )
- fix pa_lwt translation ( #182 )
- added support for pa_enumerate ( #187 )
- the split method for locate can now be configured
merlin 1.5
Sat Dec 14 19:45:06 CET 2013
- better handling of paths (both sources and build)
- splitted build path into cmi and cmt path.
New directives "CMI" and "CMT" are now available in .merlin files ("B"
still works as previously)
- doesn't get confused anymore when the user switch between buffers (the
state is cleaned)
- adds ability to enable/disable extensions manually
- adds a command to clear all the errors from a buffer
- displaying of errors can now be disabled
- updated bin_prot for version >= 109.45.00
- bugfix for [with compare] in presence of parametrized types
- added support for "here" (when activated adds
[val _here_ : Lexing.position])
- added support for [assert_lwt]
- fixed typing of [while_lwt]
- vim plugin can be installed into a custom directory and has its own
makefile target (contribution from Vsevolod Velichko)
- added "ClearEnclosing" command to remove merlin's overlay after a call to
merlin 1.4.1
Thu Sep 26 21:29:56 BST 2013
- updates of the emacs section of the readme by Ronan Lehy.
- bugfix for ac-mode: merlin-ac-prefix wasn't called.
- better formatting for completion suggestions.
- bugfix for the "selectPhrase" command, an overflow on 32b plateform was
causing complete desynchronisation between vim and merlin.
- better formatting for completion suggestions.
merlin 1.4.0
Tue Sep 24 23:02:04 BST 2013
- lazy processing of open directives makes merlin much faster
- simplified buffer management
- tweak signal handling to improve windows compatibility
- track verbosity of query: repeated queries are considered more "verbose"
- type expansion: expand type aliases for verbose query
- add support for OUnit-like Benchmark extension
- more tolerant type checker, to provide completion on ill-typed
- proper version reporting with git revision
- refactored logging subsystem
- add support "val constructs" in implementation: report errors but add
definition to current environment
- add FLG, EXT and PRJ in .merlin
- "locate" command now works in much more situations
- one distribution for 4.00 and 4.01, introduced common interface between
both, typers now live in
- new implementation of the main merlin state tracking ast & types
- better error reporting thanks to a contribution from Ronan Lehy
- started a wiki (
- wrote 'from-scratch' guides to ease setting-up merlin in your editor
- during completion with auto-complete, you can hit C-c C-l on a candidate
to jump on its definition
- made communication with merlin asynchronous (using transfer queues) hence
improving responsiveness
- when running a merlin command, the errors present in all phrases but the
current one are displayed
- fixed buffer cleaning
- successive call to C-c C-t do not climb the typed tree but improve merlin's
verbosity. To move inside the tree use C-down and C-up (which implements
phrase movement if there is no enclosing started).
- customize data for merlin
- refactoring and numerous bugfixes
merlin 1.3.1
Minor release, but merlin is now compatible with ocaml versions > 4.00.1.
The only noticeable changes since 1.3 is the use of short paths even with
version 4.00.1 of ocaml.
merlin 1.3
- added a "locate" command to find the definition location of the given
works on the local buffer out of the box and at project level if it the
build directories contain cmt files
- various bugfixes
- aesthetic changes for highlighting
- introduced "semantic movements":
add commands (and keybindings) to go to the next/previous phrase
- support for completion in emacs 23
- reporting of syntax errors
- removed "idle-typing" feature
- asynchronous fetching of types so that long signatures
won't make emacs hang
- add support for "type nonrec" declaration
- add support for "with compare" from type-conv
- add partial support for "with fields" from type-conv
- added specific support for omake's polling mode
- ':TypeOf' command now accepts an (optional) argument and tries to type it
in the current context (i.e. at cursor position)
- better catching of errors
merlin 1.2
- add ML, MLI and merlin-goto-project-file commands
- prints the type of completed entry on completion
- various bugfixes
- merged support for ignoring P4_QUOTATION
- merged support for js_of_ocaml syntax
- support top-level lwt binding
- merged support for oUnit
- introduced 'REC' flag in .merlin:
tells merlin to concatenate the current .merlin with the ones present in
parents directories
- added specific support for omake's polling mode.
- bugfix for omnicompletion on versions <= 703
merlin 1.1
- Ported the completion to the usual `completion-at-point' system, disabled
- reset now tells merlin about the current buffer name
- merlin-mode comes with a menu
- improved documentation of the mode
- code cleanup
- method completion
vim plugin: refactored synchronization code out
merlin 1.0
First release
Jump to Line
Something went wrong with that request. Please try again.