See full changelog
Fixes
- Fix executing ppx executables
Official stable release announcements and updates from the OCaml compiler, OCaml infrastructure and the OCaml Platform Tools.
On behalf of the ocamllsp team, Iβm pleased to announce version 1.10.0. The only new feature this release offers is better code folding, but there are some important bug fixes and performance improvements. If you encounter any sluggishness with our server, do not hesitate to report it.
Unless there are serious bugs with this release, this will be the last release for OCaml 4.13.
Happy Hacking.
Fix infer interface code action crash when implementation source does not exist (#597)
Improve error message when the reason plugin for merlin is absent (#608)
Fix chdir races when running ppx (#550)
More accurate completion kinds. New completion kinds for variants and fields. Removed inaccurate completion kinds for constructors and types. (#510)
Fix handling request cancellation (#616)
Disable functionality reliant on ocamlformat-rpc for now (#555)
4.13 compatiblity
occurrences to work when looking for locally abstract types
(#1382)-alert compiler flag (#1401)-error-style compiler flag (#1402, @nojb)Oops, we went looking but didn't find the changelog for this release π
.merlin files, and as a consequence no longer
depends on dot-merlin-reader. (#523)Fix debouncing of document updates. It was essentially completely broken in all but the most trivial cases. (#509 fixes #504)
Fix completion when passing named and functional arguments (#512)
On behalf of the ocaml-lsp team, Iβm pleased to announce version 1.8.0. This release contains some quality of life bug fixes, better diagnostics locations, and a few new code actions. Happy hacking.
Add a new code action Add missing rec keyword, which is available when
adding a rec keyword can fix Unbound value ... error, e.g.,
let fact n = if n = 0 then 1 else n * fact (n - 1)
(* ^^^^ Unbound value fact *)
Adding rec to the definition of fact will fix the problem. The new code
action offers adding rec.
Use ocamlformat to properly format type snippets. This feature requires the
ocamlformat-rpc opam package to be installed. (#386)
Add completion support for polymorphic variants, when it is possible to pin
down the precise type. Examples (<|> stands for the cursor) when completion
will work (#473)
Function application:
let foo (a: [`Alpha | `Beta]) = ()
foo `A<|>
Type explicitly shown:
let a : [`Alpha | `Beta] = `B<|>
Note: this is actually a bug fix, since we were ignoring the backtick when constructing the prefix for completion.
Parse merlin errors (best effort) into a more structured form. This allows reporting all locations as "related information" (#475)
Add support for Merlin Construct command as completion suggestions, i.e.,
show complex expressions that could complete the typed hole. (#472)
Add a code action Construct an expression that is shown when the cursor is
at the end of the typed hole, i.e., _|, where | is the cursor. The code
action simply triggers the client (currently only VS Code is supported) to
show completion suggestions. (#472)
Change the formatting-on-save error notification to a warning notification (#472)
Code action to qualify ("put module name in identifiers") and unqualify ("remove module name from identifiers") module names in identifiers (#399)
Starting from:
open Unix
let times = Unix.times ()
let f x = x.Unix.tms_stime, x.Unix.tms_utime
Calling "remove module name from identifiers" with the cursor on the open statement will produce:
open Unix
let times = times ()
let f x = x.tms_stime, x.tms_utime
Calling "put module name in identifiers" will restore:
open Unix
let times = Unix.times ()
let f x = x.Unix.tms_stime, x.Unix.tms_utime
Handle workspace change notifications. Previously, the server would only use the set of workspaces given at startup to search for workspace symbols. After this change, workspace folders that are added later will also be considered. (#498)
Do not show "random" documentation on hover
Correctly rename a variable used as a named/optional argument (#478)
When reporting an error at the beginning of the file, use the first line not the second (#489)
construct that builds a list of possible terms when
called on a typed hole (#1318)refactor-open improvements (#1313, #1314, #1366, #1372)
open Foo (* calling refactor-open qualify on this open *)
let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
unqualify should not qualifyPersistent_env.Error in Typemod.initial_env (#1355)construct command:
MerlinConstruct. When several results are suggested, <c-i>
and <c-u> can be use to change the depth of the recursive
construction. (#1318)merlin-locate-type command:
MerlinLocateType (#1359)construct command:
merlin-construct. (#1352)merlin-locate-type command. (#1359)merlin--highlight and various minor improvements
(#1367, @mattiase)construct command (#1318)Oops, we went looking but didn't find the changelog for this release π
Add sub-errors as "related" information in diagnostics (#457)
Add support for navigating to a symbol inside a workspace (#398)
Show typed holes as errors
Merlin has a concept of "typed holes" that are syntactically represented as _. Files
that incorporate typed holes are not considered valid OCaml, but Merlin and OCaml-LSP
support them. One example when such typed holes can occur is when on "destructs" a value,
e.g., destructing (Some 1) will generate code match Some 1 with Some _ -> _ | None -> _. While the first underscore is a valid "match-all"/wildcard pattern, the rest of
underscores are typed holes.
Switch verbosity from 1 to 0. This is the same default that merlin uses.
The old value for verbosity (#433)
Get fresh diagnostics (warning and error messages) on a file save (#438)
Note: If you want the fresh diagnostics to take into account changes in other
files, you likely need to rebuild your project. An easy way to get automatic
rebuilds is to run dune in a watching mode, e.g.,[dune build --watch].
On behalf of the ocaml-lsp team, I'd like to announce version 1.6.0 of ocaml-lsp-server. The highlight of this release is the updated version of merlin which brings lots of new bug fixes.
Fix interface/implementation switching on Windows (#427)
Correctly parse project paths with spaces and other special characters that must be escaped.
Print types with -short-paths even if the project wasn't built yet
workdir configuration value when using the
dune ocaml-merlin configuration provider the same as when using
dot-merlin-reader so that ppxes behaves in the same way as before
(#1284, fixes ocaml/dune#4479, discussion in #1292)_), allow correct typing of these
holes and add a new holes command that returns the locations of all
holes in the current file along with their types (#1242, #1289)MerlinNextHole and MerlinPreviousHole commands to navigate
between holes. Jump to the first hole after destruct (#1287, #1303)merlin-next-hole and merlin-previous-hole commands to
navigate holes. Jump to the first hole after calling destruct. (#1291)holes command and AST node (#1242, #1289)Oops, we went looking but didn't find the changelog for this release π
Support 4.12 and drop support for all earlier versions
Update to the latest version of merlin
Backport fixes from merlin (#382, #383)
Encode request & notification params in a list. This is required by the
spec. (#351)
merlin_analysis and merlin_utils libraryOn behalf of the ocaml-lsp team, it is my pleasure to announce version 1.4.0. This release introduces support for automatic signature help. Signature help is not yet present in all possible contexts. We intend to improve to support as many relevant language constructs as possible in the future. Many thanks to @mnxn for implementing this feature.
The full change log is replicated at the end of this post for your convenience.
Happy Holidays!
Support cancellation notifications when possible. (#323)
Implement signature help request for functions (#324)
Server LSP requests & notifications concurrently. Requests that require merlin are still serialized. (#330)
On behalf of the ocaml-lsp team, Iβd like to announce version 1.3.0.
This release an improvement in keyword completion and a new code action. Keywords are now filtered by the context the user requested the completion, and thereβs a new code action to quickly populate .mli files with the the inferred types from the .ml file.
Code action to insert inferred module interface (#308)
Filter keywords by context (#307)
On behalf of the ocaml-lsp team, Iβd like to announce version 1.2.0.
This version contains many bug fixes and some performance improvements A couple of interesting features made it in as well:
Add keyword completion
Add go to declaration functionality to jump to a value's specification in a .mli file (#294)
#245: correctly use mutexes on OpenBSD (#264)
#268: Do not use vendored libraries when building the lsp package (#260)
#271: Clear diagnostics when files are closed
Disable non-prefix completion. There's no reliably way to trigger it and it can be slow.
dot-merlin-reader with a binary that reads
.merlin files. (#1123, #1152)Oops, we went looking but didn't find the changelog for this release π
- (#1142)Locate_type) (#1067)without_cmisEnv.check_state_consistency (#1044)check_state_consistency (#1044)** globbing in .merlin won't look into hidden directories
(starting with a '.') (by Daniel BΓΌnzli, #990)Special thanks to Rudi Grinberg for helping us in reviewing and merging pull-requests.
backend
-pp flageditors modes
emacs
merlin--overlay function (by Wilfred Hughes)vim
testsuite
Thanks to the people who contributed to this release: ELLIOTTCABLE, Louis RochΓ©, Rudi Grinberg, Yotam Barnoy, Leo White, Daniel Below, Andreas Hauptmann, Christophe Troestler, Bobby Priambodo, Milo Davis.
backend
#require directive in a source file, and will treat it as a
package useeditor modes
Add support for 4.06. Use Leo White's short-path for 4.05. Various bug fixes (in locate, in emacs serialization).
Oops, we went looking but didn't find the changelog for this release π
The major change Windows support is contributed by David Allsopp.
Other changes are a bunch of fixes:
Oops, we went looking but didn't find the changelog for this release π
Bug fix after 3.0.1:
Oops, we went looking but didn't find the changelog for this release π
Bug fix release after 3.0.0 major release.
Oops, we went looking but didn't find the changelog for this release π
The major change is a new protocol that moves process management inside Merlin codebase, saving a lot of pain in Emacs and Vim. There are not much new user facing features.
Windows support is not yet available.
In editor configuration is now done with merlin-flags, merlin-extensions and merlin-use in Emacs and :MerlinFlags, :MerlinExtensions and :MerlinPackages in Vim. In previous versions, enabled extensions, flags and packages were retained while now only the last command is remembered.
"M-x merlin-use a", "M-x merlin-use b" should be replaced by "M-x merlin-use a,b". ":MerlinUse a", ":MerlinUse b" should be replaced by ":MerlinUse a b".
The old protocol is still supported, so existing editor modes should not be affected (tested with Atom, Visual Studio and Sublime-text).
Other main changes:
Thanks to the many contributors (Jochen Bartl, tddsg, Ximin Luo, Jason Staten, Leo White, Leandro Ostera, Jacob Bass, Xavier GuΓ©rin, Yotam Barnoy, Jacques Pascal Deplaix, David Allsopp, ...).
Oops, we went looking but didn't find the changelog for this release π
Minor release.
Minor release.
Minor release.
This release mainly brings support for OCaml 4.04. Internal code was simplified and bugs were fixed in the meantime (cache invalidation, ast traversal, type error recovery, certain cases of completion, ppx working directory, locate, ...).
Oops, we went looking but didn't find the changelog for this release π
Bug fix release before major version.