return { 'nvim-telescope/telescope.nvim', config = function(_, opts) local telescope = require('telescope') local actions = require('telescope.actions') -- local action_state = require('telescope.actions.state') local fb_actions = telescope.extensions.file_browser.actions -- local custom_actions = {} -- function custom_actions.grep_multi_select(prompt_bufnr) -- local function get_table_size(t) -- local count = 0 -- for _ in pairs(t) do -- count = count + 1 -- end -- return count -- end -- local picker = action_state.get_current_picker(prompt_bufnr) -- local num_selections = get_table_size(picker:get_multi_selection()) -- if num_selections > 1 then -- actions.send_selected_to_qflist(prompt_bufnr) -- actions.open_qflist() -- else -- actions.file_edit(prompt_bufnr) -- end -- end opts.defaults = { file_ignore_patterns = { '.png$', '.jpg$', '.jpeg$', '.ico$', '.icns$', '.webp$', '.uproject$', '-workspace$', }, layout_config = { prompt_position = 'top' }, layout_strategy = 'horizontal', mappings = { n = { -- [''] = custom_actions.grep_multi_select, }, i = { [''] = actions.close, -- [''] = custom_actions.grep_multi_select, }, }, prompt_prefix = '  ', results_title = false, selection_caret = '➤ ', sorting_strategy = 'ascending', winblend = 0, } opts.pickers = { diagnostics = { theme = 'ivy', initial_mode = 'normal', layout_config = { preview_cutoff = 9999, }, }, grep_string = { initial_mode = 'normal', }, } opts.extensions = { file_browser = { theme = 'dropdown', hijack_netrw = true, mappings = { ['n'] = { ['N'] = fb_actions.create, ['h'] = fb_actions.goto_parent_dir, }, }, }, } telescope.setup(opts) telescope.load_extension('file_browser') end, dependencies = { 'nvim-lua/plenary.nvim', 'nvim-telescope/telescope-file-browser.nvim', 'kevinhwang91/nvim-bqf', }, keys = { { ';f', function() require('telescope.builtin').find_files({ no_ignore = false, hidden = true, file_ignore_patterns = { '.git', '.node_modules', }, }) end, }, { ';r', function() require('telescope.builtin').live_grep() end, }, { '\\\\', function() require('telescope.builtin').buffers() end, }, { ';h', function() require('telescope.builtin').help_tags() end, }, { ';;', function() require('telescope.builtin').resume() end, }, { ';d', function() require('telescope.builtin').diagnostics() end, }, { ';t', function() require('telescope.builtin').treesitter() end, }, { ';s', function() require('telescope.builtin').lsp_document_symbols() end }, { ';w', function() require('telescope.builtin').lsp_dynamic_workspace_symbols() end }, { ';g', function() require('telescope.builtin').grep_string({ search = vim.fn.input('Grep For > ')}) end }, { 'rn', -- custom_actions.grep_multi_select }, { 'sf', function() local telescope = require('telescope') local function telescope_buffer_dir() return vim.fn.expand('%:p:h') end telescope.extensions.file_browser.file_browser({ path = '%:p:h', cwd = telescope_buffer_dir(), respect_gitignore = false, hidden = true, grouped = true, previewer = false, initial_mode = 'normal', layout_config = {height = 40}, }) end, }, }, }