[ANN] Merlin and OCaml-LSP support experimental project-wide renaming

I am delighted to announce that the latest releases of Merlin (5.4.1-503) and OCaml-LSP (1.22.0) for OCaml 5.3 provide experimental support for project-wide renaming of symbols :tada:.

Users of vscode-ocaml-platform, ocaml-eglot or any generic LSP client can experiment with the new feature right now via the Rename command. (This is not available in the standard Emacs and Vim modes yet.)

All project-wide features require the indexer to be installed and an up-to date index built with dune build @ocaml-index --watch (we only ship rules for Dune, but the indexer itself is agnostic).

This is a complex feature in an experimental state, please report any issue you might encounter to Merlinโ€™s issue tracker!

project-wide-renaming2

Complete changelog

merlin 5.4.1

  • merlin binary
    • Support for OCaml 5.3
    • Use new 5.3 features to improve locate behavior in some cases. Merlin no
      longer confuses uids from interfaces and implementations. (#1857)
    • Perform less merges in the indexer (#1881)
    • Add initial support for project-wide renaming: occurrences can now return
      all usages of all related definitions. (#1877)
  • ocaml-index
    • Bump magic number after index file format change (#1886)
  • vim plugin
    • Added support for search-by-type (#1846)
      This is exposed through the existing :MerlinSearch command, that
      switches between search-by-type and polarity search depending on the
      first character of the query.

Ocaml-LSP 1.22.0

  • Enable experimental project-wide renaming of identifiers (#1431)
27 Likes