diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua index f2c8492..77baa3e 100644 --- a/lua/config/lsp.lua +++ b/lua/config/lsp.lua @@ -278,6 +278,32 @@ if utils.executable("lua-language-server") then } end +-- settings for rust-analyzer is copied from https://rust-analyzer.github.io/manual.html#nvim-lsp +if utils.executable("rust-analyzer") then + lspconfig.rust_analyzer.setup { + on_attach = custom_attach, + settings = { + ['rust-analyzer'] = { + imports = { + granularity = { + group = "module", + }, + prefix = "self", + }, + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { + enable = true + }, + }, + }, + capabilities = capabilities, + } +end + -- Change diagnostic signs. fn.sign_define("DiagnosticSignError", { text = "🆇", texthl = "DiagnosticSignError" }) fn.sign_define("DiagnosticSignWarn", { text = "⚠️", texthl = "DiagnosticSignWarn" }) diff --git a/lua/custom-autocmd.lua b/lua/custom-autocmd.lua index b3ec858..c375113 100644 --- a/lua/custom-autocmd.lua +++ b/lua/custom-autocmd.lua @@ -54,6 +54,13 @@ api.nvim_create_autocmd({ "BufWritePre" }, { end, }) +api.nvim_create_autocmd({ "BufWritePre" }, { + pattern = {"*.c", "*.cc", "*.cpp", "*.h", "*.rs", "*.py"}, + callback = function() + vim.lsp.buf.format { asnyc = false } + end, +}) + -- Automatically reload the file if it is changed outside of Nvim, see https://unix.stackexchange.com/a/383044/221410. -- It seems that `checktime` does not work in command line. We need to check if we are in command -- line before executing this command, see also https://vi.stackexchange.com/a/20397/15292 .