refactor(float): rename ex_floatclose to ex_fclose (#25596)

This commit is contained in:
Raphael 2023-10-11 15:03:59 +08:00 committed by GitHub
parent 4eea60939f
commit f79052faef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 117 additions and 47 deletions

View File

@ -394,8 +394,8 @@ CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
*:fc* *:fclose* *:fc* *:fclose*
:[count]fc[lose][!] :[count]fc[lose][!]
Close [count]th floating window by zindex order. '!' to close Close [count] floating windows with the highest zindex values.
all floating windows. '!' to close all floating windows.
============================================================================== ==============================================================================
4. Moving cursor to other windows *window-move-cursor* 4. Moving cursor to other windows *window-move-cursor*

View File

@ -1048,7 +1048,7 @@ module.cmds = {
command='fclose', command='fclose',
flags=bit.bor(BANG, RANGE), flags=bit.bor(BANG, RANGE),
addr_type='ADDR_OTHER', addr_type='ADDR_OTHER',
func='ex_floatclose', func='ex_fclose',
}, },
{ {
command='global', command='global',

View File

@ -7355,7 +7355,7 @@ static void ex_terminal(exarg_T *eap)
} }
/// ":fclose" /// ":fclose"
static void ex_floatclose(exarg_T *eap) static void ex_fclose(exarg_T *eap)
{ {
win_float_remove(eap->forceit, eap->line1); win_float_remove(eap->forceit, eap->line1);
} }

View File

@ -7657,7 +7657,7 @@ win_T *lastwin_nofloating(void)
return res; return res;
} }
static int floating_zindex_compare(const void *a, const void *b) static int float_zindex_cmp(const void *a, const void *b)
{ {
return (*(win_T **)b)->w_float_config.zindex - (*(win_T **)a)->w_float_config.zindex; return (*(win_T **)b)->w_float_config.zindex - (*(win_T **)a)->w_float_config.zindex;
} }
@ -7668,7 +7668,7 @@ void win_float_remove(bool bang, int count)
for (win_T *wp = lastwin; wp && wp->w_floating; wp = wp->w_prev) { for (win_T *wp = lastwin; wp && wp->w_floating; wp = wp->w_prev) {
kv_push(float_win_arr, wp); kv_push(float_win_arr, wp);
} }
qsort(float_win_arr.items, float_win_arr.size, sizeof(win_T *), floating_zindex_compare); qsort(float_win_arr.items, float_win_arr.size, sizeof(win_T *), float_zindex_cmp);
for (size_t i = 0; i < float_win_arr.size; i++) { for (size_t i = 0; i < float_win_arr.size; i++) {
if (win_close(float_win_arr.items[i], false, false) == FAIL) { if (win_close(float_win_arr.items[i], false, false) == FAIL) {
break; break;

View File

@ -10928,26 +10928,96 @@ describe('float window', function()
end end
end) end)
it('fclose command #9663', function() it(':fclose command #9663', function()
local bufA = meths.create_buf(false,false) local buf_a = meths.create_buf(false,false)
local bufB = meths.create_buf(false,false) local buf_b = meths.create_buf(false,false)
local bufC = meths.create_buf(false,false) local buf_c = meths.create_buf(false,false)
local bufD = meths.create_buf(false,false) local buf_d = meths.create_buf(false,false)
local config_A = {relative='editor', width=11, height=11, row=5, col=5, border ='single', zindex=50} local config_a = {relative='editor', width=11, height=11, row=5, col=5, border ='single', zindex=50}
local config_B = {relative='editor', width=8, height=8, row=7, col=7, border ='single', zindex=70} local config_b = {relative='editor', width=8, height=8, row=7, col=7, border ='single', zindex=70}
local config_C = {relative='editor', width=4, height=4, row=9, col=9, border ='single',zindex=90} local config_c = {relative='editor', width=4, height=4, row=9, col=9, border ='single',zindex=90}
local config_D = {relative='editor', width=2, height=2, row=10, col=10, border ='single',zindex=100} local config_d = {relative='editor', width=2, height=2, row=10, col=10, border ='single',zindex=100}
meths.open_win(bufA, false, config_A) meths.open_win(buf_a, false, config_a)
meths.open_win(bufB, false, config_B) meths.open_win(buf_b, false, config_b)
meths.open_win(bufC, false, config_C) meths.open_win(buf_c, false, config_c)
meths.open_win(bufD, false, config_D) meths.open_win(buf_d, false, config_d)
--close window which have higher zindex value
command('fclose')
local expected_pos = { local expected_pos = {
[4]={{id=1001}, 'NW', 1, 5, 5, true, 50}, [4]={{id=1001}, 'NW', 1, 5, 5, true, 50},
[5]={{id=1002}, 'NW', 1, 7, 7, true, 70}, [5]={{id=1002}, 'NW', 1, 7, 7, true, 70},
[6]={{id=1003}, 'NW', 1, 9, 9, true, 90}, [6]={{id=1003}, 'NW', 1, 9, 9, true, 90},
[7]={{id=1004}, 'NW', 1, 10, 10, true, 100},
} }
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 4
{5:}|
{5:}{1: }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}|
## grid 5
{5:}|
{5:}{1: }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}|
## grid 6
{5:}|
{5:}{1: }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}{2:~ }{5:}|
{5:}|
## grid 7
{5:}|
{5:}{1: }{5:}|
{5:}{2:~ }{5:}|
{5:}|
]], float_pos=expected_pos}
else
screen:expect([[
^ {5:} |
{0:~ }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{1: }{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2: }{5:}{0: }|
|
]])
end
-- close the window with the highest zindex value
command('fclose')
expected_pos[7] = nil
if multigrid then if multigrid then
screen:expect{grid=[[ screen:expect{grid=[[
## grid 1 ## grid 1
@ -11000,21 +11070,21 @@ describe('float window', function()
{5:}{2:~ }{5:}| {5:}{2:~ }{5:}|
{5:}{2:~ }{5:}| {5:}{2:~ }{5:}|
{5:}| {5:}|
]],float_pos= expected_pos} ]], float_pos=expected_pos}
else else
screen:expect([[ screen:expect([[
^ {5:} | ^ {5:} |
{0:~ }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{0: }| {0:~ }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{1: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~}{5:}{2:~ }{5:}{2: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~}{5:}{2: }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~}{5:}{2: }{5:}{0: }|
| |
]]) ]])
end end
-- with range -- with range
command('1fclose') command('1fclose')
expected_pos[6]=nil expected_pos[6] = nil
if multigrid then if multigrid then
screen:expect{grid=[[ screen:expect{grid=[[
## grid 1 ## grid 1
@ -11060,19 +11130,19 @@ describe('float window', function()
{5:}{2:~ }{5:}| {5:}{2:~ }{5:}|
{5:}{2:~ }{5:}| {5:}{2:~ }{5:}|
{5:}| {5:}|
]],float_pos= expected_pos} ]], float_pos=expected_pos}
else else
screen:expect([[ screen:expect([[
^ {5:} | ^ {5:} |
{0:~ }{5:}{1: }{5:}{1: }{5:}{0: }| {0:~ }{5:}{1: }{5:}{1: }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }|
{0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }| {0:~ }{5:}{2:~}{5:}{2:~ }{5:}{0: }|
| |
]]) ]])
end end
--with bang -- with bang
command('fclose!') command('fclose!')
if multigrid then if multigrid then
screen:expect{grid=[[ screen:expect{grid=[[
@ -11094,16 +11164,16 @@ describe('float window', function()
## grid 3 ## grid 3
| |
]],float_pos= {}} ]], float_pos={}}
else else
screen:expect([[ screen:expect([[
^ | ^ |
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
| |
]]) ]])
end end
end) end)