patch 7.4.984
Problem:    searchpos() always starts searching in the first column, which is
            not what some people expect. (Brett Stahlman)
Solution:   Add the 'z' flag: start at the specified column.
diff --git a/src/eval.c b/src/eval.c
index 2668f3d..a2d2939 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -16471,6 +16471,7 @@
 #define SP_START	0x10	    /* accept match at start position */
 #define SP_SUBPAT	0x20	    /* return nr of matching sub-pattern */
 #define SP_END		0x40	    /* leave cursor at end of match */
+#define SP_COLUMN	0x80	    /* start at cursor column */
 
 static int get_search_arg __ARGS((typval_T *varp, int *flagsp));
 
@@ -16512,6 +16513,7 @@
 				 case 'p': mask = SP_SUBPAT; break;
 				 case 'r': mask = SP_REPEAT; break;
 				 case 's': mask = SP_SETPCMARK; break;
+				 case 'z': mask = SP_COLUMN; break;
 			     }
 			  if (mask == 0)
 			  {
@@ -16530,7 +16532,7 @@
 }
 
 /*
- * Shared by search() and searchpos() functions
+ * Shared by search() and searchpos() functions.
  */
     static int
 search_cmn(argvars, match_pos, flagsp)
@@ -16562,6 +16564,8 @@
 	options |= SEARCH_START;
     if (flags & SP_END)
 	options |= SEARCH_END;
+    if (flags & SP_COLUMN)
+	options |= SEARCH_COL;
 
     /* Optional arguments: line number to stop searching and timeout. */
     if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN)