chore(nvim): sync
This commit is contained in:
		
							parent
							
								
									7bda7ac085
								
							
						
					
					
						commit
						641d2460de
					
				
							
								
								
									
										364
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										364
									
								
								init.lua
								
								
								
								
							| 
						 | 
					@ -126,6 +126,23 @@ vim.opt.clipboard = 'unnamedplus'
 | 
				
			||||||
-- Enable break indent
 | 
					-- Enable break indent
 | 
				
			||||||
vim.opt.breakindent = true
 | 
					vim.opt.breakindent = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Save all buffer
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<leader>wa', ':wall<CR>', { noremap = true, desc = '[W]rite [A]ll' })
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<leader>wf', ':w<CR>', { noremap = true, desc = '[W]rite [F]ile' })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create command do save with qw
 | 
				
			||||||
 | 
					vim.api.nvim_command 'cmap qw wq'
 | 
				
			||||||
 | 
					vim.api.nvim_command 'cmap WQ wq'
 | 
				
			||||||
 | 
					vim.api.nvim_command 'cmap QW wq'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Navigate buffers
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<S-h>', ':bp<CR>', { noremap = true, desc = '[G]oto [P]previous Buffer' })
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<S-l>', ':bn<CR>', { noremap = true, desc = '[G]oto [N]ext Buffer' })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.keymap.set('n', '[c', function()
 | 
				
			||||||
 | 
					  require('treesitter-context').go_to_context(vim.v.count1)
 | 
				
			||||||
 | 
					end, { silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Save undo history
 | 
					-- Save undo history
 | 
				
			||||||
vim.opt.undofile = true
 | 
					vim.opt.undofile = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,6 +155,9 @@ vim.opt.signcolumn = 'yes'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Decrease update time
 | 
					-- Decrease update time
 | 
				
			||||||
vim.opt.updatetime = 250
 | 
					vim.opt.updatetime = 250
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Decrease mapped sequence wait time
 | 
				
			||||||
 | 
					-- Displays which-key popup sooner
 | 
				
			||||||
vim.opt.timeoutlen = 300
 | 
					vim.opt.timeoutlen = 300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Configure how new splits should be opened
 | 
					-- Configure how new splits should be opened
 | 
				
			||||||
| 
						 | 
					@ -230,6 +250,9 @@ vim.opt.rtp:prepend(lazypath)
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
-- NOTE: Here is where you install your plugins.
 | 
					-- NOTE: Here is where you install your plugins.
 | 
				
			||||||
require('lazy').setup({
 | 
					require('lazy').setup({
 | 
				
			||||||
 | 
					  -- python import
 | 
				
			||||||
 | 
					  { 'stevanmilic/nvim-lspimport' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
 | 
					  -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
 | 
				
			||||||
  'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
 | 
					  'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -347,7 +370,13 @@ require('lazy').setup({
 | 
				
			||||||
        ['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
 | 
					        ['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
 | 
				
			||||||
        ['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
 | 
					        ['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
 | 
				
			||||||
        ['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
 | 
					        ['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
 | 
				
			||||||
 | 
					        ['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' },
 | 
				
			||||||
 | 
					        ['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' },
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      -- visual mode
 | 
				
			||||||
 | 
					      require('which-key').register({
 | 
				
			||||||
 | 
					        ['<leader>h'] = { 'Git [H]unk' },
 | 
				
			||||||
 | 
					      }, { mode = 'v' })
 | 
				
			||||||
    end,
 | 
					    end,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -451,7 +480,6 @@ require('lazy').setup({
 | 
				
			||||||
      vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
 | 
					      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>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
 | 
				
			||||||
      vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
 | 
					      vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
 | 
				
			||||||
>>>>>>> 66e2a5a425a4f3b2e4f9456d82b29718c24a8993
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      -- Slightly advanced example of overriding default behavior and theme
 | 
					      -- Slightly advanced example of overriding default behavior and theme
 | 
				
			||||||
      vim.keymap.set('n', '<leader>/', function()
 | 
					      vim.keymap.set('n', '<leader>/', function()
 | 
				
			||||||
| 
						 | 
					@ -851,6 +879,10 @@ cmp.setup {
 | 
				
			||||||
      -- Useful status updates for LSP.
 | 
					      -- Useful status updates for LSP.
 | 
				
			||||||
      -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
 | 
					      -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
 | 
				
			||||||
      { 'j-hui/fidget.nvim', opts = {} },
 | 
					      { 'j-hui/fidget.nvim', opts = {} },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      -- `neodev` configures Lua LSP for your Neovim config, runtime and plugins
 | 
				
			||||||
 | 
					      -- used for completion, annotations and signatures of Neovim apis
 | 
				
			||||||
 | 
					      { 'folke/neodev.nvim', opts = {} },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    config = function()
 | 
					    config = function()
 | 
				
			||||||
      -- Brief Aside: **What is LSP?**
 | 
					      -- Brief Aside: **What is LSP?**
 | 
				
			||||||
| 
						 | 
					@ -885,9 +917,8 @@ cmp.setup {
 | 
				
			||||||
      vim.api.nvim_create_autocmd('LspAttach', {
 | 
					      vim.api.nvim_create_autocmd('LspAttach', {
 | 
				
			||||||
        group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
 | 
					        group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
 | 
				
			||||||
        callback = function(event)
 | 
					        callback = function(event)
 | 
				
			||||||
          -- NOTE: Remember that lua is a real programming language, and as such it is possible
 | 
					          -- NOTE: Remember that Lua is a real programming language, and as such it is possible
 | 
				
			||||||
          -- to define small helper and utility functions so you don't have to repeat yourself
 | 
					          -- to define small helper and utility functions so you don't have to repeat yourself.
 | 
				
			||||||
          -- many times.
 | 
					 | 
				
			||||||
          --
 | 
					          --
 | 
				
			||||||
          -- In this case, we create a function that lets us more easily define mappings specific
 | 
					          -- In this case, we create a function that lets us more easily define mappings specific
 | 
				
			||||||
          -- for LSP related items. It sets the mode, buffer and description for us each time.
 | 
					          -- for LSP related items. It sets the mode, buffer and description for us each time.
 | 
				
			||||||
| 
						 | 
					@ -916,8 +947,8 @@ cmp.setup {
 | 
				
			||||||
          --  Symbols are things like variables, functions, types, etc.
 | 
					          --  Symbols are things like variables, functions, types, etc.
 | 
				
			||||||
          map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
 | 
					          map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          -- Fuzzy find all the symbols in your current workspace
 | 
					          -- Fuzzy find all the symbols in your current workspace.
 | 
				
			||||||
          --  Similar to document symbols, except searches over your whole project.
 | 
					          --  Similar to document symbols, except searches over your entire project.
 | 
				
			||||||
          map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
 | 
					          map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          -- Rename the variable under your cursor
 | 
					          -- Rename the variable under your cursor
 | 
				
			||||||
| 
						 | 
					@ -936,6 +967,19 @@ cmp.setup {
 | 
				
			||||||
          --  For example, in C this would take you to the header
 | 
					          --  For example, in C this would take you to the header
 | 
				
			||||||
          map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
					          map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- Signature hel
 | 
				
			||||||
 | 
					          --  For example, in C this would take you to the header.
 | 
				
			||||||
 | 
					          map('<C-k>', vim.lsp.buf.signature_help, '[G]oto [S]signature [H]elp')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- workspace add folder
 | 
				
			||||||
 | 
					          map('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]add folder')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- workspace remove folder
 | 
				
			||||||
 | 
					          map('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove folder')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- workspace list folder
 | 
				
			||||||
 | 
					          map('<leader>wl', vim.lsp.buf.list_workspace_folders, '[W]orkspace [L]ist folder')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          -- The following two autocommands are used to highlight references of the
 | 
					          -- The following two autocommands are used to highlight references of the
 | 
				
			||||||
          -- word under your cursor when your cursor rests there for a little while.
 | 
					          -- word under your cursor when your cursor rests there for a little while.
 | 
				
			||||||
          --    See `:help CursorHold` for information about when this is executed
 | 
					          --    See `:help CursorHold` for information about when this is executed
 | 
				
			||||||
| 
						 | 
					@ -943,15 +987,36 @@ cmp.setup {
 | 
				
			||||||
          -- When you move your cursor, the highlights will be cleared (the second autocommand).
 | 
					          -- When you move your cursor, the highlights will be cleared (the second autocommand).
 | 
				
			||||||
          local client = vim.lsp.get_client_by_id(event.data.client_id)
 | 
					          local client = vim.lsp.get_client_by_id(event.data.client_id)
 | 
				
			||||||
          if client and client.server_capabilities.documentHighlightProvider then
 | 
					          if client and client.server_capabilities.documentHighlightProvider then
 | 
				
			||||||
 | 
					            local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
 | 
				
			||||||
            vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
 | 
					            vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
 | 
				
			||||||
              buffer = event.buf,
 | 
					              buffer = event.buf,
 | 
				
			||||||
 | 
					              group = highlight_augroup,
 | 
				
			||||||
              callback = vim.lsp.buf.document_highlight,
 | 
					              callback = vim.lsp.buf.document_highlight,
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
 | 
					            vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
 | 
				
			||||||
              buffer = event.buf,
 | 
					              buffer = event.buf,
 | 
				
			||||||
 | 
					              group = highlight_augroup,
 | 
				
			||||||
              callback = vim.lsp.buf.clear_references,
 | 
					              callback = vim.lsp.buf.clear_references,
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            vim.api.nvim_create_autocmd('LspDetach', {
 | 
				
			||||||
 | 
					              group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
 | 
				
			||||||
 | 
					              callback = function(event2)
 | 
				
			||||||
 | 
					                vim.lsp.buf.clear_references()
 | 
				
			||||||
 | 
					                vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
 | 
				
			||||||
 | 
					              end,
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- The following autocommand is used to enable inlay hints in your
 | 
				
			||||||
 | 
					          -- code, if the language server you are using supports them
 | 
				
			||||||
 | 
					          --
 | 
				
			||||||
 | 
					          -- This may be unwanted, since they displace some of your code
 | 
				
			||||||
 | 
					          if client and client.server_capabilities.inlayHintProvider and vim.lsp.inlay_hint then
 | 
				
			||||||
 | 
					            map('<leader>th', function()
 | 
				
			||||||
 | 
					              vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
 | 
				
			||||||
 | 
					            end, '[T]oggle Inlay [H]ints')
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
        end,
 | 
					        end,
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
| 
						 | 
					@ -975,15 +1040,16 @@ cmp.setup {
 | 
				
			||||||
      local servers = {
 | 
					      local servers = {
 | 
				
			||||||
        -- clangd = {},
 | 
					        -- clangd = {},
 | 
				
			||||||
        -- gopls = {},
 | 
					        -- gopls = {},
 | 
				
			||||||
        -- pyright = {},
 | 
					        pyright = {},
 | 
				
			||||||
        -- rust_analyzer = {},
 | 
					        ruff = {},
 | 
				
			||||||
 | 
					        rust_analyzer = {},
 | 
				
			||||||
        -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
 | 
					        -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
 | 
				
			||||||
        --
 | 
					        --
 | 
				
			||||||
        -- Some languages (like typescript) have entire language plugins that can be useful:
 | 
					        -- Some languages (like typescript) have entire language plugins that can be useful:
 | 
				
			||||||
        --    https://github.com/pmizio/typescript-tools.nvim
 | 
					        --    https://github.com/pmizio/typescript-tools.nvim
 | 
				
			||||||
        --
 | 
					        --
 | 
				
			||||||
        -- But for many setups, the LSP (`tsserver`) will work just fine
 | 
					        -- But for many setups, the LSP (`tsserver`) will work just fine
 | 
				
			||||||
        -- tsserver = {},
 | 
					        tsserver = {},
 | 
				
			||||||
        --
 | 
					        --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        lua_ls = {
 | 
					        lua_ls = {
 | 
				
			||||||
| 
						 | 
					@ -1026,7 +1092,49 @@ cmp.setup {
 | 
				
			||||||
      -- for you, so that they are available from within Neovim.
 | 
					      -- for you, so that they are available from within Neovim.
 | 
				
			||||||
      local ensure_installed = vim.tbl_keys(servers or {})
 | 
					      local ensure_installed = vim.tbl_keys(servers or {})
 | 
				
			||||||
      vim.list_extend(ensure_installed, {
 | 
					      vim.list_extend(ensure_installed, {
 | 
				
			||||||
 | 
					        'azure-pipelines-language-server',
 | 
				
			||||||
 | 
					        'autoflake',
 | 
				
			||||||
 | 
					        'autopep8',
 | 
				
			||||||
 | 
					        'awk-language-server',
 | 
				
			||||||
 | 
					        'azure-pipelines-language-server',
 | 
				
			||||||
 | 
					        'bash-debug-adapter',
 | 
				
			||||||
 | 
					        'bash-language-server',
 | 
				
			||||||
 | 
					        'bicep-lsp',
 | 
				
			||||||
 | 
					        'black',
 | 
				
			||||||
 | 
					        'codelldb',
 | 
				
			||||||
 | 
					        'codespell',
 | 
				
			||||||
 | 
					        'debugpy',
 | 
				
			||||||
 | 
					        'dockerfile-language-server',
 | 
				
			||||||
 | 
					        'helm-ls',
 | 
				
			||||||
 | 
					        'html-lsp',
 | 
				
			||||||
 | 
					        'jq',
 | 
				
			||||||
 | 
					        'json-lsp',
 | 
				
			||||||
 | 
					        'jsonlint',
 | 
				
			||||||
 | 
					        'jsonnet-language-server',
 | 
				
			||||||
 | 
					        'lua-language-server',
 | 
				
			||||||
 | 
					        'markdownlint',
 | 
				
			||||||
 | 
					        'mypy',
 | 
				
			||||||
 | 
					        'powershell-editor-services',
 | 
				
			||||||
 | 
					        'prettier',
 | 
				
			||||||
 | 
					        'pyright',
 | 
				
			||||||
 | 
					        'ruff-lsp', -- linter for python (includes flake8, pep8, etc.)
 | 
				
			||||||
 | 
					        'debugpy', -- debugger
 | 
				
			||||||
 | 
					        'black', -- formatter
 | 
				
			||||||
 | 
					        'isort', -- organize imports
 | 
				
			||||||
 | 
					        'taplo', -- LSP for toml (for pyproject.toml files)
 | 
				
			||||||
 | 
					        'ruff',
 | 
				
			||||||
 | 
					        'rust-analyzer',
 | 
				
			||||||
 | 
					        'shellcheck',
 | 
				
			||||||
        'stylua', -- Used to format lua code
 | 
					        'stylua', -- Used to format lua code
 | 
				
			||||||
 | 
					        'terraform-ls',
 | 
				
			||||||
 | 
					        'tflint',
 | 
				
			||||||
 | 
					        'tree-sitter-cli',
 | 
				
			||||||
 | 
					        'trivy',
 | 
				
			||||||
 | 
					        'yaml-language-server',
 | 
				
			||||||
 | 
					        'yamlfix',
 | 
				
			||||||
 | 
					        'yamlfmt',
 | 
				
			||||||
 | 
					        'yamllint',
 | 
				
			||||||
 | 
					        'yq',
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      require('mason-tool-installer').setup { ensure_installed = ensure_installed }
 | 
					      require('mason-tool-installer').setup { ensure_installed = ensure_installed }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1047,20 +1155,46 @@ cmp.setup {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  { -- Autoformat
 | 
					  { -- Autoformat
 | 
				
			||||||
    'stevearc/conform.nvim',
 | 
					    'stevearc/conform.nvim',
 | 
				
			||||||
 | 
					    lazy = false,
 | 
				
			||||||
 | 
					    keys = {
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        '<leader>f',
 | 
				
			||||||
 | 
					        function()
 | 
				
			||||||
 | 
					          require('conform').format { async = true, lsp_fallback = true }
 | 
				
			||||||
 | 
					        end,
 | 
				
			||||||
 | 
					        mode = '',
 | 
				
			||||||
 | 
					        desc = '[F]ormat buffer',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    opts = {
 | 
					    opts = {
 | 
				
			||||||
      notify_on_error = false,
 | 
					      notify_on_error = false,
 | 
				
			||||||
      format_on_save = {
 | 
					      format_on_save = function(bufnr)
 | 
				
			||||||
        timeout_ms = 500,
 | 
					        -- Disable "format_on_save lsp_fallback" for languages that don't
 | 
				
			||||||
        lsp_fallback = true,
 | 
					        -- have a well standardized coding style. You can add additional
 | 
				
			||||||
      },
 | 
					        -- languages here or re-enable it for the disabled ones.
 | 
				
			||||||
 | 
					        local disable_filetypes = { c = true, cpp = true }
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					          timeout_ms = 500,
 | 
				
			||||||
 | 
					          lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      end,
 | 
				
			||||||
      formatters_by_ft = {
 | 
					      formatters_by_ft = {
 | 
				
			||||||
 | 
					        go = { 'goimports', 'gofmt' },
 | 
				
			||||||
 | 
					        javascript = { { 'prettierd', 'prettier' } },
 | 
				
			||||||
 | 
					        json = { 'jsonlint' },
 | 
				
			||||||
        lua = { 'stylua' },
 | 
					        lua = { 'stylua' },
 | 
				
			||||||
        -- Conform can also run multiple formatters sequentially
 | 
					        markdown = { 'inject' },
 | 
				
			||||||
        -- python = { "isort", "black" },
 | 
					        python = function(bufnr)
 | 
				
			||||||
        --
 | 
					          if require('conform').get_formatter_info('ruff_format', bufnr).available then
 | 
				
			||||||
        -- You can use a sub-list to tell conform to run *until* a formatter
 | 
					            return { 'ruff_format' }
 | 
				
			||||||
        -- is found.
 | 
					          else
 | 
				
			||||||
        -- javascript = { { "prettierd", "prettier" } },
 | 
					            return { 'isort', 'black' }
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					        end,
 | 
				
			||||||
 | 
					        yaml = { 'yamllint' },
 | 
				
			||||||
 | 
					        -- Use the "_" filetype to run formatters on filetypes that don't
 | 
				
			||||||
 | 
					        -- have other formatters configured.
 | 
				
			||||||
 | 
					        ['_'] = { 'trim_whitespace' },
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
| 
						 | 
					@ -1081,6 +1215,17 @@ cmp.setup {
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
          return 'make install_jsregexp'
 | 
					          return 'make install_jsregexp'
 | 
				
			||||||
        end)(),
 | 
					        end)(),
 | 
				
			||||||
 | 
					        dependencies = {
 | 
				
			||||||
 | 
					          'friendly-snippets', --contains a variety of premade snippets.
 | 
				
			||||||
 | 
					          --    See the README about individual language/framework/plugin snippets:
 | 
				
			||||||
 | 
					          --    https://github.com/rafamadriz/friendly-snippets
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            'rafamadriz/friendly-snippets',
 | 
				
			||||||
 | 
					            config = function()
 | 
				
			||||||
 | 
					              require('luasnip.loaders.from_vscode').lazy_load()
 | 
				
			||||||
 | 
					            end,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      'saadparwaiz1/cmp_luasnip',
 | 
					      'saadparwaiz1/cmp_luasnip',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1088,6 +1233,8 @@ cmp.setup {
 | 
				
			||||||
      --  nvim-cmp does not ship with all sources by default. They are split
 | 
					      --  nvim-cmp does not ship with all sources by default. They are split
 | 
				
			||||||
      --  into multiple repos for maintenance purposes.
 | 
					      --  into multiple repos for maintenance purposes.
 | 
				
			||||||
      'hrsh7th/cmp-nvim-lsp',
 | 
					      'hrsh7th/cmp-nvim-lsp',
 | 
				
			||||||
 | 
					      'hrsh7th/cmp-buffer',
 | 
				
			||||||
 | 
					      'hrsh7th/cmp-cmdline',
 | 
				
			||||||
      'hrsh7th/cmp-path',
 | 
					      'hrsh7th/cmp-path',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      -- If you want to add a bunch of pre-configured snippets,
 | 
					      -- If you want to add a bunch of pre-configured snippets,
 | 
				
			||||||
| 
						 | 
					@ -1120,11 +1267,21 @@ cmp.setup {
 | 
				
			||||||
          -- Select the [p]revious item
 | 
					          -- Select the [p]revious item
 | 
				
			||||||
          ['<C-p>'] = cmp.mapping.select_prev_item(),
 | 
					          ['<C-p>'] = cmp.mapping.select_prev_item(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- Scroll the documentation window [b]ack / [f]orward
 | 
				
			||||||
 | 
					          ['<C-b>'] = cmp.mapping.scroll_docs(-4),
 | 
				
			||||||
 | 
					          ['<C-f>'] = cmp.mapping.scroll_docs(4),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          -- Accept ([y]es) the completion.
 | 
					          -- Accept ([y]es) the completion.
 | 
				
			||||||
          --  This will auto-import if your LSP supports it.
 | 
					          --  This will auto-import if your LSP supports it.
 | 
				
			||||||
          --  This will expand snippets if the LSP sent a snippet.
 | 
					          --  This will expand snippets if the LSP sent a snippet.
 | 
				
			||||||
          ['<C-y>'] = cmp.mapping.confirm { select = true },
 | 
					          ['<C-y>'] = cmp.mapping.confirm { select = true },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          -- If you prefer more traditional completion keymaps,
 | 
				
			||||||
 | 
					          -- you can uncomment the following lines
 | 
				
			||||||
 | 
					          --['<CR>'] = cmp.mapping.confirm { select = true },
 | 
				
			||||||
 | 
					          --['<Tab>'] = cmp.mapping.select_next_item(),
 | 
				
			||||||
 | 
					          --['<S-Tab>'] = cmp.mapping.select_prev_item(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          -- Manually trigger a completion from nvim-cmp.
 | 
					          -- Manually trigger a completion from nvim-cmp.
 | 
				
			||||||
          --  Generally you don't need this, because nvim-cmp will display
 | 
					          --  Generally you don't need this, because nvim-cmp will display
 | 
				
			||||||
          --  completions whenever it has completion options available.
 | 
					          --  completions whenever it has completion options available.
 | 
				
			||||||
| 
						 | 
					@ -1148,9 +1305,13 @@ cmp.setup {
 | 
				
			||||||
              luasnip.jump(-1)
 | 
					              luasnip.jump(-1)
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
          end, { 'i', 's' }),
 | 
					          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 = {
 | 
					        sources = {
 | 
				
			||||||
          { name = 'nvim_lsp' },
 | 
					          { name = 'nvim_lsp' },
 | 
				
			||||||
 | 
					          { name = 'bufer' },
 | 
				
			||||||
          { name = 'luasnip' },
 | 
					          { name = 'luasnip' },
 | 
				
			||||||
          { name = 'path' },
 | 
					          { name = 'path' },
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
| 
						 | 
					@ -1158,15 +1319,66 @@ cmp.setup {
 | 
				
			||||||
    end,
 | 
					    end,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					  -- PYTHON REPL
 | 
				
			||||||
 | 
					  -- A basic REPL that opens up as a horizontal split
 | 
				
			||||||
 | 
					  -- - use `<leader>i` to toggle the REPL
 | 
				
			||||||
 | 
					  -- - use `<leader>I` to restart the REPL
 | 
				
			||||||
 | 
					  -- - `+` serves as the "send to REPL" operator. That means we can use `++`
 | 
				
			||||||
 | 
					  -- to send the current line to the REPL, and `+j` to send the current and the
 | 
				
			||||||
 | 
					  -- following line to the REPL, like we would do with other vim operators.
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    'Vigemus/iron.nvim',
 | 
				
			||||||
 | 
					    keys = {
 | 
				
			||||||
 | 
					      { '<leader>i', vim.cmd.IronRepl, desc = ' Toggle REPL' },
 | 
				
			||||||
 | 
					      { '<leader>I', vim.cmd.IronRestart, desc = ' Restart REPL' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      -- these keymaps need no right-hand-side, since that is defined by the
 | 
				
			||||||
 | 
					      -- plugin config further below
 | 
				
			||||||
 | 
					      { '+', mode = { 'n', 'x' }, desc = ' Send-to-REPL Operator' },
 | 
				
			||||||
 | 
					      { '++', desc = ' Send Line to REPL' },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- since irons's setup call is `require("iron.core").setup`, instead of
 | 
				
			||||||
 | 
					    -- `require("iron").setup` like other plugins would do, we need to tell
 | 
				
			||||||
 | 
					    -- lazy.nvim which module to via the `main` key
 | 
				
			||||||
 | 
					    main = 'iron.core',
 | 
				
			||||||
 | 
					    opts = {
 | 
				
			||||||
 | 
					      keymaps = {
 | 
				
			||||||
 | 
					        send_line = '++',
 | 
				
			||||||
 | 
					        visual_send = '+',
 | 
				
			||||||
 | 
					        send_motion = '+',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      config = {
 | 
				
			||||||
 | 
					        -- this defined how the repl is opened. Here we set the REPL window
 | 
				
			||||||
 | 
					        -- to open in a horizontal split to a bottom, with a height of 10
 | 
				
			||||||
 | 
					        -- cells.
 | 
				
			||||||
 | 
					        repl_open_cmd = 'horizontal bot 10 split',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -- since the python repl does not play well with indents, it's
 | 
				
			||||||
 | 
					        -- preferable to use `ipython` or `bypython` here.
 | 
				
			||||||
 | 
					        -- (see: https://github.com/Vigemus/iron.nvim/issues/348)
 | 
				
			||||||
 | 
					        repl_definition = {
 | 
				
			||||||
 | 
					          python = {
 | 
				
			||||||
 | 
					            command = function()
 | 
				
			||||||
 | 
					              local ipythonAvailable = vim.fn.executable 'ipython' == 1
 | 
				
			||||||
 | 
					              local binary = ipythonAvailable and 'ipython' or 'python3'
 | 
				
			||||||
 | 
					              return { binary }
 | 
				
			||||||
 | 
					            end,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  { -- You can easily change to a different colorscheme.
 | 
					  { -- You can easily change to a different colorscheme.
 | 
				
			||||||
    -- Change the name of the colorscheme plugin below, and then
 | 
					    -- Change the name of the colorscheme plugin below, and then
 | 
				
			||||||
    -- change the command in the config to whatever the name of that colorscheme is
 | 
					    -- 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 `:Telescope colorscheme`
 | 
				
			||||||
    'folke/tokyonight.nvim',
 | 
					    'folke/tokyonight.nvim',
 | 
				
			||||||
    lazy = false, -- make sure we load this during startup if it is your main colorscheme
 | 
					    priority = 1000, -- Make sure to load this before all the other start plugins.
 | 
				
			||||||
    priority = 1000, -- make sure to load this before all the other start plugins
 | 
					    init = function()
 | 
				
			||||||
    config = function()
 | 
					 | 
				
			||||||
      -- Load the colorscheme here.
 | 
					      -- Load the colorscheme here.
 | 
				
			||||||
      -- Like many other themes, this one has different styles, and you could load
 | 
					      -- Like many other themes, this one has different styles, and you could load
 | 
				
			||||||
      -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
 | 
					      -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
 | 
				
			||||||
| 
						 | 
					@ -1221,9 +1433,51 @@ cmp.setup {
 | 
				
			||||||
  { -- Highlight, edit, and navigate code
 | 
					  { -- Highlight, edit, and navigate code
 | 
				
			||||||
    'nvim-treesitter/nvim-treesitter',
 | 
					    'nvim-treesitter/nvim-treesitter',
 | 
				
			||||||
    build = ':TSUpdate',
 | 
					    build = ':TSUpdate',
 | 
				
			||||||
    config = function()
 | 
					    opts = {
 | 
				
			||||||
 | 
					      ensure_installed = {
 | 
				
			||||||
 | 
					        'awk',
 | 
				
			||||||
 | 
					        'bash',
 | 
				
			||||||
 | 
					        'bicep',
 | 
				
			||||||
 | 
					        'c',
 | 
				
			||||||
 | 
					        'comment',
 | 
				
			||||||
 | 
					        'css',
 | 
				
			||||||
 | 
					        'dockerfile',
 | 
				
			||||||
 | 
					        'go',
 | 
				
			||||||
 | 
					        'hcl',
 | 
				
			||||||
 | 
					        'html',
 | 
				
			||||||
 | 
					        'javascript',
 | 
				
			||||||
 | 
					        'jq',
 | 
				
			||||||
 | 
					        'json',
 | 
				
			||||||
 | 
					        'jsonnet',
 | 
				
			||||||
 | 
					        'lua',
 | 
				
			||||||
 | 
					        'markdown',
 | 
				
			||||||
 | 
					        'markdown_inline',
 | 
				
			||||||
 | 
					        'python',
 | 
				
			||||||
 | 
					        'query',
 | 
				
			||||||
 | 
					        'rust',
 | 
				
			||||||
 | 
					        'terraform',
 | 
				
			||||||
 | 
					        'tsx',
 | 
				
			||||||
 | 
					        'typescript',
 | 
				
			||||||
 | 
					        'vim',
 | 
				
			||||||
 | 
					        'vimdoc',
 | 
				
			||||||
 | 
					        'yaml',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      -- Autoinstall languages that are not installed
 | 
				
			||||||
 | 
					      auto_install = true,
 | 
				
			||||||
 | 
					      highlight = {
 | 
				
			||||||
 | 
					        enable = true,
 | 
				
			||||||
 | 
					        -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
 | 
				
			||||||
 | 
					        --  If you are experiencing weird indenting issues, add the language to
 | 
				
			||||||
 | 
					        --  the list of additional_vim_regex_highlighting and disabled languages for indent.
 | 
				
			||||||
 | 
					        additional_vim_regex_highlighting = { 'ruby' },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      indent = { enable = true, disable = { 'ruby' } },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    config = function(_, opts)
 | 
				
			||||||
      -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
 | 
					      -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      -- Prefer git instead of curl in order to improve connectivity in some environments
 | 
				
			||||||
 | 
					      require('nvim-treesitter.install').prefer_git = true
 | 
				
			||||||
      ---@diagnostic disable-next-line: missing-fields
 | 
					      ---@diagnostic disable-next-line: missing-fields
 | 
				
			||||||
      require('nvim-treesitter.configs').setup {
 | 
					      require('nvim-treesitter.configs').setup {
 | 
				
			||||||
        ensure_installed = { 'bash', 'c', 'html', 'lua', 'markdown', 'vim', 'vimdoc' },
 | 
					        ensure_installed = { 'bash', 'c', 'html', 'lua', 'markdown', 'vim', 'vimdoc' },
 | 
				
			||||||
| 
						 | 
					@ -1251,8 +1505,12 @@ cmp.setup {
 | 
				
			||||||
  --  Here are some example plugins that I've included in the kickstart repository.
 | 
					  --  Here are some example plugins that I've included in the kickstart repository.
 | 
				
			||||||
  --  Uncomment any of the lines below to enable them (you will need to restart nvim).
 | 
					  --  Uncomment any of the lines below to enable them (you will need to restart nvim).
 | 
				
			||||||
  --
 | 
					  --
 | 
				
			||||||
  -- require 'kickstart.plugins.debug',
 | 
					  require 'kickstart.plugins.debug',
 | 
				
			||||||
  -- require 'kickstart.plugins.indent_line',
 | 
					  require 'kickstart.plugins.indent_line',
 | 
				
			||||||
 | 
					  require 'kickstart.plugins.lint',
 | 
				
			||||||
 | 
					  require 'kickstart.plugins.autopairs',
 | 
				
			||||||
 | 
					  require 'kickstart.plugins.neo-tree',
 | 
				
			||||||
 | 
					  require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
 | 
					  -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
 | 
				
			||||||
  --    This is the easiest way to modularize your config.
 | 
					  --    This is the easiest way to modularize your config.
 | 
				
			||||||
| 
						 | 
					@ -1262,8 +1520,8 @@ cmp.setup {
 | 
				
			||||||
  -- { import = 'custom.plugins' },
 | 
					  -- { import = 'custom.plugins' },
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
  ui = {
 | 
					  ui = {
 | 
				
			||||||
    -- If you have a Nerd Font, set icons to an empty table which will use the
 | 
					    -- If you are using a Nerd Font: set icons to an empty table which will use the
 | 
				
			||||||
    -- default lazy.nvim defined Nerd Font icons otherwise define a unicode icons table
 | 
					    -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
 | 
				
			||||||
    icons = vim.g.have_nerd_font and {} or {
 | 
					    icons = vim.g.have_nerd_font and {} or {
 | 
				
			||||||
      cmd = '⌘',
 | 
					      cmd = '⌘',
 | 
				
			||||||
      config = '🛠',
 | 
					      config = '🛠',
 | 
				
			||||||
| 
						 | 
					@ -1282,5 +1540,57 @@ cmp.setup {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create group to assign commands
 | 
				
			||||||
 | 
					-- "clear = true" must be set to prevent loading an
 | 
				
			||||||
 | 
					-- auto-command repeatedly every time a file is resourced
 | 
				
			||||||
 | 
					local autocmd_group = vim.api.nvim_create_augroup('Custom auto-commands', { clear = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- vim.api.nvim_create_autocmd({ 'BufWritePost' }, {
 | 
				
			||||||
 | 
					--   pattern = { '*.yaml', '*.yml' },
 | 
				
			||||||
 | 
					--   desc = 'Auto-format YAML files after saving',
 | 
				
			||||||
 | 
					--   callback = function()
 | 
				
			||||||
 | 
					--     local fileName = vim.api.nvim_buf_get_name(0)
 | 
				
			||||||
 | 
					--     vim.cmd(':!yamlfmt ' .. fileName)
 | 
				
			||||||
 | 
					--   end,
 | 
				
			||||||
 | 
					--   group = autocmd_group,
 | 
				
			||||||
 | 
					-- })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- BASIC PYTHON-RELATED OPTIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- The filetype-autocmd runs a function when opening a file with the filetype
 | 
				
			||||||
 | 
					-- "python". This method allows you to make filetype-specific configurations. In
 | 
				
			||||||
 | 
					-- there, you have to use `opt_local` instead of `opt` to limit the changes to
 | 
				
			||||||
 | 
					-- just that buffer. (As an alternative to using an autocmd, you can also put those
 | 
				
			||||||
 | 
					-- configurations into a file `/after/ftplugin/{filetype}.lua` in your
 | 
				
			||||||
 | 
					-- nvim-directory.)
 | 
				
			||||||
 | 
					vim.api.nvim_create_autocmd('FileType', {
 | 
				
			||||||
 | 
					  pattern = 'python', -- filetype for which to run the autocmd
 | 
				
			||||||
 | 
					  callback = function()
 | 
				
			||||||
 | 
					    -- use pep8 standards
 | 
				
			||||||
 | 
					    vim.opt_local.expandtab = true
 | 
				
			||||||
 | 
					    vim.opt_local.shiftwidth = 4
 | 
				
			||||||
 | 
					    vim.opt_local.tabstop = 4
 | 
				
			||||||
 | 
					    vim.opt_local.softtabstop = 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- folds based on indentation https://neovim.io/doc/user/fold.html#fold-indent
 | 
				
			||||||
 | 
					    -- if you are a heavy user of folds, consider using `nvim-ufo`
 | 
				
			||||||
 | 
					    -- vim.opt_local.foldmethod = 'indent'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- automatically capitalize boolean values. Useful if you come from a
 | 
				
			||||||
 | 
					    -- different language, and lowercase them out of habit.
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> true True'
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> false False'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- in the same way, we can fix habits regarding comments or None
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> -- #'
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> null None'
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> none None'
 | 
				
			||||||
 | 
					    vim.cmd.inoreabbrev '<buffer> nil None'
 | 
				
			||||||
 | 
					  end,
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- lspimport keymap
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<leader>a', require('lspimport').import, { noremap = true, desc = '[L]sp [I]mport' })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- The line beneath this is called `modeline`. See `:help modeline`
 | 
					-- The line beneath this is called `modeline`. See `:help modeline`
 | 
				
			||||||
-- vim: ts=2 sts=2 sw=2 et
 | 
					-- vim: ts=2 sts=2 sw=2 et
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue