From 0bd34cb4ec301abeb751f8d3be1d3b644a009355 Mon Sep 17 00:00:00 2001 From: shadmansaleh Date: Tue, 1 Jun 2021 13:33:07 +0600 Subject: feat(lsp): Make focusability of lsp float configurable This pr allows the user to specify whether `lsp.utils.open_floating_preview` is focusable via the `opts` parameter. Defaults to true. It can be configured by setting the focusable key inside opts parameter: ```lua vim.lsp.util.open_floating_preview(contents, syntax, {focusable = false}) ``` --- runtime/lua/vim/lsp/util.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'runtime/lua/vim/lsp/util.lua') diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index e16b02fa6c..04f99112bf 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -915,6 +915,7 @@ function M.make_floating_popup_options(width, height, opts) anchor = anchor, col = col + (opts.offset_x or 0), height = height, + focusable = opts.focusable, relative = 'cursor', row = row + (opts.offset_y or 0), style = 'minimal', @@ -1316,6 +1317,7 @@ end -- - pad_bottom number of lines to pad contents at bottom -- - focus_id if a popup with this id is opened, then focus it -- - close_events list of events that closes the floating window +-- - focusable (boolean, default true): Make float focusable --@returns bufnr,winnr buffer and window number of the newly created floating ---preview window function M.open_floating_preview(contents, syntax, opts) @@ -1332,7 +1334,7 @@ function M.open_floating_preview(contents, syntax, opts) local bufnr = api.nvim_get_current_buf() -- check if this popup is focusable and we need to focus - if opts.focus_id then + if opts.focus_id and opts.focusable ~= false then -- Go back to previous window if we are in a focusable one local current_winnr = api.nvim_get_current_win() if npcall(api.nvim_win_get_var, current_winnr, opts.focus_id) then -- cgit From 68d48e25b6d6e8d9b06c557cbf9b018c3e84ab72 Mon Sep 17 00:00:00 2001 From: shadmansaleh Date: Tue, 1 Jun 2021 13:34:37 +0600 Subject: docs(lsp): Fix opts param not captured by docgen In the documentation for `vim.lsp.util.open_floating_preview` the opts table keys were prefixed with `--` instead of `---`, preventing capture by docgen. --- runtime/lua/vim/lsp/util.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'runtime/lua/vim/lsp/util.lua') diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 04f99112bf..8616a9ef3b 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -1305,19 +1305,19 @@ end --@param contents table of lines to show in window --@param syntax string of syntax to set for opened buffer --@param opts dictionary with optional fields --- - height of floating window --- - width of floating window --- - wrap boolean enable wrapping of long lines (defaults to true) --- - wrap_at character to wrap at for computing height when wrap is enabled --- - max_width maximal width of floating window --- - max_height maximal height of floating window --- - pad_left number of columns to pad contents at left --- - pad_right number of columns to pad contents at right --- - pad_top number of lines to pad contents at top --- - pad_bottom number of lines to pad contents at bottom --- - focus_id if a popup with this id is opened, then focus it --- - close_events list of events that closes the floating window --- - focusable (boolean, default true): Make float focusable +--- - height of floating window +--- - width of floating window +--- - wrap boolean enable wrapping of long lines (defaults to true) +--- - wrap_at character to wrap at for computing height when wrap is enabled +--- - max_width maximal width of floating window +--- - max_height maximal height of floating window +--- - pad_left number of columns to pad contents at left +--- - pad_right number of columns to pad contents at right +--- - pad_top number of lines to pad contents at top +--- - pad_bottom number of lines to pad contents at bottom +--- - focus_id if a popup with this id is opened, then focus it +--- - close_events list of events that closes the floating window +--- - focusable (boolean, default true): Make float focusable --@returns bufnr,winnr buffer and window number of the newly created floating ---preview window function M.open_floating_preview(contents, syntax, opts) -- cgit