components/vim/vim72-patches/7.2.143
changeset 379 c6a17bba1da3
parent 378 f0b61ed1d10d
child 380 e92b3b4a1c66
equal deleted inserted replaced
378:f0b61ed1d10d 379:c6a17bba1da3
     1 To: [email protected]
       
     2 Subject: Patch 7.2.143
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=ISO-8859-1
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.143
       
    11 Problem:    No command line completion for ":cscope" command.
       
    12 Solution:   Add the completion for ":cscope". (Dominique Pelle)
       
    13 Files:	    src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c,
       
    14 	    src/proto/if_cscope.pro, src/vim.h
       
    15 
       
    16 
       
    17 *** ../vim-7.2.142/src/ex_docmd.c	Wed Mar 11 15:36:01 2009
       
    18 --- src/ex_docmd.c	Wed Mar 11 15:45:04 2009
       
    19 ***************
       
    20 *** 3683,3688 ****
       
    21 --- 3683,3693 ----
       
    22   	case CMD_highlight:
       
    23   	    set_context_in_highlight_cmd(xp, arg);
       
    24   	    break;
       
    25 + #ifdef FEAT_CSCOPE
       
    26 + 	case CMD_cscope:
       
    27 + 	    set_context_in_cscope_cmd(xp, arg);
       
    28 + 	    break;
       
    29 + #endif
       
    30   #ifdef FEAT_LISTCMDS
       
    31   	case CMD_bdelete:
       
    32   	case CMD_bwipeout:
       
    33 ***************
       
    34 *** 5187,5192 ****
       
    35 --- 5192,5200 ----
       
    36       {EXPAND_AUGROUP, "augroup"},
       
    37       {EXPAND_BUFFERS, "buffer"},
       
    38       {EXPAND_COMMANDS, "command"},
       
    39 + #if defined(FEAT_CSCOPE)
       
    40 +     {EXPAND_CSCOPE, "cscope"},
       
    41 + #endif
       
    42   #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
       
    43       {EXPAND_USER_DEFINED, "custom"},
       
    44       {EXPAND_USER_LIST, "customlist"},
       
    45 *** ../vim-7.2.142/src/ex_getln.c	Thu Mar  5 03:13:51 2009
       
    46 --- src/ex_getln.c	Wed Mar 11 15:45:04 2009
       
    47 ***************
       
    48 *** 4518,4523 ****
       
    49 --- 4518,4526 ----
       
    50   	    {EXPAND_EVENTS, get_event_name, TRUE},
       
    51   	    {EXPAND_AUGROUP, get_augroup_name, TRUE},
       
    52   #endif
       
    53 + #ifdef FEAT_CSCOPE
       
    54 + 	    {EXPAND_CSCOPE, get_cscope_name, TRUE},
       
    55 + #endif
       
    56   #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
       
    57   	&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
       
    58   	    {EXPAND_LANGUAGE, get_lang_arg, TRUE},
       
    59 *** ../vim-7.2.142/src/if_cscope.c	Wed Jan 28 16:03:51 2009
       
    60 --- src/if_cscope.c	Wed Mar 11 15:56:07 2009
       
    61 ***************
       
    62 *** 93,104 ****
       
    63       (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
       
    64   }
       
    65   
       
    66   /*
       
    67    * PRIVATE: do_cscope_general
       
    68    *
       
    69 !  * find the command, print help if invalid, and the then call the
       
    70 !  * corresponding command function,
       
    71 !  * called from do_cscope and do_scscope
       
    72    */
       
    73       static void
       
    74   do_cscope_general(eap, make_split)
       
    75 --- 93,209 ----
       
    76       (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
       
    77   }
       
    78   
       
    79 + #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
       
    80 + 
       
    81 + static enum
       
    82 + {
       
    83 +     EXP_CSCOPE_SUBCMD,	/* expand ":cscope" sub-commands */
       
    84 +     EXP_CSCOPE_FIND,	/* expand ":cscope find" arguments */
       
    85 +     EXP_CSCOPE_KILL	/* expand ":cscope kill" arguments */
       
    86 + } expand_what;
       
    87 + 
       
    88 + /*
       
    89 +  * Function given to ExpandGeneric() to obtain the cscope command
       
    90 +  * expansion.
       
    91 +  */
       
    92 + /*ARGSUSED*/
       
    93 +     char_u *
       
    94 + get_cscope_name(xp, idx)
       
    95 +     expand_T	*xp;
       
    96 +     int		idx;
       
    97 + {
       
    98 +     switch (expand_what)
       
    99 +     {
       
   100 +     case EXP_CSCOPE_SUBCMD:
       
   101 + 	/* Complete with sub-commands of ":cscope":
       
   102 + 	 * add, find, help, kill, reset, show */
       
   103 + 	return (char_u *)cs_cmds[idx].name;
       
   104 +     case EXP_CSCOPE_FIND:
       
   105 + 	{
       
   106 + 	    const char *query_type[] =
       
   107 + 	    {
       
   108 + 		"c", "d", "e", "f", "g", "i", "s", "t", NULL
       
   109 + 	    };
       
   110 + 
       
   111 + 	    /* Complete with query type of ":cscope find {query_type}".
       
   112 + 	     * {query_type} can be letters (c, d, ... t) or numbers (0, 1,
       
   113 + 	     * ..., 8) but only complete with letters, since numbers are
       
   114 + 	     * redundant. */
       
   115 + 	    return (char_u *)query_type[idx];
       
   116 + 	}
       
   117 +     case EXP_CSCOPE_KILL:
       
   118 + 	{
       
   119 + 	    int			i;
       
   120 + 	    int			current_idx = 0;
       
   121 + 	    static char_u	connection[2];
       
   122 + 
       
   123 + 	    /* ":cscope kill" accepts connection numbers or partial names of
       
   124 + 	     * the pathname of the cscope database as argument.  Only complete
       
   125 + 	     * with connection numbers. -1 can also be used to kill all
       
   126 + 	     * connections. */
       
   127 + 	    for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
       
   128 + 	    {
       
   129 + 		if (csinfo[i].fname == NULL)
       
   130 + 		    continue;
       
   131 + 		if (current_idx++ == idx)
       
   132 + 		{
       
   133 + 		    /* Connection number fits in one character since
       
   134 + 		     * CSCOPE_MAX_CONNECTIONS is < 10 */
       
   135 + 		    connection[0] = i + '0';
       
   136 + 		    connection[1] = NUL;
       
   137 + 		    return connection;
       
   138 + 		}
       
   139 + 	    }
       
   140 + 	    return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
       
   141 + 	}
       
   142 +     default:
       
   143 + 	return NULL;
       
   144 +     }
       
   145 + }
       
   146 + 
       
   147 + /*
       
   148 +  * Handle command line completion for :cscope command.
       
   149 +  */
       
   150 +     void
       
   151 + set_context_in_cscope_cmd(xp, arg)
       
   152 +     expand_T	*xp;
       
   153 +     char_u	*arg;
       
   154 + {
       
   155 +     char_u	*p;
       
   156 + 
       
   157 +     /* Default: expand subcommands */
       
   158 +     xp->xp_context = EXPAND_CSCOPE;
       
   159 +     expand_what = EXP_CSCOPE_SUBCMD;
       
   160 +     xp->xp_pattern = arg;
       
   161 + 
       
   162 +     /* (part of) subcommand already typed */
       
   163 +     if (*arg != NUL)
       
   164 +     {
       
   165 + 	p = skiptowhite(arg);
       
   166 + 	if (*p != NUL)		    /* past first word */
       
   167 + 	{
       
   168 + 	    xp->xp_pattern = skipwhite(p);
       
   169 + 	    if (*skiptowhite(xp->xp_pattern) != NUL)
       
   170 + 		xp->xp_context = EXPAND_NOTHING;
       
   171 + 	    else if (STRNICMP(arg, "add", p - arg) == 0)
       
   172 + 		xp->xp_context = EXPAND_FILES;
       
   173 + 	    else if (STRNICMP(arg, "kill", p - arg) == 0)
       
   174 + 		expand_what = EXP_CSCOPE_KILL;
       
   175 + 	    else if (STRNICMP(arg, "find", p - arg) == 0)
       
   176 + 		expand_what = EXP_CSCOPE_FIND;
       
   177 + 	    else
       
   178 + 		xp->xp_context = EXPAND_NOTHING;
       
   179 + 	}
       
   180 +     }
       
   181 + }
       
   182 + 
       
   183 + #endif /* FEAT_CMDL_COMPL */
       
   184 + 
       
   185   /*
       
   186    * PRIVATE: do_cscope_general
       
   187    *
       
   188 !  * Find the command, print help if invalid, and then call the corresponding
       
   189 !  * command function.
       
   190    */
       
   191       static void
       
   192   do_cscope_general(eap, make_split)
       
   193 *** ../vim-7.2.142/src/proto/if_cscope.pro	Thu Sep  6 17:38:21 2007
       
   194 --- src/proto/if_cscope.pro	Wed Mar 11 15:57:03 2009
       
   195 ***************
       
   196 *** 1,4 ****
       
   197 --- 1,6 ----
       
   198   /* if_cscope.c */
       
   199 + char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
       
   200 + void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
       
   201   void do_cscope __ARGS((exarg_T *eap));
       
   202   void do_scscope __ARGS((exarg_T *eap));
       
   203   void do_cstag __ARGS((exarg_T *eap));
       
   204 *** ../vim-7.2.142/src/vim.h	Sun Feb 22 02:36:36 2009
       
   205 --- src/vim.h	Wed Mar 11 15:45:04 2009
       
   206 ***************
       
   207 *** 708,713 ****
       
   208 --- 708,714 ----
       
   209   #define EXPAND_USER_DEFINED	30
       
   210   #define EXPAND_USER_LIST	31
       
   211   #define EXPAND_SHELLCMD		32
       
   212 + #define EXPAND_CSCOPE		33
       
   213   
       
   214   /* Values for exmode_active (0 is no exmode) */
       
   215   #define EXMODE_NORMAL		1
       
   216 *** ../vim-7.2.142/src/version.c	Wed Mar 18 12:20:35 2009
       
   217 --- src/version.c	Wed Mar 18 12:48:08 2009
       
   218 ***************
       
   219 *** 678,679 ****
       
   220 --- 678,681 ----
       
   221   {   /* Add new patch number below this line */
       
   222 + /**/
       
   223 +     143,
       
   224   /**/
       
   225 
       
   226 -- 
       
   227 hundred-and-one symptoms of being an internet addict:
       
   228 234. You started college as a chemistry major, and walk out four years
       
   229      later as an Internet provider.
       
   230 
       
   231  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   232 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   233 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   234  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///