diff --git a/src/option.c b/src/option.c
index 6b59683..3cb91a4 100644
--- a/src/option.c
+++ b/src/option.c
@@ -118,6 +118,7 @@
     , PV_SCBIND
     , PV_SCROLL
     , PV_SI
+    , PV_STL
     , PV_SN
     , PV_STS
     , PV_SUA
@@ -2024,7 +2025,7 @@
 			    {(char_u *)TRUE, (char_u *)0L}},
     {"statusline"  ,"stl",  P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT,
 #ifdef FEAT_STL_OPT
-			    (char_u *)&p_stl, PV_NONE,
+			    (char_u *)&p_stl, OPT_BOTH(PV_STL),
 #else
 			    (char_u *)NULL, PV_NONE,
 #endif
@@ -2315,6 +2316,15 @@
     {"wildmode",    "wim",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
 			    (char_u *)&p_wim, PV_NONE,
 			    {(char_u *)"full", (char_u *)0L}},
+    {"wildoptions", "wop",  P_STRING|P_VI_DEF,
+#ifdef FEAT_CMDL_COMPL
+			    (char_u *)&p_wop, PV_NONE,
+			    {(char_u *)"", (char_u *)0L}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)NULL, (char_u *)0L}
+#endif
+			    },
     {"winaltkeys",  "wak",  P_STRING|P_VI_DEF,
 #ifdef FEAT_WAK
 			    (char_u *)&p_wak, PV_NONE,
@@ -2465,6 +2475,9 @@
 static char *(p_bg_values[]) = {"light", "dark", NULL};
 static char *(p_nf_values[]) = {"octal", "hex", "alpha", NULL};
 static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL};
+#ifdef FEAT_CMDL_COMPL
+static char *(p_wop_values[]) = {"tagfile", NULL};
+#endif
 #ifdef FEAT_WAK
 static char *(p_wak_values[]) = {"yes", "menu", "no", NULL};
 #endif
@@ -4909,6 +4922,15 @@
 	    errmsg = e_invarg;
     }
 
+#ifdef FEAT_CMDL_COMPL
+    /* 'wildoptions' */
+    else if (varp == &p_wop)
+    {
+	if (check_opt_strings(p_wop, p_wop_values, TRUE) != OK)
+	    errmsg = e_invarg;
+    }
+#endif
+
 #ifdef FEAT_WAK
     /* 'winaltkeys' */
     else if (varp == &p_wak)
@@ -5563,7 +5585,7 @@
 
 #ifdef FEAT_STL_OPT
     /* 'statusline' or 'rulerformat' */
-    else if (varp == &p_stl || varp == &p_ruf)
+    else if (gvarp == &p_stl || varp == &p_ruf)
     {
 	int wid;
 
@@ -5583,7 +5605,7 @@
 	}
 	else
 	    errmsg = check_stl_option(s);
-	if (varp == &(p_ruf) && errmsg == NULL)
+	if (varp == &p_ruf && errmsg == NULL)
 	    comp_col();
     }
 #endif
@@ -7915,6 +7937,9 @@
 	    case OPT_BOTH(PV_DICT): return (char_u *)&(curbuf->b_p_dict);
 	    case OPT_BOTH(PV_TSR):  return (char_u *)&(curbuf->b_p_tsr);
 #endif
+#ifdef FEAT_STL_OPT
+	    case OPT_BOTH(PV_STL):  return (char_u *)&(curwin->w_p_stl);
+#endif
 	}
 	return NULL; /* "cannot happen" */
     }
@@ -7967,6 +7992,10 @@
 	case OPT_BOTH(PV_EFM):	return *curbuf->b_p_efm != NUL
 				    ? (char_u *)&(curbuf->b_p_efm) : p->var;
 #endif
+#ifdef FEAT_STL_OPT
+	case OPT_BOTH(PV_STL):  return *curwin->w_p_stl != NUL
+				    ? (char_u *)&(curwin->w_p_stl) : p->var;
+#endif
 
 #ifdef FEAT_ARABIC
 	case PV_ARAB:	return (char_u *)&(curwin->w_p_arab);
@@ -8168,6 +8197,9 @@
     to->wo_rl  = from->wo_rl;
     to->wo_rlc = vim_strsave(from->wo_rlc);
 #endif
+#ifdef FEAT_STL_OPT
+    to->wo_stl = vim_strsave(from->wo_stl);
+#endif
     to->wo_wrap = from->wo_wrap;
 #ifdef FEAT_LINEBREAK
     to->wo_lbr = from->wo_lbr;
@@ -8226,6 +8258,9 @@
 #ifdef FEAT_RIGHTLEFT
     check_string_option(&wop->wo_rlc);
 #endif
+#ifdef FEAT_STL_OPT
+    check_string_option(&wop->wo_stl);
+#endif
 }
 
 /*
@@ -8248,6 +8283,9 @@
 #ifdef FEAT_RIGHTLEFT
     clear_string_option(&wop->wo_rlc);
 #endif
+#ifdef FEAT_STL_OPT
+    clear_string_option(&wop->wo_stl);
+#endif
 }
 
 /*
