mirror of
https://github.com/neovim/neovim.git
synced 2025-10-09 11:26:37 +00:00
Merge pull request #25561 from glepnir/9663
feat(float): add fclose command
This commit is contained in:
@@ -1044,6 +1044,12 @@ module.cmds = {
|
||||
addr_type='ADDR_NONE',
|
||||
func='ex_function',
|
||||
},
|
||||
{
|
||||
command='fclose',
|
||||
flags=bit.bor(BANG, RANGE),
|
||||
addr_type='ADDR_OTHER',
|
||||
func='ex_floatclose',
|
||||
},
|
||||
{
|
||||
command='global',
|
||||
flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN, LOCK_OK),
|
||||
|
@@ -7354,6 +7354,12 @@ static void ex_terminal(exarg_T *eap)
|
||||
do_cmdline_cmd(ex_cmd);
|
||||
}
|
||||
|
||||
/// ":fclose"
|
||||
static void ex_floatclose(exarg_T *eap)
|
||||
{
|
||||
win_float_remove(eap->forceit, eap->line1);
|
||||
}
|
||||
|
||||
void verify_command(char *cmd)
|
||||
{
|
||||
if (strcmp("smile", cmd) != 0) {
|
||||
|
@@ -7656,3 +7656,29 @@ win_T *lastwin_nofloating(void)
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
static int floating_zindex_compare(const void *a, const void *b)
|
||||
{
|
||||
return (*(win_T **)b)->w_float_config.zindex - (*(win_T **)a)->w_float_config.zindex;
|
||||
}
|
||||
|
||||
void win_float_remove(bool bang, int count)
|
||||
{
|
||||
kvec_t(win_T *) float_win_arr = KV_INITIAL_VALUE;
|
||||
for (win_T *wp = lastwin; wp && wp->w_floating; wp = wp->w_prev) {
|
||||
kv_push(float_win_arr, wp);
|
||||
}
|
||||
qsort(float_win_arr.items, float_win_arr.size, sizeof(win_T *), floating_zindex_compare);
|
||||
for (size_t i = 0; i < float_win_arr.size; i++) {
|
||||
if (win_close(float_win_arr.items[i], false, false) == FAIL) {
|
||||
break;
|
||||
}
|
||||
if (!bang) {
|
||||
count--;
|
||||
if (count == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
kv_destroy(float_win_arr);
|
||||
}
|
||||
|
Reference in New Issue
Block a user