1
0
forked from aniani/vim

updated for version 7.0-060

This commit is contained in:
Bram Moolenaar
2006-08-16 17:35:00 +00:00
parent a7ecc563e8
commit f30e74c113
8 changed files with 49 additions and 158 deletions

View File

@@ -5420,11 +5420,7 @@ buf_contents_changed(buf)
buf_T *newbuf;
int differ = TRUE;
linenr_T lnum;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *old_curbuf = curbuf;
#endif
exarg_T ea;
/* Allocate a buffer without putting it in the buffer list. */
@@ -5439,13 +5435,8 @@ buf_contents_changed(buf)
return TRUE;
}
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf to buf and save a few things */
aucmd_prepbuf(&aco, newbuf);
#else
curbuf = newbuf;
curwin->w_buffer = newbuf;
#endif
if (ml_open(curbuf) == OK
&& readfile(buf->b_ffname, buf->b_fname,
@@ -5466,13 +5457,8 @@ buf_contents_changed(buf)
}
vim_free(ea.cmd);
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
#else
curbuf = old_curbuf;
curwin->w_buffer = old_curbuf;
#endif
if (curbuf != newbuf) /* safety check */
wipe_buffer(newbuf, FALSE);

View File

@@ -14184,11 +14184,7 @@ f_setbufvar(argvars, rettv)
typval_T *rettv;
{
buf_T *buf;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *save_curbuf;
#endif
char_u *varname, *bufvarname;
typval_T *varp;
char_u nbuf[NUMBUFLEN];
@@ -14205,12 +14201,7 @@ f_setbufvar(argvars, rettv)
if (buf != NULL && varname != NULL && varp != NULL)
{
/* set curbuf to be our buf, temporarily */
#ifdef FEAT_AUTOCMD
aucmd_prepbuf(&aco, buf);
#else
save_curbuf = curbuf;
curbuf = buf;
#endif
if (*varname == '&')
{
@@ -14237,11 +14228,7 @@ f_setbufvar(argvars, rettv)
}
/* reset notion of buffer */
#ifdef FEAT_AUTOCMD
aucmd_restbuf(&aco);
#else
curbuf = save_curbuf;
#endif
}
}

View File

@@ -6450,17 +6450,10 @@ buf_reload(buf, orig_mode)
int old_ro = buf->b_p_ro;
buf_T *savebuf;
int saved = OK;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
#else
buf_T *save_curbuf = curbuf;
curbuf = buf;
curwin->w_buffer = buf;
#endif
/* We only want to read the text from the file, not reset the syntax
* highlighting, clear marks, diff status, etc. Force the fileformat
@@ -6573,14 +6566,9 @@ buf_reload(buf, orig_mode)
curbuf->b_p_ro |= old_ro;
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "buf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
}
/*ARGSUSED*/
@@ -8088,6 +8076,7 @@ ex_doautoall(eap)
* Search a window for the current buffer. Save the cursor position and
* screen offset.
* Set "curbuf" and "curwin" to match "buf".
* When FEAT_AUTOCMD is not defined another version is used, see below.
*/
void
aucmd_prepbuf(aco, buf)
@@ -8151,6 +8140,7 @@ aucmd_prepbuf(aco, buf)
/*
* Cleanup after executing autocommands for a (hidden) buffer.
* Restore the window as it was (if possible).
* When FEAT_AUTOCMD is not defined another version is used, see below.
*/
void
aucmd_restbuf(aco)
@@ -9063,8 +9053,38 @@ theend:
return retval;
}
#else /* FEAT_AUTOCMD */
/*
* Prepare for executing commands for (hidden) buffer "buf".
* This is the non-autocommand version, it simply saves "curbuf" and sets
* "curbuf" and "curwin" to match "buf".
*/
void
aucmd_prepbuf(aco, buf)
aco_save_T *aco; /* structure to save values in */
buf_T *buf; /* new curbuf */
{
aco->save_buf = buf;
curbuf = buf;
curwin->w_buffer = buf;
}
/*
* Restore after executing commands for a (hidden) buffer.
* This is the non-autocommand version.
*/
void
aucmd_restbuf(aco)
aco_save_T *aco; /* structure holding saved values */
{
curbuf = aco->save_buf;
curwin->w_buffer = curbuf;
}
#endif /* FEAT_AUTOCMD */
#if defined(FEAT_AUTOCMD) || defined(FEAT_WILDIGN) || defined(PROTO)
/*
* Try matching a filename with a "pattern" ("prog" is NULL), or use the

View File

@@ -1068,30 +1068,20 @@ Set(vimbuf, ...)
line = SvPV(ST(i),PL_na);
if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL)
{
#ifdef FEAT_AUTOCMD
aco_save_T aco;
/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
#else
buf_T *save_curbuf = curbuf;
curbuf = vimbuf;
curwin->w_buffer = vimbuf;
#endif
if (u_savesub(lnum) == OK)
{
ml_replace(lnum, (char_u *)line, TRUE);
changed_bytes(lnum, 0);
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "vimbuf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
}
}
}
@@ -1128,31 +1118,23 @@ Delete(vimbuf, ...)
{
if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count)
{
buf_T *save_curbuf = curbuf;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
#else
curbuf = vimbuf;
curwin->w_buffer = vimbuf;
#endif
if (u_savedel(lnum, 1) == OK)
{
ml_delete(lnum, 0);
deleted_lines_mark(lnum, 1L);
if (save_curbuf == curbuf)
if (aco.save_buf == curbuf)
check_cursor();
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "vimbuf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
update_curbuf(VALID);
}
}
@@ -1179,30 +1161,21 @@ Append(vimbuf, ...)
line = SvPV(ST(i),PL_na);
if (lnum >= 0 && lnum <= vimbuf->b_ml.ml_line_count && line != NULL)
{
#ifdef FEAT_AUTOCMD
aco_save_T aco;
/* set curwin/curbuf for "vimbuf" and save some things */
aucmd_prepbuf(&aco, vimbuf);
#else
buf_T *save_curbuf = curbuf;
curbuf = vimbuf;
curwin->w_buffer = vimbuf;
#endif
if (u_inssub(lnum + 1) == OK)
{
ml_append(lnum, (char_u *)line, (colnr_T)0, FALSE);
appended_lines_mark(lnum, 1L);
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "vimbuf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
update_curbuf(VALID);
}
}

