opened
iamrecursion
username_0
### Summary
One of the key pillars of Enso Studio's usability is the intelligent nature of its searcher. The searcher can be thought of as autocomplete on steroids. It takes into account obvious things like the location in code and the contextual type, but also more user-focused things such as unimported symbols, searching within documentation, and so on.

### Value
We will be able to provide well-ranked candidate completions to Enso Studio for use in the searcher.

### Specification
Please note that this task specification is _preliminary._ It will be broken down once luna/luna#713 has been completed and we have a better idea of the tasks. 

- [ ] Implement basic support for the `completion` and `completionResolve` (used to resolve documentation and so forth) LSP requests into the gateway.
- [ ] Implement akka messages for these between the gateway and language server.
- [ ] Determine how to use LSP (or whether an extension is required) to list the symbol hierarchy. It should allow users to interactively browse the symbol hierarchy through the searcher. Please note that it may be the case that this isn't supported by the above requests, and should instead be handled separately (with the integration provided by the IDE). 
- [ ] The request from the IDE will contain both the code location (and, as an extension field for the near future, the type being completed on (if relevant). The implementation should be agnostic to the last field being missing, as once we have a typechecker it will become unnecessary.
- [ ] Specify any new/custom protocol messages in the design document.
- [ ] Once candidate completions are available from the runtime, implement the ranking algorithm as specified in luna/luna#713.
- [ ] Determine how best to optimise very large completion sets while remaining compatible with LSP.
- [ ] Implement any valid optimisations that have been determined by the team. 

### Acceptance Criteria & Test Cases

- We can provide useful autocompletion suggestions to the IDE.
- This functionality, especially the candidate ranking, has been rigorously tested.
Implement Engine Support for Autocompletion
issue