diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim
index d6033d5..8042428 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/shared.vim
@@ -113,7 +113,9 @@
   endif
 endfunc
 
-" Wait for up to a second for "expr" to become true.
+" Wait for up to a second for "expr" to become true.  "expr" can be a
+" stringified expression to evaluate, or a funcref without arguments.
+"
 " Return time slept in milliseconds.  With the +reltime feature this can be
 " more than the actual waiting time.  Without +reltime it can also be less.
 func WaitFor(expr, ...)
@@ -124,8 +126,13 @@
   else
     let slept = 0
   endif
+  if type(a:expr) == v:t_func
+    let Test = a:expr
+  else
+    let Test = {-> eval(a:expr) }
+  endif
   for i in range(timeout / 10)
-    if eval(a:expr)
+    if Test()
       if has('reltime')
 	return float2nr(reltimefloat(reltime(start)) * 1000)
       endif
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index 37661c3..986b8bc 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -482,19 +482,17 @@
   " Prepare buffer text
   let lines = ['abb vim vim vi', 'vimvivim']
   call writefile(lines, 'Xsearch.txt')
-  let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
+  let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
 
-  call term_wait(g:buf, 200)
-  call assert_equal(lines[0], term_getline(g:buf, 1))
-  call assert_equal(lines[1], term_getline(g:buf, 2))
+  call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] })
 
-  call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>")
-  call term_sendkeys(g:buf, ":14vsp\<cr>")
-  call term_sendkeys(g:buf, "/vim\<cr>")
-  call term_sendkeys(g:buf, "/b\<esc>")
-  call term_sendkeys(g:buf, "gg0")
-  call term_wait(g:buf, 500)
-  let screen_line = term_scrape(g:buf, 1)
+  call term_sendkeys(buf, ":set incsearch hlsearch\<cr>")
+  call term_sendkeys(buf, ":14vsp\<cr>")
+  call term_sendkeys(buf, "/vim\<cr>")
+  call term_sendkeys(buf, "/b\<esc>")
+  call term_sendkeys(buf, "gg0")
+  call term_wait(buf, 500)
+  let screen_line = term_scrape(buf, 1)
   let [a0,a1,a2,a3] = [screen_line[3].attr, screen_line[4].attr,
         \ screen_line[18].attr, screen_line[19].attr]
   call assert_notequal(a0, a1)
@@ -607,19 +605,17 @@
   endif
 
   " Prepare buffer text
-  let g:lines = ['abb vim vim vi', 'vimvivim']
-  call writefile(g:lines, 'Xsearch.txt')
-  let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
-  call WaitFor('g:lines[0] == term_getline(g:buf, 1)')
-  call assert_equal(g:lines[0], term_getline(g:buf, 1))
-  call assert_equal(g:lines[1], term_getline(g:buf, 2))
-  unlet g:lines
+  let lines = ['abb vim vim vi', 'vimvivim']
+  call writefile(lines, 'Xsearch.txt')
+  let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
+
+  call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] })
 
   " Get attr of normal(a0), incsearch(a1), hlsearch(a2) highlight
-  call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>")
-  call term_sendkeys(g:buf, '/b')
-  call term_wait(g:buf, 200)
-  let screen_line1 = term_scrape(g:buf, 1)
+  call term_sendkeys(buf, ":set incsearch hlsearch\<cr>")
+  call term_sendkeys(buf, '/b')
+  call term_wait(buf, 200)
+  let screen_line1 = term_scrape(buf, 1)
   call assert_true(len(screen_line1) > 2)
   " a0: attr_normal
   let a0 = screen_line1[0].attr
@@ -630,53 +626,53 @@
   call assert_notequal(a0, a1)
   call assert_notequal(a0, a2)
   call assert_notequal(a1, a2)
-  call term_sendkeys(g:buf, "\<cr>gg0")
+  call term_sendkeys(buf, "\<cr>gg0")
 
   " Test incremental highlight search
-  call term_sendkeys(g:buf, "/vim")
-  call term_wait(g:buf, 200)
+  call term_sendkeys(buf, "/vim")
+  call term_wait(buf, 200)
   " Buffer:
   " abb vim vim vi
   " vimvivim
   " Search: /vim
   let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a2,a2,a2,a0,a0,a0]
   let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2]
-  call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
-  call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
+  call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
+  call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
 
   " Test <C-g>
-  call term_sendkeys(g:buf, "\<C-g>\<C-g>")
-  call term_wait(g:buf, 200)
+  call term_sendkeys(buf, "\<C-g>\<C-g>")
+  call term_wait(buf, 200)
   let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0]
   let attr_line2 = [a1,a1,a1,a0,a0,a2,a2,a2]
-  call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
-  call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
+  call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
+  call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
 
   " Test <C-t>
-  call term_sendkeys(g:buf, "\<C-t>")
-  call term_wait(g:buf, 200)
+  call term_sendkeys(buf, "\<C-t>")
+  call term_wait(buf, 200)
   let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a1,a1,a1,a0,a0,a0]
   let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2]
-  call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
-  call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
+  call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
+  call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
 
   " Type Enter and a1(incsearch highlight) should become a2(hlsearch highlight)
-  call term_sendkeys(g:buf, "\<cr>")
-  call term_wait(g:buf, 200)
+  call term_sendkeys(buf, "\<cr>")
+  call term_wait(buf, 200)
   let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0]
   let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2]
-  call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
-  call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
+  call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
+  call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
 
   " Test nohlsearch. a2(hlsearch highlight) should become a0(normal highlight)
-  call term_sendkeys(g:buf, ":1\<cr>")
-  call term_sendkeys(g:buf, ":set nohlsearch\<cr>")
-  call term_sendkeys(g:buf, "/vim")
-  call term_wait(g:buf, 200)
+  call term_sendkeys(buf, ":1\<cr>")
+  call term_sendkeys(buf, ":set nohlsearch\<cr>")
+  call term_sendkeys(buf, "/vim")
+  call term_wait(buf, 200)
   let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a0,a0,a0,a0,a0,a0]
   let attr_line2 = [a0,a0,a0,a0,a0,a0,a0,a0]
-  call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
-  call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
+  call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
+  call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
   call delete('Xsearch.txt')
 
   call delete('Xsearch.txt')
diff --git a/src/version.c b/src/version.c
index f28132c..e31f17b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1259,
+/**/
     1258,
 /**/
     1257,
