changeset 4883:fefd8d33a7ea v7.3.1187

updated for version 7.3.1187 Problem: "s:" is recognized but "<SID>" is not. (ZyX) Solution: Translate "<SID>" like "s:".
author Bram Moolenaar <bram@vim.org>
date Thu, 13 Jun 2013 21:24:06 +0200
parents a15a4a226a23
children 212b3fb13d1e
files src/eval.c src/version.c
diffstat 2 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -10976,21 +10976,22 @@ f_function(argvars, rettv)
 	EMSG2(_("E700: Unknown function: %s"), s);
     else
     {
-	if (STRNCMP(s, "s:", 2) == 0)
+	if (STRNCMP(s, "s:", 2) == 0 || STRNCMP(s, "<SID>", 5) == 0)
 	{
 	    char	sid_buf[25];
-
-	    /* Expand s: into <SNR>nr_, so that the function can also be
-	     * called from another script. Using trans_function_name() would
-	     * also work, but some plugins depend on the name being printable
-	     * text. */
+	    int		off = *s == 's' ? 2 : 5;
+
+	    /* Expand s: and <SID> into <SNR>nr_, so that the function can
+	     * also be called from another script. Using trans_function_name()
+	     * would also work, but some plugins depend on the name being
+	     * printable text. */
 	    sprintf(sid_buf, "<SNR>%ld_", (long)current_SID);
 	    rettv->vval.v_string =
-			    alloc((int)(STRLEN(sid_buf) + STRLEN(s + 2) + 1));
+			    alloc((int)(STRLEN(sid_buf) + STRLEN(s + off) + 1));
 	    if (rettv->vval.v_string != NULL)
 	    {
 		STRCPY(rettv->vval.v_string, sid_buf);
-		STRCAT(rettv->vval.v_string, s + 2);
+		STRCAT(rettv->vval.v_string, s + off);
 	    }
 	}
 	else
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1187,
+/**/
     1186,
 /**/
     1185,