diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2018-02-12 02:59:29 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-02-12 02:59:29 +0100 | 
| commit | 9e9e4431c122f3b98fb0e7498b6572ceac0bca53 (patch) | |
| tree | a28f207390cdbbd27a468537e9065f3b8bfa1cbd /src/nvim/buffer.c | |
| parent | 418947fcb34c46af895994ef9ba10a85d2d4c6c2 (diff) | |
| parent | 7da4d1561bd29615257a3f61073b5cf39f1f7463 (diff) | |
| download | rneovim-9e9e4431c122f3b98fb0e7498b6572ceac0bca53.tar.gz rneovim-9e9e4431c122f3b98fb0e7498b6572ceac0bca53.tar.bz2 rneovim-9e9e4431c122f3b98fb0e7498b6572ceac0bca53.zip  | |
Merge #8001 from justinmk/vimpatches
Diffstat (limited to 'src/nvim/buffer.c')
| -rw-r--r-- | src/nvim/buffer.c | 55 | 
1 files changed, 30 insertions, 25 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 8d0738dd29..3958fb05e9 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -1407,16 +1407,20 @@ void set_curbuf(buf_T *buf, int action)      }      if (bufref_valid(&prevbufref) && !aborting()) {        win_T  *previouswin = curwin; -      if (prevbuf == curbuf) -        u_sync(FALSE); -      close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, -          unload ? action : (action == DOBUF_GOTO -                             && !P_HID(prevbuf) -                             && !bufIsChanged( -                                 prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); -      if (curwin != previouswin && win_valid(previouswin)) -        /* autocommands changed curwin, Grr! */ +      if (prevbuf == curbuf) { +        u_sync(false); +      } +      close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, +                   prevbuf, +                   unload +                   ? action +                   : (action == DOBUF_GOTO && !buf_hide(prevbuf) +                      && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, +                   false); +      if (curwin != previouswin && win_valid(previouswin)) { +        // autocommands changed curwin, Grr!          curwin = previouswin; +      }      }    }    /* An autocommand may have deleted "buf", already entered it (e.g., when @@ -4413,12 +4417,12 @@ 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 (i == opened_len && !keep_tabs) {    // close this window +        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 +4437,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... @@ -4511,14 +4515,15 @@ do_arg_all (          new_curwin = curwin;          new_curtab = curtab;        } -      (void)do_ecmd(0, alist_name(&AARGLIST(alist)[i]), NULL, NULL, -          ECMD_ONE, -          ((P_HID(curwin->w_buffer) -            || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0) -          + ECMD_OLDBUF, curwin); -      if (use_firstwin) -        ++autocmd_no_leave; -      use_firstwin = FALSE; +      (void)do_ecmd(0, alist_name(&AARGLIST(alist)[i]), NULL, NULL, ECMD_ONE, +                    ((buf_hide(curwin->w_buffer) +                      || bufIsChanged(curwin->w_buffer)) +                     ? ECMD_HIDE : 0) + ECMD_OLDBUF, +                    curwin); +      if (use_firstwin) { +        autocmd_no_leave++; +      } +      use_firstwin = false;      }      os_breakcheck(); @@ -4705,14 +4710,14 @@ 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) -         || autowrite(wp->w_buffer, FALSE) == OK); +    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)); -      --open_wins; +      win_close(wp, !buf_hide(wp->w_buffer)); +      open_wins--;        wp = lastwin;      } else {        wp = wp->w_prev;  | 
