diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2023-07-14 18:47:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-14 09:47:18 -0700 |
commit | 33e1a8cd7042816a064c0d2bf32b6570d7e88b79 (patch) | |
tree | 252a6296f031c413e441f4d4c88ed82eb24710c0 /runtime/lua/vim/lsp.lua | |
parent | fd9ac5aa8e1c769d8cb22275206145b8d2603687 (diff) | |
download | rneovim-33e1a8cd7042816a064c0d2bf32b6570d7e88b79.tar.gz rneovim-33e1a8cd7042816a064c0d2bf32b6570d7e88b79.tar.bz2 rneovim-33e1a8cd7042816a064c0d2bf32b6570d7e88b79.zip |
feat(lsp): map K to hover by default #24331
Related: https://github.com/neovim/neovim/issues/24252
Diffstat (limited to 'runtime/lua/vim/lsp.lua')
-rw-r--r-- | runtime/lua/vim/lsp.lua | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index 1f9b6c4360..e9a1423d2d 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -963,6 +963,15 @@ function lsp._set_defaults(client, bufnr) then vim.bo[bufnr].formatexpr = 'v:lua.vim.lsp.formatexpr()' end + api.nvim_buf_call(bufnr, function() + if + client.supports_method('textDocument/hover') + and is_empty_or_default(bufnr, 'keywordprg') + and vim.fn.maparg('K', 'n', false, false) == '' + then + vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr }) + end + end) end --- @class lsp.ClientConfig @@ -1202,7 +1211,7 @@ function lsp.start_client(config) ---@private --- Reset defaults set by `set_defaults`. --- Must only be called if the last client attached to a buffer exits. - local function unset_defaults(bufnr) + local function reset_defaults(bufnr) if vim.bo[bufnr].tagfunc == 'v:lua.vim.lsp.tagfunc' then vim.bo[bufnr].tagfunc = nil end @@ -1212,6 +1221,12 @@ function lsp.start_client(config) if vim.bo[bufnr].formatexpr == 'v:lua.vim.lsp.formatexpr()' then vim.bo[bufnr].formatexpr = nil end + api.nvim_buf_call(bufnr, function() + local keymap = vim.fn.maparg('K', 'n', false, true) + if keymap and keymap.callback == vim.lsp.buf.hover then + vim.keymap.del('n', 'K', { buffer = bufnr }) + end + end) end ---@private @@ -1243,7 +1258,7 @@ function lsp.start_client(config) client_ids[client_id] = nil if vim.tbl_isempty(client_ids) then - unset_defaults(bufnr) + reset_defaults(bufnr) end end) end |