updated for version 7.0196
diff --git a/src/eval.c b/src/eval.c
index 3044ef8..50f688a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15378,7 +15378,21 @@
 	    return NULL;
 	return pp;
     }
-    if (name[0] == '$')		/* last column or line */
+    if (name[0] == 'w' && lnum)
+    {
+	pos.col = 0;
+	if (name[1] == '0')		/* "w0": first visible line */
+	{
+	    pos.lnum = curwin->w_topline;
+	    return &pos;
+	}
+	else if (name[1] == '$')	/* "w$": last visible line */
+	{
+	    pos.lnum = curwin->w_botline - 1;
+	    return &pos;
+	}
+    }
+    else if (name[0] == '$')		/* last column or line */
     {
 	if (lnum)
 	{
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index a5b0552..ca3bed0 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -497,6 +497,8 @@
 			BANG|FILE1|TRLBAR|CMDWIN),
 EX(CMD_lclose,		"lclose",	ex_cclose,
 			RANGE|NOTADR|COUNT|TRLBAR),
+EX(CMD_lcscope,		"lcscope",	do_cscope,
+			EXTRA|NOTRLCOM|SBOXOK|XFILE),
 EX(CMD_left,		"left",		ex_align,
 			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
 EX(CMD_leftabove,	"leftabove",	ex_wrongmodifier,
diff --git a/src/ui.c b/src/ui.c
index 0ee61c2..b638c0d 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1593,7 +1593,10 @@
 
 #if defined(FEAT_GUI) || defined(FEAT_MOUSE_GPM) \
 	|| defined(FEAT_XCLIPBOARD) || defined(VMS) \
-	|| defined(FEAT_SNIFF) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+	|| defined(FEAT_SNIFF) || defined(FEAT_CLIENTSERVER) \
+	|| (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \
+		|| defined(FEAT_MENU))) \
+	|| defined(PROTO)
 /*
  * Add the given bytes to the input buffer
  * Special keys start with CSI.  A real CSI must have been translated to
@@ -1620,6 +1623,8 @@
 
 #if (defined(FEAT_XIM) && defined(FEAT_GUI_GTK)) \
 	|| (defined(FEAT_MBYTE) && defined(FEAT_MBYTE_IME)) \
+	|| (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \
+		|| defined(FEAT_MENU))) \
 	|| defined(PROTO)
 /*
  * Add "str[len]" to the input buffer while escaping CSI bytes.