From 4acc3621cbd2918e98209971005aa8ea479d744f Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Mon, 4 Sep 2023 23:01:56 +0200 Subject: [PATCH] nit(nvim): refactor lsp keymaps --- nvim/lazy-lock.json | 4 ++-- nvim/lua/keymaps.lua | 37 ++++++++++++++++++++++++++++-- nvim/lua/plugins.lua | 2 +- nvim/lua/plugins/haskell-tools.lua | 2 +- nvim/lua/plugins/lspconfig.lua | 31 ------------------------- nvim/lua/plugins/rust-tools.lua | 3 ++- nvim/lua/utility.lua | 2 +- 7 files changed, 42 insertions(+), 39 deletions(-) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 3972bd0..2a08f5c 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -14,14 +14,14 @@ "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "dfdd771b792fbb4bad8e057d72558255695aa1a7" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "6148b51db945b55b3b725da39eaea6441e59dff8" }, - "mason.nvim": { "branch": "main", "commit": "0942198fb9a998b6ccee36fb8dd7495eb8ba659c" }, + "mason.nvim": { "branch": "main", "commit": "ee6a7f179ebf8aa9da9d53b1cf1b57d292ea0182" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "9b5b4c874b13e372500f07c37187ba06c0c1ac0a" }, "nui.nvim": { "branch": "main", "commit": "aa1b4c1e05983ff7debd2b4b2788651db099de2f" }, "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, "nvim-dap": { "branch": "master", "commit": "31e1ece773e10448dcb616d5144290946a6264b7" }, "nvim-dap-ui": { "branch": "master", "commit": "85b16ac2309d85c88577cd8ee1733ce52be8227e" }, "nvim-lspconfig": { "branch": "master", "commit": "a27356f1ef9c11e1f459cc96a3fcac5c265e72d6" }, - "nvim-treesitter": { "branch": "master", "commit": "17b943e7c5cc2b2db3ac7b5720fbd42e75a00d8d" }, + "nvim-treesitter": { "branch": "master", "commit": "30604fd7dde5abcba7ca8f5761894dfa61febe51" }, "nvim-web-devicons": { "branch": "master", "commit": "bc11ee2498de2310de5776477dd9dce65d03b464" }, "plenary.nvim": { "branch": "master", "commit": "0dbe561ae023f02c2fb772b879e905055b939ce3" }, "rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" }, diff --git a/nvim/lua/keymaps.lua b/nvim/lua/keymaps.lua index 5bbd033..2b370f0 100644 --- a/nvim/lua/keymaps.lua +++ b/nvim/lua/keymaps.lua @@ -1,5 +1,5 @@ -local map = require("utility").curried_keymap -local n, t = map 'n', map 't' +local map = require("utility").keymap +local n, t, nv = map 'n', map 't', map {'n', 'v'} n "mn" ":Explore ~/.config/nvim/" "Meta: open Neovim config" @@ -27,3 +27,36 @@ n "[d" (vim.diagnostic.goto_prev) "Previous diagnostic message" n "]d" (vim.diagnostic.goto_next) "Next diagnostic message" n "dl" (vim.diagnostic.setloclist) "Diagnostic: list messages" +-- LSP +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + desc = "LSP actions", + callback = function(ev) + -- Enable completion triggered by + vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + + local function workspaces_list() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end + + local function format() + vim.lsp.buf.format({async = true}) + end + + local buffer = ev.buf + n "K" (vim.lsp.buf.hover) {"Show hover help", buffer} + n "gD" (vim.lsp.buf.declaration) {"Go to declaration", buffer} + n "gd" (vim.lsp.buf.definition) {"Go to definition", buffer} + n "gi" (vim.lsp.buf.implementation) {"Go to implementation", buffer} + n "gr" (vim.lsp.buf.references) {"Show references", buffer} + n "D" (vim.lsp.buf.type_definition) {"Go to type definition", buffer} + n "" (vim.lsp.buf.signature_help) {"Signature help", buffer} + n "wa" (vim.lsp.buf.add_workspace_folder) {"Add workspace folder", buffer} + n "wr" (vim.lsp.buf.remove_workspace_folder) {"Remove workspace folder", buffer} + n "wl" (workspaces_list) {"List workspace folders", buffer} + n "lr" (vim.lsp.buf.rename) {"Rename identifier", buffer} + nv "la" (vim.lsp.buf.code_action) {"Show code actions", buffer} + n "lf" (format) {"Format file", buffer} + end, +}) + diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index b081006..5ab2364 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -46,7 +46,7 @@ return { } }) telescope.load_extension("fzf") - local nmap = U.curried_keymap 'n' + local nmap = U.keymap 'n' nmap "ff" (builtin.find_files) "Telescope: find files" nmap "fb" (builtin.buffers) "Telescope: find buffers" nmap "fg" (builtin.live_grep) "Telescope: grep content" diff --git a/nvim/lua/plugins/haskell-tools.lua b/nvim/lua/plugins/haskell-tools.lua index 84d09fd..f56597d 100644 --- a/nvim/lua/plugins/haskell-tools.lua +++ b/nvim/lua/plugins/haskell-tools.lua @@ -1,4 +1,4 @@ -local nmap = require("utility").curried_keymap('n') +local nmap = require("utility").keymap('n') local M = {} diff --git a/nvim/lua/plugins/lspconfig.lua b/nvim/lua/plugins/lspconfig.lua index cb3eaad..60fec47 100644 --- a/nvim/lua/plugins/lspconfig.lua +++ b/nvim/lua/plugins/lspconfig.lua @@ -2,37 +2,6 @@ local M = {} function M.config() - -- Use LspAttach autocommand to only map the following keys - -- after the language server attaches to the current buffer - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('UserLspConfig', {}), - desc = "LSP actions", - callback = function(ev) - -- Enable completion triggered by - vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' - - -- Buffer local mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local opts = { buffer = ev.buf } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', 'f', function() - vim.lsp.buf.format { async = true } - end, opts) - end, - }) end diff --git a/nvim/lua/plugins/rust-tools.lua b/nvim/lua/plugins/rust-tools.lua index f655172..5053e68 100644 --- a/nvim/lua/plugins/rust-tools.lua +++ b/nvim/lua/plugins/rust-tools.lua @@ -1,6 +1,7 @@ -local nmap = require("utility").curried_keymap('n') +local nmap = require("utility").keymap('n') local M = {} + function M.config() local tools = require "rust-tools" local mason = require "mason-registry" diff --git a/nvim/lua/utility.lua b/nvim/lua/utility.lua index 78ec017..ef44d80 100644 --- a/nvim/lua/utility.lua +++ b/nvim/lua/utility.lua @@ -21,7 +21,7 @@ end ---Wrapper around `vim.keymap.set` ---@param modes string|string[] -function M.curried_keymap(modes) +function M.keymap(modes) ---@param lhs string return function(lhs) ---@param rhs string|function