From a19a4c2c90289b1bb5f3b87ba3e5f5d759961adf Mon Sep 17 00:00:00 2001 From: Zhao Date: Fri, 8 Mar 2024 19:43:08 +0800 Subject: [PATCH] feat: make telescope lazy loaded by command and key mappings --- init.lua | 148 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 111 insertions(+), 37 deletions(-) diff --git a/init.lua b/init.lua index 3bdb5e3..e04a223 100644 --- a/init.lua +++ b/init.lua @@ -296,7 +296,6 @@ require('lazy').setup({ { -- Fuzzy Finder (files, lsp, etc) 'nvim-telescope/telescope.nvim', - event = 'VimEnter', branch = '0.1.x', dependencies = { 'nvim-lua/plenary.nvim', @@ -318,6 +317,117 @@ require('lazy').setup({ -- Useful for getting pretty icons, but requires a Nerd Font. { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, }, + -- Lazy load telescope when the `Telescope` command is executed. + cmd = 'Telescope', + -- And also lazy load telescope on these key mappings. + -- For more builtin function, see `:help telescope.builtin`. + keys = { + { + 'sh', + function() + require('telescope.builtin').help_tags() + end, + desc = '[S]earch [H]elp', + }, + { + 'sk', + function() + require('telescope.builtin').keymaps() + end, + desc = '[S]earch [K]eymaps', + }, + { + 'sf', + function() + require('telescope.builtin').find_files() + end, + desc = '[S]earch [F]iles', + }, + { + 'ss', + function() + require('telescope.builtin').builtin() + end, + desc = '[S]earch [S]elect telescope.builtin', + }, + { + 'sw', + function() + require('telescope.builtin').grep_string() + end, + desc = '[S]earch current [W]ord', + }, + { + 'sg', + function() + require('telescope.builtin').live_grep() + end, + desc = '[S]earch by [G]rep', + }, + { + 'sd', + function() + require('telescope.builtin').diagnostics() + end, + desc = '[S]earch [D]iagnostics', + }, + { + 'sr', + function() + require('telescope.builtin').resume() + end, + desc = '[S]earch [R]esume', + }, + { + 's.', + function() + require('telescope.builtin').oldfiles() + end, + desc = '[S]earch Recent Files ("." for repeat)', + }, + { + '', + function() + require('telescope.builtin').buffers() + end, + desc = '[ ] Find existing buffers', + }, + + -- Slightly advanced example of overriding default behavior and theme + { + '/', + function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) + end, + desc = '[/] Fuzzily search in current buffer', + }, + + -- Also possible to pass additional configuration options. + -- See `:help telescope.builtin.live_grep()` for information about particular keys + { + 's/', + function() + require('telescope.builtin').live_grep { + grep_open_files = true, + prompt_title = 'Live Grep in Open Files', + } + end, + desc = '[S]earch [/] in Open Files', + }, + + -- Shortcut for searching your neovim configuration files + { + 'sn', + function() + require('telescope.builtin').find_files { cwd = vim.fn.stdpath 'config' } + end, + desc = '[S]earch [N]eovim files', + }, + }, config = function() -- Telescope is a fuzzy finder that comes with a lot of different things that -- it can fuzzy find! It's more than just a "file finder", it can search @@ -360,42 +470,6 @@ require('lazy').setup({ -- Enable telescope extensions, if they are installed pcall(require('telescope').load_extension, 'fzf') pcall(require('telescope').load_extension, 'ui-select') - - -- See `:help telescope.builtin` - local builtin = require 'telescope.builtin' - vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) - vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) - vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) - vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) - vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) - vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) - vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) - vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) - vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) - - -- Slightly advanced example of overriding default behavior and theme - vim.keymap.set('n', '/', function() - -- You can pass additional configuration to telescope to change theme, layout, etc. - builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { - winblend = 10, - previewer = false, - }) - end, { desc = '[/] Fuzzily search in current buffer' }) - - -- Also possible to pass additional configuration options. - -- See `:help telescope.builtin.live_grep()` for information about particular keys - vim.keymap.set('n', 's/', function() - builtin.live_grep { - grep_open_files = true, - prompt_title = 'Live Grep in Open Files', - } - end, { desc = '[S]earch [/] in Open Files' }) - - -- Shortcut for searching your neovim configuration files - vim.keymap.set('n', 'sn', function() - builtin.find_files { cwd = vim.fn.stdpath 'config' } - end, { desc = '[S]earch [N]eovim files' }) end, },