Update runtime files.
diff --git a/runtime/compiler/cs.vim b/runtime/compiler/cs.vim
index 4cc1784..4f6dd3c 100644
--- a/runtime/compiler/cs.vim
+++ b/runtime/compiler/cs.vim
@@ -1,8 +1,8 @@
 " Vim compiler file
-" Compiler:	Microsoft Visual Studio C#
-" Maintainer:	Zhou YiChao (broken.zhou@gmail.com)
-" Previous Maintainer:	Joseph H. Yao (hyao@sina.com)
-" Last Change:	2012 Apr 30
+" Compiler:               Microsoft Visual Studio C#
+" Maintainer:             Yichao Zhou (broken.zhou@gmail.com)
+" Previous Maintainer:    Joseph H. Yao (hyao@sina.com)
+" Last Change:            Jul 22, 2019
 
 if exists("current_compiler")
   finish
@@ -20,7 +20,7 @@
             \%trror%*[^:]:\ %m,
             \%tarning%*[^:]:\ %m
 
-CompilerSet makeprg=csc\ %
+CompilerSet makeprg=csc\ %:S
 
 let &cpo = s:keepcpo
 unlet s:keepcpo
diff --git a/runtime/compiler/erlang.vim b/runtime/compiler/erlang.vim
index e177a27..e22887e 100644
--- a/runtime/compiler/erlang.vim
+++ b/runtime/compiler/erlang.vim
@@ -1,13 +1,13 @@
 " Vim compiler file
 " Compiler:     Erlang
 " Maintainer:	Dmitry Vasiliev <dima at hlabs dot org>
-" Last Change:	2012-02-13
+" Last Change:	2019 Jul 23
 
 if exists("current_compiler")
   finish
 endif
 let current_compiler = "erlang"
 
-CompilerSet makeprg=erlc\ -Wall\ %
+CompilerSet makeprg=erlc\ -Wall\ %:S
 
 CompilerSet errorformat=%f:%l:\ %m
diff --git a/runtime/compiler/fortran_cv.vim b/runtime/compiler/fortran_cv.vim
index 089d3b2..bc217bd 100644
--- a/runtime/compiler/fortran_cv.vim
+++ b/runtime/compiler/fortran_cv.vim
@@ -22,7 +22,7 @@
 		\%-Z%p%^%.%#,
 		\%-G%.%#,
 " Compiler call
-CompilerSet makeprg=df\ /nologo\ /noobj\ /c\ %
+CompilerSet makeprg=df\ /nologo\ /noobj\ /c\ %:S
 " Visual fortran defaults to printing output on stderr
 " Adjust option shellpipe accordingly
 
diff --git a/runtime/compiler/jikes.vim b/runtime/compiler/jikes.vim
index 5125128..2d4500e 100644
--- a/runtime/compiler/jikes.vim
+++ b/runtime/compiler/jikes.vim
@@ -1,7 +1,7 @@
 " Vim Compiler File
 " Compiler:	Jikes
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Change:	20 Jan 2009
+" Last Change:	2019 Jul 23
 " URL:		http://dwsharp.users.sourceforge.net/vim/compiler
 
 if exists("current_compiler")
@@ -14,5 +14,5 @@
 endif
 
 " Jikes defaults to printing output on stderr
-CompilerSet makeprg=jikes\ -Xstdout\ +E\ \"%\"
+CompilerSet makeprg=jikes\ -Xstdout\ +E\ \"%:S\"
 CompilerSet errorformat=%f:%l:%v:%*\\d:%*\\d:%*\\s%m
diff --git a/runtime/compiler/onsgmls.vim b/runtime/compiler/onsgmls.vim
index 130d3e2..68925ef 100644
--- a/runtime/compiler/onsgmls.vim
+++ b/runtime/compiler/onsgmls.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Compiler:	onsgmls
 " Maintainer:	Robert Rowsome <rowsome@wam.umd.edu>
-" Last Change:	2004 Mar 27
+" Last Change:	2019 Jul 23
 
 if exists("current_compiler")
   finish
@@ -15,7 +15,7 @@
 let s:cpo_save = &cpo
 set cpo-=C
 
-CompilerSet makeprg=onsgmls\ -s\ %
+CompilerSet makeprg=onsgmls\ -s\ %:S
 
 CompilerSet errorformat=onsgmls:%f:%l:%c:%t:%m,
 		    \onsgmls:%f:%l:%c:%m
diff --git a/runtime/compiler/perl.vim b/runtime/compiler/perl.vim
index 583c6c3..a857cae 100644
--- a/runtime/compiler/perl.vim
+++ b/runtime/compiler/perl.vim
@@ -1,7 +1,7 @@
 " Vim Compiler File
 " Compiler:     Perl syntax checks (perl -Wc)
 " Maintainer:   Christian J. Robinson <heptite@gmail.com>
-" Last Change:  2006 Aug 13
+" Last Change:  2019 Jul 22
 
 if exists("current_compiler")
   finish
@@ -27,7 +27,7 @@
 	let s:taintopt = ''
 endif
 
-exe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %'
+exe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %:S'
 
 CompilerSet errorformat=
 	\%-G%.%#had\ compilation\ errors.,
diff --git a/runtime/compiler/rustc.vim b/runtime/compiler/rustc.vim
index c27bdc9..5e5b9a4 100644
--- a/runtime/compiler/rustc.vim
+++ b/runtime/compiler/rustc.vim
@@ -19,7 +19,7 @@
 if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent != 0
 	CompilerSet makeprg=rustc
 else
-	CompilerSet makeprg=rustc\ \%
+	CompilerSet makeprg=rustc\ \%:S
 endif
 
 " Old errorformat (before nightly 2016/08/10)
diff --git a/runtime/compiler/splint.vim b/runtime/compiler/splint.vim
index 6239ca7..3d7ada6 100644
--- a/runtime/compiler/splint.vim
+++ b/runtime/compiler/splint.vim
@@ -2,7 +2,7 @@
 " Compiler:     splint/lclint (C source code checker)
 " Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
 " Splint Home:	http://www.splint.org/
-" Last Change:  2005 Apr 21
+" Last Change:  2019 Jul 23
 " $Revision: 1.3 $
 
 if exists("current_compiler")
@@ -19,7 +19,7 @@
 
 " adapt this if you want to check more than one file at a time.
 " put command line options in .splintrc or ~/.splintrc
-CompilerSet makeprg=splint\ %
+CompilerSet makeprg=splint\ %:S
 
 " Note: when using the new array bounds checking flags:  Each warning
 " usually has several lines and several references to source code mostly
diff --git a/runtime/compiler/xmlwf.vim b/runtime/compiler/xmlwf.vim
index cd2e2bb..3de9d08 100644
--- a/runtime/compiler/xmlwf.vim
+++ b/runtime/compiler/xmlwf.vim
@@ -1,7 +1,7 @@
 " Vim Compiler File
 " Compiler:	xmlwf
 " Maintainer:	Robert Rowsome <rowsome@wam.umd.edu>
-" Last Change:	2004 Mar 27
+" Last Change:	2019 Jul 23
 
 if exists("current_compiler")
   finish
@@ -15,7 +15,7 @@
   command -nargs=* CompilerSet setlocal <args>
 endif
 
-CompilerSet makeprg=xmlwf\ %
+CompilerSet makeprg=xmlwf\ %:S
 
 CompilerSet errorformat=%f:%l%c:%m
 
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index a8e5857..1f981a6 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -1,4 +1,4 @@
-*channel.txt*      For Vim version 8.1.  Last change: 2019 Jul 21
+*channel.txt*      For Vim version 8.1.  Last change: 2019 Jul 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -18,7 +18,7 @@
 5. Channel commands			|channel-commands|
 6. Using a RAW or NL channel		|channel-raw|
 7. More channel functions		|channel-more|
-8. channel functions details		|channel-functions-details|
+8. Channel functions details		|channel-functions-details|
 9. Starting a job with a channel	|job-start|
 10. Starting a job without a channel	|job-start-nochannel|
 11. Job functions			|job-functions-details|
@@ -462,7 +462,7 @@
 This includes any sequence number.
 
 ==============================================================================
-8. channel functions details			*channel-functions-details*
+8. Channel functions details			*channel-functions-details*
 
 ch_canread({handle})						*ch_canread()*
 		Return non-zero when there is something to read from {handle}.
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 0a4917a..a06aa4d 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 8.1.  Last change: 2019 May 07
+*cmdline.txt*   For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1064,8 +1064,7 @@
 In the command-line window the command line can be edited just like editing
 text in any window.  It is a special kind of window, because you cannot leave
 it in a normal way.
-{not available when compiled without the |+cmdline_hist| or |+vertsplit|
-feature}
+{not available when compiled without the |+cmdline_hist| feature}
 
 
 OPEN						*c_CTRL-F* *q:* *q/* *q?*
@@ -1140,7 +1139,6 @@
 The command-line window cannot be used:
 - when there already is a command-line window (no nesting)
 - for entering an encryption key or when using inputsecret()
-- when Vim was not compiled with the |+vertsplit| feature
 
 Some options are set when the command-line window is opened:
 'filetype'	"vim", when editing an Ex command-line; this starts Vim syntax
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 452d0ac..8c1f03a 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 8.1.  Last change: 2019 Jun 02
+*diff.txt*      For Vim version 8.1.  Last change: 2019 Jul 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -335,7 +335,7 @@
 FINDING THE DIFFERENCES					*diff-diffexpr*
 
 The 'diffexpr' option can be set to use something else than the standard
-"diff" program to compare two files and find the differences.
+"diff" program to compare two files and find the differences. *E959*
 
 When 'diffexpr' is empty, Vim uses this command to find the differences
 between file1 and file2: >
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index bd05691..fdddc22 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.1.  Last change: 2019 Jul 21
+*eval.txt*	For Vim version 8.1.  Last change: 2019 Jul 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1766,7 +1766,7 @@
 	:try
 	:  throw "oops"
 	:catch /.*/
-	:  echo "caught" v:exception
+	:  echo "caught " .. v:exception
 	:endtry
 <		Output: "caught oops".
 
@@ -2956,7 +2956,7 @@
 		The {winid} argument specifies the window ID, see |argc()|.
 
 
-assert_ functions are documented here: |assert-functions|
+assert_ functions are documented here: |assert-functions-details|
 
 
 asin({expr})						*asin()*
@@ -4423,7 +4423,10 @@
 get({dict}, {key} [, {default}])
 		Get item with key {key} from |Dictionary| {dict}.  When this
 		item is not available return {default}.  Return zero when
-		{default} is omitted.
+		{default} is omitted.  Useful example: >
+			let val = get(g:, 'var_name', 'default')
+<		This gets the value of g:var_name if it exists, and uses
+		'default' when it does not exist.
 get({func}, {what})
 		Get an item with from Funcref {func}.  Possible values for
 		{what} are:
@@ -4799,8 +4802,9 @@
 getenv({name})						*getenv()*
 		Return the value of environment variable {name}.
 		When the variable does not exist |v:null| is returned.  That
-		is different from a variable set to an empty string.
-		See also |expr-env|.
+		is different from a variable set to an empty string, although
+		some systems interpret the empty value as the variable being
+		deleted.  See also |expr-env|.
 
 getfontname([{name}])					*getfontname()*
 		Without an argument returns the name of the normal font being
@@ -7162,7 +7166,8 @@
 			:call remove(mylist, 0, 9)
 
 remove({dict}, {key})
-		Remove the entry from {dict} with key {key}.  Example: >
+		Remove the entry from {dict} with key {key} and return it.
+		Example: >
 			:echo "removed " . remove(dict, "one")
 <		If there is no {key} in {dict} this is an error.
 
@@ -8829,7 +8834,7 @@
 
 term_ functions are documented here: |terminal-function-details|
 
-test_ functions are documented here: |test-functions|
+test_ functions are documented here: |test-functions-details|
 
 
 							*timer_info()*
diff --git a/runtime/doc/if_lua.txt b/runtime/doc/if_lua.txt
index 24c53fa..f7f954e 100644
--- a/runtime/doc/if_lua.txt
+++ b/runtime/doc/if_lua.txt
@@ -1,4 +1,4 @@
-*if_lua.txt*    For Vim version 8.1.  Last change: 2019 May 05
+*if_lua.txt*    For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Luis Carvalho
@@ -32,7 +32,7 @@
 	:lua local curbuf = vim.buffer() curbuf[7] = "line #7"
 <
 
-:[range]lua << {endmarker}
+:[range]lua << [endmarker]
 {script}
 {endmarker}
 			Execute Lua script {script}.
@@ -40,9 +40,11 @@
 			feature wasn't compiled in.  To avoid errors, see
 			|script-here|.
 
-{endmarker} must NOT be preceded by any white space.  If {endmarker} is
-omitted from after the "<<", a dot '.' must be used after {script}, like
-for the |:append| and |:insert| commands.
+The {endmarker} must NOT be preceded by any white space.
+
+If [endmarker] is omitted from after the "<<", a dot '.' must be used after
+{script}, like for the |:append| and |:insert| commands.
+
 This form of the |:lua| command is mainly useful for including Lua code
 in Vim scripts.
 
diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt
index 7b7e6b1..c6888a8 100644
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -1,4 +1,4 @@
-*if_mzsch.txt*  For Vim version 8.1.  Last change: 2019 May 05
+*if_mzsch.txt*  For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Sergey Khorev
@@ -39,7 +39,7 @@
 :[range]mz[scheme] {stmt}
 			Execute MzScheme statement {stmt}.
 
-:[range]mz[scheme] << {endmarker}
+:[range]mz[scheme] << [endmarker]
 {script}
 {endmarker}
 			Execute inlined MzScheme script {script}.
@@ -47,6 +47,13 @@
 			feature wasn't compiled in.  To avoid errors, see
 			|script-here|.
 
+			The {endmarker} below the {script} must NOT be
+			preceded by any white space.
+
+			If [endmarker] is omitted from after the "<<", a dot
+			'.' must be used after {script}, like for the
+			|:append| and |:insert| commands.
+
 							*:mzfile* *:mzf*
 :[range]mzf[ile] {file}	Execute the MzScheme script in {file}.
 
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index 7e33af2..bee9b88 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -1,4 +1,4 @@
-*if_perl.txt*   For Vim version 8.1.  Last change: 2019 May 05
+*if_perl.txt*   For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Sven Verdoolaege
@@ -55,15 +55,18 @@
 			working: >
 				:perl VIM::Msg("Hello")
 
-:pe[rl] << {endpattern}
+:pe[rl] << [endpattern]
 {script}
 {endpattern}
 			Execute Perl script {script}.
-			{endpattern} must NOT be preceded by any white space.
-			If {endpattern} is omitted, it defaults to a dot '.'
+			The {endpattern} after {script} must NOT be preceded
+			by any white space.
+
+			If [endpattern] is omitted, it defaults to a dot '.'
 			like for the |:append| and |:insert| commands.  Using
 			'.' helps when inside a function, because "$i;" looks
 			like the start of an |:insert| command to Vim.
+
 			This form of the |:perl| command is mainly useful for
 			including perl code in vim scripts.
 			Note: This command doesn't work when the Perl feature
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index 9e2d301..4f04199 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 8.1.  Last change: 2019 May 04
+*if_pyth.txt*   For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -34,7 +34,7 @@
 			the `:python` command is working: >
 				:python print "Hello"
 
-:[range]py[thon] << {endmarker}
+:[range]py[thon] << [endmarker]
 {script}
 {endmarker}
 			Execute Python script {script}.
@@ -42,9 +42,11 @@
 			feature wasn't compiled in.  To avoid errors, see
 			|script-here|.
 
-{endmarker} must NOT be preceded by any white space.  If {endmarker} is
-omitted from after the "<<", a dot '.' must be used after {script}, like
-for the |:append| and |:insert| commands.
+The {endmarker} below the {script} must NOT be preceded by any white space.
+
+If [endmarker] is omitted from after the "<<", a dot '.' must be used after
+{script}, like for the |:append| and |:insert| commands.
+
 This form of the |:python| command is mainly useful for including python code
 in Vim scripts.
 
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index de36c01..0eca0b6 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -1,4 +1,4 @@
-*if_ruby.txt*   For Vim version 8.1.  Last change: 2019 May 05
+*if_ruby.txt*   For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Shugo Maeda
@@ -28,15 +28,19 @@
 :rub[y] {cmd}		Execute Ruby command {cmd}.  A command to try it out: >
 				:ruby print "Hello"
 
-:rub[y] << {endpattern}
+:rub[y] << [endpattern]
 {script}
 {endpattern}
 			Execute Ruby script {script}.
-			{endpattern} must NOT be preceded by any white space.
-			If {endpattern} is omitted, it defaults to a dot '.'
-			like for the |:append| and |:insert| commands.  This
-			form of the |:ruby| command is mainly useful for
+			The {endpattern} after {script} must NOT be preceded
+			by any white space.
+
+			If [endpattern] is omitted, it defaults to a dot '.'
+			like for the |:append| and |:insert| commands.
+
+			This form of the |:ruby| command is mainly useful for
 			including ruby code in vim scripts.
+
 			Note: This command doesn't work when the Ruby feature
 			wasn't compiled in.  To avoid errors, see
 			|script-here|.
diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt
index 4a5379d..e37dce9 100644
--- a/runtime/doc/if_tcl.txt
+++ b/runtime/doc/if_tcl.txt
@@ -1,4 +1,4 @@
-*if_tcl.txt*    For Vim version 8.1.  Last change: 2019 May 05
+*if_tcl.txt*    For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Ingo Wilken
@@ -30,7 +30,7 @@
 			is working: >
 				:tcl puts "Hello"
 
-:[range]tc[l] << {endmarker}
+:[range]tc[l] << [endmarker]
 {script}
 {endmarker}
 			Execute Tcl script {script}.
@@ -38,9 +38,11 @@
 			wasn't compiled in.  To avoid errors, see
 			|script-here|.
 
-{endmarker} must NOT be preceded by any white space.  If {endmarker} is
-omitted from after the "<<", a dot '.' must be used after {script}, like for
-the |:append| and |:insert| commands.
+The {endmarker} after {script} must NOT be preceded by any white space.
+
+If [endmarker] is omitted from after the "<<", a dot '.' must be used after
+{script}, like for the |:append| and |:insert| commands.
+
 This form of the |:tcl| command is mainly useful for including tcl code in Vim
 scripts.
 
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 7643108..6fcf987 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 8.1.  Last change: 2019 Feb 21
+*indent.txt*    For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -831,7 +831,7 @@
 global variables:
 
 					*php-comment* *PHP_autoformatcomment*
