[construct] Add basic emacs support#1352
Merged
voodoos merged 2 commits intoocaml:masterfrom Jun 23, 2021
Merged
Conversation
voodoos
commented
Jun 17, 2021
Contributor
|
@voodoos I wonder how you intend to handle the depth parameter for
construct. Do you have it fixed (if yes, at what value?) or can iteratively
increase depth, say, with a completion entry `more depth`?
…On Tue, Jun 15, 2021, 18:35 Ulysse ***@***.***> wrote:
New command: merlin-construct
If multiple choices the basic completion buffer is used.
After substitution the cursor jumps to the first hole in the constructed
expression.
------------------------------
You can view, comment on, or merge this pull request online at:
#1352
Commit Summary
- Simple emacs construct bindings
- Jump to the first hole of the constructed expression
File Changes
- *M* emacs/merlin.el
<https://github.com/ocaml/merlin/pull/1352/files#diff-eb86342d6ca81aa067fe94ef9182841e48adbfd73994c7e71f6fa2fe3d737473>
(50)
Patch Links:
- https://github.com/ocaml/merlin/pull/1352.patch
- https://github.com/ocaml/merlin/pull/1352.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1352>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AD4YR6Z2NYNRAKAVAM7BW6TTS5JKDANCNFSM46XJG4EA>
.
|
Collaborator
Author
|
In a first version I don't plan to use it. However the VIM plugin does: when a list on constructions is proposed to the user it is possible to ask for more/less depth with It is not an optimal UI at all. For exemple it doesn't allow for depth changes when there is only one result to the first call. |
- Replace immediately when only one result - Jump to the first hole of the constructed expression
aa57928 to
f3f7dac
Compare
voodoos
added a commit
that referenced
this pull request
Jun 24, 2021
[construct] Add basic emacs support
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
- 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 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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New command:
merlin-constructIf multiple choices the basic completion buffer is used.
After substitution the cursor jumps to the first hole in the constructed expression.