mirror of
https://github.com/neovim/neovim.git
synced 2025-09-17 08:48:16 +00:00
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:
@@ -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) {
|
|
||||||
lnum++;
|
|
||||||
if (tp == curtab)
|
|
||||||
break;
|
break;
|
||||||
}
|
case ADDR_TABS:
|
||||||
|
lnum = CURRENT_TAB_NR;
|
||||||
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)
|
||||||
|
Reference in New Issue
Block a user