diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim
index f50062e..0f825a2 100644
--- a/src/testdir/test49.vim
+++ b/src/testdir/test49.vim
@@ -1,6 +1,6 @@
 " Vim script language tests
 " Author:	Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change:	2016 Feb 07
+" Last Change:	2019 Jan 09
 
 "-------------------------------------------------------------------------------
 " Test environment							    {{{1
@@ -318,7 +318,7 @@
 let ExtraVimBase = expand("<sfile>")
 let ExtraVimTestEnv = ""
 "
-function! ExtraVim(...)
+function ExtraVim(...)
     " Count how often this function is called.
     let g:ExtraVimCount = g:ExtraVimCount + 1
 
@@ -500,7 +500,7 @@
 " an ExtraVim script as passed by ExtraVim() in ExtraVimBegin.
 "
 " EXTRA_VIM_START - do not change or remove this line.
-function! ExtraVimThrowpoint()
+function ExtraVimThrowpoint()
     if !exists("g:ExtraVimBegin")
 	Xout "ExtraVimThrowpoint() used outside ExtraVim() script."
 	return v:throwpoint
@@ -530,7 +530,7 @@
 " as a script file, use ExecAsScript below.
 "
 " EXTRA_VIM_START - do not change or remove this line.
-function! MakeScript(funcname, ...)
+function MakeScript(funcname, ...)
     let script = tempname()
     execute "redir! >" . script
     execute "function" a:funcname
@@ -568,7 +568,7 @@
 " location specified in the function.
 "
 " EXTRA_VIM_START - do not change or remove this line.
-function! ExecAsScript(funcname)
+function ExecAsScript(funcname)
     " Make a script from the function passed as argument.
     let script = MakeScript(a:funcname)
 
@@ -8548,7 +8548,7 @@
 
 " Remove the autocommands for the events specified as arguments in all used
 " autogroups.
-function! Delete_autocommands(...)
+function Delete_autocommands(...)
     let augfile = tempname()
     while 1
 	try
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index b839bbb..4582d1a 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -2,7 +2,7 @@
 
 source shared.vim
 
-func! s:cleanup_buffers() abort
+func s:cleanup_buffers() abort
   for bnr in range(1, bufnr('$'))
     if bufloaded(bnr) && bufnr('%') != bnr
       execute 'bd! ' . bnr
@@ -1343,7 +1343,7 @@
 endfunc
 
 let g:setline_handled = v:false
-func! SetLineOne()
+func SetLineOne()
   if !g:setline_handled
     call setline(1, "(x)")
     let g:setline_handled = v:true
diff --git a/src/testdir/test_charsearch.vim b/src/testdir/test_charsearch.vim
index 8b313b5..17a49e0 100644
--- a/src/testdir/test_charsearch.vim
+++ b/src/testdir/test_charsearch.vim
@@ -1,5 +1,5 @@
 
-function! Test_charsearch()
+func Test_charsearch()
   enew!
   call append(0, ['Xabcdefghijkemnopqretuvwxyz',
 	      \ 'Yabcdefghijkemnopqretuvwxyz',
@@ -29,10 +29,10 @@
   normal! ;;p
   call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3))
   enew!
-endfunction
+endfunc
 
 " Test for t,f,F,T movement commands and 'cpo-;' setting
