mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:7.4.646 #2926
Problem: ":bufdo" may start at a deleted buffer. Solution: Find the first not deleted buffer. (Shane Harper) https://github.com/vim/vim/commit/v7-4-646
This commit is contained in:
parent
1b78ad1c4d
commit
e949c2bd62
@ -1862,20 +1862,30 @@ void ex_listdo(exarg_T *eap)
|
||||
case CMD_argdo:
|
||||
i = eap->line1 - 1;
|
||||
break;
|
||||
case CMD_bufdo:
|
||||
i = eap->line1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
buf_T *buf = curbuf;
|
||||
/* set pcmark now */
|
||||
if (eap->cmdidx == CMD_bufdo)
|
||||
goto_buffer(eap, DOBUF_FIRST, FORWARD, i);
|
||||
else
|
||||
if (eap->cmdidx == CMD_bufdo) {
|
||||
/* Advance to the first listed buffer after "eap->line1". */
|
||||
for (buf = firstbuf;
|
||||
buf != NULL && (buf->b_fnum < eap->line1 || !buf->b_p_bl);
|
||||
buf = buf->b_next) {
|
||||
if (buf->b_fnum > eap->line2) {
|
||||
buf = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (buf != NULL) {
|
||||
goto_buffer(eap, DOBUF_FIRST, FORWARD, buf->b_fnum);
|
||||
}
|
||||
} else {
|
||||
setpcmark();
|
||||
}
|
||||
listcmd_busy = TRUE; /* avoids setting pcmark below */
|
||||
|
||||
while (!got_int) {
|
||||
while (!got_int && buf != NULL) {
|
||||
if (eap->cmdidx == CMD_argdo) {
|
||||
/* go to argument "i" */
|
||||
if (i == ARGCOUNT)
|
||||
|
@ -141,6 +141,7 @@ STARTTEST
|
||||
:let buffers = ''
|
||||
:.,$-bufdo let buffers .= ' '.bufnr('%')
|
||||
:call add(g:lines, 'bufdo:' . buffers)
|
||||
:3bd
|
||||
:let buffers = ''
|
||||
:3,7bufdo let buffers .= ' '.bufnr('%')
|
||||
:call add(g:lines, 'bufdo:' . buffers)
|
||||
|
@ -34,5 +34,5 @@ aaa: 0 bbb: 0 ccc: 0
|
||||
argdo: c d e
|
||||
windo: 2 3 4
|
||||
bufdo: 2 3 4 5 6 7 8 9 10 15
|
||||
bufdo: 3 4 5 6 7
|
||||
bufdo: 4 5 6 7
|
||||
tabdo: 2 3 4
|
||||
|
@ -163,7 +163,7 @@ static int included_patches[] = {
|
||||
//649,
|
||||
//648 NA
|
||||
//647 NA
|
||||
//646,
|
||||
646,
|
||||
//645,
|
||||
//644 NA
|
||||
//643,
|
||||
|
Loading…
Reference in New Issue
Block a user