Rust (#2)
* feat: install rust * feat: install rust * fix: update * fix: conflicts
This commit is contained in:
		
							parent
							
								
									b00a8e245d
								
							
						
					
					
						commit
						2b6abaf295
					
				
							
								
								
									
										372
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										372
									
								
								init.lua
								
								
								
								
							|  | @ -196,13 +196,13 @@ vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper win | |||
| -- Highlight when yanking (copying) text | ||||
| --  Try it with `yap` in normal mode | ||||
| --  See `:help vim.highlight.on_yank()` | ||||
| vim.api.nvim_create_autocmd('TextYankPost', { | ||||
|   desc = 'Highlight when yanking (copying) text', | ||||
|   group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), | ||||
|   callback = function() | ||||
|     vim.highlight.on_yank() | ||||
|   end, | ||||
| }) | ||||
| -- vim.api.nvim_create_autocmd('TextYankPost', { | ||||
| --   desc = 'Highlight when yanking (copying) text', | ||||
| --   group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), | ||||
| --   callback = function() | ||||
| --     vim.highlight.on_yank() | ||||
| --   end, | ||||
| -- }) | ||||
| 
 | ||||
| -- [[ Install `lazy.nvim` plugin manager ]] | ||||
| --    See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info | ||||
|  | @ -502,7 +502,7 @@ require('lazy').setup({ | |||
|         }, | ||||
|       } | ||||
| 
 | ||||
|       vim.cmd [[nnoremap \ :Neotree reveal<cr>]] | ||||
|       -- vim.cmd [[nnoremap \ :Neotree reveal<cr>]] | ||||
|     end, | ||||
|   }, | ||||
| 
 | ||||
|  | @ -621,39 +621,39 @@ require('lazy').setup({ | |||
|           --    See `:help CursorHold` for information about when this is executed | ||||
|           -- | ||||
|           -- 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) | ||||
|           if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then | ||||
|             local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) | ||||
|             vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { | ||||
|               buffer = event.buf, | ||||
|               group = highlight_augroup, | ||||
|               callback = vim.lsp.buf.document_highlight, | ||||
|             }) | ||||
|           -- local client = vim.lsp.get_client_by_id(event.data.client_id) | ||||
|           -- if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then | ||||
|           --   local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) | ||||
|           --   vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { | ||||
|           --     buffer = event.buf, | ||||
|           --     group = highlight_augroup, | ||||
|           --     callback = vim.lsp.buf.document_highlight, | ||||
|           --   }) | ||||
| 
 | ||||
|             vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { | ||||
|               buffer = event.buf, | ||||
|               group = highlight_augroup, | ||||
|               callback = vim.lsp.buf.clear_references, | ||||
|             }) | ||||
|           --   vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { | ||||
|           --     buffer = event.buf, | ||||
|           --     group = highlight_augroup, | ||||
|           --     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 | ||||
|           --   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 code creates a keymap to toggle 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.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then | ||||
|             map('<leader>th', function() | ||||
|               vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) | ||||
|             end, '[T]oggle Inlay [H]ints') | ||||
|           end | ||||
|           -- if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then | ||||
|           --   map('<leader>th', function() | ||||
|           --     vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) | ||||
|           --   end, '[T]oggle Inlay [H]ints') | ||||
|           -- end | ||||
|         end, | ||||
|       }) | ||||
| 
 | ||||
|  | @ -687,7 +687,13 @@ require('lazy').setup({ | |||
|         -- clangd = {}, | ||||
|         -- gopls = {}, | ||||
|         -- pyright = {}, | ||||
|         rust_analyzer = {}, | ||||
|         rust_analyzer = { | ||||
|           settings = { | ||||
|             completion = { | ||||
|               autoimport = true, | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         -- ... 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: | ||||
|  | @ -747,164 +753,164 @@ require('lazy').setup({ | |||
|     end, | ||||
|   }, | ||||
| 
 | ||||
|   { -- 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 } | ||||
|         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, | ||||
|         } | ||||
|       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 }, | ||||
|       }, | ||||
|     }, | ||||
|   }, | ||||
|   -- { -- 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 } | ||||
|   --       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, | ||||
|   --       } | ||||
|   --     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 }, | ||||
|   --     }, | ||||
|   --   }, | ||||
|   -- }, | ||||
| 
 | ||||
|   { -- 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. | ||||
|           if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then | ||||
|             return | ||||
|           end | ||||
|           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', | ||||
|    { -- 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. | ||||
|            if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then | ||||
|              return | ||||
|            end | ||||
|            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', | ||||
| 
 | ||||
|       -- 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 {} | ||||
|        -- 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 {} | ||||
| 
 | ||||
|       cmp.setup { | ||||
|         snippet = { | ||||
|           expand = function(args) | ||||
|             luasnip.lsp_expand(args.body) | ||||
|           end, | ||||
|         }, | ||||
|         completion = { completeopt = 'menu,menuone,noinsert' }, | ||||
|        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(), | ||||
|          -- 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), | ||||
|            -- 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. | ||||
|           ['<C-y>'] = cmp.mapping.confirm { select = true }, | ||||
|            -- 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 }, | ||||
| 
 | ||||
|           -- 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(), | ||||
|            -- 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. | ||||
|           --  Generally you don't need this, because nvim-cmp will display | ||||
|           --  completions whenever it has completion options available. | ||||
|           ['<C-Space>'] = cmp.mapping.complete {}, | ||||
|            -- 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' }), | ||||
|            -- 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' }, | ||||
|         }, | ||||
|       } | ||||
|     end, | ||||
|   }, | ||||
|            -- 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' }, | ||||
|          }, | ||||
|        } | ||||
|      end, | ||||
|    }, | ||||
| 
 | ||||
|   { -- You can easily change to a different colorscheme. | ||||
|     -- Change the name of the colorscheme plugin below, and then | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue