return { { "nvim-telescope/telescope.nvim", enabled = true, lazy = false, cmd = "Telescope", dependencies = { "nvim-lua/plenary.nvim", "nvim-telescope/telescope-ui-select.nvim" }, config = function(_, _) local builtin = require("telescope.builtin") local actions = require("telescope.actions") local conf = require("telescope.config").values local finders = require("telescope.finders") local pickers = require("telescope.pickers") local themes = require("telescope.themes") local action_state = require("telescope.actions.state") require("telescope").setup({ extensions = { ["ui-select"] = { require("telescope.themes").get_dropdown() } }, defaults = { ["borderchars"] = { "-", "¦", "-", "¦", "⌌", "⌍", "⌏", "⌎" }, layout_strategy = "horizontal", layout_config = { horizontal = { width = { padding = 0 }, height = 0.99 } }, cache_picker = { num_pickers = 100, limit_entries = 100, ignore_empty_prompt = true } }, pickers = { live_grep = { additional_args = function(_) return { "--hidden", "--glob=!**/.git/*" } end } } }) vim.keymap.set("n", "sf", function() require("telescope").extensions.file_browser.file_browser({ select_buffer = true, grouped = true, no_ignore = true, hidden = true, respect_gitignore = false, path = vim.fn.expand("%:p:h") }) end, {}) vim.keymap.set("n", "ss", builtin.resume) vim.keymap.set("n", "sS", builtin.pickers) vim.keymap.set("n", "sa", builtin.find_files) vim.keymap.set("n", "sg", builtin.git_files) vim.keymap.set("n", "si", builtin.live_grep) vim.keymap.set("n", "sI", function() local async = require 'plenary.async' local sender, receiver = async.control.channel.mpsc() local results = {} async.run(function() local result = vim.fn.system( "fd -t f | rev | cut -d/ -f1 -s | cut -d. -f1 -s | rev | tr '[:upper:]' '[:lower:]' | sort | uniq | xargs -I{} -n 1 printf '*.{}\n!*.{}\n'") sender.send(result) end) async.run(function() local result = vim.fn.system( "fd -t d | xargs -n 1 -I{} printf '{}*\n!{}*\n'") sender.send(result) end) async.run(function() local result = vim.fn.system( "fd -t d | rev | cut -d/ -f2 -s | rev | sort | uniq | xargs -n 1 -I{} printf '**/{}/*\n!**/{}/*\n'") sender.send(result) end) for _ = 1, 3 do local value = receiver.recv() if value ~= nil then results = vim.list_extend(results, vim.split(value, "\n")) end end pickers.new(themes.get_dropdown({}), { finder = finders.new_table({ results = results }), sorter = conf.generic_sorter(), attach_mappings = function(prompt_bufnr, _) actions.select_default:replace(function() actions.close(prompt_bufnr) local selection = action_state .get_selected_entry() builtin.live_grep({ glob_pattern = selection }) end) return true end, }):find() end) vim.keymap.set("n", "sb", builtin.buffers) vim.keymap.set("n", "sj", builtin.jumplist) vim.keymap.set("n", "sw", builtin.grep_string) vim.keymap.set("n", "sld", builtin.lsp_definitions) vim.keymap.set("n", "slt", builtin.lsp_type_definitions) vim.keymap.set("n", "slr", builtin.lsp_references) vim.keymap.set("n", "sli", builtin.lsp_implementations) vim.keymap.set("n", "sls", builtin.lsp_dynamic_workspace_symbols) require("telescope").load_extension("ui-select") require("telescope").load_extension("file_browser") end }, { "nvim-telescope/telescope-file-browser.nvim", dependencies = { "nvim-telescope/telescope.nvim" }, enabled = true, lazy = false, config = function(_, _) require("telescope").setup({ extensions = { file_browser = { respect_gitignore = false, hidden = { file_browser = true, folder_browser = true }, hijack_netrw = true, display_stat = { date = false, size = true, mode = false }, mappings = {} } } }) require("telescope").load_extension("file_browser") end } }