aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/diagnostic.lua
diff options
context:
space:
mode:
authorSmitesh Patil <smiteshpatil2010@gmail.com>2022-03-27 19:40:03 +0530
committerGitHub <noreply@github.com>2022-03-27 08:10:03 -0600
commita8e2c45b9462b740f22305397342b96586b88681 (patch)
tree0c80234403fbd6caacb94ec38ad6298781894ee9 /runtime/lua/vim/diagnostic.lua
parenta86d3d3780402f42f5ccbde919ff3b4fb48f15ed (diff)
downloadrneovim-a8e2c45b9462b740f22305397342b96586b88681.tar.gz
rneovim-a8e2c45b9462b740f22305397342b96586b88681.tar.bz2
rneovim-a8e2c45b9462b740f22305397342b96586b88681.zip
fix(diagnostic): make `open_float` respect global diagnostic options (#17879)
* make `open_float` respect `scope` option set in `vim.diagnostic.config` * Closes #17878
Diffstat (limited to 'runtime/lua/vim/diagnostic.lua')
-rw-r--r--runtime/lua/vim/diagnostic.lua23
1 files changed, 12 insertions, 11 deletions
diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua
index fcb1e61764..1ec66d7c55 100644
--- a/runtime/lua/vim/diagnostic.lua
+++ b/runtime/lua/vim/diagnostic.lua
@@ -1224,6 +1224,18 @@ function M.open_float(opts, ...)
opts = opts or {}
bufnr = get_bufnr(bufnr or opts.bufnr)
+
+ do
+ -- Resolve options with user settings from vim.diagnostic.config
+ -- Unlike the other decoration functions (e.g. set_virtual_text, set_signs, etc.) `open_float`
+ -- does not have a dedicated table for configuration options; instead, the options are mixed in
+ -- with its `opts` table which also includes "keyword" parameters. So we create a dedicated
+ -- options table that inherits missing keys from the global configuration before resolving.
+ local t = global_diagnostic_options.float
+ local float_opts = vim.tbl_extend("keep", opts, type(t) == "table" and t or {})
+ opts = get_resolved_options({ float = float_opts }, nil, bufnr).float
+ end
+
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
@@ -1242,17 +1254,6 @@ function M.open_float(opts, ...)
error("Invalid value for option 'scope'")
end
- do
- -- Resolve options with user settings from vim.diagnostic.config
- -- Unlike the other decoration functions (e.g. set_virtual_text, set_signs, etc.) `open_float`
- -- does not have a dedicated table for configuration options; instead, the options are mixed in
- -- with its `opts` table which also includes "keyword" parameters. So we create a dedicated
- -- options table that inherits missing keys from the global configuration before resolving.
- local t = global_diagnostic_options.float
- local float_opts = vim.tbl_extend("keep", opts, type(t) == "table" and t or {})
- opts = get_resolved_options({ float = float_opts }, nil, bufnr).float
- end
-
local diagnostics = get_diagnostics(bufnr, opts, true)
if scope == "line" then