Skip to content

vim.ui.select instead of telescope or fzf-lua#160

Open
ataha322 wants to merge 1 commit intoThePrimeagen:masterfrom
ataha322:ata/vim-ui-select
Open

vim.ui.select instead of telescope or fzf-lua#160
ataha322 wants to merge 1 commit intoThePrimeagen:masterfrom
ataha322:ata/vim-ui-select

Conversation

@ataha322
Copy link

  • This is more of a question than a request to merge.
  • There probably was a reason maintainers implemented separate extensions for telescope or fzf and not use native vim.ui.select() (which can accept telescope of fzf as hooks).

If there was a reason, can someone explain. If not, we can drop a lot of code and docs if we just use vim.ui.select().

@ataha322 ataha322 marked this pull request as ready for review March 16, 2026 13:33
@ThePrimeagen
Copy link
Owner

the reason is that i have never really dont anything with that side of the world and the people who implemented telescope / fzf did it that way and i thought it was ok.

if this is better, i am totally down :) i just have no idea. @codegirl-007 did you do telescope?

@codegirl-007
Copy link
Contributor

It was done as part of the model picker (not by me) in #92.

I agree that fewer dependencies are better. From what I understand, switching to vim.ui.select should remove the last dependency in 99, aside from Opencode. The only other dependency I was aware of was cmp/blink but native completions work now.

@ataha322
Copy link
Author

ataha322 commented Mar 25, 2026

Telescope has an extension to interface with vim.ui.select() - nvim-telescope/telescope-ui-select.nvim.
It's meant for this exact use case and I'm pretty sure fzf supports that too.
This way user can configure telescope/fzf picker for vim.ui.select() with something like this:

{
    'nvim-telescope/telescope.nvim',
    -- ...
    dependencies = {
        -- ...
        'nvim-telescope/telescope-ui-select.nvim'
    },
    opts = function()
        return {
            -- ...
            extensions = {
                ["ui-select"] = {
                    require('telescope.themes').get_dropdown({
                        previewer = false,
                    })
                }
            }
        }
    end
},

pretty sure this is how a lot of plugins (and users) expect to interface with pickers and not have to maintain picker-specific code.

but the real win is simpler docs lol

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants