feat(float): add fclose command

This commit is contained in:
glepnir
2023-10-09 18:47:10 +08:00
parent 9abced6ad9
commit 372aa2eb3d
7 changed files with 226 additions and 0 deletions

View File

@@ -7658,3 +7658,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);
}