diff options
author | Daniel Steinberg <dstein64@users.noreply.github.com> | 2022-05-22 12:03:56 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-22 09:03:56 -0700 |
commit | 3fe6bf3a1e50299dbdd6314afbb18e468eb7ce08 (patch) | |
tree | a815a4105c547262faa2218e89bf410478c4ec34 /src/nvim/ex_session.c | |
parent | b863c150c91a3621cdeb2efae54a4f0fe3328c09 (diff) | |
download | rneovim-3fe6bf3a1e50299dbdd6314afbb18e468eb7ce08.tar.gz rneovim-3fe6bf3a1e50299dbdd6314afbb18e468eb7ce08.tar.bz2 rneovim-3fe6bf3a1e50299dbdd6314afbb18e468eb7ce08.zip |
fix(mksession): don't store floats in session #18635
Problem:
If there are floating windows when `:mksession` runs, the session cannot
be properly restored.
Solution:
Change `:mksession` to skip floating windows. This matches Vim's
treatment of popup windows.
An alternative approach could have `:mksession` save floating windows
that can be _properly_ restored (rather than skip them entirely, which
is what this PR does). While that would seemingly be a more complete
fix, that could present additional issues since floating windows are
ordinarily created by plugins, and they may no longer be properly under
a plugin's control when restored.
closes #18432
Diffstat (limited to 'src/nvim/ex_session.c')
-rw-r--r-- | src/nvim/ex_session.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/nvim/ex_session.c b/src/nvim/ex_session.c index dfdb8c1eac..3b6f7b90bf 100644 --- a/src/nvim/ex_session.c +++ b/src/nvim/ex_session.c @@ -181,6 +181,10 @@ static bool ses_do_frame(const frame_T *fr) /// @return non-zero if window "wp" is to be stored in the Session. static int ses_do_win(win_T *wp) { + // Skip floating windows to avoid issues when restoring the Session. #18432 + if (wp->w_floating) { + return false; + } if (wp->w_buffer->b_fname == NULL // When 'buftype' is "nofile" can't restore the window contents. || (!wp->w_buffer->terminal && bt_nofile(wp->w_buffer))) { |