diff --git a/7.3.024 b/7.3.024 new file mode 100644 index 0000000..60ae64e --- /dev/null +++ b/7.3.024 @@ -0,0 +1,115 @@ +To: vim-dev@vim.org +Subject: Patch 7.3.024 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.024 +Problem: Named signs do not use a negative number as intended. +Solution: Fix the numbering of named signs. (Xavier de Gaye) +Files: src/ex_cmds.c + + +*** ../vim-7.3.023/src/ex_cmds.c 2010-09-21 16:56:29.000000000 +0200 +--- src/ex_cmds.c 2010-10-13 16:37:18.000000000 +0200 +*************** +*** 6670,6680 **** + sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T)); + if (sp == NULL) + return; +- if (sp_prev == NULL) +- first_sign = sp; +- else +- sp_prev->sn_next = sp; +- sp->sn_name = vim_strnsave(arg, (int)(p - arg)); + + /* If the name is a number use that for the typenr, + * otherwise use a negative number. */ +--- 6670,6675 ---- +*************** +*** 6687,6699 **** + + for (lp = first_sign; lp != NULL; lp = lp->sn_next) + { +! if (lp->sn_typenr == last_sign_typenr) + { + --last_sign_typenr; + if (last_sign_typenr == 0) + last_sign_typenr = MAX_TYPENR; + if (last_sign_typenr == start) + { + EMSG(_("E612: Too many signs defined")); + return; + } +--- 6682,6695 ---- + + for (lp = first_sign; lp != NULL; lp = lp->sn_next) + { +! if (lp->sn_typenr == -last_sign_typenr) + { + --last_sign_typenr; + if (last_sign_typenr == 0) + last_sign_typenr = MAX_TYPENR; + if (last_sign_typenr == start) + { ++ vim_free(sp); + EMSG(_("E612: Too many signs defined")); + return; + } +*************** +*** 6702,6711 **** + } + } + +! sp->sn_typenr = last_sign_typenr--; +! if (last_sign_typenr == 0) + last_sign_typenr = MAX_TYPENR; /* wrap around */ + } + } + + /* set values for a defined sign. */ +--- 6698,6714 ---- + } + } + +! sp->sn_typenr = -last_sign_typenr; +! if (--last_sign_typenr == 0) + last_sign_typenr = MAX_TYPENR; /* wrap around */ + } ++ ++ /* add the new sign to the list of signs */ ++ if (sp_prev == NULL) ++ first_sign = sp; ++ else ++ sp_prev->sn_next = sp; ++ sp->sn_name = vim_strnsave(arg, (int)(p - arg)); + } + + /* set values for a defined sign. */ +*** ../vim-7.3.023/src/version.c 2010-10-13 16:22:05.000000000 +0200 +--- src/version.c 2010-10-13 16:42:14.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 24, + /**/ + +-- + In war we're tough and able. + Quite indefatigable + Between our quests + We sequin vests + And impersonate Clark Gable + It's a busy life in Camelot. + I have to push the pram a lot. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// 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 ///