diff options
author | Folke Lemaitre <folke.lemaitre@gmail.com> | 2021-06-01 09:01:58 +0200 |
---|---|---|
committer | Folke Lemaitre <folke.lemaitre@gmail.com> | 2021-06-01 09:36:29 +0200 |
commit | 0ece34cbb87ceabc14dec8aab8c92ad3c6e59142 (patch) | |
tree | 1e7a9e60fd69e4e1dd348cab71200cbfd3d9f399 /runtime/lua/vim/lsp/util.lua | |
parent | 3cd688ff775a50808eb7d260e540038cc32b4a40 (diff) | |
download | rneovim-0ece34cbb87ceabc14dec8aab8c92ad3c6e59142.tar.gz rneovim-0ece34cbb87ceabc14dec8aab8c92ad3c6e59142.tar.bz2 rneovim-0ece34cbb87ceabc14dec8aab8c92ad3c6e59142.zip |
fix(lsp): properly handle border character list without highlight groups. Fixes #14691
Diffstat (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index e2cd01b698..a7b43cfa6b 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -44,10 +44,30 @@ local function get_border_size(opts) height = 2 width = 2 else - height = height + vim.fn.strdisplaywidth(border[2][1]) -- top - height = height + vim.fn.strdisplaywidth(border[6][1]) -- bottom - width = width + vim.fn.strdisplaywidth(border[4][1]) -- right - width = width + vim.fn.strdisplaywidth(border[8][1]) -- left + local function border_width(id) + if type(border[id]) == "table" then + -- border specified as a table of <character, highlight group> + return vim.fn.strdisplaywidth(border[id][1]) + elseif type(border[id]) == "string" then + -- border specified as a list of border characters + return vim.fn.strdisplaywidth(border[id]) + end + error("floating preview border is not correct. Please refer to the docs |vim.api.nvim_open_win()|" .. vim.inspect(border)) + end + local function border_height(id) + if type(border[id]) == "table" then + -- border specified as a table of <character, highlight group> + return #border[id][1] > 0 and 1 or 0 + elseif type(border[id]) == "string" then + -- border specified as a list of border characters + return #border[id] > 0 and 1 or 0 + end + error("floating preview border is not correct. Please refer to the docs |vim.api.nvim_open_win()|" .. vim.inspect(border)) + end + height = height + border_height(2) -- top + height = height + border_height(6) -- bottom + width = width + border_width(4) -- right + width = width + border_width(8) -- left end return { height = height, width = width } |