Merge pull request #14804 from clason/rounded-borders

[RDY] feat(float): add rounded borders preset
This commit is contained in:
Michael Lingelbach 2021-06-14 13:36:47 -07:00 committed by GitHub
commit 4284abd89a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 64 additions and 18 deletions

View File

@ -1770,6 +1770,7 @@ static void parse_border_style(Object style, FloatConfig *fconfig, Error *err)
{ "double", { "", "", "", "", "", "", "", "" }, false },
{ "single", { "", "", "", "", "", "", "", "" }, false },
{ "shadow", { "", "", " ", " ", " ", " ", " ", "" }, true },
{ "rounded", { "", "", "", "", "", "", "", "" }, false },
{ "solid", { " ", " ", " ", " ", " ", " ", " ", " " }, false },
{ NULL, { { NUL } } , false },
};

View File

@ -1437,28 +1437,30 @@ void nvim_chan_send(Integer chan, String data, Error *err)
/// end-of-buffer region is hidden by setting `eob` flag of
/// 'fillchars' to a space char, and clearing the
/// |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. This is the default
/// - "single" a single line box
/// - "double" a double line box
/// - "shadow" a drop shadow effect by blending with the background.
/// If it is an array it should be an array of eight items or any divisor of
/// - `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 specifify 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:
/// [ "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" ]
/// if the number of chars are less than eight, they will be repeated. Thus
/// an ASCII border could be specified as:
/// [ "/", "-", "\\", "|" ]
/// or all chars the same as:
/// [ "x" ]
/// An empty string can be used to turn off a specific border, for instance:
/// in a clockwise fashion starting with the top-left corner. As an
/// example, the double box style could be specified as
/// [ "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" ].
/// If the number of chars are less than eight, they will be repeated. Thus
/// an ASCII border could be specified as
/// [ "/", "-", "\\", "|" ],
/// or all chars the same as
/// [ "x" ].
/// An empty string can be used to turn off a specific border, for instance,
/// [ "", "", "", ">", "", "", "", "<" ]
/// will only make vertical borders but not horizontal ones.
/// By default `FloatBorder` highlight is used which links to `VertSplit`
/// By default, `FloatBorder` highlight is used, which links to `VertSplit`
/// when not defined. It could also be specified by character:
/// [ {"+", "MyCorner"}, {"x", "MyBorder"} ]
/// [ {"+", "MyCorner"}, {"x", "MyBorder"} ].
/// - `noautocmd`: If true then no buffer-related autocommand events such as
/// |BufEnter|, |BufLeave| or |BufWinEnter| may fire from
/// calling this function.

View File

@ -711,6 +711,49 @@ describe('float window', function()
]]}
end
meths.win_set_config(win, {border="rounded"})
if multigrid then
screen:expect{grid=[[
## grid 1
[2:----------------------------------------]|
[2:----------------------------------------]|
[2:----------------------------------------]|
[2:----------------------------------------]|
[2:----------------------------------------]|
[2:----------------------------------------]|
[3:----------------------------------------]|
## grid 2
^ |
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
## grid 3
|
## grid 5
{5:}|
{5:}{1: halloj! }{5:}|
{5:}{1: BORDAA }{5:}|
{5:}|
]], float_pos={
[5] = { { id = 1002 }, "NW", 1, 2, 5, true }
}, win_viewport={
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0};
[5] = {win = {id = 1002}, topline = 0, botline = 2, curline = 0, curcol = 0};
}}
else
screen:expect{grid=[[
^ |
{0:~ }|
{0:~ }{5:}{0: }|
{0:~ }{5:}{1: halloj! }{5:}{0: }|
{0:~ }{5:}{1: BORDAA }{5:}{0: }|
{0:~ }{5:}{0: }|
|
]]}
end
meths.win_set_config(win, {border="solid"})
if multigrid then
screen:expect{grid=[[