From cfdb14cf768f2971f6efe2e333c620571f30fad1 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Wed, 18 Jan 2023 13:39:42 +0100 Subject: vim: refactor, allowing different files like ftplugin --- dotfiles/vim/lua/vim-dev.lua | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 dotfiles/vim/lua/vim-dev.lua (limited to 'dotfiles/vim/lua/vim-dev.lua') diff --git a/dotfiles/vim/lua/vim-dev.lua b/dotfiles/vim/lua/vim-dev.lua new file mode 100644 index 0000000..a852447 --- /dev/null +++ b/dotfiles/vim/lua/vim-dev.lua @@ -0,0 +1,95 @@ +local lspconfig = require "lspconfig" + +local function on_attach(client, bufnr) + local opts = { noremap = true, silent = true, buffer = bufnr } + + local telescope_builtin = require "telescope.builtin" + + local function desc(tbl1, description) + return vim.tbl_extend("force", tbl1, { desc = description }) + end + + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, desc(opts, "LSP declaration")) + vim.keymap.set("n", "gd", telescope_builtin.lsp_definitions, desc(opts, "LSP Definitions")) + vim.keymap.set("n", "K", vim.lsp.buf.hover, desc(opts, "LSP Hover")) + + vim.keymap.set("n", "gr", telescope_builtin.lsp_references, desc(opts, "LSP References")) + + vim.keymap.set("n", "sa", vim.lsp.buf.code_action, desc(opts, "LSP Code Actions")) + vim.keymap.set("v", "sa", vim.lsp.buf.range_code_action, desc(opts, "LSP Code Actions")) + vim.keymap.set("n", "se", vim.diagnostic.open_float, desc(opts, "Local Diagnostics")) + vim.keymap.set("n", "sE", telescope_builtin.diagnostics, desc(opts, "Global Diagnostics")) + vim.keymap.set("n", "sl", vim.diagnostic.setloclist, desc(opts, "Diagnostics set LocList")) + vim.keymap.set("n", "sq", vim.diagnostic.setqflist, desc(opts, "Diagnostics set QFList")) + vim.keymap.set("n", "sr", vim.lsp.buf.rename, desc(opts, "LSP Rename")) + vim.keymap.set("n", "ss", telescope_builtin.lsp_document_symbols, desc(opts, "LSP Document Symbols")) + vim.keymap.set("n", "sS", telescope_builtin.lsp_workspace_symbols, desc(opts, "LSP Workspace Symbols")) + + vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, desc(opts, "Goto Next Diagnostic")) + vim.keymap.set("n", "]d", vim.diagnostic.goto_next, desc(opts, "Goto Prev Diagnostic")) + + -- Capability specific + + if client.server_capabilities.documentFormattingProvider then + vim.keymap.set("n", "sf", vim.lsp.buf.formatting, desc(opts, "Format buffer")) + end + + -- Rust specific + vim.keymap.set("n", "sh", "RustToggleInlayHints", opts) + + require("lsp_signature").on_attach { + hint_prefix = "param: ", + } +end + +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +require("rust-tools").setup { + server = { + cmd = { vim.g.rust_analyzer_path }, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy", + }, + experimental = { + procAttrMacros = true, + }, + }, + }, + on_attach = on_attach, + }, +} + +require("nlua.lsp.nvim").setup(lspconfig, { + cmd = { + string.format("%s/bin/lua-language-server", vim.g.sumneko_lua_base_path), + "-E", + string.format("%s/share/lua-language-server/main.lua", vim.g.sumneko_lua_base_path), + }, + on_attach = on_attach, +}) + +-- Refactoring +require("refactoring").setup {} + +-- Null LSP + +require("null-ls").setup({ + sources = { + require("null-ls").builtins.code_actions.gitrebase, + require("null-ls").builtins.code_actions.gitsigns, + require("null-ls").builtins.code_actions.refactoring.with { + filetypes = { "typescript", "javascript", "lua", "c", "cpp", "go", "python", "java", "php", "ruby" }, + }, + require("null-ls").builtins.code_actions.shellcheck, + require("null-ls").builtins.code_actions.statix, + require("null-ls").builtins.diagnostics.deadnix, + require("null-ls").builtins.diagnostics.shellcheck, + require("null-ls").builtins.diagnostics.statix, + require("null-ls").builtins.diagnostics.vale.with { + filetypes = { "markdown", "pandoc", "tex", "asciidoc" }, + }, + }, + on_attach = on_attach, +}) -- cgit v1.2.3