diff src/eval.c @ 1533:8abc0abf8cbd v7.1.248

updated for version 7.1-248
author vimboss
date Wed, 13 Feb 2008 11:42:46 +0000
parents dfcff6590aba
children 0d0bf7598dcb
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -14776,24 +14776,31 @@ f_setpos(argvars, rettv)
     int		fnum;
     char_u	*name;
 
+    rettv->vval.v_number = -1;
     name = get_tv_string_chk(argvars);
     if (name != NULL)
     {
 	if (list2fpos(&argvars[1], &pos, &fnum) == OK)
 	{
 	    --pos.col;
-	    if (name[0] == '.')		/* cursor */
-	    {
+	    if (name[0] == '.' && name[1] == NUL)
+	    {
+		/* set cursor */
 		if (fnum == curbuf->b_fnum)
 		{
 		    curwin->w_cursor = pos;
 		    check_cursor();
+		    rettv->vval.v_number = 0;
 		}
 		else
 		    EMSG(_(e_invarg));
 	    }
-	    else if (name[0] == '\'')	/* mark */
-		(void)setmark_pos(name[1], &pos, fnum);
+	    else if (name[0] == '\'' && name[1] != NUL && name[2] == NUL)
+	    {
+		/* set mark */
+		if (setmark_pos(name[1], &pos, fnum) == OK)
+		    rettv->vval.v_number = 0;
+	    }
 	    else
 		EMSG(_(e_invarg));
 	}