telescope.lua (2940B)
1 -- Fuzzy Finder (files, lsp, etc) 2 local configure_telescope = function() 3 require('telescope').setup { 4 defaults = { 5 mappings = { 6 i = { 7 ['<C-u>'] = false, 8 ['<C-d>'] = false, 9 }, 10 }, 11 }, 12 } 13 -- Call this after telescope's setup 14 pcall(require('telescope').load_extension, 'fzf') 15 16 -- Disable folding in Telescope's result window. 17 vim.api.nvim_create_autocmd("FileType", 18 { pattern = "TelescopeResults", command = [[setlocal nofoldenable foldlevelstart=99]] }) 19 20 local map = function(keys, desc, func, mode) 21 mode = mode or 'n' 22 vim.keymap.set(mode, keys, func, { desc = desc }) 23 end 24 local tsbuiltin = require 'telescope.builtin' 25 26 map('<leader>sp', '[S]earch [p]reviously opened files', require('telescope.builtin').oldfiles) 27 map('<leader>b', 'Find existing buffers', require('telescope.builtin').buffers) 28 map('<leader>sf', '[S]earch [F]iles', require('telescope.builtin').find_files) 29 map('<leader>cv', 'Neovim configs', 30 function() require('telescope.builtin').find_files({ cwd = vim.env.DOTFILES .. '/nvim' }) end) 31 map('<leader>sh', '[S]earch [H]elp', require('telescope.builtin').help_tags) 32 map('<leader>sw', '[S]earch current [W]ord', require('telescope.builtin').grep_string) 33 map('<leader>sg', '[S]earch by [G]rep', require('telescope.builtin').live_grep) 34 map('<leader>sd', '[S]earch [D]iagnostics', require('telescope.builtin').diagnostics) 35 map('<leader>sr', '[S]earch [R]eferences', require('telescope.builtin').lsp_references) 36 map('<leader>s<', '[S]earch [I]ncoming calls', require('telescope.builtin').lsp_incoming_calls) 37 map('<leader>s>', '[S]earch [O]utgoing calls', require('telescope.builtin').lsp_outgoing_calls) 38 map('<leader>st', '[Search] [T]his buffer', require('telescope.builtin').current_buffer_fuzzy_find) 39 map('<leader>sI', '[S]earch [i]mplementations', require('telescope.builtin').lsp_implementations) 40 map('<leader>sj', '[S]earch [J]umplist', require('telescope.builtin').jumplist) 41 map('<leader>ss', '[S]earch [S]ymbols', function() 42 local server_ready = not not vim.lsp.buf_notify(0, '$/progress', {}) 43 if server_ready then 44 require('telescope.builtin').lsp_dynamic_workspace_symbols() 45 else 46 require('telescope.builtin').treesitter() 47 end 48 end) 49 map('<leader>sb', 'Telescope [T]ags', function() 50 local server_ready = not not vim.lsp.buf_notify(0, '$/progress', {}) 51 if server_ready then 52 require('telescope.builtin').lsp_document_symbols() 53 else 54 require('telescope.builtin').tags() 55 end 56 end) 57 end 58 59 return { 60 { 61 'nvim-telescope/telescope.nvim', 62 dependencies = { 'nvim-lua/plenary.nvim' }, 63 config = configure_telescope, 64 }, 65 -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available 66 { 67 'nvim-telescope/telescope-fzf-native.nvim', 68 build = 'make', 69 cond = vim.fn.executable 'make' == 1 70 }, 71 72 }