From c67a2b1dd391fe75666c50eb291e203c6658218e Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Mon, 12 Sep 2022 19:05:34 -0500 Subject: feat(nvim): improve lsp keymaps and cleaned up configs --- nvim/.config/nvim/lua/tobyvin/lsp/diagnostics.lua | 9 +++- nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua | 50 +++------------------- nvim/.config/nvim/lua/tobyvin/lsp/init.lua | 42 ++++++------------ .../.config/nvim/lua/tobyvin/plugins/lspconfig.lua | 4 -- .../nvim/lua/tobyvin/plugins/rust-tools.lua | 43 ++++++------------- .../nvim/lua/tobyvin/plugins/treesitter.lua | 2 +- 6 files changed, 41 insertions(+), 109 deletions(-) (limited to 'nvim') diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/diagnostics.lua b/nvim/.config/nvim/lua/tobyvin/lsp/diagnostics.lua index 6b21ca2..6925ca6 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/diagnostics.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/diagnostics.lua @@ -16,13 +16,18 @@ M.on_attach = function(_, bufnr) vim.diagnostic.open_float(nil, opts) end, }) + + vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Show Diagnostic", buffer = bufnr }) + vim.keymap.set("n", "E", vim.diagnostic.setloclist, { desc = "List Diagnostic", buffer = bufnr }) + vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Next Diagnostic", buffer = bufnr }) + vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Prev Diagnostic", buffer = bufnr }) end M.setup = function() vim.diagnostic.config({ virtual_text = { - source = "if_many" - }, + source = "if_many", + }, signs = true, underline = true, update_in_insert = true, diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua b/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua index d815f4f..47d2328 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua @@ -1,53 +1,15 @@ -local M = { - augroup_format = vim.api.nvim_create_augroup("Format", { clear = true }), -} - -M.toggle_format = function() - vim.b.auto_format = not vim.b.auto_format - vim.notify("Auto-formatter " .. (vim.b.auto_format and "en" or "dis") .. "abled", "Info") -end +local M = {} M.on_attach = function(client, bufnr) - local nmap = require("tobyvin.utils").create_map_group("n", "l", { desc = "LSP", buffer = bufnr }) - if client.server_capabilities.documentFormattingProvider then - vim.b.auto_format = true - - vim.api.nvim_buf_create_user_command( - bufnr, - "ToggleAutoFormat", - M.toggle_format, - { desc = "Toggle auto-format" } - ) - vim.api.nvim_buf_create_user_command(bufnr, "Format", vim.lsp.buf.format, { nargs = "*", desc = "Format" }) - - nmap("f", vim.lsp.buf.format, { desc = "Format" }) - nmap("F", M.toggle_format, { desc = "Toggle auto-format" }) - - vim.api.nvim_clear_autocmds({ group = M.augroup_format, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = M.augroup_format, - buffer = bufnr, - callback = function() - if M.auto_format_enabled then - vim.lsp.buf.format() - end - end, - desc = "Auto-format", - }) + vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.formatexpr()") + vim.api.nvim_buf_create_user_command(bufnr, "Format", vim.lsp.buf.format, { nargs = "*" }) + vim.keymap.set("n", "lf", vim.lsp.buf.format, { desc = "Format", buffer = bufnr }) end - local vmap = require("tobyvin.utils").create_map_group("v", "l", { desc = "LSP", buffer = bufnr }) - if client.server_capabilities.documentRangeFormattingProvider then - vim.api.nvim_buf_create_user_command( - bufnr, - "FormatRange", - vim.lsp.buf.range_formatting, - { nargs = "*", desc = "Format range" } - ) - - vmap("f", vim.lsp.buf.range_formatting, { desc = "Format range" }) + vim.api.nvim_buf_create_user_command(bufnr, "FormatRange", vim.lsp.buf.format, { nargs = "*" }) + vim.keymap.set("n", "lf", vim.lsp.buf.format, { desc = "Format Range", buffer = bufnr }) end end diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua index 664dda9..0b2623a 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua @@ -3,34 +3,20 @@ local M = {} M.on_attach = function(client, bufnr) vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - - vim.keymap.set("n", "", vim.lsp.buf.code_action, { desc = "Code Action" }) - local nmap = utils.create_map_group("n", "l", { desc = "LSP", buffer = bufnr }) - - nmap("a", vim.lsp.buf.code_action, { desc = "Code Action" }) - nmap("d", "TroubleToggle document_diagnostics", { desc = "Document Diagnostics" }) - nmap("D", "TroubleToggle workspace_diagnostics", { desc = "Workspace Diagnostics" }) - nmap("h", vim.lsp.buf.hover, { desc = "Hover" }) - nmap("H", vim.lsp.buf.signature_help, { desc = "Signature Help" }) - nmap("j", vim.diagnostic.goto_next, { desc = "Next Diagnostic" }) - nmap("k", vim.diagnostic.goto_prev, { desc = "Prev Diagnostic" }) - nmap("o", "SymbolsOutline", { desc = "Outline" }) - -- nmap("q", vim.lsp.diagnostic.setloclist, { desc = "Quickfix" }) - nmap("r", vim.lsp.buf.rename, { desc = "Rename" }) - nmap("R", "TroubleToggle lsp_references", { desc = "References" }) - nmap("s", "Telescope lsp_document_symbols", { desc = "Document Symbols" }) - nmap("S", "Telescope lsp_dynamic_workspace_symbols", { desc = "Workspace Symbols" }) - nmap("w", "Telescope lsp_workspace_diagnostics", { desc = "Workspace Diagnostics" }) - - local nmap_goto = utils.create_map_group("n", "lg", { desc = "Goto", buffer = bufnr }) - nmap_goto("d", vim.lsp.buf.definition, { desc = "Definition" }) - nmap_goto("t", vim.lsp.buf.type_definition, { desc = "Type" }) - nmap_goto("D", vim.lsp.buf.declaration, { desc = "Declaration" }) - nmap_goto("i", vim.lsp.buf.implementation, { desc = "Implementation" }) - nmap_goto("r", vim.lsp.buf.references, { desc = "References" }) - - local nmap_tests = utils.create_map_group("n", "r", { desc = "Run", buffer = bufnr }) - nmap_tests("l", vim.lsp.codelens.run, { desc = "CodeLens Action" }) + vim.api.nvim_buf_set_option(bufnr, "tagfunc", "v:lua.vim.lsp.tagfunc") + + vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Definition", buffer = bufnr }) + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "Declaration", buffer = bufnr }) + vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, { desc = "Type", buffer = bufnr }) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "Implementation", buffer = bufnr }) + vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "References", buffer = bufnr }) + vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover", buffer = bufnr }) + vim.keymap.set("n", "", vim.lsp.buf.signature_help, { desc = "Signature Help", buffer = bufnr }) + + utils.create_map_group("n", "l", { desc = "LSP", buffer = bufnr }) + vim.keymap.set("n", "lr", vim.lsp.buf.rename, { desc = "Rename", buffer = bufnr }) + vim.keymap.set("n", "la", vim.lsp.buf.code_action, { desc = "Code Action", buffer = bufnr }) + vim.keymap.set("n", "ll", vim.lsp.codelens.run, { desc = "Codelens", buffer = bufnr }) -- disabled in favor of https://github.com/nvim-treesitter/nvim-treesitter-refactor#highlight-definitions -- require("tobyvin.lsp.highlighting").on_attach(client, bufnr) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua index a19c78c..13c7be5 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua @@ -55,10 +55,6 @@ M.setup = function() staticcheck = true, }, }, - on_attach = function(client, bufnr) - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - lsp.on_attach(client, bufnr) - end, })) lspconfig.texlab.setup(lsp.config({ diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua index 98cdcc8..86013b4 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua @@ -5,19 +5,6 @@ local M = { liblldb = "/usr/lib/codelldb/lldb/lib/liblldb.so", } -M.dap_adapter = function() - if vim.fn.executable(M.codelldb) ~= 0 then - return { - adapter = require("rust-tools.dap").get_codelldb_adapter(M.codelldb, M.liblldb), - } - end - vim.notify("Failed to find codelldb adapter") -end - -M.cargo_cmd = function() - utils.run_cmd_with_args("cargo") -end - M.setup = function() local status_ok, rust_tools = pcall(require, "rust-tools") if not status_ok then @@ -39,28 +26,24 @@ M.setup = function() }, }, on_attach = function(client, bufnr) - if vim.fn.executable(M.codelldb) == 0 then - vim.notify( - "[DAP] Failed to find codelldb, falling back to default DAP adapter.", - "warn", - { title = "[rust-tools] codelldb not found" } - ) - end - vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.formatexpr()") - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - vim.api.nvim_buf_set_option(bufnr, "tagfunc", "v:lua.vim.lsp.tagfunc") lsp.on_attach(client, bufnr) - local nmap = utils.create_map_group("n", "", { buffer = bufnr }) - nmap("dd", rust_tools.debuggables.debuggables, { desc = "Debug" }) + local runnables = rust_tools.runnables.runnables + local debuggables = rust_tools.debuggables.debuggables + local open_cargo_toml = rust_tools.open_cargo_toml.open_cargo_toml + local run_cargo_cmd = function() + utils.run_cmd_with_args("cargo") + end - local nmap_run = utils.create_map_group("n", "r", { desc = "Run", buffer = bufnr }) - nmap_run("r", rust_tools.runnables.runnables, { desc = "Runnables" }) - nmap_run("c", M.cargo_cmd, { desc = "Command" }) - nmap_run("o", rust_tools.open_cargo_toml.open_cargo_toml, { desc = "Open Cargo.toml" }) + vim.keymap.set("n", "rr", runnables, { desc = "Runnables", buffer = bufnr }) + vim.keymap.set("n", "rd", debuggables, { desc = "Debug", buffer = bufnr }) + vim.keymap.set("n", "ro", open_cargo_toml, { desc = "Open Cargo.toml", buffer = bufnr }) + vim.keymap.set("n", "rc", run_cargo_cmd, { desc = "Command", buffer = bufnr }) end, }), - dap = M.dap_adapter(), + dap = { + adapter = require("rust-tools.dap").get_codelldb_adapter(M.codelldb, M.liblldb), + }, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua b/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua index 89de319..af45db4 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua @@ -45,7 +45,7 @@ M.setup = function() navigation = { enable = true, keymaps = { - goto_definition_lsp_fallback = "lgd", + goto_definition_lsp_fallback = "gd", }, }, }, -- cgit v1.2.3-70-g09d2