forked from ocaml/merlin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
439 lines (365 loc) · 15.1 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
merlin HEAD
===========
backend:
- 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
emacs:
FIXME
vim:
- expose custom .merlin loading through buffer variable
merlin 2.2
==========
Wed May 20 09:44:55 EDT 2015
backend:
- completion
+ return the type of the expected argument when completing an
application.
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
any)
- destruct: use more precise environments ( #389 )
- warnings:
+ check signature inclusion to prevent spurious warnings about unused
declarations
+ 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
directives.
- typeof: during verbose expansion, also print the type declaration if we
have a type constructor
emacs:
- 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
milanst)
- Tell merlin the content of the buffer when opening a new buffer.
This allows merlin idle-job to preload content if nothing else is
requested.
- remove call to merlin from the lighter
vim:
- 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
requested.
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.
backend:
- 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 "myocamlbuild.ml" (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
vim:
- fix charset/encoding detection (pull request #352 by rgrinberg)
- minor fixes and simplification
emacs:
- 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
backend:
- 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 )
fake:
- add typerep support
- never generate ['_] type variables.
vim:
- 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
backend:
- 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.map ; List.m... ; ListLabels.map ; ...` 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
is)
emacs:
- 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).
misc:
- update README (#301).
vim:
- 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 >
7.3
- 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: http://yawdp.com/~def/rename.webm
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.
backend:
- 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 )
documentation:
- update vim doc file ( #204 )
- typo correction in the README by Philippe Wang ( #195 )
emacs:
- fix most byte compilation warnings, by Geoff Gole ( #209 )
- numerous fixes
vim:
- add error list independant from syntastic
- fix completion for vim<=703 (#223)
merlin 1.6
==========
Tue Mar 11 14:33:55 CET 2014
backend:
- small memory leak fix
- major improvements and bugfixes for locate (i.e. "jump to definition")
emacs:
- 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
extensions:
- added support for variantslib ( #132 )
- updated fieldslib support ( #169 , #185 )
- fix pa_lwt translation ( #182 )
- added support for pa_enumerate ( #187 )
vim:
- the split method for locate can now be configured
merlin 1.5
==========
Sat Dec 14 19:45:06 CET 2013
backend:
- 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)
emacs:
- 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
extensions
- 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:
- 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
TypeOf.
merlin 1.4.1
============
Thu Sep 26 21:29:56 BST 2013
documentation:
- updates of the emacs section of the readme by Ronan Lehy.
emacs:
- bugfix for ac-mode: merlin-ac-prefix wasn't called.
- better formatting for completion suggestions.
vim:
- 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
backend:
- 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
expressions
- 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 https://github.com/def-lkb/merlin-typers
- new implementation of the main merlin state tracking ast & types
- better error reporting thanks to a contribution from Ronan Lehy
documentation:
- started a wiki (https://github.com/def-lkb/merlin/wiki)
- wrote 'from-scratch' guides to ease setting-up merlin in your editor
emacs
- 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
==========
backend:
- added a "locate" command to find the definition location of the given
identifier
works on the local buffer out of the box and at project level if it the
build directories contain cmt files
emacs:
- 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
extensions:
- add support for "type nonrec" declaration
- add support for "with compare" from type-conv
- add partial support for "with fields" from type-conv
misc:
- added specific support for omake's polling mode
vim:
- ':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
==========
emacs:
- add ML, MLI and merlin-goto-project-file commands
- prints the type of completed entry on completion
- various bugfixes
extensions:
- merged support for ignoring P4_QUOTATION
- merged support for js_of_ocaml syntax
- support top-level lwt binding
- merged support for oUnit
misc:
- 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.
vim:
- bugfix for omnicompletion on versions <= 703
merlin 1.1
==========
emacs:
- Ported the completion to the usual `completion-at-point' system, disabled
auto-complete-mode-by-default
- reset now tells merlin about the current buffer name
- merlin-mode comes with a menu
- improved documentation of the mode
backend:
- code cleanup
- method completion
vim plugin: refactored synchronization code out
merlin 1.0
==========
First release