updated
This commit is contained in:
		
							parent
							
								
									d14a02d49d
								
							
						
					
					
						commit
						6697b6cd13
					
				
							
								
								
									
										277
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										277
									
								
								init.lua
								
								
								
								
							|  | @ -277,48 +277,51 @@ require('lazy').setup({ | |||
|   -- after the plugin has been loaded: | ||||
|   --  config = function() ... end | ||||
| 
 | ||||
|   { -- Useful plugin to show you pending keybinds. | ||||
|     'folke/which-key.nvim', | ||||
|     event = 'VimEnter', -- Sets the loading event to 'VimEnter' | ||||
|     opts = { | ||||
|       icons = { | ||||
|         -- set icon mappings to true if you have a Nerd Font | ||||
|         mappings = vim.g.have_nerd_font, | ||||
|         -- If you are using a Nerd Font: set icons.keys to an empty table which will use the | ||||
|         -- default which-key.nvim defined Nerd Font icons, otherwise define a string table | ||||
|         keys = vim.g.have_nerd_font and {} or { | ||||
|           Up = '<Up> ', | ||||
|           Down = '<Down> ', | ||||
|           Left = '<Left> ', | ||||
|           Right = '<Right> ', | ||||
|           C = '<C-…> ', | ||||
|           M = '<M-…> ', | ||||
|           D = '<D-…> ', | ||||
|           S = '<S-…> ', | ||||
|           CR = '<CR> ', | ||||
|           Esc = '<Esc> ', | ||||
|           ScrollWheelDown = '<ScrollWheelDown> ', | ||||
|           ScrollWheelUp = '<ScrollWheelUp> ', | ||||
|           NL = '<NL> ', | ||||
|           BS = '<BS> ', | ||||
|           Space = '<Space> ', | ||||
|           Tab = '<Tab> ', | ||||
|           F1 = '<F1>', | ||||
|           F2 = '<F2>', | ||||
|           F3 = '<F3>', | ||||
|           F4 = '<F4>', | ||||
|           F5 = '<F5>', | ||||
|           F6 = '<F6>', | ||||
|           F7 = '<F7>', | ||||
|           F8 = '<F8>', | ||||
|           F9 = '<F9>', | ||||
|           F10 = '<F10>', | ||||
|           F11 = '<F11>', | ||||
|           F12 = '<F12>', | ||||
|         }, | ||||
|       }, | ||||
|   | ||||
| 
 | ||||
|       -- Document existing key chains | ||||
| { | ||||
|   -- Useful plugin to show you pending keybinds. | ||||
|   'folke/which-key.nvim', | ||||
|   event = 'VimEnter', -- Sets the loading event to 'VimEnter' | ||||
|   opts = { | ||||
|     icons = { | ||||
|       -- set icon mappings to true if you have a Nerd Font | ||||
|       mappings = vim.g.have_nerd_font, | ||||
|       -- If you are using a Nerd Font: set icons.keys to an empty table which will use the | ||||
|       -- default which-key.nvim defined Nerd Font icons, otherwise define a string table | ||||
|       keys = vim.g.have_nerd_font and {} or { | ||||
|         Up = '<Up> ', | ||||
|         Down = '<Down> ', | ||||
|         Left = '<Left> ', | ||||
|         Right = '<Right> ', | ||||
|         C = '<C-…> ', | ||||
|         M = '<M-…> ', | ||||
|         D = '<D-…> ', | ||||
|         S = '<S-…> ', | ||||
|         CR = '<CR> ', | ||||
|         Esc = '<Esc> ', | ||||
|         ScrollWheelDown = '<ScrollWheelDown> ', | ||||
|         ScrollWheelUp = '<ScrollWheelUp> ', | ||||
|         NL = '<NL> ', | ||||
|         BS = '<BS> ', | ||||
|         Space = '<Space> ', | ||||
|         Tab = '<Tab> ', | ||||
|         F1 = '<F1>', | ||||
|         F2 = '<F2>', | ||||
|         F3 = '<F3>', | ||||
|         F4 = '<F4>', | ||||
|         F5 = '<F5>', | ||||
|         F6 = '<F6>', | ||||
|         F7 = '<F7>', | ||||
|         F8 = '<F8>', | ||||
|         F9 = '<F9>', | ||||
|         F10 = '<F10>', | ||||
|         F11 = '<F11>', | ||||
|         F12 = '<F12>', | ||||
|       }, | ||||
|     }, | ||||
|     -- Document existing key chains | ||||
|     register = function() | ||||
|       require('which-key').register { | ||||
|         ['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' }, | ||||
|         ['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, | ||||
|  | @ -328,6 +331,7 @@ require('lazy').setup({ | |||
|       } | ||||
|     end, | ||||
|   }, | ||||
| }, | ||||
| 
 | ||||
|   -- NOTE: Plugins can specify dependencies. | ||||
|   -- | ||||
|  | @ -457,6 +461,7 @@ require('lazy').setup({ | |||
| 
 | ||||
|       -- Allows extra capabilities provided by nvim-cmp | ||||
|       'hrsh7th/cmp-nvim-lsp', | ||||
|       'hrsh7th/nvim-cmp', | ||||
|     }, | ||||
|     config = function() | ||||
|       -- Brief aside: **What is LSP?** | ||||
|  | @ -609,7 +614,6 @@ require('lazy').setup({ | |||
|       -- | ||||
|       -- | ||||
|       local servers = { | ||||
|         -- clangd = {}, | ||||
|         -- gopls = {}, | ||||
|         -- pyright = {}, | ||||
|         -- rust_analyzer = {}, | ||||
|  | @ -659,8 +663,6 @@ require('lazy').setup({ | |||
|         -- | ||||
|       } | ||||
| 
 | ||||
|       require("neodev").setup({}) | ||||
| 
 | ||||
|       -- Ensure the servers and tools above are installed | ||||
|       --  To check the current status of installed tools and/or manually install | ||||
|       --  other tools, you can run | ||||
|  | @ -758,163 +760,54 @@ require('lazy').setup({ | |||
|       }, | ||||
|     }, | ||||
|   }, | ||||
|   { -- Autoformat | ||||
|     'stevearc/conform.nvim', | ||||
|     event = { 'BufWritePre' }, | ||||
|     cmd = { 'ConformInfo' }, | ||||
|     keys = { | ||||
|       { | ||||
|         '<leader>f', | ||||
|         function() | ||||
|           require('conform').format { async = true, lsp_format = 'fallback' } | ||||
|         end, | ||||
|         mode = '', | ||||
|         desc = '[F]ormat buffer', | ||||
|       }, | ||||
|     }, | ||||
|     opts = { | ||||
|       notify_on_error = false, | ||||
|       format_on_save = function(bufnr) | ||||
|         -- Disable "format_on_save lsp_fallback" for languages that don't | ||||
|         -- 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 } | ||||
| 
 | ||||
|         if vim.g.disable_auto_format or disable_filetypes[vim.bo[bufnr].filetype] then | ||||
|           return false | ||||
|         end | ||||
| 
 | ||||
|         return { | ||||
|           timeout_ms = 500, | ||||
|           lsp_fallback = true, | ||||
|         local lsp_format_opt | ||||
|         if disable_filetypes[vim.bo[bufnr].filetype] then | ||||
|           lsp_format_opt = 'never' | ||||
|         else | ||||
|           lsp_format_opt = 'fallback' | ||||
|         end | ||||
|         return { | ||||
|           timeout_ms = 500, | ||||
|           lsp_format = lsp_format_opt, | ||||
|         } | ||||
| { | ||||
|   -- Autoformat | ||||
|   'stevearc/conform.nvim', | ||||
|   event = { 'BufWritePre' }, | ||||
|   cmd = { 'ConformInfo' }, | ||||
|   keys = { | ||||
|     { | ||||
|       '<leader>f', | ||||
|       function() | ||||
|         require('conform').format { async = true, lsp_format = 'fallback' } | ||||
|       end, | ||||
|       formatters_by_ft = { | ||||
|         lua = { 'stylua' }, | ||||
|         -- Conform can also run multiple formatters sequentially | ||||
|         -- pyt,on = { "isort", "black" }, | ||||
|         -- | ||||
|         -- You can use 'stop_after_first' to run the first available formatter from the list | ||||
|         -- javascript = { "prettierd", "prettier", stop_after_first = true }, | ||||
|       }, | ||||
|       mode = '', | ||||
|       desc = '[F]ormat buffer', | ||||
|     }, | ||||
|   }, | ||||
|   opts = { | ||||
|     notify_on_error = false, | ||||
|     format_on_save = function(bufnr) | ||||
|       -- Disable "format_on_save lsp_fallback" for languages that don't | ||||
|       -- have a well-standardized coding style. Add more languages here if needed. | ||||
|       local disable_filetypes = { c = true, cpp = true } | ||||
| 
 | ||||
|   { -- Autocompletion | ||||
|     'hrsh7th/nvim-cmp', | ||||
|     event = 'InsertEnter', | ||||
|     dependencies = { | ||||
|       -- Snippet Engine & its associated nvim-cmp source | ||||
|       { | ||||
|         'L3MON4D3/LuaSnip', | ||||
|         build = (function() | ||||
|           -- Build Step is needed for regex support in snippets. | ||||
|           -- This step is not supported in many windows environments. | ||||
|           -- Remove the below condition to re-enable on windows. | ||||
|           return 'make install_jsregexp' | ||||
|         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', | ||||
|       if vim.g.disable_auto_format or disable_filetypes[vim.bo[bufnr].filetype] then | ||||
|         return false | ||||
|       end | ||||
| 
 | ||||
|       -- 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', | ||||
|     }, | ||||
|     config = function() | ||||
|       -- See `:help cmp` | ||||
|       local cmp = require 'cmp' | ||||
|       local luasnip = require 'luasnip' | ||||
|       luasnip.config.setup {} | ||||
|       -- Determine lsp_format option based on filetype | ||||
|       local lsp_format_opt | ||||
|       if disable_filetypes[vim.bo[bufnr].filetype] then | ||||
|         lsp_format_opt = 'never' | ||||
|       else | ||||
|         lsp_format_opt = 'fallback' | ||||
|       end | ||||
| 
 | ||||
|       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` | ||||
|         -- | ||||
|         -- No, but seriously. Please read `:help ins-completion`, it is really good! | ||||
|         mapping = cmp.mapping.preset.insert { | ||||
|           -- Select the [n]ext item | ||||
|           ['<C-n>'] = cmp.mapping.select_next_item(), | ||||
|           -- Select the [p]revious 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. | ||||
|           --  This will auto-import if your LSP supports it. | ||||
|           --  This will expand snippets if the LSP sent a snippet. | ||||
|           ['<CR>'] = cmp.mapping.confirm { select = true }, | ||||
| 
 | ||||
|           -- 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 = { | ||||
|           { | ||||
|             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' }, | ||||
|         }, | ||||
|       return { | ||||
|         timeout_ms = 500, | ||||
|         lsp_format = lsp_format_opt, | ||||
|       } | ||||
|     end, | ||||
|     formatters_by_ft = { | ||||
|       lua = { 'stylua' }, | ||||
|       -- Conform can also run multiple formatters sequentially | ||||
|       -- python = { "isort", "black" }, | ||||
|       -- You can use 'stop_after_first' to run the first available formatter from the list | ||||
|       -- javascript = { "prettierd", "prettier", stop_after_first = true }, | ||||
|     }, | ||||
|   }, | ||||
| }, | ||||
| 
 | ||||
|   { -- You can easily change to a different colorscheme. | ||||
|     -- Change the name of the colorscheme plugin below, and then | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue