patch 8.0.1836: buffer-local window options may not be recent

Problem:    Buffer-local window options may not be recent if the buffer is
            still open in another window.
Solution:   Copy the options from the window instead of the outdated window
            options. (Bjorn Linse, closes #2336)
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 8fa5f8b..167cb1c 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -348,3 +348,55 @@
     endif
   endfor
 endfunc
+
+func Test_copy_winopt()
+    set hidden
+
+    " Test copy option from current buffer in window
+    split
+    enew
+    setlocal numberwidth=5
+    wincmd w
+    call assert_equal(4,&numberwidth)
+    bnext
+    call assert_equal(5,&numberwidth)
+    bw!
+    call assert_equal(4,&numberwidth)
+
+    " Test copy value from window that used to be display the buffer
+    split
+    enew
+    setlocal numberwidth=6
+    bnext
+    wincmd w
+    call assert_equal(4,&numberwidth)
+    bnext
+    call assert_equal(6,&numberwidth)
+    bw!
+
+    " Test that if buffer is current, don't use the stale cached value
+    " from the last time the buffer was displayed.
+    split
+    enew
+    setlocal numberwidth=7
+    bnext
+    bnext
+    setlocal numberwidth=8
+    wincmd w
+    call assert_equal(4,&numberwidth)
+    bnext
+    call assert_equal(8,&numberwidth)
+    bw!
+
+    " Test value is not copied if window already has seen the buffer
+    enew
+    split
+    setlocal numberwidth=9
+    bnext
+    setlocal numberwidth=10
+    wincmd w
+    call assert_equal(4,&numberwidth)
+    bnext
+    call assert_equal(4,&numberwidth)
+    bw!
+endfunc