-function! Test_search_cmds()
+func Test_search_cmds()
   enew!
   call append(0, ["aaa two three four", "    zzz", "yyy   ",
 	      \ "bbb yee yoo four", "ccc two three four",
@@ -59,4 +59,4 @@
   call assert_equal('ccc', getline(5))
   call assert_equal('ddd yee y', getline(6))
   enew!
-endfunction
+endfunc
diff --git a/src/testdir/test_charsearch_utf8.vim b/src/testdir/test_charsearch_utf8.vim
index ade7dd4..399ac51 100644
--- a/src/testdir/test_charsearch_utf8.vim
+++ b/src/testdir/test_charsearch_utf8.vim
@@ -4,7 +4,7 @@
 endif
 
 " Test for t,f,F,T movement commands
-function! Test_search_cmds()
+func Test_search_cmds()
   new!
   call setline(1, "・最初から最後まで最強のVimは最高")
   1
@@ -17,6 +17,6 @@
   normal! ,
   call assert_equal([0, 1, 28, 0], getpos('.'))
   bw!
-endfunction
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index 48b7a23..e0e3e3b 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -5,7 +5,7 @@
 
 source view_util.vim
 
-func! Test_display_foldcolumn()
+func Test_display_foldcolumn()
   if !has("folding")
     return
   endif
@@ -38,7 +38,7 @@
   quit!
 endfunc
 
-func! Test_display_foldtext_mbyte()
+func Test_display_foldtext_mbyte()
   if !has("folding") || !has("multi_byte")
     return
   endif
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 63f58ae..7b31469 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -9,7 +9,7 @@
 
 " Needs to come first until the bug in getchar() is
 " fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ
-func! Test_edit_00b()
+func Test_edit_00b()
   new
   call setline(1, ['abc '])
   inoreabbr <buffer> h here some more
@@ -21,7 +21,7 @@
   bw!
 endfunc
 
-func! Test_edit_01()
+func Test_edit_01()
   " set for Travis CI?
   "  set nocp noesckeys
   new
@@ -61,7 +61,7 @@
   bw!
 endfunc
 
-func! Test_edit_02()
+func Test_edit_02()
   " Change cursor position in InsertCharPre command
   new
   call setline(1, 'abc')
@@ -101,7 +101,7 @@
   bw!
 endfunc
 
-func! Test_edit_03()
+func Test_edit_03()
   " Change cursor after <c-o> command to end of line
   new
   call setline(1, 'abc')
@@ -120,7 +120,7 @@
   bw!
 endfunc
 
-func! Test_edit_04()
+func Test_edit_04()
   " test for :stopinsert
   new
   call setline(1, 'abc')
@@ -132,7 +132,7 @@
   bw!
 endfunc
 
-func! Test_edit_05()
+func Test_edit_05()
   " test for folds being opened
   new
   call setline(1, ['abcX', 'abcX', 'zzzZ'])
@@ -154,7 +154,7 @@
   bw!
 endfunc
 
-func! Test_edit_06()
+func Test_edit_06()
   " Test in diff mode
   if !has("diff") || !executable("diff")
     return
@@ -176,7 +176,7 @@
   bw!
 endfunc
 
-func! Test_edit_07()
+func Test_edit_07()
   " 1) Test with completion <c-l> when popupmenu is visible
   new
   call setline(1, 'J')
@@ -213,7 +213,7 @@
   bw!
 endfunc
 
-func! Test_edit_08()
+func Test_edit_08()
   " reset insertmode from i_ctrl-r_=
   let g:bufnr = bufnr('%')
   new
@@ -227,7 +227,7 @@
   unlet g:bufnr
 endfunc
 
-func! Test_edit_09()
+func Test_edit_09()
   " test i_CTRL-\ combinations
   new
   call setline(1, ['abc', 'def', 'ghi'])
@@ -257,7 +257,7 @@
   bw!
 endfunc
 
-func! Test_edit_10()
+func Test_edit_10()
   " Test for starting selectmode
   new
   set selectmode=key keymodel=startsel
@@ -269,7 +269,7 @@
   bw!
 endfunc
 
-func! Test_edit_11()
+func Test_edit_11()
   " Test that indenting kicks in
   new
   set cindent
@@ -313,7 +313,7 @@
   bw!
 endfunc
 
-func! Test_edit_11_indentexpr()
+func Test_edit_11_indentexpr()
   " Test that indenting kicks in
   new
   " Use indentexpr instead of cindenting
@@ -340,7 +340,7 @@
   bw!
 endfunc
 
-func! Test_edit_12()
+func Test_edit_12()
   " Test changing indent in replace mode
   new
   call setline(1, ["\tabc", "\tdef"])
@@ -392,7 +392,7 @@
   bw!
 endfunc
 
-func! Test_edit_13()
+func Test_edit_13()
   " Test smartindenting
   if exists("+smartindent")
     new
@@ -405,7 +405,7 @@
   endif
 endfunc
 
-func! Test_edit_CR()
+func Test_edit_CR()
   " Test for <CR> in insert mode
   " basically only in quickfix mode ist tested, the rest
   " has been taken care of by other tests
@@ -438,7 +438,7 @@
   call delete('Xqflist.txt')
 endfunc
 
-func! Test_edit_CTRL_()
+func Test_edit_CTRL_()
   " disabled for Windows builds, why?
   if !has("multi_byte") || !has("rightleft") || has("win32")
     return
@@ -469,7 +469,7 @@
 endfunc
 
 " needs to come first, to have the @. register empty
-func! Test_edit_00a_CTRL_A()
+func Test_edit_00a_CTRL_A()
   " Test pressing CTRL-A
   new
   call setline(1, repeat([''], 5))
@@ -489,7 +489,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_EY()
+func Test_edit_CTRL_EY()
   " Ctrl-E/ Ctrl-Y in insert mode completion to scroll
   10new
   call setline(1, range(1, 100))
@@ -505,7 +505,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_G()
+func Test_edit_CTRL_G()
   new
   call setline(1, ['foobar', 'foobar', 'foobar'])
   call cursor(2, 4)
@@ -523,7 +523,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_I()
+func Test_edit_CTRL_I()
   " Tab in completion mode
   let path=expand("%:p:h")
   new
@@ -547,7 +547,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_K()
+func Test_edit_CTRL_K()
   " Test pressing CTRL-K (basically only dictionary completion and digraphs
   " the rest is already covered
   call writefile(['A', 'AA', 'AAA', 'AAAA'], 'Xdictionary.txt')
@@ -620,7 +620,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_L()
+func Test_edit_CTRL_L()
   " Test Ctrl-X Ctrl-L (line completion)
   new
   set complete=.
@@ -676,7 +676,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_N()
+func Test_edit_CTRL_N()
   " Check keyword completion
   new
   set complete=.
@@ -697,7 +697,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_O()
+func Test_edit_CTRL_O()
   " Check for CTRL-O in insert mode
   new
   inoreabbr <buffer> h here some more
@@ -722,7 +722,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_R()
+func Test_edit_CTRL_R()
   " Insert Register
   new
   call test_override("ALL", 1)
@@ -737,7 +737,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_S()
+func Test_edit_CTRL_S()
   " Test pressing CTRL-S (basically only spellfile completion)
   " the rest is already covered
   new
@@ -781,7 +781,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_T()
+func Test_edit_CTRL_T()
   " Check for CTRL-T and CTRL-X CTRL-T in insert mode
   " 1) increase indent
   new
@@ -858,7 +858,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_U()
+func Test_edit_CTRL_U()
   " Test 'completefunc'
   new
   " -1, -2 and -3 are special return values
@@ -917,7 +917,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_Z()
+func Test_edit_CTRL_Z()
   " Ctrl-Z when insertmode is not set inserts it literally
   new
   call setline(1, 'abc')
@@ -927,7 +927,7 @@
   " TODO: How to Test Ctrl-Z in insert mode, e.g. suspend?
 endfunc
 
-func! Test_edit_DROP()
+func Test_edit_DROP()
   if !has("dnd")
     return
   endif
@@ -943,7 +943,7 @@
   bw!
 endfunc
 
-func! Test_edit_CTRL_V()
+func Test_edit_CTRL_V()
   if has("ebcdic")
     return
   endif
@@ -971,7 +971,7 @@
   bw!
 endfunc
 
-func! Test_edit_F1()
+func Test_edit_F1()
   " Pressing <f1>
   new
   call feedkeys(":set im\<cr>\<f1>\<c-l>", 'tnix')
@@ -981,7 +981,7 @@
   bw
 endfunc
 
-func! Test_edit_F21()
+func Test_edit_F21()
   " Pressing <f21>
   " sends a netbeans command
   if has("netbeans_intg")
@@ -992,7 +992,7 @@
   endif
 endfunc
 
-func! Test_edit_HOME_END()
+func Test_edit_HOME_END()
   " Test Home/End Keys
   new
   set foldopen+=hor
@@ -1007,7 +1007,7 @@
   bw!
 endfunc
 
-func! Test_edit_INS()
+func Test_edit_INS()
   " Test for Pressing <Insert>
   new
   call setline(1, ['abc', 'def'])
@@ -1021,7 +1021,7 @@
   bw!
 endfunc
 
-func! Test_edit_LEFT_RIGHT()
+func Test_edit_LEFT_RIGHT()
   " Left, Shift-Left, Right, Shift-Right
   new
   call setline(1, ['abc def ghi', 'ABC DEF GHI', 'ZZZ YYY XXX'])
@@ -1068,7 +1068,7 @@
   bw!
 endfunc
 
-func! Test_edit_MOUSE()
+func Test_edit_MOUSE()
   " This is a simple test, since we not really using the mouse here
   if !has("mouse")
     return
@@ -1123,7 +1123,7 @@
   bw!
 endfunc
 
-func! Test_edit_PAGEUP_PAGEDOWN()
+func Test_edit_PAGEUP_PAGEDOWN()
   10new
   call setline(1, repeat(['abc def ghi'], 30))
   call cursor(1, 1)
@@ -1222,7 +1222,7 @@
   bw!
 endfunc
 
-func! Test_edit_forbidden()
+func Test_edit_forbidden()
   new
   " 1) edit in the sandbox is not allowed
   call setline(1, 'a')
@@ -1282,7 +1282,7 @@
   bw!
 endfunc
 
-func! Test_edit_rightleft()
+func Test_edit_rightleft()
   " Cursor in rightleft mode moves differently
   if !exists("+rightleft")
     return
diff --git a/src/testdir/test_eval_func.vim b/src/testdir/test_eval_func.vim
index 4fcd042..09d2f62 100644
--- a/src/testdir/test_eval_func.vim
+++ b/src/testdir/test_eval_func.vim
@@ -1,6 +1,6 @@
 " Vim script used in test_eval.in.  Needed for script-local function.
 
-func! s:Testje()
+func s:Testje()
   return "foo"
 endfunc
 let Bar = function('s:Testje')
diff --git a/src/testdir/test_fnameescape.vim b/src/testdir/test_fnameescape.vim
index cdff0df..5382b89 100644
--- a/src/testdir/test_fnameescape.vim
+++ b/src/testdir/test_fnameescape.vim
@@ -1,6 +1,6 @@
 
 " Test if fnameescape is correct for special chars like !
-function! Test_fnameescape()
+func Test_fnameescape()
   let fname = 'Xspa ce'
   let status = v:false
   try
@@ -18,4 +18,4 @@
   endtry
   call assert_true(status, "ExclamationMark")
   call delete(fname)
-endfunction
+endfunc
diff --git a/src/testdir/test_getcwd.vim b/src/testdir/test_getcwd.vim
index 5d97295..ca09878 100644
--- a/src/testdir/test_getcwd.vim
+++ b/src/testdir/test_getcwd.vim
@@ -1,112 +1,112 @@
-function! GetCwdInfo(win, tab)
- 	let tab_changed = 0
- 	let mod = ":t"
- 	if a:tab > 0 && a:tab != tabpagenr()
-   	let tab_changed = 1
-   	exec "tabnext " . a:tab
- 	endif
- 	let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
- 	if tab_changed
-   	tabprevious
- 	endif
- 	if a:win == 0 && a:tab == 0
-   	let dirname = fnamemodify(getcwd(), mod)
-   	let lflag = haslocaldir()
- 	elseif a:tab == 0
-   	let dirname = fnamemodify(getcwd(a:win), mod)
-   	let lflag = haslocaldir(a:win)
- 	else
-   	let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
-   	let lflag = haslocaldir(a:win, a:tab)
- 	endif
- 	return bufname . ' ' . dirname . ' ' . lflag
-endfunction
+func GetCwdInfo(win, tab)
+  let tab_changed = 0
+  let mod = ":t"
+  if a:tab > 0 && a:tab != tabpagenr()
+    let tab_changed = 1
+    exec "tabnext " . a:tab
+  endif
+  let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
+  if tab_changed
+    tabprevious
+  endif
+  if a:win == 0 && a:tab == 0
+    let dirname = fnamemodify(getcwd(), mod)
+    let lflag = haslocaldir()
+  elseif a:tab == 0
+    let dirname = fnamemodify(getcwd(a:win), mod)
+    let lflag = haslocaldir(a:win)
+  else
+    let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
+    let lflag = haslocaldir(a:win, a:tab)
+  endif
+  return bufname . ' ' . dirname . ' ' . lflag
+endfunc
 
 " Do all test in a separate window to avoid E211 when we recursively
 " delete the Xtopdir directory during cleanup
 function SetUp()
-	set visualbell
-	set nocp viminfo+=nviminfo
+  set visualbell
+  set nocp viminfo+=nviminfo
 
-	" On windows a swapfile in Xtopdir prevents it from being cleaned up.
-	set noswapfile
+  " On windows a swapfile in Xtopdir prevents it from being cleaned up.
+  set noswapfile
 
-	" On windows a stale "Xtopdir" directory may exist, remove it so that
-	" we start from a clean state.
-	call delete("Xtopdir", "rf")
-	new
-	call mkdir('Xtopdir')
-	cd Xtopdir
-	let g:topdir = getcwd()
-	call mkdir('Xdir1')
-	call mkdir('Xdir2')
-	call mkdir('Xdir3')
+  " On windows a stale "Xtopdir" directory may exist, remove it so that
+  " we start from a clean state.
+  call delete("Xtopdir", "rf")
+  new
+  call mkdir('Xtopdir')
+  cd Xtopdir
+  let g:topdir = getcwd()
+  call mkdir('Xdir1')
+  call mkdir('Xdir2')
+  call mkdir('Xdir3')
 endfunction
 
 let g:cwd=getcwd()
 function TearDown()
-	q
-	exec "cd " . g:cwd
-	call delete("Xtopdir", "rf")
+  q
+  exec "cd " . g:cwd
+  call delete("Xtopdir", "rf")
 endfunction
 
 function Test_GetCwd()
-	new a
-	new b
-	new c
-	3wincmd w
-	lcd Xdir1
-	call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	wincmd W
-	call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	wincmd W
-	lcd Xdir3
-	call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
-	call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
-	call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
-	call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	wincmd W
-	call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
-	call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
-	call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
-	call assert_equal(g:topdir, getcwd(-1))
+  new a
+  new b
+  new c
+  3wincmd w
+  lcd Xdir1
+  call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  wincmd W
+  call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  wincmd W
+  lcd Xdir3
+  call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
+  call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
+  call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
+  call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  wincmd W
+  call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
+  call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
+  call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
+  call assert_equal(g:topdir, getcwd(-1))
 
-	tabnew x
-	new y
-	new z
-	3wincmd w
-	call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	wincmd W
-	lcd Xdir2
-	call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	wincmd W
-	lcd Xdir3
-	call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
-	call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
-	call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
-	call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
-	call assert_equal(g:topdir, getcwd(-1))
-	let tp_nr = tabpagenr()
-	tabrewind
-	call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
-	call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
-	call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
-	call assert_equal(g:topdir, getcwd(-1))
+  tabnew x
+  new y
+  new z
+  3wincmd w
+  call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  wincmd W
+  lcd Xdir2
+  call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  wincmd W
+  lcd Xdir3
+  call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
+  call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
+  call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
+  call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
+  call assert_equal(g:topdir, getcwd(-1))
+  let tp_nr = tabpagenr()
+  tabrewind
+  call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
+  call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
+  call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
+  call assert_equal(g:topdir, getcwd(-1))
 endfunc
 
 function Test_GetCwd_lcd_shellslash()
-	new
-	let root = fnamemodify('/', ':p')
-	exe 'lcd '.root
-	let cwd = getcwd()
-	if !exists('+shellslash') || &shellslash
-		call assert_equal(cwd[-1:], '/')
-	else
-		call assert_equal(cwd[-1:], '\')
-	endif
+  new
+  let root = fnamemodify('/', ':p')
+  exe 'lcd '.root
+  let cwd = getcwd()
+  if !exists('+shellslash') || &shellslash
+    call assert_equal(cwd[-1:], '/')
+  else
+    call assert_equal(cwd[-1:], '\')
+  endif
 endfunc
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index 1e8efea..67c7506 100644
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -38,15 +38,15 @@
   call assert_fails("hi Crash term='asdf", "E475:")
 endfunc
 
-function! HighlightArgs(name)
+func HighlightArgs(name)
   return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\<xxx\>', '', '')
-endfunction
+endfunc
 
-function! IsColorable()
+func IsColorable()
   return has('gui_running') || str2nr(&t_Co) >= 8
-endfunction
+endfunc
 
-function! HiCursorLine()
+func HiCursorLine()
   let hiCursorLine = HighlightArgs('CursorLine')
   if has('gui_running')
     let guibg = matchstr(hiCursorLine, 'guibg=\w\+')
@@ -57,9 +57,9 @@
     let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray'
   endif
   return [hiCursorLine, hi_ul, hi_bg]
-endfunction
+endfunc
 
-function! Check_lcs_eol_attrs(attrs, row, col)
+func Check_lcs_eol_attrs(attrs, row, col)
   let save_lcs = &lcs
   set list
 
@@ -67,7 +67,7 @@
 
   set nolist
   let &lcs = save_lcs
-endfunction
+endfunc
 
 func Test_highlight_eol_with_cursorline()
   let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()
diff --git a/src/testdir/test_hlsearch.vim b/src/testdir/test_hlsearch.vim
index 0b59440..d4db4b7 100644
--- a/src/testdir/test_hlsearch.vim
+++ b/src/testdir/test_hlsearch.vim
@@ -1,6 +1,6 @@
 " Test for v:hlsearch
 
-function! Test_hlsearch()
+func Test_hlsearch()
   new
   call setline(1, repeat(['aaa'], 10))
   set hlsearch nolazyredraw
@@ -30,7 +30,7 @@
   call garbagecollect(1)
   call getchar(1)
   enew!
-endfunction
+endfunc
 
 func Test_hlsearch_hangs()
   if !has('reltime') || !has('float')
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index f7e1590..e1c733f 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -142,7 +142,7 @@
   delfunc CompleteFunc
 endfunc
 
-function! s:CompleteDone_CompleteFuncDict( findstart, base )
+func s:CompleteDone_CompleteFuncDict( findstart, base )
   if a:findstart
     return 0
   endif
@@ -159,9 +159,9 @@
             \ }
           \ ]
         \ }
-endfunction
+endfunc
 
-function! s:CompleteDone_CheckCompletedItemDict()
+func s:CompleteDone_CheckCompletedItemDict()
   call assert_equal( 'aword',          v:completed_item[ 'word' ] )
   call assert_equal( 'wrd',            v:completed_item[ 'abbr' ] )
   call assert_equal( 'extra text',     v:completed_item[ 'menu' ] )
@@ -170,7 +170,7 @@
   call assert_equal( 'test',           v:completed_item[ 'user_data' ] )
 
   let s:called_completedone = 1
-endfunction
+endfunc
 
 function Test_CompleteDoneDict()
   au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDict()
@@ -186,7 +186,7 @@
   au! CompleteDone
 endfunc
 
-function! s:CompleteDone_CompleteFuncDictNoUserData( findstart, base )
+func s:CompleteDone_CompleteFuncDictNoUserData( findstart, base )
   if a:findstart
     return 0
   endif
@@ -202,9 +202,9 @@
             \ }
           \ ]
         \ }
-endfunction
+endfunc
 
-function! s:CompleteDone_CheckCompletedItemDictNoUserData()
+func s:CompleteDone_CheckCompletedItemDictNoUserData()
   call assert_equal( 'aword',          v:completed_item[ 'word' ] )
   call assert_equal( 'wrd',            v:completed_item[ 'abbr' ] )
   call assert_equal( 'extra text',     v:completed_item[ 'menu' ] )
@@ -213,7 +213,7 @@
   call assert_equal( '',               v:completed_item[ 'user_data' ] )
 
   let s:called_completedone = 1
-endfunction
+endfunc
 
 function Test_CompleteDoneDictNoUserData()
   au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDictNoUserData()
@@ -229,15 +229,15 @@
   au! CompleteDone
 endfunc
 
-function! s:CompleteDone_CompleteFuncList( findstart, base )
+func s:CompleteDone_CompleteFuncList( findstart, base )
   if a:findstart
     return 0
   endif
 
   return [ 'aword' ]
-endfunction
+endfunc
 
-function! s:CompleteDone_CheckCompletedItemList()
+func s:CompleteDone_CheckCompletedItemList()
   call assert_equal( 'aword', v:completed_item[ 'word' ] )
   call assert_equal( '',      v:completed_item[ 'abbr' ] )
   call assert_equal( '',      v:completed_item[ 'menu' ] )
