Merge branch 'master' of https://github.com/nvim-lua/kickstart.nvim into nvim-lua-master
This commit is contained in:
		
						commit
						4f2e0c6d59
					
				
							
								
								
									
										224
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										224
									
								
								init.lua
								
								
								
								
							| 
						 | 
				
			
			@ -115,7 +115,7 @@ vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right win
 | 
			
		|||
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
 | 
			
		||||
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
 | 
			
		||||
 | 
			
		||||
-- NOTE: Some terminals have coliding keymaps or are not able to send distinct keycodes
 | 
			
		||||
-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes
 | 
			
		||||
-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
 | 
			
		||||
-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
 | 
			
		||||
-- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" })
 | 
			
		||||
| 
						 | 
				
			
			@ -253,11 +253,9 @@ require('lazy').setup({
 | 
			
		|||
 | 
			
		||||
      -- Document existing key chains
 | 
			
		||||
      spec = {
 | 
			
		||||
        { '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
 | 
			
		||||
        { '<leader>d', group = '[D]ebug/Document' },
 | 
			
		||||
        { '<leader>g', group = '[G]it' },
 | 
			
		||||
        { '<leader>s', group = '[S]earch' },
 | 
			
		||||
        { '<leader>w', group = '[W]orkspace' },
 | 
			
		||||
        { '<leader>t', group = '[T]oggle' },
 | 
			
		||||
        { '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
 | 
			
		||||
        { '<leader>m', group = '[M]isc' },
 | 
			
		||||
| 
						 | 
				
			
			@ -276,8 +274,6 @@ require('lazy').setup({
 | 
			
		|||
  { -- Fuzzy Finder (files, lsp, etc)
 | 
			
		||||
    'nvim-telescope/telescope.nvim',
 | 
			
		||||
    event = 'VimEnter',
 | 
			
		||||
    version = false,
 | 
			
		||||
    -- tag = '0.1.8',
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      'nvim-lua/plenary.nvim',
 | 
			
		||||
      { -- If encountering errors, see telescope-fzf-native README for installation instructions
 | 
			
		||||
| 
						 | 
				
			
			@ -413,8 +409,8 @@ require('lazy').setup({
 | 
			
		|||
      -- Useful status updates for LSP.
 | 
			
		||||
      { 'j-hui/fidget.nvim', opts = {} },
 | 
			
		||||
 | 
			
		||||
      -- Allows extra capabilities provided by nvim-cmp
 | 
			
		||||
      'hrsh7th/cmp-nvim-lsp',
 | 
			
		||||
      -- Allows extra capabilities provided by blink.cmp
 | 
			
		||||
      'saghen/blink.cmp',
 | 
			
		||||
    },
 | 
			
		||||
    config = function()
 | 
			
		||||
      -- Brief aside: **What is LSP?**
 | 
			
		||||
| 
						 | 
				
			
			@ -459,42 +455,43 @@ require('lazy').setup({
 | 
			
		|||
            vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          -- 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('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
 | 
			
		||||
          -- Rename the variable under your cursor.
 | 
			
		||||
          --  Most Language Servers support renaming across files, etc.
 | 
			
		||||
          map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
 | 
			
		||||
 | 
			
		||||
          -- Execute a code action, usually your cursor needs to be on top of an error
 | 
			
		||||
          -- or a suggestion from your LSP for this to activate.
 | 
			
		||||
          map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
 | 
			
		||||
 | 
			
		||||
          -- Find references for the word under your cursor.
 | 
			
		||||
          map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
 | 
			
		||||
          map('grr', require('telescope.builtin').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('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
 | 
			
		||||
          map('gri', require('telescope.builtin').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')
 | 
			
		||||
 | 
			
		||||
          -- WARN: This is not Goto Definition, this is Goto Declaration.
 | 
			
		||||
          --  For example, in C this would take you to the header.
 | 
			
		||||
          map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
			
		||||
 | 
			
		||||
          -- 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')
 | 
			
		||||
 | 
			
		||||
          -- 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')
 | 
			
		||||
 | 
			
		||||
          -- 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('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
 | 
			
		||||
 | 
			
		||||
          -- Fuzzy find all the symbols in your current document.
 | 
			
		||||
          --  Symbols are things like variables, functions, types, etc.
 | 
			
		||||
          map('<leader>dS', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
 | 
			
		||||
 | 
			
		||||
          -- Fuzzy find all the symbols in your current workspace.
 | 
			
		||||
          --  Similar to document symbols, except searches over your entire project.
 | 
			
		||||
          map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
 | 
			
		||||
 | 
			
		||||
          -- Rename the variable under your cursor.
 | 
			
		||||
          --  Most Language Servers support renaming across files, etc.
 | 
			
		||||
          map('<leader>cr', vim.lsp.buf.rename, '[R]ename')
 | 
			
		||||
 | 
			
		||||
          -- Execute a code action, usually your cursor needs to be on top of an error
 | 
			
		||||
          -- or a suggestion from your LSP for this to activate.
 | 
			
		||||
          map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
 | 
			
		||||
 | 
			
		||||
          -- WARN: This is not Goto Definition, this is Goto Declaration.
 | 
			
		||||
          --  For example, in C this would take you to the header.
 | 
			
		||||
          map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
			
		||||
          map('grt', require('telescope.builtin').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
 | 
			
		||||
| 
						 | 
				
			
			@ -581,10 +578,9 @@ require('lazy').setup({
 | 
			
		|||
 | 
			
		||||
      -- LSP servers and clients are able to communicate to each other what features they support.
 | 
			
		||||
      --  By default, Neovim doesn't support everything that is in the LSP specification.
 | 
			
		||||
      --  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
 | 
			
		||||
      --  So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
 | 
			
		||||
      local capabilities = vim.lsp.protocol.make_client_capabilities()
 | 
			
		||||
      capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
 | 
			
		||||
      --  When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
 | 
			
		||||
      --  So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
 | 
			
		||||
      local capabilities = require('blink.cmp').get_lsp_capabilities()
 | 
			
		||||
 | 
			
		||||
      -- Enable the following language servers
 | 
			
		||||
      --  Feel free to add/remove any LSPs that you want here. They will automatically be installed.
 | 
			
		||||
| 
						 | 
				
			
			@ -783,12 +779,14 @@ require('lazy').setup({
 | 
			
		|||
  },
 | 
			
		||||
 | 
			
		||||
  { -- Autocompletion
 | 
			
		||||
    'hrsh7th/nvim-cmp',
 | 
			
		||||
    event = 'InsertEnter',
 | 
			
		||||
    'saghen/blink.cmp',
 | 
			
		||||
    event = 'VimEnter',
 | 
			
		||||
    version = '1.*',
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      -- Snippet Engine & its associated nvim-cmp source
 | 
			
		||||
      -- Snippet Engine
 | 
			
		||||
      {
 | 
			
		||||
        'L3MON4D3/LuaSnip',
 | 
			
		||||
        version = '2.*',
 | 
			
		||||
        build = (function()
 | 
			
		||||
          -- Build Step is needed for regex support in snippets.
 | 
			
		||||
          -- This step is not supported in many windows environments.
 | 
			
		||||
| 
						 | 
				
			
			@ -809,99 +807,75 @@ require('lazy').setup({
 | 
			
		|||
          --   end,
 | 
			
		||||
          -- },
 | 
			
		||||
        },
 | 
			
		||||
        opts = {},
 | 
			
		||||
      },
 | 
			
		||||
      'saadparwaiz1/cmp_luasnip',
 | 
			
		||||
 | 
			
		||||
      -- Adds other completion capabilities.
 | 
			
		||||
      --  nvim-cmp does not ship with all sources by default. They are split
 | 
			
		||||
      --  into multiple repos for maintenance purposes.
 | 
			
		||||
      'hrsh7th/cmp-nvim-lsp',
 | 
			
		||||
      'hrsh7th/cmp-path',
 | 
			
		||||
      'hrsh7th/cmp-nvim-lsp-signature-help',
 | 
			
		||||
      'folke/lazydev.nvim',
 | 
			
		||||
    },
 | 
			
		||||
    config = function()
 | 
			
		||||
      -- See `:help cmp`
 | 
			
		||||
      local cmp = require 'cmp'
 | 
			
		||||
      local luasnip = require 'luasnip'
 | 
			
		||||
      luasnip.config.setup {}
 | 
			
		||||
 | 
			
		||||
      cmp.setup {
 | 
			
		||||
        snippet = {
 | 
			
		||||
          expand = function(args)
 | 
			
		||||
            luasnip.lsp_expand(args.body)
 | 
			
		||||
          end,
 | 
			
		||||
        },
 | 
			
		||||
        completion = { completeopt = 'menu,menuone,noinsert' },
 | 
			
		||||
 | 
			
		||||
        -- For an understanding of why these mappings were
 | 
			
		||||
        -- chosen, you will need to read `:help ins-completion`
 | 
			
		||||
    --- @module 'blink.cmp'
 | 
			
		||||
    --- @type blink.cmp.Config
 | 
			
		||||
    opts = {
 | 
			
		||||
      keymap = {
 | 
			
		||||
        -- TODO: Add "Enter as way to apply suggestion"
 | 
			
		||||
        -- 'default' (recommended) for mappings similar to built-in completions
 | 
			
		||||
        --   <c-y> to accept ([y]es) the completion.
 | 
			
		||||
        --    This will auto-import if your LSP supports it.
 | 
			
		||||
        --    This will expand snippets if the LSP sent a snippet.
 | 
			
		||||
        -- 'super-tab' for tab to accept
 | 
			
		||||
        -- 'enter' for enter to accept
 | 
			
		||||
        -- 'none' for no mappings
 | 
			
		||||
        --
 | 
			
		||||
        -- For an understanding of why the 'default' preset is recommended,
 | 
			
		||||
        -- you will need to read `:help ins-completion`
 | 
			
		||||
        --
 | 
			
		||||
        -- No, but seriously. Please read `:help ins-completion`, it is really good!
 | 
			
		||||
        mapping = cmp.mapping.preset.insert {
 | 
			
		||||
          -- Select the [n]ext item
 | 
			
		||||
          ['<C-j>'] = cmp.mapping.select_next_item(),
 | 
			
		||||
          -- Select the [p]revious item
 | 
			
		||||
          ['<C-k>'] = cmp.mapping.select_prev_item(),
 | 
			
		||||
          --['<Tab>'] = cmp.mapping.select_next_item(),
 | 
			
		||||
          --['<S-Tab>'] = cmp.mapping.select_prev_item(),
 | 
			
		||||
        --
 | 
			
		||||
        -- All presets have the following mappings:
 | 
			
		||||
        -- <tab>/<s-tab>: move to right/left of your snippet expansion
 | 
			
		||||
        -- <c-space>: Open menu or open docs if already open
 | 
			
		||||
        -- <c-n>/<c-p> or <up>/<down>: Select next/previous item
 | 
			
		||||
        -- <c-e>: Hide menu
 | 
			
		||||
        -- <c-k>: Toggle signature help
 | 
			
		||||
        --
 | 
			
		||||
        -- See :h blink-cmp-config-keymap for defining your own keymap
 | 
			
		||||
        preset = 'default',
 | 
			
		||||
 | 
			
		||||
          -- Scroll the documentation window [b]ack / [f]orward
 | 
			
		||||
          ['<C-d>'] = cmp.mapping.scroll_docs(-4),
 | 
			
		||||
          ['<C-u>'] = cmp.mapping.scroll_docs(4),
 | 
			
		||||
          -- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
 | 
			
		||||
          -- ['<C-f>'] = cmp.mapping.scroll_docs(4),
 | 
			
		||||
        -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
 | 
			
		||||
        --    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
          -- Accept ([y]es) the completion.
 | 
			
		||||
          --  This will auto-import if your LSP supports it.
 | 
			
		||||
          --  This will expand snippets if the LSP sent a snippet.
 | 
			
		||||
          -- ['<C-y>'] = cmp.mapping.confirm { select = true },
 | 
			
		||||
          ['<CR>'] = cmp.mapping.confirm {
 | 
			
		||||
            behavior = cmp.ConfirmBehavior.Insert,
 | 
			
		||||
            select = true,
 | 
			
		||||
          },
 | 
			
		||||
      appearance = {
 | 
			
		||||
        -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
 | 
			
		||||
        -- Adjusts spacing to ensure icons are aligned
 | 
			
		||||
        nerd_font_variant = 'mono',
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
          ['<C-e>'] = cmp.mapping.close(),
 | 
			
		||||
      completion = {
 | 
			
		||||
        -- By default, you may press `<c-space>` to show the documentation.
 | 
			
		||||
        -- Optionally, set `auto_show = true` to show the documentation after a delay.
 | 
			
		||||
        documentation = { auto_show = false, auto_show_delay_ms = 500 },
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
          -- Manually trigger a completion from nvim-cmp.
 | 
			
		||||
          --  Generally you don't need this, because nvim-cmp will display
 | 
			
		||||
          --  completions whenever it has completion options available.
 | 
			
		||||
          ['<C-Space>'] = cmp.mapping.complete {},
 | 
			
		||||
 | 
			
		||||
          -- Think of <c-l> as moving to the right of your snippet expansion.
 | 
			
		||||
          --  So if you have a snippet that's like:
 | 
			
		||||
          --  function $name($args)
 | 
			
		||||
          --    $body
 | 
			
		||||
          --  end
 | 
			
		||||
          --
 | 
			
		||||
          -- <c-l> will move you to the right of each of the expansion locations.
 | 
			
		||||
          -- <c-h> is similar, except moving you backwards.
 | 
			
		||||
          ['<C-l>'] = cmp.mapping(function()
 | 
			
		||||
            if luasnip.expand_or_locally_jumpable() then
 | 
			
		||||
              luasnip.expand_or_jump()
 | 
			
		||||
            end
 | 
			
		||||
          end, { 'i', 's' }),
 | 
			
		||||
          ['<C-h>'] = cmp.mapping(function()
 | 
			
		||||
            if luasnip.locally_jumpable(-1) then
 | 
			
		||||
              luasnip.jump(-1)
 | 
			
		||||
            end
 | 
			
		||||
          end, { 'i', 's' }),
 | 
			
		||||
 | 
			
		||||
          -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
 | 
			
		||||
          --    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
 | 
			
		||||
      sources = {
 | 
			
		||||
        default = { 'lsp', 'path', 'snippets', 'lazydev' },
 | 
			
		||||
        providers = {
 | 
			
		||||
          lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
 | 
			
		||||
        },
 | 
			
		||||
        sources = {
 | 
			
		||||
          {
 | 
			
		||||
            name = 'lazydev',
 | 
			
		||||
            -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it
 | 
			
		||||
            group_index = 0,
 | 
			
		||||
          },
 | 
			
		||||
          { name = 'nvim_lsp' },
 | 
			
		||||
          { name = 'luasnip' },
 | 
			
		||||
          { name = 'path' },
 | 
			
		||||
          { name = 'nvim_lsp_signature_help' },
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    end,
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      snippets = { preset = 'luasnip' },
 | 
			
		||||
 | 
			
		||||
      -- Blink.cmp includes an optional, recommended rust fuzzy matcher,
 | 
			
		||||
      -- which automatically downloads a prebuilt binary when enabled.
 | 
			
		||||
      --
 | 
			
		||||
      -- By default, we use the Lua implementation instead, but you may enable
 | 
			
		||||
      -- the rust implementation via `'prefer_rust_with_warning'`
 | 
			
		||||
      --
 | 
			
		||||
      -- See :h blink-cmp-config-fuzzy for more information
 | 
			
		||||
      fuzzy = { implementation = 'lua' },
 | 
			
		||||
 | 
			
		||||
      -- Shows a signature help window while you type arguments for a function
 | 
			
		||||
      signature = { enabled = true },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  { -- You can easily change to a different colorscheme.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,13 +4,5 @@
 | 
			
		|||
return {
 | 
			
		||||
  'windwp/nvim-autopairs',
 | 
			
		||||
  event = 'InsertEnter',
 | 
			
		||||
  -- Optional dependency
 | 
			
		||||
  dependencies = { 'hrsh7th/nvim-cmp' },
 | 
			
		||||
  config = function()
 | 
			
		||||
    require('nvim-autopairs').setup {}
 | 
			
		||||
    -- If you want to automatically add `(` after selecting a function or method
 | 
			
		||||
    local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
 | 
			
		||||
    local cmp = require 'cmp'
 | 
			
		||||
    cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
 | 
			
		||||
  end,
 | 
			
		||||
  opts = {},
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue