vim-patch:7.4.535

Patch 7.4.535 (after 7.4.530)
Problem:    Can't build with tiny features.
Solution:   Add #ifdefs and skip a test.

https://code.google.com/p/vim/source/detail?name=v7-4-535

This is also a refactor of some code in 7.4.530.
This commit is contained in:
Felipe Morales
2015-01-15 17:48:14 -03:00
parent 86330fdd3f
commit f6c55022ff

View File

@@ -1092,6 +1092,35 @@ static int compute_buffer_local_count(int addr_type, int lnum, int offset)
return buf->b_fnum; return buf->b_fnum;
} }
static int current_win_nr(win_T *win)
{
int nr = 0;
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
++nr;
if (wp == win)
break;
}
return nr;
}
static int current_tab_nr(tabpage_T *tab)
{
int nr = 0;
FOR_ALL_TABS(tp) {
++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)
/* /*
* Execute one Ex command. * Execute one Ex command.
* *
@@ -1128,8 +1157,6 @@ static char_u * do_one_cmd(char_u **cmdlinep,
int did_sandbox = FALSE; int did_sandbox = FALSE;
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;
memset(&ea, 0, sizeof(ea)); memset(&ea, 0, sizeof(ea));
@@ -1393,12 +1420,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
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:
@@ -1409,12 +1431,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
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;
} }
@@ -3206,8 +3223,6 @@ static linenr_T get_address(char_u **ptr,
pos_T pos; pos_T pos;
pos_T *fp; pos_T *fp;
linenr_T lnum; linenr_T lnum;
win_T *wp;
tabpage_T *tp;
buf_T *buf; buf_T *buf;
cmd = skipwhite(*ptr); cmd = skipwhite(*ptr);
@@ -3221,12 +3236,7 @@ static linenr_T get_address(char_u **ptr,
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;
@@ -3234,11 +3244,9 @@ static linenr_T get_address(char_u **ptr,
case ADDR_LOADED_BUFFERS: case ADDR_LOADED_BUFFERS:
case ADDR_UNLOADED_BUFFERS: case ADDR_UNLOADED_BUFFERS:
lnum = curbuf->b_fnum; lnum = curbuf->b_fnum;
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) { break;
lnum++; case ADDR_TABS:
if (tp == curtab) lnum = CURRENT_TAB_NR;
break;
}
break; break;
} }
break; break;
@@ -3250,10 +3258,7 @@ static linenr_T get_address(char_u **ptr,
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;
@@ -3272,10 +3277,7 @@ static linenr_T get_address(char_u **ptr,
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;
@@ -3404,12 +3406,7 @@ static linenr_T get_address(char_u **ptr,
lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */ lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */
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;
@@ -3419,12 +3416,7 @@ static linenr_T get_address(char_u **ptr,
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;
} }
} }
@@ -3459,9 +3451,7 @@ static linenr_T get_address(char_u **ptr,
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;
@@ -3470,9 +3460,7 @@ static linenr_T get_address(char_u **ptr,
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;
@@ -5328,7 +5316,7 @@ void not_exiting(void)
} }
/* /*
* ":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 ex_quit(exarg_T *eap) static void ex_quit(exarg_T *eap)
{ {
@@ -5343,27 +5331,23 @@ static void ex_quit(exarg_T *eap)
} }
win_T *wp; win_T *wp;
buf_T *buf;
int wnr;
if (eap->addr_count > 0) { if (eap->addr_count > 0) {
wnr = eap->line2; int wnr = eap->line2;
for (wp = firstwin; --wnr > 0;) {
if (wp->w_next == NULL) for (wp = firstwin; wp->w_next != NULL; wp = wp->w_next) {
if (--wnr <= 0)
break; break;
else
wp = wp->w_next;
} }
buf = wp->w_buffer;
} else { } else {
wp = curwin; wp = curwin;
buf = curbuf;
} }
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 && curbuf->b_closing)) if (curbuf_locked() ||
(wp->w_buffer->b_nwindows == 1 && wp->w_buffer->b_closing))
return; return;
@@ -5641,8 +5625,6 @@ void ex_all(exarg_T *eap)
static void ex_hide(exarg_T *eap) static void ex_hide(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 {
@@ -5652,6 +5634,9 @@ static void ex_hide(exarg_T *eap)
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++;
if (winnr == eap->line2) if (winnr == eap->line2)