Merge 1ec4080cee into 6ba2408cdf
				
					
				
			This commit is contained in:
		
						commit
						da00b8a083
					
				
							
								
								
									
										230
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										230
									
								
								init.lua
								
								
								
								
							| 
						 | 
				
			
			@ -359,107 +359,131 @@ require('lazy').setup({
 | 
			
		|||
  -- Use the `dependencies` key to specify the dependencies of a particular plugin
 | 
			
		||||
 | 
			
		||||
  { -- Fuzzy Finder (files, lsp, etc)
 | 
			
		||||
    'nvim-telescope/telescope.nvim',
 | 
			
		||||
    event = 'VimEnter',
 | 
			
		||||
    'folke/snacks.nvim',
 | 
			
		||||
    priority = 1000,
 | 
			
		||||
    lazy = false,
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      'nvim-lua/plenary.nvim',
 | 
			
		||||
      { -- If encountering errors, see telescope-fzf-native README for installation instructions
 | 
			
		||||
        'nvim-telescope/telescope-fzf-native.nvim',
 | 
			
		||||
 | 
			
		||||
        -- `build` is used to run some command when the plugin is installed/updated.
 | 
			
		||||
        -- This is only run then, not every time Neovim starts up.
 | 
			
		||||
        build = 'make',
 | 
			
		||||
 | 
			
		||||
        -- `cond` is a condition used to determine whether this plugin should be
 | 
			
		||||
        -- installed and loaded.
 | 
			
		||||
        cond = function()
 | 
			
		||||
          return vim.fn.executable 'make' == 1
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
      { 'nvim-telescope/telescope-ui-select.nvim' },
 | 
			
		||||
 | 
			
		||||
      -- Useful for getting pretty icons, but requires a Nerd Font.
 | 
			
		||||
      { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
 | 
			
		||||
    },
 | 
			
		||||
    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
 | 
			
		||||
      -- many different aspects of Neovim, your workspace, LSP, and more!
 | 
			
		||||
      --
 | 
			
		||||
      -- The easiest way to use Telescope, is to start by doing something like:
 | 
			
		||||
      --  :Telescope help_tags
 | 
			
		||||
      --
 | 
			
		||||
      -- After running this command, a window will open up and you're able to
 | 
			
		||||
      -- type in the prompt window. You'll see a list of `help_tags` options and
 | 
			
		||||
      -- a corresponding preview of the help.
 | 
			
		||||
      --
 | 
			
		||||
      -- Two important keymaps to use while in Telescope are:
 | 
			
		||||
      --  - Insert mode: <c-/>
 | 
			
		||||
      --  - Normal mode: ?
 | 
			
		||||
      --
 | 
			
		||||
      -- This opens a window that shows you all of the keymaps for the current
 | 
			
		||||
      -- Telescope picker. This is really useful to discover what Telescope can
 | 
			
		||||
      -- do as well as how to actually do it!
 | 
			
		||||
 | 
			
		||||
      -- [[ Configure Telescope ]]
 | 
			
		||||
      -- See `:help telescope` and `:help telescope.setup()`
 | 
			
		||||
      require('telescope').setup {
 | 
			
		||||
        -- You can put your default mappings / updates / etc. in here
 | 
			
		||||
        --  All the info you're looking for is in `:help telescope.setup()`
 | 
			
		||||
        --
 | 
			
		||||
        -- defaults = {
 | 
			
		||||
        --   mappings = {
 | 
			
		||||
        --     i = { ['<c-enter>'] = 'to_fuzzy_refine' },
 | 
			
		||||
        --   },
 | 
			
		||||
        -- },
 | 
			
		||||
        -- pickers = {}
 | 
			
		||||
        extensions = {
 | 
			
		||||
          ['ui-select'] = {
 | 
			
		||||
            require('telescope.themes').get_dropdown(),
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    -- snacks.nvim is a plugin that contains a collection of QoL improvements.
 | 
			
		||||
    -- One of those plugins is called snacks-picker
 | 
			
		||||
    -- It is a fuzzy finder, inspired by Telescope, that comes with a lot of different
 | 
			
		||||
    -- things that it can fuzzy find! It's more than just a "file finder", it can search
 | 
			
		||||
    -- many different aspects of Neovim, your workspace, LSP, and more!
 | 
			
		||||
    --
 | 
			
		||||
    -- Two important keymaps to use while in a picker are:
 | 
			
		||||
    --  - Insert mode: <c-/>
 | 
			
		||||
    --  - Normal mode: ?
 | 
			
		||||
    --
 | 
			
		||||
    -- This opens a window that shows you all of the keymaps for the current
 | 
			
		||||
    -- Snacks picker. This is really useful to discover what nacks-picker can
 | 
			
		||||
    -- do as well as how to actually do it!
 | 
			
		||||
 | 
			
		||||
      -- 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', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
 | 
			
		||||
      vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
 | 
			
		||||
      vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
 | 
			
		||||
 | 
			
		||||
      -- Slightly advanced example of overriding default behavior and theme
 | 
			
		||||
      vim.keymap.set('n', '<leader>/', function()
 | 
			
		||||
        -- You can pass additional configuration to Telescope to change the theme, layout, etc.
 | 
			
		||||
        builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
 | 
			
		||||
          winblend = 10,
 | 
			
		||||
          previewer = false,
 | 
			
		||||
        })
 | 
			
		||||
      end, { desc = '[/] Fuzzily search in current buffer' })
 | 
			
		||||
 | 
			
		||||
      -- It's also possible to pass additional configuration options.
 | 
			
		||||
      --  See `:help telescope.builtin.live_grep()` for information about particular keys
 | 
			
		||||
      vim.keymap.set('n', '<leader>s/', function()
 | 
			
		||||
        builtin.live_grep {
 | 
			
		||||
          grep_open_files = true,
 | 
			
		||||
          prompt_title = 'Live Grep in Open Files',
 | 
			
		||||
        }
 | 
			
		||||
      end, { desc = '[S]earch [/] in Open Files' })
 | 
			
		||||
    -- [[ Configure Snacks Pickers ]]
 | 
			
		||||
    -- See `:help snacks-picker` and `:help snacks-picker-setup`
 | 
			
		||||
    ---@type snacks.Config
 | 
			
		||||
    opts = {
 | 
			
		||||
      picker = {},
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    -- See `:help snacks-pickers-sources`
 | 
			
		||||
    keys = {
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sh',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.help()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [H]elp',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sk',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.keymaps()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [K]eymaps',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sf',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.smart()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [F]iles',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>ss',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.pickers()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [S]elect Snacks',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sw',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.grep_word()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch current [W]ord',
 | 
			
		||||
        mode = { 'n', 'x' },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sg',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.grep()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch by [G]rep',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sd',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.diagnostics()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [D]iagnostics',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sr',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.resume()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [R]esume',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>s.',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.recent()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch Recent Files ("." for repeat)',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader><leader>',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.buffers()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[ ] Find existing buffers',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>/',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.lines {}
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[/] Fuzzily search in current buffer',
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>s/',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.grep_buffers()
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [/] in Open Files',
 | 
			
		||||
      },
 | 
			
		||||
      -- Shortcut for searching your Neovim configuration files
 | 
			
		||||
      vim.keymap.set('n', '<leader>sn', function()
 | 
			
		||||
        builtin.find_files { cwd = vim.fn.stdpath 'config' }
 | 
			
		||||
      end, { desc = '[S]earch [N]eovim files' })
 | 
			
		||||
    end,
 | 
			
		||||
      {
 | 
			
		||||
        '<leader>sn',
 | 
			
		||||
        function()
 | 
			
		||||
          Snacks.picker.files { cwd = vim.fn.stdpath 'config' }
 | 
			
		||||
        end,
 | 
			
		||||
        desc = '[S]earch [N]eovim files',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  -- LSP Plugins
 | 
			
		||||
| 
						 | 
				
			
			@ -472,6 +496,7 @@ require('lazy').setup({
 | 
			
		|||
      library = {
 | 
			
		||||
        -- Load luvit types when the `vim.uv` word is found
 | 
			
		||||
        { path = '${3rd}/luv/library', words = { 'vim%.uv' } },
 | 
			
		||||
        { path = 'snacks.nvim', words = { 'Snacks' } },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -544,16 +569,15 @@ require('lazy').setup({
 | 
			
		|||
          map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
 | 
			
		||||
 | 
			
		||||
          -- Find references for the word under your cursor.
 | 
			
		||||
          map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
 | 
			
		||||
 | 
			
		||||
          map('grr', require('snacks').picker.lsp_references, '[G]oto [R]eferences')
 | 
			
		||||
          -- Jump to the implementation of the word under your cursor.
 | 
			
		||||
          --  Useful when your language has ways of declaring types without an actual implementation.
 | 
			
		||||
          map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
 | 
			
		||||
          map('gri', require('snacks').picker.lsp_implementations, '[G]oto [I]mplementation')
 | 
			
		||||
 | 
			
		||||
          -- Jump to the definition of the word under your cursor.
 | 
			
		||||
          --  This is where a variable was first declared, or where a function is defined, etc.
 | 
			
		||||
          --  To jump back, press <C-t>.
 | 
			
		||||
          map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
 | 
			
		||||
          map('grd', require('snacks').picker.lsp_definitions, '[G]oto [D]efinition')
 | 
			
		||||
 | 
			
		||||
          -- WARN: This is not Goto Definition, this is Goto Declaration.
 | 
			
		||||
          --  For example, in C this would take you to the header.
 | 
			
		||||
| 
						 | 
				
			
			@ -561,16 +585,16 @@ require('lazy').setup({
 | 
			
		|||
 | 
			
		||||
          -- Fuzzy find all the symbols in your current document.
 | 
			
		||||
          --  Symbols are things like variables, functions, types, etc.
 | 
			
		||||
          map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols')
 | 
			
		||||
          map('gO', require('snacks').picker.lsp_symbols, 'Open Document Symbols')
 | 
			
		||||
 | 
			
		||||
          -- Fuzzy find all the symbols in your current workspace.
 | 
			
		||||
          --  Similar to document symbols, except searches over your entire project.
 | 
			
		||||
          map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
 | 
			
		||||
          map('gW', require('snacks').picker.lsp_workspace_symbols, 'Open Workspace Symbols')
 | 
			
		||||
 | 
			
		||||
          -- Jump to the type of the word under your cursor.
 | 
			
		||||
          --  Useful when you're not sure what type a variable is and you want to see
 | 
			
		||||
          --  the definition of its *type*, not where it was *defined*.
 | 
			
		||||
          map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
 | 
			
		||||
          map('grt', require('snacks').picker.lsp_type_definitions, '[G]oto [T]ype Definition')
 | 
			
		||||
 | 
			
		||||
          -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
 | 
			
		||||
          ---@param client vim.lsp.Client
 | 
			
		||||
| 
						 | 
				
			
			@ -880,7 +904,7 @@ require('lazy').setup({
 | 
			
		|||
    -- Change the name of the colorscheme plugin below, and then
 | 
			
		||||
    -- change the command in the config to whatever the name of that colorscheme is.
 | 
			
		||||
    --
 | 
			
		||||
    -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
 | 
			
		||||
    -- If you want to see what colorschemes are already installed, you can use `:lua Snacks.picker.colorschemes()`.
 | 
			
		||||
    'folke/tokyonight.nvim',
 | 
			
		||||
    priority = 1000, -- Make sure to load this before all the other start plugins.
 | 
			
		||||
    config = function()
 | 
			
		||||
| 
						 | 
				
			
			@ -987,9 +1011,9 @@ require('lazy').setup({
 | 
			
		|||
  -- { import = 'custom.plugins' },
 | 
			
		||||
  --
 | 
			
		||||
  -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
 | 
			
		||||
  -- Or use telescope!
 | 
			
		||||
  -- Or use the "help" snacks-picker!
 | 
			
		||||
  -- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
 | 
			
		||||
  -- you can continue same window with `<space>sr` which resumes last telescope search
 | 
			
		||||
  -- you can continue same window with `<space>sr` which resumes last snacks-picker search
 | 
			
		||||
}, {
 | 
			
		||||
  ui = {
 | 
			
		||||
    -- If you are using a Nerd Font: set icons to an empty table which will use the
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue