0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.2-143

This commit is contained in:
Bram Moolenaar 2009-03-18 11:52:53 +00:00
parent 8281f44518
commit f4580d80e2
6 changed files with 124 additions and 3 deletions

View File

@ -3683,6 +3683,11 @@ set_one_cmd_context(xp, buff)
case CMD_highlight: case CMD_highlight:
set_context_in_highlight_cmd(xp, arg); set_context_in_highlight_cmd(xp, arg);
break; break;
#ifdef FEAT_CSCOPE
case CMD_cscope:
set_context_in_cscope_cmd(xp, arg);
break;
#endif
#ifdef FEAT_LISTCMDS #ifdef FEAT_LISTCMDS
case CMD_bdelete: case CMD_bdelete:
case CMD_bwipeout: case CMD_bwipeout:
@ -5187,6 +5192,9 @@ static struct
{EXPAND_AUGROUP, "augroup"}, {EXPAND_AUGROUP, "augroup"},
{EXPAND_BUFFERS, "buffer"}, {EXPAND_BUFFERS, "buffer"},
{EXPAND_COMMANDS, "command"}, {EXPAND_COMMANDS, "command"},
#if defined(FEAT_CSCOPE)
{EXPAND_CSCOPE, "cscope"},
#endif
#if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
{EXPAND_USER_DEFINED, "custom"}, {EXPAND_USER_DEFINED, "custom"},
{EXPAND_USER_LIST, "customlist"}, {EXPAND_USER_LIST, "customlist"},

View File

@ -4518,6 +4518,9 @@ ExpandFromContext(xp, pat, num_file, file, options)
{EXPAND_EVENTS, get_event_name, TRUE}, {EXPAND_EVENTS, get_event_name, TRUE},
{EXPAND_AUGROUP, get_augroup_name, TRUE}, {EXPAND_AUGROUP, get_augroup_name, TRUE},
#endif #endif
#ifdef FEAT_CSCOPE
{EXPAND_CSCOPE, get_cscope_name, TRUE},
#endif
#if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
{EXPAND_LANGUAGE, get_lang_arg, TRUE}, {EXPAND_LANGUAGE, get_lang_arg, TRUE},

View File

@ -93,12 +93,117 @@ cs_usage_msg(x)
(void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage); (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
} }
#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
static enum
{
EXP_CSCOPE_SUBCMD, /* expand ":cscope" sub-commands */
EXP_CSCOPE_FIND, /* expand ":cscope find" arguments */
EXP_CSCOPE_KILL /* expand ":cscope kill" arguments */
} expand_what;
/*
* Function given to ExpandGeneric() to obtain the cscope command
* expansion.
*/
/*ARGSUSED*/
char_u *
get_cscope_name(xp, idx)
expand_T *xp;
int idx;
{
switch (expand_what)
{
case EXP_CSCOPE_SUBCMD:
/* Complete with sub-commands of ":cscope":
* add, find, help, kill, reset, show */
return (char_u *)cs_cmds[idx].name;
case EXP_CSCOPE_FIND:
{
const char *query_type[] =
{
"c", "d", "e", "f", "g", "i", "s", "t", NULL
};
/* Complete with query type of ":cscope find {query_type}".
* {query_type} can be letters (c, d, ... t) or numbers (0, 1,
* ..., 8) but only complete with letters, since numbers are
* redundant. */
return (char_u *)query_type[idx];
}
case EXP_CSCOPE_KILL:
{
int i;
int current_idx = 0;
static char_u connection[2];
/* ":cscope kill" accepts connection numbers or partial names of
* the pathname of the cscope database as argument. Only complete
* with connection numbers. -1 can also be used to kill all
* connections. */
for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
{
if (csinfo[i].fname == NULL)
continue;
if (current_idx++ == idx)
{
/* Connection number fits in one character since
* CSCOPE_MAX_CONNECTIONS is < 10 */
connection[0] = i + '0';
connection[1] = NUL;
return connection;
}
}
return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
}
default:
return NULL;
}
}
/*
* Handle command line completion for :cscope command.
*/
void
set_context_in_cscope_cmd(xp, arg)
expand_T *xp;
char_u *arg;
{
char_u *p;
/* Default: expand subcommands */
xp->xp_context = EXPAND_CSCOPE;
expand_what = EXP_CSCOPE_SUBCMD;
xp->xp_pattern = arg;
/* (part of) subcommand already typed */
if (*arg != NUL)
{
p = skiptowhite(arg);
if (*p != NUL) /* past first word */
{
xp->xp_pattern = skipwhite(p);
if (*skiptowhite(xp->xp_pattern) != NUL)
xp->xp_context = EXPAND_NOTHING;
else if (STRNICMP(arg, "add", p - arg) == 0)
xp->xp_context = EXPAND_FILES;
else if (STRNICMP(arg, "kill", p - arg) == 0)
expand_what = EXP_CSCOPE_KILL;
else if (STRNICMP(arg, "find", p - arg) == 0)
expand_what = EXP_CSCOPE_FIND;
else
xp->xp_context = EXPAND_NOTHING;
}
}
}
#endif /* FEAT_CMDL_COMPL */
/* /*
* PRIVATE: do_cscope_general * PRIVATE: do_cscope_general
* *
* find the command, print help if invalid, and the then call the * Find the command, print help if invalid, and then call the corresponding
* corresponding command function, * command function.
* called from do_cscope and do_scscope
*/ */
static void static void
do_cscope_general(eap, make_split) do_cscope_general(eap, make_split)

View File

@ -1,4 +1,6 @@
/* if_cscope.c */ /* if_cscope.c */
char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
void do_cscope __ARGS((exarg_T *eap)); void do_cscope __ARGS((exarg_T *eap));
void do_scscope __ARGS((exarg_T *eap)); void do_scscope __ARGS((exarg_T *eap));
void do_cstag __ARGS((exarg_T *eap)); void do_cstag __ARGS((exarg_T *eap));

View File

@ -676,6 +676,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 */
/**/
143,
/**/ /**/
142, 142,
/**/ /**/

View File

@ -708,6 +708,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define EXPAND_USER_DEFINED 30 #define EXPAND_USER_DEFINED 30
#define EXPAND_USER_LIST 31 #define EXPAND_USER_LIST 31
#define EXPAND_SHELLCMD 32 #define EXPAND_SHELLCMD 32
#define EXPAND_CSCOPE 33
/* Values for exmode_active (0 is no exmode) */ /* Values for exmode_active (0 is no exmode) */
#define EXMODE_NORMAL 1 #define EXMODE_NORMAL 1