patch 9.0.0036: 'fillchars' cannot have window-local values

Problem:    'fillchars' cannot have window-local values.
Solution:   Make 'fillchars' global-local. (closes #5206)
diff --git a/src/testdir/dumps/Test_display_fillchars_1.dump b/src/testdir/dumps/Test_display_fillchars_1.dump
new file mode 100644
index 0000000..b0b1642
--- /dev/null
+++ b/src/testdir/dumps/Test_display_fillchars_1.dump
@@ -0,0 +1,12 @@
+|w+0&#ffffff0|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|y+0#4040ff13&| @35|++1#0000000&|x+0#4040ff13&| @35
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]|b@5|1|,|1|b@11|A|l@1|b|[|N|o| |N|a|m|e|]| |[|+|]|a@5|1|,|1|a@11|A|l@1
+>w+0&&|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|o+0#4040ff13&| @35|>+1#0000000&|z+0#4040ff13&| @35
+|o| @35|>+1#0000000&|z+0#4040ff13&| @35
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]|4@5|1|,|1|4@11|A|l@1|4|[+1&&|N|o| |N|a|m|e|]| |[|+|]|c@5|1|,|1|c@11|A|l@1
+| +0&&@74
diff --git a/src/testdir/dumps/Test_display_fillchars_2.dump b/src/testdir/dumps/Test_display_fillchars_2.dump
new file mode 100644
index 0000000..b983fac
--- /dev/null
+++ b/src/testdir/dumps/Test_display_fillchars_2.dump
@@ -0,0 +1,12 @@
+>w+0&#ffffff0|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28
+|y+0#4040ff13&| @35|++1#0000000&|x+0#4040ff13&| @35
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]|2@5|1|,|1|2@11|A|l@1|2|[+1&&|N|o| |N|a|m|e|]| |[|+|]|a@5|1|,|1|a@11|A|l@1
+|w+0&&|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28
+|o+0#4040ff13&| @35|>+1#0000000&|z+0#4040ff13&| @35
+|o| @35|>+1#0000000&|z+0#4040ff13&| @35
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]|d@5|1|,|1|d@11|A|l@1|d|[|N|o| |N|a|m|e|]| |[|+|]|c@5|1|,|1|c@11|A|l@1
+|:+0&&|w|i|n|c|m|d| |k| @65
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index ce60c72..69443c5 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -481,7 +481,7 @@
       call add(total_errors, 'Run ' . g:run_nr . ':')
       call extend(total_errors, v:errors)
 
-      if g:run_nr == 5 || prev_error == v:errors[0]
+      if g:run_nr >= 5 || prev_error == v:errors[0]
         call add(total_errors, 'Flaky test failed too often, giving up')
         let v:errors = total_errors
         break
diff --git a/src/testdir/screendump.vim b/src/testdir/screendump.vim
index d872a80..e19d4f5 100644
--- a/src/testdir/screendump.vim
+++ b/src/testdir/screendump.vim
@@ -75,6 +75,8 @@
 	endif
       else
 	let msg = 'See new dump file: call term_dumpload("testdir/' .. testfile .. '")'
+	" no point in retrying
+	let g:run_nr = 10
       endif
       for i in range(len(refdump))
 	if i >= len(testdump)
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index f5c8dc5..9fd0126 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -356,6 +356,34 @@
   set fillchars& fdc& foldmethod& foldenable&
 endfunc
 
+func Test_local_fillchars()
+  CheckScreendump
+
+  let lines =<< trim END
+      call setline(1, ['window 1']->repeat(3))
+      setlocal fillchars=stl:1,stlnc:a,vert:=,eob:x
+      vnew
+      call setline(1, ['window 2']->repeat(3))
+      setlocal fillchars=stl:2,stlnc:b,vert:+,eob:y
+      new
+      wincmd J
+      call setline(1, ['window 3']->repeat(3))
+      setlocal fillchars=stl:3,stlnc:c,vert:<,eob:z
+      vnew
+      call setline(1, ['window 4']->repeat(3))
+      setlocal fillchars=stl:4,stlnc:d,vert:>,eob:o
+  END
+  call writefile(lines, 'Xdisplayfillchars')
+  let buf = RunVimInTerminal('-S Xdisplayfillchars', #{rows: 12})
+  call VerifyScreenDump(buf, 'Test_display_fillchars_1', {})
+
+  call term_sendkeys(buf, ":wincmd k\r")
+  call VerifyScreenDump(buf, 'Test_display_fillchars_2', {})
+
+  call StopVimInTerminal(buf)
+  call delete('Xdisplayfillchars')
+endfunc
+
 func Test_display_linebreak_breakat()
   new
   vert resize 25