summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2010-10-20 19:17:48 +0200
committerBram Moolenaar <bram@vim.org>2010-10-20 19:17:48 +0200
commit8f8a56ef3b52029fdecd2f5ce111b7a3a7f568f2 (patch)
tree9c8b552a50a9ae302c491be18242964b6cd2e988
parent7ea68f068dee6e76fc21d32267b067f0fc27c7e5 (diff)
downloadvim-8f8a56ef3b52029fdecd2f5ce111b7a3a7f568f2.tar.gz
updated for version 7.3.031v7.3.031v7-3-031
Problem: Can't pass the X window ID to another application. Solution: Add v:windowid. (Christian J. Robinson, Lech Lorens)
-rw-r--r--runtime/doc/eval.txt5
-rw-r--r--src/eval.c1
-rw-r--r--src/gui.c10
-rw-r--r--src/os_unix.c5
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h3
6 files changed, 25 insertions, 1 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f8ac2727..d37fe2ab 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1657,6 +1657,11 @@ v:version Version number of Vim: Major version number times 100 plus
*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 699598be..1216dc67 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -362,6 +362,7 @@ static struct vimvar
{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 6029e3b7..89d8d5a8 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -105,8 +105,18 @@ gui_start()
#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 150bdad6..9fcebd6a 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1738,6 +1738,11 @@ get_x11_windis()
}
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 e776e1d5..e5164d36 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
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 6c846c1d..5b742033 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1842,7 +1842,8 @@ typedef int proftime_T; /* dummy for function prototypes */
#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