From 77249624ed5a7d2a6fa6ce08b099dc3cc0e9f079 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Fri, 30 Jun 2023 09:54:35 +0200 Subject: vim-dev: fix attach and capabilities of LSP configs --- dotfiles/vim/lua/myConfig/exports.lua | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 dotfiles/vim/lua/myConfig/exports.lua (limited to 'dotfiles/vim/lua/myConfig') diff --git a/dotfiles/vim/lua/myConfig/exports.lua b/dotfiles/vim/lua/myConfig/exports.lua new file mode 100644 index 0000000..f6eb1ce --- /dev/null +++ b/dotfiles/vim/lua/myConfig/exports.lua @@ -0,0 +1,46 @@ +local M = {} + +function M.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", "v"}, "gr", telescope_builtin.lsp_references, desc(opts, "LSP References")) + + vim.keymap.set({"n", "v"}, "sa", vim.lsp.buf.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", "v"}, "sf", vim.lsp.buf.format, desc(opts, "Format buffer")) + end + + -- Rust specific + vim.keymap.set("n", "sh", "RustToggleInlayHints", opts) + + require("lsp_signature").on_attach { + hint_prefix = "param: ", + } +end + +M.capabilities = require("cmp_nvim_lsp").default_capabilities() + +return M -- cgit v1.2.3