diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-06-30 17:29:25 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-06-30 17:29:25 +0300 |
| commit | d04cd30a2a8027f474204e6e9f858595ef691a77 (patch) | |
| tree | 1da3c5e2e4c271fa0ebc699b182d0a7c00b3c9bd /.config/nvim/lua/plugins/telescope.lua | |
| parent | af6bf9c6da71610ddbfac355e0563240deb37e21 (diff) | |
Updated telescope.nvim config, including nicer keybindings
Diffstat (limited to '.config/nvim/lua/plugins/telescope.lua')
| -rw-r--r-- | .config/nvim/lua/plugins/telescope.lua | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index 8c0a52b..90add72 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -1,4 +1,6 @@ return { + { 'nvim-telescope/telescope-fzf-native.nvim' }, + { 'nvim-telescope/telescope-ui-select.nvim' }, { 'nvim-telescope/telescope.nvim', tag = '0.1.5', @@ -6,49 +8,72 @@ return { config = function() local builtin = require('telescope.builtin') - local find_files = function() - builtin.find_files({ follow = true }) - end - - local grep = function(grep_func) - return function() - grep_func({ additional_args = { '--follow' } }) - end - end - + vim.keymap.set('n', '<leader>h', builtin.help_tags, { desc = '[H]elp' }) + vim.keymap.set('n', '<leader>m', builtin.man_pages, { desc = '[M]an Pages' }) vim.keymap.set('n', '<leader>th', builtin.colorscheme, { desc = 'List [Th]eme' }) - vim.keymap.set('n', '<leader>ff', find_files, { desc = '[F]ind [F]iles' }) - vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = '[F]ind [H]elp' }) - vim.keymap.set('n', '<leader>fk', builtin.keymaps, { desc = '[F]ind [K]eymaps' }) - vim.keymap.set('n', '<leader>fs', builtin.builtin, { desc = '[F]ind [S]elect Telescope' }) - -- vim.keymap.set('n', '<leader>fw', builtin.grep_string, { desc = '[F]ind current [W]ord' }) - -- vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = '[F]ind by [G]rep' }) - vim.keymap.set('n', '<leader>fw', grep(builtin.grep_string), { desc = '[F]ind current [W]ord' }) - vim.keymap.set('n', '<leader>fg', grep(builtin.live_grep), { desc = '[F]ind by [G]rep' }) - vim.keymap.set('n', '<leader>f.', builtin.oldfiles, { desc = '[F]ind Recent Files ("." for repeat)' }) - vim.keymap.set('n', 'gh', vim.lsp.buf.hover, { desc = '[G]oto [H]over' }) + vim.keymap.set('n', '<leader>fs', builtin.find_files, { desc = '[F]ile [S]ystem' }) + vim.keymap.set('n', '<leader>fw', builtin.grep_string, { desc = '[F]ind current [W]ord' }) + vim.keymap.set('n', '<leader>lv', builtin.live_grep, { desc = '[L]ive [G]rep' }) + vim.keymap.set('n', '<leader>f.', builtin.oldfiles, { desc = '[F]ind Recent Files ("." for old)' }) + vim.keymap.set('n', 'gd', builtin.lsp_definitions, { desc = '[G]oto [D]efinition' }) + vim.keymap.set('n', 'gh', vim.lsp.buf.hover, { desc = '[G]oto [H]over' }) vim.keymap.set('n', 'gu', builtin.lsp_references, { desc = '[G]oto [U]sages' }) - vim.keymap.set('n', '<leader>s', builtin.lsp_workspace_symbols, { desc = 'Show [S]tructure' }) - vim.keymap.set('n', '<leader>ds', builtin.lsp_document_symbols, { desc = 'Show [S]tructure' }) + vim.keymap.set('n', 'gi', builtin.lsp_implementations, { desc = '[G]oto [I]mplementations' }) + vim.keymap.set('n', 'gt', builtin.lsp_type_definitions, { desc = '[G]oto [T]ype Definitions' }) + vim.keymap.set('n', 'gw', builtin.diagnostics, { desc = '[G]oto [W]arnings' }) + + vim.keymap.set('n', '<leader>ds', builtin.lsp_document_symbols, { desc = '[D]ocument [S]symbols' }) + vim.keymap.set('n', '<leader>ps', builtin.lsp_workspace_symbols, { desc = '[P]roject [S]ymbols' }) + vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, { desc = '[C]ode [A]ction' }) vim.keymap.set('n', '<M-Enter>', vim.lsp.buf.code_action, { desc = 'Code Actions' }) + + -- TODO: Use some cool plugin to have IntelliJ-like renaming + -- Make sure to include a rr version for normal renaming and Shift+R for ciw + rr vim.keymap.set('n', 'R', vim.lsp.buf.rename, { desc = '[R]ename' }) - end, - }, - { - 'nvim-telescope/telescope-ui-select.nvim', - config = function() + + -- TODO: Look into the following + -- builtin.git_commits + -- builtin.git_branches + -- builtin.git_status + -- builtin.git_stash + local telescope = require('telescope') telescope.setup({ + defaults = { + mappings = { + i = { + -- map actions.which_key to <C-h> (default: <C-/>) + -- actions.which_key shows the mappings for your picker, + -- e.g. git_{create, delete, ...}_branch for the git_branches picker + ['<C-h>'] = 'which_key', + ['<C-s>'] = 'cycle_previewers_next', + ['<C-a>'] = 'cycle_previewers_prev', + }, + }, + }, + pickers = { + find_files = { follow = true }, + grep_string = { additional_args = '--follow' }, + live_grep = { additional_args = '--follow' }, + }, extensions = { - ['ui_select'] = { + ui_select = { require('telescope.themes').get_dropdown({}), }, + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = 'smart_case', -- or "ignore_case" or "respect_case" + -- the default case_mode is "smart_case" + }, }, }) telescope.load_extension('ui-select') + telescope.load_extension('fzf') end, }, } |
