Support for clink completion
Clink introduces multiple modern shell features to Windows cmd.exe, and it supports extending completions through Lua 5.2 scripts like:
clink.argmatcher("foo")
:addflags("-?", "-h", "-n", "-v", "--help", "--nothing", "--verbose")
:addarg("print", "delete")
:addarg(clink.filematches)
:nofiles()
:adddescriptions(
{ "-n", "--nothing", description = "Do nothing; show what would happen without doing it" },
{ "-v", "--verbose", description = "Verbose output" },
{ "-h", "--help", "-?", description = "Show help text" },
{ "print", description = "Print the specified file" },
{ "delete", description = "Delete the specified file" },
)
and
clink.argmatcher("git")
:addarg({
"merge"..clink.argmatcher():addflags({
"--strategy"..clink.argmatcher():addarg({
"resolve",
"recursive",
"ours",
"octopus",
"subtree",
})
})
})
It would be great if support for generating clink completions (for tools like poetry) could be added. I'm glad to help if the idea gets considered by the team.
So, if I understand that correctly, we would have to generate Lua code for completions, right?
@Secrus Yes, that's the case. And I believe this can be done using a template, just like how completions are generated for other shells?
Seems like something doable, provided that clink doesn't change their API too often. I am open to considering it, but most likely as a post-3.0 feature. Right now I want to focus on refactoring and improving already existing features.
Glad to see this idea is being considered. Looking forward to it and if there is anything I can do to help, please let me know :)