diff --git a/runtime/syntax/Makefile b/runtime/syntax/Makefile
index 945308f..bc6de0b 100644
--- a/runtime/syntax/Makefile
+++ b/runtime/syntax/Makefile
@@ -1,5 +1,8 @@
 # Portable Makefile for running syntax tests.
 
+# To run the test manually:
+# ../../src/vim -u 'testdir/runtest.vim' --cmd 'breakadd func RunTest'
+
 # Override this if needed, the default assumes Vim was build in the src dir.
 #VIMPROG = vim
 VIMPROG = ../../src/vim
diff --git a/runtime/syntax/testdir/dumps/c_00.dump b/runtime/syntax/testdir/dumps/c_00.dump
index d32cbd2..46c42f1 100644
--- a/runtime/syntax/testdir/dumps/c_00.dump
+++ b/runtime/syntax/testdir/dumps/c_00.dump
@@ -17,4 +17,4 @@
 |#+0#e000e06&| |i|n|c|l|u|d|e| |<+0#e000002&|l|i|m|i|t|s|.|h|>| +0#0000000&@54
 |#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
 @75
-|"|i|n|p|u|t|/|c|.|c|"| |1|2@1|L|,| |3|1|7|4|B| @33|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_00.dump b/runtime/syntax/testdir/dumps/modula2_iso_00.dump
index 797376f..0c24cb8 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_00.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_00.dump
@@ -17,4 +17,4 @@
 |(+0#0000e05&|*| |p|r|e|d|e|f|i|n|e|d| |c|o|n|s|t|a|n|t|s| |*|)| +0#0000000&@48
 |F+0#e000002&|A|L|S|E| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#e000002&|R|U|E| +0#0000000&|I+0#e000002&|N|T|E|R@1|U|P|T|I|B|L|E| +0#0000000&|U+0#e000002&|N|I|N|T|E|R@1|U|P|T|I|B|L|E| +0#0000000&@30
 @75
-|"|i|n|p|u|t|/|m|o|d|u|l|a|2|_|i|s|o|.|d|e|f|"| |1@1|4|L|,| |2|3|1|8|B| @21|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/modula2_pim_00.dump b/runtime/syntax/testdir/dumps/modula2_pim_00.dump
index 5e85b7a..36aa0de 100644
--- a/runtime/syntax/testdir/dumps/modula2_pim_00.dump
+++ b/runtime/syntax/testdir/dumps/modula2_pim_00.dump
@@ -17,4 +17,4 @@
 |F+0#e000002&|A|L|S|E| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#e000002&|R|U|E| +0#0000000&@60
 @75
 |(+0#0000e05&|*| |p|r|e|d|e|f|i|n|e|d| |t|y|p|e|s| |*|)| +0#0000000&@52
-|"|i|n|p|u|t|/|m|o|d|u|l|a|2|_|p|i|m|.|d|e|f|"| |1@2|L|,| |2|1|9|7|B| @21|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_00.dump b/runtime/syntax/testdir/dumps/modula2_r10_00.dump
index ab4167a..a2e475e 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_00.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_00.dump
@@ -17,4 +17,4 @@
 |N+0#e000002&|I|L| +0#0000000&|F+0#e000002&|A|L|S|E| +0#0000000&|T+0#e000002&|R|U|E| +0#0000000&@60
 @75
 |(+0#0000e05&|*| |p|r|e|d|e|f|i|n|e|d| |t|y|p|e|s| |*|)| +0#0000000&@52
-|"|i|n|p|u|t|/|m|o|d|u|l|a|2|_|r|1|0|.|d|e|f|"| |1|4|6|L|,| |2|9|8|3|B| @21|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_00.dump b/runtime/syntax/testdir/dumps/vim_ex_abbreviate_00.dump
index 68055d8..5224a4f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_abbreviate_00.dump
@@ -17,4 +17,4 @@
 |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @38
 @75
 |u+0#af5f00255&|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| @53
-|"|i|n|p|u|t|/|v|i|m|_|e|x|_|a|b@1|r|e|v|i|a|t|e|.|v|i|m|"| |2|5|L|,| |5@1|8|B| @17|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_behave_00.dump b/runtime/syntax/testdir/dumps/vim_ex_behave_00.dump
index cd88b75..b3c57de 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_behave_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_behave_00.dump
@@ -17,4 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|e|x|_|b|e|h|a|v|e|.|v|i|m|"| |7|L|,| |7@1|B| @23|1|,|1| @10|A|l@1| 
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump b/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
index a0a0e18..c3fefeb 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
@@ -17,4 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|e|x|_|b|e|h|a|v|e|.|v|i|m|"| |7|L|,| |7@1|B| @23|7|,|1| @10|A|l@1| 
+| +0#0000000&@56|7|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump
index f3e48c0..863ae38 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump
@@ -17,4 +17,4 @@
 |:|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
 |:+0#af5f00255&|a|p@1|e|n|d| +0#0000000&@67
 | +0#e000002&@3|t|e|x|t| +0#0000000&@66
-|"|i|n|p|u|t|/|v|i|m|_|e|x|_|c|o|m@1|a|n|d|s|.|v|i|m|"| |1@1|9|5|L|,| |1|7|3|0|1|B| @15|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_echo_00.dump b/runtime/syntax/testdir/dumps/vim_ex_echo_00.dump
index 506c9e2..a626c7b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_echo_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_echo_00.dump
@@ -17,4 +17,4 @@
 @75
 |"+0#0000e05&| |:|e|c|h|o| |w|i|t|h|o|u|t| |{|e|x|p|r|}| +0#0000000&@52
 |e+0#af5f00255&|c|h|o||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@58
-|"|i|n|p|u|t|/|v|i|m|_|e|x|_|e|c|h|o|.|v|i|m|"| |2|0|L|,| |3|6|2|B| @23|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
index 032eeb4..371c1ce 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
@@ -17,4 +17,4 @@
 |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
-|"|i|n|p|u|t|/|v|i|m|_|e|x|_|m|a|p|.|v|i|m|"| |2|1|L|,| |3|1|6|B| @24|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_00.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_00.dump
index 31094c9..aea97ed 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_00.dump
@@ -17,4 +17,4 @@
 |:|s+0#af5f00255&|m|a|g|i|c|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&|c|e|g|i|I|n|p|#|l|r| +0#0000000&@48
 @75
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|b|s|t|i|t|u|t|e|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&|&| +0#0000000&@41
-|"|i|n|p|u|t|/|v|i|m|_|e|x|_|s|u|b|s|t|i|t|u|t|e|.|v|i|m|"| |8|6|L|,| |1|5|1|0|B| @16|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_00.dump b/runtime/syntax/testdir/dumps/vim_expr_00.dump
index dd1cfa7..899b73c 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_00.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
 | |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
-|"|i|n|p|u|t|/|v|i|m|_|e|x|p|r|.|v|i|m|"| |3|1|L|,| |1@1|6|2|B| @25|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_00.dump b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
index 8b77cf3..ed58e2f 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
@@ -17,4 +17,4 @@
 |<+0#e000e06&|x|C|S|I|>| +0#0000000&@68
 |<+0#e000e06&|B|a|r|>| +0#0000000&@69
 |<+0#e000e06&|B|s|l|a|s|h|>| +0#0000000&@66
-|"|i|n|p|u|t|/|v|i|m|_|k|e|y|_|n|o|t|a|t|i|o|n|.|v|i|m|"| |1|6|3|L|,| |1|3|4|6|B| @16|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_00.dump b/runtime/syntax/testdir/dumps/vim_keymap_00.dump
index 974c5ad..2c43e3d 100644
--- a/runtime/syntax/testdir/dumps/vim_keymap_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_keymap_00.dump
@@ -17,4 +17,4 @@
 |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
 @75
 |@+0#4040ff13&@2| @71
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|k|e|y|m|a|p|.|v|i|m|"| |2|6|L|,| |3|9@1|2|B| @23|1|,|1| @10|T|o|p| 
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
index 7733c0b..3bc4eba 100644
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
@@ -17,4 +17,4 @@
 @8|\+0#e000e06&| +0#0000000&|b+0#af5f00255&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|b|}+0#e000e06&|,+0#0000000&| @54
 | +0#0000e05&@7|"|\| |p|r|i|n|t| |c| +0#0000000&@56
 @8|\+0#e000e06&| +0#0000000&|c+0#af5f00255&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|c|}+0#e000e06&| +0#0000000&@55
-|"|i|n|p|u|t|/|v|i|m|_|l|i|n|e|_|c|o|n|t|i|n|u|a|t|i|o|n|.|v|i|m|"| |4|9|L|,| |6|2|6|B| @13|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_new_00.dump b/runtime/syntax/testdir/dumps/vim_new_00.dump
index 6306fae..2ff76f4 100644
--- a/runtime/syntax/testdir/dumps/vim_new_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_new_00.dump
@@ -17,4 +17,4 @@
 |q+0#af5f00255&|u|i|t| +0#0000000&@70
 |~+0#4040ff13&| @73
 |~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|n|e|w|.|v|i|m|"| |1|7|L|,| |2|0|5|B| @27|1|,|1| @10|A|l@1| 
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_new_99.dump b/runtime/syntax/testdir/dumps/vim_new_99.dump
index 50a54f2..a9fe50f 100644
--- a/runtime/syntax/testdir/dumps/vim_new_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_new_99.dump
@@ -17,4 +17,4 @@
 >q+0#af5f00255&|u|i|t| +0#0000000&@70
 |~+0#4040ff13&| @73
 |~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|n|e|w|.|v|i|m|"| |1|7|L|,| |2|0|5|B| @27|1|7|,|1| @9|A|l@1| 
+| +0#0000000&@56|1|7|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_00.dump b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
index 21dcc88..916f96d 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
@@ -17,4 +17,4 @@
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
-|"|i|n|p|u|t|/|v|i|m|_|s|y|n|t|a|x|.|v|i|m|"| |1|6|4|L|,| |3|7|2|9|B| @22|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_00.dump b/runtime/syntax/testdir/dumps/vim_variables_00.dump
index 9794113..da77064 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_00.dump
@@ -17,4 +17,4 @@
 |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
 |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
 |l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|"|i|n|p|u|t|/|v|i|m|_|v|a|r|i|a|b|l|e|s|.|v|i|m|"| |1|3|8|L|,| |1|5@1|4|B| @19|1|,|1| @10|T|o|p| 
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/runtest.vim b/runtime/syntax/testdir/runtest.vim
index d2ce3d1..a2cdef3 100644
--- a/runtime/syntax/testdir/runtest.vim
+++ b/runtime/syntax/testdir/runtest.vim
@@ -85,164 +85,180 @@
   endif
 endfunc
 
-let ok_count = 0
-let failed_tests = []
-let skipped_count = 0
-let MAX_FAILED_COUNT = 5
-for fname in glob('input/*.*', 1, 1)
-  if fname =~ '\~$'
-    " backup file, skip
-    continue
-  endif
-
-  let linecount = readfile(fname)->len()
-  let root = fnamemodify(fname, ':t:r')
-  let filetype = substitute(root, '\([^_.]*\)[_.].*', '\1', '')
-  let failed_root = 'failed/' .. root
-
-  " Execute the test if the "done" file does not exist or when the input file
-  " is newer.
-  let in_time = getftime(fname)
-  let out_time = getftime('done/' .. root)
-  if out_time < 0 || in_time > out_time
-    call ch_log('running tests for: ' .. fname)
-
-    for dumpname in glob(failed_root .. '_\d*\.dump', 1, 1)
-      call delete(dumpname)
-    endfor
-    call delete('done/' .. root)
-
-    let lines =<< trim END
-      syntax on
-
-      " extra info for shell variables
-      func ShellInfo()
-	let msg = ''
-	for [key, val] in items(b:)
-	  if key =~ '^is_'
-	    let msg ..= key .. ': ' .. val .. ', '
-	  endif
-	endfor
-	if msg != ''
-	  echomsg msg
-	endif
-      endfunc
-
-      au! SwapExists * call HandleSwapExists()
-      func HandleSwapExists()
-	" Ignore finding a swap file for the test input, the user might be
-	" editing it and that's OK.
-	if expand('<afile>') =~ 'input[/\\].*\..*'
-	  let v:swapchoice = 'e'
-	endif
-      endfunc
-    END
-    call writefile(lines, 'Xtestscript')
-
-    " close all but the last window
-    while winnr('$') > 1
-      close
-    endwhile
-
-    " Redraw to make sure that messages are cleared and there is enough space
-    " for the terminal window.
-    redraw
-
-    let buf = RunVimInTerminal('-S Xtestscript', {})
-    " edit the file only after catching the SwapExists event
-    call term_sendkeys(buf, ":edit " .. fname .. "\<CR>")
-
-    if filetype == 'sh'
-      call term_sendkeys(buf, ":call ShellInfo()\<CR>")
+func RunTest()
+  let ok_count = 0
+  let failed_tests = []
+  let skipped_count = 0
+  let MAX_FAILED_COUNT = 5
+  for fname in glob('input/*.*', 1, 1)
+    if fname =~ '\~$'
+      " backup file, skip
+      continue
     endif
 
-    " Screendump at the start of the file: failed/root_00.dump
-    let root_00 = root .. '_00'
-    call ch_log('First screendump for ' .. fname .. ': failed/' .. root_00 .. '.dump')
-    let fail = VerifyScreenDump(buf, root_00, {})
+    let linecount = readfile(fname)->len()
+    let root = fnamemodify(fname, ':t:r')
+    let filetype = substitute(root, '\([^_.]*\)[_.].*', '\1', '')
+    let failed_root = 'failed/' .. root
 
-    " clear the shell info if there are not enough lines to cause a scroll
-    if filetype == 'sh' && linecount <= 19
-      call term_sendkeys(buf, ":redraw\<CR>")
-    endif
+    " Execute the test if the "done" file does not exist or when the input file
+    " is newer.
+    let in_time = getftime(fname)
+    let out_time = getftime('done/' .. root)
+    if out_time < 0 || in_time > out_time
+      call ch_log('running tests for: ' .. fname)
 
-    " Make a Screendump every 18 lines of the file: failed/root_NN.dump
-    let topline = 1
-    let nr = 1
-    while linecount - topline > 20
-      let topline += 18
-      call term_sendkeys(buf, printf("%dGzt", topline))
-      let root_next = root .. printf('_%02d', nr)
-      call ch_log('Next screendump for ' .. fname .. ': failed/' .. root_next .. '.dump')
-      let fail += VerifyScreenDump(buf, root_next, {})
-      let nr += 1
-    endwhile
-
-    " Screendump at the end of the file: failed/root_99.dump
-    call term_sendkeys(buf, 'Gzb')
-    let root_last = root .. '_99'
-    call ch_log('Last screendump for ' .. fname .. ': failed/' .. root_last .. '.dump')
-    let fail += VerifyScreenDump(buf, root_last, {})
-
-    call StopVimInTerminal(buf)
-    call delete('Xtestscript')
-
-    " redraw here to avoid the following messages to get mixed up with screen
-    " output.
-    redraw
-
-    " Add any assert errors to s:messages.
-    if len(v:errors) > 0
-      call extend(s:messages, v:errors)
-      " Echo the errors here, in case the script aborts or the "messages" file
-      " is not displayed later.
-      echomsg v:errors
-      let v:errors = []
-      let fail += 1
-    endif
-
-    if fail == 0
-      call Message("Test " .. root .. " OK")
-
-      call writefile(['OK'], 'done/' .. root)
-
-      let ok_count += 1
-    else
-      call Message("Test " .. root .. " FAILED")
-
+      for dumpname in glob(failed_root .. '_\d*\.dump', 1, 1)
+	call delete(dumpname)
+      endfor
       call delete('done/' .. root)
 
-      eval failed_tests->add(root)
-      if len(failed_tests) > MAX_FAILED_COUNT
-	call Message('')
-	call Message('Too many errors, aborting')
+      let lines =<< trim END
+	syntax on
+
+	" extra info for shell variables
+	func ShellInfo()
+	  let msg = ''
+	  for [key, val] in items(b:)
+	    if key =~ '^is_'
+	      let msg ..= key .. ': ' .. val .. ', '
+	    endif
+	  endfor
+	  if msg != ''
+	    echomsg msg
+	  endif
+	endfunc
+
+	au! SwapExists * call HandleSwapExists()
+	func HandleSwapExists()
+	  " Ignore finding a swap file for the test input, the user might be
+	  " editing it and that's OK.
+	  if expand('<afile>') =~ 'input[/\\].*\..*'
+	    let v:swapchoice = 'e'
+	  endif
+	endfunc
+
+	func LoadFiletype(type)
+	  for file in glob("ftplugin/" .. a:type .. "*.vim", 1, 1)
+	    exe "source " .. file
+	  endfor
+	  redraw!
+	endfunc
+
+      END
+      call writefile(lines, 'Xtestscript')
+
+      " close all but the last window
+      while winnr('$') > 1
+	close
+      endwhile
+
+      " Redraw to make sure that messages are cleared and there is enough space
+      " for the terminal window.
+      redraw
+
+      let buf = RunVimInTerminal('-S Xtestscript', {})
+      " edit the file only after catching the SwapExists event
+      call term_sendkeys(buf, ":edit " .. fname .. "\<CR>")
+      " load filetype specific settings
+      call term_sendkeys(buf, ":call LoadFiletype('" .. filetype .. "')\<CR>")
+
+      if filetype == 'sh'
+	call term_sendkeys(buf, ":call ShellInfo()\<CR>")
       endif
+
+      " Screendump at the start of the file: failed/root_00.dump
+      let root_00 = root .. '_00'
+      call ch_log('First screendump for ' .. fname .. ': failed/' .. root_00 .. '.dump')
+      let fail = VerifyScreenDump(buf, root_00, {})
+
+      " clear the shell info if there are not enough lines to cause a scroll
+      if filetype == 'sh' && linecount <= 19
+	call term_sendkeys(buf, ":redraw\<CR>")
+      endif
+
+      " Make a Screendump every 18 lines of the file: failed/root_NN.dump
+      let topline = 1
+      let nr = 1
+      while linecount - topline > 20
+	let topline += 18
+	call term_sendkeys(buf, printf("%dGzt", topline))
+	let root_next = root .. printf('_%02d', nr)
+	call ch_log('Next screendump for ' .. fname .. ': failed/' .. root_next .. '.dump')
+	let fail += VerifyScreenDump(buf, root_next, {})
+	let nr += 1
+      endwhile
+
+      " Screendump at the end of the file: failed/root_99.dump
+      call term_sendkeys(buf, 'Gzb')
+      let root_last = root .. '_99'
+      call ch_log('Last screendump for ' .. fname .. ': failed/' .. root_last .. '.dump')
+      let fail += VerifyScreenDump(buf, root_last, {})
+
+      call StopVimInTerminal(buf)
+      call delete('Xtestscript')
+
+      " redraw here to avoid the following messages to get mixed up with screen
+      " output.
+      redraw
+
+      " Add any assert errors to s:messages.
+      if len(v:errors) > 0
+	call extend(s:messages, v:errors)
+	" Echo the errors here, in case the script aborts or the "messages" file
+	" is not displayed later.
+	echomsg v:errors
+	let v:errors = []
+	let fail += 1
+      endif
+
+      if fail == 0
+	call Message("Test " .. root .. " OK")
+
+	call writefile(['OK'], 'done/' .. root)
+
+	let ok_count += 1
+      else
+	call Message("Test " .. root .. " FAILED")
+
+	call delete('done/' .. root)
+
+	eval failed_tests->add(root)
+	if len(failed_tests) > MAX_FAILED_COUNT
+	  call Message('')
+	  call Message('Too many errors, aborting')
+	endif
+      endif
+    else
+      call Message("Test " .. root .. " skipped")
+      let skipped_count += 1
     endif
-  else
-    call Message("Test " .. root .. " skipped")
-    let skipped_count += 1
+
+    " Append messages to the file "testdir/messages"
+    call AppendMessages('Input file ' .. fname .. ':')
+
+    if len(failed_tests) > MAX_FAILED_COUNT
+      break
+    endif
+  endfor
+
+  call Message(s:test_run_message)
+  call Message('OK: ' .. ok_count)
+  call Message('FAILED: ' .. len(failed_tests) .. ': ' .. string(failed_tests))
+  call Message('skipped: ' .. skipped_count)
+  call AppendMessages('== SUMMARY ==')
+
+  if len(failed_tests) > 0
+    " have make report an error
+    cquit
   endif
+endfunc
 
-  " Append messages to the file "testdir/messages"
-  call AppendMessages('Input file ' .. fname .. ':')
-
-  if len(failed_tests) > MAX_FAILED_COUNT
-    break
-  endif
-endfor
-
-call Message(s:test_run_message)
-call Message('OK: ' .. ok_count)
-call Message('FAILED: ' .. len(failed_tests) .. ': ' .. string(failed_tests))
-call Message('skipped: ' .. skipped_count)
-call AppendMessages('== SUMMARY ==')
-
-if len(failed_tests) > 0
-  " have make report an error
-  cquit
-endif
+call RunTest()
 
 " Matching "if 1" at the start.
 endif
 
 qall!
+
+" vim:ts=8