@@ -246,7 +246,7 @@
   call assert_equal( '',      v:completed_item[ 'user_data' ] )
 
   let s:called_completedone = 1
-endfunction
+endfunc
 
 function Test_CompleteDoneList()
   au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemList()
diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim
index a95d591..7a31dcc 100644
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -1,34 +1,34 @@
 " Test for lambda and closure
 
-function! Test_lambda_feature()
+func Test_lambda_feature()
   call assert_equal(1, has('lambda'))
-endfunction
+endfunc
 
-function! Test_lambda_with_filter()
+func Test_lambda_with_filter()
   let s:x = 2
   call assert_equal([2, 3], filter([1, 2, 3], {i, v -> v >= s:x}))
-endfunction
+endfunc
 
-function! Test_lambda_with_map()
+func Test_lambda_with_map()
   let s:x = 1
   call assert_equal([2, 3, 4], map([1, 2, 3], {i, v -> v + s:x}))
-endfunction
+endfunc
 
-function! Test_lambda_with_sort()
+func Test_lambda_with_sort()
   call assert_equal([1, 2, 3, 4, 7], sort([3,7,2,1,4], {a, b -> a - b}))
-endfunction
+endfunc
 
-function! Test_lambda_with_timer()
+func Test_lambda_with_timer()
   if !has('timers')
     return
   endif
 
   let s:n = 0
   let s:timer_id = 0
-  function! s:Foo()
+  func! s:Foo()
     "let n = 0
     let s:timer_id = timer_start(50, {-> execute("let s:n += 1 | echo s:n", "")}, {"repeat": -1})
-  endfunction
+  endfunc
 
   call s:Foo()
   sleep 200ms
@@ -40,12 +40,12 @@
   call assert_true(m > 1)
   call assert_true(s:n > m + 1)
   call assert_true(s:n < 9)
-endfunction
+endfunc
 
-function! Test_lambda_with_partial()
+func Test_lambda_with_partial()
   let l:Cb = function({... -> ['zero', a:1, a:2, a:3]}, ['one', 'two'])
   call assert_equal(['zero', 'one', 'two', 'three'], l:Cb('three'))
-endfunction
+endfunc
 
 function Test_lambda_fails()
   call assert_equal(3, {a, b -> a + b}(1, 2))
@@ -58,59 +58,59 @@
   call assert_equal('foo', x['>'])
 endfunc
 
-function! Test_lambda_capture_by_reference()
+func Test_lambda_capture_by_reference()
   let v = 1
   let l:F = {x -> x + v}
   let v = 2
   call assert_equal(12, l:F(10))
-endfunction
+endfunc
 
-function! Test_lambda_side_effect()
-  function! s:update_and_return(arr)
+func Test_lambda_side_effect()
+  func! s:update_and_return(arr)
     let a:arr[1] = 5
     return a:arr
-  endfunction
+  endfunc
 
-  function! s:foo(arr)
+  func! s:foo(arr)
     return {-> s:update_and_return(a:arr)}
-  endfunction
+  endfunc
 
   let arr = [3,2,1]
   call assert_equal([3, 5, 1], s:foo(arr)())
-endfunction
+endfunc
 
-function! Test_lambda_refer_local_variable_from_other_scope()
-  function! s:foo(X)
+func Test_lambda_refer_local_variable_from_other_scope()
+  func! s:foo(X)
     return a:X() " refer l:x in s:bar()
-  endfunction
+  endfunc
 
-  function! s:bar()
+  func! s:bar()
     let x = 123
     return s:foo({-> x})
-  endfunction
+  endfunc
 
   call assert_equal(123, s:bar())
-endfunction
+endfunc
 
-function! Test_lambda_do_not_share_local_variable()
-  function! s:define_funcs()
+func Test_lambda_do_not_share_local_variable()
+  func! s:define_funcs()
     let l:One = {-> split(execute("let a = 'abc' | echo a"))[0]}
     let l:Two = {-> exists("a") ? a : "no"}
     return [l:One, l:Two]
-  endfunction
+  endfunc
 
   let l:F = s:define_funcs()
 
   call assert_equal('no', l:F[1]())
   call assert_equal('abc', l:F[0]())
   call assert_equal('no', l:F[1]())
-endfunction
+endfunc
 
-function! Test_lambda_closure_counter()
-  function! s:foo()
+func Test_lambda_closure_counter()
+  func! s:foo()
     let x = 0
     return {-> [execute("let x += 1"), x][-1]}
-  endfunction
+  endfunc
 
   let l:F = s:foo()
   call test_garbagecollect_now()
@@ -118,52 +118,52 @@
   call assert_equal(2, l:F())
   call assert_equal(3, l:F())
   call assert_equal(4, l:F())
-endfunction
+endfunc
 
-function! Test_lambda_with_a_var()
-  function! s:foo()
+func Test_lambda_with_a_var()
+  func! s:foo()
     let x = 2
     return {... -> a:000 + [x]}
-  endfunction
-  function! s:bar()
+  endfunc
+  func! s:bar()
     return s:foo()(1)
-  endfunction
+  endfunc
 
   call assert_equal([1, 2], s:bar())
-endfunction
+endfunc
 
-function! Test_lambda_call_lambda_from_lambda()
-  function! s:foo(x)
+func Test_lambda_call_lambda_from_lambda()
+  func! s:foo(x)
     let l:F1 = {-> {-> a:x}}
     return {-> l:F1()}
-  endfunction
+  endfunc
 
   let l:F = s:foo(1)
   call assert_equal(1, l:F()())
-endfunction
+endfunc
 
-function! Test_lambda_delfunc()
-  function! s:gen()
+func Test_lambda_delfunc()
+  func! s:gen()
     let pl = l:
     let l:Foo = {-> get(pl, "Foo", get(pl, "Bar", {-> 0}))}
     let l:Bar = l:Foo
     delfunction l:Foo
     return l:Bar
-  endfunction
+  endfunc
 
   let l:F = s:gen()
   call assert_fails(':call l:F()', 'E933:')
-endfunction
+endfunc
 
-function! Test_lambda_scope()
-  function! s:NewCounter()
+func Test_lambda_scope()
+  func! s:NewCounter()
     let c = 0
     return {-> [execute('let c += 1'), c][-1]}
-  endfunction
+  endfunc
 
-  function! s:NewCounter2()
+  func! s:NewCounter2()
     return {-> [execute('let c += 100'), c][-1]}
-  endfunction
+  endfunc
 
   let l:C = s:NewCounter()
   let l:D = s:NewCounter2()
