Comments (3)
a) Merlin tries to guess the context under cursor in different way.
The normal path is if both parsing and typing succeeds normally (code is well-typed), then it will have full information about context (including local scope of expression).
If typing fails, it fallbacks to a "relaxed" typer that accepts type errors but tries to produce as much meaningful information as possible. While already available, some improvements not yet published have been made to further "relax" the typer.
If parsing fails, this is the hard case… Merlin is not able to do anything. Wrt to ocaml compiler, the parser is much more tolerant (it will report errors and tries some heuristic to continue parsing).
But this is not enough, I have some idea about possible improvements, I'll keep you informed about that.
b) Even if those information are available inside merlin process, they are not made available to the editor. I am not sure how to present these information to the end-user.
from merlin.
Thanks for the explanation.
About (b): I was thinking that one could ask auto-complete to say display the usual auto-complete with M-/ (or C-TAB as you have in the default bindings) and then then hitting some other key will show only the completion candidates that match the context type.
from merlin.
Implemented some time ago.
from merlin.
Related Issues (20)
- `complete-prefix` short-circuits too eagerly when deciding whether to return only record field names
- Implement Enhanced Hover Feature for PPXs in Merlin
- Jump to incorrect module HOT 2
- Make `complete-prefix` smarter about field projection expressions passed as `-prefix`
- string litteral with an extension node is wrongly marked as being unterminated HOT 3
- Hover of a mutually recursive type can cause a stack overflow HOT 4
- Can't go-to-definition in generated file HOT 13
- Incorrect module type from `type-enclosing` HOT 1
- Optional argument include by `case-analysis` HOT 1
- Failed to install merlin with opam with gcc14 HOT 1
- Merlin-lib: return the description of a warning based on its identifier HOT 1
- Tracker: project-wide occurrences
- `case-analysis` fails to load module HOT 2
- No config found for file .ocamlinit. Try calling 'dune build'. HOT 3
- Wildcard constructor patterns display an incorrect type on hover HOT 5
- unknown flag `-unboxed-types` HOT 1
- Jump to definition with let-punning HOT 1
- Exception Not_found in merlin locate HOT 1
- Permissions and deletion of temporary files created by preprocessors (pp) HOT 1
- The request for documentation of function argument gives documentation for whole function
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from merlin.