diff options
author | Minijackson <minijackson@riseup.net> | 2023-01-18 13:39:42 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2023-01-18 13:39:42 +0100 |
commit | cfdb14cf768f2971f6efe2e333c620571f30fad1 (patch) | |
tree | 7cf802c821abd12bf47a336784d444791ced6f83 /dotfiles/vim/lua/vim-dev.lua | |
parent | 087b8756a6113c78ae20ee00c96c38f5922287a0 (diff) | |
download | nixos-config-reborn-cfdb14cf768f2971f6efe2e333c620571f30fad1.tar.gz nixos-config-reborn-cfdb14cf768f2971f6efe2e333c620571f30fad1.zip |
vim: refactor, allowing different files like ftplugin
Diffstat (limited to 'dotfiles/vim/lua/vim-dev.lua')
-rw-r--r-- | dotfiles/vim/lua/vim-dev.lua | 95 |
1 files changed, 95 insertions, 0 deletions
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 @@ | |||
1 | local lspconfig = require "lspconfig" | ||
2 | |||
3 | local function on_attach(client, bufnr) | ||
4 | local opts = { noremap = true, silent = true, buffer = bufnr } | ||
5 | |||
6 | local telescope_builtin = require "telescope.builtin" | ||
7 | |||
8 | local function desc(tbl1, description) | ||
9 | return vim.tbl_extend("force", tbl1, { desc = description }) | ||
10 | end | ||
11 | |||
12 | vim.keymap.set("n", "gD", vim.lsp.buf.declaration, desc(opts, "LSP declaration")) | ||
13 | vim.keymap.set("n", "gd", telescope_builtin.lsp_definitions, desc(opts, "LSP Definitions")) | ||
14 | vim.keymap.set("n", "K", vim.lsp.buf.hover, desc(opts, "LSP Hover")) | ||
15 | |||
16 | vim.keymap.set("n", "gr", telescope_builtin.lsp_references, desc(opts, "LSP References")) | ||
17 | |||
18 | vim.keymap.set("n", "<leader>sa", vim.lsp.buf.code_action, desc(opts, "LSP Code Actions")) | ||
19 | vim.keymap.set("v", "<leader>sa", vim.lsp.buf.range_code_action, desc(opts, "LSP Code Actions")) | ||
20 | vim.keymap.set("n", "<leader>se", vim.diagnostic.open_float, desc(opts, "Local Diagnostics")) | ||
21 | vim.keymap.set("n", "<leader>sE", telescope_builtin.diagnostics, desc(opts, "Global Diagnostics")) | ||
22 | vim.keymap.set("n", "<leader>sl", vim.diagnostic.setloclist, desc(opts, "Diagnostics set LocList")) | ||
23 | vim.keymap.set("n", "<leader>sq", vim.diagnostic.setqflist, desc(opts, "Diagnostics set QFList")) | ||
24 | vim.keymap.set("n", "<leader>sr", vim.lsp.buf.rename, desc(opts, "LSP Rename")) | ||
25 | vim.keymap.set("n", "<leader>ss", telescope_builtin.lsp_document_symbols, desc(opts, "LSP Document Symbols")) | ||
26 | vim.keymap.set("n", "<leader>sS", telescope_builtin.lsp_workspace_symbols, desc(opts, "LSP Workspace Symbols")) | ||
27 | |||
28 | vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, desc(opts, "Goto Next Diagnostic")) | ||
29 | vim.keymap.set("n", "]d", vim.diagnostic.goto_next, desc(opts, "Goto Prev Diagnostic")) | ||
30 | |||
31 | -- Capability specific | ||
32 | |||
33 | if client.server_capabilities.documentFormattingProvider then | ||
34 | vim.keymap.set("n", "<leader>sf", vim.lsp.buf.formatting, desc(opts, "Format buffer")) | ||
35 | end | ||
36 | |||
37 | -- Rust specific | ||
38 | vim.keymap.set("n", "<leader>sh", "<cmd>RustToggleInlayHints<CR>", opts) | ||
39 | |||
40 | require("lsp_signature").on_attach { | ||
41 | hint_prefix = "param: ", | ||
42 | } | ||
43 | end | ||
44 | |||
45 | local capabilities = require("cmp_nvim_lsp").default_capabilities() | ||
46 | |||
47 | require("rust-tools").setup { | ||
48 | server = { | ||
49 | cmd = { vim.g.rust_analyzer_path }, | ||
50 | settings = { | ||
51 | ["rust-analyzer"] = { | ||
52 | checkOnSave = { | ||
53 | command = "clippy", | ||
54 | }, | ||
55 | experimental = { | ||
56 | procAttrMacros = true, | ||
57 | }, | ||
58 | }, | ||
59 | }, | ||
60 | on_attach = on_attach, | ||
61 | }, | ||
62 | } | ||
63 | |||
64 | require("nlua.lsp.nvim").setup(lspconfig, { | ||
65 | cmd = { | ||
66 | string.format("%s/bin/lua-language-server", vim.g.sumneko_lua_base_path), | ||
67 | "-E", | ||
68 | string.format("%s/share/lua-language-server/main.lua", vim.g.sumneko_lua_base_path), | ||
69 | }, | ||
70 | on_attach = on_attach, | ||
71 | }) | ||
72 | |||
73 | -- Refactoring | ||
74 | require("refactoring").setup {} | ||
75 | |||
76 | -- Null LSP | ||
77 | |||
78 | require("null-ls").setup({ | ||
79 | sources = { | ||
80 | require("null-ls").builtins.code_actions.gitrebase, | ||
81 | require("null-ls").builtins.code_actions.gitsigns, | ||
82 | require("null-ls").builtins.code_actions.refactoring.with { | ||
83 | filetypes = { "typescript", "javascript", "lua", "c", "cpp", "go", "python", "java", "php", "ruby" }, | ||
84 | }, | ||
85 | require("null-ls").builtins.code_actions.shellcheck, | ||
86 | require("null-ls").builtins.code_actions.statix, | ||
87 | require("null-ls").builtins.diagnostics.deadnix, | ||
88 | require("null-ls").builtins.diagnostics.shellcheck, | ||
89 | require("null-ls").builtins.diagnostics.statix, | ||
90 | require("null-ls").builtins.diagnostics.vale.with { | ||
91 | filetypes = { "markdown", "pandoc", "tex", "asciidoc" }, | ||
92 | }, | ||
93 | }, | ||
94 | on_attach = on_attach, | ||
95 | }) | ||