Git Product home page Git Product logo

Comments (3)

glehmann avatar glehmann commented on June 27, 2024

I don't think there is currently a great way to do that. That definitely something that would be nice, if someone wants to give it a try!

For now, in our private application, we are completing with both the directory name and the directory name with a trailing slash:

$ myapp d<tab>
dir1
dir1/
dir2
dir2/

because there are two entries that begin exactly the same, the completion is done up to the full dir name, without the slash, and without space, so it is possilbe to continue the completion process.
Obviously the drawback is that the completion list is polluted by twice the amount of entries…

from click-completion.

makkus avatar makkus commented on June 27, 2024

Ah, nice workaround, thanks! Will use that for now.

from click-completion.

flokno avatar flokno commented on June 27, 2024

Hi @makkus and @glehmann , could you give a more complete example on how def complete .. is used to perform filename completion?

I use the fish shell and the autocompletion is currently useless to me since filenames are not completed :/

p.s. It seems that

from glob import glob
import click

complete_filenames = click.Choice(glob("**", recursive=True))

...
@click.argument("filename", type=complete_filenames)
...

does the job for me. Anyway if you have other suggestions, please let me know. Thanks!

p.p.s it does only when the directory tree is too large.

p.p.p.s this seems to be sufficient and doesn't require glob or anything:

complete_filenames = click.Path(exists=True)

p.p.p.p.s. only on fish 2.2.0 though, I noticed. I tried to understand changes in the fish completion API after 2.2.0, but did not come too far until now. Any ideas?

from click-completion.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.