summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.2.166
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.2.166')
-rw-r--r--source/ap/vim/patches/7.2.166425
1 files changed, 425 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.2.166 b/source/ap/vim/patches/7.2.166
new file mode 100644
index 00000000..0461b31d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.166
@@ -0,0 +1,425 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.166
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.166
+Problem: No completion for ":sign" command.
+Solution: Add ":sign" completion. (Dominique Pelle)
+Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h,
+ src/proto/ex_cmds.pro
+
+
+*** ../vim-7.2.165/src/ex_cmds.c Tue Feb 24 04:28:40 2009
+--- src/ex_cmds.c Wed Apr 29 17:08:27 2009
+***************
+*** 6543,6562 ****
+ static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+! /*
+! * ":sign" command
+! */
+! void
+! ex_sign(eap)
+! exarg_T *eap;
+! {
+! char_u *arg = eap->arg;
+! char_u *p;
+! int idx;
+! sign_T *sp;
+! sign_T *sp_prev;
+! buf_T *buf;
+! static char *cmds[] = {
+ "define",
+ #define SIGNCMD_DEFINE 0
+ "undefine",
+--- 6543,6549 ----
+ static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+! static char *cmds[] = {
+ "define",
+ #define SIGNCMD_DEFINE 0
+ "undefine",
+***************
+*** 6569,6590 ****
+ #define SIGNCMD_UNPLACE 4
+ "jump",
+ #define SIGNCMD_JUMP 5
+ #define SIGNCMD_LAST 6
+! };
+
+ /* Parse the subcommand. */
+ p = skiptowhite(arg);
+! if (*p != NUL)
+! *p++ = NUL;
+! for (idx = 0; ; ++idx)
+ {
+! if (idx == SIGNCMD_LAST)
+! {
+! EMSG2(_("E160: Unknown sign command: %s"), arg);
+! return;
+! }
+! if (STRCMP(arg, cmds[idx]) == 0)
+! break;
+ }
+ arg = skipwhite(p);
+
+--- 6556,6606 ----
+ #define SIGNCMD_UNPLACE 4
+ "jump",
+ #define SIGNCMD_JUMP 5
++ NULL
+ #define SIGNCMD_LAST 6
+! };
+!
+! /*
+! * Find index of a ":sign" subcmd from its name.
+! * "*end_cmd" must be writable.
+! */
+! static int
+! sign_cmd_idx(begin_cmd, end_cmd)
+! char *begin_cmd; /* begin of sign subcmd */
+! char *end_cmd; /* just after sign subcmd */
+! {
+! int idx;
+! char save = *end_cmd;
+!
+! *end_cmd = NUL;
+! for (idx = 0; ; ++idx)
+! if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0)
+! break;
+! *end_cmd = save;
+! return idx;
+! }
+!
+! /*
+! * ":sign" command
+! */
+! void
+! ex_sign(eap)
+! exarg_T *eap;
+! {
+! char_u *arg = eap->arg;
+! char_u *p;
+! int idx;
+! sign_T *sp;
+! sign_T *sp_prev;
+! buf_T *buf;
+
+ /* Parse the subcommand. */
+ p = skiptowhite(arg);
+! idx = sign_cmd_idx(arg, p);
+! if (idx == SIGNCMD_LAST)
+ {
+! EMSG2(_("E160: Unknown sign command: %s"), arg);
+! return;
+ }
+ arg = skipwhite(p);
+
+***************
+*** 7110,7115 ****
+--- 7126,7311 ----
+ }
+ #endif
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static enum
++ {
++ EXP_SUBCMD, /* expand :sign sub-commands */
++ EXP_DEFINE, /* expand :sign define {name} args */
++ EXP_PLACE, /* expand :sign place {id} args */
++ EXP_UNPLACE, /* expand :sign unplace" */
++ EXP_SIGN_NAMES /* expand with name of placed signs */
++ } expand_what;
++
++ /*
++ * Function given to ExpandGeneric() to obtain the sign command
++ * expansion.
++ */
++ /*ARGSUSED*/
++ char_u *
++ get_sign_name(xp, idx)
++ expand_T *xp;
++ int idx;
++ {
++ sign_T *sp;
++ int current_idx;
++
++ switch (expand_what)
++ {
++ case EXP_SUBCMD:
++ return (char_u *)cmds[idx];
++ case EXP_DEFINE:
++ {
++ char *define_arg[] =
++ {
++ "icon=", "linehl=", "text=", "texthl=", NULL
++ };
++ return (char_u *)define_arg[idx];
++ }
++ case EXP_PLACE:
++ {
++ char *place_arg[] =
++ {
++ "line=", "name=", "file=", "buffer=", NULL
++ };
++ return (char_u *)place_arg[idx];
++ }
++ case EXP_UNPLACE:
++ {
++ char *unplace_arg[] = { "file=", "buffer=", NULL };
++ return (char_u *)unplace_arg[idx];
++ }
++ case EXP_SIGN_NAMES:
++ /* Complete with name of signs already defined */
++ current_idx = 0;
++ for (sp = first_sign; sp != NULL; sp = sp->sn_next)
++ if (current_idx++ == idx)
++ return sp->sn_name;
++ return NULL;
++ default:
++ return NULL;
++ }
++ }
++
++ /*
++ * Handle command line completion for :sign command.
++ */
++ void
++ set_context_in_sign_cmd(xp, arg)
++ expand_T *xp;
++ char_u *arg;
++ {
++ char_u *p;
++ char_u *end_subcmd;
++ char_u *last;
++ int cmd_idx;
++ char_u *begin_subcmd_args;
++
++ /* Default: expand subcommands. */
++ xp->xp_context = EXPAND_SIGN;
++ expand_what = EXP_SUBCMD;
++ xp->xp_pattern = arg;
++
++ end_subcmd = skiptowhite(arg);
++ if (*end_subcmd == NUL)
++ /* expand subcmd name
++ * :sign {subcmd}<CTRL-D>*/
++ return;
++
++ cmd_idx = sign_cmd_idx(arg, end_subcmd);
++
++ /* :sign {subcmd} {subcmd_args}
++ * |
++ * begin_subcmd_args */
++ begin_subcmd_args = skipwhite(end_subcmd);
++ p = skiptowhite(begin_subcmd_args);
++ if (*p == NUL)
++ {
++ /*
++ * Expand first argument of subcmd when possible.
++ * For ":jump {id}" and ":unplace {id}", we could
++ * possibly expand the ids of all signs already placed.
++ */
++ xp->xp_pattern = begin_subcmd_args;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_LIST:
++ case SIGNCMD_UNDEFINE:
++ /* :sign list <CTRL-D>
++ * :sign undefine <CTRL-D> */
++ expand_what = EXP_SIGN_NAMES;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ return;
++ }
++
++ /* expand last argument of subcmd */
++
++ /* :sign define {name} {args}...
++ * |
++ * p */
++
++ /* Loop until reaching last argument. */
++ do
++ {
++ p = skipwhite(p);
++ last = p;
++ p = skiptowhite(p);
++ } while (*p != NUL);
++
++ p = vim_strchr(last, '=');
++
++ /* :sign define {name} {args}... {last}=
++ * | |
++ * last p */
++ if (p == NUL)
++ {
++ /* Expand last argument name (before equal sign). */
++ xp->xp_pattern = last;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_DEFINE:
++ expand_what = EXP_DEFINE;
++ break;
++ case SIGNCMD_PLACE:
++ expand_what = EXP_PLACE;
++ break;
++ case SIGNCMD_JUMP:
++ case SIGNCMD_UNPLACE:
++ expand_what = EXP_UNPLACE;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ }
++ else
++ {
++ /* Expand last argument value (after equal sign). */
++ xp->xp_pattern = p + 1;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_DEFINE:
++ if (STRNCMP(last, "texthl", p - last) == 0 ||
++ STRNCMP(last, "linehl", p - last) == 0)
++ xp->xp_context = EXPAND_HIGHLIGHT;
++ else if (STRNCMP(last, "icon", p - last) == 0)
++ xp->xp_context = EXPAND_FILES;
++ else
++ xp->xp_context = EXPAND_NOTHING;
++ break;
++ case SIGNCMD_PLACE:
++ if (STRNCMP(last, "name", p - last) == 0)
++ expand_what = EXP_SIGN_NAMES;
++ else
++ xp->xp_context = EXPAND_NOTHING;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ }
++ }
++ #endif
+ #endif
+
+ #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+*** ../vim-7.2.165/src/ex_docmd.c Wed Apr 22 16:22:44 2009
+--- src/ex_docmd.c Wed Apr 29 17:05:23 2009
+***************
+*** 3695,3700 ****
+--- 3695,3705 ----
+ set_context_in_cscope_cmd(xp, arg, ea.cmdidx);
+ break;
+ #endif
++ #ifdef FEAT_SIGNS
++ case CMD_sign:
++ set_context_in_sign_cmd(xp, arg);
++ break;
++ #endif
+ #ifdef FEAT_LISTCMDS
+ case CMD_bdelete:
+ case CMD_bwipeout:
+***************
+*** 5218,5223 ****
+--- 5223,5231 ----
+ {EXPAND_MENUS, "menu"},
+ {EXPAND_SETTINGS, "option"},
+ {EXPAND_SHELLCMD, "shellcmd"},
++ #if defined(FEAT_SIGNS)
++ {EXPAND_SIGN, "sign"},
++ #endif
+ {EXPAND_TAGS, "tag"},
+ {EXPAND_TAGS_LISTFILES, "tag_listfiles"},
+ {EXPAND_USER_VARS, "var"},
+*** ../vim-7.2.165/src/ex_getln.c Wed Apr 29 12:03:35 2009
+--- src/ex_getln.c Wed Apr 29 12:51:42 2009
+***************
+*** 325,331 ****
+ #endif
+
+ #ifdef FEAT_DIGRAPHS
+! do_digraph(-1); /* init digraph typahead */
+ #endif
+
+ /*
+--- 325,331 ----
+ #endif
+
+ #ifdef FEAT_DIGRAPHS
+! do_digraph(-1); /* init digraph typeahead */
+ #endif
+
+ /*
+***************
+*** 4521,4526 ****
+--- 4521,4529 ----
+ #ifdef FEAT_CSCOPE
+ {EXPAND_CSCOPE, get_cscope_name, TRUE},
+ #endif
++ #ifdef FEAT_SIGNS
++ {EXPAND_SIGN, get_sign_name, TRUE},
++ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ {EXPAND_LANGUAGE, get_lang_arg, TRUE},
+*** ../vim-7.2.165/src/vim.h Wed Mar 18 12:50:58 2009
+--- src/vim.h Wed Apr 29 12:51:42 2009
+***************
+*** 709,714 ****
+--- 709,715 ----
+ #define EXPAND_USER_LIST 31
+ #define EXPAND_SHELLCMD 32
+ #define EXPAND_CSCOPE 33
++ #define EXPAND_SIGN 34
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.2.165/src/proto/ex_cmds.pro Tue Feb 24 04:28:40 2009
+--- src/proto/ex_cmds.pro Wed Apr 29 17:10:29 2009
+***************
+*** 40,46 ****
+ int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+ void write_viminfo_sub_string __ARGS((FILE *fp));
+ void free_old_sub __ARGS((void));
+- void free_signs __ARGS((void));
+ int prepare_tagpreview __ARGS((int undo_sync));
+ void ex_help __ARGS((exarg_T *eap));
+ char_u *check_help_lang __ARGS((char_u *arg));
+--- 40,45 ----
+***************
+*** 56,60 ****
+--- 55,62 ----
+ char_u *sign_get_text __ARGS((int typenr));
+ void *sign_get_image __ARGS((int typenr));
+ char_u *sign_typenr2name __ARGS((int typenr));
++ void free_signs __ARGS((void));
++ char_u *get_sign_name __ARGS((expand_T *xp, int idx));
++ void set_context_in_sign_cmd __ARGS((expand_T *xp, char_u *arg));
+ void ex_drop __ARGS((exarg_T *eap));
+ /* vim: set ft=c : */
+*** ../vim-7.2.165/src/version.c Wed Apr 29 18:01:23 2009
+--- src/version.c Wed Apr 29 18:43:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 166,
+ /**/
+
+--
+Did you ever stop to think... and forget to start again?
+ -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///