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

Implement Engine Support for Autocompletion #731

Closed
8 tasks
iamrecursion opened this issue Dec 18, 2019 · 1 comment
Closed
8 tasks

Implement Engine Support for Autocompletion #731

iamrecursion opened this issue Dec 18, 2019 · 1 comment
Assignees
Labels
p-medium Should be completed in the next few sprints

Comments

@iamrecursion
Copy link
Contributor

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.
@iamrecursion
Copy link
Contributor Author

Superseded.

@iamrecursion iamrecursion transferred this issue from another repository Jun 23, 2020
@joenash joenash added Category: Interpreter p-medium Should be completed in the next few sprints labels Jun 23, 2020
@iamrecursion iamrecursion mentioned this issue Jun 23, 2020
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
p-medium Should be completed in the next few sprints
Projects
None yet
Development

No branches or pull requests

5 participants