aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua
diff options
context:
space:
mode:
authorGregory Anders <8965202+gpanders@users.noreply.github.com>2021-12-08 18:44:31 -0700
committerGitHub <noreply@github.com>2021-12-08 18:44:31 -0700
commitbe84529190e25294d0783394f63801e56a39e632 (patch)
tree93ebf4055e014ea0afbb0c0bcae5238bf58c86c4 /runtime/lua
parentc096561041840826245a82699dfb49064d326c52 (diff)
downloadrneovim-be84529190e25294d0783394f63801e56a39e632.tar.gz
rneovim-be84529190e25294d0783394f63801e56a39e632.tar.bz2
rneovim-be84529190e25294d0783394f63801e56a39e632.zip
refactor(diagnostic): remove bufnr parameter from open_float (#16579)
The overwhelming majority of use cases for `open_float` are to view diagnostics from the current buffer in a floating window. Thus, most use cases will just `0` or `nil` as the first argument, which makes the argument effectively useless and wasteful. In the cause of optimizing for the primary use case, make the `bufnr` parameter an optional parameter in the options table. This still allows using an alternative buffer for those that wish to do so, but makes the "primary" use case much easier. The old signature is preserved for backward compatibility, though it can likely be fully deprecated at some point.
Diffstat (limited to 'runtime/lua')
-rw-r--r--runtime/lua/vim/diagnostic.lua27
1 files changed, 18 insertions, 9 deletions
diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua
index ac4081bb54..dfcac33f6d 100644
--- a/runtime/lua/vim/diagnostic.lua
+++ b/runtime/lua/vim/diagnostic.lua
@@ -520,8 +520,8 @@ local function diagnostic_move_pos(opts, pos)
local float_opts = type(float) == "table" and float or {}
vim.schedule(function()
M.open_float(
- vim.api.nvim_win_get_buf(win_id),
vim.tbl_extend("keep", float_opts, {
+ bufnr = vim.api.nvim_win_get_buf(win_id),
scope = "cursor",
focus = false,
})
@@ -1135,12 +1135,15 @@ end
--- Show diagnostics in a floating window.
---
----@param bufnr number|nil Buffer number. Defaults to the current buffer.
---@param opts table|nil Configuration table with the same keys as
--- |vim.lsp.util.open_floating_preview()| in addition to the following:
+--- - bufnr: (number) Buffer number to show diagnostics from.
+--- Defaults to the current buffer.
--- - namespace: (number) Limit diagnostics to the given namespace
--- - scope: (string, default "line") Show diagnostics from the whole buffer ("buffer"),
--- the current cursor line ("line"), or the current cursor position ("cursor").
+--- Shorthand versions are also accepted ("c" for "cursor", "l" for "line", "b"
+--- for "buffer").
--- - pos: (number or table) If {scope} is "line" or "cursor", use this position rather
--- than the cursor position. If a number, interpreted as a line number;
--- otherwise, a (row, col) tuple.
@@ -1169,15 +1172,21 @@ end
--- highlight.
--- Overrides the setting from |vim.diagnostic.config()|.
---@return tuple ({float_bufnr}, {win_id})
-function M.open_float(bufnr, opts)
- vim.validate {
- bufnr = { bufnr, 'n', true },
- opts = { opts, 't', true },
- }
+function M.open_float(opts, ...)
+ -- Support old (bufnr, opts) signature
+ local bufnr
+ if opts == nil or type(opts) == "number" then
+ bufnr = opts
+ opts = ...
+ else
+ vim.validate {
+ opts = { opts, 't', true },
+ }
+ end
opts = opts or {}
- bufnr = get_bufnr(bufnr)
- local scope = opts.scope or "line"
+ bufnr = get_bufnr(bufnr or opts.bufnr)
+ local scope = ({l = "line", c = "cursor", b = "buffer"})[opts.scope] or opts.scope or "line"
local lnum, col
if scope == "line" or scope == "cursor" then
if not opts.pos then