Update runtime files.
diff --git a/runtime/compiler/checkstyle.vim b/runtime/compiler/checkstyle.vim
index eac461b..4ebd9e1 100644
--- a/runtime/compiler/checkstyle.vim
+++ b/runtime/compiler/checkstyle.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Compiler:	Checkstyle
 " Maintainer:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:	2013 Jun 26
+" Last Change:	2020 Aug 2
 
 if exists("current_compiler")
   finish
@@ -12,8 +12,18 @@
   command -nargs=* CompilerSet setlocal <args>
 endif
 
-CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
+let s:cpo_save = &cpo
+set cpo&vim
 
-" sample error: WebTable.java:282: '+=' is not preceeded with whitespace.
-"		WebTable.java:201:1: '{' should be on the previous line.
-CompilerSet errorformat=%f:%l:%v:\ %m,%f:%l:\ %m,%-G%.%#
+" CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain\ -c\ /sun_checks.xml
+" CompilerSet makeprg=java\ -jar\ checkstyle-X.XX-all.jar\ -f\ plain\ -c\ /sun_checks.xml
+
+CompilerSet makeprg=checkstyle\ -f\ plain
+CompilerSet errorformat=[%tRROR]\ %f:%l:%v:\ %m,
+		       \[%tARN]\ %f:%l:%v:\ %m,
+		       \[%tRROR]\ %f:%l:\ %m,
+		       \[%tARN]\ %f:%l:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/gawk.vim b/runtime/compiler/gawk.vim
new file mode 100644
index 0000000..a109eb8
--- /dev/null
+++ b/runtime/compiler/gawk.vim
@@ -0,0 +1,34 @@
+" Vim compiler file
+" Compiler:	GNU Awk
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Feb 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "gawk"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=gawk
+CompilerSet errorformat=%Z%.awk:\ %f:%l:\ %p^\ %m,
+		       \%Eg%\\=awk:\ %f:%l:\ fatal:\ %m,
+		       \%Egawk:\ %f:%l:\ error:\ %m,
+		       \%Wgawk:\ %f:%l:\ warning:\ %m,
+		       \%Egawk:\ %f:%l:\ %.%#,
+		       \gawk:\ %f:%l:\ %tatal:\ %m,
+		       \gawk:\ %f:%l:\ %trror:\ %m,
+		       \gawk:\ %f:%l:\ %tarning:\ %m,
+		       \gawk:\ %tatal:\ %m,
+		       \gawk:\ %trror:\ %m,
+		       \gawk:\ %tarning:\ %m,
+		       \%+C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/gjs.vim b/runtime/compiler/gjs.vim
new file mode 100644
index 0000000..e033764
--- /dev/null
+++ b/runtime/compiler/gjs.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler:	GJS (Gnome JavaScript Bindings)
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 Jul 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "gjs"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=gjs
+CompilerSet errorformat=%.%#JS\ %tRROR:\ %m\ @\ %f:%c,
+		       \%E%.%#JS\ ERROR:\ %m,
+		       \%Z@%f:%l:%c,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jest.vim b/runtime/compiler/jest.vim
new file mode 100644
index 0000000..fee70b7
--- /dev/null
+++ b/runtime/compiler/jest.vim
@@ -0,0 +1,30 @@
+" Vim compiler file
+" Compiler:	Jest
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2018 May 15
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "jest"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jest\ --no-colors
+
+CompilerSet makeprg=jest\ --no-colors
+CompilerSet errorformat=%E\ \ ●\ %m,
+		       \%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=,
+		       \%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c),
+		       \%+C\ %\\{4}%\\w%.%#,
+		       \%+C\ %\\{4}%[-+]%.%#,
+		       \%-C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jjs.vim b/runtime/compiler/jjs.vim
new file mode 100644
index 0000000..09a9736
--- /dev/null
+++ b/runtime/compiler/jjs.vim
@@ -0,0 +1,24 @@
+" Vim compiler file
+" Compiler:	Nashorn Shell
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2018 Jan 9
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "jjs"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=jjs
+CompilerSet errorformat=%f:%l:%c\ %m,
+		       \%f:%l\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jshint.vim b/runtime/compiler/jshint.vim
new file mode 100644
index 0000000..865591c
--- /dev/null
+++ b/runtime/compiler/jshint.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler:	JSHint
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 Jul 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "jshint"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jshint\ --verbose
+
+CompilerSet makeprg=jshint\ --verbose
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m\ (%t%n),
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/jsonlint.vim b/runtime/compiler/jsonlint.vim
new file mode 100644
index 0000000..5466dcc
--- /dev/null
+++ b/runtime/compiler/jsonlint.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler:	JSON Lint
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 Jul 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "jsonlint"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ jsonlint\ --compact\ --quiet
+
+CompilerSet makeprg=jsonlint\ --compact\ --quiet
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ found:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/rubocop.vim b/runtime/compiler/rubocop.vim
new file mode 100644
index 0000000..7764b4a
--- /dev/null
+++ b/runtime/compiler/rubocop.vim
@@ -0,0 +1,23 @@
+" Vim compiler file
+" Compiler:	RuboCop
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 Jul 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "rubocop"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=rubocop\ --format\ emacs
+CompilerSet errorformat=%f:%l:%c:\ %t:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/stylelint.vim b/runtime/compiler/stylelint.vim
new file mode 100644
index 0000000..784a61d
--- /dev/null
+++ b/runtime/compiler/stylelint.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler:	Stylelint
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Jun 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "stylelint"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ stylelint\ --formatter\ compact
+
+CompilerSet makeprg=stylelint\ --formatter\ compact
+CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ -\ %m,
+		       \%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ -\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/ts-node.vim b/runtime/compiler/ts-node.vim
new file mode 100644
index 0000000..14f0ea7
--- /dev/null
+++ b/runtime/compiler/ts-node.vim
@@ -0,0 +1,29 @@
+" Vim compiler file
+" Compiler:	TypeScript Runner
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Feb 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "node"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ ts-node
+
+CompilerSet makeprg=ts-node
+CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
+		       \%E%f:%l,
+		       \%+Z%\\w%\\+Error:\ %.%#,
+		       \%C%p^%\\+,
+		       \%C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/tsc.vim b/runtime/compiler/tsc.vim
new file mode 100644
index 0000000..a246fc7
--- /dev/null
+++ b/runtime/compiler/tsc.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler:	TypeScript Compiler
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Feb 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "tsc"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ tsc
+
+CompilerSet makeprg=tsc
+CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
+		       \%trror\ TS%n:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/compiler/typedoc.vim b/runtime/compiler/typedoc.vim
new file mode 100644
index 0000000..3be06f3
--- /dev/null
+++ b/runtime/compiler/typedoc.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler:	TypeDoc
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Feb 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "typedoc"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=npx\ typedoc
+
+CompilerSet makeprg=typedoc
+CompilerSet errorformat=%EError:\ %f(%l),
+		       \%WWarning:\ %f(%l),
+		       \%+IDocumentation\ generated\ at\ %f,
+		       \%Z\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save