* feat: install rust

* feat: install rust

* fix: update

* fix: conflicts
This commit is contained in:
Aoi Kurokawa 2025-02-11 19:55:55 +09:00 committed by GitHub
parent b00a8e245d
commit 2b6abaf295
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 189 additions and 183 deletions

372
init.lua
View File

@ -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