feat: Add Call type for Vim/Neovim function call representation #16
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.
Summary
This PR introduces a new
Calltype to represent Vim/Neovim function call tuples, improving type reusability and codemaintainability.
Motivation
Currently, every method that uses function call tuples needs to redefine the tuple type
[string, ...unknown[]]inline. Thisapproach violates the DRY (Don't Repeat Yourself) principle and leads to:
In practice, we already see this issue in the ecosystem:
@denops/std/batchand other modules redefine similar tuple typesChanges
Calltype definitionCalltype@paramtags for labeled tuple elements, sofnandargsare documented as regular text descriptionsCompatibility
This change is fully backward compatible:
Calltype is simply an extraction of the existing tuple structureThis aligns with the
@denops/corephilosophy of maintaining stability while improving developer experience.Future Plans
Once this change is merged, we plan to:
Calltype from@denops/stdfor plugin developers@denops/std(following the principle that@denops/coreis not directly used by plugindevelopers)
@denops/stdto use this type, eliminating duplicationsBenefits
Calltype (via@denops/std)Testing
Summary by CodeRabbit