diff --git a/nvim/lua/user/plugins/tools/finder.lua b/nvim/lua/user/plugins/tools/finder.lua index 7138db2..8ce1843 100644 --- a/nvim/lua/user/plugins/tools/finder.lua +++ b/nvim/lua/user/plugins/tools/finder.lua @@ -1,12 +1,15 @@ local icons = require("user.icons") local ui = require("user.ui.telescope") +require('user.utils.telescope').register_ui_select_loader() + return { "nvim-telescope/telescope.nvim", branch = "master", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", + "nvim-telescope/telescope-ui-select.nvim", "sharkdp/fd", }, cmd = "Telescope", @@ -77,14 +80,19 @@ return { }) }), }, + extensions = { + ["ui-select"] = { + require("telescope.themes").get_dropdown(ui.dropdown) + } + } } end, config = function(_, opts) local telescope = require("telescope") telescope.setup(opts) - for name, _ in pairs(opts.extensions or {}) do - telescope.load_extension(name) - end + -- for name, _ in pairs(opts.extensions or {}) do + -- telescope.load_extension(name) + -- end end, } diff --git a/nvim/lua/user/utils/telescope.lua b/nvim/lua/user/utils/telescope.lua index 5092f7c..f8df21c 100644 --- a/nvim/lua/user/utils/telescope.lua +++ b/nvim/lua/user/utils/telescope.lua @@ -204,4 +204,26 @@ function M.height(percentage, opts) end end +local select_loader_loaded = false + +-- Neat hack to lazy load ui-select extension when vim.ui.select() is called. +function M.register_ui_select_loader() + if select_loader_loaded then + return + end + + local std_select = vim.ui.select + vim.ui.select = function (items, opts, choice) + local hasExt, _ = pcall(require, "telescope._extensions.ui-select") + if hasExt then + require('telescope').load_extension("ui-select") + else + vim.ui.select = std_select + end + vim.ui.select(items, opts, choice) + end + select_loader_loaded = true +end + + return M