cleo icon indicating copy to clipboard operation
cleo copied to clipboard

Support for clink completion

Open zyf722 opened this issue 1 year ago • 4 comments

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.

zyf722 avatar Aug 08 '24 05:08 zyf722

So, if I understand that correctly, we would have to generate Lua code for completions, right?

Secrus avatar Aug 08 '24 08:08 Secrus

@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?

zyf722 avatar Aug 08 '24 10:08 zyf722

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.

Secrus avatar Aug 08 '24 10:08 Secrus

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 :)

zyf722 avatar Aug 08 '24 13:08 zyf722