-To not enable auto-formatting of comments by default (if you want to use your
+To not enable auto-formating of comments by default (if you want to use your
 own 'formatoptions'): >
     :let g:PHP_autoformatcomment = 0
 
@@ -901,7 +901,7 @@
 	optimizations won't be available.
 -------------
 
-							*PHP_vintage_case_default_indent*
+					*PHP_vintage_case_default_indent*
 To indent 'case:' and 'default:' statements in switch() blocks: >
     :let g:PHP_vintage_case_default_indent = 1
 
@@ -928,6 +928,41 @@
         ->age()
         ->info();
 
+-------------
+
+					*PHP_IndentFunctionCallParameters*
+Extra indentation levels to add to parameters in multi-line function calls. >
+    let g:PHP_IndentFunctionCallParameters = 1
+
+Function call arguments will indent 1 extra level. For two-space indentation: >
+
+    function call_the_thing(
+      $with_this,
+      $and_that
+    ) {
+      $this->do_the_thing(
+          $with_this,
+          $and_that
+      );
+    }
+
+-------------
+
+				*PHP_IndentFunctionDeclarationParameters*
+Extra indentation levels to add to arguments in multi-line function definitions. >
+    let g:PHP_IndentFunctionDeclarationParameters = 1
+
+Function arguments in declarations will indent 1 extra level. For two-space indentation: >
+
+    function call_the_thing(
+        $with_this,
+        $and_that
+    ) {
+      $this->do_the_thing(
+        $with_this,
+        $and_that
+      );
+    }
 
 
 PYTHON							*ft-python-indent*
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 0d55863..5557f63 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.1.  Last change: 2019 Jul 18
+*options.txt*	For Vim version 8.1.  Last change: 2019 Jul 31
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1131,6 +1131,10 @@
 	v:beval_col	column number (byte index)
 	v:beval_text	word under or after the mouse pointer
 
+	Instead of showing a balloon, which is limited to plain text, consider
+	using a popup window, see |popup_beval_example|.  A popup window can
+	use highlighting and show a border.
+
 	The evaluation of the expression must not have side effects!
 	Example: >
     function MyBalloonExpr()
@@ -1436,8 +1440,6 @@
 						*'cedit'*
 'cedit'			string	(Vi default: "", Vim default: CTRL-F)
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	The key used in Command-line Mode to open the command-line window.
 	The default is CTRL-F when 'compatible' is off.
 	Only non-printable keys are allowed.
@@ -1640,8 +1642,6 @@
 						*'cmdwinheight'* *'cwh'*
 'cmdwinheight' 'cwh'	number	(default 7)
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	Number of screen lines to use for the command-line window. |cmdwin|
 
 						*'colorcolumn'* *'cc'*
@@ -2720,8 +2720,6 @@
 						*'eadirection'* *'ead'*
 'eadirection' 'ead'	string	(default "both")
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	Tells when the 'equalalways' option applies:
 		ver	vertically, width of windows is not affected
 		hor	horizontally, height of windows is not affected
@@ -7082,8 +7080,6 @@
 			*'splitright'* *'spr'* *'nosplitright'* *'nospr'*
 'splitright' 'spr'	boolean	(default off)
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	When on, splitting a window will put the new window right of the
 	current one. |:vsplit|
 
@@ -8792,8 +8788,6 @@
 						*'winminwidth'* *'wmw'*
 'winminwidth' 'wmw'	number	(default 1)
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	The minimal width of a window, when it's not the current window.
 	This is a hard minimum, windows will never become smaller.
 	When set to zero, windows may be "squashed" to zero columns (i.e. just
@@ -8821,8 +8815,6 @@
 						*'winwidth'* *'wiw'* *E592*
 'winwidth' 'wiw'	number	(default 20)
 			global
-			{not available when compiled without the |+vertsplit|
-			feature}
 	Minimal number of columns for the current window.  This is not a hard
 	minimum, Vim will use fewer columns if there is not enough room.  If
 	the current window is smaller, its size is increased, at the cost of
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index d696e28..0552951 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -515,10 +515,10 @@
 			padding.
 	minheight	Minimum height of the contents, excluding border and
 			padding.
-	maxwidth	Maximum width of the contents, excluding border and
-			padding.
-	minwidth	Minimum width of the contents, excluding border and
-			padding.
+	maxwidth	Maximum width of the contents, excluding border,
+			padding and scrollbar.
+	minwidth	Minimum width of the contents, excluding border,
+			padding and scrollbar.
 	firstline	First buffer line to display.  When larger than one it
 			looks like the text scrolled up.  When out of range
 			the last buffer line will at the top of the window.
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 413aff5..7597662 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.1.  Last change: 2019 Jun 02
+*starting.txt*  For Vim version 8.1.  Last change: 2019 Jul 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1189,6 +1189,8 @@
 
 	VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' `
 
+Don't set $VIMRUNTIME to an empty value, some things may stop working.
+
 ==============================================================================
 6. Suspending						*suspend*
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 75071e6..01948f6 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -149,6 +149,7 @@
 'complete'	options.txt	/*'complete'*
 'completefunc'	options.txt	/*'completefunc'*
 'completeopt'	options.txt	/*'completeopt'*
+'completeslash'	options.txt	/*'completeslash'*
 'concealcursor'	options.txt	/*'concealcursor'*
 'conceallevel'	options.txt	/*'conceallevel'*
 'confirm'	options.txt	/*'confirm'*
@@ -169,6 +170,7 @@
 'cscopetag'	options.txt	/*'cscopetag'*
 'cscopetagorder'	options.txt	/*'cscopetagorder'*
 'cscopeverbose'	options.txt	/*'cscopeverbose'*
+'csl'	options.txt	/*'csl'*
 'cspc'	options.txt	/*'cspc'*
 'csprg'	options.txt	/*'csprg'*
 'csqf'	options.txt	/*'csqf'*
@@ -3991,12 +3993,14 @@
 E24	message.txt	/*E24*
 E240	remote.txt	/*E240*
 E241	eval.txt	/*E241*
+E242	windows.txt	/*E242*
 E243	if_ole.txt	/*E243*
 E244	gui.txt	/*E244*
 E245	gui.txt	/*E245*
 E246	autocmd.txt	/*E246*
 E247	remote.txt	/*E247*
 E248	remote.txt	/*E248*
+E249	windows.txt	/*E249*
 E25	message.txt	/*E25*
 E250	options.txt	/*E250*
 E251	remote.txt	/*E251*
@@ -4736,6 +4740,7 @@
 E956	pattern.txt	/*E956*
 E957	eval.txt	/*E957*
 E958	terminal.txt	/*E958*
+E959	diff.txt	/*E959*
 E96	diff.txt	/*E96*
 E960	options.txt	/*E960*
 E961	cmdline.txt	/*E961*
@@ -4910,6 +4915,8 @@
 PATHEXT	eval.txt	/*PATHEXT*
 PEP8	filetype.txt	/*PEP8*
 PHP_BracesAtCodeLevel	indent.txt	/*PHP_BracesAtCodeLevel*
+PHP_IndentFunctionCallParameters	indent.txt	/*PHP_IndentFunctionCallParameters*
+PHP_IndentFunctionDeclarationParameters	indent.txt	/*PHP_IndentFunctionDeclarationParameters*
 PHP_autoformatcomment	indent.txt	/*PHP_autoformatcomment*
 PHP_default_indenting	indent.txt	/*PHP_default_indenting*
 PHP_noArrowMatching	indent.txt	/*PHP_noArrowMatching*
@@ -5293,7 +5300,7 @@
 asm.vim	syntax.txt	/*asm.vim*
 asm68k	syntax.txt	/*asm68k*
 asmh8300.vim	syntax.txt	/*asmh8300.vim*
-assert-functions	testing.txt	/*assert-functions*
+assert-functions-details	testing.txt	/*assert-functions-details*
 assert-return	eval.txt	/*assert-return*
 assert_beeps()	testing.txt	/*assert_beeps()*
 assert_equal()	testing.txt	/*assert_equal()*
@@ -8262,6 +8269,7 @@
 popup_filter_yesno()	popup.txt	/*popup_filter_yesno()*
 popup_getoptions()	popup.txt	/*popup_getoptions()*
 popup_getpos()	popup.txt	/*popup_getpos()*
+popup_getpreview()	popup.txt	/*popup_getpreview()*
 popup_hide()	popup.txt	/*popup_hide()*
 popup_locate()	popup.txt	/*popup_locate()*
 popup_menu()	popup.txt	/*popup_menu()*
@@ -9363,8 +9371,8 @@
 terminal.txt	terminal.txt	/*terminal.txt*
 terminfo	term.txt	/*terminfo*
 termresponse-variable	eval.txt	/*termresponse-variable*
-test-functions	testing.txt	/*test-functions*
 test-functions	usr_41.txt	/*test-functions*
+test-functions-details	testing.txt	/*test-functions-details*
 test_alloc_fail()	testing.txt	/*test_alloc_fail()*
 test_autochdir()	testing.txt	/*test_autochdir()*
 test_feedinput()	testing.txt	/*test_feedinput()*
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 7692d80..6fe6b8e 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.1.  Last change: 2019 Jul 21
+*testing.txt*	For Vim version 8.1.  Last change: 2019 Jul 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -11,8 +11,8 @@
 and for testing plugins.
 
 1. Testing Vim				|testing|
-2. Test functions			|test-functions|
-3. Assert funtions			|assert-functions|
+2. Test functions			|test-functions-details|
+3. Assert functions			|assert-functions-details|
 
 ==============================================================================
 1. Testing Vim						*testing*
@@ -36,7 +36,7 @@
 Find more information in the file src/testdir/README.txt.
 
 ==============================================================================
-2. Test functions				*test-functions*
+2. Test functions				*test-functions-details*
 
 test_alloc_fail({id}, {countdown}, {repeat})		*test_alloc_fail()*
 		This is for testing: If the memory allocation with {id} is
@@ -198,7 +198,7 @@
 		normal behavior is restored.
 
 ==============================================================================
-3. Assert functions				*assert-functions*
+3. Assert functions				*assert-functions-details*
 
 
 assert_beeps({cmd})					*assert_beeps()*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 4d937e7..3c3bd02 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.1.  Last change: 2019 Jul 19
+*todo.txt*      For Vim version 8.1.  Last change: 2019 Jul 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,24 +38,11 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
-20)
-Also put :argadd commands at the start for all buffers, so that their order
-remains equal?  Then %argdel to clean it up.  Do try this with 'hidden' set.
-
-Refactor: Move common things out of evalfunc.c, it's too big.
-Move function specs out of eval.txt, it's too big.
-
-Convert comments in option.h
-
-Patch to convert encoding of strftime(). (Ken Takata, #4685, fixes #4681)
-
-Patch to Move viminfo related functions to a separate file: #4686
-
 Popup windows:
-- avoid preview popup going outside of the screen
-- add popup_getpreview() - get ID of preview window
+- Always show the right border, not only when there is a close button?
 - bug: double click in scrollbar starts selection
+- modeless selection fails over ssh and with putty.  Mouse dragging not
+  supported?  Can we force it on?
 - Allow resizing from the bottom-right corner
 - Implement flip option
 - Have a way to scroll to the bottom, e.g. set 'firstline' to -1? (#4577)
@@ -148,22 +135,29 @@
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
-Error numbers available: E172, E221, E242, E249, E260, E274, E275, E276,
-E278, E279, E281, E290, E291, E292, E361, E362, E366, E396, E450, E451, E452,
-E453, E454, E460, E489, E491, E56, E57, E565, E569, E578, E610, E611, E653,
-E654, E693, E706, E856, E857, E860, E861, E863, E889, E900, E959
+Error numbers available: E260, E274, E275, E276,
+E278, E279, E290, E292, E362, E366, E450, E451, E452,
+E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
+E654, E856, E857, E860, E861, E863, E889, E900
 
-Problem with German spell file.  Hint for solution by Klaus-Peter Schreiner in
-#4314, solves the Rasenmäher problem.
+Patch on issue #4661 to fix resolve(). (Ken Takata)
+https://gist.github.com/k-takata/52d0a677ca9a27bdbaed21d77533244e
+
+Patch to split of map.c from getchar.c (Yegappan, #4740)
 
 Sound: support on Mac?  Or does libcanberra work there?
 
-Patch to use forward slash for completion even when 'shellslash' is set.
-Adds 'completepathslash'.  (Yasuhiro Matsumoto, 2018 Nov 15, #3612)
-
 Patch to add win_splitmove() function. (Andy Massimino, #4561)
 
-Resolve() works incorrectly under windows. (#4661)
+Patch for #4733: #4734.  Test needs improvements.
+
+Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
+20)
+Also put :argadd commands at the start for all buffers, so that their order
+remains equal?  Then %argdel to clean it up.  Do try this with 'hidden' set.
+
+Make heredoc-let a bit more restrictive:
+https://github.com/vim/vim/issues/4705
 
 Completion mixes results from the current buffer with tags and other files.
 Happens when typing CTRL-N while still search for results.  E.g., type "b_" in
@@ -171,6 +165,8 @@
 Should do current file first and not split it up when more results are found.
 (Also #1890)
 
+Patch to add :spellrare. (#4291)
+
 Patch to use timers in matchparen. (Daniel Hahler, #1338)
 Ready to include now?
 
@@ -180,12 +176,18 @@
 Patch to support 'cursorlineopt' - only highlight the line number of the
 cursor line: #4693
 
+Let plugins know how much space is available in the last line before
+triggering the hit-enter prompt.  Internally called "sc_col".
+(Daniel Hahler, #4732)
+
 Patch for Template string: #4491  Not ready yet.  New pull: #4634
 
 ":bnext" in a help buffer is supposed to go to the next help buffer, but it
 goes to any buffer, and then :bnext skips help buffers, since they are
 unlisted. (#4478)
 
+Make 'showbreak' global-local.
+
 Problem showing a line if the number column width changes when using "o".
 (Mateusz Morusiewicz, #4245)
 
@@ -222,6 +224,9 @@
 Internal diff doesn't handle binary file like external diff does. (Mike
 Williams, 2018 Oct 30)
 
+"exepath('bin/cmd')" does not work while ":!bin/cmd" does work.
+(Daniel Hahler, #4710)  and executable('bin/cmd') returns 1
+
 Problem with :tlmenu: Detach item added with all modes?  Issue #3563.
 
 The quoting of the [command] argument of :terminal is not clearly documented.
@@ -308,6 +313,24 @@
 Add test for urxvt mouse codes.  Also test that mouse coordinates can be
 negative. (see #4326)
 
+All functions are global, which makes functions like get() and len() awkward.
+For the future use the ~get() and ~len() syntax.  It also allows for
+chaining: >
+    mylist~get(idx)
+    mylist~uniq()~len()
+    mydict~get(idx)
+    mystring~len()
+Or use -> (like C pointer dereference) >
+    mylist->get(idx)
+    mylist->uniq()->len()
+    mydict->get(idx)
+    mystring->len()
+Alternatives for ~:
+    ^  list^get()    could also be used
+    .  list.get()    already means "member" in Dict
+    $  list$get()    harder to read
+    @  list@get()    harder to read
+
 'cmdheight' has a tab-local value, but it cannot be obtained with
 `:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_
 tab page. (Ingo Karkat, #4324)
@@ -522,6 +545,8 @@
 Win32 key codes are messy.  Mike Williams tried to fix that, but now old
 mappings no longer work.  Create a new terminal for the better solution?
 
+Patch to "fix" 'visualbell'. Add option to set delay?  (#1789)
+
 Script generated by :mksession does not work well if there are windows with
 modified buffers
   change "silent only" into "silent only!"
@@ -802,18 +827,6 @@
 
 'tagrelative' is broken in specific situation. (xaizek, 2017 Oct 19, #2221)
 
-All functions are global, which makes functions like get() and len() awkward.
-For the future use the ~get() and ~len() syntax, e.g.:
-    mylist~get(idx)
-    mydict~get(idx)
-    mystring~len()
-Alternatives for ~:
-    ^  list^get()    could also be used
-    .  list.get()    already means concatenate
-    $  list$get()    harder to read
-    @  list@get()    harder to read
-    ->  list->get()  two characters, used for lambda
-
 The ++ options for the :edit command are also useful on the Vim command line.
 
 When recovering a file, put the swap file name in b:recovered_swapfile.  Then
@@ -4379,8 +4392,6 @@
     to avoid a performance penalty (esp. for string options)?
 8   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
     ":let &t_xx =".  Useful for making portable mappings.
--   Add ":let var ?= value", conditional assignment.  Patch by Dave Eggum,
-    2006 Dec 11.
 -   range for ":exec", pass it on to the executed command.  (Webb)
 8   ":{range}source": source the lines from the current file.
 	You can already yank lines and use :@" to execute them.
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 5f987dc..6a67867 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 8.1.  Last change: 2019 Jun 10
+*various.txt*   For Vim version 8.1.  Last change: 2019 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -457,7 +457,6 @@
 N  *+viminfo*		|'viminfo'|
    *+vertsplit*		Vertically split windows |:vsplit|; Always enabled
 			since 8.0.1118.
-			in sync with the |+windows| feature
 N  *+virtualedit*	|'virtualedit'|
 T  *+visual*		Visual mode |Visual-mode| Always enabled since 7.4.200.
 T  *+visualextra*	extra Visual mode commands |blockwise-operators|
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 81b99a0..87a5d6f 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 8.1.  Last change: 2019 Jul 18
+*windows.txt*   For Vim version 8.1.  Last change: 2019 Jul 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -28,8 +28,6 @@
 
 {not able to use multiple windows when the |+windows| feature was disabled at
 compile time}
-{not able to use vertically split windows when the |+vertsplit| feature was
-disabled at compile time}
 
 ==============================================================================
 1. Introduction					*windows-intro* *window*
@@ -162,6 +160,10 @@
 		Note: CTRL-S does not work on all terminals and might block
 		further input, use CTRL-Q to get going again.
 		Also see |++opt| and |+cmd|.
+							*E242*
+		Be careful when splitting a window in an autocommand, it may
+		mess up the window layout if this happens while making other
+		window layout changes.
 
 CTRL-W CTRL-V						*CTRL-W_CTRL-V*
 CTRL-W v						*CTRL-W_v*
@@ -507,7 +509,6 @@
 		current window and then creating another one with
 		":vert topleft split", except that the current window contents
 		is used for the new window.
-		{not available when compiled without the |+vertsplit| feature}
 
 						*CTRL-W_L*
 CTRL-W L	Move the current window to be at the far right, using the full
@@ -515,7 +516,6 @@
 		current window and then creating another one with
 		":vert botright split", except that the current window
 		contents is used for the new window.
-		{not available when compiled without the |+vertsplit| feature}
 
 						*CTRL-W_T*
 CTRL-W T	Move the current window to a new tab page.  This fails if
@@ -667,6 +667,8 @@
 		|:vertical| was prepended).
 		Buf/Win Enter/Leave autocommands are not executed for the new
 		windows here, that's only done when they are really entered.
+		If autocommands change the window layout while this command is
+		busy an error will be given. *E249*
 
 :[N]sa[rgument][!] [++opt] [+cmd] [N]			*:sa* *:sargument*
 		Short for ":split | argument [N]": split window and go to Nth
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 5dee6c9..67a1327 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -1,10 +1,10 @@
 " Vim indent file
 " Language:	PHP
-" Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
-" URL:		http://www.2072productions.com/vim/indent/php.vim
+" Author:	John Wellesz <John.wellesz (AT) gmail (DOT) com>
+" URL:		https://www.2072productions.com/vim/indent/php.vim
 " Home:		https://github.com/2072/PHP-Indenting-for-VIm
-" Last Change:	2018 May 18th
-" Version:	1.66
+" Last Change:	2019 Jully 21st
+" Version:	1.70
 "
 "
 "	Type :help php-indent for available options
@@ -19,7 +19,7 @@
 
 " NOTE: This script must be used with PHP syntax ON and with the php syntax
 "	script by Lutz Eymers (http://www.isp.de/data/php.vim ) or with the
-"	script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )
+"	script by Peter Hodge (https://www.vim.org/scripts/script.php?script_id=1571 )
 "	the later is bunbdled by default with Vim 7.
 "
 "
@@ -41,7 +41,6 @@
 "	silently remove them when VIM load this script (at each bufread).
 
 
-
 if exists("b:did_indent")
     finish
 endif
@@ -95,7 +94,17 @@
     let b:PHP_vintage_case_default_indent = 0
 endif
 
+if exists("PHP_IndentFunctionCallParameters")
+    let b:PHP_IndentFunctionCallParameters = PHP_IndentFunctionCallParameters
+else
+    let b:PHP_IndentFunctionCallParameters = 0
+endif
 
+if exists("PHP_IndentFunctionDeclarationParameters")
+    let b:PHP_IndentFunctionDeclarationParameters = PHP_IndentFunctionDeclarationParameters
+else
+    let b:PHP_IndentFunctionDeclarationParameters = 0
+endif
 
 let b:PHP_lastindented = 0
 let b:PHP_indentbeforelast = 0
@@ -129,15 +138,19 @@
 
 if exists("*GetPhpIndent")
     call ResetPhpOptions()
-    finish
+    finish " XXX -- comment this line for easy dev
 endif
 
 
-let s:PHP_validVariable = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
-let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\)'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
-let s:functionDecl = '\<function\>\%(\s\+&\='.s:PHP_validVariable.'\)\=\s*(.*'
 let s:endline = '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
+let s:PHP_validVariable = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
+let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\|end\%(if\|while\|for\|foreach\|switch\)\)'
+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|\%()\s*\)\=use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
+let s:functionDeclPrefix = '\<function\>\%(\s\+&\='.s:PHP_validVariable.'\)\=\s*('
+let s:functionDecl = s:functionDeclPrefix.'.*'
+let s:multilineFunctionDecl = s:functionDeclPrefix.s:endline
+let s:arrayDecl = '\<array\>\s*(.*'
+let s:multilineFunctionCall = s:PHP_validVariable.'\s*('.s:endline
 let s:unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.s:endline
 
 
@@ -210,7 +223,7 @@
 	    while getline(lnum) !~? tofind && lnum > 1
 		let lnum = lnum - 1
 	    endwhile
-	elseif lastline =~ '^[^''"`]*[''"`][;,]'.s:endline
+	elseif lastline =~ '^\s*[''"`][;,]' || (lastline =~ '^[^''"`]*[''"`][;,]'.s:endline && IslinePHP(lnum, "") == "SpecStringEntrails")
 
 	    let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$\\|^[^\1]\\+[=([]\\s*[\1]', '')
 	    let trylnum = lnum
@@ -289,17 +302,23 @@
 endfun " }}}
 
 let s:blockChars = {'{':1, '[': 1, '(': 1, ')':-1, ']':-1, '}':-1}
+let s:blockCharsLUT = {'{':'{', '}':'{',   '[':'[', ']':'[',   '(':'(', ')':'('}
 function! BalanceDirection (str)
 
-    let balance = 0
+    let balance = {'{':0, '[': 0, '(': 0, 'none':0}
+    let director = 'none'
 
     for c in split(a:str, '\zs')
 	if has_key(s:blockChars, c)
-	    let balance += s:blockChars[c]
+	    let balance[s:blockCharsLUT[c]] += s:blockChars[c]
+
+	    if balance[s:blockCharsLUT[c]]
+		let director = s:blockCharsLUT[c]
+	    endif
 	endif
     endfor
 
-    return balance
+    return balance[director]
 endfun
 
 function! StripEndlineComments (line)
@@ -308,7 +327,8 @@
 
 function! FindArrowIndent (lnum)  " {{{
 
-    let parrentArrowPos = 0
+    let parrentArrowPos = -1
+    let cursorPos = -1
     let lnum = a:lnum
     while lnum > 1
 	let last_line = getline(lnum)
@@ -316,31 +336,46 @@
 	    let parrentArrowPos = indent(a:lnum)
 	    break
 	else
-	    call cursor(lnum, 1)
-	    let cleanedLnum = StripEndlineComments(last_line)
-	    if cleanedLnum =~ '->'
-		if ! b:PHP_noArrowMatching
-		    let parrentArrowPos = searchpos('->', 'W', lnum)[1] - 1
-		else
-		    let parrentArrowPos = indent(lnum) + shiftwidth()
-		endif
-		break
-	    elseif cleanedLnum =~ ')'.s:endline && BalanceDirection(last_line) < 0
-		call searchpos(')'.s:endline, 'cW', lnum)
-		let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
-		if openedparent != lnum
-		    let lnum = openedparent
-		else
-		    let openedparent = -1
-		endif
 
+	    if b:PHP_noArrowMatching
+		break
+	    endif
+
+	    let cleanedLnum = StripEndlineComments(last_line)
+
+	    if cleanedLnum =~ ')'.s:endline
+		if BalanceDirection(cleanedLnum) <= 0
+		    call cursor(lnum, 1)
+		    call searchpos(')'.s:endline, 'cW', lnum)
+		    let openedparent =  searchpair('(', '', ')', 'bW', 'Skippmatch()')
+		    let cursorPos = col(".")
+		    if openedparent != lnum
+			let lnum = openedparent
+			continue
+		    else
+		    endif
+		else
+		    let parrentArrowPos = -1
+		    break
+		end
+	    endif
+
+	    if cleanedLnum =~ '->'
+		call cursor(lnum, cursorPos == -1 ? strwidth(cleanedLnum) : cursorPos)
+		let parrentArrowPos = searchpos('->', 'cWb', lnum)[1] - 1
+
+		break
 	    else
-		let parrentArrowPos = indent(lnum) + shiftwidth()
+		let parrentArrowPos = -1
 		break
 	    endif
 	endif
     endwhile
 
+    if parrentArrowPos == -1
+	let parrentArrowPos = indent(lnum) + shiftwidth()
+    end
+
     return parrentArrowPos
 endfun "}}}
 
@@ -432,7 +467,7 @@
     let synname = synIDattr(synID(a:lnum, coltotest, 0), "name")
 
     if synname ==? 'phpStringSingle' || synname ==? 'phpStringDouble' || synname ==? 'phpBacktick'
-	if cline !~ '^\s*[''"`]'
+	if cline !~ '^\s*[''"`]' " ??? XXX
 	    return "SpecStringEntrails"
 	else
 	    return synname
@@ -471,7 +506,7 @@
 call ResetPhpOptions()
 
 function! GetPhpIndentVersion()
-    return "1.66-bundle"
+    return "1.70-bundle"
 endfun
 
 function! GetPhpIndent()
@@ -615,7 +650,7 @@
 		let b:InPHPcode_and_script = 1
 	    endif
 
-	elseif last_line =~ '^[^''"`]\+[''"`]$' " a string identifier with nothing after it and no other string identifier before
+	elseif last_line =~ '^[^''"`]\+[''"`]$' && last_line !~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' " a string identifier with nothing after it and no other string identifier before
 	    let b:InPHPcode = -1
 	    let b:InPHPcode_tofind = substitute( last_line, '^.*\([''"`]\).*$', '^[^\1]*\1[;,]$', '')
 	elseif last_line =~? '<<<\s*[''"]\=\a\w*[''"]\=$'
@@ -723,7 +758,7 @@
     endif
 
 
-    if last_line =~ '[;}]'.endline && last_line !~ '^[)\]]' && last_line !~# s:defaultORcase
+    if last_line =~ '[;}]'.endline && last_line !~ '^[)\]]' && last_line !~# s:defaultORcase && last_line !~ '^\s*[''"`][;,]'
 	if ind==b:PHP_default_indenting
 	    return b:PHP_default_indenting + addSpecial
 	elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
@@ -869,6 +904,14 @@
 		let ind = ind + shiftwidth()
 	    endif
 
+	    if b:PHP_IndentFunctionCallParameters && last_line =~ s:multilineFunctionCall && last_line !~ s:structureHead && last_line !~ s:arrayDecl
+		let ind = ind + b:PHP_IndentFunctionCallParameters * shiftwidth()
+	    endif
+
+	    if b:PHP_IndentFunctionDeclarationParameters && last_line =~ s:multilineFunctionDecl
+		let ind = ind + b:PHP_IndentFunctionDeclarationParameters * shiftwidth()
+	    endif
+
 	    if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
 		let b:PHP_CurrentIndentLevel = ind
 
@@ -897,10 +940,15 @@
     endif
 
     if cline =~ '^\s*[)\]];\='
-	let ind = ind - shiftwidth()
-    endif
+	call cursor(v:lnum, 1)
+	call searchpos('[)\]]', 'cW')
+	let matchedBlockChar = cline[col('.')-1]
+	let openedparent = searchpair('\M'.s:blockCharsLUT[matchedBlockChar], '', '\M'.matchedBlockChar, 'bW', 'Skippmatch()')
+	if openedparent != v:lnum
+	    let ind = indent(openedparent)
+	endif
 
-    if last_line =~ '^\s*->' && last_line !~? s:structureHead && BalanceDirection(last_line) <= 0
+    elseif last_line =~ '^\s*->' && last_line !~? s:structureHead && BalanceDirection(last_line) <= 0
 	let ind = ind - shiftwidth()
     endif
 
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 148a86e..3df6abb 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -3,10 +3,13 @@
 " Maintainer:          Christian Brabandt <cb@256bit.org>
 " Original Author:     Nikolai Weibull <now@bitwi.se>
 " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
-" Latest Revision:     2019-04-27
+" Latest Revision:     2019-07-26
 " License:             Vim (see :h license)
 " Repository:          https://github.com/chrisbra/vim-sh-indent
 " Changelog:
+"          20190726  - Correctly skip if keywords in syntax comments
+"                      (issue #17)
+"          20190603  - Do not indent in zsh filetypes with an `if` in comments
 "          20190428  - De-indent fi correctly when typing with
 "                      https://github.com/chrisbra/vim-sh-indent/issues/15
 "          20190325  - Indent fi; correctly
@@ -80,8 +83,9 @@
   let ind = indent(lnum)
 
   " Check contents of previous lines
+  " should not apply to e.g. commented lines
   if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' ||
-        \  (&ft is# 'zsh' && line =~ '\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>')
+        \  (&ft is# 'zsh' && line =~ '^\s*\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>')
     if !s:is_end_expression(line)
       let ind += s:indent_value('default')
     endif
@@ -129,7 +133,8 @@
   " Current line is a endif line, so get indent from start of "if condition" line
   " TODO: should we do the same for other "end" lines?
   if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$'
-    let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW')
+    let ind = indent(v:lnum)
+    let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment"')
     if previous_line > 0
       let ind = indent(previous_line)
     endif
diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim
index ad22de1..883af98 100644
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -1,9 +1,10 @@
 "     Language: xml
 "   Repository: https://github.com/chrisbra/vim-xml-ftplugin
-" Last Changed: Feb 04, 2019
+" Last Changed: July 27, 2019
 "   Maintainer: Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Johannes Zellner <johannes@zellner.org>
 " Last Change:
+" 20190726 - Correctly handle non-tagged data
 " 20190204 - correctly handle wrap tags
 "            https://github.com/chrisbra/vim-xml-ftplugin/issues/5
 " 20190128 - Make sure to find previous tag
@@ -33,6 +34,8 @@
 " Attention: Parameter use_syntax_check is used by the docbk.vim indent script
 setlocal indentexpr=XmlIndentGet(v:lnum,1)
 setlocal indentkeys=o,O,*<Return>,<>>,<<>,/,{,},!^F
+" autoindent: used when the indentexpr returns -1
+setlocal autoindent
 
 if !exists('b:xml_indent_open')
     let b:xml_indent_open = '.\{-}<[:A-Z_a-z]'
@@ -103,37 +106,43 @@
         return 0
     endif
     " Find previous line with a tag (regardless whether open or closed,
-    " but always start restrict the match to a line before the current one
+    " but always restrict the match to a line before the current one
     " Note: xml declaration: <?xml version="1.0"?>
     "       won't be found, as it is not a legal tag name
-    let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. line('.').'l\)'
+    let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. a:lnum .'l\)'
     let ptag = search(ptag_pattern, 'bnW')
     " no previous tag
     if ptag == 0
         return 0
     endif
 
-    let syn_name = ''
+    let pline = getline(ptag)
+    let pind  = indent(ptag)
+
+    let syn_name_start = '' " Syntax element at start of line (excluding whitespace)
+    let syn_name_end = ''   " Syntax element at end of line
+    let curline = getline(a:lnum)
     if a:use_syntax_check
         let check_lnum = <SID>XmlIndentSynCheck(ptag)
         let check_alnum = <SID>XmlIndentSynCheck(a:lnum)
         if check_lnum == 0 || check_alnum == 0
             return indent(a:lnum)
         endif
-        let syn_name = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
+        let syn_name_end   = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name')
+        let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name')
     endif
 
-    if syn_name =~ 'Comment'
+    if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment'
         return <SID>XmlIndentComment(a:lnum)
+    elseif empty(syn_name_start) && empty(syn_name_end)
+        " non-xml tag content: use indent from 'autoindent'
+        return pind + shiftwidth()
     endif
 
-    let pline = getline(ptag)
-    let pind  = indent(ptag)
     " Get indent from previous tag line
     let ind = <SID>XmlIndentSum(pline, -1, pind)
-    let t_ind = ind
     " Determine indent from current line
-    let ind = <SID>XmlIndentSum(getline(a:lnum), 0, ind)
+    let ind = <SID>XmlIndentSum(curline, 0, ind)
     return ind
 endfun
 
@@ -148,7 +157,7 @@
 endfunc
 
 " return indent for a commented line,
-" the middle part might be indented on additional level
+" the middle part might be indented one additional level
 func! <SID>XmlIndentComment(lnum)
     let ptagopen = search(b:xml_indent_open, 'bnW')
     let ptagclose = search(b:xml_indent_close, 'bnW')
diff --git a/runtime/spell/de/de_20.diff b/runtime/spell/de/de_20.diff
deleted file mode 100644
index bbac7a0..0000000
--- a/runtime/spell/de/de_20.diff
+++ /dev/null
@@ -1,580 +0,0 @@
-*** de_DE.orig.aff	2019-01-19 18:45:26.132522538 +0100
---- de_DE.aff	2019-01-19 19:23:37.233297530 +0100
-***************
-*** 15,16 ****
---- 15,46 ----
-  
-+ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-+ 
-+ MIDWORD	'
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-+ COMPOUNDRULE xy?z
-+ #COMPOUNDBEGIN x
-+ #COMPOUNDMIDDLE y
-+ #COMPOUNDEND z
-+ 
-+ # Prefixes are allowed at the beginning of compounds,
-+ # suffixes are allowed at the end of compounds by default:
-+ # (prefix)?(root)+(affix)?
-+ # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-+ COMPOUNDPERMITFLAG c
-+ 
-+ ONLYINCOMPOUND o
-+ 
-  PFX U Y 1
-***************
-*** 536,553 ****
-  #LANG de_DE
-! CHECKSHARPS
-! 
-  
-- COMPOUNDBEGIN x
-- COMPOUNDMIDDLE y
-- COMPOUNDEND z
-  FORBIDDENWORD d
-  
-- # Prefixes are allowed at the beginning of compounds,
-- # suffixes are allowed at the end of compounds by default:
-- # (prefix)?(root)+(affix)?
-- # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-- COMPOUNDPERMITFLAG c
-- 
-- ONLYINCOMPOUND o
-- 
-  # my PSEUDOROOT h(elper) flag
---- 566,571 ----
-  #LANG de_DE
-! # CHECKSHARPS
-  
-  FORBIDDENWORD d
-  
-  # my PSEUDOROOT h(elper) flag
-***************
-*** 571,573 ****
-  
-! WORDCHARS ß-.
-  
---- 589,591 ----
-  
-! # WORDCHARS ß-.
-  
-***************
-*** 725,729 ****
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! BREAK 2
-! BREAK -
-! BREAK .
-! 
---- 743,1241 ----
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! # BREAK 2
-! # BREAK -
-! # BREAK .
-! 
-! #   German phonetic transformation rules for use with Aspell
-! #   Copyright (C) 2000 Björn Jacke
-! #
-! #   This library is free software; you can redistribute it and/or
-! #   modify it under the terms of the GNU Lesser General Public
-! #   License version 2.1 as published by the Free Software Foundation;
-! #
-! #   This library is distributed in the hope that it will be useful,
-! #   but WITHOUT ANY WARRANTY; without even the implied warranty of
-! #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-! #   Lesser General Public License for more details.
-! #
-! #   You should have received a copy of the GNU Lesser General Public
-! #   License along with this library; if not, write to the Free Software
-! #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-! #
-! #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
-! #
-! #   Changelog:
-! #
-! #   2000-01-05  Björn Jacke <bjoern.jacke@gmx.de>
-! #               Initial Release
-! #   2000-01-07  Kevin Atkinson <kevinatk@home.com>
-! #               Converted from header to data file.
-! SAL followup        1
-! SAL collapse_result 1
-! 
-! SAL ÄER-                 E
-! SAL ÄU<                  EU
-! SAL Ä<                   E
-! SAL É                    E
-! SAL ÖER-                 Ö
-! SAL Ö                    Ö
-! SAL ÜBER^^               IPA
-! SAL ÜER-                 I
-! SAL Ü                    I
-! SAL ß                    Z
-! SAL ABELLE$              APL
-! SAL ABELL$               APL
-! SAL ABIENNE$             APIN
-! SAL ACEY$                AZI
-! SAL AEU<                 EU
-! SAL AE2                  E
-! SAL AGNI-^               AKN
-! SAL AGNIE-               ANI
-! SAL AGN(AEOU)-$          ANI
-! SAL AIA2                 AIA
-! SAL AIE$                 E
-! SAL AILL(EOU)-           ALI
-! SAL AINE$                EN
-! SAL AIRE$                ER
-! SAL AIR-                 E
-! SAL AISE$                EZ
-! SAL AISSANCE$            EZANZ
-! SAL AISSE$               EZ
-! SAL AIX$                 EX
-! SAL AJ(AÄEIOÖUÜ)--       A
-! SAL AKTIE                AXIE
-! SAL ALO(IY)^             ALUI
-! SAL AMATEU(RS)-          ANATÖ
-! SAL ANIELLE$             ANIL
-! SAL ANTI^^               ANTI
-! SAL ANVER^^              ANFA
-! SAL ATIA$                ATIA
-! SAL ATIA(NS)--           ATI
-! SAL ATI(AÄOÖUÜ)-         AZI
-! SAL AUAU--               _
-! SAL AUER<                AUA
-! SAL AUF^^                AUF
-! SAL AULT$                U
-! SAL AUSSE$               UZ
-! SAL AUS(ST)-^            AUZ
-! SAL AUS^^                AUZ
-! SAL AUTO^^               AUTU
-! SAL AUX(IY)-             AUX
-! SAL AUX                  U
-! SAL AU                   AU
-! SAL AVIER$               AFIE
-! SAL AYER--<              EI
-! SAL AY(AÄEIOÖUÜ)--       A
-! SAL A(IJY)<              EI
-! SAL A                    A
-! SAL BEA(BCMNRU)-^        PEA
-! SAL BEAT(AEIMORU)-^      PEAT
-! SAL BEIGE^$              PEZ
-! SAL BE(LMNRST)-^         PE
-! SAL BETTE$               PET
-! SAL BIC$                 PIZ
-! SAL BOWL(EI)-            PUL
-! SAL BP(AÄEIOÖRUÜY)-      P
-! SAL BUDGET7              PIKE
-! SAL BUFFET7              PIFE
-! SAL BYLLE$               PILE
-! SAL BYLL$                PIL
-! SAL BYTE<                PEIT
-! SAL B                    P
-! SAL CÄ-                  Z
-! SAL CÜ$                  ZI
-! SAL CACH(EI)-^           KEZ
-! SAL CAE--                Z
-! SAL CA(IY)$              ZEI
-! SAL CCH                  Z
-! SAL CCE-                 X
-! SAL CE(EIJUY)--          Z
-! SAL CENT<                ZENT
-! SAL CERST(EI)----^       KE
-! SAL CER$                 ZA
-! SAL CE3                  ZE
-! SAL CHAO(ST)-            KAU
-! SAL CHAMPIO-^            ZENPI
-! SAL CHAR(AI)-^           KAR
-! SAL CHAU(CDFSVWXZ)-      ZU
-! SAL CHE(CF)-             ZE
-! SAL CHEM-^               KE
-! SAL CHEQUE<              ZEK
-! SAL CHI(CFGPVW)-         ZI
-! SAL CH(AEUY)-<^          Z
-! SAL CHK-                 _
-! SAL CH(LOR)-<^           K
-! SAL CHST-                X
-! SAL CH(SßXZ)3            X
-! SAL CH                   K
-! SAL CIER$                ZIE
-! SAL CYB-^                ZEI
-! SAL CY9^                 ZI
-! SAL C(IJY)-3             Z
-! SAL CKST                 XT
-! SAL CK(SßXZ)3            X
-! SAL C(CK)-               _
-! SAL CLAUDET---           KLU
-! SAL CLAUDINE^$           KLUTIN
-! SAL COLE$                KUL
-! SAL COUCH                KAUZ
-! SAL CQUES$               K
-! SAL CQUE                 K
-! SAL CREAT-^              KREA
-! SAL CST                  XT
-! SAL CS<^                 Z
-! SAL C(SßX)               X
-! SAL CT(SßXZ)             X
-! SAL CZ<                  Z
-! SAL C<                   K
-! SAL D'H^                 T
-! SAL D'S3$                Z
-! SAL DAVO(NR)-^$          TAFU
-! SAL DD(SZ)--<            _
-! SAL DEPOT7               TEPU
-! SAL DESIGN               TIZEIN
-! SAL DE(LMNRST)-3^        TE
-! SAL DETTE$               TET
-! SAL DIC$                 TIZ
-! SAL DJ(AEIOU)-^          I
-! SAL DS(CH)--<            T
-! SAL DST                  ZT
-! SAL DT-                  _
-! SAL DUIS-^               TI
-! SAL DURCH^^              TURK
-! SAL DZS(CH)--            T
-! SAL D(SßZ)               Z
-! SAL D                    T
-! SAL EAULT$               U
-! SAL EAUX$                U
-! SAL EAU                  U
-! SAL EAV                  IF
-! SAL EA(AÄEIOÖÜY)-3       EA
-! SAL EA3$                 EA
-! SAL EA3                  I
-! SAL EBEN^^               EPN
-! SAL EE9                  E
-! SAL EIEI--               _
-! SAL EIH--                E
-! SAL EILLE$               EI
-! SAL EI                   EI
-! SAL EJ$                  EI
-! SAL EL-^                 E
-! SAL EL(DKL)--1           E
-! SAL EL(MNT)--1$          E
-! SAL ELYNE$               ELINE
-! SAL ELYN$                ELIN
-! SAL EL(AÄEIOÖUÜY)-1      EL
-! SAL EL-1                 L
-! SAL EM-^                 E
-! SAL EM(DFKMPQT)--1       E
-! SAL EM(AÄEIOÖUÜY)--1     E
-! SAL EM-1                 N
-! SAL EN-^                 E
-! SAL EN(CDGKQT)--1        E
-! SAL ENZ(AEIOUY)--1       EN
-! SAL EN(AÄEINOÖUÜY)-1     EN
-! SAL EN-<1                N
-! SAL ERH(AÄEIOÖUÜ)-^      ER
-! SAL ER-^                 E
-! SAL ER(AÄEIOÖUÜY)-1      A
-! SAL ER1$                 A
-! SAL ER<1                 A
-! SAL ETI(AÄOÖÜU)-         EZI
-! SAL EUEU--               _
-! SAL EUILLE$              Ö
-! SAL EUR$                 ÖR
-! SAL EUX                  Ö
-! SAL EUYS$                EUZ
-! SAL EU                   EU
-! SAL EYER<                EIA
-! SAL EY<                  EI
-! SAL E                    E
-! SAL FANS--^$             FE
-! SAL FAN-^$               FE
-! SAL FAULT-               FUL
-! SAL FEE(DL)-             FI
-! SAL FEHLER               FELA
-! SAL FE(LMNRST)-3^        FE
-! SAL FOND7                FUN
-! SAL FRAIN$               FRA
-! SAL FRISEU(RS)-          FRIZÖ  # x
-! SAL F                    F
-! SAL G'S$                 X
-! SAL GAGS^$               KEX
-! SAL GAG^$                KEK
-! SAL GD                   KT
-! SAL GEGEN^^              KEKN
-! SAL GE(LMNRST)-3^        KE
-! SAL GETTE$               KET
-! SAL G(CK)-               _
-! SAL GG-                  _
-! SAL GI(AO)-^             I
-! SAL GION$                KIUN
-! SAL GIUS-^               IU
-! SAL GMBH^$               GMPH
-! SAL GNAC$                NIAK
-! SAL GNON$                NIUN
-! SAL GN$                  N
-! SAL GONCAL-^             KUNZA
-! SAL GS(CH)--             K
-! SAL GST                  XT
-! SAL G(SßXZ)              X
-! SAL GUCK-                KU
-! SAL GUI-^                K
-! SAL G                    K
-! SAL HEAD-                E
-! SAL HE(LMNRST)-3^        E
-! SAL HE(LMN)-1            E
-! SAL HEUR1$               ÖR
-! SAL H^                   _
-! SAL IEC$                 IZ
-! SAL IEI-3                _
-! SAL IELL3                IEL
-! SAL IENNE$               IN
-! SAL IERRE$               IER
-! SAL IETTE$               IT
-! SAL IEU                  IÖ
-! SAL IE<4                 I
-! SAL IGHT3$               EIT
-! SAL IGNI(EO)-            INI
-! SAL IGN(AEOU)-$          INI
-! SAL IJ(AOU)-             I
-! SAL IJ$                  I
-! SAL IJ<                  EI
-! SAL IKOLE$               IKUL
-! SAL ILLAN(STZ)--         ILIA
-! SAL ILLAR(DT)--          ILIA
-! SAL INVER-               INFE
-! SAL ITI(AÄOÖUÜ)-         IZI
-! SAL IVIER$               IFIE
-! SAL I                    I
-! SAL JAVIE---<^           ZA
-! SAL JEAN^$               IA
-! SAL JEAN-^               IA
-! SAL JER-^                IE
-! SAL JE(LMNST)-           IE
-! SAL JOR(GK)^$            IÖRK
-! SAL J                    I
-! SAL KC(ÄEIJ)-            X
-! SAL KE(LMNRST)-3^        KE
-! SAL KH<^                 K
-! SAL KIC$                 KIZ
-! SAL KLE(LMNRST)-3^       KLE
-! SAL KOTELE-^             KUTL
-! SAL KREAT-^              KREA
-! SAL KST                  XT
-! SAL K(SßXZ)              X
-! SAL KTI(AIOU)-3          XI
-! SAL KT(SßXZ)             X
-! SAL K                    K
-! SAL LARVE-               LARF
-! SAL LEAND-^              LEAN
-! SAL LEL-                 LE
-! SAL LE(MNRST)-3^         LE
-! SAL LETTE$               LET
-! SAL LFGNAG-              LFKAN
-! SAL LIC$                 LIZ
-! SAL LIVE^$               LEIF
-! SAL LUI(GS)--            LU
-! SAL L                    L
-! SAL MASSEU(RS)-          NAZÖ
-! SAL MAURICE              NURIZ
-! SAL MBH^$                MPH
-! SAL MB(SßZ)-             N
-! SAL MC9^                 NK
-! SAL MEMOIR-^             NENUA
-! SAL ME(LMNRST)-3^        NE
-! SAL MIGUEL               NIKL
-! SAL MIKE^$               NEIK
-! SAL MN                   N
-! SAL MPJUTE-              NPUT
-! SAL MP(SßZ)-             N
-! SAL MP(BDJLMNPQRTVW)-    NP
-! SAL M                    N
-! SAL NACH^^               NAK
-! SAL NADINE               NATIN
-! SAL NAIV--               NA
-! SAL NAISE$               NEZE
-! SAL NCOISE$              ZUA
-! SAL NCOIS$               ZUA
-! SAL NEBEN^^              NEPN
-! SAL NE(LMNRST)-3^        NE
-! SAL NEN-3                NE
-! SAL NETTE$               NET
-! SAL NG(BDFJLMNPQRTVW)-   NK
-! SAL NICHTS^^             NIX
-! SAL NICHT^^              NIKT
-! SAL NINE$                NIN
-! SAL NON^^                NUN
-! SAL NOT^^                NUT
-! SAL NTI(AIOU)-3          NZI
-! SAL NTIEL--3             NZI
-! SAL NYLON                NEILUN
-! SAL ND(SßZ)$             NZ
-! SAL NT(SßZ)$             NZ
-! SAL ND'S$                NZ
-! SAL NT'S$                NZ
-! SAL NSTS$                NZ
-! SAL N                    N
-! SAL OBER^^               UPA
-! SAL OE2                  Ö
-! SAL OGNIE-               UNI
-! SAL OGN(AEOU)-$          UNI
-! SAL OIE$                 Ö
-! SAL OIR$                 UAR
-! SAL OIX                  UA
-! SAL OI<3                 EU
-! SAL OJ(AÄEIOÖUÜ)--       U
-! SAL OKAY^$               UKE
-! SAL OLYN$                ULIN
-! SAL OTI(AÄOÖUÜ)-         UZI
-! SAL OUI^                 FI
-! SAL OUILLE$              ULIE
-! SAL OU(DT)-^             AU
-! SAL OUSE$                AUZ
-! SAL OUT-                 AU
-! SAL OU                   U
-! SAL OWS$                 UZ
-! SAL OY(AÄEIOÖUÜ)--       U
-! SAL O(JY)<               EU
-! SAL O                    U
-! SAL PATIEN--^            PAZI
-! SAL PENSIO-^             PANZI
-! SAL PE(LMNRST)-3^        PE
-! SAL PFER-^               FE
-! SAL P(FH)<               F
-! SAL POLY^^               PULI
-! SAL PORTRAIT7            PURTRE
-! SAL PP(FH)--<            P
-! SAL PP-                  _
-! SAL PRIX^$               PRI
-! SAL P(SßZ)^              Z
-! SAL PTI(AÄOÖUÜ)-3        PZI
-! SAL PIC^$                PIK
-! SAL P                    P
-! SAL QUE(LMNRST)-3        KFE
-! SAL QUE$                 K
-! SAL QUI(NS)$             KI
-! SAL QU                   KF
-! SAL Q<                   K
-! SAL RCH                  RK
-! SAL RECHERCH^            REZAZ
-! SAL RER$                 RA
-! SAL RE(MNR)-4            RE
-! SAL RETTE$               RET
-! SAL RH<^                 R
-! SAL RJA(MN)--            RI
-! SAL RTI(AÄOÖUÜ)-3        RZI
-! SAL RY(KN)-$             RI
-! SAL R                    R
-! SAL SAFE^$               ZEIF
-! SAL SAUCE-^              ZUZ
-! SAL SCHSCH---7           _
-! SAL SCHTSCH              Z
-! SAL SC(HZ)<              Z
-! SAL SC                   ZK
-! SAL SELBSTST--7^^        ZELP
-! SAL SELBST7^^            ZELPZT
-! SAL SERVICE7^            ZÖRFIZ
-! SAL SE(LMNRST)-3^        ZE
-! SAL SETTE$               ZET
-! SAL SHP-^                Z
-! SAL SHST                 ZT
-! SAL SHTSH                Z
-! SAL SHT                  Z
-! SAL SH3                  Z
-! SAL SIEGLI-^             ZIKL
-! SAL SIGLI-^              ZIKL
-! SAL SIGHT                ZEIT
-! SAL SIGN                 ZEIN
-! SAL SKI(NPZ)-            ZKI
-! SAL SKI<^                ZI
-! SAL SOUND-               ZAUN
-! SAL STAATS^^             ZTAZ
-! SAL STADT^^              ZTAT
-! SAL START^^              ZTART
-! SAL STAURANT7            ZTURAN
-! SAL STEAK-               ZTE
-! SAL STRAF^^              ZTRAF
-! SAL ST'S$                Z
-! SAL STST--               _
-! SAL STS(ACEHIOUÄÜÖ)--    ZT
-! SAL ST(SZ)               Z
-! SAL STYN(AE)-$           ZTIN
-! SAL ST                   ZT
-! SAL SZE(NPT)-^           ZE
-! SAL SZI(ELN)-^           ZI
-! SAL SZCZ<                Z
-! SAL SZT<                 ZT
-! SAL SZ<3                 Z
-! SAL S                    Z
-! SAL T'S3$                Z
-! SAL TCH                  Z
-! SAL TEAT-^               TEA
-! SAL TE(LMNRST)-3^        TE
-! SAL TH<                  T
-! SAL TIC$                 TIZ
-! SAL TOAS-^               TU
-! SAL TOILET-              TULE
-! SAL TOIN-                TUA
-! SAL TRAINI-              TREN
-! SAL TSCH                 Z
-! SAL TSH                  Z
-! SAL TST                  ZT
-! SAL T(Sß)                Z
-! SAL TT(SZ)--<            _
-! SAL TT9                  T
-! SAL TZ-                  _
-! SAL T                    T
-! SAL UEBER^^              IPA
-! SAL UE2                  I
-! SAL UIE$                 I
-! SAL UM^^                 UN
-! SAL UNTERE--             UNTE
-! SAL UNTER^^              UNTA
-! SAL UNVER^^              UNFA
-! SAL UN^^                 UN
-! SAL UTI(AÄOÖUÜ)-         UZI
-! SAL U                    U
-! SAL VACL-^               FAZ
-! SAL VAC$                 FAZ
-! SAL VEDD-^               FE
-! SAL VEREIN               FAEIN
-! SAL VERSEN^              FAZN
-! SAL VER^^                FA
-! SAL VER                  FA
-! SAL VET(HT)-^            FET
-! SAL VETTE$               FET
-! SAL VIC$                 FIZ
-! SAL VIEL                 FIL
-! SAL VIEW                 FIU
-! SAL VOR^^                FUR
-! SAL VY9^                 FI
-! SAL V<                   F
-! SAL WE(LMNRST)-3^        FE
-! SAL WIC$                 FIZ
-! SAL WIEDER^^             FITA
-! SAL WY9^                 FI
-! SAL W                    F
-! SAL XE(LMNRST)-3^        XE
-! SAL X<^                  Z
-! SAL X(CSZ)               X
-! SAL XTS(CH)--            XT
-! SAL XT(SZ)               Z
-! SAL X                    X
-! SAL YE(LMNRST)-3^        IE
-! SAL YE-3                 I
-! SAL YOR(GK)^$            IÖRK
-! SAL Y(AOU)-<7            I
-! SAL YVES^$               IF
-! SAL YVONNE^$             IFUN
-! SAL Y                    I
-! SAL ZC(AOU)-             ZK
-! SAL ZE(LMNRST)-3^        ZE
-! SAL ZH<                  Z
-! SAL ZS(CHT)--            _
-! SAL ZS                   Z
-! SAL ZUERST               ZUERZT
-! SAL ZURÜCK^^             ZURIK
-! SAL ZUVER^^              ZUFA    # x
-! SAL Z                    Z
diff --git a/runtime/spell/de/de_AT.diff b/runtime/spell/de/de_AT.diff
deleted file mode 100644
index 42494fe..0000000
--- a/runtime/spell/de/de_AT.diff
+++ /dev/null
@@ -1,573 +0,0 @@
-*** de_AT.orig.aff	2019-01-19 19:16:46.616026157 +0100
---- de_AT.aff	2019-01-19 19:24:24.524983269 +0100
-***************
-*** 15,16 ****
---- 15,47 ----
-  
-+ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-+ 
-+ MIDWORD	'
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-+ COMPOUNDRULE xy?z
-+ #COMPOUNDBEGIN x
-+ #COMPOUNDMIDDLE y
-+ #COMPOUNDEND z
-+ 
-+ # Prefixes are allowed at the beginning of compounds,
-+ # suffixes are allowed at the end of compounds by default:
-+ # (prefix)?(root)+(affix)?
-+ # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-+ COMPOUNDPERMITFLAG c
-+ 
-+ ONLYINCOMPOUND o
-+ 
-+ 
-  PFX U Y 1
-***************
-*** 538,553 ****
-  
-- 
-- COMPOUNDBEGIN x
-- COMPOUNDMIDDLE y
-- COMPOUNDEND z
-  FORBIDDENWORD d
-  
-- # Prefixes are allowed at the beginning of compounds,
-- # suffixes are allowed at the end of compounds by default:
-- # (prefix)?(root)+(affix)?
-- # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-- COMPOUNDPERMITFLAG c
-- 
-- ONLYINCOMPOUND o
-- 
-  # my PSEUDOROOT h(elper) flag
---- 569,572 ----
-***************
-*** 571,573 ****
-  
-! WORDCHARS ß-.
-  
---- 590,592 ----
-  
-! # WORDCHARS ß-.
-  
-***************
-*** 725,729 ****
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! BREAK 2
-! BREAK -
-! BREAK .
-! 
---- 744,1242 ----
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! # BREAK 2
-! # BREAK -
-! # BREAK .
-! 
-! #   German phonetic transformation rules for use with Aspell
-! #   Copyright (C) 2000 Björn Jacke
-! #
-! #   This library is free software; you can redistribute it and/or
-! #   modify it under the terms of the GNU Lesser General Public
-! #   License version 2.1 as published by the Free Software Foundation;
-! #
-! #   This library is distributed in the hope that it will be useful,
-! #   but WITHOUT ANY WARRANTY; without even the implied warranty of
-! #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-! #   Lesser General Public License for more details.
-! #
-! #   You should have received a copy of the GNU Lesser General Public
-! #   License along with this library; if not, write to the Free Software
-! #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-! #
-! #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
-! #
-! #   Changelog:
-! #
-! #   2000-01-05  Björn Jacke <bjoern.jacke@gmx.de>
-! #               Initial Release
-! #   2000-01-07  Kevin Atkinson <kevinatk@home.com>
-! #               Converted from header to data file.
-! SAL followup        1
-! SAL collapse_result 1
-! 
-! SAL ÄER-                 E
-! SAL ÄU<                  EU
-! SAL Ä<                   E
-! SAL É                    E
-! SAL ÖER-                 Ö
-! SAL Ö                    Ö
-! SAL ÜBER^^               IPA
-! SAL ÜER-                 I
-! SAL Ü                    I
-! SAL ß                    Z
-! SAL ABELLE$              APL
-! SAL ABELL$               APL
-! SAL ABIENNE$             APIN
-! SAL ACEY$                AZI
-! SAL AEU<                 EU
-! SAL AE2                  E
-! SAL AGNI-^               AKN
-! SAL AGNIE-               ANI
-! SAL AGN(AEOU)-$          ANI
-! SAL AIA2                 AIA
-! SAL AIE$                 E
-! SAL AILL(EOU)-           ALI
-! SAL AINE$                EN
-! SAL AIRE$                ER
-! SAL AIR-                 E
-! SAL AISE$                EZ
-! SAL AISSANCE$            EZANZ
-! SAL AISSE$               EZ
-! SAL AIX$                 EX
-! SAL AJ(AÄEIOÖUÜ)--       A
-! SAL AKTIE                AXIE
-! SAL ALO(IY)^             ALUI
-! SAL AMATEU(RS)-          ANATÖ
-! SAL ANIELLE$             ANIL
-! SAL ANTI^^               ANTI
-! SAL ANVER^^              ANFA
-! SAL ATIA$                ATIA
-! SAL ATIA(NS)--           ATI
-! SAL ATI(AÄOÖUÜ)-         AZI
-! SAL AUAU--               _
-! SAL AUER<                AUA
-! SAL AUF^^                AUF
-! SAL AULT$                U
-! SAL AUSSE$               UZ
-! SAL AUS(ST)-^            AUZ
-! SAL AUS^^                AUZ
-! SAL AUTO^^               AUTU
-! SAL AUX(IY)-             AUX
-! SAL AUX                  U
-! SAL AU                   AU
-! SAL AVIER$               AFIE
-! SAL AYER--<              EI
-! SAL AY(AÄEIOÖUÜ)--       A
-! SAL A(IJY)<              EI
-! SAL A                    A
-! SAL BEA(BCMNRU)-^        PEA
-! SAL BEAT(AEIMORU)-^      PEAT
-! SAL BEIGE^$              PEZ
-! SAL BE(LMNRST)-^         PE
-! SAL BETTE$               PET
-! SAL BIC$                 PIZ
-! SAL BOWL(EI)-            PUL
-! SAL BP(AÄEIOÖRUÜY)-      P
-! SAL BUDGET7              PIKE
-! SAL BUFFET7              PIFE
-! SAL BYLLE$               PILE
-! SAL BYLL$                PIL
-! SAL BYTE<                PEIT
-! SAL B                    P
-! SAL CÄ-                  Z
-! SAL CÜ$                  ZI
-! SAL CACH(EI)-^           KEZ
-! SAL CAE--                Z
-! SAL CA(IY)$              ZEI
-! SAL CCH                  Z
-! SAL CCE-                 X
-! SAL CE(EIJUY)--          Z
-! SAL CENT<                ZENT
-! SAL CERST(EI)----^       KE
-! SAL CER$                 ZA
-! SAL CE3                  ZE
-! SAL CHAO(ST)-            KAU
-! SAL CHAMPIO-^            ZENPI
-! SAL CHAR(AI)-^           KAR
-! SAL CHAU(CDFSVWXZ)-      ZU
-! SAL CHE(CF)-             ZE
-! SAL CHEM-^               KE
-! SAL CHEQUE<              ZEK
-! SAL CHI(CFGPVW)-         ZI
-! SAL CH(AEUY)-<^          Z
-! SAL CHK-                 _
-! SAL CH(LOR)-<^           K
-! SAL CHST-                X
-! SAL CH(SßXZ)3            X
-! SAL CH                   K
-! SAL CIER$                ZIE
-! SAL CYB-^                ZEI
-! SAL CY9^                 ZI
-! SAL C(IJY)-3             Z
-! SAL CKST                 XT
-! SAL CK(SßXZ)3            X
-! SAL C(CK)-               _
-! SAL CLAUDET---           KLU
-! SAL CLAUDINE^$           KLUTIN
-! SAL COLE$                KUL
-! SAL COUCH                KAUZ
-! SAL CQUES$               K
-! SAL CQUE                 K
-! SAL CREAT-^              KREA
-! SAL CST                  XT
-! SAL CS<^                 Z
-! SAL C(SßX)               X
-! SAL CT(SßXZ)             X
-! SAL CZ<                  Z
-! SAL C<                   K
-! SAL D'H^                 T
-! SAL D'S3$                Z
-! SAL DAVO(NR)-^$          TAFU
-! SAL DD(SZ)--<            _
-! SAL DEPOT7               TEPU
-! SAL DESIGN               TIZEIN
-! SAL DE(LMNRST)-3^        TE
-! SAL DETTE$               TET
-! SAL DIC$                 TIZ
-! SAL DJ(AEIOU)-^          I
-! SAL DS(CH)--<            T
-! SAL DST                  ZT
-! SAL DT-                  _
-! SAL DUIS-^               TI
-! SAL DURCH^^              TURK
-! SAL DZS(CH)--            T
-! SAL D(SßZ)               Z
-! SAL D                    T
-! SAL EAULT$               U
-! SAL EAUX$                U
-! SAL EAU                  U
-! SAL EAV                  IF
-! SAL EA(AÄEIOÖÜY)-3       EA
-! SAL EA3$                 EA
-! SAL EA3                  I
-! SAL EBEN^^               EPN
-! SAL EE9                  E
-! SAL EIEI--               _
-! SAL EIH--                E
-! SAL EILLE$               EI
-! SAL EI                   EI
-! SAL EJ$                  EI
-! SAL EL-^                 E
-! SAL EL(DKL)--1           E
-! SAL EL(MNT)--1$          E
-! SAL ELYNE$               ELINE
-! SAL ELYN$                ELIN
-! SAL EL(AÄEIOÖUÜY)-1      EL
-! SAL EL-1                 L
-! SAL EM-^                 E
-! SAL EM(DFKMPQT)--1       E
-! SAL EM(AÄEIOÖUÜY)--1     E
-! SAL EM-1                 N
-! SAL EN-^                 E
-! SAL EN(CDGKQT)--1        E
-! SAL ENZ(AEIOUY)--1       EN
-! SAL EN(AÄEINOÖUÜY)-1     EN
-! SAL EN-<1                N
-! SAL ERH(AÄEIOÖUÜ)-^      ER
-! SAL ER-^                 E
-! SAL ER(AÄEIOÖUÜY)-1      A
-! SAL ER1$                 A
-! SAL ER<1                 A
-! SAL ETI(AÄOÖÜU)-         EZI
-! SAL EUEU--               _
-! SAL EUILLE$              Ö
-! SAL EUR$                 ÖR
-! SAL EUX                  Ö
-! SAL EUYS$                EUZ
-! SAL EU                   EU
-! SAL EYER<                EIA
-! SAL EY<                  EI
-! SAL E                    E
-! SAL FANS--^$             FE
-! SAL FAN-^$               FE
-! SAL FAULT-               FUL
-! SAL FEE(DL)-             FI
-! SAL FEHLER               FELA
-! SAL FE(LMNRST)-3^        FE
-! SAL FOND7                FUN
-! SAL FRAIN$               FRA
-! SAL FRISEU(RS)-          FRIZÖ  # x
-! SAL F                    F
-! SAL G'S$                 X
-! SAL GAGS^$               KEX
-! SAL GAG^$                KEK
-! SAL GD                   KT
-! SAL GEGEN^^              KEKN
-! SAL GE(LMNRST)-3^        KE
-! SAL GETTE$               KET
-! SAL G(CK)-               _
-! SAL GG-                  _
-! SAL GI(AO)-^             I
-! SAL GION$                KIUN
-! SAL GIUS-^               IU
-! SAL GMBH^$               GMPH
-! SAL GNAC$                NIAK
-! SAL GNON$                NIUN
-! SAL GN$                  N
-! SAL GONCAL-^             KUNZA
-! SAL GS(CH)--             K
-! SAL GST                  XT
-! SAL G(SßXZ)              X
-! SAL GUCK-                KU
-! SAL GUI-^                K
-! SAL G                    K
-! SAL HEAD-                E
-! SAL HE(LMNRST)-3^        E
-! SAL HE(LMN)-1            E
-! SAL HEUR1$               ÖR
-! SAL H^                   _
-! SAL IEC$                 IZ
-! SAL IEI-3                _
-! SAL IELL3                IEL
-! SAL IENNE$               IN
-! SAL IERRE$               IER
-! SAL IETTE$               IT
-! SAL IEU                  IÖ
-! SAL IE<4                 I
-! SAL IGHT3$               EIT
-! SAL IGNI(EO)-            INI
-! SAL IGN(AEOU)-$          INI
-! SAL IJ(AOU)-             I
-! SAL IJ$                  I
-! SAL IJ<                  EI
-! SAL IKOLE$               IKUL
-! SAL ILLAN(STZ)--         ILIA
-! SAL ILLAR(DT)--          ILIA
-! SAL INVER-               INFE
-! SAL ITI(AÄOÖUÜ)-         IZI
-! SAL IVIER$               IFIE
-! SAL I                    I
-! SAL JAVIE---<^           ZA
-! SAL JEAN^$               IA
-! SAL JEAN-^               IA
-! SAL JER-^                IE
-! SAL JE(LMNST)-           IE
-! SAL JOR(GK)^$            IÖRK
-! SAL J                    I
-! SAL KC(ÄEIJ)-            X
-! SAL KE(LMNRST)-3^        KE
-! SAL KH<^                 K
-! SAL KIC$                 KIZ
-! SAL KLE(LMNRST)-3^       KLE
-! SAL KOTELE-^             KUTL
-! SAL KREAT-^              KREA
-! SAL KST                  XT
-! SAL K(SßXZ)              X
-! SAL KTI(AIOU)-3          XI
-! SAL KT(SßXZ)             X
-! SAL K                    K
-! SAL LARVE-               LARF
-! SAL LEAND-^              LEAN
-! SAL LEL-                 LE
-! SAL LE(MNRST)-3^         LE
-! SAL LETTE$               LET
-! SAL LFGNAG-              LFKAN
-! SAL LIC$                 LIZ
-! SAL LIVE^$               LEIF
-! SAL LUI(GS)--            LU
-! SAL L                    L
-! SAL MASSEU(RS)-          NAZÖ
-! SAL MAURICE              NURIZ
-! SAL MBH^$                MPH
-! SAL MB(SßZ)-             N
-! SAL MC9^                 NK
-! SAL MEMOIR-^             NENUA
-! SAL ME(LMNRST)-3^        NE
-! SAL MIGUEL               NIKL
-! SAL MIKE^$               NEIK
-! SAL MN                   N
-! SAL MPJUTE-              NPUT
-! SAL MP(SßZ)-             N
-! SAL MP(BDJLMNPQRTVW)-    NP
-! SAL M                    N
-! SAL NACH^^               NAK
-! SAL NADINE               NATIN
-! SAL NAIV--               NA
-! SAL NAISE$               NEZE
-! SAL NCOISE$              ZUA
-! SAL NCOIS$               ZUA
-! SAL NEBEN^^              NEPN
-! SAL NE(LMNRST)-3^        NE
-! SAL NEN-3                NE
-! SAL NETTE$               NET
-! SAL NG(BDFJLMNPQRTVW)-   NK
-! SAL NICHTS^^             NIX
-! SAL NICHT^^              NIKT
-! SAL NINE$                NIN
-! SAL NON^^                NUN
-! SAL NOT^^                NUT
-! SAL NTI(AIOU)-3          NZI
-! SAL NTIEL--3             NZI
-! SAL NYLON                NEILUN
-! SAL ND(SßZ)$             NZ
-! SAL NT(SßZ)$             NZ
-! SAL ND'S$                NZ
-! SAL NT'S$                NZ
-! SAL NSTS$                NZ
-! SAL N                    N
-! SAL OBER^^               UPA
-! SAL OE2                  Ö
-! SAL OGNIE-               UNI
-! SAL OGN(AEOU)-$          UNI
-! SAL OIE$                 Ö
-! SAL OIR$                 UAR
-! SAL OIX                  UA
-! SAL OI<3                 EU
-! SAL OJ(AÄEIOÖUÜ)--       U
-! SAL OKAY^$               UKE
-! SAL OLYN$                ULIN
-! SAL OTI(AÄOÖUÜ)-         UZI
-! SAL OUI^                 FI
-! SAL OUILLE$              ULIE
-! SAL OU(DT)-^             AU
-! SAL OUSE$                AUZ
-! SAL OUT-                 AU
-! SAL OU                   U
-! SAL OWS$                 UZ
-! SAL OY(AÄEIOÖUÜ)--       U
-! SAL O(JY)<               EU
-! SAL O                    U
-! SAL PATIEN--^            PAZI
-! SAL PENSIO-^             PANZI
-! SAL PE(LMNRST)-3^        PE
-! SAL PFER-^               FE
-! SAL P(FH)<               F
-! SAL POLY^^               PULI
-! SAL PORTRAIT7            PURTRE
-! SAL PP(FH)--<            P
-! SAL PP-                  _
-! SAL PRIX^$               PRI
-! SAL P(SßZ)^              Z
-! SAL PTI(AÄOÖUÜ)-3        PZI
-! SAL PIC^$                PIK
-! SAL P                    P
-! SAL QUE(LMNRST)-3        KFE
-! SAL QUE$                 K
-! SAL QUI(NS)$             KI
-! SAL QU                   KF
-! SAL Q<                   K
-! SAL RCH                  RK
-! SAL RECHERCH^            REZAZ
-! SAL RER$                 RA
-! SAL RE(MNR)-4            RE
-! SAL RETTE$               RET
-! SAL RH<^                 R
-! SAL RJA(MN)--            RI
-! SAL RTI(AÄOÖUÜ)-3        RZI
-! SAL RY(KN)-$             RI
-! SAL R                    R
-! SAL SAFE^$               ZEIF
-! SAL SAUCE-^              ZUZ
-! SAL SCHSCH---7           _
-! SAL SCHTSCH              Z
-! SAL SC(HZ)<              Z
-! SAL SC                   ZK
-! SAL SELBSTST--7^^        ZELP
-! SAL SELBST7^^            ZELPZT
-! SAL SERVICE7^            ZÖRFIZ
-! SAL SE(LMNRST)-3^        ZE
-! SAL SETTE$               ZET
-! SAL SHP-^                Z
-! SAL SHST                 ZT
-! SAL SHTSH                Z
-! SAL SHT                  Z
-! SAL SH3                  Z
-! SAL SIEGLI-^             ZIKL
-! SAL SIGLI-^              ZIKL
-! SAL SIGHT                ZEIT
-! SAL SIGN                 ZEIN
-! SAL SKI(NPZ)-            ZKI
-! SAL SKI<^                ZI
-! SAL SOUND-               ZAUN
-! SAL STAATS^^             ZTAZ
-! SAL STADT^^              ZTAT
-! SAL START^^              ZTART
-! SAL STAURANT7            ZTURAN
-! SAL STEAK-               ZTE
-! SAL STRAF^^              ZTRAF
-! SAL ST'S$                Z
-! SAL STST--               _
-! SAL STS(ACEHIOUÄÜÖ)--    ZT
-! SAL ST(SZ)               Z
-! SAL STYN(AE)-$           ZTIN
-! SAL ST                   ZT
-! SAL SZE(NPT)-^           ZE
-! SAL SZI(ELN)-^           ZI
-! SAL SZCZ<                Z
-! SAL SZT<                 ZT
-! SAL SZ<3                 Z
-! SAL S                    Z
-! SAL T'S3$                Z
-! SAL TCH                  Z
-! SAL TEAT-^               TEA
-! SAL TE(LMNRST)-3^        TE
-! SAL TH<                  T
-! SAL TIC$                 TIZ
-! SAL TOAS-^               TU
-! SAL TOILET-              TULE
-! SAL TOIN-                TUA
-! SAL TRAINI-              TREN
-! SAL TSCH                 Z
-! SAL TSH                  Z
-! SAL TST                  ZT
-! SAL T(Sß)                Z
-! SAL TT(SZ)--<            _
-! SAL TT9                  T
-! SAL TZ-                  _
-! SAL T                    T
-! SAL UEBER^^              IPA
-! SAL UE2                  I
-! SAL UIE$                 I
-! SAL UM^^                 UN
-! SAL UNTERE--             UNTE
-! SAL UNTER^^              UNTA
-! SAL UNVER^^              UNFA
-! SAL UN^^                 UN
-! SAL UTI(AÄOÖUÜ)-         UZI
-! SAL U                    U
-! SAL VACL-^               FAZ
-! SAL VAC$                 FAZ
-! SAL VEDD-^               FE
-! SAL VEREIN               FAEIN
-! SAL VERSEN^              FAZN
-! SAL VER^^                FA
-! SAL VER                  FA
-! SAL VET(HT)-^            FET
-! SAL VETTE$               FET
-! SAL VIC$                 FIZ
-! SAL VIEL                 FIL
-! SAL VIEW                 FIU
-! SAL VOR^^                FUR
-! SAL VY9^                 FI
-! SAL V<                   F
-! SAL WE(LMNRST)-3^        FE
-! SAL WIC$                 FIZ
-! SAL WIEDER^^             FITA
-! SAL WY9^                 FI
-! SAL W                    F
-! SAL XE(LMNRST)-3^        XE
-! SAL X<^                  Z
-! SAL X(CSZ)               X
-! SAL XTS(CH)--            XT
-! SAL XT(SZ)               Z
-! SAL X                    X
-! SAL YE(LMNRST)-3^        IE
-! SAL YE-3                 I
-! SAL YOR(GK)^$            IÖRK
-! SAL Y(AOU)-<7            I
-! SAL YVES^$               IF
-! SAL YVONNE^$             IFUN
-! SAL Y                    I
-! SAL ZC(AOU)-             ZK
-! SAL ZE(LMNRST)-3^        ZE
-! SAL ZH<                  Z
-! SAL ZS(CHT)--            _
-! SAL ZS                   Z
-! SAL ZUERST               ZUERZT
-! SAL ZURÜCK^^             ZURIK
-! SAL ZUVER^^              ZUFA    # x
-! SAL Z                    Z
diff --git a/runtime/spell/de/de_CH.diff b/runtime/spell/de/de_CH.diff
deleted file mode 100644
index 2bf25a2..0000000
--- a/runtime/spell/de/de_CH.diff
+++ /dev/null
@@ -1,574 +0,0 @@
-*** de_CH.orig.aff	2019-01-19 18:45:30.400494173 +0100
---- de_CH.aff	2019-01-19 19:24:48.064826847 +0100
-***************
-*** 15,16 ****
---- 15,48 ----
-  
-+ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-+ 
-+ MIDWORD	'
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-+ 
-+ COMPOUNDRULE xy?z
-+ #COMPOUNDBEGIN x
-+ #COMPOUNDMIDDLE y
-+ #COMPOUNDEND z
-+ 
-+ # Prefixes are allowed at the beginning of compounds,
-+ # suffixes are allowed at the end of compounds by default:
-+ # (prefix)?(root)+(affix)?
-+ # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-+ COMPOUNDPERMITFLAG c
-+ 
-+ ONLYINCOMPOUND o
-+ 
-+ 
-  PFX U Y 1
-***************
-*** 538,553 ****
-  
-- 
-- COMPOUNDBEGIN x
-- COMPOUNDMIDDLE y
-- COMPOUNDEND z
-  FORBIDDENWORD d
-  
-- # Prefixes are allowed at the beginning of compounds,
-- # suffixes are allowed at the end of compounds by default:
-- # (prefix)?(root)+(affix)?
-- # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-- COMPOUNDPERMITFLAG c
-- 
-- ONLYINCOMPOUND o
-- 
-  # my PSEUDOROOT h(elper) flag
---- 570,573 ----
-***************
-*** 571,573 ****
-  
-! WORDCHARS ß-.
-  
---- 591,593 ----
-  
-! # WORDCHARS ß-.
-  
-***************
-*** 725,729 ****
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! BREAK 2
-! BREAK -
-! BREAK .
-! 
---- 745,1243 ----
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! # BREAK 2
-! # BREAK -
-! # BREAK .
-! 
-! #   German phonetic transformation rules for use with Aspell
-! #   Copyright (C) 2000 Björn Jacke
-! #
-! #   This library is free software; you can redistribute it and/or
-! #   modify it under the terms of the GNU Lesser General Public
-! #   License version 2.1 as published by the Free Software Foundation;
-! #
-! #   This library is distributed in the hope that it will be useful,
-! #   but WITHOUT ANY WARRANTY; without even the implied warranty of
-! #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-! #   Lesser General Public License for more details.
-! #
-! #   You should have received a copy of the GNU Lesser General Public
-! #   License along with this library; if not, write to the Free Software
-! #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-! #
-! #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
-! #
-! #   Changelog:
-! #
-! #   2000-01-05  Björn Jacke <bjoern.jacke@gmx.de>
-! #               Initial Release
-! #   2000-01-07  Kevin Atkinson <kevinatk@home.com>
-! #               Converted from header to data file.
-! SAL followup        1
-! SAL collapse_result 1
-! 
-! SAL ÄER-                 E
-! SAL ÄU<                  EU
-! SAL Ä<                   E
-! SAL É                    E
-! SAL ÖER-                 Ö
-! SAL Ö                    Ö
-! SAL ÜBER^^               IPA
-! SAL ÜER-                 I
-! SAL Ü                    I
-! SAL ß                    Z
-! SAL ABELLE$              APL
-! SAL ABELL$               APL
-! SAL ABIENNE$             APIN
-! SAL ACEY$                AZI
-! SAL AEU<                 EU
-! SAL AE2                  E
-! SAL AGNI-^               AKN
-! SAL AGNIE-               ANI
-! SAL AGN(AEOU)-$          ANI
-! SAL AIA2                 AIA
-! SAL AIE$                 E
-! SAL AILL(EOU)-           ALI
-! SAL AINE$                EN
-! SAL AIRE$                ER
-! SAL AIR-                 E
-! SAL AISE$                EZ
-! SAL AISSANCE$            EZANZ
-! SAL AISSE$               EZ
-! SAL AIX$                 EX
-! SAL AJ(AÄEIOÖUÜ)--       A
-! SAL AKTIE                AXIE
-! SAL ALO(IY)^             ALUI
-! SAL AMATEU(RS)-          ANATÖ
-! SAL ANIELLE$             ANIL
-! SAL ANTI^^               ANTI
-! SAL ANVER^^              ANFA
-! SAL ATIA$                ATIA
-! SAL ATIA(NS)--           ATI
-! SAL ATI(AÄOÖUÜ)-         AZI
-! SAL AUAU--               _
-! SAL AUER<                AUA
-! SAL AUF^^                AUF
-! SAL AULT$                U
-! SAL AUSSE$               UZ
-! SAL AUS(ST)-^            AUZ
-! SAL AUS^^                AUZ
-! SAL AUTO^^               AUTU
-! SAL AUX(IY)-             AUX
-! SAL AUX                  U
-! SAL AU                   AU
-! SAL AVIER$               AFIE
-! SAL AYER--<              EI
-! SAL AY(AÄEIOÖUÜ)--       A
-! SAL A(IJY)<              EI
-! SAL A                    A
-! SAL BEA(BCMNRU)-^        PEA
-! SAL BEAT(AEIMORU)-^      PEAT
-! SAL BEIGE^$              PEZ
-! SAL BE(LMNRST)-^         PE
-! SAL BETTE$               PET
-! SAL BIC$                 PIZ
-! SAL BOWL(EI)-            PUL
-! SAL BP(AÄEIOÖRUÜY)-      P
-! SAL BUDGET7              PIKE
-! SAL BUFFET7              PIFE
-! SAL BYLLE$               PILE
-! SAL BYLL$                PIL
-! SAL BYTE<                PEIT
-! SAL B                    P
-! SAL CÄ-                  Z
-! SAL CÜ$                  ZI
-! SAL CACH(EI)-^           KEZ
-! SAL CAE--                Z
-! SAL CA(IY)$              ZEI
-! SAL CCH                  Z
-! SAL CCE-                 X
-! SAL CE(EIJUY)--          Z
-! SAL CENT<                ZENT
-! SAL CERST(EI)----^       KE
-! SAL CER$                 ZA
-! SAL CE3                  ZE
-! SAL CHAO(ST)-            KAU
-! SAL CHAMPIO-^            ZENPI
-! SAL CHAR(AI)-^           KAR
-! SAL CHAU(CDFSVWXZ)-      ZU
-! SAL CHE(CF)-             ZE
-! SAL CHEM-^               KE
-! SAL CHEQUE<              ZEK
-! SAL CHI(CFGPVW)-         ZI
-! SAL CH(AEUY)-<^          Z
-! SAL CHK-                 _
-! SAL CH(LOR)-<^           K
-! SAL CHST-                X
-! SAL CH(SßXZ)3            X
-! SAL CH                   K
-! SAL CIER$                ZIE
-! SAL CYB-^                ZEI
-! SAL CY9^                 ZI
-! SAL C(IJY)-3             Z
-! SAL CKST                 XT
-! SAL CK(SßXZ)3            X
-! SAL C(CK)-               _
-! SAL CLAUDET---           KLU
-! SAL CLAUDINE^$           KLUTIN
-! SAL COLE$                KUL
-! SAL COUCH                KAUZ
-! SAL CQUES$               K
-! SAL CQUE                 K
-! SAL CREAT-^              KREA
-! SAL CST                  XT
-! SAL CS<^                 Z
-! SAL C(SßX)               X
-! SAL CT(SßXZ)             X
-! SAL CZ<                  Z
-! SAL C<                   K
-! SAL D'H^                 T
-! SAL D'S3$                Z
-! SAL DAVO(NR)-^$          TAFU
-! SAL DD(SZ)--<            _
-! SAL DEPOT7               TEPU
-! SAL DESIGN               TIZEIN
-! SAL DE(LMNRST)-3^        TE
-! SAL DETTE$               TET
-! SAL DIC$                 TIZ
-! SAL DJ(AEIOU)-^          I
-! SAL DS(CH)--<            T
-! SAL DST                  ZT
-! SAL DT-                  _
-! SAL DUIS-^               TI
-! SAL DURCH^^              TURK
-! SAL DZS(CH)--            T
-! SAL D(SßZ)               Z
-! SAL D                    T
-! SAL EAULT$               U
-! SAL EAUX$                U
-! SAL EAU                  U
-! SAL EAV                  IF
-! SAL EA(AÄEIOÖÜY)-3       EA
-! SAL EA3$                 EA
-! SAL EA3                  I
-! SAL EBEN^^               EPN
-! SAL EE9                  E
-! SAL EIEI--               _
-! SAL EIH--                E
-! SAL EILLE$               EI
-! SAL EI                   EI
-! SAL EJ$                  EI
-! SAL EL-^                 E
-! SAL EL(DKL)--1           E
-! SAL EL(MNT)--1$          E
-! SAL ELYNE$               ELINE
-! SAL ELYN$                ELIN
-! SAL EL(AÄEIOÖUÜY)-1      EL
-! SAL EL-1                 L
-! SAL EM-^                 E
-! SAL EM(DFKMPQT)--1       E
-! SAL EM(AÄEIOÖUÜY)--1     E
-! SAL EM-1                 N
-! SAL EN-^                 E
-! SAL EN(CDGKQT)--1        E
-! SAL ENZ(AEIOUY)--1       EN
-! SAL EN(AÄEINOÖUÜY)-1     EN
-! SAL EN-<1                N
-! SAL ERH(AÄEIOÖUÜ)-^      ER
-! SAL ER-^                 E
-! SAL ER(AÄEIOÖUÜY)-1      A
-! SAL ER1$                 A
-! SAL ER<1                 A
-! SAL ETI(AÄOÖÜU)-         EZI
-! SAL EUEU--               _
-! SAL EUILLE$              Ö
-! SAL EUR$                 ÖR
-! SAL EUX                  Ö
-! SAL EUYS$                EUZ
-! SAL EU                   EU
-! SAL EYER<                EIA
-! SAL EY<                  EI
-! SAL E                    E
-! SAL FANS--^$             FE
-! SAL FAN-^$               FE
-! SAL FAULT-               FUL
-! SAL FEE(DL)-             FI
-! SAL FEHLER               FELA
-! SAL FE(LMNRST)-3^        FE
-! SAL FOND7                FUN
-! SAL FRAIN$               FRA
-! SAL FRISEU(RS)-          FRIZÖ  # x
-! SAL F                    F
-! SAL G'S$                 X
-! SAL GAGS^$               KEX
-! SAL GAG^$                KEK
-! SAL GD                   KT
-! SAL GEGEN^^              KEKN
-! SAL GE(LMNRST)-3^        KE
-! SAL GETTE$               KET
-! SAL G(CK)-               _
-! SAL GG-                  _
-! SAL GI(AO)-^             I
-! SAL GION$                KIUN
-! SAL GIUS-^               IU
-! SAL GMBH^$               GMPH
-! SAL GNAC$                NIAK
-! SAL GNON$                NIUN
-! SAL GN$                  N
-! SAL GONCAL-^             KUNZA
-! SAL GS(CH)--             K
-! SAL GST                  XT
-! SAL G(SßXZ)              X
-! SAL GUCK-                KU
-! SAL GUI-^                K
-! SAL G                    K
-! SAL HEAD-                E
-! SAL HE(LMNRST)-3^        E
-! SAL HE(LMN)-1            E
-! SAL HEUR1$               ÖR
-! SAL H^                   _
-! SAL IEC$                 IZ
-! SAL IEI-3                _
-! SAL IELL3                IEL
-! SAL IENNE$               IN
-! SAL IERRE$               IER
-! SAL IETTE$               IT
-! SAL IEU                  IÖ
-! SAL IE<4                 I
-! SAL IGHT3$               EIT
-! SAL IGNI(EO)-            INI
-! SAL IGN(AEOU)-$          INI
-! SAL IJ(AOU)-             I
-! SAL IJ$                  I
-! SAL IJ<                  EI
-! SAL IKOLE$               IKUL
-! SAL ILLAN(STZ)--         ILIA
-! SAL ILLAR(DT)--          ILIA
-! SAL INVER-               INFE
-! SAL ITI(AÄOÖUÜ)-         IZI
-! SAL IVIER$               IFIE
-! SAL I                    I
-! SAL JAVIE---<^           ZA
-! SAL JEAN^$               IA
-! SAL JEAN-^               IA
-! SAL JER-^                IE
-! SAL JE(LMNST)-           IE
-! SAL JOR(GK)^$            IÖRK
-! SAL J                    I
-! SAL KC(ÄEIJ)-            X
-! SAL KE(LMNRST)-3^        KE
-! SAL KH<^                 K
-! SAL KIC$                 KIZ
-! SAL KLE(LMNRST)-3^       KLE
-! SAL KOTELE-^             KUTL
-! SAL KREAT-^              KREA
-! SAL KST                  XT
-! SAL K(SßXZ)              X
-! SAL KTI(AIOU)-3          XI
-! SAL KT(SßXZ)             X
-! SAL K                    K
-! SAL LARVE-               LARF
-! SAL LEAND-^              LEAN
-! SAL LEL-                 LE
-! SAL LE(MNRST)-3^         LE
-! SAL LETTE$               LET
-! SAL LFGNAG-              LFKAN
-! SAL LIC$                 LIZ
-! SAL LIVE^$               LEIF
-! SAL LUI(GS)--            LU
-! SAL L                    L
-! SAL MASSEU(RS)-          NAZÖ
-! SAL MAURICE              NURIZ
-! SAL MBH^$                MPH
-! SAL MB(SßZ)-             N
-! SAL MC9^                 NK
-! SAL MEMOIR-^             NENUA
-! SAL ME(LMNRST)-3^        NE
-! SAL MIGUEL               NIKL
-! SAL MIKE^$               NEIK
-! SAL MN                   N
-! SAL MPJUTE-              NPUT
-! SAL MP(SßZ)-             N
-! SAL MP(BDJLMNPQRTVW)-    NP
-! SAL M                    N
-! SAL NACH^^               NAK
-! SAL NADINE               NATIN
-! SAL NAIV--               NA
-! SAL NAISE$               NEZE
-! SAL NCOISE$              ZUA
-! SAL NCOIS$               ZUA
-! SAL NEBEN^^              NEPN
-! SAL NE(LMNRST)-3^        NE
-! SAL NEN-3                NE
-! SAL NETTE$               NET
-! SAL NG(BDFJLMNPQRTVW)-   NK
-! SAL NICHTS^^             NIX
-! SAL NICHT^^              NIKT
-! SAL NINE$                NIN
-! SAL NON^^                NUN
-! SAL NOT^^                NUT
-! SAL NTI(AIOU)-3          NZI
-! SAL NTIEL--3             NZI
-! SAL NYLON                NEILUN
-! SAL ND(SßZ)$             NZ
-! SAL NT(SßZ)$             NZ
-! SAL ND'S$                NZ
-! SAL NT'S$                NZ
-! SAL NSTS$                NZ
-! SAL N                    N
-! SAL OBER^^               UPA
-! SAL OE2                  Ö
-! SAL OGNIE-               UNI
-! SAL OGN(AEOU)-$          UNI
-! SAL OIE$                 Ö
-! SAL OIR$                 UAR
-! SAL OIX                  UA
-! SAL OI<3                 EU
-! SAL OJ(AÄEIOÖUÜ)--       U
-! SAL OKAY^$               UKE
-! SAL OLYN$                ULIN
-! SAL OTI(AÄOÖUÜ)-         UZI
-! SAL OUI^                 FI
-! SAL OUILLE$              ULIE
-! SAL OU(DT)-^             AU
-! SAL OUSE$                AUZ
-! SAL OUT-                 AU
-! SAL OU                   U
-! SAL OWS$                 UZ
-! SAL OY(AÄEIOÖUÜ)--       U
-! SAL O(JY)<               EU
-! SAL O                    U
-! SAL PATIEN--^            PAZI
-! SAL PENSIO-^             PANZI
-! SAL PE(LMNRST)-3^        PE
-! SAL PFER-^               FE
-! SAL P(FH)<               F
-! SAL POLY^^               PULI
-! SAL PORTRAIT7            PURTRE
-! SAL PP(FH)--<            P
-! SAL PP-                  _
-! SAL PRIX^$               PRI
-! SAL P(SßZ)^              Z
-! SAL PTI(AÄOÖUÜ)-3        PZI
-! SAL PIC^$                PIK
-! SAL P                    P
-! SAL QUE(LMNRST)-3        KFE
-! SAL QUE$                 K
-! SAL QUI(NS)$             KI
-! SAL QU                   KF
-! SAL Q<                   K
-! SAL RCH                  RK
-! SAL RECHERCH^            REZAZ
-! SAL RER$                 RA
-! SAL RE(MNR)-4            RE
-! SAL RETTE$               RET
-! SAL RH<^                 R
-! SAL RJA(MN)--            RI
-! SAL RTI(AÄOÖUÜ)-3        RZI
-! SAL RY(KN)-$             RI
-! SAL R                    R
-! SAL SAFE^$               ZEIF
-! SAL SAUCE-^              ZUZ
-! SAL SCHSCH---7           _
-! SAL SCHTSCH              Z
-! SAL SC(HZ)<              Z
-! SAL SC                   ZK
-! SAL SELBSTST--7^^        ZELP
-! SAL SELBST7^^            ZELPZT
-! SAL SERVICE7^            ZÖRFIZ
-! SAL SE(LMNRST)-3^        ZE
-! SAL SETTE$               ZET
-! SAL SHP-^                Z
-! SAL SHST                 ZT
-! SAL SHTSH                Z
-! SAL SHT                  Z
-! SAL SH3                  Z
-! SAL SIEGLI-^             ZIKL
-! SAL SIGLI-^              ZIKL
-! SAL SIGHT                ZEIT
-! SAL SIGN                 ZEIN
-! SAL SKI(NPZ)-            ZKI
-! SAL SKI<^                ZI
-! SAL SOUND-               ZAUN
-! SAL STAATS^^             ZTAZ
-! SAL STADT^^              ZTAT
-! SAL START^^              ZTART
-! SAL STAURANT7            ZTURAN
-! SAL STEAK-               ZTE
-! SAL STRAF^^              ZTRAF
-! SAL ST'S$                Z
-! SAL STST--               _
-! SAL STS(ACEHIOUÄÜÖ)--    ZT
-! SAL ST(SZ)               Z
-! SAL STYN(AE)-$           ZTIN
-! SAL ST                   ZT
-! SAL SZE(NPT)-^           ZE
-! SAL SZI(ELN)-^           ZI
-! SAL SZCZ<                Z
-! SAL SZT<                 ZT
-! SAL SZ<3                 Z
-! SAL S                    Z
-! SAL T'S3$                Z
-! SAL TCH                  Z
-! SAL TEAT-^               TEA
-! SAL TE(LMNRST)-3^        TE
-! SAL TH<                  T
-! SAL TIC$                 TIZ
-! SAL TOAS-^               TU
-! SAL TOILET-              TULE
-! SAL TOIN-                TUA
-! SAL TRAINI-              TREN
-! SAL TSCH                 Z
-! SAL TSH                  Z
-! SAL TST                  ZT
-! SAL T(Sß)                Z
-! SAL TT(SZ)--<            _
-! SAL TT9                  T
-! SAL TZ-                  _
-! SAL T                    T
-! SAL UEBER^^              IPA
-! SAL UE2                  I
-! SAL UIE$                 I
-! SAL UM^^                 UN
-! SAL UNTERE--             UNTE
-! SAL UNTER^^              UNTA
-! SAL UNVER^^              UNFA
-! SAL UN^^                 UN
-! SAL UTI(AÄOÖUÜ)-         UZI
-! SAL U                    U
-! SAL VACL-^               FAZ
-! SAL VAC$                 FAZ
-! SAL VEDD-^               FE
-! SAL VEREIN               FAEIN
-! SAL VERSEN^              FAZN
-! SAL VER^^                FA
-! SAL VER                  FA
-! SAL VET(HT)-^            FET
-! SAL VETTE$               FET
-! SAL VIC$                 FIZ
-! SAL VIEL                 FIL
-! SAL VIEW                 FIU
-! SAL VOR^^                FUR
-! SAL VY9^                 FI
-! SAL V<                   F
-! SAL WE(LMNRST)-3^        FE
-! SAL WIC$                 FIZ
-! SAL WIEDER^^             FITA
-! SAL WY9^                 FI
-! SAL W                    F
-! SAL XE(LMNRST)-3^        XE
-! SAL X<^                  Z
-! SAL X(CSZ)               X
-! SAL XTS(CH)--            XT
-! SAL XT(SZ)               Z
-! SAL X                    X
-! SAL YE(LMNRST)-3^        IE
-! SAL YE-3                 I
-! SAL YOR(GK)^$            IÖRK
-! SAL Y(AOU)-<7            I
-! SAL YVES^$               IF
-! SAL YVONNE^$             IFUN
-! SAL Y                    I
-! SAL ZC(AOU)-             ZK
-! SAL ZE(LMNRST)-3^        ZE
-! SAL ZH<                  Z
-! SAL ZS(CHT)--            _
-! SAL ZS                   Z
-! SAL ZUERST               ZUERZT
-! SAL ZURÜCK^^             ZURIK
-! SAL ZUVER^^              ZUFA    # x
-! SAL Z                    Z
diff --git a/runtime/spell/de/de_DE.diff b/runtime/spell/de/de_DE.diff
deleted file mode 100644
index bbac7a0..0000000
--- a/runtime/spell/de/de_DE.diff
+++ /dev/null
@@ -1,580 +0,0 @@
-*** de_DE.orig.aff	2019-01-19 18:45:26.132522538 +0100
---- de_DE.aff	2019-01-19 19:23:37.233297530 +0100
-***************
-*** 15,16 ****
---- 15,46 ----
-  
-+ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-+ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-+ 
-+ MIDWORD	'
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-+ COMPOUNDRULE xy?z
-+ #COMPOUNDBEGIN x
-+ #COMPOUNDMIDDLE y
-+ #COMPOUNDEND z
-+ 
-+ # Prefixes are allowed at the beginning of compounds,
-+ # suffixes are allowed at the end of compounds by default:
-+ # (prefix)?(root)+(affix)?
-+ # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-+ COMPOUNDPERMITFLAG c
-+ 
-+ ONLYINCOMPOUND o
-+ 
-  PFX U Y 1
-***************
-*** 536,553 ****
-  #LANG de_DE
-! CHECKSHARPS
-! 
-  
-- COMPOUNDBEGIN x
-- COMPOUNDMIDDLE y
-- COMPOUNDEND z
-  FORBIDDENWORD d
-  
-- # Prefixes are allowed at the beginning of compounds,
-- # suffixes are allowed at the end of compounds by default:
-- # (prefix)?(root)+(affix)?
-- # Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
-- COMPOUNDPERMITFLAG c
-- 
-- ONLYINCOMPOUND o
-- 
-  # my PSEUDOROOT h(elper) flag
---- 566,571 ----
-  #LANG de_DE
-! # CHECKSHARPS
-  
-  FORBIDDENWORD d
-  
-  # my PSEUDOROOT h(elper) flag
-***************
-*** 571,573 ****
-  
-! WORDCHARS ß-.
-  
---- 589,591 ----
-  
-! # WORDCHARS ß-.
-  
-***************
-*** 725,729 ****
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! BREAK 2
-! BREAK -
-! BREAK .
-! 
---- 743,1241 ----
-  # So enabling this is the lesser evil. No perfect solution found so far...
-! # BREAK 2
-! # BREAK -
-! # BREAK .
-! 
-! #   German phonetic transformation rules for use with Aspell
-! #   Copyright (C) 2000 Björn Jacke
-! #
-! #   This library is free software; you can redistribute it and/or
-! #   modify it under the terms of the GNU Lesser General Public
-! #   License version 2.1 as published by the Free Software Foundation;
-! #
-! #   This library is distributed in the hope that it will be useful,
-! #   but WITHOUT ANY WARRANTY; without even the implied warranty of
-! #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-! #   Lesser General Public License for more details.
-! #
-! #   You should have received a copy of the GNU Lesser General Public
-! #   License along with this library; if not, write to the Free Software
-! #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-! #
-! #   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
-! #
-! #   Changelog:
-! #
-! #   2000-01-05  Björn Jacke <bjoern.jacke@gmx.de>
-! #               Initial Release
-! #   2000-01-07  Kevin Atkinson <kevinatk@home.com>
-! #               Converted from header to data file.
-! SAL followup        1
-! SAL collapse_result 1
-! 
-! SAL ÄER-                 E
-! SAL ÄU<                  EU
-! SAL Ä<                   E
-! SAL É                    E
-! SAL ÖER-                 Ö
-! SAL Ö                    Ö
-! SAL ÜBER^^               IPA
-! SAL ÜER-                 I
-! SAL Ü                    I
-! SAL ß                    Z
-! SAL ABELLE$              APL
-! SAL ABELL$               APL
-! SAL ABIENNE$             APIN
-! SAL ACEY$                AZI
-! SAL AEU<                 EU
-! SAL AE2                  E
-! SAL AGNI-^               AKN
-! SAL AGNIE-               ANI
-! SAL AGN(AEOU)-$          ANI
-! SAL AIA2                 AIA
-! SAL AIE$                 E
-! SAL AILL(EOU)-           ALI
-! SAL AINE$                EN
-! SAL AIRE$                ER
-! SAL AIR-                 E
-! SAL AISE$                EZ
-! SAL AISSANCE$            EZANZ
-! SAL AISSE$               EZ
-! SAL AIX$                 EX
-! SAL AJ(AÄEIOÖUÜ)--       A
-! SAL AKTIE                AXIE
-! SAL ALO(IY)^             ALUI
-! SAL AMATEU(RS)-          ANATÖ
-! SAL ANIELLE$             ANIL
-! SAL ANTI^^               ANTI
-! SAL ANVER^^              ANFA
-! SAL ATIA$                ATIA
-! SAL ATIA(NS)--           ATI
-! SAL ATI(AÄOÖUÜ)-         AZI
-! SAL AUAU--               _
-! SAL AUER<                AUA
-! SAL AUF^^                AUF
-! SAL AULT$                U
-! SAL AUSSE$               UZ
-! SAL AUS(ST)-^            AUZ
-! SAL AUS^^                AUZ
-! SAL AUTO^^               AUTU
-! SAL AUX(IY)-             AUX
-! SAL AUX                  U
-! SAL AU                   AU
-! SAL AVIER$               AFIE
-! SAL AYER--<              EI
-! SAL AY(AÄEIOÖUÜ)--       A
-! SAL A(IJY)<              EI
-! SAL A                    A
-! SAL BEA(BCMNRU)-^        PEA
-! SAL BEAT(AEIMORU)-^      PEAT
-! SAL BEIGE^$              PEZ
-! SAL BE(LMNRST)-^         PE
-! SAL BETTE$               PET
-! SAL BIC$                 PIZ
-! SAL BOWL(EI)-            PUL
-! SAL BP(AÄEIOÖRUÜY)-      P
-! SAL BUDGET7              PIKE
-! SAL BUFFET7              PIFE
-! SAL BYLLE$               PILE
-! SAL BYLL$                PIL
-! SAL BYTE<                PEIT
-! SAL B                    P
-! SAL CÄ-                  Z
-! SAL CÜ$                  ZI
-! SAL CACH(EI)-^           KEZ
-! SAL CAE--                Z
-! SAL CA(IY)$              ZEI
-! SAL CCH                  Z
-! SAL CCE-                 X
-! SAL CE(EIJUY)--          Z
-! SAL CENT<                ZENT
-! SAL CERST(EI)----^       KE
-! SAL CER$                 ZA
-! SAL CE3                  ZE
-! SAL CHAO(ST)-            KAU
-! SAL CHAMPIO-^            ZENPI
-! SAL CHAR(AI)-^           KAR
-! SAL CHAU(CDFSVWXZ)-      ZU
-! SAL CHE(CF)-             ZE
-! SAL CHEM-^               KE
-! SAL CHEQUE<              ZEK
-! SAL CHI(CFGPVW)-         ZI
-! SAL CH(AEUY)-<^          Z
-! SAL CHK-                 _
-! SAL CH(LOR)-<^           K
-! SAL CHST-                X
-! SAL CH(SßXZ)3            X
-! SAL CH                   K
-! SAL CIER$                ZIE
-! SAL CYB-^                ZEI
-! SAL CY9^                 ZI
-! SAL C(IJY)-3             Z
-! SAL CKST                 XT
-! SAL CK(SßXZ)3            X
-! SAL C(CK)-               _
-! SAL CLAUDET---           KLU
-! SAL CLAUDINE^$           KLUTIN
-! SAL COLE$                KUL
-! SAL COUCH                KAUZ
-! SAL CQUES$               K
-! SAL CQUE                 K
-! SAL CREAT-^              KREA
-! SAL CST                  XT
-! SAL CS<^                 Z
-! SAL C(SßX)               X
-! SAL CT(SßXZ)             X
-! SAL CZ<                  Z
-! SAL C<                   K
-! SAL D'H^                 T
-! SAL D'S3$                Z
-! SAL DAVO(NR)-^$          TAFU
-! SAL DD(SZ)--<            _
-! SAL DEPOT7               TEPU
-! SAL DESIGN               TIZEIN
-! SAL DE(LMNRST)-3^        TE
-! SAL DETTE$               TET
-! SAL DIC$                 TIZ
-! SAL DJ(AEIOU)-^          I
-! SAL DS(CH)--<            T
-! SAL DST                  ZT
-! SAL DT-                  _
-! SAL DUIS-^               TI
-! SAL DURCH^^              TURK
-! SAL DZS(CH)--            T
-! SAL D(SßZ)               Z
-! SAL D                    T
-! SAL EAULT$               U
-! SAL EAUX$                U
-! SAL EAU                  U
-! SAL EAV                  IF
-! SAL EA(AÄEIOÖÜY)-3       EA
-! SAL EA3$                 EA
-! SAL EA3                  I
-! SAL EBEN^^               EPN
-! SAL EE9                  E
-! SAL EIEI--               _
-! SAL EIH--                E
-! SAL EILLE$               EI
-! SAL EI                   EI
-! SAL EJ$                  EI
-! SAL EL-^                 E
-! SAL EL(DKL)--1           E
-! SAL EL(MNT)--1$          E
-! SAL ELYNE$               ELINE
-! SAL ELYN$                ELIN
-! SAL EL(AÄEIOÖUÜY)-1      EL
-! SAL EL-1                 L
-! SAL EM-^                 E
-! SAL EM(DFKMPQT)--1       E
-! SAL EM(AÄEIOÖUÜY)--1     E
-! SAL EM-1                 N
-! SAL EN-^                 E
-! SAL EN(CDGKQT)--1        E
-! SAL ENZ(AEIOUY)--1       EN
-! SAL EN(AÄEINOÖUÜY)-1     EN
-! SAL EN-<1                N
-! SAL ERH(AÄEIOÖUÜ)-^      ER
-! SAL ER-^                 E
-! SAL ER(AÄEIOÖUÜY)-1      A
-! SAL ER1$                 A
-! SAL ER<1                 A
-! SAL ETI(AÄOÖÜU)-         EZI
-! SAL EUEU--               _
-! SAL EUILLE$              Ö
-! SAL EUR$                 ÖR
-! SAL EUX                  Ö
-! SAL EUYS$                EUZ
-! SAL EU                   EU
-! SAL EYER<                EIA
-! SAL EY<                  EI
-! SAL E                    E
-! SAL FANS--^$             FE
-! SAL FAN-^$               FE
-! SAL FAULT-               FUL
-! SAL FEE(DL)-             FI
-! SAL FEHLER               FELA
-! SAL FE(LMNRST)-3^        FE
-! SAL FOND7                FUN
-! SAL FRAIN$               FRA
-! SAL FRISEU(RS)-          FRIZÖ  # x
-! SAL F                    F
-! SAL G'S$                 X
-! SAL GAGS^$               KEX
-! SAL GAG^$                KEK
-! SAL GD                   KT
-! SAL GEGEN^^              KEKN
-! SAL GE(LMNRST)-3^        KE
-! SAL GETTE$               KET
-! SAL G(CK)-               _
-! SAL GG-                  _
-! SAL GI(AO)-^             I
-! SAL GION$                KIUN
-! SAL GIUS-^               IU
-! SAL GMBH^$               GMPH
-! SAL GNAC$                NIAK
-! SAL GNON$                NIUN
-! SAL GN$                  N
-! SAL GONCAL-^             KUNZA
-! SAL GS(CH)--             K
-! SAL GST                  XT
-! SAL G(SßXZ)              X
-! SAL GUCK-                KU
-! SAL GUI-^                K
-! SAL G                    K
-! SAL HEAD-                E
-! SAL HE(LMNRST)-3^        E
-! SAL HE(LMN)-1            E
-! SAL HEUR1$               ÖR
-! SAL H^                   _
-! SAL IEC$                 IZ
-! SAL IEI-3                _
-! SAL IELL3                IEL
-! SAL IENNE$               IN
-! SAL IERRE$               IER
-! SAL IETTE$               IT
-! SAL IEU                  IÖ
-! SAL IE<4                 I
-! SAL IGHT3$               EIT
-! SAL IGNI(EO)-            INI
-! SAL IGN(AEOU)-$          INI
-! SAL IJ(AOU)-             I
-! SAL IJ$                  I
-! SAL IJ<                  EI
-! SAL IKOLE$               IKUL
-! SAL ILLAN(STZ)--         ILIA
-! SAL ILLAR(DT)--          ILIA
-! SAL INVER-               INFE
-! SAL ITI(AÄOÖUÜ)-         IZI
-! SAL IVIER$               IFIE
-! SAL I                    I
-! SAL JAVIE---<^           ZA
-! SAL JEAN^$               IA
-! SAL JEAN-^               IA
-! SAL JER-^                IE
-! SAL JE(LMNST)-           IE
-! SAL JOR(GK)^$            IÖRK
-! SAL J                    I
-! SAL KC(ÄEIJ)-            X
-! SAL KE(LMNRST)-3^        KE
-! SAL KH<^                 K
-! SAL KIC$                 KIZ
-! SAL KLE(LMNRST)-3^       KLE
-! SAL KOTELE-^             KUTL
-! SAL KREAT-^              KREA
-! SAL KST                  XT
-! SAL K(SßXZ)              X
-! SAL KTI(AIOU)-3          XI
-! SAL KT(SßXZ)             X
-! SAL K                    K
-! SAL LARVE-               LARF
-! SAL LEAND-^              LEAN
-! SAL LEL-                 LE
-! SAL LE(MNRST)-3^         LE
-! SAL LETTE$               LET
-! SAL LFGNAG-              LFKAN
-! SAL LIC$                 LIZ
-! SAL LIVE^$               LEIF
-! SAL LUI(GS)--            LU
-! SAL L                    L
-! SAL MASSEU(RS)-          NAZÖ
-! SAL MAURICE              NURIZ
-! SAL MBH^$                MPH
-! SAL MB(SßZ)-             N
-! SAL MC9^                 NK
-! SAL MEMOIR-^             NENUA
-! SAL ME(LMNRST)-3^        NE
-! SAL MIGUEL               NIKL
-! SAL MIKE^$               NEIK
-! SAL MN                   N
-! SAL MPJUTE-              NPUT
-! SAL MP(SßZ)-             N
-! SAL MP(BDJLMNPQRTVW)-    NP
-! SAL M                    N
-! SAL NACH^^               NAK
-! SAL NADINE               NATIN
-! SAL NAIV--               NA
-! SAL NAISE$               NEZE
-! SAL NCOISE$              ZUA
-! SAL NCOIS$               ZUA
-! SAL NEBEN^^              NEPN
-! SAL NE(LMNRST)-3^        NE
-! SAL NEN-3                NE
-! SAL NETTE$               NET
-! SAL NG(BDFJLMNPQRTVW)-   NK
-! SAL NICHTS^^             NIX
-! SAL NICHT^^              NIKT
-! SAL NINE$                NIN
-! SAL NON^^                NUN
-! SAL NOT^^                NUT
-! SAL NTI(AIOU)-3          NZI
-! SAL NTIEL--3             NZI
-! SAL NYLON                NEILUN
-! SAL ND(SßZ)$             NZ
-! SAL NT(SßZ)$             NZ
-! SAL ND'S$                NZ
-! SAL NT'S$                NZ
-! SAL NSTS$                NZ
-! SAL N                    N
-! SAL OBER^^               UPA
-! SAL OE2                  Ö
-! SAL OGNIE-               UNI
-! SAL OGN(AEOU)-$          UNI
-! SAL OIE$                 Ö
-! SAL OIR$                 UAR
-! SAL OIX                  UA
-! SAL OI<3                 EU
-! SAL OJ(AÄEIOÖUÜ)--       U
-! SAL OKAY^$               UKE
-! SAL OLYN$                ULIN
-! SAL OTI(AÄOÖUÜ)-         UZI
-! SAL OUI^                 FI
-! SAL OUILLE$              ULIE
-! SAL OU(DT)-^             AU
-! SAL OUSE$                AUZ
-! SAL OUT-                 AU
-! SAL OU                   U
-! SAL OWS$                 UZ
-! SAL OY(AÄEIOÖUÜ)--       U
-! SAL O(JY)<               EU
-! SAL O                    U
-! SAL PATIEN--^            PAZI
-! SAL PENSIO-^             PANZI
-! SAL PE(LMNRST)-3^        PE
-! SAL PFER-^               FE
-! SAL P(FH)<               F
-! SAL POLY^^               PULI
-! SAL PORTRAIT7            PURTRE
-! SAL PP(FH)--<            P
-! SAL PP-                  _
-! SAL PRIX^$               PRI
-! SAL P(SßZ)^              Z
-! SAL PTI(AÄOÖUÜ)-3        PZI
-! SAL PIC^$                PIK
-! SAL P                    P
-! SAL QUE(LMNRST)-3        KFE
-! SAL QUE$                 K
-! SAL QUI(NS)$             KI
-! SAL QU                   KF
-! SAL Q<                   K
-! SAL RCH                  RK
-! SAL RECHERCH^            REZAZ
-! SAL RER$                 RA
-! SAL RE(MNR)-4            RE
-! SAL RETTE$               RET
-! SAL RH<^                 R
-! SAL RJA(MN)--            RI
-! SAL RTI(AÄOÖUÜ)-3        RZI
-! SAL RY(KN)-$             RI
-! SAL R                    R
-! SAL SAFE^$               ZEIF
-! SAL SAUCE-^              ZUZ
-! SAL SCHSCH---7           _
-! SAL SCHTSCH              Z
-! SAL SC(HZ)<              Z
-! SAL SC                   ZK
-! SAL SELBSTST--7^^        ZELP
-! SAL SELBST7^^            ZELPZT
-! SAL SERVICE7^            ZÖRFIZ
-! SAL SE(LMNRST)-3^        ZE
-! SAL SETTE$               ZET
-! SAL SHP-^                Z
-! SAL SHST                 ZT
-! SAL SHTSH                Z
-! SAL SHT                  Z
-! SAL SH3                  Z
-! SAL SIEGLI-^             ZIKL
-! SAL SIGLI-^              ZIKL
-! SAL SIGHT                ZEIT
-! SAL SIGN                 ZEIN
-! SAL SKI(NPZ)-            ZKI
-! SAL SKI<^                ZI
-! SAL SOUND-               ZAUN
-! SAL STAATS^^             ZTAZ
-! SAL STADT^^              ZTAT
-! SAL START^^              ZTART
-! SAL STAURANT7            ZTURAN
-! SAL STEAK-               ZTE
-! SAL STRAF^^              ZTRAF
-! SAL ST'S$                Z
-! SAL STST--               _
-! SAL STS(ACEHIOUÄÜÖ)--    ZT
-! SAL ST(SZ)               Z
-! SAL STYN(AE)-$           ZTIN
-! SAL ST                   ZT
-! SAL SZE(NPT)-^           ZE
-! SAL SZI(ELN)-^           ZI
-! SAL SZCZ<                Z
-! SAL SZT<                 ZT
-! SAL SZ<3                 Z
-! SAL S                    Z
-! SAL T'S3$                Z
-! SAL TCH                  Z
-! SAL TEAT-^               TEA
-! SAL TE(LMNRST)-3^        TE
-! SAL TH<                  T
-! SAL TIC$                 TIZ
-! SAL TOAS-^               TU
-! SAL TOILET-              TULE
-! SAL TOIN-                TUA
-! SAL TRAINI-              TREN
-! SAL TSCH                 Z
-! SAL TSH                  Z
-! SAL TST                  ZT
-! SAL T(Sß)                Z
-! SAL TT(SZ)--<            _
-! SAL TT9                  T
-! SAL TZ-                  _
-! SAL T                    T
-! SAL UEBER^^              IPA
-! SAL UE2                  I
-! SAL UIE$                 I
-! SAL UM^^                 UN
-! SAL UNTERE--             UNTE
-! SAL UNTER^^              UNTA
-! SAL UNVER^^              UNFA
-! SAL UN^^                 UN
-! SAL UTI(AÄOÖUÜ)-         UZI
-! SAL U                    U
-! SAL VACL-^               FAZ
-! SAL VAC$                 FAZ
-! SAL VEDD-^               FE
-! SAL VEREIN               FAEIN
-! SAL VERSEN^              FAZN
-! SAL VER^^                FA
-! SAL VER                  FA
-! SAL VET(HT)-^            FET
-! SAL VETTE$               FET
-! SAL VIC$                 FIZ
-! SAL VIEL                 FIL
-! SAL VIEW                 FIU
-! SAL VOR^^                FUR
-! SAL VY9^                 FI
-! SAL V<                   F
-! SAL WE(LMNRST)-3^        FE
-! SAL WIC$                 FIZ
-! SAL WIEDER^^             FITA
-! SAL WY9^                 FI
-! SAL W                    F
-! SAL XE(LMNRST)-3^        XE
-! SAL X<^                  Z
-! SAL X(CSZ)               X
-! SAL XTS(CH)--            XT
-! SAL XT(SZ)               Z
-! SAL X                    X
-! SAL YE(LMNRST)-3^        IE
-! SAL YE-3                 I
-! SAL YOR(GK)^$            IÖRK
-! SAL Y(AOU)-<7            I
-! SAL YVES^$               IF
-! SAL YVONNE^$             IFUN
-! SAL Y                    I
-! SAL ZC(AOU)-             ZK
-! SAL ZE(LMNRST)-3^        ZE
-! SAL ZH<                  Z
-! SAL ZS(CHT)--            _
-! SAL ZS                   Z
-! SAL ZUERST               ZUERZT
-! SAL ZURÜCK^^             ZURIK
-! SAL ZUVER^^              ZUFA    # x
-! SAL Z                    Z
diff --git a/runtime/spell/de/main.aap b/runtime/spell/de/main.aap
index 49ec2f2..d0c378c 100644
--- a/runtime/spell/de/main.aap
+++ b/runtime/spell/de/main.aap
@@ -35,7 +35,11 @@
 ZIPFILE_19 = de_OLDSPELL.zip   # unmaintained
 DICT_FILES = $FILE_20_AFF $FILE_20_DIC $FILE_AT_AFF $FILE_AT_DIC $FILE_CH_AFF $FILE_CH_DIC
 
-READMES    = README_de_DE_frami.txt README_extension_owner.txt
+# frami files adjusted for Vim are found here
+YAMAGIDIR = https://raw.githubusercontent.com/Yamagi/vim-german-dictionaries/master
+
+READMES    = README.md
+:attr {fetch = $YAMAGIDIR/%file%} $READMES
 
 all: $SPELLDIR/de.latin1.spl $SPELLDIR/de.utf-8.spl ../README_de.txt
 
@@ -49,36 +53,22 @@
 
 ../README_de.txt: $READMES
         :fetch $READMES
-        :print de_DE_frami.txt            >! $target
-        :cat README_de_DE_frami.txt       >> $target
-        :print =================================================== >>$target
-        :print extension_owner            >> $target
-        :cat README_extension_owner.txt   >> $target
+        :print README.md            >! $target
+        :cat README.md             >> $target
 
 #
 # Fetching the files from the LibreOffices github repository.
 # The OLDSPELL file comes from elsewhere
 #
-OODIR = https://github.com/LibreOffice/dictionaries/raw/master/de
 DEDIR = http://www.j3e.de/myspell
-:attr {fetch = $OODIR/%file%} $DICT_FILES
-:attr {fetch = $OODIR/%file%} $READMES
+:attr {fetch = $YAMAGIDIR/src/%file%} $DICT_FILES
 :attr {fetch = $DEDIR/%file%} $ZIPFILE_19
 
-# The files don't depend on the .zip file so that we can delete it.
-# Only download the zip file if the targets don't exist.
 de_DE.aff de_DE.dic de_20.aff de_20.dic: {buildcheck=}
-        :assertpkg patch
         :fetch $FILE_DE_AFF
         :fetch $FILE_DE_DIC
         :move de_DE_frami.aff de_DE.aff
         :move de_DE_frami.dic de_DE.dic
-        @if not os.path.exists('de_DE.orig.aff'):
-            :copy de_DE.aff de_DE.orig.aff
-        @if not os.path.exists('de_DE.orig.dic'):
-            :copy de_DE.dic de_DE.orig.dic
-        @if os.path.exists('de_DE.diff'):
-            :sys patch <de_DE.diff
         :copy de_DE.aff de_20.aff
         :copy de_DE.dic de_20.dic
 
@@ -97,80 +87,16 @@
             :sys patch <de_19.diff
 
 de_AT.aff de_AT.dic: {buildcheck=}
-        :assertpkg patch
         :fetch $FILE_AT_AFF
         :fetch $FILE_AT_DIC
         :move $FILE_AT_AFF de_AT.aff
         :move $FILE_AT_DIC de_AT.dic
-        @if not os.path.exists('de_AT.orig.aff'):
-            :copy de_AT.aff de_AT.orig.aff
-        @if not os.path.exists('de_AT.orig.dic'):
-            :copy de_AT.dic de_AT.orig.dic
-        @if os.path.exists('de_AT.diff'):
-            :sys patch <de_AT.diff
 
 de_CH.aff de_CH.dic: {buildcheck=}
-        :assertpkg patch
         :fetch $FILE_CH_AFF
         :fetch $FILE_CH_DIC
         :move $FILE_CH_AFF de_CH.aff
         :move $FILE_CH_DIC de_CH.dic
-        @if not os.path.exists('de_CH.orig.aff'):
-            :copy de_CH.aff de_CH.orig.aff
-        @if not os.path.exists('de_CH.orig.dic'):
-            :copy de_CH.dic de_CH.orig.dic
-        @if os.path.exists('de_CH.diff'):
-            :sys patch <de_CH.diff
 
 
-# Generate diff files, so that others can get the OpenOffice files and apply
-# the diffs to get the Vim versions.
-diff:
-        :assertpkg diff
-        :sys {force} diff -a -C 1 de_DE.orig.aff de_DE.aff >de_DE.diff
-        :sys {force} diff -a -C 1 de_DE.orig.dic de_DE.dic >>de_DE.diff
-        :sys {force} diff -a -C 1 de_19.orig.aff de_19.aff >de_19.diff
-        :sys {force} diff -a -C 1 de_19.orig.dic de_19.dic >>de_19.diff
-        :sys {force} diff -a -C 1 de_AT.orig.aff de_AT.aff >de_AT.diff
-        :sys {force} diff -a -C 1 de_AT.orig.dic de_AT.dic >>de_AT.diff
-        :sys {force} diff -a -C 1 de_CH.orig.aff de_CH.aff >de_CH.diff
-        :sys {force} diff -a -C 1 de_CH.orig.dic de_CH.dic >>de_CH.diff
-        :copy de_DE.diff de_20.diff
-
-
-# Check for updated OpenOffice spell files.  When there are changes the
-# ".new.aff" and ".new.dic" files are left behind for manual inspection.
-
-check:
-        :assertpkg unzip patch
-        :fetch $ZIPFILE_19
-        :fetch $DICT_FILES
-        @try:
-            :mkdir tmp
-            :cd tmp
-            :sys $UNZIP ../$ZIPFILE_19
-            :copy ../*.aff .
-            :copy ../*.dic .
-            :move de_OLDSPELL.aff de_19.aff
-            :move de_OLDSPELL.dic de_19.dic
-            :move de_DE_frami.aff de_DE.aff
-            :move de_DE_frami.dic de_DE.dic
-            :move de_AT_frami.dic de_AT.dic
-            :move de_AT_frami.aff de_AT.aff
-            :move de_CH_frami.dic de_CH.dic
-            :move de_CH_frami.aff de_CH.aff
-            :copy de_DE.dic de_20.dic
-            :copy de_DE.aff de_20.aff
-
-            @import stat
-            @for nm in ['de_DE', 'de_19', 'de_20', 'de_AT', 'de_CH']:
-                @for ext in ['aff', 'dic']:
-                    :sys {force} diff ../$(nm).orig.$ext $(nm).$ext >d
-                    @if os.stat('d')[stat.ST_SIZE] > 0:
-                        :copy $(nm).$ext ../$(nm).new.$ext
-                :sys {force} diff ../README_$(nm).txt README_$(nm).txt >d
-        @finally:
-            :cd ..
-            :delete {r}{f}{q} tmp
-
 # vim: set sts=4 sw=4 :
diff --git a/runtime/syntax/valgrind.vim b/runtime/syntax/valgrind.vim
index d099971..a9b4a8c 100644
--- a/runtime/syntax/valgrind.vim
+++ b/runtime/syntax/valgrind.vim
@@ -2,8 +2,7 @@
 " Language: Valgrind Memory Debugger Output
 " Maintainer: Roger Luethi <rl@hellgate.ch>
 " Program URL: http://devel-home.kde.org/~sewardj/
-" Last Change: 2015 Jan 27
-" 		Included improvement by Dominique Pelle
+" Last Change: 2019 Jul 24
 "
 " Notes: mostly based on strace.vim and xml.vim
 "
@@ -26,7 +25,7 @@
 
 syn region valgrindRegion
 	\ start=+^==\z(\d\+\)== \w.*$+
-	\ skip=+^==\z1==\( \|    .*\)$+
+	\ skip=+^==\z1==\( \|    .*\|  \S.*\)$+
 	\ end=+^+
 	\ fold
 	\ keepend
@@ -70,7 +69,7 @@
 syn match valgrindAt "at\s\@=" contained
 syn match valgrindAddr "\W\zs0x\x\+" contained
 
-syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ ]*\ze([^)]*)$" contained
+syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ @.]*\ze([^)]*)$" contained
 syn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained
 syn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained