diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 9cc854f..4cbece7 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2330,6 +2330,7 @@
 		With {winnr} only use this window in the current tab page.
 		With {winnr} and {tabnr} use the window in the specified tab
 		page.
+		{winnr} can be the window number or the window ID.
 
 							*argv()*
 argv([{nr}])	The result is the {nr}th file in the argument list of the
@@ -3987,6 +3988,7 @@
 		in the current tab page.
 		With {winnr} and {tabnr} return the local current directory of
 		the window in the specified tab page.
+		{winnr} can be the window number or the window ID.
 		Return an empty string if the arguments are invalid.
 
 getfsize({fname})					*getfsize()*
@@ -4083,7 +4085,9 @@
 
 getloclist({nr})					*getloclist()*
 		Returns a list with all the entries in the location list for
-		window {nr}. When {nr} is zero the current window is used.
+		window {nr}.  {nr} can be the window number or the window ID.
+		When {nr} is zero the current window is used.
+
 		For a location list window, the displayed location list is
 		returned.  For an invalid window number {nr}, an empty list is
 		returned. Otherwise, same as |getqflist()|.
@@ -4217,6 +4221,7 @@
 		Note that {varname} must be the name without "w:".
 		Tabs are numbered starting with one.  For the current tabpage
 		use |getwinvar()|.
+		{winnr} can be the window number or the window ID.
 		When {winnr} is zero the current window is used.
 		This also works for a global option, buffer-local option and
 		window-local option, but it doesn't work for a global variable
@@ -4341,6 +4346,7 @@
 		With {winnr} use this window in the current tab page.
 		With {winnr} and {tabnr} use the window in the specified tab
 		page.
+		{winnr} can be the window number or the window ID.
 		Return 0 if the arguments are invalid.
 
 hasmapto({what} [, {mode} [, {abbr}]])			*hasmapto()*
@@ -6287,9 +6293,11 @@
 
 setloclist({nr}, {list} [, {action}])			*setloclist()*
 		Create or replace or add to the location list for window {nr}.
-		When {nr} is zero the current window is used. For a location
-		list window, the displayed location list is modified.  For an
-		invalid window number {nr}, -1 is returned.
+		{nr} can be the window number or the window ID.
+		When {nr} is zero the current window is used.
+
+		For a location list window, the displayed location list is
+		modified.  For an invalid window number {nr}, -1 is returned.
 		Otherwise, same as |setqflist()|.
 		Also see |location-list|.
 
@@ -6456,6 +6464,7 @@
 		{val}.
 		Tabs are numbered starting with one.  For the current tabpage
 		use |setwinvar()|.
+		{winnr} can be the window number or the window ID.
 		When {winnr} is zero the current window is used.
 		This also works for a global or local buffer option, but it
 		doesn't work for a global or local buffer variable.
@@ -7528,9 +7537,11 @@
 
 							*winbufnr()*
 winbufnr({nr})	The result is a Number, which is the number of the buffer
-		associated with window {nr}.  When {nr} is zero, the number of
-		the buffer in the current window is returned.  When window
-		{nr} doesn't exist, -1 is returned.
+		associated with window {nr}.  {nr} can be the window number or
+		the window ID.
+		When {nr} is zero, the number of the buffer in the current
+		window is returned.
+		When window {nr} doesn't exist, -1 is returned.
 		Example: >
   :echo "The file in the current window is " . bufname(winbufnr(0))
 <
@@ -7541,6 +7552,7 @@
 
 winheight({nr})						*winheight()*
 		The result is a Number, which is the height of window {nr}.
+		{nr} can be the window number or the window ID.
 		When {nr} is zero, the height of the current window is
 		returned.  When window {nr} doesn't exist, -1 is returned.
 		An existing window always has a height of zero or more.
@@ -7620,6 +7632,7 @@
 
 winwidth({nr})						*winwidth()*
 		The result is a Number, which is the width of window {nr}.
