Move completion code into its own crate. #2591
Closed
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.
This allows the completions crate to be completely decoupled from nu-cli, allowing it to be developed independently from most other nu crates.
The major change in this commit is making the completion context be a trait. Currently limited to returning a signature registry, we'll likely have to expand this as time goes on.
Other approaches
Another approach would be to eliminate the context completely, and have the concrete
Completer
implementations receive shared (e.g.,Arc<RwLock<...>>
) instances of the things they need. This would require the caller to instantiate them though, which was outside of the scope of this PR. We can perhaps return to this idea later, once we have a dynamic registry of completers.