0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 7.0023

This commit is contained in:
Bram Moolenaar
2004-12-19 22:46:22 +00:00
parent 46c9c73de8
commit 1cd871b534
76 changed files with 2397 additions and 1391 deletions

View File

@@ -1014,28 +1014,34 @@ buf_write_all(buf, forceit)
* Code to handle the argument list.
*/
static char_u *do_one_arg __ARGS((char_u *str));
static int do_arglist __ARGS((char_u *str, int what, int after));
static void alist_check_arg_idx __ARGS((void));
static int editing_arg_idx __ARGS((win_T *win));
#ifdef FEAT_LISTCMDS
static int alist_add_list __ARGS((int count, char_u **files, int after));
#endif
#define AL_SET 1
#define AL_ADD 2
#define AL_DEL 3
/*
* Isolate one argument, taking quotes and backticks.
* Changes the argument in-place, puts a NUL after it.
* Quotes are removed, backticks remain.
* Isolate one argument, taking backticks.
* Changes the argument in-place, puts a NUL after it. Backticks remain.
* Return a pointer to the start of the next argument.
*/
char_u *
static char_u *
do_one_arg(str)
char_u *str;
{
char_u *p;
int inquote;
int inbacktick;
inquote = FALSE;
inbacktick = FALSE;
for (p = str; *str; ++str)
{
/*
* for MSDOS et.al. a backslash is part of a file name.
* Only skip ", space and tab.
*/
/* When the backslash is used for escaping the special meaning of a
* character we need to keep it until wildcard expansion. */
if (rem_backslash(str))
{
*p++ = *str++;
@@ -1043,15 +1049,12 @@ do_one_arg(str)
}
else
{
/* An item ends at a space not in quotes or backticks */
if (!inquote && !inbacktick && vim_isspace(*str))
/* An item ends at a space not in backticks */
if (!inbacktick && vim_isspace(*str))
break;
if (!inquote && *str == '`')
if (*str == '`')
inbacktick ^= TRUE;
if (!inbacktick && *str == '"')
inquote ^= TRUE;
else
*p++ = *str;
*p++ = *str;
}
}
str = skipwhite(str);
@@ -1060,16 +1063,6 @@ do_one_arg(str)
return str;
}
static int do_arglist __ARGS((char_u *str, int what, int after));
static void alist_check_arg_idx __ARGS((void));
static int editing_arg_idx __ARGS((win_T *win));
#ifdef FEAT_LISTCMDS
static int alist_add_list __ARGS((int count, char_u **files, int after));
#endif
#define AL_SET 1
#define AL_ADD 2
#define AL_DEL 3
#if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
/*
* Redefine the argument list.
@@ -1619,6 +1612,7 @@ ex_listdo(eap)
char_u *save_ei = NULL;
char_u *new_ei;
#endif
char_u *p_shm_save;
#ifndef FEAT_WINDOWS
if (eap->cmdidx == CMD_windo)
@@ -1674,7 +1668,15 @@ ex_listdo(eap)
/* Don't call do_argfile() when already there, it will try
* reloading the file. */
if (curwin->w_arg_idx != i || !editing_arg_idx(curwin))
{
/* Clear 'shm' to avoid that the file message overwrites
* any output from the command. */
p_shm_save = vim_strsave(p_shm);
set_option_value((char_u *)"shm", 0L, (char_u *)"", 0);
do_argfile(eap, i);
set_option_value((char_u *)"shm", 0L, p_shm_save, 0);
vim_free(p_shm_save);
}
if (curwin->w_arg_idx != i)
break;
++i;
@@ -1717,7 +1719,15 @@ ex_listdo(eap)
break;
if (buf == NULL)
break;
/* Go to the next buffer. Clear 'shm' to avoid that the file
* message overwrites any output from the command. */
p_shm_save = vim_strsave(p_shm);
set_option_value((char_u *)"shm", 0L, (char_u *)"", 0);
goto_buffer(eap, DOBUF_FIRST, FORWARD, next_fnum);
set_option_value((char_u *)"shm", 0L, p_shm_save, 0);
vim_free(p_shm_save);
/* If autocommands took us elsewhere, quit here */
if (curbuf->b_fnum != next_fnum)
break;