nit(nvim): refactor lsp keymaps

This commit is contained in:
Maciej Jur 2023-09-04 23:01:56 +02:00
parent ffa2a6b892
commit 4acc3621cb
Signed by: kamov
GPG key ID: 191CBFF5F72ECAFD
7 changed files with 42 additions and 39 deletions

View file

@ -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" },

View file

@ -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 "<leader>mn" ":Explore ~/.config/nvim/<cr>" "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 "<leader>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 <c-x><c-o>
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 "<leader>D" (vim.lsp.buf.type_definition) {"Go to type definition", buffer}
n "<C-k>" (vim.lsp.buf.signature_help) {"Signature help", buffer}
n "<leader>wa" (vim.lsp.buf.add_workspace_folder) {"Add workspace folder", buffer}
n "<leader>wr" (vim.lsp.buf.remove_workspace_folder) {"Remove workspace folder", buffer}
n "<leader>wl" (workspaces_list) {"List workspace folders", buffer}
n "<leader>lr" (vim.lsp.buf.rename) {"Rename identifier", buffer}
nv "<leader>la" (vim.lsp.buf.code_action) {"Show code actions", buffer}
n "<leader>lf" (format) {"Format file", buffer}
end,
})

View file

@ -46,7 +46,7 @@ return {
}
})
telescope.load_extension("fzf")
local nmap = U.curried_keymap 'n'
local nmap = U.keymap 'n'
nmap "<leader>ff" (builtin.find_files) "Telescope: find files"
nmap "<leader>fb" (builtin.buffers) "Telescope: find buffers"
nmap "<leader>fg" (builtin.live_grep) "Telescope: grep content"

View file

@ -1,4 +1,4 @@
local nmap = require("utility").curried_keymap('n')
local nmap = require("utility").keymap('n')
local M = {}

View file

@ -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 <c-x><c-o>
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', '<C-k>', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<space>f', function()
vim.lsp.buf.format { async = true }
end, opts)
end,
})
end

View file

@ -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"

View file

@ -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