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
|
-- Highlight when yanking (copying) text
|
||||||
-- Try it with `yap` in normal mode
|
-- Try it with `yap` in normal mode
|
||||||
-- See `:help vim.highlight.on_yank()`
|
-- See `:help vim.highlight.on_yank()`
|
||||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
-- vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
desc = 'Highlight when yanking (copying) text',
|
-- desc = 'Highlight when yanking (copying) text',
|
||||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
-- group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
||||||
callback = function()
|
-- callback = function()
|
||||||
vim.highlight.on_yank()
|
-- vim.highlight.on_yank()
|
||||||
end,
|
-- end,
|
||||||
})
|
-- })
|
||||||
|
|
||||||
-- [[ Install `lazy.nvim` plugin manager ]]
|
-- [[ Install `lazy.nvim` plugin manager ]]
|
||||||
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
|
-- 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,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -621,39 +621,39 @@ require('lazy').setup({
|
||||||
-- See `:help CursorHold` for information about when this is executed
|
-- See `:help CursorHold` for information about when this is executed
|
||||||
--
|
--
|
||||||
-- 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.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
|
-- 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 })
|
-- 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,
|
-- 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,
|
-- group = highlight_augroup,
|
||||||
callback = vim.lsp.buf.clear_references,
|
-- callback = vim.lsp.buf.clear_references,
|
||||||
})
|
-- })
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('LspDetach', {
|
-- vim.api.nvim_create_autocmd('LspDetach', {
|
||||||
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
|
-- group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
|
||||||
callback = function(event2)
|
-- callback = function(event2)
|
||||||
vim.lsp.buf.clear_references()
|
-- vim.lsp.buf.clear_references()
|
||||||
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
|
-- vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
|
||||||
end,
|
-- end,
|
||||||
})
|
-- })
|
||||||
end
|
-- end
|
||||||
|
|
||||||
-- The following code creates a keymap to toggle inlay hints in your
|
-- The following code creates a keymap to toggle inlay hints in your
|
||||||
-- code, if the language server you are using supports them
|
-- code, if the language server you are using supports them
|
||||||
--
|
--
|
||||||
-- This may be unwanted, since they displace some of your code
|
-- This may be unwanted, since they displace some of your code
|
||||||
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
-- if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
||||||
map('<leader>th', function()
|
-- map('<leader>th', function()
|
||||||
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
|
-- vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
|
||||||
end, '[T]oggle Inlay [H]ints')
|
-- end, '[T]oggle Inlay [H]ints')
|
||||||
end
|
-- end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -687,7 +687,13 @@ require('lazy').setup({
|
||||||
-- clangd = {},
|
-- clangd = {},
|
||||||
-- gopls = {},
|
-- gopls = {},
|
||||||
-- pyright = {},
|
-- pyright = {},
|
||||||
rust_analyzer = {},
|
rust_analyzer = {
|
||||||
|
settings = {
|
||||||
|
completion = {
|
||||||
|
autoimport = true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
-- ... 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:
|
||||||
|
@ -747,164 +753,164 @@ require('lazy').setup({
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ -- Autoformat
|
-- { -- Autoformat
|
||||||
'stevearc/conform.nvim',
|
-- 'stevearc/conform.nvim',
|
||||||
event = { 'BufWritePre' },
|
-- event = { 'BufWritePre' },
|
||||||
cmd = { 'ConformInfo' },
|
-- cmd = { 'ConformInfo' },
|
||||||
keys = {
|
-- keys = {
|
||||||
{
|
-- {
|
||||||
'<leader>f',
|
-- '<leader>f',
|
||||||
function()
|
-- function()
|
||||||
require('conform').format { async = true, lsp_format = 'fallback' }
|
-- require('conform').format { async = true, lsp_format = 'fallback' }
|
||||||
end,
|
-- end,
|
||||||
mode = '',
|
-- mode = '',
|
||||||
desc = '[F]ormat buffer',
|
-- desc = '[F]ormat buffer',
|
||||||
},
|
-- },
|
||||||
},
|
-- },
|
||||||
opts = {
|
-- opts = {
|
||||||
notify_on_error = false,
|
-- notify_on_error = false,
|
||||||
format_on_save = function(bufnr)
|
-- format_on_save = function(bufnr)
|
||||||
-- Disable "format_on_save lsp_fallback" for languages that don't
|
-- -- Disable "format_on_save lsp_fallback" for languages that don't
|
||||||
-- have a well standardized coding style. You can add additional
|
-- -- have a well standardized coding style. You can add additional
|
||||||
-- languages here or re-enable it for the disabled ones.
|
-- -- languages here or re-enable it for the disabled ones.
|
||||||
local disable_filetypes = { c = true, cpp = true }
|
-- local disable_filetypes = { c = true, cpp = true }
|
||||||
local lsp_format_opt
|
-- local lsp_format_opt
|
||||||
if disable_filetypes[vim.bo[bufnr].filetype] then
|
-- if disable_filetypes[vim.bo[bufnr].filetype] then
|
||||||
lsp_format_opt = 'never'
|
-- lsp_format_opt = 'never'
|
||||||
else
|
-- else
|
||||||
lsp_format_opt = 'fallback'
|
-- lsp_format_opt = 'fallback'
|
||||||
end
|
-- end
|
||||||
return {
|
-- return {
|
||||||
timeout_ms = 500,
|
-- timeout_ms = 500,
|
||||||
lsp_format = lsp_format_opt,
|
-- lsp_format = lsp_format_opt,
|
||||||
}
|
-- }
|
||||||
end,
|
-- end,
|
||||||
formatters_by_ft = {
|
-- formatters_by_ft = {
|
||||||
lua = { 'stylua' },
|
-- lua = { 'stylua' },
|
||||||
-- Conform can also run multiple formatters sequentially
|
-- -- Conform can also run multiple formatters sequentially
|
||||||
-- python = { "isort", "black" },
|
-- -- python = { "isort", "black" },
|
||||||
--
|
-- --
|
||||||
-- You can use 'stop_after_first' to run the first available formatter from the list
|
-- -- You can use 'stop_after_first' to run the first available formatter from the list
|
||||||
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
-- -- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
},
|
-- },
|
||||||
},
|
-- },
|
||||||
},
|
-- },
|
||||||
|
|
||||||
{ -- Autocompletion
|
{ -- Autocompletion
|
||||||
'hrsh7th/nvim-cmp',
|
'hrsh7th/nvim-cmp',
|
||||||
event = 'InsertEnter',
|
event = 'InsertEnter',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
-- Snippet Engine & its associated nvim-cmp source
|
-- Snippet Engine & its associated nvim-cmp source
|
||||||
{
|
{
|
||||||
'L3MON4D3/LuaSnip',
|
'L3MON4D3/LuaSnip',
|
||||||
build = (function()
|
build = (function()
|
||||||
-- Build Step is needed for regex support in snippets.
|
-- Build Step is needed for regex support in snippets.
|
||||||
-- This step is not supported in many windows environments.
|
-- This step is not supported in many windows environments.
|
||||||
-- Remove the below condition to re-enable on windows.
|
-- Remove the below condition to re-enable on windows.
|
||||||
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
return 'make install_jsregexp'
|
return 'make install_jsregexp'
|
||||||
end)(),
|
end)(),
|
||||||
dependencies = {
|
dependencies = {
|
||||||
-- `friendly-snippets` contains a variety of premade snippets.
|
-- `friendly-snippets` contains a variety of premade snippets.
|
||||||
-- See the README about individual language/framework/plugin snippets:
|
-- See the README about individual language/framework/plugin snippets:
|
||||||
-- https://github.com/rafamadriz/friendly-snippets
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
-- {
|
-- {
|
||||||
-- 'rafamadriz/friendly-snippets',
|
-- 'rafamadriz/friendly-snippets',
|
||||||
-- config = function()
|
-- config = function()
|
||||||
-- require('luasnip.loaders.from_vscode').lazy_load()
|
-- require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
-- end,
|
-- end,
|
||||||
-- },
|
-- },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'saadparwaiz1/cmp_luasnip',
|
'saadparwaiz1/cmp_luasnip',
|
||||||
|
|
||||||
-- Adds other completion capabilities.
|
-- Adds other completion capabilities.
|
||||||
-- 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-path',
|
'hrsh7th/cmp-path',
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
-- See `:help cmp`
|
-- See `:help cmp`
|
||||||
local cmp = require 'cmp'
|
local cmp = require 'cmp'
|
||||||
local luasnip = require 'luasnip'
|
local luasnip = require 'luasnip'
|
||||||
luasnip.config.setup {}
|
luasnip.config.setup {}
|
||||||
|
|
||||||
cmp.setup {
|
cmp.setup {
|
||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
completion = { completeopt = 'menu,menuone,noinsert' },
|
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||||
|
|
||||||
-- For an understanding of why these mappings were
|
-- For an understanding of why these mappings were
|
||||||
-- chosen, you will need to read `:help ins-completion`
|
-- chosen, you will need to read `:help ins-completion`
|
||||||
--
|
--
|
||||||
-- No, but seriously. Please read `:help ins-completion`, it is really good!
|
-- No, but seriously. Please read `:help ins-completion`, it is really good!
|
||||||
mapping = cmp.mapping.preset.insert {
|
mapping = cmp.mapping.preset.insert {
|
||||||
-- Select the [n]ext item
|
-- Select the [n]ext item
|
||||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||||
-- 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
|
-- Scroll the documentation window [b]ack / [f]orward
|
||||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||||
['<C-f>'] = 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,
|
-- If you prefer more traditional completion keymaps,
|
||||||
-- you can uncomment the following lines
|
-- you can uncomment the following lines
|
||||||
--['<CR>'] = cmp.mapping.confirm { select = true },
|
--['<CR>'] = cmp.mapping.confirm { select = true },
|
||||||
--['<Tab>'] = cmp.mapping.select_next_item(),
|
--['<Tab>'] = cmp.mapping.select_next_item(),
|
||||||
--['<S-Tab>'] = cmp.mapping.select_prev_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.
|
||||||
['<C-Space>'] = cmp.mapping.complete {},
|
['<C-Space>'] = cmp.mapping.complete {},
|
||||||
|
|
||||||
-- Think of <c-l> as moving to the right of your snippet expansion.
|
-- Think of <c-l> as moving to the right of your snippet expansion.
|
||||||
-- So if you have a snippet that's like:
|
-- So if you have a snippet that's like:
|
||||||
-- function $name($args)
|
-- function $name($args)
|
||||||
-- $body
|
-- $body
|
||||||
-- end
|
-- end
|
||||||
--
|
--
|
||||||
-- <c-l> will move you to the right of each of the expansion locations.
|
-- <c-l> will move you to the right of each of the expansion locations.
|
||||||
-- <c-h> is similar, except moving you backwards.
|
-- <c-h> is similar, except moving you backwards.
|
||||||
['<C-l>'] = cmp.mapping(function()
|
['<C-l>'] = cmp.mapping(function()
|
||||||
if luasnip.expand_or_locally_jumpable() then
|
if luasnip.expand_or_locally_jumpable() then
|
||||||
luasnip.expand_or_jump()
|
luasnip.expand_or_jump()
|
||||||
end
|
end
|
||||||
end, { 'i', 's' }),
|
end, { 'i', 's' }),
|
||||||
['<C-h>'] = cmp.mapping(function()
|
['<C-h>'] = cmp.mapping(function()
|
||||||
if luasnip.locally_jumpable(-1) then
|
if luasnip.locally_jumpable(-1) then
|
||||||
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:
|
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
||||||
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
||||||
},
|
},
|
||||||
sources = {
|
sources = {
|
||||||
{
|
{
|
||||||
name = 'lazydev',
|
name = 'lazydev',
|
||||||
-- set group index to 0 to skip loading LuaLS completions as lazydev recommends it
|
-- set group index to 0 to skip loading LuaLS completions as lazydev recommends it
|
||||||
group_index = 0,
|
group_index = 0,
|
||||||
},
|
},
|
||||||
{ name = 'nvim_lsp' },
|
{ name = 'nvim_lsp' },
|
||||||
{ name = 'luasnip' },
|
{ name = 'luasnip' },
|
||||||
{ name = 'path' },
|
{ name = 'path' },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
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
|
||||||
|
|
Loading…
Reference in New Issue