+		{nr} can be the window number or the window ID.
 		When {nr} is zero, the width of the current window is
 		returned.  When window {nr} doesn't exist, -1 is returned.
 		An existing window always has a width of zero or more.
diff --git a/src/eval.c b/src/eval.c
index 2a7a090..4825e8b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -13566,11 +13566,18 @@
 
     for (wp = (tp == NULL || tp == curtab) ? firstwin : tp->tp_firstwin;
 						  wp != NULL; wp = wp->w_next)
-	if (--nr <= 0)
+	if (nr >= LOWEST_WIN_ID)
+	{
+	    if (wp->w_id == nr)
+		return wp;
+	}
+	else if (--nr <= 0)
 	    break;
+    if (nr >= LOWEST_WIN_ID)
+	return NULL;
     return wp;
 #else
-    if (nr == 0 || nr == 1)
+    if (nr == 0 || nr == 1 || nr == curwin->w_id)
 	return curwin;
     return NULL;
 #endif
diff --git a/src/testdir/test_window_id.vim b/src/testdir/test_window_id.vim
index fa3ebd7..66656e1 100644
--- a/src/testdir/test_window_id.vim
+++ b/src/testdir/test_window_id.vim
@@ -3,17 +3,22 @@
 func Test_win_getid()
   edit one
   let id1 = win_getid()
+  let w:one = 'one'
   split two
   let id2 = win_getid()
   let bufnr2 = bufnr('%')
+  let w:two = 'two'
   split three
   let id3 = win_getid()
+  let w:three = 'three'
   tabnew
   edit four
   let id4 = win_getid()
+  let w:four = 'four'
   split five
   let id5 = win_getid()
   let bufnr5 = bufnr('%')
+  let w:five = 'five'
   tabnext
 
   wincmd w
@@ -28,6 +33,9 @@
   call assert_equal("three", expand("%"))
   call assert_equal(id3, win_getid())
   let nr3 = winnr()
+  call assert_equal('one', getwinvar(id1, 'one'))
+  call assert_equal('two', getwinvar(id2, 'two'))
+  call assert_equal('three', getwinvar(id3, 'three'))
   tabnext
   call assert_equal("five", expand("%"))
   call assert_equal(id5, win_getid())
@@ -36,7 +44,14 @@
   call assert_equal("four", expand("%"))
   call assert_equal(id4, win_getid())
   let nr4 = winnr()
+  call assert_equal('four', getwinvar(id4, 'four'))
+  call assert_equal('five', getwinvar(id5, 'five'))
+  call settabwinvar(1, id2, 'two', '2')
+  call setwinvar(id4, 'four', '4')
   tabnext
+  call assert_equal('4', gettabwinvar(2, id4, 'four'))
+  call assert_equal('five', gettabwinvar(2, id5, 'five'))
+  call assert_equal('2', getwinvar(id2, 'two'))
 
   exe nr1 . "wincmd w"
   call assert_equal(id1, win_getid())
diff --git a/src/version.c b/src/version.c
index b83cb33..1e7c2f2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1895,
+/**/
     1894,
 /**/
     1893,
diff --git a/src/vim.h b/src/vim.h
index fb991dc..d573cea 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -2334,4 +2334,7 @@
 #define DIP_OPT	    0x10	/* also use "opt" directory in 'packpath' */
 #define DIP_NORTP   0x20	/* do not use 'runtimepath' */
 
+/* Lowest number used for window ID. Cannot have this many windows. */
+#define LOWEST_WIN_ID 1000
+
 #endif /* VIM__H */
diff --git a/src/window.c b/src/window.c
index 01da765..2dc2554 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4422,7 +4422,7 @@
 }
 #endif
 
-static int last_win_id = 0;
+static int last_win_id = LOWEST_WIN_ID - 1;
 
 /*
  * Allocate a window structure and link it in the window list when "hidden" is
