Make installed completion lazy load #92
Merged
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 enables having a Typer script/program that is only available under a virtual environment that is loaded later, after the shell is already started, and still have completion support there.
This would also improve shell startup performance as it no longer has to call Python during startup, only later when requesting completion.
The way it works is that completion for a program can be installed "globally" for the whole shell, but it won't call the program until a completion is requested. This also means that it would be even possible to have different versions of a program under different environments (or 2 programs with the same name), and after activating the environment, when triggering a completion for that program name, the one inside the environment will be the one used to request the completion.