View File

@@ -644,21 +644,12 @@ static VALUE buffer_aref(VALUE self, VALUE num)
static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
{
char *line = STR2CSTR(str);
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *save_curbuf = curbuf;
#endif
if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
{
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
#else
curbuf = buf;
curwin->w_buffer = buf;
#endif
if (u_savesub(n) == OK) {
ml_replace(n, (char_u *)line, TRUE);
@@ -668,14 +659,10 @@ static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
#endif
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "buf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
update_curbuf(NOT_VALID);
}
else
@@ -699,21 +686,12 @@ static VALUE buffer_delete(VALUE self, VALUE num)
{
buf_T *buf = get_buf(self);
long n = NUM2LONG(num);
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *save_curbuf = curbuf;
#endif
if (n > 0 && n <= buf->b_ml.ml_line_count)
{
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
#else
curbuf = buf;
curwin->w_buffer = buf;
#endif
if (u_savedel(n, 1) == OK) {
ml_delete(n, 0);
@@ -725,14 +703,10 @@ static VALUE buffer_delete(VALUE self, VALUE num)
changed();
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "buf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
update_curbuf(NOT_VALID);
}
else
@@ -747,21 +721,12 @@ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
buf_T *buf = get_buf(self);
char *line = STR2CSTR(str);
long n = NUM2LONG(num);
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *save_curbuf = curbuf;
#endif
if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
{
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
#else
curbuf = buf;
curwin->w_buffer = buf;
#endif
if (u_inssub(n + 1) == OK) {
ml_append(n, (char_u *) line, (colnr_T) 0, FALSE);
@@ -773,14 +738,10 @@ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
changed();
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
/* Careful: autocommands may have made "buf" invalid! */
#else
curwin->w_buffer = save_curbuf;
curbuf = save_curbuf;
#endif
update_curbuf(NOT_VALID);
}
else {

View File

@@ -2463,32 +2463,19 @@ qf_update_buffer(qi)
qf_info_T *qi;
{
buf_T *buf;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *save_curbuf;
#endif
/* Check if a buffer for the quickfix list exists. Update it. */
buf = qf_find_buf(qi);
if (buf != NULL)
{
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf to buf and save a few things */
aucmd_prepbuf(&aco, buf);
#else
save_curbuf = curbuf;
curbuf = buf;
#endif
qf_fill_buffer(qi);
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
#else
curbuf = save_curbuf;
#endif
(void)qf_win_pos_update(qi, 0);
}
@@ -2977,10 +2964,8 @@ ex_vimgrep(eap)
#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
char_u *save_ei = NULL;
#endif
#ifndef FEAT_AUTOCMD
buf_T *save_curbuf;
#else
aco_save_T aco;
#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
int flags = 0;
colnr_T col;
@@ -3201,24 +3186,13 @@ ex_vimgrep(eap)
* need to be done now, in that buffer. And the modelines
* need to be done (again). But not the window-local
* options! */
#if defined(FEAT_AUTOCMD)
aucmd_prepbuf(&aco, buf);
#else
save_curbuf = curbuf;
curbuf = buf;
curwin->w_buffer = curbuf;
#endif
#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
apply_autocmds(EVENT_FILETYPE, buf->b_p_ft,
buf->b_fname, TRUE, buf);
#endif
do_modelines(OPT_NOWIN);
#if defined(FEAT_AUTOCMD)
aucmd_restbuf(&aco);
#else
curbuf = save_curbuf;
curwin->w_buffer = curbuf;
#endif
}
}
}
@@ -3319,11 +3293,7 @@ load_dummy_buffer(fname)
{
buf_T *newbuf;
int failed = TRUE;
#ifdef FEAT_AUTOCMD
aco_save_T aco;
#else
buf_T *old_curbuf = curbuf;
#endif
/* Allocate a buffer without putting it in the buffer list. */
newbuf = buflist_new(NULL, NULL, (linenr_T)1, BLN_DUMMY);
@@ -3333,13 +3303,8 @@ load_dummy_buffer(fname)
/* Init the options. */
buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
#ifdef FEAT_AUTOCMD
/* set curwin/curbuf to buf and save a few things */
aucmd_prepbuf(&aco, newbuf);
#else
curbuf = newbuf;
curwin->w_buffer = newbuf;
#endif
/* Need to set the filename for autocommands. */
(void)setfname(curbuf, fname, NULL, FALSE);
@@ -3370,13 +3335,8 @@ load_dummy_buffer(fname)
}
}
#ifdef FEAT_AUTOCMD
/* restore curwin/curbuf and a few other things */
aucmd_restbuf(&aco);
#else
curbuf = old_curbuf;
curwin->w_buffer = old_curbuf;
#endif
if (!buf_valid(newbuf))
return NULL;

View File

@@ -2213,11 +2213,12 @@ typedef int vimmenu_T;
/*
* Struct to save values in before executing autocommands for a buffer that is
* not the current buffer.
* not the current buffer. Without FEAT_AUTOCMD only "curbuf" is remembered.
*/
typedef struct
{
buf_T *save_buf; /* saved curbuf */
#ifdef FEAT_AUTOCMD
buf_T *new_curbuf; /* buffer to be used */
win_T *save_curwin; /* saved curwin, NULL if it didn't change */
win_T *new_curwin; /* new curwin if save_curwin != NULL */
@@ -2226,6 +2227,7 @@ typedef struct
# ifdef FEAT_DIFF
int save_topfill; /* saved topfill of save_curwin */
# endif
#endif
} aco_save_T;
/*

View File

@@ -666,6 +666,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
60,
/**/
59,
/**/