diff options
author | glepnir <glephunter@gmail.com> | 2025-03-19 05:05:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-18 16:05:35 -0500 |
commit | 62d9fab9af21323e42828748e6761c02020a7aa5 (patch) | |
tree | c92c1fc3e5fd4e25850b5b7f7e0b617c0b322421 /runtime/lua/vim | |
parent | eefd72fff753e923abf88ac85b1de0859cf24635 (diff) | |
download | rneovim-62d9fab9af21323e42828748e6761c02020a7aa5.tar.gz rneovim-62d9fab9af21323e42828748e6761c02020a7aa5.tar.bz2 rneovim-62d9fab9af21323e42828748e6761c02020a7aa5.zip |
feat(float): add winborder option (#31074)
Problem:
There is currently no global option to define the default border style for floating windows. This leads to repetitive code when developers need consistent styling across multiple floating windows.
Solution:
Introduce a global option winborder to specify the default border style for floating windows. When a floating window is created without explicitly specifying a border style, the value of the winborder option will be used. This simplifies configuration and ensures consistency in floating window appearance.
Co-authored-by: Gregory Anders <greg@gpanders.com>
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r-- | runtime/lua/vim/_meta/api.lua | 16 | ||||
-rw-r--r-- | runtime/lua/vim/_meta/options.lua | 13 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 19 |
3 files changed, 24 insertions, 24 deletions
diff --git a/runtime/lua/vim/_meta/api.lua b/runtime/lua/vim/_meta/api.lua index 2c1fb260b2..e7ad91132d 100644 --- a/runtime/lua/vim/_meta/api.lua +++ b/runtime/lua/vim/_meta/api.lua @@ -1797,17 +1797,11 @@ function vim.api.nvim_open_term(buffer, opts) end --- 'fillchars' to a space char, and clearing the --- `hl-EndOfBuffer` region in 'winhighlight'. --- - border: Style of (optional) window border. This can either be a string ---- or an array. The string values are ---- - "none": No border (default). ---- - "single": A single line box. ---- - "double": A double line box. ---- - "rounded": Like "single", but with rounded corners ("╭" etc.). ---- - "solid": Adds padding by a single whitespace cell. ---- - "shadow": A drop shadow effect by blending with the background. ---- - If it is an array, it should have a length of eight or any divisor of ---- eight. The array will specify the eight chars building up the border ---- in a clockwise fashion starting with the top-left corner. As an ---- example, the double box style could be specified as: +--- or an array. The string values are the same as those described in 'winborder'. +--- If it is an array, it should have a length of eight or any divisor of +--- eight. The array will specify the eight chars building up the border +--- in a clockwise fashion starting with the top-left corner. As an +--- example, the double box style could be specified as: --- ``` --- [ "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" ]. --- ``` diff --git a/runtime/lua/vim/_meta/options.lua b/runtime/lua/vim/_meta/options.lua index 5e138c1a4a..46366d585b 100644 --- a/runtime/lua/vim/_meta/options.lua +++ b/runtime/lua/vim/_meta/options.lua @@ -7832,6 +7832,19 @@ vim.o.winbl = vim.o.winblend vim.wo.winblend = vim.o.winblend vim.wo.winbl = vim.wo.winblend +--- Defines the default border style of floating windows. The default value +--- is empty, which is equivalent to "none". Valid values include: +--- - "none": No border. +--- - "single": A single line box. +--- - "double": A double line box. +--- - "rounded": Like "single", but with rounded corners ("╭" etc.). +--- - "solid": Adds padding by a single whitespace cell. +--- - "shadow": A drop shadow effect by blending with the background. +--- +--- @type ''|'double'|'single'|'shadow'|'rounded'|'solid'|'none' +vim.o.winborder = "" +vim.go.winborder = vim.o.winborder + --- Window height used for `CTRL-F` and `CTRL-B` when there is only one --- window and the value is smaller than 'lines' minus one. The screen --- will scroll 'window' minus two lines, with a minimum of one. diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 056cb0c73c..d8a6a70ccd 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -6,17 +6,6 @@ local uv = vim.uv local M = {} -local default_border = { - { '', 'NormalFloat' }, - { '', 'NormalFloat' }, - { '', 'NormalFloat' }, - { ' ', 'NormalFloat' }, - { '', 'NormalFloat' }, - { '', 'NormalFloat' }, - { '', 'NormalFloat' }, - { ' ', 'NormalFloat' }, -} - --- @param border string|(string|[string,string])[] local function border_error(border) error( @@ -43,7 +32,11 @@ local border_size = { --- @return integer height --- @return integer width local function get_border_size(opts) - local border = opts and opts.border or default_border + local border = opts and opts.border or vim.o.winborder + + if border == '' then + border = 'none' + end if type(border) == 'string' then if not border_size[border] then @@ -884,7 +877,7 @@ function M.make_floating_popup_options(width, height, opts) or 'cursor', style = 'minimal', width = width, - border = opts.border or default_border, + border = opts.border, zindex = opts.zindex or (api.nvim_win_get_config(0).zindex or 49) + 1, title = title, title_pos = title_pos, |