@@ -171,37 +171,37 @@
   call assert_equal(1, l:C())
   call assert_fails(':call l:D()', 'E15:') " E121: then E15:
   call assert_equal(2, l:C())
-endfunction
+endfunc
 
-function! Test_lambda_share_scope()
-  function! s:New()
+func Test_lambda_share_scope()
+  func! s:New()
     let c = 0
     let l:Inc0 = {-> [execute('let c += 1'), c][-1]}
     let l:Dec0 = {-> [execute('let c -= 1'), c][-1]}
     return [l:Inc0, l:Dec0]
-  endfunction
+  endfunc
 
   let [l:Inc, l:Dec] = s:New()
 
   call assert_equal(1, l:Inc())
   call assert_equal(2, l:Inc())
   call assert_equal(1, l:Dec())
-endfunction
+endfunc
 
-function! Test_lambda_circular_reference()
-  function! s:Foo()
+func Test_lambda_circular_reference()
+  func! s:Foo()
     let d = {}
     let d.f = {-> d}
     return d.f
-  endfunction
+  endfunc
 
   call s:Foo()
   call test_garbagecollect_now()
   let i = 0 | while i < 10000 | call s:Foo() | let i+= 1 | endwhile
   call test_garbagecollect_now()
-endfunction
+endfunc
 
-function! Test_lambda_combination()
+func Test_lambda_combination()
   call assert_equal(2, {x -> {x -> x}}(1)(2))
   call assert_equal(10, {y -> {x -> x(y)(10)}({y -> y})}({z -> z}))
   call assert_equal(5.0, {x -> {y -> x / y}}(10)(2.0))
@@ -214,17 +214,17 @@
   let Z = {f -> {x -> f({y -> x(x)(y)})}({x -> f({y -> x(x)(y)})})}
   let Fact = {f -> {x -> x == 0 ? 1 : x * f(x - 1)}}
   call assert_equal(120, Z(Fact)(5))
-endfunction
+endfunc
 
-function! Test_closure_counter()
-  function! s:foo()
+func Test_closure_counter()
+  func! s:foo()
     let x = 0
-    function! s:bar() closure
+    func! s:bar() closure
       let x += 1
       return x
-    endfunction
+    endfunc
     return function('s:bar')
-  endfunction
+  endfunc
 
   let l:F = s:foo()
   call test_garbagecollect_now()
@@ -232,30 +232,30 @@
   call assert_equal(2, l:F())
   call assert_equal(3, l:F())
   call assert_equal(4, l:F())
-endfunction
+endfunc
 
-function! Test_closure_unlet()
-  function! s:foo()
+func Test_closure_unlet()
+  func! s:foo()
     let x = 1
-    function! s:bar() closure
+    func! s:bar() closure
       unlet x
-    endfunction
+    endfunc
     call s:bar()
     return l:
-  endfunction
+  endfunc
 
   call assert_false(has_key(s:foo(), 'x'))
   call test_garbagecollect_now()
-endfunction
+endfunc
 
-function! LambdaFoo()
+func LambdaFoo()
   let x = 0
-  function! LambdaBar() closure
+  func! LambdaBar() closure
     let x += 1
     return x
-  endfunction
+  endfunc
   return function('LambdaBar')
-endfunction
+endfunc
 
 func Test_closure_refcount()
   let g:Count = LambdaFoo()
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 999d4db..19f1373 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -499,19 +499,19 @@
 endfunc
 
 " No remove() of write-protected scope-level variable
-func! Tfunc(this_is_a_long_parameter_name)
+func Tfunc1(this_is_a_long_parameter_name)
   call assert_fails("call remove(a:, 'this_is_a_long_parameter_name')", 'E795')
-endfun
+endfunc
 func Test_dict_scope_var_remove()
-  call Tfunc('testval')
+  call Tfunc1('testval')
 endfunc
 
 " No extend() of write-protected scope-level variable
-func! Tfunc(this_is_a_long_parameter_name)
+func Tfunc2(this_is_a_long_parameter_name)
   call assert_fails("call extend(a:, {'this_is_a_long_parameter_name': 1234})", 'E742')
 endfunc
 func Test_dict_scope_var_extend()
-  call Tfunc('testval')
+  call Tfunc2('testval')
 endfunc
 
 " No :unlet of variable in locked scope
diff --git a/src/testdir/test_listlbr.vim b/src/testdir/test_listlbr.vim
index 7856ee8..29e797d 100644
--- a/src/testdir/test_listlbr.vim
+++ b/src/testdir/test_listlbr.vim
@@ -13,9 +13,9 @@
   return ScreenLines(a:lnum, a:width)
 endfunction
 
-function! s:compare_lines(expect, actual)
+func s:compare_lines(expect, actual)
   call assert_equal(join(a:expect, "\n"), join(a:actual, "\n"))
-endfunction
+endfunc
 
 function s:test_windows(...)
   call NewWindow(10, 20)
diff --git a/src/testdir/test_listlbr_utf8.vim b/src/testdir/test_listlbr_utf8.vim
index b648a33..c38e0c5 100644
--- a/src/testdir/test_listlbr_utf8.vim
+++ b/src/testdir/test_listlbr_utf8.vim
@@ -9,15 +9,15 @@
 
 source view_util.vim
 
-function s:screen_lines(lnum, width) abort
+func s:screen_lines(lnum, width) abort
   return ScreenLines(a:lnum, a:width)
-endfunction
+endfunc
 
-function! s:compare_lines(expect, actual)
+func s:compare_lines(expect, actual)
   call assert_equal(a:expect, a:actual)
-endfunction
+endfunc
 
-function s:screen_attr(lnum, chars, ...) abort
+func s:screen_attr(lnum, chars, ...) abort
   let line = getline(a:lnum)
   let attr = []
   let prefix = get(a:000, 0, 0)
@@ -26,18 +26,18 @@
     let attr += [screenattr(a:lnum, scol + prefix)]
   endfor
   return attr
-endfunction
+endfunc
 
-function s:test_windows(...)
+func s:test_windows(...)
   call NewWindow(10, 20)
   setl ts=4 sw=4 sts=4 linebreak sbr=+ wrap
   exe get(a:000, 0, '')
-endfunction
+endfunc
 
-function s:close_windows(...)
+func s:close_windows(...)
   call CloseWindow()
   exe get(a:000, 0, '')
-endfunction
+endfunc
 
 func Test_linebreak_with_fancy_listchars()
   call s:test_windows("setl list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6")
diff --git a/src/testdir/test_marks.vim b/src/testdir/test_marks.vim
index 8858cd2..70c4e83 100644
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -1,6 +1,6 @@
 
 " Test that a deleted mark is restored after delete-undo-redo-undo.
-function! Test_Restore_DelMark()
+func Test_Restore_DelMark()
   enew!
   call append(0, ["	textline A", "	textline B", "	textline C"])
   normal! 2gg
@@ -11,10 +11,10 @@
   call assert_equal(2, pos[1])
   call assert_equal(1, pos[2])
   enew!
-endfunction
+endfunc
 
 " Test that CTRL-A and CTRL-X updates last changed mark '[, '].
-function! Test_Incr_Marks()
+func Test_Incr_Marks()
   enew!
   call append(0, ["123 123 123", "123 123 123", "123 123 123"])
   normal! gg
@@ -23,7 +23,7 @@
   call assert_equal("123 XXXXXXX", getline(2))
   call assert_equal("XXX 123 123", getline(3))
   enew!
-endfunction
+endfunc
 
 func Test_setpos()
   new one
diff --git a/src/testdir/test_matchadd_conceal.vim b/src/testdir/test_matchadd_conceal.vim
index 123bdf0..8d774a0 100644
--- a/src/testdir/test_matchadd_conceal.vim
+++ b/src/testdir/test_matchadd_conceal.vim
@@ -9,7 +9,7 @@
 
 source shared.vim
 
