updated for version 7.3.031
Problem:    Can't pass the X window ID to another application.
Solution:   Add v:windowid. (Christian J. Robinson, Lech Lorens)
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f8ac272..d37fe2a 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1657,6 +1657,11 @@
 					*v:warningmsg* *warningmsg-variable*
 v:warningmsg	Last given warning message.  It's allowed to set this variable.
 
+					*v:windowid* *windowid-variable*
+v:windowid	When any X11 based GUI is running or when running in a
+		terminal and Vim connects to the X server (|-X|) this will be
+		set to the window ID.  Otherwise the value is zero.
+
 ==============================================================================
 4. Builtin Functions					*functions*
 
diff --git a/src/eval.c b/src/eval.c
index 699598b..1216dc6 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -362,6 +362,7 @@
     {VV_NAME("operator",	 VAR_STRING), VV_RO},
     {VV_NAME("searchforward",	 VAR_NUMBER), 0},
     {VV_NAME("oldfiles",	 VAR_LIST), 0},
+    {VV_NAME("windowid",	 VAR_NUMBER), VV_RO},
 };
 
 /* shorthand */
diff --git a/src/gui.c b/src/gui.c
index 6029e3b..89d8d5a 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -105,8 +105,18 @@
 
 #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
     if (gui.in_use)
+    {
+# ifdef FEAT_EVAL
+	Window	x11_window;
+	Display	*x11_display;
+
+	if (gui_get_x11_windis(&x11_window, &x11_display) == OK)
+	    set_vim_var_nr(VV_WINDOWID, (long)x11_window);
+# endif
+
 	/* Display error messages in a dialog now. */
 	display_errors();
+    }
 #endif
 
 #if defined(MAY_FORK) && !defined(__QNXNTO__)
diff --git a/src/os_unix.c b/src/os_unix.c
index 150bdad..9fcebd6 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1738,6 +1738,11 @@
     }
     if (x11_window == 0 || x11_display == NULL)
 	return (result = FAIL);
+
+# ifdef FEAT_EVAL
+    set_vim_var_nr(VV_WINDOWID, (long)x11_window);
+# endif
+
     return (result = OK);
 }
 
diff --git a/src/version.c b/src/version.c
index e776e1d..e5164d3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    31,
+/**/
     30,
 /**/
     29,
diff --git a/src/vim.h b/src/vim.h
index 6c846c1..5b74203 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1842,7 +1842,8 @@
 #define VV_OP		52
 #define VV_SEARCHFORWARD 53
 #define VV_OLDFILES	54
-#define VV_LEN		55	/* number of v: vars */
+#define VV_WINDOWID	55
+#define VV_LEN		56	/* number of v: vars */
 
 #ifdef FEAT_CLIPBOARD