diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-02-11 20:56:55 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-02-11 22:40:12 +0100 |
commit | 2929dbf2233f05f58e094ce4a80fb1320ac6d336 (patch) | |
tree | 19725654d59522b5735687134483c0237ab1eaee /src/nvim/buffer.c | |
parent | 3ffeceb851b135a1eb77287af12bb6fbfaf8d175 (diff) | |
download | rneovim-2929dbf2233f05f58e094ce4a80fb1320ac6d336.tar.gz rneovim-2929dbf2233f05f58e094ce4a80fb1320ac6d336.tar.bz2 rneovim-2929dbf2233f05f58e094ce4a80fb1320ac6d336.zip |
vim-patch:8.0.0858: can exit while a terminal is still running a job
Problem: Can exit while a terminal is still running a job.
Solution: Consider a buffer with a running job like a changed file.
https://github.com/vim/vim/commit/eb44a68b42eda207a5bc4def9ea8fc4d38acb650
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r-- | src/nvim/buffer.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 8d0738dd29..0127b576c9 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -1411,7 +1411,7 @@ void set_curbuf(buf_T *buf, int action) u_sync(FALSE); close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) + && !buf_hide(prevbuf) && !bufIsChanged( prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); if (curwin != previouswin && win_valid(previouswin)) @@ -4414,11 +4414,11 @@ do_arg_all ( wp->w_arg_idx = i; if (i == opened_len && !keep_tabs) { /* close this window */ - if (P_HID(buf) || forceit || buf->b_nwindows > 1 + if (buf_hide(buf) || forceit || buf->b_nwindows > 1 || !bufIsChanged(buf)) { /* If the buffer was changed, and we would like to hide it, * try autowriting. */ - if (!P_HID(buf) && buf->b_nwindows <= 1 && bufIsChanged(buf)) { + if (!buf_hide(buf) && buf->b_nwindows <= 1 && bufIsChanged(buf)) { bufref_T bufref; set_bufref(&bufref, buf); (void)autowrite(buf, false); @@ -4433,7 +4433,7 @@ do_arg_all ( && (first_tabpage->tp_next == NULL || !had_tab)) { use_firstwin = true; } else { - win_close(wp, !P_HID(buf) && !bufIsChanged(buf)); + win_close(wp, !buf_hide(buf) && !bufIsChanged(buf)); // check if autocommands removed the next window if (!win_valid(wpnext)) { // start all over... @@ -4513,7 +4513,7 @@ do_arg_all ( } (void)do_ecmd(0, alist_name(&AARGLIST(alist)[i]), NULL, NULL, ECMD_ONE, - ((P_HID(curwin->w_buffer) + ((buf_hide(curwin->w_buffer) || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0) + ECMD_OLDBUF, curwin); if (use_firstwin) @@ -4705,13 +4705,13 @@ void ex_buffer_all(exarg_T *eap) * Close superfluous windows. */ for (wp = lastwin; open_wins > count; ) { - r = (P_HID(wp->w_buffer) || !bufIsChanged(wp->w_buffer) + r = (buf_hide(wp->w_buffer) || !bufIsChanged(wp->w_buffer) || autowrite(wp->w_buffer, FALSE) == OK); if (!win_valid(wp)) { /* BufWrite Autocommands made the window invalid, start over */ wp = lastwin; } else if (r) { - win_close(wp, !P_HID(wp->w_buffer)); + win_close(wp, !buf_hide(wp->w_buffer)); --open_wins; wp = lastwin; } else { |