-function! Test_simple_matchadd()
+func Test_simple_matchadd()
   new
 
   1put='# This is a Test'
@@ -29,9 +29,9 @@
   call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
 
   quit!
-endfunction
+endfunc
 
-function! Test_simple_matchadd_and_conceal()
+func Test_simple_matchadd_and_conceal()
   new
   setlocal concealcursor=n conceallevel=1
 
@@ -51,9 +51,9 @@
   call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
 
   quit!
-endfunction
+endfunc
 
-function! Test_matchadd_and_conceallevel_3()
+func Test_matchadd_and_conceallevel_3()
   new
 
   setlocal conceallevel=3
@@ -92,9 +92,9 @@
 
   syntax off
   quit!
-endfunction
+endfunc
 
-function! Test_default_conceal_char()
+func Test_default_conceal_char()
   new
   setlocal concealcursor=n conceallevel=1
 
@@ -128,9 +128,9 @@
 
   let &listchars = listchars_save
   quit!
-endfunction
+endfunc
 
-function! Test_syn_and_match_conceal()
+func Test_syn_and_match_conceal()
   new
   setlocal concealcursor=n conceallevel=1
 
@@ -164,9 +164,9 @@
 
   syntax off
   quit!
-endfunction
+endfunc
 
-function! Test_clearmatches()
+func Test_clearmatches()
   new
   setlocal concealcursor=n conceallevel=1
 
@@ -203,9 +203,9 @@
   call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0])
 
   quit!
-endfunction
+endfunc
 
-function! Test_using_matchaddpos()
+func Test_using_matchaddpos()
   new
   setlocal concealcursor=n conceallevel=1
   " set filetype and :syntax on to change screenattr()
@@ -234,9 +234,9 @@
 
   syntax off
   quit!
-endfunction
+endfunc
 
-function! Test_matchadd_repeat_conceal_with_syntax_off()
+func Test_matchadd_repeat_conceal_with_syntax_off()
   new
 
   " To test targets in the same line string is replaced with conceal char
@@ -253,9 +253,9 @@
   call assert_equal('t_tt', Screenline(2))
 
   quit!
-endfunction
+endfunc
 
-function! Test_matchadd_and_syn_conceal()
+func Test_matchadd_and_syn_conceal()
   new
   let cnt='Inductive bool : Type := | true : bool | false : bool.'
   let expect = 'Inductive - : Type := | true : - | false : -.'
@@ -276,4 +276,4 @@
   call assert_notequal(screenattr(1, 10) , screenattr(1, 11))
   call assert_notequal(screenattr(1, 11) , screenattr(1, 12))
   call assert_equal(screenattr(1, 11) , screenattr(1, 32))
-endfunction
+endfunc
diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim
index 34d3ee2..68792fb 100644
--- a/src/testdir/test_matchadd_conceal_utf8.vim
+++ b/src/testdir/test_matchadd_conceal_utf8.vim
@@ -7,19 +7,19 @@
   set term=ansi
 endif
 
-function! s:screenline(lnum) abort
+func s:screenline(lnum) abort
   let line = []
   for c in range(1, winwidth(0))
     call add(line, nr2char(screenchar(a:lnum, c)))
   endfor
   return s:trim(join(line, ''))
-endfunction
+endfunc
 
-function! s:trim(str) abort
+func s:trim(str) abort
   return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$')
-endfunction
+endfunc
 
-function! Test_match_using_multibyte_conceal_char()
+func Test_match_using_multibyte_conceal_char()
   new
   setlocal concealcursor=n conceallevel=1
 
@@ -40,4 +40,4 @@
   call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
 
   quit!
-endfunction
+endfunc
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index 0a7f3f5..4bdc136 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -43,7 +43,7 @@
 " indicator (e.g., "-- INSERT --") when ":stopinsert" is invoked.  Message
 " output could then be disturbed when 'cmdheight' was greater than one.
 " This test ensures that the bugfix for this issue remains in place.
-function! Test_stopinsert_does_not_break_message_output()
+func Test_stopinsert_does_not_break_message_output()
   set cmdheight=2
   redraw!
 
@@ -58,7 +58,7 @@
   redraw!
 
   set cmdheight&
-endfunction
+endfunc
 
 func Test_message_completion()
   call feedkeys(":message \<C-A>\<C-B>\"\<CR>", 'tx')
diff --git a/src/testdir/test_number.vim b/src/testdir/test_number.vim
index 59debce..415aefc 100644
--- a/src/testdir/test_number.vim
+++ b/src/testdir/test_number.vim
@@ -2,23 +2,23 @@
 
 source view_util.vim
 
-func! s:screen_lines(start, end) abort
+func s:screen_lines(start, end) abort
   return ScreenLines([a:start, a:end], 8)
 endfunc
 
-func! s:compare_lines(expect, actual)
+func s:compare_lines(expect, actual)
   call assert_equal(a:expect, a:actual)
 endfunc
 
-func! s:test_windows(h, w) abort
+func s:test_windows(h, w) abort
   call NewWindow(a:h, a:w)
 endfunc
 
-func! s:close_windows() abort
+func s:close_windows() abort
   call CloseWindow()
 endfunc
 
-func! s:validate_cursor() abort
+func s:validate_cursor() abort
   " update skipcol.
   " wincol():
   "   f_wincol
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index d3ac21c..70f6b96 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -1,6 +1,6 @@
 " Test for options
 
-function! Test_whichwrap()
+func Test_whichwrap()
   set whichwrap=b,s
   call assert_equal('b,s', &whichwrap)
 
@@ -20,16 +20,16 @@
   call assert_equal('h', &whichwrap)
 
   set whichwrap&
-endfunction
+endfunc
 
-function! Test_isfname()
+func Test_isfname()
   " This used to cause Vim to access uninitialized memory.
   set isfname=
   call assert_equal("~X", expand("~X"))
   set isfname&
-endfunction
+endfunc
 
-function Test_wildchar()
+func Test_wildchar()
   " Empty 'wildchar' used to access invalid memory.
   call assert_fails('set wildchar=', 'E521:')
   call assert_fails('set wildchar=abc', 'E521:')
@@ -40,9 +40,9 @@
   let a=execute('set wildchar?')
   call assert_equal("\n  wildchar=<Esc>", a)
   set wildchar&
-endfunction
+endfunc
 
-function Test_options()
+func Test_options()
   let caught = 'ok'
   try
     options
@@ -53,9 +53,9 @@
 
   " close option-window
   close
-endfunction
+endfunc
 
-function Test_path_keep_commas()
+func Test_path_keep_commas()
   " Test that changing 'path' keeps two commas.
   set path=foo,,bar
   set path-=bar
@@ -63,7 +63,7 @@
   call assert_equal('foo,,bar', &path)
 
   set path&
-endfunction
+endfunc
 
 func Test_signcolumn()
   if has('signs')
diff --git a/src/testdir/test_partial.vim b/src/testdir/test_partial.vim
index 3e968da..b180510 100644
--- a/src/testdir/test_partial.vim
+++ b/src/testdir/test_partial.vim
@@ -114,9 +114,9 @@
   call OuterCall()
 endfunc
 
-function! s:cache_clear() dict
+func s:cache_clear() dict
   return self.name
-endfunction
+endfunc
 
 func Test_script_function_in_dict()
   let s:obj = {'name': 'foo'}
@@ -136,10 +136,10 @@
   call assert_equal('bar', B())
 endfunc
 
-function! s:cache_arg(arg) dict
+func s:cache_arg(arg) dict
   let s:result = self.name . '/' . a:arg
   return s:result
-endfunction
+endfunc
 
 func Test_script_function_in_dict_arg()
   let s:obj = {'name': 'foo'}
diff --git a/src/testdir/test_smartindent.vim b/src/testdir/test_smartindent.vim
index 9e93a55..e89ad19 100644
--- a/src/testdir/test_smartindent.vim
+++ b/src/testdir/test_smartindent.vim
@@ -1,24 +1,24 @@
 " Tests for smartindent
 
 " Tests for not doing smart indenting when it isn't set.
