mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 06:58:35 +00:00
refactor(win_close): remove "force", don't pass on "free_buf" (#21921)
Problem: The "force" flag of win_close() complicates the code and adds edge cases where it is not clear what the correct behavior should be. The "free_buf" flag of win_close() is passed on to float windows when closing the last window of a tabpage, which doesn't make much sense. Solution: Remove the "force" flag and always close float windows as if :close! is used when closing the last window of a tabpage, and set the "free_buf" flag for a float window based on whether its buffer can be freed. As 'hidden' is on by default, this change shouldn't affect many people.
This commit is contained in:
@@ -1723,7 +1723,7 @@ static void edit_buffers(mparm_T *parmp, char *cwd)
|
||||
|
||||
// When w_arg_idx is -1 remove the window (see create_windows()).
|
||||
if (curwin->w_arg_idx == -1) {
|
||||
win_close(curwin, true, false);
|
||||
win_close(curwin, true);
|
||||
advance = false;
|
||||
}
|
||||
|
||||
@@ -1735,7 +1735,7 @@ static void edit_buffers(mparm_T *parmp, char *cwd)
|
||||
// When w_arg_idx is -1 remove the window (see create_windows()).
|
||||
if (curwin->w_arg_idx == -1) {
|
||||
arg_idx++;
|
||||
win_close(curwin, true, false);
|
||||
win_close(curwin, true);
|
||||
advance = false;
|
||||
continue;
|
||||
}
|
||||
@@ -1782,7 +1782,7 @@ static void edit_buffers(mparm_T *parmp, char *cwd)
|
||||
did_emsg = false; // avoid hit-enter prompt
|
||||
getout(1);
|
||||
}
|
||||
win_close(curwin, true, false);
|
||||
win_close(curwin, true);
|
||||
advance = false;
|
||||
}
|
||||
if (arg_idx == GARGCOUNT - 1) {
|
||||
|
Reference in New Issue
Block a user