forked from aniani/vim
updated for version 7.4.535
Problem: Can't build with tiny features. Solution: Add #ifdefs and skip a test.
This commit is contained in:
156
src/ex_docmd.c
156
src/ex_docmd.c
@@ -1713,6 +1713,53 @@ compute_buffer_local_count(addr_type, lnum, offset)
|
|||||||
return buf->b_fnum;
|
return buf->b_fnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEAT_WINDOWS
|
||||||
|
static int current_win_nr __ARGS((win_T *win));
|
||||||
|
static int current_tab_nr __ARGS((tabpage_T *tab));
|
||||||
|
|
||||||
|
static int
|
||||||
|
current_win_nr(win)
|
||||||
|
win_T *win;
|
||||||
|
{
|
||||||
|
win_T *wp;
|
||||||
|
int nr = 0;
|
||||||
|
|
||||||
|
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
||||||
|
{
|
||||||
|
++nr;
|
||||||
|
if (wp == win)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return nr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
current_tab_nr(tab)
|
||||||
|
tabpage_T *tab;
|
||||||
|
{
|
||||||
|
tabpage_T *tp;
|
||||||
|
int nr = 0;
|
||||||
|
|
||||||
|
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
||||||
|
{
|
||||||
|
++nr;
|
||||||
|
if (tp == tab)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return nr;
|
||||||
|
}
|
||||||
|
|
||||||
|
# define CURRENT_WIN_NR current_win_nr(curwin)
|
||||||
|
# define LAST_WIN_NR current_win_nr(NULL)
|
||||||
|
# define CURRENT_TAB_NR current_tab_nr(curtab)
|
||||||
|
# define LAST_TAB_NR current_tab_nr(NULL)
|
||||||
|
#else
|
||||||
|
# define CURRENT_WIN_NR 1
|
||||||
|
# define LAST_WIN_NR 1
|
||||||
|
# define CURRENT_TAB_NR 1
|
||||||
|
# define LAST_TAB_NR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute one Ex command.
|
* Execute one Ex command.
|
||||||
@@ -1765,8 +1812,6 @@ do_one_cmd(cmdlinep, sourcing,
|
|||||||
#endif
|
#endif
|
||||||
cmdmod_T save_cmdmod;
|
cmdmod_T save_cmdmod;
|
||||||
int ni; /* set when Not Implemented */
|
int ni; /* set when Not Implemented */
|
||||||
win_T *wp;
|
|
||||||
tabpage_T *tp;
|
|
||||||
char_u *cmd;
|
char_u *cmd;
|
||||||
|
|
||||||
vim_memset(&ea, 0, sizeof(ea));
|
vim_memset(&ea, 0, sizeof(ea));
|
||||||
@@ -2085,13 +2130,7 @@ do_one_cmd(cmdlinep, sourcing,
|
|||||||
ea.line2 = curwin->w_cursor.lnum;
|
ea.line2 = curwin->w_cursor.lnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_WINDOWS:
|
case ADDR_WINDOWS:
|
||||||
lnum = 0;
|
lnum = CURRENT_WIN_NR;
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (wp == curwin)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ea.line2 = lnum;
|
ea.line2 = lnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_ARGUMENTS:
|
case ADDR_ARGUMENTS:
|
||||||
@@ -2102,13 +2141,7 @@ do_one_cmd(cmdlinep, sourcing,
|
|||||||
ea.line2 = curbuf->b_fnum;
|
ea.line2 = curbuf->b_fnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_TABS:
|
case ADDR_TABS:
|
||||||
lnum = 0;
|
lnum = CURRENT_TAB_NR;
|
||||||
for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (tp == curtab)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ea.line2 = lnum;
|
ea.line2 = lnum;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -4198,8 +4231,6 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
pos_T pos;
|
pos_T pos;
|
||||||
pos_T *fp;
|
pos_T *fp;
|
||||||
linenr_T lnum;
|
linenr_T lnum;
|
||||||
win_T *wp;
|
|
||||||
tabpage_T *tp;
|
|
||||||
|
|
||||||
cmd = skipwhite(*ptr);
|
cmd = skipwhite(*ptr);
|
||||||
lnum = MAXLNUM;
|
lnum = MAXLNUM;
|
||||||
@@ -4215,13 +4246,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = curwin->w_cursor.lnum;
|
lnum = curwin->w_cursor.lnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_WINDOWS:
|
case ADDR_WINDOWS:
|
||||||
lnum = 0;
|
lnum = CURRENT_WIN_NR;
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (wp == curwin)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ADDR_ARGUMENTS:
|
case ADDR_ARGUMENTS:
|
||||||
lnum = curwin->w_arg_idx + 1;
|
lnum = curwin->w_arg_idx + 1;
|
||||||
@@ -4231,13 +4256,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = curbuf->b_fnum;
|
lnum = curbuf->b_fnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_TABS:
|
case ADDR_TABS:
|
||||||
lnum = 0;
|
lnum = CURRENT_TAB_NR;
|
||||||
for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (tp == curtab)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -4250,9 +4269,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = curbuf->b_ml.ml_line_count;
|
lnum = curbuf->b_ml.ml_line_count;
|
||||||
break;
|
break;
|
||||||
case ADDR_WINDOWS:
|
case ADDR_WINDOWS:
|
||||||
lnum = 0;
|
lnum = LAST_WIN_NR;
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
|
||||||
lnum++;
|
|
||||||
break;
|
break;
|
||||||
case ADDR_ARGUMENTS:
|
case ADDR_ARGUMENTS:
|
||||||
lnum = ARGCOUNT;
|
lnum = ARGCOUNT;
|
||||||
@@ -4262,9 +4279,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = lastbuf->b_fnum;
|
lnum = lastbuf->b_fnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_TABS:
|
case ADDR_TABS:
|
||||||
lnum = 0;
|
lnum = LAST_TAB_NR;
|
||||||
for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
|
||||||
lnum++;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -4419,16 +4434,11 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
switch (addr_type)
|
switch (addr_type)
|
||||||
{
|
{
|
||||||
case ADDR_LINES:
|
case ADDR_LINES:
|
||||||
lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */
|
/* "+1" is same as ".+1" */
|
||||||
|
lnum = curwin->w_cursor.lnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_WINDOWS:
|
case ADDR_WINDOWS:
|
||||||
lnum = 0;
|
lnum = CURRENT_WIN_NR;
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (wp == curwin)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ADDR_ARGUMENTS:
|
case ADDR_ARGUMENTS:
|
||||||
lnum = curwin->w_arg_idx + 1;
|
lnum = curwin->w_arg_idx + 1;
|
||||||
@@ -4438,13 +4448,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = curbuf->b_fnum;
|
lnum = curbuf->b_fnum;
|
||||||
break;
|
break;
|
||||||
case ADDR_TABS:
|
case ADDR_TABS:
|
||||||
lnum = 0;
|
lnum = CURRENT_TAB_NR;
|
||||||
for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
|
||||||
{
|
|
||||||
lnum++;
|
|
||||||
if (tp == curtab)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4481,9 +4485,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = 0;
|
lnum = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
c = 0;
|
c = LAST_TAB_NR;
|
||||||
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
|
|
||||||
c++;
|
|
||||||
if (lnum >= c)
|
if (lnum >= c)
|
||||||
lnum = c;
|
lnum = c;
|
||||||
break;
|
break;
|
||||||
@@ -4493,9 +4495,7 @@ get_address(ptr, addr_type, skip, to_other_file)
|
|||||||
lnum = 0;
|
lnum = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
c = 0;
|
c = LAST_WIN_NR;
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
|
||||||
c++;
|
|
||||||
if (lnum > c)
|
if (lnum > c)
|
||||||
lnum = c;
|
lnum = c;
|
||||||
break;
|
break;
|
||||||
@@ -6805,15 +6805,15 @@ not_exiting()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ":quit": quit current window, quit Vim if closed the last window.
|
* ":quit": quit current window, quit Vim if the last window is closed.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
ex_quit(eap)
|
ex_quit(eap)
|
||||||
exarg_T *eap;
|
exarg_T *eap;
|
||||||
{
|
{
|
||||||
|
#if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD)
|
||||||
win_T *wp;
|
win_T *wp;
|
||||||
buf_T *buf;
|
#endif
|
||||||
int wnr;
|
|
||||||
|
|
||||||
#ifdef FEAT_CMDWIN
|
#ifdef FEAT_CMDWIN
|
||||||
if (cmdwin_type != 0)
|
if (cmdwin_type != 0)
|
||||||
@@ -6828,28 +6828,27 @@ ex_quit(eap)
|
|||||||
text_locked_msg();
|
text_locked_msg();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#ifdef FEAT_WINDOWS
|
||||||
if (eap->addr_count > 0)
|
if (eap->addr_count > 0)
|
||||||
{
|
{
|
||||||
wnr = eap->line2;
|
int wnr = eap->line2;
|
||||||
for (wp = firstwin; --wnr > 0; )
|
|
||||||
{
|
for (wp = firstwin; wp->w_next != NULL; wp = wp->w_next)
|
||||||
if (wp->w_next == NULL)
|
if (--wnr <= 0)
|
||||||
break;
|
break;
|
||||||
else
|
|
||||||
wp = wp->w_next;
|
|
||||||
}
|
|
||||||
buf = wp->w_buffer;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
#endif
|
||||||
|
#if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD)
|
||||||
wp = curwin;
|
wp = curwin;
|
||||||
buf = curbuf;
|
#endif
|
||||||
}
|
|
||||||
#ifdef FEAT_AUTOCMD
|
#ifdef FEAT_AUTOCMD
|
||||||
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
|
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
|
||||||
/* Refuse to quit when locked or when the buffer in the last window is
|
/* Refuse to quit when locked or when the buffer in the last window is
|
||||||
* being closed (can only happen in autocommands). */
|
* being closed (can only happen in autocommands). */
|
||||||
if (curbuf_locked() || (buf->b_nwindows == 1 && buf->b_closing))
|
if (curbuf_locked() || (wp->w_buffer->b_nwindows == 1
|
||||||
|
&& wp->w_buffer->b_closing))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -7214,9 +7213,6 @@ ex_all(eap)
|
|||||||
ex_hide(eap)
|
ex_hide(eap)
|
||||||
exarg_T *eap;
|
exarg_T *eap;
|
||||||
{
|
{
|
||||||
win_T *win;
|
|
||||||
int winnr = 0;
|
|
||||||
|
|
||||||
if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL)
|
if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL)
|
||||||
eap->errmsg = e_invarg;
|
eap->errmsg = e_invarg;
|
||||||
else
|
else
|
||||||
@@ -7231,7 +7227,11 @@ ex_hide(eap)
|
|||||||
# endif
|
# endif
|
||||||
if (eap->addr_count == 0)
|
if (eap->addr_count == 0)
|
||||||
win_close(curwin, FALSE); /* don't free buffer */
|
win_close(curwin, FALSE); /* don't free buffer */
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
|
int winnr = 0;
|
||||||
|
win_T *win;
|
||||||
|
|
||||||
for (win = firstwin; win != NULL; win = win->w_next)
|
for (win = firstwin; win != NULL; win = win->w_next)
|
||||||
{
|
{
|
||||||
winnr++;
|
winnr++;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
Tests for :[count]argument! and :[count]argdelete vim: set ft=vim :
|
Tests for :[count]argument! and :[count]argdelete vim: set ft=vim :
|
||||||
|
|
||||||
STARTTEST
|
STARTTEST
|
||||||
|
:so small.vim
|
||||||
:%argd
|
:%argd
|
||||||
:argadd a b c d
|
:argadd a b c d
|
||||||
:set hidden
|
:set hidden
|
||||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
535,
|
||||||
/**/
|
/**/
|
||||||
534,
|
534,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user