-function! Test_nosmartindent()
+func Test_nosmartindent()
   new
   call append(0, ["		some test text",
-      	\ "		test text",
-      	\ "test text",
-      	\ "		test text"])
+	\ "		test text",
+	\ "test text",
+	\ "		test text"])
   set nocindent nosmartindent autoindent
   exe "normal! gg/some\<CR>"
   exe "normal! 2cc#test\<Esc>"
   call assert_equal("		#test", getline(1))
   enew! | close
-endfunction
+endfunc
 
-function MyIndent()
-endfunction
+func MyIndent()
+endfunc
 
 " When 'indentexpr' is set, setting 'si' has no effect.
-function Test_smartindent_has_no_effect()
+func Test_smartindent_has_no_effect()
   new
   exe "normal! i\<Tab>one\<Esc>"
   set noautoindent
@@ -36,6 +36,6 @@
   set smartindent&
   set indentexpr&
   bwipe!
-endfunction
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim
index 1c23f8c..d84daa7 100644
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -1,6 +1,6 @@
 " Tests for multi-line regexps with ":s".
 
-function! Test_multiline_subst()
+func Test_multiline_subst()
   enew!
   call append(0, ["1 aa",
 	      \ "bb",
@@ -38,9 +38,9 @@
   call assert_equal('7x7f', getline(12))
   call assert_equal('xxxxx', getline(13))
   enew!
-endfunction
+endfunc
 
-function! Test_substitute_variants()
+func Test_substitute_variants()
   " Validate that all the 2-/3-letter variants which embed the flags into the
   " command name actually work.
   enew!
@@ -105,7 +105,7 @@
       call assert_equal(var.exp, getline('.'), msg)
     endfor
   endfor
-endfunction
+endfunc
 
 func Test_substitute_repeat()
   " This caused an invalid memory access.
@@ -401,9 +401,9 @@
 
   " List entry format: [input, cmd, output]
   let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/",
-	      \ 			['a\a']],
+	      \				['a\a']],
 	      \ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/",
-	      \   			['b\b']],
+	      \				['b\b']],
 	      \ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\<C-V>\<C-M>', '')/",
 	      \				["c\<C-V>", 'c']],
 	      \ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\<C-V>\<C-M>', '')/",
diff --git a/src/testdir/test_system.vim b/src/testdir/test_system.vim
index 5f766c7..25061ea 100644
--- a/src/testdir/test_system.vim
+++ b/src/testdir/test_system.vim
@@ -1,6 +1,6 @@
 " Tests for system() and systemlist()
 
-function! Test_System()
+func Test_System()
   if !executable('echo') || !executable('cat') || !executable('wc')
     return
   endif
@@ -45,9 +45,9 @@
   bwipe!
 
   call assert_fails('call system("wc -l", 99999)', 'E86:')
-endfunction
+endfunc
 
-function! Test_system_exmode()
+func Test_system_exmode()
   if has('unix') " echo $? only works on Unix
     let cmd = ' -es -u NONE -c "source Xscript" +q; echo "result=$?"'
     " Need to put this in a script, "catch" isn't found after an unknown
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 71cf1b2..6cd2621 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -122,7 +122,7 @@
   unlet g:job
 endfunc
 
-func! s:Nasty_exit_cb(job, st)
+func s:Nasty_exit_cb(job, st)
   exe g:buf . 'bwipe!'
   let g:buf = 0
 endfunc
@@ -1727,3 +1727,27 @@
   let term = term_start('false', {'term_finish': 'close'})
   call WaitForAssert({-> assert_equal(v:null, term_getjob(term)) })
 endfunc
+
+func Test_term_gettitle()
+  if !has('title') || empty(&t_ts)
+    return
+  endif
+  " TODO: this fails on Travis
+  return
+
+  " term_gettitle() returns an empty string for a non-terminal buffer
+  " or for a non-existing buffer.
+  call assert_equal('', term_gettitle(bufnr('%')))
+  call assert_equal('', term_gettitle(bufnr('$') + 1))
+
+  let term = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'])
+  call WaitForAssert({-> assert_equal('[No Name] - VIM', term_gettitle(term)) })
+
+  call term_sendkeys(term, ":e Xfoo\r")
+  call WaitForAssert({-> assert_match('Xfoo (.*[/\\]testdir) - VIM', term_gettitle(term)) })
+
+  call term_sendkeys(term, ":set titlestring=foo\r")
+  call WaitForAssert({-> assert_equal('foo', term_gettitle(term)) })
+
+  exe term . 'bwipe!'
+endfunc
diff --git a/src/testdir/test_textobjects.vim b/src/testdir/test_textobjects.vim
index 6a2f504..3c403ab 100644
--- a/src/testdir/test_textobjects.vim
+++ b/src/testdir/test_textobjects.vim
@@ -236,7 +236,7 @@
   %delete _
 endfunc
 
-func! Test_sentence_with_cursor_on_delimiter()
+func Test_sentence_with_cursor_on_delimiter()
   enew!
   call setline(1, "A '([sentence.])'  A sentence.")
 
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
index 24e3db8..699df62 100644
--- a/src/testdir/test_utf8.vim
+++ b/src/testdir/test_utf8.vim
@@ -25,17 +25,17 @@
 endfunc
 
 " Test for customlist completion
-function! CustomComplete1(lead, line, pos)
+func CustomComplete1(lead, line, pos)
 	return ['あ', 'い']
-endfunction
+endfunc
 
-function! CustomComplete2(lead, line, pos)
+func CustomComplete2(lead, line, pos)
 	return ['あたし', 'あたま', 'あたりめ']
-endfunction
+endfunc
 
-function! CustomComplete3(lead, line, pos)
+func CustomComplete3(lead, line, pos)
 	return ['Nこ', 'Nん', 'Nぶ']
-endfunction
+endfunc
 
 func Test_customlist_completion()
   command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
diff --git a/src/testdir/test_utf8_comparisons.vim b/src/testdir/test_utf8_comparisons.vim
index 576e861..a22cbb2 100644
--- a/src/testdir/test_utf8_comparisons.vim
+++ b/src/testdir/test_utf8_comparisons.vim
@@ -5,12 +5,12 @@
   finish
 endif
 
-function! Ch(a, op, b, expected)
+func Ch(a, op, b, expected)
   call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected,
         \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
-endfunction
+endfunc
 
-function! Chk(a, b, result)
+func Chk(a, b, result)
   if a:result == 0
     call Ch(a:a, '==?', a:b, 1)
     call Ch(a:a, '!=?', a:b, 0)
@@ -33,26 +33,26 @@
     call Ch(a:a, '<?', a:b, 1)
     call Ch(a:a, '>?', a:b, 0)
   endif
-endfunction
+endfunc
 
-function! Check(a, b, result)
+func Check(a, b, result)
   call Chk(a:a, a:b, a:result)
   call Chk(a:b, a:a, -a:result)
-endfunction
+endfunc
 
-function! LT(a, b)
+func LT(a, b)
   call Check(a:a, a:b, -1)
-endfunction
+endfunc
 
-function! GT(a, b)
+func GT(a, b)
   call Check(a:a, a:b, 1)
-endfunction
+endfunc
 
-function! EQ(a, b)
+func EQ(a, b)
   call Check(a:a, a:b, 0)
-endfunction
+endfunc
 
-function Test_comparisons()
+func Test_comparisons()
   call EQ('', '')
   call LT('', 'a')
   call EQ('abc', 'abc')
@@ -85,11 +85,11 @@
   for n in range(0xC0, 0xFF)
     call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n))
   endfor
-endfunction
+endfunc
 
 " test that g~ap changes one paragraph only.
-function Test_gap()
+func Test_gap()
   new
   call feedkeys("iabcd\n\ndefggg0g~ap", "tx")
   call assert_equal(["ABCD", "", "defg"], getline(1,3))
-endfunction
+endfunc
diff --git a/src/testdir/test_vartabs.vim b/src/testdir/test_vartabs.vim
index 81e81b7..0d14aad 100644
--- a/src/testdir/test_vartabs.vim
+++ b/src/testdir/test_vartabs.vim
@@ -134,7 +134,7 @@
   bwipeout!
 endfunc
 
-func! Test_vartabs_breakindent()
+func Test_vartabs_breakindent()
   if !exists("+breakindent")
     return
   endif
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index fc002c2..9de0a62 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -5,11 +5,11 @@
 " Test environment							    {{{1
 "-------------------------------------------------------------------------------
 
-com!               XpathINIT  let g:Xpath = ''
+com!		   XpathINIT  let g:Xpath = ''
 com! -nargs=1 -bar Xpath      let g:Xpath = g:Xpath . <args>
 
 " Append a message to the "messages" file
-func! Xout(text)
+func Xout(text)
     split messages
     $put =a:text
     wq
@@ -25,7 +25,7 @@
 " in the variable argument list.  This function is useful if similar tests are
 " to be made for a ":return" from a function call or a ":finish" in a script
 " file.
-function! MakeScript(funcname, ...)
+func MakeScript(funcname, ...)
     let script = tempname()
     execute "redir! >" . script
     execute "function" a:funcname
@@ -50,7 +50,7 @@
     write
     bwipeout
     return script
-endfunction
+endfunc
 
 " ExecAsScript - Source a temporary script made from a function.	    {{{2
 "
@@ -301,9 +301,9 @@
 "
 let calls = ""
 com! -nargs=1 CALL
-    	\ if !exists("calls") && !exists("outer") |
-    	\ let g:calls = g:calls . <args> |
-    	\ endif
+	    \ if !exists("calls") && !exists("outer") |
+	    \ let g:calls = g:calls . <args> |
+	    \ endif
 
 let i = 0
 while i < 3
@@ -357,7 +357,7 @@
 if exists("*F1")
     call F1("F1")
     if exists("*G1")
-        call G1("G1")
+       call G1("G1")
     endif
 endif
 
@@ -367,13 +367,13 @@
 if exists("*F2")
     call F2(2, "F2")
     if exists("*G21")
-        call G21("G21")
+       call G21("G21")
     endif
     if exists("*G22")
-        call G22("G22")
+       call G22("G22")
     endif
     if exists("*G23")
-        call G23("G23")
+       call G23("G23")
     endif
 endif
 
@@ -383,13 +383,13 @@
 if exists("*F3")
     call F3(3, "F3")
     if exists("*G31")
-        call G31("G31")
+       call G31("G31")
     endif
     if exists("*G32")
-        call G32("G32")
+       call G32("G32")
     endif
     if exists("*G33")
-        call G33("G33")
+       call G33("G33")
     endif
 endif
 
@@ -640,7 +640,7 @@
 	endif
     endif
     return match
-endfunction
+endfunc
 
 if 1 || strlen("\"") | Xpath 'a'
     Xpath 'b'
@@ -1032,11 +1032,11 @@
     call assert_true(empty(v:none))
 
     func ChangeYourMind()
-      try
-	return v:true
-      finally
-        return 'something else'
-      endtry
+	try
+	    return v:true
+	finally
+	    return 'something else'
+	endtry
     endfunc
 
     call ChangeYourMind()
@@ -1250,70 +1250,70 @@
 func Test_script_lines()
     " :append
     try
-        call DefineFunction('T_Append', [
-                    \ 'append',
-                    \ 'py <<EOS',
-                    \ '.',
-                    \ ])
+	call DefineFunction('T_Append', [
+		    \ 'append',
+		    \ 'py <<EOS',
+		    \ '.',
+		    \ ])
     catch
-        call assert_report("Can't define function")
+	call assert_report("Can't define function")
     endtry
     try
-        call DefineFunction('T_Append', [
-                    \ 'append',
-                    \ 'abc',
-                    \ ])
-        call assert_report("Shouldn't be able to define function")
+	call DefineFunction('T_Append', [
+		    \ 'append',
+		    \ 'abc',
+		    \ ])
+	call assert_report("Shouldn't be able to define function")
     catch
-        call assert_exception('Vim(function):E126: Missing :endfunction')
+	call assert_exception('Vim(function):E126: Missing :endfunction')
     endtry
 
     " :change
     try
-        call DefineFunction('T_Change', [
-                    \ 'change',
-                    \ 'py <<EOS',
-                    \ '.',
-                    \ ])
+	call DefineFunction('T_Change', [
+		    \ 'change',
+		    \ 'py <<EOS',
+		    \ '.',
+		    \ ])
     catch
-        call assert_report("Can't define function")
+	call assert_report("Can't define function")
     endtry
     try
-        call DefineFunction('T_Change', [
-                    \ 'change',
-                    \ 'abc',
-                    \ ])
-        call assert_report("Shouldn't be able to define function")
+	call DefineFunction('T_Change', [
+		    \ 'change',
+		    \ 'abc',
+		    \ ])
+	call assert_report("Shouldn't be able to define function")
     catch
-        call assert_exception('Vim(function):E126: Missing :endfunction')
+	call assert_exception('Vim(function):E126: Missing :endfunction')
     endtry
 
     " :insert
     try
-        call DefineFunction('T_Insert', [
-                    \ 'insert',
-                    \ 'py <<EOS',
-                    \ '.',
-                    \ ])
+	call DefineFunction('T_Insert', [
+		    \ 'insert',
+		    \ 'py <<EOS',
+		    \ '.',
+		    \ ])
     catch
-        call assert_report("Can't define function")
+	call assert_report("Can't define function")
     endtry
     try
-        call DefineFunction('T_Insert', [
-                    \ 'insert',
-                    \ 'abc',
-                    \ ])
-        call assert_report("Shouldn't be able to define function")
+	call DefineFunction('T_Insert', [
+		    \ 'insert',
+		    \ 'abc',
+		    \ ])
+	call assert_report("Shouldn't be able to define function")
     catch
-        call assert_exception('Vim(function):E126: Missing :endfunction')
+	call assert_exception('Vim(function):E126: Missing :endfunction')
     endtry
 endfunc
 
 "-------------------------------------------------------------------------------
 " Test 96:  line continuation						    {{{1
 "
-"           Undefined behavior was detected by ubsan with line continuation
-"           after an empty line.
+"	    Undefined behavior was detected by ubsan with line continuation
+"	    after an empty line.
 "-------------------------------------------------------------------------------
 func Test_script_emty_line_continuation()
 
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index 0980493..587ae23 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -578,13 +578,13 @@
   only
 endfunc
 
-function! Fun_RenewFile()
+func Fun_RenewFile()
   sleep 2
   silent execute '!echo "1" > tmp.txt'
   sp
   wincmd p
   edit! tmp.txt
-endfunction
+endfunc
 
 func Test_window_prevwin()
   " Can we make this work on MS-Windows?
diff --git a/src/testdir/test_xxd.vim b/src/testdir/test_xxd.vim
index 6e67893..4538790 100644
--- a/src/testdir/test_xxd.vim
+++ b/src/testdir/test_xxd.vim
@@ -7,17 +7,17 @@
   let s:xxd_cmd = $XXD
 endif
 
-func! PrepareBuffer(lines)
+func PrepareBuffer(lines)
   new
   call append(0, a:lines)
   $d
 endfunc
 
-func! s:Mess(counter)
+func s:Mess(counter)
   return printf("Failed xxd test %d:", a:counter)
 endfunc
 
-func! Test_xxd()
+func Test_xxd()
   call PrepareBuffer(range(1,30))
   set ff=unix
   w XXDfile
diff --git a/src/version.c b/src/version.c
index f0e4450..387b7b8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    711,
+/**/
     710,
 /**/
     709,
