diff options
author | Evgeni Chasnovski <evgeni.chasnovski@gmail.com> | 2025-02-23 19:08:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-23 09:08:16 -0800 |
commit | 07c5f41da3ad5a609e74da47685f430fcc4896fe (patch) | |
tree | 742ba44ecd124a2bb732146af3592bcab377e91b | |
parent | 6bc79790449f8bbf238b740bf6eb33cea88e4295 (diff) | |
download | rneovim-07c5f41da3ad5a609e74da47685f430fcc4896fe.tar.gz rneovim-07c5f41da3ad5a609e74da47685f430fcc4896fe.tar.bz2 rneovim-07c5f41da3ad5a609e74da47685f430fcc4896fe.zip |
fix(float): can set title/footer without setting border #32594
Problem: setting title and/or footer without explicitly setting border
shows "title/footer/ requires border to be set" error.
At the same time, explicitly setting `border = "none"` (which is
default) shows expected no-border-no-title-no-footer window without
error.
Solution: allow setting title/footer without explicitly setting border.
-rw-r--r-- | src/nvim/api/win_config.c | 10 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 51 |
2 files changed, 43 insertions, 18 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c index 1132452faf..527689b17c 100644 --- a/src/nvim/api/win_config.c +++ b/src/nvim/api/win_config.c @@ -1240,11 +1240,6 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco api_set_error(err, kErrorTypeValidation, "non-float cannot have 'title'"); goto fail; } - // title only work with border - if (!HAS_KEY_X(config, border) && !fconfig->border) { - api_set_error(err, kErrorTypeException, "title requires border to be set"); - goto fail; - } parse_bordertext(config->title, kBorderTextTitle, fconfig, err); if (ERROR_SET(err)) { @@ -1267,11 +1262,6 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco api_set_error(err, kErrorTypeValidation, "non-float cannot have 'footer'"); goto fail; } - // footer only work with border - if (!HAS_KEY_X(config, border) && !fconfig->border) { - api_set_error(err, kErrorTypeException, "footer requires border to be set"); - goto fail; - } parse_bordertext(config->footer, kBorderTextFooter, fconfig, err); if (ERROR_SET(err)) { diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index 088692c055..8155559d66 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -2078,10 +2078,6 @@ describe('float window', function() it('validates title title_pos', function() local buf = api.nvim_create_buf(false,false) - eq("title requires border to be set", - pcall_err(api.nvim_open_win,buf, false, { - relative='editor', width=9, height=2, row=2, col=5, title='Title', - })) eq("title_pos requires title to be set", pcall_err(api.nvim_open_win,buf, false, { relative='editor', width=9, height=2, row=2, col=5, @@ -2112,10 +2108,6 @@ describe('float window', function() it('validates footer footer_pos', function() local buf = api.nvim_create_buf(false,false) - eq("footer requires border to be set", - pcall_err(api.nvim_open_win,buf, false, { - relative='editor', width=9, height=2, row=2, col=5, footer='Footer', - })) eq("footer_pos requires footer to be set", pcall_err(api.nvim_open_win,buf, false, { relative='editor', width=9, height=2, row=2, col=5, @@ -2190,6 +2182,49 @@ describe('float window', function() assert_alive() end) + it('no border with title and footer', function() + local buf = api.nvim_create_buf(false, false) + api.nvim_buf_set_lines(buf, 0, -1, true, { 'Hello' }) + api.nvim_open_win(buf, false, { + relative='editor', width=9, height=2, row=2, col=5, + title = 'Title', footer = 'Footer' + }) + + if multigrid then + screen:expect({ + grid = [[ + ## grid 1 + [2:----------------------------------------]|*6 + [3:----------------------------------------]| + ## grid 2 + ^ | + {0:~ }|*5 + ## grid 3 + | + ## grid 4 + {1:Hello }| + {2:~ }| + ]], + float_pos = { + [4] = { 1001, "NW", 1, 2, 5, true, 50 }, + }, + win_viewport = { + [2] = { win = 1000, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1, sum_scroll_delta = 0 }, + [4] = { win = 1001, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1, sum_scroll_delta = 0 }, + }, + }) + else + screen:expect([[ + ^ | + {0:~ }| + {0:~ }{1:Hello }{0: }| + {0:~ }{2:~ }{0: }| + {0:~ }|*2 + | + ]]) + end + end) + it('border with title', function() local buf = api.nvim_create_buf(false, false) api.nvim_buf_set_lines(buf, 0, -1, true, {' halloj! ', |