Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Construct] Part I #1318

Merged
merged 7 commits into from
Jun 14, 2021
Merged

[Construct] Part I #1318

merged 7 commits into from
Jun 14, 2021

Conversation

voodoos
Copy link
Collaborator

@voodoos voodoos commented Apr 16, 2021

This PR adds:

  • a new command construct that given the position of a hole will return a list of possible expressions to fill this hole
  • a handful of tests for that command
  • the VIM plugin support for that feature:
    • MerlinConstruct on a hole _ will open a completion dialog with the alternatives or replace the hole is only one construction is possible
    • One can ask to increase (or decrease) search depth with c-i (c-u) while choosing a completion
    • Once a completion is chosen it replaces the hole and the cursor jump to the next hole

Todo:

  • Polish the VIM plugin (for example we should only jump to holes in the constructed expression, not further)
  • Treat the various todo in construct.ml
  • Add documentation (and a changelog entry)
  • Maybe improve the test suite

@voodoos voodoos marked this pull request as ready for review April 20, 2021 15:34
@voodoos
Copy link
Collaborator Author

voodoos commented Apr 20, 2021

I think we can start the review, maybe ignoring the VIM plugin first. I will rewrite parts of it because it became more and more messy while I added features.

@voodoos voodoos force-pushed the construct-part-I-no-emacs branch 3 times, most recently from 97bbc3b to c484b6d Compare May 11, 2021 14:19
@voodoos voodoos force-pushed the construct-part-I-no-emacs branch from c484b6d to 43dd776 Compare May 12, 2021 12:53
@voodoos voodoos requested a review from trefis May 31, 2021 10:11
@voodoos voodoos force-pushed the construct-part-I-no-emacs branch 3 times, most recently from 7694b9c to 7001160 Compare June 14, 2021 15:38
voodoos and others added 7 commits June 14, 2021 17:39
- tests for object construction
- tests for all "predef" types
- tests for module construction
- tests for errors
- tests for var case in objects' fields
- @construct alias for all tests
- Error reporting
- Use typecore to check gadts
- Parenthesize when needed (and when not needed)
- Replace only the hole for modules
 - Fix next hole by using explicit casts
 - vim: silently indent when replacing buffer portion

Co-authored-by: Thomas Refis <[email protected]>
- add changelog entry
- add PROTOCOL documentation
- add vim doc
@voodoos voodoos force-pushed the construct-part-I-no-emacs branch from 7001160 to 5c56477 Compare June 14, 2021 15:41
@voodoos voodoos merged commit 84d909d into ocaml:master Jun 14, 2021
voodoos added a commit to voodoos/merlin that referenced this pull request Jun 15, 2021
…I-no-emacs

[Construct] Part I : add the new command and a simple VIM plugin
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested,
      `<c-i>` and `<c-u>`
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 11:13:37 AM CET 2021

  + merlin binary
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
      to show more or less deep results. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 04:45:37 PM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested, `<c-i>`
      and `<c-u>` can be use to change the depth of the recursive
      construction. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
    - disable tests failing in Opam's CI due to nested dune projects (ocaml/merlin#1373)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 04:45:37 PM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested, `<c-i>`
      and `<c-u>` can be use to change the depth of the recursive
      construction. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
    - disable tests failing in Opam's CI due to nested dune projects (ocaml/merlin#1373)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Jul 26, 2021
CHANGES:

Mon Jul 26 04:45:37 PM CET 2021

  + merlin binary
    - recover ill-typed patterns (ocaml/merlin#1317, ocaml/merlin#1342)
    - more accurate type-enclosing for methods (ocaml/merlin#1328, fixes ocaml/merlin#1124)
    - fix location of patterns in Occurrences (ocaml/merlin#1324, fixes ocaml/ocaml-lsp#375)
    - fix location of module definitions done via functors (ocaml/merlin#1329, fixes ocaml/merlin#1199)
    - fix -cmt-path dirs mistakenly added to build path (ocaml/merlin#1330)
    - add new module holes that can replace module expressions (ocaml/merlin#1333)
    - add a new command `construct` that builds a list of possible terms when
      called on a typed hole (ocaml/merlin#1318)
    - `refactor-open` improvements (ocaml/merlin#1313, ocaml/merlin#1314, ocaml/merlin#1366, ocaml/merlin#1372)
      - do not make paths absolute, simply prefix with the identifier under
      the cursor
        ```ocaml
        open Foo (* calling refactor-open qualify on this open *)
        let _ = Foo.bar (* previously could result in [Dune__exe.Foo.bar] *)
        ```
      - do not return identical (duplicate) edits
      - do not return unnecessary edits that when applied do not change
        the document
      - handle record fields properly
      - handle multi-line paths
      - `unqualify` should not qualify
    - Handle `Persistent_env.Error` in `Typemod.initial_env` (ocaml/merlin#1355)
    - locate: reset global state from all entry points (ocaml/merlin#1364)
    - Windows: replace user name by its SID in socketnames (ocaml/merlin#1345, @ttamttam)
  + editor modes
    - vim: add a simple interface to the new `construct` command:
      `MerlinConstruct`. When several results are suggested, `<c-i>`
      and `<c-u>` can be use to change the depth of the recursive
      construction. (ocaml/merlin#1318)
    - vim: add support for the `merlin-locate-type` command:
      `MerlinLocateType` (ocaml/merlin#1359)
    - emacs: add a simple interface to the new `construct` command:
      `merlin-construct`. (ocaml/merlin#1352)
    - emacs: add support for the `merlin-locate-type` command. (ocaml/merlin#1359)
    - emacs: fix issue with `merlin--highlight` and  various minor improvements
        (ocaml/merlin#1367, @mattiase)
  + test suite
    - cover the new `construct` command (ocaml/merlin#1318)
    - disable tests failing in Opam's CI due to nested dune projects (ocaml/merlin#1373)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants