diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index 2b7d428..2ee25a9 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -145,6 +145,38 @@ end) vim.keymap.set("n", "]c", ":cn") vim.keymap.set("n", "[c", ":cp") +vim.keymap.set("n", "dk", vim.diagnostic.open_float) +vim.keymap.set("n", "[d", function() + vim.diagnostic.jump({ count = -1, float = true }) +end) +vim.keymap.set("n", "]d", function() + vim.diagnostic.jump({ count = 1, float = true }) +end) +vim.keymap.set("n", "gD", vim.lsp.buf.declaration) +vim.keymap.set("n", "K", function() + vim.lsp.buf.hover({ max_width = 80 }) +end) +vim.keymap.set({ "i", "s" }, "", function() + vim.lsp.buf.signature_help({ max_width = 80 }) +end) +vim.keymap.set({ "n", "i" }, "", vim.lsp.buf.document_highlight) +vim.keymap.set({ "n", "x" }, "lf", vim.lsp.buf.format) +vim.keymap.set("n", "ld", function() + vim.diagnostic.enable( + not vim.diagnostic.is_enabled({ bufnr = 0 }), + { bufnr = 0 } + ) +end) +vim.keymap.set({ "n", "i" }, "", function() + vim.lsp.buf.clear_references() + vim.cmd.nohlsearch() + vim.schedule(vim.cmd.diffupdate) + return "" +end, { expr = true }) +vim.keymap.set("n", "dl", vim.diagnostic.setloclist) +vim.keymap.set("n", "grt", vim.lsp.buf.type_definition) +vim.keymap.set("n", "gd", vim.lsp.buf.definition) + -- Default bindings that are good to know: -- insert mode: -- - indent, see :h i_CTRL-T diff --git a/lua/lsp.lua b/lua/lsp.lua index dc4b154..b0def3d 100644 --- a/lua/lsp.lua +++ b/lua/lsp.lua @@ -2,7 +2,6 @@ vim.lsp.config = vim.lsp.config local log = require("log") -local util = require("util") local M = {} @@ -15,97 +14,6 @@ M.diagnostic_signs = { }, } ----@param bufnr integer -local function set_keymaps(bufnr) - local keymaps = { - { mode = { "n" }, lhs = "dk", rhs = vim.diagnostic.open_float }, - { - mode = { "n" }, - lhs = "[d", - rhs = function() - vim.diagnostic.jump({ count = -1, float = true }) - end, - }, - { - mode = { "n" }, - lhs = "]d", - rhs = function() - vim.diagnostic.jump({ count = 1, float = true }) - end, - }, - { mode = { "n" }, lhs = "gD", rhs = vim.lsp.buf.declaration }, - { - mode = "n", - lhs = "K", - rhs = function() - vim.lsp.buf.hover({ max_width = 80 }) - end, - }, - { - mode = { "i", "s" }, - lhs = "", - rhs = function() - vim.lsp.buf.signature_help({ max_width = 80 }) - end, - }, - { - mode = { "n", "i" }, - lhs = "", - rhs = vim.lsp.buf.document_highlight, - }, - { - mode = { "n", "x" }, - lhs = "lf", - rhs = vim.lsp.buf.format, - }, - { - mode = { "n" }, - lhs = "ld", - rhs = function() - vim.diagnostic.enable( - not vim.diagnostic.is_enabled({ bufnr = bufnr }), - { bufnr = bufnr } - ) - end, - }, - { - mode = { "n", "i" }, - lhs = "", - rhs = function() - vim.lsp.buf.clear_references() - vim.cmd.nohlsearch() - vim.schedule(vim.cmd.diffupdate) - return "" - end, - opts = { expr = true }, - }, - } - - local telescope = util.try_require("telescope.builtin") - - if telescope then - vim.list_extend(keymaps, { - { mode = "n", lhs = "dl", rhs = telescope.diagnostics }, - { mode = "n", lhs = "grt", rhs = telescope.lsp_type_definitions }, - { mode = "n", lhs = "gd", rhs = telescope.lsp_definitions }, - { mode = "n", lhs = "gri", rhs = telescope.lsp_implementations }, - { mode = "n", lhs = "grr", rhs = telescope.lsp_references }, - }) - else - vim.list_extend(keymaps, { - { mode = "n", lhs = "dl", rhs = vim.diagnostic.setloclist }, - { mode = "n", lhs = "grt", rhs = vim.lsp.buf.type_definition }, - { mode = "n", lhs = "gd", rhs = vim.lsp.buf.definition }, - }) - end - - for _, keymap in ipairs(keymaps) do - keymap.opts = - vim.tbl_extend("keep", keymap.opts or {}, { buffer = bufnr }) - vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs, keymap.opts) - end -end - --- Load a JSON file and return a parsed table merged with settings ---@param path string ---@param settings? table @@ -131,9 +39,7 @@ local function with_file(path, settings) return vim.tbl_deep_extend("force", settings or {}, resp) end -function M.on_attach(client, bufnr) - set_keymaps(bufnr) - +function M.on_attach(client, _) client.settings = with_file( string.format(".%s.json", client.name), client.settings diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index 3355aa0..760e57f 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -158,6 +158,12 @@ return { }) end) + vim.keymap.set("n", "dl", builtin.diagnostics) + vim.keymap.set("n", "grt", builtin.lsp_type_definitions) + vim.keymap.set("n", "gd", builtin.lsp_definitions) + vim.keymap.set("n", "gri", builtin.lsp_implementations) + vim.keymap.set("n", "grr", builtin.lsp_references) + telescope.load_extension("fzf") telescope.load_extension("notify") vim.keymap.set("n", "fn", function()