Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is it possible to use fzf for TAB completions? #5259

Open
beetleb opened this issue Jan 5, 2024 · 5 comments
Open

Is it possible to use fzf for TAB completions? #5259

beetleb opened this issue Jan 5, 2024 · 5 comments

Comments

@beetleb
Copy link

beetleb commented Jan 5, 2024

Is there something I can add to my config file to swap the completion selection mechanism with fzf?

The idea is when you do, say, ls , the (standard) completion function generates a list of candidates, but the interface by which the user selects will be fzf.

I have not been able to find a way via the docs.

Thanks.

For community

⬇️ Please click the 👍 reaction instead of leaving a +1 or 👍 comment

@anki-code
Copy link
Member

anki-code commented Jan 5, 2024

Hi! I know there is https://github.com/laloch/xontrib-fzf-widgets in https://github.com/topics/xontrib and some issues here. But I'm not the fzf user.

@beetleb
Copy link
Author

beetleb commented Jan 5, 2024

I have fzf-widgets and have modified it to my needs (the repo has a lot of bugs, too). But it's use case is not what I'm asking for.

Let's forget fzf for a minute.

When I do ls <TAB>, this is what I see:

image

Note the selection interface that comes built in with xonsh. I'd like to swap the selection interface with any tool of my choice (fzf, or anything else). How would I go about doing that?

@anki-code
Copy link
Member

anki-code commented Jan 5, 2024

In xonsh you can manage the list of completers. Start from completer list and completer --help commands. Than you can add your own completer and release it as xontrib (examples).

@beetleb
Copy link
Author

beetleb commented Jan 5, 2024

I looked at the completer tutorial, and it seems like a completer is more about determining the list of completion candidates, as opposed to the selection interface. Is my understanding incorrect?

I actually tried writing a completer to use fzf, but had little success - for git branch completion in the git checkout command. I had my completer at the top of the completion list so it had priority over xonsh's built-in completer. It would randomly use it - about half the time it would skip it and use the built in one. And even when it did pick my completer, some keypresses would fail in fzf.

There is another issue (#4536) where it was pointed out that it's not wise to call an interactive program like fzf in a completer.

Even if I could get this working via a xonsh completion function, ideally I do not want to write completion functions for every completion that xonsh already provides. I want to reuse the ones that come with xonsh, and merely change the selection tool. If I could do that, I could have it work with any xonsh completion function out there (with some limits).

@jnoortheen
Copy link
Member

jnoortheen commented Jan 19, 2024

You can looking from shell-backend implementation. You can extend the readline implementation or create new one from scratch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants