changeset 18639:cb3163d590a1

Update runtime files. Commit: https://github.com/vim/vim/commit/09c6f265b21065ffa9437837b1d0955137175e45 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 17 15:55:14 2019 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Sun, 17 Nov 2019 16:00:05 +0100
parents 453f4942f6cf
children b9240fe40dd4
files runtime/autoload/tohtml.vim runtime/doc/eval.txt runtime/doc/gui.txt runtime/doc/motion.txt runtime/doc/pi_netrw.txt runtime/doc/popup.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/ftplugin/j.vim runtime/gvim.desktop runtime/indent/j.vim runtime/plugin/tohtml.vim runtime/syntax/j.vim runtime/syntax/javascriptreact.vim runtime/syntax/typescript.vim runtime/syntax/typescriptcommon.vim runtime/syntax/typescriptreact.vim runtime/tutor/tutor.es runtime/tutor/tutor.es.utf-8 src/po/de.po
diffstat 22 files changed, 2462 insertions(+), 2226 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/tohtml.vim
+++ b/runtime/autoload/tohtml.vim
@@ -1,6 +1,6 @@
 " Vim autoload file for the tohtml plugin.
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2018 Nov 11
+" Last Change: 2019 Aug 16
 "
 " Additional contributors:
 "
@@ -364,6 +364,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
   let body_line = ''
 
   let html = []
+  let s:html5 = 0
   if s:settings.use_xhtml
     call add(html, xml_line)
   endif
@@ -371,8 +372,9 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
     call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
   elseif s:settings.use_css && !s:settings.no_pre
-    call add(html, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">")
+    call add(html, "<!DOCTYPE html>")
     call add(html, '<html>')
+    let s:html5 = 1
   else
     call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
     call add(html, '  "http://www.w3.org/TR/html4/loose.dtd">')
@@ -383,7 +385,11 @@ func! tohtml#Diff2HTML(win_list, buf_lis
   " include encoding as close to the top as possible, but only if not already
   " contained in XML information
   if s:settings.encoding != "" && !s:settings.use_xhtml
-    call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
+    if s:html5
+      call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
+    else
+      call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
+    endif
   endif
 
   call add(html, '<title>diff</title>')
@@ -392,6 +398,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
   call add(html, '<meta name="settings" content="'.
 	\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
 	\ ',prevent_copy='.s:settings.prevent_copy.
+	\ ',use_input_for_pc='.s:settings.use_input_for_pc.
 	\ '"'.tag_close)
   call add(html, '<meta name="colorscheme" content="'.
 	\ (exists('g:colors_name')
@@ -400,16 +407,8 @@ func! tohtml#Diff2HTML(win_list, buf_lis
 
   call add(html, '</head>')
   let body_line_num = len(html)
-  if !empty(s:settings.prevent_copy)
-    call add(html, "<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>")
-    call add(html, "<!-- hidden divs used by javascript to get the width of a char -->")
-    call add(html, "<div id='oneCharWidth'>0</div>")
-    call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</div>")
-    call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>")
-  else
-    call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
-  endif
-  call add(html, "<table border='1' width='100%' id='vimCodeElement".s:settings.id_suffix."'>")
+  call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
+  call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
 
   call add(html, '<tr>')
   for buf in a:win_list
@@ -443,7 +442,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     " Grab the style information. Some of this will be duplicated so only insert
     " it if it's not already there. {{{
     1
-    let style_start = search('^<style type="text/css">')
+    let style_start = search('^<style\( type="text/css"\)\?>')
     1
     let style_end = search('^</style>')
     if style_start > 0 && style_end > 0
@@ -481,7 +480,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     " TODO: restore using grabbed lines if undolevel is 1?
     normal! 2u
     if s:settings.use_css
-      call add(html, '<td valign="top"><div>')
+      call add(html, '<td><div>')
     elseif s:settings.use_xhtml
       call add(html, '<td nowrap="nowrap" valign="top"><div>')
     else
@@ -515,7 +514,13 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e")
     let i += 1
   endwhile
+
+  let s:ei_sav = &eventignore
+  set eventignore+=FileType
   exe "topleft new " . name
+  let &eventignore=s:ei_sav
+  unlet s:ei_sav
+
   setlocal modifiable
 
   " just in case some user autocmd creates content in the new buffer, make sure
@@ -544,7 +549,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     " add required javascript in reverse order so we can just call append again
     " and again without adjusting {{{
 
-    let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy)
+    let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
 
     " insert script closing tag if needed
     if s:uses_script
@@ -555,31 +560,6 @@ func! tohtml#Diff2HTML(win_list, buf_lis
 	    \ ])
     endif
 
-    " insert script which corrects the size of small input elements in
-    " prevent_copy mode. See 2html.vim for details on why this is needed and how
-    " it works.
-    if !empty(s:settings.prevent_copy)
-      call append(style_start, [
-	    \ '',
-	    \ '/* simulate a "ch" unit by asking the browser how big a zero character is */',
-	    \ 'function FixCharWidth() {',
-	    \ '  /* get the hidden element which gives the width of a single character */',
-	    \ '  var goodWidth = document.getElementById("oneCharWidth").clientWidth;',
-	    \ '  /* get all input elements, we''ll filter on class later */',
-	    \ '  var inputTags = document.getElementsByTagName("input");',
-	    \ '  var ratio = 5;',
-	    \ '  var inputWidth = document.getElementById("oneInputWidth").clientWidth;',
-	    \ '  var emWidth = document.getElementById("oneEmWidth").clientWidth;',
-	    \ '  if (inputWidth > goodWidth) {',
-	    \ '    while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
-	    \ '      ratio += 5;',
-	    \ '    }',
-	    \ '    document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
-	    \ '  }',
-	    \ '}'
-	    \ ])
-    endif
-
     " insert javascript to get IDs from line numbers, and to open a fold before
     " jumping to any lines contained therein
     if s:settings.line_ids
@@ -659,10 +639,9 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     endif
 
     if s:uses_script
-      " insert script tag; javascript is always needed for the line number
-      " normalization for URL hashes
+      " insert script tag if needed
       call append(style_start, [
-	    \ "<script type='text/javascript'>",
+	    \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
 	    \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
     endif
 
@@ -673,11 +652,13 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     " is pretty useless for really long lines. {{{
     if s:settings.use_css
       call append(style_start,
-	    \ ['<style type="text/css">']+
+	    \ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
 	    \ style+
 	    \ [ s:settings.use_xhtml ? '' : '<!--',
 	    \   'table { table-layout: fixed; }',
 	    \   'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
+	    \   'table, td, th { border: 1px solid; }',
+	    \   'td { vertical-align: top; }',
 	    \   'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
 	    \   'td div { overflow: auto; }',
 	    \   s:settings.use_xhtml ? '' : '-->',
@@ -720,21 +701,22 @@ func! tohtml#GetUserSettings() "{{{
     endif
 
     " get current option settings with appropriate defaults {{{
-    call tohtml#GetOption(user_settings,    'no_progress', !has("statusline") )
-    call tohtml#GetOption(user_settings,  'diff_one_file', 0 )
-    call tohtml#GetOption(user_settings,   'number_lines', &number )
-    call tohtml#GetOption(user_settings,       'pre_wrap', &wrap )
-    call tohtml#GetOption(user_settings,        'use_css', 1 )
-    call tohtml#GetOption(user_settings, 'ignore_conceal', 0 )
-    call tohtml#GetOption(user_settings, 'ignore_folding', 0 )
-    call tohtml#GetOption(user_settings,  'dynamic_folds', 0 )
-    call tohtml#GetOption(user_settings,  'no_foldcolumn', user_settings.ignore_folding)
-    call tohtml#GetOption(user_settings,   'hover_unfold', 0 )
-    call tohtml#GetOption(user_settings,         'no_pre', 0 )
-    call tohtml#GetOption(user_settings,     'no_invalid', 0 )
-    call tohtml#GetOption(user_settings,   'whole_filler', 0 )
-    call tohtml#GetOption(user_settings,      'use_xhtml', 0 )
-    call tohtml#GetOption(user_settings,       'line_ids', user_settings.number_lines )
+    call tohtml#GetOption(user_settings,       'no_progress', !has("statusline") )
+    call tohtml#GetOption(user_settings,     'diff_one_file', 0 )
+    call tohtml#GetOption(user_settings,      'number_lines', &number )
+    call tohtml#GetOption(user_settings,          'pre_wrap', &wrap )
+    call tohtml#GetOption(user_settings,           'use_css', 1 )
+    call tohtml#GetOption(user_settings,    'ignore_conceal', 0 )
+    call tohtml#GetOption(user_settings,    'ignore_folding', 0 )
+    call tohtml#GetOption(user_settings,     'dynamic_folds', 0 )
+    call tohtml#GetOption(user_settings,     'no_foldcolumn', user_settings.ignore_folding)
+    call tohtml#GetOption(user_settings,      'hover_unfold', 0 )
+    call tohtml#GetOption(user_settings,            'no_pre', 0 )
+    call tohtml#GetOption(user_settings,        'no_invalid', 0 )
+    call tohtml#GetOption(user_settings,      'whole_filler', 0 )
+    call tohtml#GetOption(user_settings,         'use_xhtml', 0 )
+    call tohtml#GetOption(user_settings,          'line_ids', user_settings.number_lines )
+    call tohtml#GetOption(user_settings, 'use_input_for_pc', 'fallback')
     " }}}
     
     " override those settings that need it {{{
@@ -868,6 +850,16 @@ func! tohtml#GetUserSettings() "{{{
       let user_settings.no_invalid = 0
     endif
 
+    " enforce valid values for use_input_for_pc
+    if user_settings.use_input_for_pc !~# 'fallback\|none\|all'
+      let user_settings.use_input_for_pc = 'fallback'
+      echohl WarningMsg
+      echomsg '2html: "' . g:html_use_input_for_pc . '" is not valid for g:html_use_input_for_pc'
+      echomsg '2html: defaulting to "' . user_settings.use_input_for_pc . '"'
+      echohl None
+      sleep 3
+    endif
+
     if exists('g:html_id_expr')
       let user_settings.id_suffix = eval(g:html_id_expr)
       if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$'
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.1.  Last change: 2019 Nov 06
+*eval.txt*	For Vim version 8.1.  Last change: 2019 Nov 17
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -11585,21 +11585,6 @@ text...
 			Unlock the internal variable {name}.  Does the
 			opposite of |:lockvar|.
 
-							*:eval*
-:eval {expr}		Evaluate {expr} and discard the result.  Example: >
-				:eval Getlist()->Filter()->append('$')
-
-<			The expression is supposed to have a side effect,
-			since the resulting value is not used.  In the example
-			the `append()` call appends the List with text to the
-			buffer.  This is similar to `:call` but works with any
-			expression.
-
-			The command can be shortened to `:ev` or `:eva`, but
-			these are hard to recognize and therefore not to be
-			used.
-
-
 :if {expr1}			*:if* *:end* *:endif* *:en* *E171* *E579* *E580*
 :en[dif]		Execute the commands until the next matching ":else"
 			or ":endif" if {expr1} evaluates to non-zero.
@@ -11886,6 +11871,21 @@ text...
 			And to get a beep: >
 		:exe "normal \<Esc>"
 <
+							*:eval*
+:eval {expr}		Evaluate {expr} and discard the result.  Example: >
+				:eval Getlist()->Filter()->append('$')
+
+<			The expression is supposed to have a side effect,
+			since the resulting value is not used.  In the example
+			the `append()` call appends the List with text to the
+			buffer.  This is similar to `:call` but works with any
+			expression.
+
+			The command can be shortened to `:ev` or `:eva`, but
+			these are hard to recognize and therefore not to be
+			used.
+
+
 							*:exe* *:execute*
 :exe[cute] {expr1} ..	Executes the string that results from the evaluation
 			of {expr1} as an Ex command.
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 8.1.  Last change: 2019 Nov 10
+*gui.txt*       For Vim version 8.1.  Last change: 2019 Nov 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -309,7 +309,7 @@ because the menu command will always be 
 
 If you are on the ':' line (or '/' or '?'), then clicking the left or right
 mouse button will position the cursor on the ':' line (if 'mouse' contains
-'c', 'a' or 'A').
+'c' or 'a').
 
 In any situation the middle mouse button may be clicked to paste the current
 selection.
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 8.1.  Last change: 2019 Nov 04
+*motion.txt*    For Vim version 8.1.  Last change: 2019 Nov 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -964,6 +964,7 @@ These commands are not marks themselves,
 			- numbered marks '0 - '9
 			- last insert position '^
 			- last change position '.
+			- last affected text area '[ and ']
 			- the Visual area '< and '>
 			- line numbers in placed signs
 			- line numbers in quickfix positions
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 8.1.  Last change: 2019 Nov 10
+*pi_netrw.txt*  For Vim version 8.1.  Last change: 2019 Nov 14
 
 	    ------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell
@@ -1184,7 +1184,7 @@ One may easily "bookmark" the currently 
 								*.netrwbook*
 Bookmarks are retained in between sessions of vim in a file called .netrwbook
 as a |List|, which is typically stored in the first directory on the user's
-|'runtimepath'|; entries are kept in sorted order.
+'runtimepath'; entries are kept in sorted order.
 
 If there are marked files and/or directories, mb will add them to the bookmark
 list.
@@ -3512,7 +3512,7 @@ 10. Problems and Fixes					*netrw-proble
 			- Click "Add..."
 			- Set External Editor (adjust path as needed, include
 			  the quotes and !.! at the end):
-			    "c:\Program Files\Vim\vim881\gvim.exe" !.!
+			    "c:\Program Files\Vim\vim81\gvim.exe" !.!
 			- Check that the filetype in the box below is
 			  {asterisk}.{asterisk} (all files), or whatever types
 			  you want (cec: change {asterisk} to * ; I had to
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 8.1.  Last change: 2019 Nov 11
+*popup.txt*  For Vim version 8.1.  Last change: 2019 Nov 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -863,7 +863,7 @@ Some recommended key actions:
 	Tab		accept current suggestion
 
 A mouse click arrives as <LeftMouse>.  The coordinates can be obtained with
-|mousegetpos()|.
+|getmousepos()|.
 
 Vim provides standard filters |popup_filter_menu()| and
 |popup_filter_yesno()|.
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 8.1.  Last change: 2019 Oct 27
+*syntax.txt*	For Vim version 8.1.  Last change: 2019 Nov 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -476,6 +476,16 @@ conversion. See |-E| and |-s-ex| for det
 script to replace all the -c commands and use it with the -u flag instead of
 specifying each command separately.
 
+				    *hl-TOhtmlProgress* *TOhtml-progress-color*
+When displayed, the progress bar will show colored boxes along the statusline
+as the HTML conversion proceeds. By default, the background color as the
+current "DiffDelete" highlight group is used. If "DiffDelete" and "StatusLine"
+have the same background color, TOhtml will automatically adjust the color to
+differ. If you do not like the automatically selected colors, you can define
+your own highlight colors for the progress bar. Example: >
+
+	hi TOhtmlProgress guifg=#c0ffee ctermbg=7
+<
 							 *g:html_number_lines*
 Default: current 'number' setting.
 When 0, buffer text is displayed in the generated HTML without line numbering.
@@ -507,8 +517,8 @@ For example: >
 <
 							      *g:html_use_css*
 Default: 1.
-When 1, generate valid HTML 4.01 markup with CSS1 styling, supported in all
-modern browsers and most old browsers.
+When 1, generate valid HTML 5 markup with CSS styling, supported in all modern
+browsers and many old browsers.
 When 0, generate <font> tags and similar outdated markup. This is not
 recommended but it may work better in really old browsers, email clients,
 forum posts, and similar situations where basic CSS support is unavailable.
@@ -580,23 +590,43 @@ affected in this way as follows:
 Example, to make the fold column and line numbers uncopyable: >
 	:let g:html_prevent_copy = "fn"
 <
-This feature is currently implemented by inserting read-only <input> elements
-into the markup to contain the uncopyable areas. This does not work well in
-all cases. When pasting to some applications which understand HTML, the
-<input> elements also get pasted. But plain-text paste destinations should
-always work.
+The method used to prevent copying in the generated page depends on the value
+of |g:html_use_input_for_pc|.
+
+						    *g:html_use_input_for_pc*
+Default: "fallback"
+If |g:html_prevent_copy| is non-empty, then:
+
+When "all", read-only <input> elements are used in place of normal text for
+uncopyable regions. In some browsers, especially older browsers, after
+selecting an entire page and copying the selection, the <input> tags are not
+pasted with the page text. If |g:html_no_invalid| is 0, the <input> tags have
+invalid type; this works in more browsers, but the page will not validate.
+Note: this method does NOT work in recent versions of Chrome and equivalent
+browsers; the <input> tags get pasted with the text.
+
+When "fallback" (default value), the same <input> elements are generated for
+older browsers, but newer browsers (detected by CSS feature query) hide the
+<input> elements and instead use generated content in an ::before pseudoelement
+to display the uncopyable text. This method should work with the largest
+number of browsers, both old and new.
+
+When "none", the <input> elements are not generated at all. Only the
+generated-content method is used. This means that old browsers, notably
+Internet Explorer, will either copy the text intended not to be copyable, or
+the non-copyable text may not appear at all. However, this is the most
+standards-based method, and there will be much less markup.
 
 							   *g:html_no_invalid*
 Default: 0.
-When 0, if |g:html_prevent_copy| is non-empty, an invalid attribute is
-intentionally inserted into the <input> element for the uncopyable areas. This
-increases the number of applications you can paste to without also pasting the
-<input> elements. Specifically, Microsoft Word will not paste the <input>
-elements if they contain this invalid attribute.
-When 1, no invalid markup is ever intentionally inserted, and the generated
-page should validate. However, be careful pasting into Microsoft Word when
-|g:html_prevent_copy| is non-empty; it can be hard to get rid of the <input>
-elements which get pasted.
+When 0, if |g:html_prevent_copy| is non-empty and |g:html_use_input_for_pc| is
+not "none", an invalid attribute is intentionally inserted into the <input>
+element for the uncopyable areas. This prevents pasting the <input> elements
+in some applications. Specifically, some versions of Microsoft Word will not
+paste the <input> elements if they contain this invalid attribute. When 1, no
+invalid markup is inserted, and the generated page should validate. However,
+<input> elements may be pasted into some applications and can be difficult to
+remove afterward.
 
 							 *g:html_hover_unfold*
 Default: 0.
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5038,6 +5038,7 @@ TERM	starting.txt	/*TERM*
 TOhtml-encoding	syntax.txt	/*TOhtml-encoding*
 TOhtml-encoding-detect	syntax.txt	/*TOhtml-encoding-detect*
 TOhtml-performance	syntax.txt	/*TOhtml-performance*
+TOhtml-progress-color	syntax.txt	/*TOhtml-progress-color*
 TOhtml-uncopyable-text	syntax.txt	/*TOhtml-uncopyable-text*
 TOhtml-wrap-text	syntax.txt	/*TOhtml-wrap-text*
 TRUE	eval.txt	/*TRUE*
@@ -6648,6 +6649,7 @@ g:html_prevent_copy	syntax.txt	/*g:html_
 g:html_start_line	syntax.txt	/*g:html_start_line*
 g:html_use_css	syntax.txt	/*g:html_use_css*
 g:html_use_encoding	syntax.txt	/*g:html_use_encoding*
+g:html_use_input_for_pc	syntax.txt	/*g:html_use_input_for_pc*
 g:html_use_xhtml	syntax.txt	/*g:html_use_xhtml*
 g:html_whole_filler	syntax.txt	/*g:html_whole_filler*
 g:netrw_altfile	pi_netrw.txt	/*g:netrw_altfile*
@@ -6873,6 +6875,7 @@ getlatestvimscripts-install	pi_getscript
 getline()	eval.txt	/*getline()*
 getloclist()	eval.txt	/*getloclist()*
 getmatches()	eval.txt	/*getmatches()*
+getmousepos()	eval.txt	/*getmousepos()*
 getpid()	eval.txt	/*getpid()*
 getpos()	eval.txt	/*getpos()*
 getqflist()	eval.txt	/*getqflist()*
@@ -7132,6 +7135,7 @@ hl-StatusLine	syntax.txt	/*hl-StatusLine
 hl-StatusLineNC	syntax.txt	/*hl-StatusLineNC*
 hl-StatusLineTerm	syntax.txt	/*hl-StatusLineTerm*
 hl-StatusLineTermNC	syntax.txt	/*hl-StatusLineTermNC*
+hl-TOhtmlProgress	syntax.txt	/*hl-TOhtmlProgress*
 hl-TabLine	syntax.txt	/*hl-TabLine*
 hl-TabLineFill	syntax.txt	/*hl-TabLineFill*
 hl-TabLineSel	syntax.txt	/*hl-TabLineSel*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.1.  Last change: 2019 Nov 13
+*todo.txt*      For Vim version 8.1.  Last change: 2019 Nov 17
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,16 +38,25 @@ browser use: https://github.com/vim/vim/
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Add a function to fetch the mouse_lnum and mouse_col values?  Can be used in a
-mapping.  Remove setting v:mouse_lnum etc. from the popup filter, the values
-are wrong.
-
-Problem with cursor in wrong position: #5214
-
-Don't use javascriptreact but javascript.jsx?  #4830
-Although there is a good argument against using ".jsx".
-
-Update libvterm on github, rename termscreen.c back to screen.c.
+Patch #5232 from Andy Massimino to replace:
+    Patch to parse ":line" in tags file and use it for search. (Daniel Hahler,
+    #2546)  Fixes #1057.  Missing a test.
+
+Update files for javascriptreact and typescriptreact.
+Can we close #4830?
+
+When 'selection' is "exclusive" then using vi' on the second ' does not select
+anything. (#5183)
+Patch from Christian: 
+https://github.com/chrisbra/vim/commit/7482d1d389e7db97e247f8b509003e5ec27427a9
+When using exclusive selection and vi" that fails, cursor moves to the left.
+Cursor should not move. (#4024)
+
+Patch: New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652)
+
+Patch to remove FORTIFY_SOURCE also from CPPFLAGS. (Benedikt Morbach, #2786)
+
+Patch from Namsh to allow building with both XIM and hangulin. (2019 Aug 29)
 
 
 Popup windows:
@@ -65,9 +74,8 @@ Popup windows:
 
 Text properties:
 - Implement prop_find() issue #4970
-- Adjusting column/length when inserting text
 - Text properties spanning more than one line
-- See remakrs at top of src/textprop.c
+- See remarks at top of src/textprop.c
 
 'incsearch' with :s: 
 - Get E20 when using command history to get "'<,'>s/a/b" and no Visual area
@@ -179,13 +187,6 @@ Adding "10" to 'spellsuggest' causes spe
 goes to any buffer, and then :bnext skips help buffers, since they are
 unlisted. (#4478)
 
-When 'selection' is "exclusive" then using vi' on the second ' does not select
-anything. (#5183)
-Patch from Christian: 
-https://github.com/chrisbra/vim/commit/7482d1d389e7db97e247f8b509003e5ec27427a9
-When using exclusive selection and vi" that fails, cursor moves to the left.
-Cursor should not move. (#4024)
-
 Enable 'termbidi' if $VTE_VERSION >= 5703 ?
 
 Universal solution to detect if t_RS is working, using cursor position.
@@ -194,8 +195,6 @@ Koichi Iwamoto, #2126
 The :syntax cchar value can only be a single character.  It would be useful to
 support combining characters. (Charles Campbell)  Also #4687
 
-Patch: New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652)
-
 Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
 It can replace the BeOS code, which is likely not used anymore.
 Now on github: #1856.  Updated Oct 2017
@@ -207,10 +206,6 @@ Problem showing a line if the number col
 When using :packadd for a replacement language plugin, it is loaded after the
 default one.  #4698
 
-Patch to remove FORTIFY_SOURCE also from CPPFLAGS. (Benedikt Morbach, #2786)
-
-Patch from Namsh to allow building with both XIM and hangulin. (2019 Aug 29)
-
 When using :packadd files under "later" are not used, which is inconsistent
 with packages under "start". (xtal8, #1994)
 
@@ -683,9 +678,6 @@ used for git temp files.
 
 Cursor in wrong position when line wraps. (#2540)
 
-Patch to parse ":line" in tags file and use it for search. (Daniel Hahler,
-#2546)  Fixes #1057.  Missing a test.
-
 Setting 'columns' in a BufEnter autocommand causes a second tab width to
 behave strangely, as if there is a gap and a vertical window separator.
 (Michael Soyka, 2018 Sep 23, #3477)
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.1.  Last change: 2019 Sep 23
+*usr_41.txt*	For Vim version 8.1.  Last change: 2019 Nov 17
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -903,6 +903,7 @@ Interactive:					*interactive-functions*
 	confirm()		let the user make a choice
 	getchar()		get a character from the user
 	getcharmod()		get modifiers for the last typed character
+	getmousepos()		get last known mouse position
 	feedkeys()		put characters in the typeahead queue
 	input()			get a line from the user
 	inputlist()		let the user pick an entry from a list
--- a/runtime/ftplugin/j.vim
+++ b/runtime/ftplugin/j.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin
 " Language:	J
-" Maintainer:	David Bürgin <676c7473@gmail.com>
-" URL:		https://github.com/glts/vim-j
-" Last Change:	2015-09-27
+" Maintainer:	David Bürgin <dbuergin@gluet.ch>
+" URL:		https://gitlab.com/glts/vim-j
+" Last Change:	2015-10-27
 
 if exists('b:did_ftplugin')
   finish
@@ -25,7 +25,7 @@ setlocal include=\\v^\\s*(load\|require)
 setlocal includeexpr=substitute(substitute(tr(v:fname,'\\','/'),'\\v^[^~][^/.]*(/[^/.]+)$','&\\1',''),'\\v^\\~[^/]+/','','')
 setlocal suffixesadd=.ijs
 
-let b:undo_ftplugin = 'setlocal matchpairs< formatoptions< commentstring< comments< iskeyword< path< include< includeexpr< suffixesadd<'
+let b:undo_ftplugin = 'setlocal suffixesadd< includeexpr< include< path< matchpairs< formatoptions< commentstring< comments< iskeyword<'
 
 " Section movement with ]] ][ [[ []. The start/end patterns below are amended
 " inside the function in order to avoid matching on the current cursor line.
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -100,7 +100,7 @@ Type=Application
 Keywords[de]=Text;Editor;
 Keywords[eo]=Teksto;redaktilo;
 Keywords[ja]=テキスト;エディタ;
-Keywords[ru]=текÑÑ‚;текÑтовый редактор
+Keywords[ru]=текÑÑ‚;текÑтовый редактор;
 Keywords[tr]=Metin;düzenleyici;
 Keywords=Text;editor;
 # Translators: This is the Icon file name. Do NOT translate
--- a/runtime/indent/j.vim
+++ b/runtime/indent/j.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	J
-" Maintainer:	David Bürgin <676c7473@gmail.com>
-" URL:		https://github.com/glts/vim-j
+" Maintainer:	David Bürgin <dbuergin@gluet.ch>
+" URL:		https://gitlab.com/glts/vim-j
 " Last Change:	2015-01-11
 
 if exists('b:did_indent')
--- a/runtime/plugin/tohtml.vim
+++ b/runtime/plugin/tohtml.vim
@@ -1,6 +1,6 @@
 " Vim plugin for converting a syntax highlighted file to HTML.
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2018 Nov 11
+" Last Change: 2019 Nov 13
 "
 " The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
 " $VIMRUNTIME/syntax/2html.vim
@@ -8,17 +8,46 @@
 if exists('g:loaded_2html_plugin')
   finish
 endif
-let g:loaded_2html_plugin = 'vim8.1_v1'
+let g:loaded_2html_plugin = 'vim8.1_v2'
 
 "
 " Changelog: {{{
-"   8.1_v1  (this version): Fix Bitbucket issue #6: Don't generate empty script
-"                           tag.
-"                           Fix Bitbucket issue #5: javascript should
-"                           declare variables with "var".
-"                           Fix Bitbucket issue #13: errors thrown sourcing
-"                           2html.vim directly when plugins not loaded.
-"                           Fix Bitbucket issue #16: support 'vartabstop'.
+"   8.1_v2  (this version): - Fix Bitbucket issue #19: fix calculation of tab
+"                             stop position to use in expanding a tab, when that
+"                             tab occurs after a syntax match which in turn
+"                             comes after previously expanded tabs.
+"                           - Set eventignore while splitting a window for the
+"                             destination file to ignore FileType events;
+"                             speeds up processing when the destination file
+"                             already exists and HTML highlight takes too long.
+"                           - Fix Bitbucket issue #20: progress bar could not be
+"                             seen when DiffDelete background color matched
+"                             StatusLine background color. Added TOhtmlProgress
+"                             highlight group for manual user override, but
+"                             calculate it to be visible compared to StatusLine
+"                             by default.
+"                           - Fix Bitbucket issue #1: Remove workaround for old
+"                             browsers which don't support 'ch' CSS unit, since
+"                             all modern browsers, including IE>=9, support it.
+"                           - Fix Bitbucket issue #10: support termguicolors
+"                           - Fix Bitbucket issue #21: default to using
+"                             generated content instead of <input> tags for
+"                             uncopyable text, so that text is correctly
+"                             prevented from being copied in chrome. Use
+"                             g:html_use_input_for_pc option to control the
+"                             method used.
+"                           - Switch to HTML5 to allow using vnu as a validator
+"                             in unit test.
+"                           - Fix fallback sizing of <input> tags for browsers
+"                             without "ch" support.
+"                           - Fix cursor on unselectable diff filler text.
+"   8.1_v1  (Vim 8.1.0528): - Fix Bitbucket issue #6: Don't generate empty
+"                             script tag.
+"                           - Fix Bitbucket issue #5: javascript should
+"                             declare variables with "var".
+"                           - Fix Bitbucket issue #13: errors thrown sourcing
+"                             2html.vim directly when plugins not loaded.
+"                           - Fix Bitbucket issue #16: support 'vartabstop'.
 "
 "   7.4 updates: {{{
 "   7.4_v2  (Vim 7.4.0899): Fix error raised when converting a diff containing
--- a/runtime/syntax/j.vim
+++ b/runtime/syntax/j.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	J
-" Maintainer:	David Bürgin <676c7473@gmail.com>
-" URL:		https://github.com/glts/vim-j
-" Last Change:	2015-01-11
+" Maintainer:	David Bürgin <dbuergin@gluet.ch>
+" URL:		https://gitlab.com/glts/vim-j
+" Last Change:	2019-11-12
 
 if exists('b:current_syntax')
   finish
@@ -23,10 +23,10 @@ syntax match jControl /\<\%(for\|goto\|l
 " Standard library names. A few names need to be defined with ":syntax match"
 " because they would otherwise take precedence over the corresponding jControl
 " and jDefineExpression items.
-syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFIOS IFJCDROID IFJHS IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCMPX JFL JINT JPTR JSIZES JSTR JTYPES JVERSION LF LF2 TAB UNAME UNXLIB dbhelp libjqt
+syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFBE IFIOS IFJA IFJHS IFJNET IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCHAR2 JCHAR4 JCMPX JFL JINT JLIB JPTR JSB JSIZES JSTR JSTR2 JSTR4 JTYPES JVERSION LF LF2 LIBFILE TAB UNAME UNXLIB dbhelp libjqt
 syntax keyword jStdlibAdverb define each every fapplylines inv inverse items leaf rows rxapply rxmerge table
 syntax keyword jStdlibConjunction bind cuts def on
-syntax keyword jStdlibVerb AND Endian IFDEF OR XOR anddf android_exec_am android_exec_host andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring cleartags clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dberm dberr dbg dbjmp dblocals dblxq dblxs dbnxt dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd loadtags mema memf memr memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid startupconsole startupide stderr stdin stdout stringreplace symdat symget symset ta tagcp tagopen tagselect take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit
+syntax keyword jStdlibVerb AND Endian IFDEF OR XOR abspath anddf android_exec_am android_exec_host android_getdisplaymetrics andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dbcut dberm dberr dbg dbinto dbjmp dblocals dblxq dblxs dbnxt dbout dbover dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf16 isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd mema memf memr memu memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid stderr stdin stdout stringreplace symdat symget symset take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolist tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount undquote unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit
 syntax match jStdlibNoun /\<\%(adverb\|conjunction\|dyad\|monad\|noun\|verb\)\>/
 syntax match jStdlibVerb /\<\%(Note\|\%(assert\|break\|do\)\.\@!\)\>/
 
--- a/runtime/syntax/javascriptreact.vim
+++ b/runtime/syntax/javascriptreact.vim
@@ -1,2 +1,3 @@
-" Placeholder for backwards compatilibity: .jsx used to stand for JavaScript.
+" Placeholder for backwards compatilibity: .jsx used to be associated with the
+" filetpye JavaScript.
 runtime! syntax/javascript.vim
--- a/runtime/syntax/typescript.vim
+++ b/runtime/syntax/typescript.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:     TypeScript
 " Maintainer:   Bram Moolenaar
-" Last Change:	2019 Jun 07
+" Last Change:	2019 Nov 17
 " Based On:     Herrington Darkholme's yats.vim
 " Changes:      See https:github.com/HerringtonDarkholme/yats.vim
-" Credits:      See yats.vim
+" Credits:      See yats.vim on github
 
 " This is the same syntax that is in yats.vim, but:
 " - flattened into one file
@@ -21,6 +21,7 @@ endif
 let s:cpo_save = &cpo
 set cpo&vim
 
+" this region is NOT used in TypeScriptReact
 " nextgroup doesn't contain objectLiteral, let outer region contains it
 syntax region typescriptTypeCast matchgroup=typescriptTypeBrackets
   \ start=/< \@!/ end=/>/
@@ -28,2045 +29,11 @@ syntax region typescriptTypeCast matchgr
   \ nextgroup=@typescriptExpression
   \ contained skipwhite oneline
 
-" runtime syntax/common.vim
-
-" NOTE: this results in accurate highlighting, but can be slow.
-syntax sync fromstart
-
-"Dollar sign is permitted anywhere in an identifier
-setlocal iskeyword-=$
-if main_syntax == 'typescript' || main_syntax == 'typescript.tsx'
-  setlocal iskeyword+=$
-  " syntax cluster htmlJavaScript                 contains=TOP
-endif
-
-" lowest priority on least used feature
-syntax match   typescriptLabel                /[a-zA-Z_$]\k*:/he=e-1 contains=typescriptReserved nextgroup=@typescriptStatement skipwhite skipempty
-
-" other keywords like return,case,yield uses containedin
-syntax region  typescriptBlock                 matchgroup=typescriptBraces start=/{/ end=/}/ contains=@typescriptStatement,@typescriptComments fold
-
-
-"runtime syntax/basic/identifiers.vim
-syntax cluster afterIdentifier contains=
-  \ typescriptDotNotation,
-  \ typescriptFuncCallArg,
-  \ typescriptTemplate,
-  \ typescriptIndexExpr,
-  \ @typescriptSymbols,
-  \ typescriptTypeArguments
-
-syntax match   typescriptIdentifierName        /\<\K\k*/
-  \ nextgroup=@afterIdentifier
-  \ transparent
-  \ contains=@_semantic
-  \ skipnl skipwhite
-
-syntax match   typescriptProp contained /\K\k*!\?/
-  \ transparent
-  \ contains=@props
-  \ nextgroup=@afterIdentifier
-  \ skipwhite skipempty
-
-syntax region  typescriptIndexExpr      contained matchgroup=typescriptProperty start=/\[/rs=s+1 end=/]/he=e-1 contains=@typescriptValue nextgroup=@typescriptSymbols,typescriptDotNotation,typescriptFuncCallArg skipwhite skipempty
-
-syntax match   typescriptDotNotation           /\./ nextgroup=typescriptProp skipnl
-syntax match   typescriptDotStyleNotation      /\.style\./ nextgroup=typescriptDOMStyle transparent
-" syntax match   typescriptFuncCall              contained /[a-zA-Z]\k*\ze(/ nextgroup=typescriptFuncCallArg
-syntax region  typescriptParenExp              matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptComments,@typescriptValue,typescriptCastKeyword nextgroup=@typescriptSymbols skipwhite skipempty
-syntax region  typescriptFuncCallArg           contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptValue,@typescriptComments nextgroup=@typescriptSymbols,typescriptDotNotation skipwhite skipempty skipnl
-syntax region  typescriptEventFuncCallArg      contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
-syntax region  typescriptEventString           contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ contains=typescriptASCII,@events
-
-"runtime syntax/basic/literal.vim
-"Syntax in the JavaScript code
-
-" String
-syntax match   typescriptASCII                 contained /\\\d\d\d/
-
-syntax region  typescriptTemplateSubstitution matchgroup=typescriptTemplateSB
-  \ start=/\${/ end=/}/
-  \ contains=@typescriptValue
-  \ contained
-
-
-syntax region  typescriptString 
-  \ start=+\z(["']\)+  skip=+\\\%(\z1\|$\)+  end=+\z1+ end=+$+
-  \ contains=typescriptSpecial,@Spell
-  \ extend
-
-syntax match   typescriptSpecial            contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"
-
-" From vim runtime
-" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
-syntax region  typescriptRegexpString          start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}]+me=e-1 nextgroup=typescriptDotNotation oneline
-
-syntax region  typescriptTemplate
-  \ start=/`/  skip=/\\\\\|\\`\|\n/  end=/`\|$/
-  \ contains=typescriptTemplateSubstitution
-  \ nextgroup=@typescriptSymbols
-  \ skipwhite skipempty
-
-"Array
-syntax region  typescriptArray matchgroup=typescriptBraces
-  \ start=/\[/ end=/]/
-  \ contains=@typescriptValue,@typescriptComments
-  \ nextgroup=@typescriptSymbols,typescriptDotNotation
-  \ skipwhite skipempty fold
-
-" Number
-syntax match typescriptNumber /\<0[bB][01][01_]*\>/        nextgroup=@typescriptSymbols skipwhite skipempty
-syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/       nextgroup=@typescriptSymbols skipwhite skipempty
-syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
-syntax match typescriptNumber /\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\|\.\d[0-9]*/
-  \ nextgroup=typescriptExponent,@typescriptSymbols skipwhite skipempty
-syntax match typescriptExponent /[eE][+-]\=\d[0-9]*\>/
-  \ nextgroup=@typescriptSymbols skipwhite skipempty contained
-
-
-" runtime syntax/basic/object.vim
-syntax region  typescriptObjectLiteral         matchgroup=typescriptBraces
-  \ start=/{/ end=/}/
-  \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName
-  \ fold contained
-
-syntax match   typescriptObjectLabel  contained /\k\+\_s*/
-  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
-  \ skipwhite skipempty
-
-syntax region  typescriptStringProperty   contained
-  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1/
-  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
-  \ skipwhite skipempty
-
-" syntax region  typescriptPropertyName    contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1(/me=e-1 nextgroup=@typescriptCallSignature skipwhite skipempty oneline
-syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptBraces
-  \ start=/\[/rs=s+1 end=/]/
-  \ contains=@typescriptValue
-  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
-  \ skipwhite skipempty
-
-" syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*:/he=e-1 contains=@typescriptValue nextgroup=@typescriptValue skipwhite skipempty
-" syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*(/me=e-1 contains=@typescriptValue nextgroup=@typescriptCallSignature skipwhite skipempty
-" Value for object, statement for label statement
-syntax match typescriptRestOrSpread /\.\.\./ contained
-syntax match typescriptObjectSpread /\.\.\./ contained containedin=typescriptObjectLiteral,typescriptArray nextgroup=@typescriptValue
-
-syntax match typescriptObjectColon contained /:/ nextgroup=@typescriptValue skipwhite skipempty
-
-"runtime syntax/basic/symbols.vim
-" + - ^ ~
-syntax match typescriptUnaryOp /[+\-~!]/
- \ nextgroup=@typescriptValue
- \ skipwhite
-
-syntax region typescriptTernary matchgroup=typescriptTernaryOp start=/?/ end=/:/ contained contains=@typescriptValue,@typescriptComments nextgroup=@typescriptValue skipwhite skipempty
-
-syntax match   typescriptAssign  /=/ nextgroup=@typescriptValue
-  \ skipwhite skipempty
-
-" 2: ==, ===
-syntax match   typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 6: >>>=, >>>, >>=, >>, >=, >
-syntax match   typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 4: <<=, <<, <=, <
-syntax match   typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: ||, |=, |
-syntax match   typescriptBinaryOp contained /|\(|\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: &&, &=, &
-syntax match   typescriptBinaryOp contained /&\(&\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 2: *=, *
-syntax match   typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 2: %=, %
-syntax match   typescriptBinaryOp contained /%=\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 2: /=, /
-syntax match   typescriptBinaryOp contained +/\(=\|[^\*/]\@=\)+ nextgroup=@typescriptValue skipwhite skipempty
-syntax match   typescriptBinaryOp contained /!==\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 2: !=, !==
-syntax match   typescriptBinaryOp contained /+\(+\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: +, ++, +=
-syntax match   typescriptBinaryOp contained /-\(-\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
-" 3: -, --, -=
-
-" exponentiation operator
-" 2: **, **=
-syntax match typescriptBinaryOp contained /\*\*=\?/ nextgroup=@typescriptValue
-
-syntax cluster typescriptSymbols               contains=typescriptBinaryOp,typescriptKeywordOp,typescriptTernary,typescriptAssign,typescriptCastKeyword
-
-"" runtime syntax/basic/reserved.vim
-
-"runtime syntax/basic/keyword.vim
-"Import
-syntax keyword typescriptImport                from as import
-syntax keyword typescriptExport                export
-syntax keyword typescriptModule                namespace module
-
-"this
-
-"JavaScript Prototype
-syntax keyword typescriptPrototype             prototype
-  \ nextgroup=@afterIdentifier
-
-syntax keyword typescriptCastKeyword           as
-  \ nextgroup=@typescriptType
-  \ skipwhite
-
-"Program Keywords
-syntax keyword typescriptIdentifier            arguments this super
-  \ nextgroup=@afterIdentifier
-
-syntax keyword typescriptVariable              let var
-  \ nextgroup=typescriptVariableDeclaration
-  \ skipwhite skipempty skipnl
-
-syntax keyword typescriptVariable const
-  \ nextgroup=typescriptEnum,typescriptVariableDeclaration
-  \ skipwhite
-
-syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
-  \ nextgroup=typescriptTypeAnnotation,typescriptAssign
-  \ contained skipwhite skipempty skipnl
-
-syntax region typescriptEnum matchgroup=typescriptEnumKeyword start=/enum / end=/\ze{/
-  \ nextgroup=typescriptBlock
-  \ skipwhite
-
-syntax keyword typescriptKeywordOp
-  \ contained in instanceof nextgroup=@typescriptValue
-syntax keyword typescriptOperator              delete new typeof void
-  \ nextgroup=@typescriptValue
-  \ skipwhite skipempty
-
-syntax keyword typescriptForOperator           contained in of
-syntax keyword typescriptBoolean               true false nextgroup=@typescriptSymbols skipwhite skipempty
-syntax keyword typescriptNull                  null undefined nextgroup=@typescriptSymbols skipwhite skipempty
-syntax keyword typescriptMessage               alert confirm prompt status
-  \ nextgroup=typescriptDotNotation,typescriptFuncCallArg
-syntax keyword typescriptGlobal                self top parent
-  \ nextgroup=@afterIdentifier
-
-"Statement Keywords
-syntax keyword typescriptConditional           if else switch
-  \ nextgroup=typescriptConditionalParen
-  \ skipwhite skipempty skipnl
-syntax keyword typescriptConditionalElse       else
-syntax keyword typescriptRepeat                do while for nextgroup=typescriptLoopParen skipwhite skipempty
-syntax keyword typescriptRepeat                for nextgroup=typescriptLoopParen,typescriptAsyncFor skipwhite skipempty
-syntax keyword typescriptBranch                break continue containedin=typescriptBlock
-syntax keyword typescriptCase                  case nextgroup=@typescriptPrimitive skipwhite containedin=typescriptBlock
-syntax keyword typescriptDefault               default containedin=typescriptBlock nextgroup=@typescriptValue,typescriptClassKeyword,typescriptInterfaceKeyword skipwhite oneline
-syntax keyword typescriptStatementKeyword      with
-syntax keyword typescriptStatementKeyword      yield skipwhite nextgroup=@typescriptValue containedin=typescriptBlock
-syntax keyword typescriptStatementKeyword      return skipwhite contained nextgroup=@typescriptValue containedin=typescriptBlock
-
-syntax keyword typescriptTry                   try
-syntax keyword typescriptExceptions            catch throw finally
-syntax keyword typescriptDebugger              debugger
-
-syntax keyword typescriptAsyncFor              await nextgroup=typescriptLoopParen skipwhite skipempty contained
-
-syntax region  typescriptLoopParen             contained matchgroup=typescriptParens
-  \ start=/(/ end=/)/
-  \ contains=typescriptVariable,typescriptForOperator,typescriptEndColons,@typescriptValue,@typescriptComments
-  \ nextgroup=typescriptBlock
-  \ skipwhite skipempty
-syntax region  typescriptConditionalParen             contained matchgroup=typescriptParens
-  \ start=/(/ end=/)/
-  \ contains=@typescriptValue,@typescriptComments
-  \ nextgroup=typescriptBlock
-  \ skipwhite skipempty
-syntax match   typescriptEndColons             /[;,]/ contained
-
-syntax keyword typescriptAmbientDeclaration declare nextgroup=@typescriptAmbients
-  \ skipwhite skipempty
-
-syntax cluster typescriptAmbients contains=
-  \ typescriptVariable,
-  \ typescriptFuncKeyword,
-  \ typescriptClassKeyword,
-  \ typescriptAbstract,
-  \ typescriptEnumKeyword,typescriptEnum,
-  \ typescriptModule
-
-"runtime syntax/basic/doc.vim
-"Syntax coloring for Node.js shebang line
-syntax match   shellbang "^#!.*node\>"
-syntax match   shellbang "^#!.*iojs\>"
-
-
-"JavaScript comments
-syntax keyword typescriptCommentTodo TODO FIXME XXX TBD
-syntax match   typescriptLineComment "//.*"
-  \ contains=@Spell,typescriptCommentTodo,typescriptRef
-syntax region  typescriptComment
-  \ start="/\*"  end="\*/"
-  \ contains=@Spell,typescriptCommentTodo extend
-syntax cluster typescriptComments
-  \ contains=typescriptDocComment,typescriptComment,typescriptLineComment
-
-syntax match   typescriptRef  +///\s*<reference\s\+.*\/>$+
-  \ contains=typescriptString
-syntax match   typescriptRef  +///\s*<amd-dependency\s\+.*\/>$+
-  \ contains=typescriptString
-syntax match   typescriptRef  +///\s*<amd-module\s\+.*\/>$+
-  \ contains=typescriptString
-
-"JSDoc
-syntax case ignore
-
-syntax region  typescriptDocComment            matchgroup=typescriptComment
-  \ start="/\*\*"  end="\*/"
-  \ contains=typescriptDocNotation,typescriptCommentTodo,@Spell
-  \ fold keepend
-syntax match   typescriptDocNotation           contained /@/ nextgroup=typescriptDocTags
-
-syntax keyword typescriptDocTags               contained constant constructor constructs function ignore inner private public readonly static
-syntax keyword typescriptDocTags               contained const dict expose inheritDoc interface nosideeffects override protected struct internal
-syntax keyword typescriptDocTags               contained example global
-
-" syntax keyword typescriptDocTags               contained ngdoc nextgroup=typescriptDocNGDirective
-syntax keyword typescriptDocTags               contained ngdoc scope priority animations
-syntax keyword typescriptDocTags               contained ngdoc restrict methodOf propertyOf eventOf eventType nextgroup=typescriptDocParam skipwhite
-syntax keyword typescriptDocNGDirective        contained overview service object function method property event directive filter inputType error
-
-syntax keyword typescriptDocTags               contained abstract virtual access augments
-
-syntax keyword typescriptDocTags               contained arguments callback lends memberOf name type kind link mixes mixin tutorial nextgroup=typescriptDocParam skipwhite
-syntax keyword typescriptDocTags               contained variation nextgroup=typescriptDocNumParam skipwhite
-
-syntax keyword typescriptDocTags               contained author class classdesc copyright default defaultvalue nextgroup=typescriptDocDesc skipwhite
-syntax keyword typescriptDocTags               contained deprecated description external host nextgroup=typescriptDocDesc skipwhite
-syntax keyword typescriptDocTags               contained file fileOverview overview namespace requires since version nextgroup=typescriptDocDesc skipwhite
-syntax keyword typescriptDocTags               contained summary todo license preserve nextgroup=typescriptDocDesc skipwhite
-
-syntax keyword typescriptDocTags               contained borrows exports nextgroup=typescriptDocA skipwhite
-syntax keyword typescriptDocTags               contained param arg argument property prop module nextgroup=typescriptDocNamedParamType,typescriptDocParamName skipwhite
-syntax keyword typescriptDocTags               contained define enum extends implements this typedef nextgroup=typescriptDocParamType skipwhite
-syntax keyword typescriptDocTags               contained return returns throws exception nextgroup=typescriptDocParamType,typescriptDocParamName skipwhite
-syntax keyword typescriptDocTags               contained see nextgroup=typescriptDocRef skipwhite
-
-syntax keyword typescriptDocTags               contained function func method nextgroup=typescriptDocName skipwhite
-syntax match   typescriptDocName               contained /\h\w*/
-
-syntax keyword typescriptDocTags               contained fires event nextgroup=typescriptDocEventRef skipwhite
-syntax match   typescriptDocEventRef           contained /\h\w*#\(\h\w*\:\)\?\h\w*/
-
-syntax match   typescriptDocNamedParamType     contained /{.\+}/ nextgroup=typescriptDocParamName skipwhite
-syntax match   typescriptDocParamName          contained /\[\?0-9a-zA-Z_\.]\+\]\?/ nextgroup=typescriptDocDesc skipwhite
-syntax match   typescriptDocParamType          contained /{.\+}/ nextgroup=typescriptDocDesc skipwhite
-syntax match   typescriptDocA                  contained /\%(#\|\w\|\.\|:\|\/\)\+/ nextgroup=typescriptDocAs skipwhite
-syntax match   typescriptDocAs                 contained /\s*as\s*/ nextgroup=typescriptDocB skipwhite
-syntax match   typescriptDocB                  contained /\%(#\|\w\|\.\|:\|\/\)\+/
-syntax match   typescriptDocParam              contained /\%(#\|\w\|\.\|:\|\/\|-\)\+/
-syntax match   typescriptDocNumParam           contained /\d\+/
-syntax match   typescriptDocRef                contained /\%(#\|\w\|\.\|:\|\/\)\+/
-syntax region  typescriptDocLinkTag            contained matchgroup=typescriptDocLinkTag start=/{/ end=/}/ contains=typescriptDocTags
-
-syntax cluster typescriptDocs                  contains=typescriptDocParamType,typescriptDocNamedParamType,typescriptDocParam
-
-if main_syntax == "typescript"
-  syntax sync clear
-  syntax sync ccomment typescriptComment minlines=200
-endif
-
-syntax case match
-
-"runtime syntax/basic/type.vim
-" Types
-syntax match typescriptOptionalMark /?/ contained
-
-syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/
-  \ contains=typescriptTypeParameter
-  \ contained
-
-syntax match typescriptTypeParameter /\K\k*/
-  \ nextgroup=typescriptConstraint,typescriptGenericDefault
-  \ contained skipwhite skipnl
-
-syntax keyword typescriptConstraint extends
-  \ nextgroup=@typescriptType
-  \ contained skipwhite skipnl
-
-syntax match typescriptGenericDefault /=/
-  \ nextgroup=@typescriptType
-  \ contained skipwhite
-
-"><
-" class A extend B<T> {} // ClassBlock
-" func<T>() // FuncCallArg
-syntax region typescriptTypeArguments matchgroup=typescriptTypeBrackets
-  \ start=/\></ end=/>/
-  \ contains=@typescriptType
-  \ nextgroup=typescriptFuncCallArg,@typescriptTypeOperator
-  \ contained skipwhite
-
-
-syntax cluster typescriptType contains=
-  \ @typescriptPrimaryType,
-  \ typescriptUnion,
-  \ @typescriptFunctionType,
-  \ typescriptConstructorType
-
-" array type: A[]
-" type indexing A['key']
-syntax region typescriptTypeBracket contained
-  \ start=/\[/ end=/\]/
-  \ contains=typescriptString,typescriptNumber
-  \ nextgroup=@typescriptTypeOperator
-  \ skipwhite skipempty
-
-syntax cluster typescriptPrimaryType contains=
-  \ typescriptParenthesizedType,
-  \ typescriptPredefinedType,
-  \ typescriptTypeReference,
-  \ typescriptObjectType,
-  \ typescriptTupleType,
-  \ typescriptTypeQuery,
-  \ typescriptStringLiteralType,
-  \ typescriptReadonlyArrayKeyword
-
-syntax region  typescriptStringLiteralType contained
-  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/
-  \ nextgroup=typescriptUnion
-  \ skipwhite skipempty
-
-syntax region typescriptParenthesizedType matchgroup=typescriptParens
-  \ start=/(/ end=/)/
-  \ contains=@typescriptType
-  \ nextgroup=@typescriptTypeOperator
-  \ contained skipwhite skipempty fold
-
-syntax match typescriptTypeReference /\K\k*\(\.\K\k*\)*/
-  \ nextgroup=typescriptTypeArguments,@typescriptTypeOperator,typescriptUserDefinedType
-  \ skipwhite contained skipempty
-
-syntax keyword typescriptPredefinedType any number boolean string void never undefined null object unknown
-  \ nextgroup=@typescriptTypeOperator
-  \ contained skipwhite skipempty
-
-syntax match typescriptPredefinedType /unique symbol/
-  \ nextgroup=@typescriptTypeOperator
-  \ contained skipwhite skipempty
-
-syntax region typescriptObjectType matchgroup=typescriptBraces
-  \ start=/{/ end=/}/
-  \ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier
-  \ nextgroup=@typescriptTypeOperator
-  \ contained skipwhite fold
-
-syntax cluster typescriptTypeMember contains=
-  \ @typescriptCallSignature,
-  \ typescriptConstructSignature,
-  \ typescriptIndexSignature,
-  \ @typescriptMembers
-
-syntax region typescriptTupleType matchgroup=typescriptBraces
-  \ start=/\[/ end=/\]/
-  \ contains=@typescriptType
-  \ contained skipwhite oneline
-
-syntax cluster typescriptTypeOperator
-  \ contains=typescriptUnion,typescriptTypeBracket
-
-syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
-
-syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
-syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/
-  \ contains=typescriptTypeParameter
-  \ nextgroup=typescriptFuncType
-  \ containedin=typescriptFunctionType
-  \ contained skipwhite skipnl
-
-syntax region typescriptFuncType matchgroup=typescriptParens
-  \ start=/(/ end=/)\s*=>/me=e-2
-  \ contains=@typescriptParameterList
-  \ nextgroup=typescriptFuncTypeArrow
-  \ contained skipwhite skipnl oneline
-
-syntax match typescriptFuncTypeArrow /=>/
-  \ nextgroup=@typescriptType
-  \ containedin=typescriptFuncType
-  \ contained skipwhite skipnl
-
-
-syntax keyword typescriptConstructorType new
-  \ nextgroup=@typescriptFunctionType
-  \ contained skipwhite skipnl
-
-syntax keyword typescriptUserDefinedType is
-  \ contained nextgroup=@typescriptType skipwhite skipempty
-
-syntax keyword typescriptTypeQuery typeof keyof
-  \ nextgroup=typescriptTypeReference
-  \ contained skipwhite skipnl
-
-syntax cluster typescriptCallSignature contains=typescriptGenericCall,typescriptCall
-syntax region typescriptGenericCall matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/
-  \ contains=typescriptTypeParameter
-  \ nextgroup=typescriptCall
-  \ contained skipwhite skipnl
-syntax region typescriptCall matchgroup=typescriptParens
-  \ start=/(/ end=/)/
-  \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
-  \ nextgroup=typescriptTypeAnnotation,typescriptBlock
-  \ contained skipwhite skipnl
-
-syntax match typescriptTypeAnnotation /:/
-  \ nextgroup=@typescriptType
-  \ contained skipwhite skipnl
-
-syntax cluster typescriptParameterList contains=
-  \ typescriptTypeAnnotation,
-  \ typescriptAccessibilityModifier,
-  \ typescriptOptionalMark,
-  \ typescriptRestOrSpread,
-  \ typescriptFuncComma,
-  \ typescriptDefaultParam
-
-syntax match typescriptFuncComma /,/ contained
-
-syntax match typescriptDefaultParam /=/
-  \ nextgroup=@typescriptValue
-  \ contained skipwhite
-
-syntax keyword typescriptConstructSignature new
-  \ nextgroup=@typescriptCallSignature
-  \ contained skipwhite
-
-syntax region typescriptIndexSignature matchgroup=typescriptBraces
-  \ start=/\[/ end=/\]/
-  \ contains=typescriptPredefinedType,typescriptMappedIn,typescriptString
-  \ nextgroup=typescriptTypeAnnotation
-  \ contained skipwhite oneline
-
-syntax keyword typescriptMappedIn in
-  \ nextgroup=@typescriptType
-  \ contained skipwhite skipnl skipempty
-
-syntax keyword typescriptAliasKeyword type
-  \ nextgroup=typescriptAliasDeclaration
-  \ skipwhite skipnl skipempty
-
-syntax region typescriptAliasDeclaration matchgroup=typescriptUnion
-  \ start=/ / end=/=/
-  \ nextgroup=@typescriptType
-  \ contains=typescriptConstraint,typescriptTypeParameters
-  \ contained skipwhite skipempty
-
-syntax keyword typescriptReadonlyArrayKeyword readonly
-  \ nextgroup=@typescriptPrimaryType
-  \ skipwhite
-
-" extension
-if get(g:, 'yats_host_keyword', 1)
-  "runtime syntax/yats.vim
-  "runtime syntax/yats/typescript.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function Boolean
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Error EvalError
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName InternalError
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName RangeError ReferenceError
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName StopIteration
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName SyntaxError TypeError
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URIError Date
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float32Array
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float64Array
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int16Array Int32Array
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int8Array Uint16Array
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint32Array Uint8Array
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint8ClampedArray
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName ParallelArray
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName ArrayBuffer DataView
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Iterator Generator
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect Proxy
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName arguments
-  hi def link typescriptGlobal Structure
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName eval uneval nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isFinite nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isNaN parseFloat nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName parseInt nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURI nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURIComponent nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURI nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURIComponent nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptGlobalMethod
-  hi def link typescriptGlobalMethod Structure
-
-  "runtime syntax/yats/es6-number.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Number nextgroup=typescriptGlobalNumberDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalNumberDot /\./ contained nextgroup=typescriptNumberStaticProp,typescriptNumberStaticMethod,typescriptProp
-  syntax keyword typescriptNumberStaticProp contained EPSILON MAX_SAFE_INTEGER MAX_VALUE
-  syntax keyword typescriptNumberStaticProp contained MIN_SAFE_INTEGER MIN_VALUE NEGATIVE_INFINITY
-  syntax keyword typescriptNumberStaticProp contained NaN POSITIVE_INFINITY
-  hi def link typescriptNumberStaticProp Keyword
-  syntax keyword typescriptNumberStaticMethod contained isFinite isInteger isNaN isSafeInteger nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptNumberStaticMethod contained parseFloat parseInt nextgroup=typescriptFuncCallArg
-  hi def link typescriptNumberStaticMethod Keyword
-  syntax keyword typescriptNumberMethod contained toExponential toFixed toLocaleString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptNumberMethod contained toPrecision toSource toString valueOf nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptNumberMethod
-  hi def link typescriptNumberMethod Keyword
-
-  "runtime syntax/yats/es6-string.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName String nextgroup=typescriptGlobalStringDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalStringDot /\./ contained nextgroup=typescriptStringStaticMethod,typescriptProp
-  syntax keyword typescriptStringStaticMethod contained fromCharCode fromCodePoint raw nextgroup=typescriptFuncCallArg
-  hi def link typescriptStringStaticMethod Keyword
-  syntax keyword typescriptStringMethod contained anchor charAt charCodeAt codePointAt nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained concat endsWith includes indexOf lastIndexOf nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained link localeCompare match normalize nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained padStart padEnd repeat replace search nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained slice split startsWith substr substring nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained toLocaleLowerCase toLocaleUpperCase nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained toLowerCase toString toUpperCase trim nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptStringMethod contained valueOf nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptStringMethod
-  hi def link typescriptStringMethod Keyword
-
-  "runtime syntax/yats/es6-array.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Array nextgroup=typescriptGlobalArrayDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalArrayDot /\./ contained nextgroup=typescriptArrayStaticMethod,typescriptProp
-  syntax keyword typescriptArrayStaticMethod contained from isArray of nextgroup=typescriptFuncCallArg
-  hi def link typescriptArrayStaticMethod Keyword
-  syntax keyword typescriptArrayMethod contained concat copyWithin entries every fill nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptArrayMethod contained filter find findIndex forEach indexOf nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptArrayMethod contained includes join keys lastIndexOf map nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptArrayMethod contained pop push reduce reduceRight reverse nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptArrayMethod contained shift slice some sort splice toLocaleString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptArrayMethod contained toSource toString unshift nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptArrayMethod
-  hi def link typescriptArrayMethod Keyword
-
-  "runtime syntax/yats/es6-object.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Object nextgroup=typescriptGlobalObjectDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalObjectDot /\./ contained nextgroup=typescriptObjectStaticMethod,typescriptProp
-  syntax keyword typescriptObjectStaticMethod contained create defineProperties defineProperty nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectStaticMethod contained entries freeze getOwnPropertyDescriptors nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectStaticMethod contained getOwnPropertyDescriptor getOwnPropertyNames nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectStaticMethod contained getOwnPropertySymbols getPrototypeOf nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectStaticMethod contained is isExtensible isFrozen isSealed nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectStaticMethod contained keys preventExtensions values nextgroup=typescriptFuncCallArg
-  hi def link typescriptObjectStaticMethod Keyword
-  syntax keyword typescriptObjectMethod contained getOwnPropertyDescriptors hasOwnProperty nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectMethod contained isPrototypeOf propertyIsEnumerable nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectMethod contained toLocaleString toString valueOf seal nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptObjectMethod contained setPrototypeOf nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptObjectMethod
-  hi def link typescriptObjectMethod Keyword
-
-  "runtime syntax/yats/es6-symbol.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Symbol nextgroup=typescriptGlobalSymbolDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalSymbolDot /\./ contained nextgroup=typescriptSymbolStaticProp,typescriptSymbolStaticMethod,typescriptProp
-  syntax keyword typescriptSymbolStaticProp contained length iterator match replace
-  syntax keyword typescriptSymbolStaticProp contained search split hasInstance isConcatSpreadable
-  syntax keyword typescriptSymbolStaticProp contained unscopables species toPrimitive
-  syntax keyword typescriptSymbolStaticProp contained toStringTag
-  hi def link typescriptSymbolStaticProp Keyword
-  syntax keyword typescriptSymbolStaticMethod contained for keyFor nextgroup=typescriptFuncCallArg
-  hi def link typescriptSymbolStaticMethod Keyword
-
-  "runtime syntax/yats/es6-function.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function
-  syntax keyword typescriptFunctionMethod contained apply bind call nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptFunctionMethod
-  hi def link typescriptFunctionMethod Keyword
-
-  "runtime syntax/yats/es6-math.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Math nextgroup=typescriptGlobalMathDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalMathDot /\./ contained nextgroup=typescriptMathStaticProp,typescriptMathStaticMethod,typescriptProp
-  syntax keyword typescriptMathStaticProp contained E LN10 LN2 LOG10E LOG2E PI SQRT1_2
-  syntax keyword typescriptMathStaticProp contained SQRT2
-  hi def link typescriptMathStaticProp Keyword
-  syntax keyword typescriptMathStaticMethod contained abs acos acosh asin asinh atan nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptMathStaticMethod contained atan2 atanh cbrt ceil clz32 cos nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptMathStaticMethod contained cosh exp expm1 floor fround hypot nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptMathStaticMethod contained imul log log10 log1p log2 max nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptMathStaticMethod contained min pow random round sign sin nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptMathStaticMethod contained sinh sqrt tan tanh trunc nextgroup=typescriptFuncCallArg
-  hi def link typescriptMathStaticMethod Keyword
-
-  "runtime syntax/yats/es6-date.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Date nextgroup=typescriptGlobalDateDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalDateDot /\./ contained nextgroup=typescriptDateStaticMethod,typescriptProp
-  syntax keyword typescriptDateStaticMethod contained UTC now parse nextgroup=typescriptFuncCallArg
-  hi def link typescriptDateStaticMethod Keyword
-  syntax keyword typescriptDateMethod contained getDate getDay getFullYear getHours nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained getMilliseconds getMinutes getMonth nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained getSeconds getTime getTimezoneOffset nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained getUTCDate getUTCDay getUTCFullYear nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained getUTCHours getUTCMilliseconds getUTCMinutes nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained getUTCMonth getUTCSeconds setDate setFullYear nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained setHours setMilliseconds setMinutes nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained setMonth setSeconds setTime setUTCDate nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained setUTCFullYear setUTCHours setUTCMilliseconds nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained setUTCMinutes setUTCMonth setUTCSeconds nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained toDateString toISOString toJSON toLocaleDateString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained toLocaleFormat toLocaleString toLocaleTimeString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained toSource toString toTimeString toUTCString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDateMethod contained valueOf nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptDateMethod
-  hi def link typescriptDateMethod Keyword
-
-  "runtime syntax/yats/es6-json.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName JSON nextgroup=typescriptGlobalJSONDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalJSONDot /\./ contained nextgroup=typescriptJSONStaticMethod,typescriptProp
-  syntax keyword typescriptJSONStaticMethod contained parse stringify nextgroup=typescriptFuncCallArg
-  hi def link typescriptJSONStaticMethod Keyword
-
-  "runtime syntax/yats/es6-regexp.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName RegExp nextgroup=typescriptGlobalRegExpDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalRegExpDot /\./ contained nextgroup=typescriptRegExpStaticProp,typescriptProp
-  syntax keyword typescriptRegExpStaticProp contained lastIndex
-  hi def link typescriptRegExpStaticProp Keyword
-  syntax keyword typescriptRegExpProp contained global ignoreCase multiline source sticky
-  syntax cluster props add=typescriptRegExpProp
-  hi def link typescriptRegExpProp Keyword
-  syntax keyword typescriptRegExpMethod contained exec test nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptRegExpMethod
-  hi def link typescriptRegExpMethod Keyword
-
-  "runtime syntax/yats/es6-map.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Map WeakMap
-  syntax keyword typescriptES6MapProp contained size
-  syntax cluster props add=typescriptES6MapProp
-  hi def link typescriptES6MapProp Keyword
-  syntax keyword typescriptES6MapMethod contained clear delete entries forEach get has nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptES6MapMethod contained keys set values nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptES6MapMethod
-  hi def link typescriptES6MapMethod Keyword
-
-  "runtime syntax/yats/es6-set.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Set WeakSet
-  syntax keyword typescriptES6SetProp contained size
-  syntax cluster props add=typescriptES6SetProp
-  hi def link typescriptES6SetProp Keyword
-  syntax keyword typescriptES6SetMethod contained add clear delete entries forEach has nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptES6SetMethod contained values nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptES6SetMethod
-  hi def link typescriptES6SetMethod Keyword
-
-  "runtime syntax/yats/es6-proxy.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Proxy
-  syntax keyword typescriptProxyAPI contained getOwnPropertyDescriptor getOwnPropertyNames
-  syntax keyword typescriptProxyAPI contained defineProperty deleteProperty freeze seal
-  syntax keyword typescriptProxyAPI contained preventExtensions has hasOwn get set enumerate
-  syntax keyword typescriptProxyAPI contained iterate ownKeys apply construct
-  hi def link typescriptProxyAPI Keyword
-
-  "runtime syntax/yats/es6-promise.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Promise nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalPromiseDot /\./ contained nextgroup=typescriptPromiseStaticMethod,typescriptProp
-  syntax keyword typescriptPromiseStaticMethod contained resolve reject all race nextgroup=typescriptFuncCallArg
-  hi def link typescriptPromiseStaticMethod Keyword
-  syntax keyword typescriptPromiseMethod contained then catch finally nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptPromiseMethod
-  hi def link typescriptPromiseMethod Keyword
-
-  "runtime syntax/yats/es6-reflect.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect
-  syntax keyword typescriptReflectMethod contained apply construct defineProperty deleteProperty nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptReflectMethod contained enumerate get getOwnPropertyDescriptor nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptReflectMethod contained getPrototypeOf has isExtensible ownKeys nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptReflectMethod contained preventExtensions set setPrototypeOf nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptReflectMethod
-  hi def link typescriptReflectMethod Keyword
-
-  "runtime syntax/yats/ecma-402.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Intl
-  syntax keyword typescriptIntlMethod contained Collator DateTimeFormat NumberFormat nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptIntlMethod contained PluralRules nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptIntlMethod
-  hi def link typescriptIntlMethod Keyword
-
-  "runtime syntax/yats/node.vim
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName global process
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName console Buffer
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName module exports
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setTimeout
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearTimeout
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setInterval
-  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearInterval
-  hi def link typescriptNodeGlobal Structure
-
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName describe it test
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName before after
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeEach afterEach
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeAll afterAll
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName expect assert
-
-  "runtime syntax/yats/web.vim
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName App Apps ArrayBuffer
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ArrayBufferView
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Attr AudioBuffer
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioBufferSourceNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioContext AudioDestinationNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioListener AudioNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioParam BatteryManager
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName BiquadFilterNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName BlobEvent BluetoothAdapter
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothDevice
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothManager
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraCapabilities
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraControl CameraManager
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasGradient CanvasImageSource
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasPattern CanvasRenderingContext2D
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CaretPosition CDATASection
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelMergerNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelSplitterNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CharacterData ChildNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChromeWorker Comment
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Connection Console
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ContactManager Contacts
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ConvolverNode Coordinates
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSS CSSConditionRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSGroupingRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframeRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframesRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSMediaRule CSSNamespaceRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSPageRule CSSRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSRuleList CSSStyleDeclaration
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSStyleRule CSSStyleSheet
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSSupportsRule
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DataTransfer DataView
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DedicatedWorkerGlobalScope
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DelayNode DeviceAcceleration
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceRotationRate
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceStorage DirectoryEntry
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryEntrySync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReader
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReaderSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Document DocumentFragment
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DocumentTouch DocumentType
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMCursor DOMError
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMException DOMHighResTimeStamp
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementation
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementationRegistry
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMParser DOMRequest
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMString DOMStringList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMStringMap DOMTimeStamp
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMTokenList DynamicsCompressorNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Element Entry EntrySync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Extensions FileException
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Float32Array Float64Array
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName FMRadio FormData
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName GainNode Gamepad
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName GamepadButton Geolocation
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName History HTMLAnchorElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAreaElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAudioElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBaseElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBodyElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBRElement HTMLButtonElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCanvasElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCollection HTMLDataElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDataListElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDivElement HTMLDListElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDocument HTMLElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLEmbedElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFieldSetElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormControlsCollection
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadingElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHRElement HTMLHtmlElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLIFrameElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLImageElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLInputElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLKeygenElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLabelElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLegendElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLIElement HTMLLinkElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMapElement HTMLMediaElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMetaElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMeterElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLModElement HTMLObjectElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOListElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptGroupElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionsCollection
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOutputElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParagraphElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParamElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLPreElement HTMLProgressElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLQuoteElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLScriptElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSelectElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSourceElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSpanElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLStyleElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCaptionElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCellElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableColElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableDataCellElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableHeaderCellElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableRowElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableSectionElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTextAreaElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTimeElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTitleElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTrackElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUListElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUnknownElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLVideoElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursor IDBCursorSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursorWithValue
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBDatabase IDBDatabaseSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBEnvironment IDBEnvironmentSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBFactory IDBFactorySync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBIndex IDBIndexSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBKeyRange IDBObjectStore
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBObjectStoreSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBOpenDBRequest
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBRequest IDBTransaction
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBTransactionSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBVersionChangeEvent
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ImageData IndexedDB
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Int16Array Int32Array
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Int8Array L10n LinkStyle
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystem
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystemSync
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Location LockedFile
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaQueryList MediaQueryListListener
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaRecorder MediaSource
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaStream MediaStreamTrack
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName MutationObserver
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Navigator NavigatorGeolocation
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorID NavigatorLanguage
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorOnLine
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorPlugins
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Node NodeFilter
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName NodeIterator NodeList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Notification OfflineAudioContext
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName OscillatorNode PannerNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ParentNode Performance
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceNavigation
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceTiming
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Permissions PermissionSettings
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Plugin PluginArray
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Position PositionError
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PositionOptions
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PowerManager ProcessingInstruction
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PromiseResolver
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName PushManager Range
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCConfiguration
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnection
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnectionErrorCallback
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescription
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescriptionCallback
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ScriptProcessorNode
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Selection SettingsLock
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SettingsManager
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SharedWorker StyleSheet
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName StyleSheetList SVGAElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAngle SVGAnimateColorElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedAngle
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedBoolean
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedEnumeration
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedInteger
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLength
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLengthList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumber
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumberList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPoints
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPreserveAspectRatio
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedRect
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedString
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedTransformList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateMotionElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateTransformElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimationElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCircleElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGClipPathElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCursorElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGDefsElement SVGDescElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGElement SVGEllipseElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFilterElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontElement SVGFontFaceElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceFormatElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceNameElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceSrcElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceUriElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGForeignObjectElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGElement SVGGlyphElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGradientElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGHKernElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGImageElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLength SVGLengthList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLinearGradientElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLineElement SVGMaskElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMatrix SVGMissingGlyphElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMPathElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGNumber SVGNumberList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPathElement SVGPatternElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPoint SVGPolygonElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPolylineElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPreserveAspectRatio
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRadialGradientElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRect SVGRectElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGScriptElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSetElement SVGStopElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStringList SVGStylable
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStyleElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSVGElement SVGSwitchElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSymbolElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTests SVGTextElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTextPositioningElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTitleElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransform SVGTransformable
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransformList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTRefElement SVGTSpanElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGUseElement SVGViewElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGVKernElement
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPServerSocket
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPSocket Telephony
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName TelephonyCall Text
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName TextDecoder TextEncoder
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName TextMetrics TimeRanges
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Touch TouchList
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Transferable TreeWalker
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint16Array Uint32Array
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint8Array Uint8ClampedArray
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName URLSearchParams
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName URLUtilsReadOnly
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName UserProximityEvent
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName ValidityState VideoPlaybackQuality
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName WaveShaperNode WebBluetooth
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebGLRenderingContext
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebSMS WebSocket
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebVTT WifiManager
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName Window Worker WorkerConsole
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName WorkerLocation WorkerNavigator
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName XDomainRequest XMLDocument
-  syntax keyword typescriptBOM containedin=typescriptIdentifierName XMLHttpRequestEventTarget
-  hi def link typescriptBOM Structure
 
-  "runtime syntax/yats/web-window.vim
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName applicationCache
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName closed
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName Components
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName controllers
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName dialogArguments
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName document
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frameElement
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frames
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName fullScreen
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName history
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerHeight
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerWidth
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName length
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName location
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName locationbar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName menubar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName messageManager
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName name navigator
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName opener
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerHeight
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerWidth
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageXOffset
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageYOffset
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName parent
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName performance
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName personalbar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName returnValue
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screen
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenX
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenY
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollbars
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxX
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxY
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollX
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollY
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName self sidebar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName status
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName statusbar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName toolbar
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName top visualViewport
-  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName window
-  syntax cluster props add=typescriptBOMWindowProp
-  hi def link typescriptBOMWindowProp Structure
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName alert nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName atob nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName blur nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName btoa nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearImmediate nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearInterval nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearTimeout nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName close nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName confirm nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName dispatchEvent nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName find nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName focus nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttention nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttentionWithCycleCount nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getComputedStyle nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getDefaulComputedStyle nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getSelection nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName matchMedia nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName maximize nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveBy nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveTo nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName open nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName openDialog nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName postMessage nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName print nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName prompt nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName removeEventListener nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeBy nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeTo nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName restore nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scroll nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollBy nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByLines nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByPages nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollTo nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setCursor nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setImmediate nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setInterval nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setResizable nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setTimeout nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName showModalDialog nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName sizeToContent nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName stop nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName updateCommands nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptBOMWindowMethod
-  hi def link typescriptBOMWindowMethod Structure
-  syntax keyword typescriptBOMWindowEvent contained onabort onbeforeunload onblur onchange
-  syntax keyword typescriptBOMWindowEvent contained onclick onclose oncontextmenu ondevicelight
-  syntax keyword typescriptBOMWindowEvent contained ondevicemotion ondeviceorientation
-  syntax keyword typescriptBOMWindowEvent contained ondeviceproximity ondragdrop onerror
-  syntax keyword typescriptBOMWindowEvent contained onfocus onhashchange onkeydown onkeypress
-  syntax keyword typescriptBOMWindowEvent contained onkeyup onload onmousedown onmousemove
-  syntax keyword typescriptBOMWindowEvent contained onmouseout onmouseover onmouseup
-  syntax keyword typescriptBOMWindowEvent contained onmozbeforepaint onpaint onpopstate
-  syntax keyword typescriptBOMWindowEvent contained onreset onresize onscroll onselect
-  syntax keyword typescriptBOMWindowEvent contained onsubmit onunload onuserproximity
-  syntax keyword typescriptBOMWindowEvent contained onpageshow onpagehide
-  hi def link typescriptBOMWindowEvent Keyword
-  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName DOMParser
-  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName QueryInterface
-  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName XMLSerializer
-  hi def link typescriptBOMWindowCons Structure
-
-  "runtime syntax/yats/web-navigator.vim
-  syntax keyword typescriptBOMNavigatorProp contained battery buildID connection cookieEnabled
-  syntax keyword typescriptBOMNavigatorProp contained doNotTrack maxTouchPoints oscpu
-  syntax keyword typescriptBOMNavigatorProp contained productSub push serviceWorker
-  syntax keyword typescriptBOMNavigatorProp contained vendor vendorSub
-  syntax cluster props add=typescriptBOMNavigatorProp
-  hi def link typescriptBOMNavigatorProp Keyword
-  syntax keyword typescriptBOMNavigatorMethod contained addIdleObserver geolocation nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMNavigatorMethod contained getDeviceStorage getDeviceStorages nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMNavigatorMethod contained getGamepads getUserMedia registerContentHandler nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMNavigatorMethod contained removeIdleObserver requestWakeLock nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMNavigatorMethod contained share vibrate watch registerProtocolHandler nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptBOMNavigatorMethod contained sendBeacon nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptBOMNavigatorMethod
-  hi def link typescriptBOMNavigatorMethod Keyword
-  syntax keyword typescriptServiceWorkerMethod contained register nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptServiceWorkerMethod
-  hi def link typescriptServiceWorkerMethod Keyword
-
-  "runtime syntax/yats/web-location.vim
-  syntax keyword typescriptBOMLocationProp contained href protocol host hostname port
-  syntax keyword typescriptBOMLocationProp contained pathname search hash username password
-  syntax keyword typescriptBOMLocationProp contained origin
-  syntax cluster props add=typescriptBOMLocationProp
-  hi def link typescriptBOMLocationProp Keyword
-  syntax keyword typescriptBOMLocationMethod contained assign reload replace toString nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptBOMLocationMethod
-  hi def link typescriptBOMLocationMethod Keyword
-
-  "runtime syntax/yats/web-history.vim
-  syntax keyword typescriptBOMHistoryProp contained length current next previous state
-  syntax keyword typescriptBOMHistoryProp contained scrollRestoration
-  syntax cluster props add=typescriptBOMHistoryProp
-  hi def link typescriptBOMHistoryProp Keyword
-  syntax keyword typescriptBOMHistoryMethod contained back forward go pushState replaceState nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptBOMHistoryMethod
-  hi def link typescriptBOMHistoryMethod Keyword
-
-  "runtime syntax/yats/web-console.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName console
-  syntax keyword typescriptConsoleMethod contained count dir error group groupCollapsed nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptConsoleMethod contained groupEnd info log time timeEnd trace nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptConsoleMethod contained warn nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptConsoleMethod
-  hi def link typescriptConsoleMethod Keyword
-
-  "runtime syntax/yats/web-xhr.vim
-  syntax keyword typescriptXHRGlobal containedin=typescriptIdentifierName XMLHttpRequest
-  hi def link typescriptXHRGlobal Structure
-  syntax keyword typescriptXHRProp contained onreadystatechange readyState response
-  syntax keyword typescriptXHRProp contained responseText responseType responseXML status
-  syntax keyword typescriptXHRProp contained statusText timeout ontimeout upload withCredentials
-  syntax cluster props add=typescriptXHRProp
-  hi def link typescriptXHRProp Keyword
-  syntax keyword typescriptXHRMethod contained abort getAllResponseHeaders getResponseHeader nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptXHRMethod contained open overrideMimeType send setRequestHeader nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptXHRMethod
-  hi def link typescriptXHRMethod Keyword
-
-  "runtime syntax/yats/web-blob.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Blob BlobBuilder
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName File FileReader
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName FileReaderSync
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URL nextgroup=typescriptGlobalURLDot,typescriptFuncCallArg
-  syntax match   typescriptGlobalURLDot /\./ contained nextgroup=typescriptURLStaticMethod,typescriptProp
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URLUtils
-  syntax keyword typescriptFileMethod contained readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptFileMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptFileMethod
-  hi def link typescriptFileMethod Keyword
-  syntax keyword typescriptFileReaderProp contained error readyState result
-  syntax cluster props add=typescriptFileReaderProp
-  hi def link typescriptFileReaderProp Keyword
-  syntax keyword typescriptFileReaderMethod contained abort readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptFileReaderMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptFileReaderMethod
-  hi def link typescriptFileReaderMethod Keyword
-  syntax keyword typescriptFileListMethod contained item nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptFileListMethod
-  hi def link typescriptFileListMethod Keyword
-  syntax keyword typescriptBlobMethod contained append getBlob getFile nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptBlobMethod
-  hi def link typescriptBlobMethod Keyword
-  syntax keyword typescriptURLUtilsProp contained hash host hostname href origin password
-  syntax keyword typescriptURLUtilsProp contained pathname port protocol search searchParams
-  syntax keyword typescriptURLUtilsProp contained username
-  syntax cluster props add=typescriptURLUtilsProp
-  hi def link typescriptURLUtilsProp Keyword
-  syntax keyword typescriptURLStaticMethod contained createObjectURL revokeObjectURL nextgroup=typescriptFuncCallArg
-  hi def link typescriptURLStaticMethod Keyword
-
-  "runtime syntax/yats/web-crypto.vim
-  syntax keyword typescriptCryptoGlobal containedin=typescriptIdentifierName crypto
-  hi def link typescriptCryptoGlobal Structure
-  syntax keyword typescriptSubtleCryptoMethod contained encrypt decrypt sign verify nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptSubtleCryptoMethod contained digest nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptSubtleCryptoMethod
-  hi def link typescriptSubtleCryptoMethod Keyword
-  syntax keyword typescriptCryptoProp contained subtle
-  syntax cluster props add=typescriptCryptoProp
-  hi def link typescriptCryptoProp Keyword
-  syntax keyword typescriptCryptoMethod contained getRandomValues nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptCryptoMethod
-  hi def link typescriptCryptoMethod Keyword
-
-  "runtime syntax/yats/web-fetch.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Headers Request
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Response
-  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName fetch nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptGlobalMethod
-  hi def link typescriptGlobalMethod Structure
-  syntax keyword typescriptHeadersMethod contained append delete get getAll has set nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptHeadersMethod
-  hi def link typescriptHeadersMethod Keyword
-  syntax keyword typescriptRequestProp contained method url headers context referrer
-  syntax keyword typescriptRequestProp contained mode credentials cache
-  syntax cluster props add=typescriptRequestProp
-  hi def link typescriptRequestProp Keyword
-  syntax keyword typescriptRequestMethod contained clone nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptRequestMethod
-  hi def link typescriptRequestMethod Keyword
-  syntax keyword typescriptResponseProp contained type url status statusText headers
-  syntax keyword typescriptResponseProp contained redirected
-  syntax cluster props add=typescriptResponseProp
-  hi def link typescriptResponseProp Keyword
-  syntax keyword typescriptResponseMethod contained clone nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptResponseMethod
-  hi def link typescriptResponseMethod Keyword
-
-  "runtime syntax/yats/web-service-worker.vim
-  syntax keyword typescriptServiceWorkerProp contained controller ready
-  syntax cluster props add=typescriptServiceWorkerProp
-  hi def link typescriptServiceWorkerProp Keyword
-  syntax keyword typescriptServiceWorkerMethod contained register getRegistration nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptServiceWorkerMethod
-  hi def link typescriptServiceWorkerMethod Keyword
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Cache
-  syntax keyword typescriptCacheMethod contained match matchAll add addAll put delete nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptCacheMethod contained keys nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptCacheMethod
-  hi def link typescriptCacheMethod Keyword
-
-  "runtime syntax/yats/web-encoding.vim
-  syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextEncoder
-  syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextDecoder
-  hi def link typescriptEncodingGlobal Structure
-  syntax keyword typescriptEncodingProp contained encoding fatal ignoreBOM
-  syntax cluster props add=typescriptEncodingProp
-  hi def link typescriptEncodingProp Keyword
-  syntax keyword typescriptEncodingMethod contained encode decode nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptEncodingMethod
-  hi def link typescriptEncodingMethod Keyword
-
-  "runtime syntax/yats/web-geo.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Geolocation
-  syntax keyword typescriptGeolocationMethod contained getCurrentPosition watchPosition nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptGeolocationMethod contained clearWatch nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptGeolocationMethod
-  hi def link typescriptGeolocationMethod Keyword
-
-  "runtime syntax/yats/web-network.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName NetworkInformation
-  syntax keyword typescriptBOMNetworkProp contained downlink downlinkMax effectiveType
-  syntax keyword typescriptBOMNetworkProp contained rtt type
-  syntax cluster props add=typescriptBOMNetworkProp
-  hi def link typescriptBOMNetworkProp Keyword
-
-  "runtime syntax/yats/web-payment.vim
-  syntax keyword typescriptGlobal containedin=typescriptIdentifierName PaymentRequest
-  syntax keyword typescriptPaymentMethod contained show abort canMakePayment nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptPaymentMethod
-  hi def link typescriptPaymentMethod Keyword
-  syntax keyword typescriptPaymentProp contained shippingAddress shippingOption result
-  syntax cluster props add=typescriptPaymentProp
-  hi def link typescriptPaymentProp Keyword
-  syntax keyword typescriptPaymentEvent contained onshippingaddresschange onshippingoptionchange
-  hi def link typescriptPaymentEvent Keyword
-  syntax keyword typescriptPaymentResponseMethod contained complete nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptPaymentResponseMethod
-  hi def link typescriptPaymentResponseMethod Keyword
-  syntax keyword typescriptPaymentResponseProp contained details methodName payerEmail
-  syntax keyword typescriptPaymentResponseProp contained payerPhone shippingAddress
-  syntax keyword typescriptPaymentResponseProp contained shippingOption
-  syntax cluster props add=typescriptPaymentResponseProp
-  hi def link typescriptPaymentResponseProp Keyword
-  syntax keyword typescriptPaymentAddressProp contained addressLine careOf city country
-  syntax keyword typescriptPaymentAddressProp contained country dependentLocality languageCode
-  syntax keyword typescriptPaymentAddressProp contained organization phone postalCode
-  syntax keyword typescriptPaymentAddressProp contained recipient region sortingCode
-  syntax cluster props add=typescriptPaymentAddressProp
-  hi def link typescriptPaymentAddressProp Keyword
-  syntax keyword typescriptPaymentShippingOptionProp contained id label amount selected
-  syntax cluster props add=typescriptPaymentShippingOptionProp
-  hi def link typescriptPaymentShippingOptionProp Keyword
-
-  "runtime syntax/yats/dom-node.vim
-  syntax keyword typescriptDOMNodeProp contained attributes baseURI baseURIObject childNodes
-  syntax keyword typescriptDOMNodeProp contained firstChild lastChild localName namespaceURI
-  syntax keyword typescriptDOMNodeProp contained nextSibling nodeName nodePrincipal
-  syntax keyword typescriptDOMNodeProp contained nodeType nodeValue ownerDocument parentElement
-  syntax keyword typescriptDOMNodeProp contained parentNode prefix previousSibling textContent
-  syntax cluster props add=typescriptDOMNodeProp
-  hi def link typescriptDOMNodeProp Keyword
-  syntax keyword typescriptDOMNodeMethod contained appendChild cloneNode compareDocumentPosition nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMNodeMethod contained getUserData hasAttributes hasChildNodes nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMNodeMethod contained insertBefore isDefaultNamespace isEqualNode nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMNodeMethod contained isSameNode isSupported lookupNamespaceURI nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMNodeMethod contained lookupPrefix normalize removeChild nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMNodeMethod contained replaceChild setUserData nextgroup=typescriptFuncCallArg
-  syntax match typescriptDOMNodeMethod contained /contains/
-  syntax cluster props add=typescriptDOMNodeMethod
-  hi def link typescriptDOMNodeMethod Keyword
-  syntax keyword typescriptDOMNodeType contained ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE
-  syntax keyword typescriptDOMNodeType contained CDATA_SECTION_NODEN_NODE ENTITY_REFERENCE_NODE
-  syntax keyword typescriptDOMNodeType contained ENTITY_NODE PROCESSING_INSTRUCTION_NODEN_NODE
-  syntax keyword typescriptDOMNodeType contained COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE
-  syntax keyword typescriptDOMNodeType contained DOCUMENT_FRAGMENT_NODE NOTATION_NODE
-  hi def link typescriptDOMNodeType Keyword
-
-  "runtime syntax/yats/dom-elem.vim
-  syntax keyword typescriptDOMElemAttrs contained accessKey clientHeight clientLeft
-  syntax keyword typescriptDOMElemAttrs contained clientTop clientWidth id innerHTML
-  syntax keyword typescriptDOMElemAttrs contained length onafterscriptexecute onbeforescriptexecute
-  syntax keyword typescriptDOMElemAttrs contained oncopy oncut onpaste onwheel scrollHeight
-  syntax keyword typescriptDOMElemAttrs contained scrollLeft scrollTop scrollWidth tagName
-  syntax keyword typescriptDOMElemAttrs contained classList className name outerHTML
-  syntax keyword typescriptDOMElemAttrs contained style
-  hi def link typescriptDOMElemAttrs Keyword
-  syntax keyword typescriptDOMElemFuncs contained getAttributeNS getAttributeNode getAttributeNodeNS
-  syntax keyword typescriptDOMElemFuncs contained getBoundingClientRect getClientRects
-  syntax keyword typescriptDOMElemFuncs contained getElementsByClassName getElementsByTagName
-  syntax keyword typescriptDOMElemFuncs contained getElementsByTagNameNS hasAttribute
-  syntax keyword typescriptDOMElemFuncs contained hasAttributeNS insertAdjacentHTML
-  syntax keyword typescriptDOMElemFuncs contained matches querySelector querySelectorAll
-  syntax keyword typescriptDOMElemFuncs contained removeAttribute removeAttributeNS
-  syntax keyword typescriptDOMElemFuncs contained removeAttributeNode requestFullscreen
-  syntax keyword typescriptDOMElemFuncs contained requestPointerLock scrollIntoView
-  syntax keyword typescriptDOMElemFuncs contained setAttribute setAttributeNS setAttributeNode
-  syntax keyword typescriptDOMElemFuncs contained setAttributeNodeNS setCapture supports
-  syntax keyword typescriptDOMElemFuncs contained getAttribute
-  hi def link typescriptDOMElemFuncs Keyword
-
-  "runtime syntax/yats/dom-document.vim
-  syntax keyword typescriptDOMDocProp contained activeElement body cookie defaultView
-  syntax keyword typescriptDOMDocProp contained designMode dir domain embeds forms head
-  syntax keyword typescriptDOMDocProp contained images lastModified links location plugins
-  syntax keyword typescriptDOMDocProp contained postMessage readyState referrer registerElement
-  syntax keyword typescriptDOMDocProp contained scripts styleSheets title vlinkColor
-  syntax keyword typescriptDOMDocProp contained xmlEncoding characterSet compatMode
-  syntax keyword typescriptDOMDocProp contained contentType currentScript doctype documentElement
-  syntax keyword typescriptDOMDocProp contained documentURI documentURIObject firstChild
-  syntax keyword typescriptDOMDocProp contained implementation lastStyleSheetSet namespaceURI
-  syntax keyword typescriptDOMDocProp contained nodePrincipal ononline pointerLockElement
-  syntax keyword typescriptDOMDocProp contained popupNode preferredStyleSheetSet selectedStyleSheetSet
-  syntax keyword typescriptDOMDocProp contained styleSheetSets textContent tooltipNode
-  syntax cluster props add=typescriptDOMDocProp
-  hi def link typescriptDOMDocProp Keyword
-  syntax keyword typescriptDOMDocMethod contained caretPositionFromPoint close createNodeIterator nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained createRange createTreeWalker elementFromPoint nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained getElementsByName adoptNode createAttribute nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained createCDATASection createComment createDocumentFragment nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained createElement createElementNS createEvent nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained createExpression createNSResolver nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained createProcessingInstruction createTextNode nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained enableStyleSheetsForSet evaluate execCommand nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained exitPointerLock getBoxObjectFor getElementById nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained getElementsByClassName getElementsByTagName nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained getElementsByTagNameNS getSelection nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained hasFocus importNode loadOverlay open nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained queryCommandSupported querySelector nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMDocMethod contained querySelectorAll write writeln nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptDOMDocMethod
-  hi def link typescriptDOMDocMethod Keyword
-
-  "runtime syntax/yats/dom-event.vim
-  syntax keyword typescriptDOMEventTargetMethod contained addEventListener removeEventListener nextgroup=typescriptEventFuncCallArg
-  syntax keyword typescriptDOMEventTargetMethod contained dispatchEvent waitUntil nextgroup=typescriptEventFuncCallArg
-  syntax cluster props add=typescriptDOMEventTargetMethod
-  hi def link typescriptDOMEventTargetMethod Keyword
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AnimationEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AudioProcessingEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeInputEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeUnloadEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BlobEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ClipboardEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CloseEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CompositionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CSSFontFaceLoadEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CustomEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceLightEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceMotionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceOrientationEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceProximityEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DOMTransactionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DragEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName EditingBeforeInputEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ErrorEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName FocusEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName GamepadEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName HashChangeEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName IDBVersionChangeEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName KeyboardEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MediaStreamEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MessageEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MouseEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MutationEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName OfflineAudioCompletionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PageTransitionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PointerEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PopStateEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ProgressEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RelatedEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RTCPeerConnectionIceEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SensorEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName StorageEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGZoomEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TimeEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TouchEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TrackEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TransitionEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UIEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UserProximityEvent
-  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName WheelEvent
-  hi def link typescriptDOMEventCons Structure
-  syntax keyword typescriptDOMEventProp contained bubbles cancelable currentTarget defaultPrevented
-  syntax keyword typescriptDOMEventProp contained eventPhase target timeStamp type isTrusted
-  syntax keyword typescriptDOMEventProp contained isReload
-  syntax cluster props add=typescriptDOMEventProp
-  hi def link typescriptDOMEventProp Keyword
-  syntax keyword typescriptDOMEventMethod contained initEvent preventDefault stopImmediatePropagation nextgroup=typescriptEventFuncCallArg
-  syntax keyword typescriptDOMEventMethod contained stopPropagation respondWith default nextgroup=typescriptEventFuncCallArg
-  syntax cluster props add=typescriptDOMEventMethod
-  hi def link typescriptDOMEventMethod Keyword
-
-  "runtime syntax/yats/dom-storage.vim
-  syntax keyword typescriptDOMStorage contained sessionStorage localStorage
-  hi def link typescriptDOMStorage Keyword
-  syntax keyword typescriptDOMStorageProp contained length
-  syntax cluster props add=typescriptDOMStorageProp
-  hi def link typescriptDOMStorageProp Keyword
-  syntax keyword typescriptDOMStorageMethod contained getItem key setItem removeItem nextgroup=typescriptFuncCallArg
-  syntax keyword typescriptDOMStorageMethod contained clear nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptDOMStorageMethod
-  hi def link typescriptDOMStorageMethod Keyword
-
-  "runtime syntax/yats/dom-form.vim
-  syntax keyword typescriptDOMFormProp contained acceptCharset action elements encoding
-  syntax keyword typescriptDOMFormProp contained enctype length method name target
-  syntax cluster props add=typescriptDOMFormProp
-  hi def link typescriptDOMFormProp Keyword
-  syntax keyword typescriptDOMFormMethod contained reportValidity reset submit nextgroup=typescriptFuncCallArg
-  syntax cluster props add=typescriptDOMFormMethod
-  hi def link typescriptDOMFormMethod Keyword
+"""""""""""""""""""""""""""""""""""""""""""""""""""
+" Source the part common with typescriptreact.vim
+source <sfile>:h/typescriptcommon.vim
 
-  "runtime syntax/yats/css.vim
-  syntax keyword typescriptDOMStyle contained alignContent alignItems alignSelf animation
-  syntax keyword typescriptDOMStyle contained animationDelay animationDirection animationDuration
-  syntax keyword typescriptDOMStyle contained animationFillMode animationIterationCount
-  syntax keyword typescriptDOMStyle contained animationName animationPlayState animationTimingFunction
-  syntax keyword typescriptDOMStyle contained appearance backfaceVisibility background
-  syntax keyword typescriptDOMStyle contained backgroundAttachment backgroundBlendMode
-  syntax keyword typescriptDOMStyle contained backgroundClip backgroundColor backgroundImage
-  syntax keyword typescriptDOMStyle contained backgroundOrigin backgroundPosition backgroundRepeat
-  syntax keyword typescriptDOMStyle contained backgroundSize border borderBottom borderBottomColor
-  syntax keyword typescriptDOMStyle contained borderBottomLeftRadius borderBottomRightRadius
-  syntax keyword typescriptDOMStyle contained borderBottomStyle borderBottomWidth borderCollapse
-  syntax keyword typescriptDOMStyle contained borderColor borderImage borderImageOutset
-  syntax keyword typescriptDOMStyle contained borderImageRepeat borderImageSlice borderImageSource
-  syntax keyword typescriptDOMStyle contained borderImageWidth borderLeft borderLeftColor
-  syntax keyword typescriptDOMStyle contained borderLeftStyle borderLeftWidth borderRadius
-  syntax keyword typescriptDOMStyle contained borderRight borderRightColor borderRightStyle
-  syntax keyword typescriptDOMStyle contained borderRightWidth borderSpacing borderStyle
-  syntax keyword typescriptDOMStyle contained borderTop borderTopColor borderTopLeftRadius
-  syntax keyword typescriptDOMStyle contained borderTopRightRadius borderTopStyle borderTopWidth
-  syntax keyword typescriptDOMStyle contained borderWidth bottom boxDecorationBreak
-  syntax keyword typescriptDOMStyle contained boxShadow boxSizing breakAfter breakBefore
-  syntax keyword typescriptDOMStyle contained breakInside captionSide caretColor caretShape
-  syntax keyword typescriptDOMStyle contained caret clear clip clipPath color columns
-  syntax keyword typescriptDOMStyle contained columnCount columnFill columnGap columnRule
-  syntax keyword typescriptDOMStyle contained columnRuleColor columnRuleStyle columnRuleWidth
-  syntax keyword typescriptDOMStyle contained columnSpan columnWidth content counterIncrement
-  syntax keyword typescriptDOMStyle contained counterReset cursor direction display
-  syntax keyword typescriptDOMStyle contained emptyCells flex flexBasis flexDirection
-  syntax keyword typescriptDOMStyle contained flexFlow flexGrow flexShrink flexWrap
-  syntax keyword typescriptDOMStyle contained float font fontFamily fontFeatureSettings
-  syntax keyword typescriptDOMStyle contained fontKerning fontLanguageOverride fontSize
-  syntax keyword typescriptDOMStyle contained fontSizeAdjust fontStretch fontStyle fontSynthesis
-  syntax keyword typescriptDOMStyle contained fontVariant fontVariantAlternates fontVariantCaps
-  syntax keyword typescriptDOMStyle contained fontVariantEastAsian fontVariantLigatures
-  syntax keyword typescriptDOMStyle contained fontVariantNumeric fontVariantPosition
-  syntax keyword typescriptDOMStyle contained fontWeight grad grid gridArea gridAutoColumns
-  syntax keyword typescriptDOMStyle contained gridAutoFlow gridAutoPosition gridAutoRows
-  syntax keyword typescriptDOMStyle contained gridColumn gridColumnStart gridColumnEnd
-  syntax keyword typescriptDOMStyle contained gridRow gridRowStart gridRowEnd gridTemplate
-  syntax keyword typescriptDOMStyle contained gridTemplateAreas gridTemplateRows gridTemplateColumns
-  syntax keyword typescriptDOMStyle contained height hyphens imageRendering imageResolution
-  syntax keyword typescriptDOMStyle contained imageOrientation imeMode inherit justifyContent
-  syntax keyword typescriptDOMStyle contained left letterSpacing lineBreak lineHeight
-  syntax keyword typescriptDOMStyle contained listStyle listStyleImage listStylePosition
-  syntax keyword typescriptDOMStyle contained listStyleType margin marginBottom marginLeft
-  syntax keyword typescriptDOMStyle contained marginRight marginTop marks mask maskType
-  syntax keyword typescriptDOMStyle contained maxHeight maxWidth minHeight minWidth
-  syntax keyword typescriptDOMStyle contained mixBlendMode objectFit objectPosition
-  syntax keyword typescriptDOMStyle contained opacity order orphans outline outlineColor
-  syntax keyword typescriptDOMStyle contained outlineOffset outlineStyle outlineWidth
-  syntax keyword typescriptDOMStyle contained overflow overflowWrap overflowX overflowY
-  syntax keyword typescriptDOMStyle contained overflowClipBox padding paddingBottom
-  syntax keyword typescriptDOMStyle contained paddingLeft paddingRight paddingTop pageBreakAfter
-  syntax keyword typescriptDOMStyle contained pageBreakBefore pageBreakInside perspective
-  syntax keyword typescriptDOMStyle contained perspectiveOrigin pointerEvents position
-  syntax keyword typescriptDOMStyle contained quotes resize right shapeImageThreshold
-  syntax keyword typescriptDOMStyle contained shapeMargin shapeOutside tableLayout tabSize
-  syntax keyword typescriptDOMStyle contained textAlign textAlignLast textCombineHorizontal
-  syntax keyword typescriptDOMStyle contained textDecoration textDecorationColor textDecorationLine
-  syntax keyword typescriptDOMStyle contained textDecorationStyle textIndent textOrientation
-  syntax keyword typescriptDOMStyle contained textOverflow textRendering textShadow
-  syntax keyword typescriptDOMStyle contained textTransform textUnderlinePosition top
-  syntax keyword typescriptDOMStyle contained touchAction transform transformOrigin
-  syntax keyword typescriptDOMStyle contained transformStyle transition transitionDelay
-  syntax keyword typescriptDOMStyle contained transitionDuration transitionProperty
-  syntax keyword typescriptDOMStyle contained transitionTimingFunction unicodeBidi unicodeRange
-  syntax keyword typescriptDOMStyle contained userSelect userZoom verticalAlign visibility
-  syntax keyword typescriptDOMStyle contained whiteSpace width willChange wordBreak
-  syntax keyword typescriptDOMStyle contained wordSpacing wordWrap writingMode zIndex
-  hi def link typescriptDOMStyle Keyword
-
-
-
-  let typescript_props = 1
-
-  "runtime syntax/yats/event.vim
-  syntax keyword typescriptAnimationEvent contained animationend animationiteration
-  syntax keyword typescriptAnimationEvent contained animationstart beginEvent endEvent
-  syntax keyword typescriptAnimationEvent contained repeatEvent
-  syntax cluster events add=typescriptAnimationEvent
-  hi def link typescriptAnimationEvent Title
-  syntax keyword typescriptCSSEvent contained CssRuleViewRefreshed CssRuleViewChanged
-  syntax keyword typescriptCSSEvent contained CssRuleViewCSSLinkClicked transitionend
-  syntax cluster events add=typescriptCSSEvent
-  hi def link typescriptCSSEvent Title
-  syntax keyword typescriptDatabaseEvent contained blocked complete error success upgradeneeded
-  syntax keyword typescriptDatabaseEvent contained versionchange
-  syntax cluster events add=typescriptDatabaseEvent
-  hi def link typescriptDatabaseEvent Title
-  syntax keyword typescriptDocumentEvent contained DOMLinkAdded DOMLinkRemoved DOMMetaAdded
-  syntax keyword typescriptDocumentEvent contained DOMMetaRemoved DOMWillOpenModalDialog
-  syntax keyword typescriptDocumentEvent contained DOMModalDialogClosed unload
-  syntax cluster events add=typescriptDocumentEvent
-  hi def link typescriptDocumentEvent Title
-  syntax keyword typescriptDOMMutationEvent contained DOMAttributeNameChanged DOMAttrModified
-  syntax keyword typescriptDOMMutationEvent contained DOMCharacterDataModified DOMContentLoaded
-  syntax keyword typescriptDOMMutationEvent contained DOMElementNameChanged DOMNodeInserted
-  syntax keyword typescriptDOMMutationEvent contained DOMNodeInsertedIntoDocument DOMNodeRemoved
-  syntax keyword typescriptDOMMutationEvent contained DOMNodeRemovedFromDocument DOMSubtreeModified
-  syntax cluster events add=typescriptDOMMutationEvent
-  hi def link typescriptDOMMutationEvent Title
-  syntax keyword typescriptDragEvent contained drag dragdrop dragend dragenter dragexit
-  syntax keyword typescriptDragEvent contained draggesture dragleave dragover dragstart
-  syntax keyword typescriptDragEvent contained drop
-  syntax cluster events add=typescriptDragEvent
-  hi def link typescriptDragEvent Title
-  syntax keyword typescriptElementEvent contained invalid overflow underflow DOMAutoComplete
-  syntax keyword typescriptElementEvent contained command commandupdate
-  syntax cluster events add=typescriptElementEvent
-  hi def link typescriptElementEvent Title
-  syntax keyword typescriptFocusEvent contained blur change DOMFocusIn DOMFocusOut focus
-  syntax keyword typescriptFocusEvent contained focusin focusout
-  syntax cluster events add=typescriptFocusEvent
-  hi def link typescriptFocusEvent Title
-  syntax keyword typescriptFormEvent contained reset submit
-  syntax cluster events add=typescriptFormEvent
-  hi def link typescriptFormEvent Title
-  syntax keyword typescriptFrameEvent contained DOMFrameContentLoaded
-  syntax cluster events add=typescriptFrameEvent
-  hi def link typescriptFrameEvent Title
-  syntax keyword typescriptInputDeviceEvent contained click contextmenu DOMMouseScroll
-  syntax keyword typescriptInputDeviceEvent contained dblclick gamepadconnected gamepaddisconnected
-  syntax keyword typescriptInputDeviceEvent contained keydown keypress keyup MozGamepadButtonDown
-  syntax keyword typescriptInputDeviceEvent contained MozGamepadButtonUp mousedown mouseenter
-  syntax keyword typescriptInputDeviceEvent contained mouseleave mousemove mouseout
-  syntax keyword typescriptInputDeviceEvent contained mouseover mouseup mousewheel MozMousePixelScroll
-  syntax keyword typescriptInputDeviceEvent contained pointerlockchange pointerlockerror
-  syntax keyword typescriptInputDeviceEvent contained wheel
-  syntax cluster events add=typescriptInputDeviceEvent
-  hi def link typescriptInputDeviceEvent Title
-  syntax keyword typescriptMediaEvent contained audioprocess canplay canplaythrough
-  syntax keyword typescriptMediaEvent contained durationchange emptied ended ended loadeddata
-  syntax keyword typescriptMediaEvent contained loadedmetadata MozAudioAvailable pause
-  syntax keyword typescriptMediaEvent contained play playing ratechange seeked seeking
-  syntax keyword typescriptMediaEvent contained stalled suspend timeupdate volumechange
-  syntax keyword typescriptMediaEvent contained waiting complete
-  syntax cluster events add=typescriptMediaEvent
-  hi def link typescriptMediaEvent Title
-  syntax keyword typescriptMenuEvent contained DOMMenuItemActive DOMMenuItemInactive
-  syntax cluster events add=typescriptMenuEvent
-  hi def link typescriptMenuEvent Title
-  syntax keyword typescriptNetworkEvent contained datachange dataerror disabled enabled
-  syntax keyword typescriptNetworkEvent contained offline online statuschange connectionInfoUpdate
-  syntax cluster events add=typescriptNetworkEvent
-  hi def link typescriptNetworkEvent Title
-  syntax keyword typescriptProgressEvent contained abort error load loadend loadstart
-  syntax keyword typescriptProgressEvent contained progress timeout uploadprogress
-  syntax cluster events add=typescriptProgressEvent
-  hi def link typescriptProgressEvent Title
-  syntax keyword typescriptResourceEvent contained cached error load
-  syntax cluster events add=typescriptResourceEvent
-  hi def link typescriptResourceEvent Title
-  syntax keyword typescriptScriptEvent contained afterscriptexecute beforescriptexecute
-  syntax cluster events add=typescriptScriptEvent
-  hi def link typescriptScriptEvent Title
-  syntax keyword typescriptSensorEvent contained compassneedscalibration devicelight
-  syntax keyword typescriptSensorEvent contained devicemotion deviceorientation deviceproximity
-  syntax keyword typescriptSensorEvent contained orientationchange userproximity
-  syntax cluster events add=typescriptSensorEvent
-  hi def link typescriptSensorEvent Title
-  syntax keyword typescriptSessionHistoryEvent contained pagehide pageshow popstate
-  syntax cluster events add=typescriptSessionHistoryEvent
-  hi def link typescriptSessionHistoryEvent Title
-  syntax keyword typescriptStorageEvent contained change storage
-  syntax cluster events add=typescriptStorageEvent
-  hi def link typescriptStorageEvent Title
-  syntax keyword typescriptSVGEvent contained SVGAbort SVGError SVGLoad SVGResize SVGScroll
-  syntax keyword typescriptSVGEvent contained SVGUnload SVGZoom
-  syntax cluster events add=typescriptSVGEvent
-  hi def link typescriptSVGEvent Title
-  syntax keyword typescriptTabEvent contained visibilitychange
-  syntax cluster events add=typescriptTabEvent
-  hi def link typescriptTabEvent Title
-  syntax keyword typescriptTextEvent contained compositionend compositionstart compositionupdate
-  syntax keyword typescriptTextEvent contained copy cut paste select text
-  syntax cluster events add=typescriptTextEvent
-  hi def link typescriptTextEvent Title
-  syntax keyword typescriptTouchEvent contained touchcancel touchend touchenter touchleave
-  syntax keyword typescriptTouchEvent contained touchmove touchstart
-  syntax cluster events add=typescriptTouchEvent
-  hi def link typescriptTouchEvent Title
-  syntax keyword typescriptUpdateEvent contained checking downloading error noupdate
-  syntax keyword typescriptUpdateEvent contained obsolete updateready
-  syntax cluster events add=typescriptUpdateEvent
-  hi def link typescriptUpdateEvent Title
-  syntax keyword typescriptValueChangeEvent contained hashchange input readystatechange
-  syntax cluster events add=typescriptValueChangeEvent
-  hi def link typescriptValueChangeEvent Title
-  syntax keyword typescriptViewEvent contained fullscreen fullscreenchange fullscreenerror
-  syntax keyword typescriptViewEvent contained resize scroll
-  syntax cluster events add=typescriptViewEvent
-  hi def link typescriptViewEvent Title
-  syntax keyword typescriptWebsocketEvent contained close error message open
-  syntax cluster events add=typescriptWebsocketEvent
-  hi def link typescriptWebsocketEvent Title
-  syntax keyword typescriptWindowEvent contained DOMWindowCreated DOMWindowClose DOMTitleChanged
-  syntax cluster events add=typescriptWindowEvent
-  hi def link typescriptWindowEvent Title
-  syntax keyword typescriptUncategorizedEvent contained beforeunload message open show
-  syntax cluster events add=typescriptUncategorizedEvent
-  hi def link typescriptUncategorizedEvent Title
-  syntax keyword typescriptServiceWorkerEvent contained install activate fetch
-  syntax cluster events add=typescriptServiceWorkerEvent
-  hi def link typescriptServiceWorkerEvent Title
-
-
-endif
-
-" patch
-"runtime syntax/basic/patch.vim
-" patch for generated code
-syntax keyword typescriptGlobal Promise
-  \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
-syntax keyword typescriptGlobal Map WeakMap
-  \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
-
-"runtime syntax/basic/members.vim
-syntax keyword typescriptConstructor           contained constructor
-  \ nextgroup=@typescriptCallSignature
-  \ skipwhite skipempty
-
-
-syntax cluster memberNextGroup contains=typescriptMemberOptionality,typescriptTypeAnnotation,@typescriptCallSignature
-
-syntax match typescriptMember /\K\k*/
-  \ nextgroup=@memberNextGroup
-  \ contained skipwhite
-
-syntax match typescriptMethodAccessor contained /\v(get|set)\s\K/me=e-1
-  \ nextgroup=@typescriptMembers
-
-syntax cluster typescriptPropertyMemberDeclaration contains=
-  \ typescriptClassStatic,
-  \ typescriptAccessibilityModifier,
-  \ typescriptReadonlyModifier,
-  \ typescriptMethodAccessor,
-  \ @typescriptMembers
-  " \ typescriptMemberVariableDeclaration
-
-syntax match typescriptMemberOptionality /?\|!/ contained
-  \ nextgroup=typescriptTypeAnnotation,@typescriptCallSignature
-  \ skipwhite skipempty
-
-syntax cluster typescriptMembers contains=typescriptMember,typescriptStringMember,typescriptComputedMember
-
-syntax keyword typescriptClassStatic static
-  \ nextgroup=@typescriptMembers,typescriptAsyncFuncKeyword,typescriptReadonlyModifier
-  \ skipwhite contained
-
-syntax keyword typescriptAccessibilityModifier public private protected contained
-
-syntax keyword typescriptReadonlyModifier readonly contained
-
-syntax region  typescriptStringMember   contained
-  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1/
-  \ nextgroup=@memberNextGroup
-  \ skipwhite skipempty
-
-syntax region  typescriptComputedMember   contained matchgroup=typescriptProperty
-  \ start=/\[/rs=s+1 end=/]/
-  \ contains=@typescriptValue,typescriptMember,typescriptMappedIn
-  \ nextgroup=@memberNextGroup
-  \ skipwhite skipempty
-
-"runtime syntax/basic/class.vim
-"don't add typescriptMembers to nextgroup, let outer scope match it
-" so we won't match abstract method outside abstract class
-syntax keyword typescriptAbstract              abstract
-  \ nextgroup=typescriptClassKeyword
-  \ skipwhite skipnl
-syntax keyword typescriptClassKeyword          class
-  \ nextgroup=typescriptClassName,typescriptClassExtends,typescriptClassBlock
-  \ skipwhite
-
-syntax match   typescriptClassName             contained /\K\k*/
-  \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptClassTypeParameter
-  \ skipwhite skipnl
-
-syntax region typescriptClassTypeParameter
-  \ start=/</ end=/>/
-  \ contains=typescriptTypeParameter
-  \ nextgroup=typescriptClassBlock,typescriptClassExtends
-  \ contained skipwhite skipnl
-
-syntax keyword typescriptClassExtends          contained extends implements nextgroup=typescriptClassHeritage skipwhite skipnl
-
-syntax match   typescriptClassHeritage         contained /\v(\k|\.|\(|\))+/
-  \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptMixinComma,typescriptClassTypeArguments
-  \ contains=@typescriptValue
-  \ skipwhite skipnl
-  \ contained
-
-syntax region typescriptClassTypeArguments matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/
-  \ contains=@typescriptType
-  \ nextgroup=typescriptClassExtends,typescriptClassBlock,typescriptMixinComma
-  \ contained skipwhite skipnl
-
-syntax match typescriptMixinComma /,/ contained nextgroup=typescriptClassHeritage skipwhite skipnl
-
-" we need add arrowFunc to class block for high order arrow func
-" see test case
-syntax region  typescriptClassBlock matchgroup=typescriptBraces start=/{/ end=/}/
-  \ contains=@typescriptPropertyMemberDeclaration,typescriptAbstract,@typescriptComments,typescriptBlock,typescriptAssign,typescriptDecorator,typescriptAsyncFuncKeyword,typescriptArrowFunc
-  \ contained fold
-
-syntax keyword typescriptInterfaceKeyword          interface nextgroup=typescriptInterfaceName skipwhite
-syntax match   typescriptInterfaceName             contained /\k\+/
-  \ nextgroup=typescriptObjectType,typescriptInterfaceExtends,typescriptInterfaceTypeParameter
-  \ skipwhite skipnl
-syntax region typescriptInterfaceTypeParameter
-  \ start=/</ end=/>/
-  \ contains=typescriptTypeParameter
-  \ nextgroup=typescriptObjectType,typescriptInterfaceExtends
-  \ contained
-  \ skipwhite skipnl
-
-syntax keyword typescriptInterfaceExtends          contained extends nextgroup=typescriptInterfaceHeritage skipwhite skipnl
-
-syntax match typescriptInterfaceHeritage contained /\v(\k|\.)+/
-  \ nextgroup=typescriptObjectType,typescriptInterfaceComma,typescriptInterfaceTypeArguments
-  \ skipwhite
-
-syntax region typescriptInterfaceTypeArguments matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/ skip=/\s*,\s*/
-  \ contains=@typescriptType
-  \ nextgroup=typescriptObjectType,typescriptInterfaceComma
-  \ contained skipwhite
-
-syntax match typescriptInterfaceComma /,/ contained nextgroup=typescriptInterfaceHeritage skipwhite skipnl
-
-"runtime syntax/basic/cluster.vim
-"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
-syntax cluster typescriptStatement
-  \ contains=typescriptBlock,typescriptVariable,
-  \ @typescriptTopExpression,typescriptAssign,
-  \ typescriptConditional,typescriptRepeat,typescriptBranch,
-  \ typescriptLabel,typescriptStatementKeyword,
-  \ typescriptFuncKeyword,
-  \ typescriptTry,typescriptExceptions,typescriptDebugger,
-  \ typescriptExport,typescriptInterfaceKeyword,typescriptEnum,
-  \ typescriptModule,typescriptAliasKeyword,typescriptImport
-
-syntax cluster typescriptPrimitive  contains=typescriptString,typescriptTemplate,typescriptRegexpString,typescriptNumber,typescriptBoolean,typescriptNull,typescriptArray
-
-syntax cluster typescriptEventTypes            contains=typescriptEventString,typescriptTemplate,typescriptNumber,typescriptBoolean,typescriptNull
-
-" top level expression: no arrow func
-" also no func keyword. funcKeyword is contained in statement
-" funcKeyword allows overloading (func without body)
-" funcImpl requires body
-syntax cluster typescriptTopExpression
-  \ contains=@typescriptPrimitive,
-  \ typescriptIdentifier,typescriptIdentifierName,
-  \ typescriptOperator,typescriptUnaryOp,
-  \ typescriptParenExp,typescriptRegexpString,
-  \ typescriptGlobal,typescriptAsyncFuncKeyword,
-  \ typescriptClassKeyword,typescriptTypeCast
-
-" no object literal, used in type cast and arrow func
-" TODO: change func keyword to funcImpl
-syntax cluster typescriptExpression
-  \ contains=@typescriptTopExpression,
-  \ typescriptArrowFuncDef,
-  \ typescriptFuncImpl
-
-syntax cluster typescriptValue
-  \ contains=@typescriptExpression,typescriptObjectLiteral
-
-syntax cluster typescriptEventExpression       contains=typescriptArrowFuncDef,typescriptParenExp,@typescriptValue,typescriptRegexpString,@typescriptEventTypes,typescriptOperator,typescriptGlobal,jsxRegion
-
-"runtime syntax/basic/function.vim
-syntax keyword typescriptAsyncFuncKeyword      async
-  \ nextgroup=typescriptFuncKeyword,typescriptArrowFuncDef
-  \ skipwhite
-
-syntax keyword typescriptAsyncFuncKeyword      await
-  \ nextgroup=@typescriptValue
-  \ skipwhite
-
-syntax keyword typescriptFuncKeyword           function
-  \ nextgroup=typescriptAsyncFunc,typescriptFuncName,@typescriptCallSignature
-  \ skipwhite skipempty
-
-syntax match   typescriptAsyncFunc             contained /*/
-  \ nextgroup=typescriptFuncName,@typescriptCallSignature
-  \ skipwhite skipempty
-
-syntax match   typescriptFuncName              contained /\K\k*/
-  \ nextgroup=@typescriptCallSignature
-  \ skipwhite
-
-" destructuring ({ a: ee }) =>
-syntax match   typescriptArrowFuncDef          contained /({\_[^}]*}\(:\_[^)]\)\?)\s*=>/
-  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
-  \ nextgroup=@typescriptExpression,typescriptBlock
-  \ skipwhite skipempty
-
-" matches `(a) =>` or `([a]) =>` or
-" `(
-"  a) =>`
-syntax match   typescriptArrowFuncDef          contained /(\(\_s*[a-zA-Z\$_\[]\_[^)]*\)*)\s*=>/
-  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
-  \ nextgroup=@typescriptExpression,typescriptBlock
-  \ skipwhite skipempty
-
-syntax match   typescriptArrowFuncDef          contained /\K\k*\s*=>/
-  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
-  \ nextgroup=@typescriptExpression,typescriptBlock
-  \ skipwhite skipempty
-
-" TODO: optimize this pattern
-syntax region   typescriptArrowFuncDef          contained start=/(\_[^)]*):/ end=/=>/
-  \ contains=typescriptArrowFuncArg,typescriptArrowFunc,typescriptTypeAnnotation
-  \ nextgroup=@typescriptExpression,typescriptBlock
-  \ skipwhite skipempty keepend
-
-syntax match   typescriptArrowFunc             /=>/
-syntax match   typescriptArrowFuncArg          contained /\K\k*/
-syntax region  typescriptArrowFuncArg          contained start=/<\|(/ end=/\ze=>/ contains=@typescriptCallSignature
-
-syntax region typescriptReturnAnnotation contained start=/:/ end=/{/me=e-1 contains=@typescriptType nextgroup=typescriptBlock
-
-
-syntax region typescriptFuncImpl contained start=/function/ end=/{/me=e-1
-  \ contains=typescriptFuncKeyword
-  \ nextgroup=typescriptBlock
-
-syntax cluster typescriptCallImpl contains=typescriptGenericImpl,typescriptParamImpl
-syntax region typescriptGenericImpl matchgroup=typescriptTypeBrackets
-  \ start=/</ end=/>/ skip=/\s*,\s*/
-  \ contains=typescriptTypeParameter
-  \ nextgroup=typescriptParamImpl
-  \ contained skipwhite
-syntax region typescriptParamImpl matchgroup=typescriptParens
-  \ start=/(/ end=/)/
-  \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
-  \ nextgroup=typescriptReturnAnnotation,typescriptBlock
-  \ contained skipwhite skipnl
-
-"runtime syntax/basic/decorator.vim
-syntax match typescriptDecorator /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/
-  \ nextgroup=typescriptArgumentList
-  \ contains=@_semantic,typescriptDotNotation
-
-" Define the default highlighting.
-hi def link typescriptReserved             Error
-
-hi def link typescriptEndColons            Exception
-hi def link typescriptSymbols              Normal
-hi def link typescriptBraces               Function
-hi def link typescriptParens               Normal
-hi def link typescriptComment              Comment
-hi def link typescriptLineComment          Comment
-hi def link typescriptDocComment           Comment
-hi def link typescriptCommentTodo          Todo
-hi def link typescriptRef                  Include
-hi def link typescriptDocNotation          SpecialComment
-hi def link typescriptDocTags              SpecialComment
-hi def link typescriptDocNGParam           typescriptDocParam
-hi def link typescriptDocParam             Function
-hi def link typescriptDocNumParam          Function
-hi def link typescriptDocEventRef          Function
-hi def link typescriptDocNamedParamType    Type
-hi def link typescriptDocParamName         Type
-hi def link typescriptDocParamType         Type
-hi def link typescriptString               String
-hi def link typescriptSpecial              Special
-hi def link typescriptStringLiteralType    String
-hi def link typescriptStringMember         String
-hi def link typescriptTemplate             String
-hi def link typescriptEventString          String
-hi def link typescriptASCII                Special
-hi def link typescriptTemplateSB           Label
-hi def link typescriptRegexpString         String
-hi def link typescriptGlobal               Constant
-hi def link typescriptPrototype            Type
-hi def link typescriptConditional          Conditional
-hi def link typescriptConditionalElse      Conditional
-hi def link typescriptCase                 Conditional
-hi def link typescriptDefault              typescriptCase
-hi def link typescriptBranch               Conditional
-hi def link typescriptIdentifier           Structure
-hi def link typescriptVariable             Identifier
-hi def link typescriptEnumKeyword          Identifier
-hi def link typescriptRepeat               Repeat
-hi def link typescriptForOperator          Repeat
-hi def link typescriptStatementKeyword     Statement
-hi def link typescriptMessage              Keyword
-hi def link typescriptOperator             Identifier
-hi def link typescriptKeywordOp            Identifier
-hi def link typescriptCastKeyword          Special
-hi def link typescriptType                 Type
-hi def link typescriptNull                 Boolean
-hi def link typescriptNumber               Number
-hi def link typescriptExponent             Number
-hi def link typescriptBoolean              Boolean
-hi def link typescriptObjectLabel          typescriptLabel
-hi def link typescriptLabel                Label
-hi def link typescriptStringProperty       String
-hi def link typescriptImport               Special
-hi def link typescriptAmbientDeclaration   Special
-hi def link typescriptExport               Special
-hi def link typescriptModule               Special
-hi def link typescriptTry                  Special
-hi def link typescriptExceptions           Special
-
-hi def link typescriptMember              Function
-hi def link typescriptMethodAccessor       Operator
-
-hi def link typescriptAsyncFuncKeyword     Keyword
-hi def link typescriptAsyncFor             Keyword
-hi def link typescriptFuncKeyword          Keyword
-hi def link typescriptAsyncFunc            Keyword
-hi def link typescriptArrowFunc            Type
-hi def link typescriptFuncName             Function
-hi def link typescriptFuncArg              PreProc
-hi def link typescriptArrowFuncArg         PreProc
-hi def link typescriptFuncComma            Operator
-
-hi def link typescriptClassKeyword         Keyword
-hi def link typescriptClassExtends         Keyword
-" hi def link typescriptClassName            Function
-hi def link typescriptAbstract             Special
-" hi def link typescriptClassHeritage        Function
-" hi def link typescriptInterfaceHeritage    Function
-hi def link typescriptClassStatic          StorageClass
-hi def link typescriptReadonlyModifier     Keyword
-hi def link typescriptInterfaceKeyword     Keyword
-hi def link typescriptInterfaceExtends     Keyword
-hi def link typescriptInterfaceName        Function
-
-hi def link shellbang                      Comment
-
-hi def link typescriptTypeParameter         Identifier
-hi def link typescriptConstraint            Keyword
-hi def link typescriptPredefinedType        Type
-hi def link typescriptReadonlyArrayKeyword  Keyword
-hi def link typescriptUnion                 Operator
-hi def link typescriptFuncTypeArrow         Function
-hi def link typescriptConstructorType       Function
-hi def link typescriptTypeQuery             Keyword
-hi def link typescriptAccessibilityModifier Keyword
-hi def link typescriptOptionalMark          PreProc
-hi def link typescriptFuncType              Special
-hi def link typescriptMappedIn              Special
-hi def link typescriptCall                  PreProc
-hi def link typescriptParamImpl             PreProc
-hi def link typescriptConstructSignature    Identifier
-hi def link typescriptAliasDeclaration      Identifier
-hi def link typescriptAliasKeyword          Keyword
-hi def link typescriptUserDefinedType       Keyword
-hi def link typescriptTypeReference         Identifier
-hi def link typescriptConstructor           Keyword
-hi def link typescriptDecorator             Special
-
-hi link typeScript             NONE
 
 let b:current_syntax = "typescript"
 if main_syntax == 'typescript'
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/typescriptcommon.vim
@@ -0,0 +1,2057 @@
+" Vim syntax file
+" Language:     TypeScript and TypeScriptReact
+" Maintainer:   Bram Moolenaar
+" Last Change:	2019 Nov 17
+" Based On:     Herrington Darkholme's yats.vim
+" Changes:      See https:github.com/HerringtonDarkholme/yats.vim
+" Credits:      See yats.vim on github
+
+if &cpo =~ 'C'
+  let s:cpo_save = &cpo
+  set cpo&vim
+endif
+
+" runtime syntax/common.vim
+
+" NOTE: this results in accurate highlighting, but can be slow.
+syntax sync fromstart
+
+"Dollar sign is permitted anywhere in an identifier
+setlocal iskeyword-=$
+if main_syntax == 'typescript' || main_syntax == 'typescript.tsx'
+  setlocal iskeyword+=$
+  " syntax cluster htmlJavaScript                 contains=TOP
+endif
+
+" lowest priority on least used feature
+syntax match   typescriptLabel                /[a-zA-Z_$]\k*:/he=e-1 contains=typescriptReserved nextgroup=@typescriptStatement skipwhite skipempty
+
+" other keywords like return,case,yield uses containedin
+syntax region  typescriptBlock                 matchgroup=typescriptBraces start=/{/ end=/}/ contains=@typescriptStatement,@typescriptComments fold
+
+
+"runtime syntax/basic/identifiers.vim
+syntax cluster afterIdentifier contains=
+  \ typescriptDotNotation,
+  \ typescriptFuncCallArg,
+  \ typescriptTemplate,
+  \ typescriptIndexExpr,
+  \ @typescriptSymbols,
+  \ typescriptTypeArguments
+
+syntax match   typescriptIdentifierName        /\<\K\k*/
+  \ nextgroup=@afterIdentifier
+  \ transparent
+  \ contains=@_semantic
+  \ skipnl skipwhite
+
+syntax match   typescriptProp contained /\K\k*!\?/
+  \ transparent
+  \ contains=@props
+  \ nextgroup=@afterIdentifier
+  \ skipwhite skipempty
+
+syntax region  typescriptIndexExpr      contained matchgroup=typescriptProperty start=/\[/rs=s+1 end=/]/he=e-1 contains=@typescriptValue nextgroup=@typescriptSymbols,typescriptDotNotation,typescriptFuncCallArg skipwhite skipempty
+
+syntax match   typescriptDotNotation           /\./ nextgroup=typescriptProp skipnl
+syntax match   typescriptDotStyleNotation      /\.style\./ nextgroup=typescriptDOMStyle transparent
+" syntax match   typescriptFuncCall              contained /[a-zA-Z]\k*\ze(/ nextgroup=typescriptFuncCallArg
+syntax region  typescriptParenExp              matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptComments,@typescriptValue,typescriptCastKeyword nextgroup=@typescriptSymbols skipwhite skipempty
+syntax region  typescriptFuncCallArg           contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptValue,@typescriptComments nextgroup=@typescriptSymbols,typescriptDotNotation skipwhite skipempty skipnl
+syntax region  typescriptEventFuncCallArg      contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
+syntax region  typescriptEventString           contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ contains=typescriptASCII,@events
+
+"runtime syntax/basic/literal.vim
+"Syntax in the JavaScript code
+
+" String
+syntax match   typescriptASCII                 contained /\\\d\d\d/
+
+syntax region  typescriptTemplateSubstitution matchgroup=typescriptTemplateSB
+  \ start=/\${/ end=/}/
+  \ contains=@typescriptValue
+  \ contained
+
+
+syntax region  typescriptString 
+  \ start=+\z(["']\)+  skip=+\\\%(\z1\|$\)+  end=+\z1+ end=+$+
+  \ contains=typescriptSpecial,@Spell
+  \ extend
+
+syntax match   typescriptSpecial            contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"
+
+" From vim runtime
+" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
+syntax region  typescriptRegexpString          start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}]+me=e-1 nextgroup=typescriptDotNotation oneline
+
+syntax region  typescriptTemplate
+  \ start=/`/  skip=/\\\\\|\\`\|\n/  end=/`\|$/
+  \ contains=typescriptTemplateSubstitution
+  \ nextgroup=@typescriptSymbols
+  \ skipwhite skipempty
+
+"Array
+syntax region  typescriptArray matchgroup=typescriptBraces
+  \ start=/\[/ end=/]/
+  \ contains=@typescriptValue,@typescriptComments
+  \ nextgroup=@typescriptSymbols,typescriptDotNotation
+  \ skipwhite skipempty fold
+
+" Number
+syntax match typescriptNumber /\<0[bB][01][01_]*\>/        nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/       nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\|\.\d[0-9]*/
+  \ nextgroup=typescriptExponent,@typescriptSymbols skipwhite skipempty
+syntax match typescriptExponent /[eE][+-]\=\d[0-9]*\>/
+  \ nextgroup=@typescriptSymbols skipwhite skipempty contained
+
+
+" runtime syntax/basic/object.vim
+syntax region  typescriptObjectLiteral         matchgroup=typescriptBraces
+  \ start=/{/ end=/}/
+  \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName
+  \ fold contained
+
+syntax match   typescriptObjectLabel  contained /\k\+\_s*/
+  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+  \ skipwhite skipempty
+
+syntax region  typescriptStringProperty   contained
+  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1/
+  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+  \ skipwhite skipempty
+
+" syntax region  typescriptPropertyName    contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1(/me=e-1 nextgroup=@typescriptCallSignature skipwhite skipempty oneline
+syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptBraces
+  \ start=/\[/rs=s+1 end=/]/
+  \ contains=@typescriptValue
+  \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+  \ skipwhite skipempty
+
+" syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*:/he=e-1 contains=@typescriptValue nextgroup=@typescriptValue skipwhite skipempty
+" syntax region  typescriptComputedPropertyName  contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*(/me=e-1 contains=@typescriptValue nextgroup=@typescriptCallSignature skipwhite skipempty
+" Value for object, statement for label statement
+syntax match typescriptRestOrSpread /\.\.\./ contained
+syntax match typescriptObjectSpread /\.\.\./ contained containedin=typescriptObjectLiteral,typescriptArray nextgroup=@typescriptValue
+
+syntax match typescriptObjectColon contained /:/ nextgroup=@typescriptValue skipwhite skipempty
+
+"runtime syntax/basic/symbols.vim
+" + - ^ ~
+syntax match typescriptUnaryOp /[+\-~!]/
+ \ nextgroup=@typescriptValue
+ \ skipwhite
+
+syntax region typescriptTernary matchgroup=typescriptTernaryOp start=/?/ end=/:/ contained contains=@typescriptValue,@typescriptComments nextgroup=@typescriptValue skipwhite skipempty
+
+syntax match   typescriptAssign  /=/ nextgroup=@typescriptValue
+  \ skipwhite skipempty
+
+" 2: ==, ===
+syntax match   typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 6: >>>=, >>>, >>=, >>, >=, >
+syntax match   typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 4: <<=, <<, <=, <
+syntax match   typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: ||, |=, |
+syntax match   typescriptBinaryOp contained /|\(|\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: &&, &=, &
+syntax match   typescriptBinaryOp contained /&\(&\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: *=, *
+syntax match   typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: %=, %
+syntax match   typescriptBinaryOp contained /%=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: /=, /
+syntax match   typescriptBinaryOp contained +/\(=\|[^\*/]\@=\)+ nextgroup=@typescriptValue skipwhite skipempty
+syntax match   typescriptBinaryOp contained /!==\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: !=, !==
+syntax match   typescriptBinaryOp contained /+\(+\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: +, ++, +=
+syntax match   typescriptBinaryOp contained /-\(-\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: -, --, -=
+
+" exponentiation operator
+" 2: **, **=
+syntax match typescriptBinaryOp contained /\*\*=\?/ nextgroup=@typescriptValue
+
+syntax cluster typescriptSymbols               contains=typescriptBinaryOp,typescriptKeywordOp,typescriptTernary,typescriptAssign,typescriptCastKeyword
+
+"" runtime syntax/basic/reserved.vim
+
+"runtime syntax/basic/keyword.vim
+"Import
+syntax keyword typescriptImport                from as import
+syntax keyword typescriptExport                export
+syntax keyword typescriptModule                namespace module
+
+"this
+
+"JavaScript Prototype
+syntax keyword typescriptPrototype             prototype
+  \ nextgroup=@afterIdentifier
+
+syntax keyword typescriptCastKeyword           as
+  \ nextgroup=@typescriptType
+  \ skipwhite
+
+"Program Keywords
+syntax keyword typescriptIdentifier            arguments this super
+  \ nextgroup=@afterIdentifier
+
+syntax keyword typescriptVariable              let var
+  \ nextgroup=typescriptVariableDeclaration
+  \ skipwhite skipempty skipnl
+
+syntax keyword typescriptVariable const
+  \ nextgroup=typescriptEnum,typescriptVariableDeclaration
+  \ skipwhite
+
+syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
+  \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+  \ contained skipwhite skipempty skipnl
+
+syntax region typescriptEnum matchgroup=typescriptEnumKeyword start=/enum / end=/\ze{/
+  \ nextgroup=typescriptBlock
+  \ skipwhite
+
+syntax keyword typescriptKeywordOp
+  \ contained in instanceof nextgroup=@typescriptValue
+syntax keyword typescriptOperator              delete new typeof void
+  \ nextgroup=@typescriptValue
+  \ skipwhite skipempty
+
+syntax keyword typescriptForOperator           contained in of
+syntax keyword typescriptBoolean               true false nextgroup=@typescriptSymbols skipwhite skipempty
+syntax keyword typescriptNull                  null undefined nextgroup=@typescriptSymbols skipwhite skipempty
+syntax keyword typescriptMessage               alert confirm prompt status
+  \ nextgroup=typescriptDotNotation,typescriptFuncCallArg
+syntax keyword typescriptGlobal                self top parent
+  \ nextgroup=@afterIdentifier
+
+"Statement Keywords
+syntax keyword typescriptConditional           if else switch
+  \ nextgroup=typescriptConditionalParen
+  \ skipwhite skipempty skipnl
+syntax keyword typescriptConditionalElse       else
+syntax keyword typescriptRepeat                do while for nextgroup=typescriptLoopParen skipwhite skipempty
+syntax keyword typescriptRepeat                for nextgroup=typescriptLoopParen,typescriptAsyncFor skipwhite skipempty
+syntax keyword typescriptBranch                break continue containedin=typescriptBlock
+syntax keyword typescriptCase                  case nextgroup=@typescriptPrimitive skipwhite containedin=typescriptBlock
+syntax keyword typescriptDefault               default containedin=typescriptBlock nextgroup=@typescriptValue,typescriptClassKeyword,typescriptInterfaceKeyword skipwhite oneline
+syntax keyword typescriptStatementKeyword      with
+syntax keyword typescriptStatementKeyword      yield skipwhite nextgroup=@typescriptValue containedin=typescriptBlock
+syntax keyword typescriptStatementKeyword      return skipwhite contained nextgroup=@typescriptValue containedin=typescriptBlock
+
+syntax keyword typescriptTry                   try
+syntax keyword typescriptExceptions            catch throw finally
+syntax keyword typescriptDebugger              debugger
+
+syntax keyword typescriptAsyncFor              await nextgroup=typescriptLoopParen skipwhite skipempty contained
+
+syntax region  typescriptLoopParen             contained matchgroup=typescriptParens
+  \ start=/(/ end=/)/
+  \ contains=typescriptVariable,typescriptForOperator,typescriptEndColons,@typescriptValue,@typescriptComments
+  \ nextgroup=typescriptBlock
+  \ skipwhite skipempty
+syntax region  typescriptConditionalParen             contained matchgroup=typescriptParens
+  \ start=/(/ end=/)/
+  \ contains=@typescriptValue,@typescriptComments
+  \ nextgroup=typescriptBlock
+  \ skipwhite skipempty
+syntax match   typescriptEndColons             /[;,]/ contained
+
+syntax keyword typescriptAmbientDeclaration declare nextgroup=@typescriptAmbients
+  \ skipwhite skipempty
+
+syntax cluster typescriptAmbients contains=
+  \ typescriptVariable,
+  \ typescriptFuncKeyword,
+  \ typescriptClassKeyword,
+  \ typescriptAbstract,
+  \ typescriptEnumKeyword,typescriptEnum,
+  \ typescriptModule
+
+"runtime syntax/basic/doc.vim
+"Syntax coloring for Node.js shebang line
+syntax match   shellbang "^#!.*node\>"
+syntax match   shellbang "^#!.*iojs\>"
+
+
+"JavaScript comments
+syntax keyword typescriptCommentTodo TODO FIXME XXX TBD
+syntax match   typescriptLineComment "//.*"
+  \ contains=@Spell,typescriptCommentTodo,typescriptRef
+syntax region  typescriptComment
+  \ start="/\*"  end="\*/"
+  \ contains=@Spell,typescriptCommentTodo extend
+syntax cluster typescriptComments
+  \ contains=typescriptDocComment,typescriptComment,typescriptLineComment
+
+syntax match   typescriptRef  +///\s*<reference\s\+.*\/>$+
+  \ contains=typescriptString
+syntax match   typescriptRef  +///\s*<amd-dependency\s\+.*\/>$+
+  \ contains=typescriptString
+syntax match   typescriptRef  +///\s*<amd-module\s\+.*\/>$+
+  \ contains=typescriptString
+
+"JSDoc
+syntax case ignore
+
+syntax region  typescriptDocComment            matchgroup=typescriptComment
+  \ start="/\*\*"  end="\*/"
+  \ contains=typescriptDocNotation,typescriptCommentTodo,@Spell
+  \ fold keepend
+syntax match   typescriptDocNotation           contained /@/ nextgroup=typescriptDocTags
+
+syntax keyword typescriptDocTags               contained constant constructor constructs function ignore inner private public readonly static
+syntax keyword typescriptDocTags               contained const dict expose inheritDoc interface nosideeffects override protected struct internal
+syntax keyword typescriptDocTags               contained example global
+
+" syntax keyword typescriptDocTags               contained ngdoc nextgroup=typescriptDocNGDirective
+syntax keyword typescriptDocTags               contained ngdoc scope priority animations
+syntax keyword typescriptDocTags               contained ngdoc restrict methodOf propertyOf eventOf eventType nextgroup=typescriptDocParam skipwhite
+syntax keyword typescriptDocNGDirective        contained overview service object function method property event directive filter inputType error
+
+syntax keyword typescriptDocTags               contained abstract virtual access augments
+
+syntax keyword typescriptDocTags               contained arguments callback lends memberOf name type kind link mixes mixin tutorial nextgroup=typescriptDocParam skipwhite
+syntax keyword typescriptDocTags               contained variation nextgroup=typescriptDocNumParam skipwhite
+
+syntax keyword typescriptDocTags               contained author class classdesc copyright default defaultvalue nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags               contained deprecated description external host nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags               contained file fileOverview overview namespace requires since version nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags               contained summary todo license preserve nextgroup=typescriptDocDesc skipwhite
+
+syntax keyword typescriptDocTags               contained borrows exports nextgroup=typescriptDocA skipwhite
+syntax keyword typescriptDocTags               contained param arg argument property prop module nextgroup=typescriptDocNamedParamType,typescriptDocParamName skipwhite
+syntax keyword typescriptDocTags               contained define enum extends implements this typedef nextgroup=typescriptDocParamType skipwhite
+syntax keyword typescriptDocTags               contained return returns throws exception nextgroup=typescriptDocParamType,typescriptDocParamName skipwhite
+syntax keyword typescriptDocTags               contained see nextgroup=typescriptDocRef skipwhite
+
+syntax keyword typescriptDocTags               contained function func method nextgroup=typescriptDocName skipwhite
+syntax match   typescriptDocName               contained /\h\w*/
+
+syntax keyword typescriptDocTags               contained fires event nextgroup=typescriptDocEventRef skipwhite
+syntax match   typescriptDocEventRef           contained /\h\w*#\(\h\w*\:\)\?\h\w*/
+
+syntax match   typescriptDocNamedParamType     contained /{.\+}/ nextgroup=typescriptDocParamName skipwhite
+syntax match   typescriptDocParamName          contained /\[\?0-9a-zA-Z_\.]\+\]\?/ nextgroup=typescriptDocDesc skipwhite
+syntax match   typescriptDocParamType          contained /{.\+}/ nextgroup=typescriptDocDesc skipwhite
+syntax match   typescriptDocA                  contained /\%(#\|\w\|\.\|:\|\/\)\+/ nextgroup=typescriptDocAs skipwhite
+syntax match   typescriptDocAs                 contained /\s*as\s*/ nextgroup=typescriptDocB skipwhite
+syntax match   typescriptDocB                  contained /\%(#\|\w\|\.\|:\|\/\)\+/
+syntax match   typescriptDocParam              contained /\%(#\|\w\|\.\|:\|\/\|-\)\+/
+syntax match   typescriptDocNumParam           contained /\d\+/
+syntax match   typescriptDocRef                contained /\%(#\|\w\|\.\|:\|\/\)\+/
+syntax region  typescriptDocLinkTag            contained matchgroup=typescriptDocLinkTag start=/{/ end=/}/ contains=typescriptDocTags
+
+syntax cluster typescriptDocs                  contains=typescriptDocParamType,typescriptDocNamedParamType,typescriptDocParam
+
+if main_syntax == "typescript"
+  syntax sync clear
+  syntax sync ccomment typescriptComment minlines=200
+endif
+
+syntax case match
+
+"runtime syntax/basic/type.vim
+" Types
+syntax match typescriptOptionalMark /?/ contained
+
+syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/
+  \ contains=typescriptTypeParameter
+  \ contained
+
+syntax match typescriptTypeParameter /\K\k*/
+  \ nextgroup=typescriptConstraint,typescriptGenericDefault
+  \ contained skipwhite skipnl
+
+syntax keyword typescriptConstraint extends
+  \ nextgroup=@typescriptType
+  \ contained skipwhite skipnl
+
+syntax match typescriptGenericDefault /=/
+  \ nextgroup=@typescriptType
+  \ contained skipwhite
+
+"><
+" class A extend B<T> {} // ClassBlock
+" func<T>() // FuncCallArg
+syntax region typescriptTypeArguments matchgroup=typescriptTypeBrackets
+  \ start=/\></ end=/>/
+  \ contains=@typescriptType
+  \ nextgroup=typescriptFuncCallArg,@typescriptTypeOperator
+  \ contained skipwhite
+
+
+syntax cluster typescriptType contains=
+  \ @typescriptPrimaryType,
+  \ typescriptUnion,
+  \ @typescriptFunctionType,
+  \ typescriptConstructorType
+
+" array type: A[]
+" type indexing A['key']
+syntax region typescriptTypeBracket contained
+  \ start=/\[/ end=/\]/
+  \ contains=typescriptString,typescriptNumber
+  \ nextgroup=@typescriptTypeOperator
+  \ skipwhite skipempty
+
+syntax cluster typescriptPrimaryType contains=
+  \ typescriptParenthesizedType,
+  \ typescriptPredefinedType,
+  \ typescriptTypeReference,
+  \ typescriptObjectType,
+  \ typescriptTupleType,
+  \ typescriptTypeQuery,
+  \ typescriptStringLiteralType,
+  \ typescriptReadonlyArrayKeyword
+
+syntax region  typescriptStringLiteralType contained
+  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/
+  \ nextgroup=typescriptUnion
+  \ skipwhite skipempty
+
+syntax region typescriptParenthesizedType matchgroup=typescriptParens
+  \ start=/(/ end=/)/
+  \ contains=@typescriptType
+  \ nextgroup=@typescriptTypeOperator
+  \ contained skipwhite skipempty fold
+
+syntax match typescriptTypeReference /\K\k*\(\.\K\k*\)*/
+  \ nextgroup=typescriptTypeArguments,@typescriptTypeOperator,typescriptUserDefinedType
+  \ skipwhite contained skipempty
+
+syntax keyword typescriptPredefinedType any number boolean string void never undefined null object unknown
+  \ nextgroup=@typescriptTypeOperator
+  \ contained skipwhite skipempty
+
+syntax match typescriptPredefinedType /unique symbol/
+  \ nextgroup=@typescriptTypeOperator
+  \ contained skipwhite skipempty
+
+syntax region typescriptObjectType matchgroup=typescriptBraces
+  \ start=/{/ end=/}/
+  \ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier
+  \ nextgroup=@typescriptTypeOperator
+  \ contained skipwhite fold
+
+syntax cluster typescriptTypeMember contains=
+  \ @typescriptCallSignature,
+  \ typescriptConstructSignature,
+  \ typescriptIndexSignature,
+  \ @typescriptMembers
+
+syntax region typescriptTupleType matchgroup=typescriptBraces
+  \ start=/\[/ end=/\]/
+  \ contains=@typescriptType
+  \ contained skipwhite oneline
+
+syntax cluster typescriptTypeOperator
+  \ contains=typescriptUnion,typescriptTypeBracket
+
+syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
+
+syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
+syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/
+  \ contains=typescriptTypeParameter
+  \ nextgroup=typescriptFuncType
+  \ containedin=typescriptFunctionType
+  \ contained skipwhite skipnl
+
+syntax region typescriptFuncType matchgroup=typescriptParens
+  \ start=/(/ end=/)\s*=>/me=e-2
+  \ contains=@typescriptParameterList
+  \ nextgroup=typescriptFuncTypeArrow
+  \ contained skipwhite skipnl oneline
+
+syntax match typescriptFuncTypeArrow /=>/
+  \ nextgroup=@typescriptType
+  \ containedin=typescriptFuncType
+  \ contained skipwhite skipnl
+
+
+syntax keyword typescriptConstructorType new
+  \ nextgroup=@typescriptFunctionType
+  \ contained skipwhite skipnl
+
+syntax keyword typescriptUserDefinedType is
+  \ contained nextgroup=@typescriptType skipwhite skipempty
+
+syntax keyword typescriptTypeQuery typeof keyof
+  \ nextgroup=typescriptTypeReference
+  \ contained skipwhite skipnl
+
+syntax cluster typescriptCallSignature contains=typescriptGenericCall,typescriptCall
+syntax region typescriptGenericCall matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/
+  \ contains=typescriptTypeParameter
+  \ nextgroup=typescriptCall
+  \ contained skipwhite skipnl
+syntax region typescriptCall matchgroup=typescriptParens
+  \ start=/(/ end=/)/
+  \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
+  \ nextgroup=typescriptTypeAnnotation,typescriptBlock
+  \ contained skipwhite skipnl
+
+syntax match typescriptTypeAnnotation /:/
+  \ nextgroup=@typescriptType
+  \ contained skipwhite skipnl
+
+syntax cluster typescriptParameterList contains=
+  \ typescriptTypeAnnotation,
+  \ typescriptAccessibilityModifier,
+  \ typescriptOptionalMark,
+  \ typescriptRestOrSpread,
+  \ typescriptFuncComma,
+  \ typescriptDefaultParam
+
+syntax match typescriptFuncComma /,/ contained
+
+syntax match typescriptDefaultParam /=/
+  \ nextgroup=@typescriptValue
+  \ contained skipwhite
+
+syntax keyword typescriptConstructSignature new
+  \ nextgroup=@typescriptCallSignature
+  \ contained skipwhite
+
+syntax region typescriptIndexSignature matchgroup=typescriptBraces
+  \ start=/\[/ end=/\]/
+  \ contains=typescriptPredefinedType,typescriptMappedIn,typescriptString
+  \ nextgroup=typescriptTypeAnnotation
+  \ contained skipwhite oneline
+
+syntax keyword typescriptMappedIn in
+  \ nextgroup=@typescriptType
+  \ contained skipwhite skipnl skipempty
+
+syntax keyword typescriptAliasKeyword type
+  \ nextgroup=typescriptAliasDeclaration
+  \ skipwhite skipnl skipempty
+
+syntax region typescriptAliasDeclaration matchgroup=typescriptUnion
+  \ start=/ / end=/=/
+  \ nextgroup=@typescriptType
+  \ contains=typescriptConstraint,typescriptTypeParameters
+  \ contained skipwhite skipempty
+
+syntax keyword typescriptReadonlyArrayKeyword readonly
+  \ nextgroup=@typescriptPrimaryType
+  \ skipwhite
+
+" extension
+if get(g:, 'yats_host_keyword', 1)
+  "runtime syntax/yats.vim
+  "runtime syntax/yats/typescript.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function Boolean
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Error EvalError
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName InternalError
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName RangeError ReferenceError
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName StopIteration
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName SyntaxError TypeError
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URIError Date
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float32Array
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float64Array
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int16Array Int32Array
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int8Array Uint16Array
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint32Array Uint8Array
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint8ClampedArray
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName ParallelArray
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName ArrayBuffer DataView
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Iterator Generator
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect Proxy
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName arguments
+  hi def link typescriptGlobal Structure
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName eval uneval nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isFinite nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isNaN parseFloat nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName parseInt nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURI nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURIComponent nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURI nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURIComponent nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptGlobalMethod
+  hi def link typescriptGlobalMethod Structure
+
+  "runtime syntax/yats/es6-number.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Number nextgroup=typescriptGlobalNumberDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalNumberDot /\./ contained nextgroup=typescriptNumberStaticProp,typescriptNumberStaticMethod,typescriptProp
+  syntax keyword typescriptNumberStaticProp contained EPSILON MAX_SAFE_INTEGER MAX_VALUE
+  syntax keyword typescriptNumberStaticProp contained MIN_SAFE_INTEGER MIN_VALUE NEGATIVE_INFINITY
+  syntax keyword typescriptNumberStaticProp contained NaN POSITIVE_INFINITY
+  hi def link typescriptNumberStaticProp Keyword
+  syntax keyword typescriptNumberStaticMethod contained isFinite isInteger isNaN isSafeInteger nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptNumberStaticMethod contained parseFloat parseInt nextgroup=typescriptFuncCallArg
+  hi def link typescriptNumberStaticMethod Keyword
+  syntax keyword typescriptNumberMethod contained toExponential toFixed toLocaleString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptNumberMethod contained toPrecision toSource toString valueOf nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptNumberMethod
+  hi def link typescriptNumberMethod Keyword
+
+  "runtime syntax/yats/es6-string.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName String nextgroup=typescriptGlobalStringDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalStringDot /\./ contained nextgroup=typescriptStringStaticMethod,typescriptProp
+  syntax keyword typescriptStringStaticMethod contained fromCharCode fromCodePoint raw nextgroup=typescriptFuncCallArg
+  hi def link typescriptStringStaticMethod Keyword
+  syntax keyword typescriptStringMethod contained anchor charAt charCodeAt codePointAt nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained concat endsWith includes indexOf lastIndexOf nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained link localeCompare match normalize nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained padStart padEnd repeat replace search nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained slice split startsWith substr substring nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained toLocaleLowerCase toLocaleUpperCase nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained toLowerCase toString toUpperCase trim nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptStringMethod contained valueOf nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptStringMethod
+  hi def link typescriptStringMethod Keyword
+
+  "runtime syntax/yats/es6-array.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Array nextgroup=typescriptGlobalArrayDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalArrayDot /\./ contained nextgroup=typescriptArrayStaticMethod,typescriptProp
+  syntax keyword typescriptArrayStaticMethod contained from isArray of nextgroup=typescriptFuncCallArg
+  hi def link typescriptArrayStaticMethod Keyword
+  syntax keyword typescriptArrayMethod contained concat copyWithin entries every fill nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptArrayMethod contained filter find findIndex forEach indexOf nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptArrayMethod contained includes join keys lastIndexOf map nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptArrayMethod contained pop push reduce reduceRight reverse nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptArrayMethod contained shift slice some sort splice toLocaleString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptArrayMethod contained toSource toString unshift nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptArrayMethod
+  hi def link typescriptArrayMethod Keyword
+
+  "runtime syntax/yats/es6-object.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Object nextgroup=typescriptGlobalObjectDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalObjectDot /\./ contained nextgroup=typescriptObjectStaticMethod,typescriptProp
+  syntax keyword typescriptObjectStaticMethod contained create defineProperties defineProperty nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectStaticMethod contained entries freeze getOwnPropertyDescriptors nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectStaticMethod contained getOwnPropertyDescriptor getOwnPropertyNames nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectStaticMethod contained getOwnPropertySymbols getPrototypeOf nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectStaticMethod contained is isExtensible isFrozen isSealed nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectStaticMethod contained keys preventExtensions values nextgroup=typescriptFuncCallArg
+  hi def link typescriptObjectStaticMethod Keyword
+  syntax keyword typescriptObjectMethod contained getOwnPropertyDescriptors hasOwnProperty nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectMethod contained isPrototypeOf propertyIsEnumerable nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectMethod contained toLocaleString toString valueOf seal nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptObjectMethod contained setPrototypeOf nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptObjectMethod
+  hi def link typescriptObjectMethod Keyword
+
+  "runtime syntax/yats/es6-symbol.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Symbol nextgroup=typescriptGlobalSymbolDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalSymbolDot /\./ contained nextgroup=typescriptSymbolStaticProp,typescriptSymbolStaticMethod,typescriptProp
+  syntax keyword typescriptSymbolStaticProp contained length iterator match replace
+  syntax keyword typescriptSymbolStaticProp contained search split hasInstance isConcatSpreadable
+  syntax keyword typescriptSymbolStaticProp contained unscopables species toPrimitive
+  syntax keyword typescriptSymbolStaticProp contained toStringTag
+  hi def link typescriptSymbolStaticProp Keyword
+  syntax keyword typescriptSymbolStaticMethod contained for keyFor nextgroup=typescriptFuncCallArg
+  hi def link typescriptSymbolStaticMethod Keyword
+
+  "runtime syntax/yats/es6-function.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function
+  syntax keyword typescriptFunctionMethod contained apply bind call nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptFunctionMethod
+  hi def link typescriptFunctionMethod Keyword
+
+  "runtime syntax/yats/es6-math.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Math nextgroup=typescriptGlobalMathDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalMathDot /\./ contained nextgroup=typescriptMathStaticProp,typescriptMathStaticMethod,typescriptProp
+  syntax keyword typescriptMathStaticProp contained E LN10 LN2 LOG10E LOG2E PI SQRT1_2
+  syntax keyword typescriptMathStaticProp contained SQRT2
+  hi def link typescriptMathStaticProp Keyword
+  syntax keyword typescriptMathStaticMethod contained abs acos acosh asin asinh atan nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptMathStaticMethod contained atan2 atanh cbrt ceil clz32 cos nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptMathStaticMethod contained cosh exp expm1 floor fround hypot nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptMathStaticMethod contained imul log log10 log1p log2 max nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptMathStaticMethod contained min pow random round sign sin nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptMathStaticMethod contained sinh sqrt tan tanh trunc nextgroup=typescriptFuncCallArg
+  hi def link typescriptMathStaticMethod Keyword
+
+  "runtime syntax/yats/es6-date.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Date nextgroup=typescriptGlobalDateDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalDateDot /\./ contained nextgroup=typescriptDateStaticMethod,typescriptProp
+  syntax keyword typescriptDateStaticMethod contained UTC now parse nextgroup=typescriptFuncCallArg
+  hi def link typescriptDateStaticMethod Keyword
+  syntax keyword typescriptDateMethod contained getDate getDay getFullYear getHours nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained getMilliseconds getMinutes getMonth nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained getSeconds getTime getTimezoneOffset nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained getUTCDate getUTCDay getUTCFullYear nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained getUTCHours getUTCMilliseconds getUTCMinutes nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained getUTCMonth getUTCSeconds setDate setFullYear nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained setHours setMilliseconds setMinutes nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained setMonth setSeconds setTime setUTCDate nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained setUTCFullYear setUTCHours setUTCMilliseconds nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained setUTCMinutes setUTCMonth setUTCSeconds nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained toDateString toISOString toJSON toLocaleDateString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained toLocaleFormat toLocaleString toLocaleTimeString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained toSource toString toTimeString toUTCString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDateMethod contained valueOf nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptDateMethod
+  hi def link typescriptDateMethod Keyword
+
+  "runtime syntax/yats/es6-json.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName JSON nextgroup=typescriptGlobalJSONDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalJSONDot /\./ contained nextgroup=typescriptJSONStaticMethod,typescriptProp
+  syntax keyword typescriptJSONStaticMethod contained parse stringify nextgroup=typescriptFuncCallArg
+  hi def link typescriptJSONStaticMethod Keyword
+
+  "runtime syntax/yats/es6-regexp.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName RegExp nextgroup=typescriptGlobalRegExpDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalRegExpDot /\./ contained nextgroup=typescriptRegExpStaticProp,typescriptProp
+  syntax keyword typescriptRegExpStaticProp contained lastIndex
+  hi def link typescriptRegExpStaticProp Keyword
+  syntax keyword typescriptRegExpProp contained global ignoreCase multiline source sticky
+  syntax cluster props add=typescriptRegExpProp
+  hi def link typescriptRegExpProp Keyword
+  syntax keyword typescriptRegExpMethod contained exec test nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptRegExpMethod
+  hi def link typescriptRegExpMethod Keyword
+
+  "runtime syntax/yats/es6-map.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Map WeakMap
+  syntax keyword typescriptES6MapProp contained size
+  syntax cluster props add=typescriptES6MapProp
+  hi def link typescriptES6MapProp Keyword
+  syntax keyword typescriptES6MapMethod contained clear delete entries forEach get has nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptES6MapMethod contained keys set values nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptES6MapMethod
+  hi def link typescriptES6MapMethod Keyword
+
+  "runtime syntax/yats/es6-set.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Set WeakSet
+  syntax keyword typescriptES6SetProp contained size
+  syntax cluster props add=typescriptES6SetProp
+  hi def link typescriptES6SetProp Keyword
+  syntax keyword typescriptES6SetMethod contained add clear delete entries forEach has nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptES6SetMethod contained values nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptES6SetMethod
+  hi def link typescriptES6SetMethod Keyword
+
+  "runtime syntax/yats/es6-proxy.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Proxy
+  syntax keyword typescriptProxyAPI contained getOwnPropertyDescriptor getOwnPropertyNames
+  syntax keyword typescriptProxyAPI contained defineProperty deleteProperty freeze seal
+  syntax keyword typescriptProxyAPI contained preventExtensions has hasOwn get set enumerate
+  syntax keyword typescriptProxyAPI contained iterate ownKeys apply construct
+  hi def link typescriptProxyAPI Keyword
+
+  "runtime syntax/yats/es6-promise.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Promise nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalPromiseDot /\./ contained nextgroup=typescriptPromiseStaticMethod,typescriptProp
+  syntax keyword typescriptPromiseStaticMethod contained resolve reject all race nextgroup=typescriptFuncCallArg
+  hi def link typescriptPromiseStaticMethod Keyword
+  syntax keyword typescriptPromiseMethod contained then catch finally nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptPromiseMethod
+  hi def link typescriptPromiseMethod Keyword
+
+  "runtime syntax/yats/es6-reflect.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect
+  syntax keyword typescriptReflectMethod contained apply construct defineProperty deleteProperty nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptReflectMethod contained enumerate get getOwnPropertyDescriptor nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptReflectMethod contained getPrototypeOf has isExtensible ownKeys nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptReflectMethod contained preventExtensions set setPrototypeOf nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptReflectMethod
+  hi def link typescriptReflectMethod Keyword
+
+  "runtime syntax/yats/ecma-402.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Intl
+  syntax keyword typescriptIntlMethod contained Collator DateTimeFormat NumberFormat nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptIntlMethod contained PluralRules nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptIntlMethod
+  hi def link typescriptIntlMethod Keyword
+
+  "runtime syntax/yats/node.vim
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName global process
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName console Buffer
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName module exports
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setTimeout
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearTimeout
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setInterval
+  syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearInterval
+  hi def link typescriptNodeGlobal Structure
+
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName describe it test
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName before after
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeEach afterEach
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeAll afterAll
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName expect assert
+
+  "runtime syntax/yats/web.vim
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName App Apps ArrayBuffer
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ArrayBufferView
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Attr AudioBuffer
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioBufferSourceNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioContext AudioDestinationNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioListener AudioNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioParam BatteryManager
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName BiquadFilterNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName BlobEvent BluetoothAdapter
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothDevice
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothManager
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraCapabilities
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraControl CameraManager
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasGradient CanvasImageSource
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasPattern CanvasRenderingContext2D
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CaretPosition CDATASection
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelMergerNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelSplitterNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CharacterData ChildNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ChromeWorker Comment
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Connection Console
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ContactManager Contacts
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ConvolverNode Coordinates
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSS CSSConditionRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSGroupingRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframeRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframesRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSMediaRule CSSNamespaceRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSPageRule CSSRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSRuleList CSSStyleDeclaration
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSStyleRule CSSStyleSheet
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSSupportsRule
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DataTransfer DataView
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DedicatedWorkerGlobalScope
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DelayNode DeviceAcceleration
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceRotationRate
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceStorage DirectoryEntry
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryEntrySync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReader
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReaderSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Document DocumentFragment
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DocumentTouch DocumentType
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMCursor DOMError
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMException DOMHighResTimeStamp
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementation
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementationRegistry
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMParser DOMRequest
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMString DOMStringList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMStringMap DOMTimeStamp
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMTokenList DynamicsCompressorNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Element Entry EntrySync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Extensions FileException
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Float32Array Float64Array
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName FMRadio FormData
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName GainNode Gamepad
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName GamepadButton Geolocation
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName History HTMLAnchorElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAreaElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAudioElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBaseElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBodyElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBRElement HTMLButtonElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCanvasElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCollection HTMLDataElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDataListElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDivElement HTMLDListElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDocument HTMLElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLEmbedElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFieldSetElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormControlsCollection
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadingElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHRElement HTMLHtmlElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLIFrameElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLImageElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLInputElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLKeygenElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLabelElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLegendElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLIElement HTMLLinkElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMapElement HTMLMediaElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMetaElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMeterElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLModElement HTMLObjectElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOListElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptGroupElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionsCollection
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOutputElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParagraphElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParamElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLPreElement HTMLProgressElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLQuoteElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLScriptElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSelectElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSourceElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSpanElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLStyleElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCaptionElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCellElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableColElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableDataCellElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableHeaderCellElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableRowElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableSectionElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTextAreaElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTimeElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTitleElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTrackElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUListElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUnknownElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLVideoElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursor IDBCursorSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursorWithValue
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBDatabase IDBDatabaseSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBEnvironment IDBEnvironmentSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBFactory IDBFactorySync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBIndex IDBIndexSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBKeyRange IDBObjectStore
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBObjectStoreSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBOpenDBRequest
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBRequest IDBTransaction
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBTransactionSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBVersionChangeEvent
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ImageData IndexedDB
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Int16Array Int32Array
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Int8Array L10n LinkStyle
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystem
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystemSync
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Location LockedFile
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaQueryList MediaQueryListListener
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaRecorder MediaSource
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaStream MediaStreamTrack
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName MutationObserver
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Navigator NavigatorGeolocation
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorID NavigatorLanguage
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorOnLine
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorPlugins
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Node NodeFilter
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName NodeIterator NodeList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Notification OfflineAudioContext
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName OscillatorNode PannerNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ParentNode Performance
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceNavigation
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceTiming
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Permissions PermissionSettings
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Plugin PluginArray
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Position PositionError
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PositionOptions
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PowerManager ProcessingInstruction
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PromiseResolver
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName PushManager Range
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCConfiguration
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnection
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnectionErrorCallback
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescription
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescriptionCallback
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ScriptProcessorNode
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Selection SettingsLock
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SettingsManager
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SharedWorker StyleSheet
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName StyleSheetList SVGAElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAngle SVGAnimateColorElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedAngle
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedBoolean
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedEnumeration
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedInteger
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLength
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLengthList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumber
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumberList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPoints
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPreserveAspectRatio
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedRect
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedString
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedTransformList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateMotionElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateTransformElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimationElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCircleElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGClipPathElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCursorElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGDefsElement SVGDescElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGElement SVGEllipseElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFilterElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontElement SVGFontFaceElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceFormatElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceNameElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceSrcElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceUriElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGForeignObjectElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGElement SVGGlyphElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGradientElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGHKernElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGImageElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLength SVGLengthList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLinearGradientElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLineElement SVGMaskElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMatrix SVGMissingGlyphElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMPathElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGNumber SVGNumberList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPathElement SVGPatternElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPoint SVGPolygonElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPolylineElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPreserveAspectRatio
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRadialGradientElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRect SVGRectElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGScriptElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSetElement SVGStopElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStringList SVGStylable
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStyleElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSVGElement SVGSwitchElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSymbolElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTests SVGTextElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTextPositioningElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTitleElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransform SVGTransformable
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransformList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTRefElement SVGTSpanElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGUseElement SVGViewElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGVKernElement
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPServerSocket
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPSocket Telephony
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName TelephonyCall Text
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName TextDecoder TextEncoder
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName TextMetrics TimeRanges
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Touch TouchList
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Transferable TreeWalker
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint16Array Uint32Array
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint8Array Uint8ClampedArray
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName URLSearchParams
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName URLUtilsReadOnly
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName UserProximityEvent
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName ValidityState VideoPlaybackQuality
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName WaveShaperNode WebBluetooth
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebGLRenderingContext
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebSMS WebSocket
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName WebVTT WifiManager
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName Window Worker WorkerConsole
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName WorkerLocation WorkerNavigator
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName XDomainRequest XMLDocument
+  syntax keyword typescriptBOM containedin=typescriptIdentifierName XMLHttpRequestEventTarget
+  hi def link typescriptBOM Structure
+
+  "runtime syntax/yats/web-window.vim
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName applicationCache
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName closed
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName Components
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName controllers
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName dialogArguments
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName document
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frameElement
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frames
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName fullScreen
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName history
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerHeight
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerWidth
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName length
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName location
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName locationbar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName menubar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName messageManager
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName name navigator
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName opener
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerHeight
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerWidth
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageXOffset
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageYOffset
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName parent
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName performance
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName personalbar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName returnValue
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screen
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenX
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenY
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollbars
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxX
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxY
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollX
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollY
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName self sidebar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName status
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName statusbar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName toolbar
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName top visualViewport
+  syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName window
+  syntax cluster props add=typescriptBOMWindowProp
+  hi def link typescriptBOMWindowProp Structure
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName alert nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName atob nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName blur nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName btoa nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearImmediate nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearInterval nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearTimeout nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName close nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName confirm nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName dispatchEvent nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName find nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName focus nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttention nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttentionWithCycleCount nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getComputedStyle nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getDefaulComputedStyle nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getSelection nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName matchMedia nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName maximize nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveBy nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveTo nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName open nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName openDialog nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName postMessage nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName print nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName prompt nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName removeEventListener nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeBy nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeTo nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName restore nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scroll nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollBy nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByLines nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByPages nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollTo nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setCursor nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setImmediate nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setInterval nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setResizable nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setTimeout nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName showModalDialog nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName sizeToContent nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName stop nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName updateCommands nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptBOMWindowMethod
+  hi def link typescriptBOMWindowMethod Structure
+  syntax keyword typescriptBOMWindowEvent contained onabort onbeforeunload onblur onchange
+  syntax keyword typescriptBOMWindowEvent contained onclick onclose oncontextmenu ondevicelight
+  syntax keyword typescriptBOMWindowEvent contained ondevicemotion ondeviceorientation
+  syntax keyword typescriptBOMWindowEvent contained ondeviceproximity ondragdrop onerror
+  syntax keyword typescriptBOMWindowEvent contained onfocus onhashchange onkeydown onkeypress
+  syntax keyword typescriptBOMWindowEvent contained onkeyup onload onmousedown onmousemove
+  syntax keyword typescriptBOMWindowEvent contained onmouseout onmouseover onmouseup
+  syntax keyword typescriptBOMWindowEvent contained onmozbeforepaint onpaint onpopstate
+  syntax keyword typescriptBOMWindowEvent contained onreset onresize onscroll onselect
+  syntax keyword typescriptBOMWindowEvent contained onsubmit onunload onuserproximity
+  syntax keyword typescriptBOMWindowEvent contained onpageshow onpagehide
+  hi def link typescriptBOMWindowEvent Keyword
+  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName DOMParser
+  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName QueryInterface
+  syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName XMLSerializer
+  hi def link typescriptBOMWindowCons Structure
+
+  "runtime syntax/yats/web-navigator.vim
+  syntax keyword typescriptBOMNavigatorProp contained battery buildID connection cookieEnabled
+  syntax keyword typescriptBOMNavigatorProp contained doNotTrack maxTouchPoints oscpu
+  syntax keyword typescriptBOMNavigatorProp contained productSub push serviceWorker
+  syntax keyword typescriptBOMNavigatorProp contained vendor vendorSub
+  syntax cluster props add=typescriptBOMNavigatorProp
+  hi def link typescriptBOMNavigatorProp Keyword
+  syntax keyword typescriptBOMNavigatorMethod contained addIdleObserver geolocation nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMNavigatorMethod contained getDeviceStorage getDeviceStorages nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMNavigatorMethod contained getGamepads getUserMedia registerContentHandler nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMNavigatorMethod contained removeIdleObserver requestWakeLock nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMNavigatorMethod contained share vibrate watch registerProtocolHandler nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptBOMNavigatorMethod contained sendBeacon nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptBOMNavigatorMethod
+  hi def link typescriptBOMNavigatorMethod Keyword
+  syntax keyword typescriptServiceWorkerMethod contained register nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptServiceWorkerMethod
+  hi def link typescriptServiceWorkerMethod Keyword
+
+  "runtime syntax/yats/web-location.vim
+  syntax keyword typescriptBOMLocationProp contained href protocol host hostname port
+  syntax keyword typescriptBOMLocationProp contained pathname search hash username password
+  syntax keyword typescriptBOMLocationProp contained origin
+  syntax cluster props add=typescriptBOMLocationProp
+  hi def link typescriptBOMLocationProp Keyword
+  syntax keyword typescriptBOMLocationMethod contained assign reload replace toString nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptBOMLocationMethod
+  hi def link typescriptBOMLocationMethod Keyword
+
+  "runtime syntax/yats/web-history.vim
+  syntax keyword typescriptBOMHistoryProp contained length current next previous state
+  syntax keyword typescriptBOMHistoryProp contained scrollRestoration
+  syntax cluster props add=typescriptBOMHistoryProp
+  hi def link typescriptBOMHistoryProp Keyword
+  syntax keyword typescriptBOMHistoryMethod contained back forward go pushState replaceState nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptBOMHistoryMethod
+  hi def link typescriptBOMHistoryMethod Keyword
+
+  "runtime syntax/yats/web-console.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName console
+  syntax keyword typescriptConsoleMethod contained count dir error group groupCollapsed nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptConsoleMethod contained groupEnd info log time timeEnd trace nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptConsoleMethod contained warn nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptConsoleMethod
+  hi def link typescriptConsoleMethod Keyword
+
+  "runtime syntax/yats/web-xhr.vim
+  syntax keyword typescriptXHRGlobal containedin=typescriptIdentifierName XMLHttpRequest
+  hi def link typescriptXHRGlobal Structure
+  syntax keyword typescriptXHRProp contained onreadystatechange readyState response
+  syntax keyword typescriptXHRProp contained responseText responseType responseXML status
+  syntax keyword typescriptXHRProp contained statusText timeout ontimeout upload withCredentials
+  syntax cluster props add=typescriptXHRProp
+  hi def link typescriptXHRProp Keyword
+  syntax keyword typescriptXHRMethod contained abort getAllResponseHeaders getResponseHeader nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptXHRMethod contained open overrideMimeType send setRequestHeader nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptXHRMethod
+  hi def link typescriptXHRMethod Keyword
+
+  "runtime syntax/yats/web-blob.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Blob BlobBuilder
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName File FileReader
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName FileReaderSync
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URL nextgroup=typescriptGlobalURLDot,typescriptFuncCallArg
+  syntax match   typescriptGlobalURLDot /\./ contained nextgroup=typescriptURLStaticMethod,typescriptProp
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName URLUtils
+  syntax keyword typescriptFileMethod contained readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptFileMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptFileMethod
+  hi def link typescriptFileMethod Keyword
+  syntax keyword typescriptFileReaderProp contained error readyState result
+  syntax cluster props add=typescriptFileReaderProp
+  hi def link typescriptFileReaderProp Keyword
+  syntax keyword typescriptFileReaderMethod contained abort readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptFileReaderMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptFileReaderMethod
+  hi def link typescriptFileReaderMethod Keyword
+  syntax keyword typescriptFileListMethod contained item nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptFileListMethod
+  hi def link typescriptFileListMethod Keyword
+  syntax keyword typescriptBlobMethod contained append getBlob getFile nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptBlobMethod
+  hi def link typescriptBlobMethod Keyword
+  syntax keyword typescriptURLUtilsProp contained hash host hostname href origin password
+  syntax keyword typescriptURLUtilsProp contained pathname port protocol search searchParams
+  syntax keyword typescriptURLUtilsProp contained username
+  syntax cluster props add=typescriptURLUtilsProp
+  hi def link typescriptURLUtilsProp Keyword
+  syntax keyword typescriptURLStaticMethod contained createObjectURL revokeObjectURL nextgroup=typescriptFuncCallArg
+  hi def link typescriptURLStaticMethod Keyword
+
+  "runtime syntax/yats/web-crypto.vim
+  syntax keyword typescriptCryptoGlobal containedin=typescriptIdentifierName crypto
+  hi def link typescriptCryptoGlobal Structure
+  syntax keyword typescriptSubtleCryptoMethod contained encrypt decrypt sign verify nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptSubtleCryptoMethod contained digest nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptSubtleCryptoMethod
+  hi def link typescriptSubtleCryptoMethod Keyword
+  syntax keyword typescriptCryptoProp contained subtle
+  syntax cluster props add=typescriptCryptoProp
+  hi def link typescriptCryptoProp Keyword
+  syntax keyword typescriptCryptoMethod contained getRandomValues nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptCryptoMethod
+  hi def link typescriptCryptoMethod Keyword
+
+  "runtime syntax/yats/web-fetch.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Headers Request
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Response
+  syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName fetch nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptGlobalMethod
+  hi def link typescriptGlobalMethod Structure
+  syntax keyword typescriptHeadersMethod contained append delete get getAll has set nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptHeadersMethod
+  hi def link typescriptHeadersMethod Keyword
+  syntax keyword typescriptRequestProp contained method url headers context referrer
+  syntax keyword typescriptRequestProp contained mode credentials cache
+  syntax cluster props add=typescriptRequestProp
+  hi def link typescriptRequestProp Keyword
+  syntax keyword typescriptRequestMethod contained clone nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptRequestMethod
+  hi def link typescriptRequestMethod Keyword
+  syntax keyword typescriptResponseProp contained type url status statusText headers
+  syntax keyword typescriptResponseProp contained redirected
+  syntax cluster props add=typescriptResponseProp
+  hi def link typescriptResponseProp Keyword
+  syntax keyword typescriptResponseMethod contained clone nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptResponseMethod
+  hi def link typescriptResponseMethod Keyword
+
+  "runtime syntax/yats/web-service-worker.vim
+  syntax keyword typescriptServiceWorkerProp contained controller ready
+  syntax cluster props add=typescriptServiceWorkerProp
+  hi def link typescriptServiceWorkerProp Keyword
+  syntax keyword typescriptServiceWorkerMethod contained register getRegistration nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptServiceWorkerMethod
+  hi def link typescriptServiceWorkerMethod Keyword
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Cache
+  syntax keyword typescriptCacheMethod contained match matchAll add addAll put delete nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptCacheMethod contained keys nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptCacheMethod
+  hi def link typescriptCacheMethod Keyword
+
+  "runtime syntax/yats/web-encoding.vim
+  syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextEncoder
+  syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextDecoder
+  hi def link typescriptEncodingGlobal Structure
+  syntax keyword typescriptEncodingProp contained encoding fatal ignoreBOM
+  syntax cluster props add=typescriptEncodingProp
+  hi def link typescriptEncodingProp Keyword
+  syntax keyword typescriptEncodingMethod contained encode decode nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptEncodingMethod
+  hi def link typescriptEncodingMethod Keyword
+
+  "runtime syntax/yats/web-geo.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName Geolocation
+  syntax keyword typescriptGeolocationMethod contained getCurrentPosition watchPosition nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptGeolocationMethod contained clearWatch nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptGeolocationMethod
+  hi def link typescriptGeolocationMethod Keyword
+
+  "runtime syntax/yats/web-network.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName NetworkInformation
+  syntax keyword typescriptBOMNetworkProp contained downlink downlinkMax effectiveType
+  syntax keyword typescriptBOMNetworkProp contained rtt type
+  syntax cluster props add=typescriptBOMNetworkProp
+  hi def link typescriptBOMNetworkProp Keyword
+
+  "runtime syntax/yats/web-payment.vim
+  syntax keyword typescriptGlobal containedin=typescriptIdentifierName PaymentRequest
+  syntax keyword typescriptPaymentMethod contained show abort canMakePayment nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptPaymentMethod
+  hi def link typescriptPaymentMethod Keyword
+  syntax keyword typescriptPaymentProp contained shippingAddress shippingOption result
+  syntax cluster props add=typescriptPaymentProp
+  hi def link typescriptPaymentProp Keyword
+  syntax keyword typescriptPaymentEvent contained onshippingaddresschange onshippingoptionchange
+  hi def link typescriptPaymentEvent Keyword
+  syntax keyword typescriptPaymentResponseMethod contained complete nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptPaymentResponseMethod
+  hi def link typescriptPaymentResponseMethod Keyword
+  syntax keyword typescriptPaymentResponseProp contained details methodName payerEmail
+  syntax keyword typescriptPaymentResponseProp contained payerPhone shippingAddress
+  syntax keyword typescriptPaymentResponseProp contained shippingOption
+  syntax cluster props add=typescriptPaymentResponseProp
+  hi def link typescriptPaymentResponseProp Keyword
+  syntax keyword typescriptPaymentAddressProp contained addressLine careOf city country
+  syntax keyword typescriptPaymentAddressProp contained country dependentLocality languageCode
+  syntax keyword typescriptPaymentAddressProp contained organization phone postalCode
+  syntax keyword typescriptPaymentAddressProp contained recipient region sortingCode
+  syntax cluster props add=typescriptPaymentAddressProp
+  hi def link typescriptPaymentAddressProp Keyword
+  syntax keyword typescriptPaymentShippingOptionProp contained id label amount selected
+  syntax cluster props add=typescriptPaymentShippingOptionProp
+  hi def link typescriptPaymentShippingOptionProp Keyword
+
+  "runtime syntax/yats/dom-node.vim
+  syntax keyword typescriptDOMNodeProp contained attributes baseURI baseURIObject childNodes
+  syntax keyword typescriptDOMNodeProp contained firstChild lastChild localName namespaceURI
+  syntax keyword typescriptDOMNodeProp contained nextSibling nodeName nodePrincipal
+  syntax keyword typescriptDOMNodeProp contained nodeType nodeValue ownerDocument parentElement
+  syntax keyword typescriptDOMNodeProp contained parentNode prefix previousSibling textContent
+  syntax cluster props add=typescriptDOMNodeProp
+  hi def link typescriptDOMNodeProp Keyword
+  syntax keyword typescriptDOMNodeMethod contained appendChild cloneNode compareDocumentPosition nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMNodeMethod contained getUserData hasAttributes hasChildNodes nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMNodeMethod contained insertBefore isDefaultNamespace isEqualNode nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMNodeMethod contained isSameNode isSupported lookupNamespaceURI nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMNodeMethod contained lookupPrefix normalize removeChild nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMNodeMethod contained replaceChild setUserData nextgroup=typescriptFuncCallArg
+  syntax match typescriptDOMNodeMethod contained /contains/
+  syntax cluster props add=typescriptDOMNodeMethod
+  hi def link typescriptDOMNodeMethod Keyword
+  syntax keyword typescriptDOMNodeType contained ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE
+  syntax keyword typescriptDOMNodeType contained CDATA_SECTION_NODEN_NODE ENTITY_REFERENCE_NODE
+  syntax keyword typescriptDOMNodeType contained ENTITY_NODE PROCESSING_INSTRUCTION_NODEN_NODE
+  syntax keyword typescriptDOMNodeType contained COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE
+  syntax keyword typescriptDOMNodeType contained DOCUMENT_FRAGMENT_NODE NOTATION_NODE
+  hi def link typescriptDOMNodeType Keyword
+
+  "runtime syntax/yats/dom-elem.vim
+  syntax keyword typescriptDOMElemAttrs contained accessKey clientHeight clientLeft
+  syntax keyword typescriptDOMElemAttrs contained clientTop clientWidth id innerHTML
+  syntax keyword typescriptDOMElemAttrs contained length onafterscriptexecute onbeforescriptexecute
+  syntax keyword typescriptDOMElemAttrs contained oncopy oncut onpaste onwheel scrollHeight
+  syntax keyword typescriptDOMElemAttrs contained scrollLeft scrollTop scrollWidth tagName
+  syntax keyword typescriptDOMElemAttrs contained classList className name outerHTML
+  syntax keyword typescriptDOMElemAttrs contained style
+  hi def link typescriptDOMElemAttrs Keyword
+  syntax keyword typescriptDOMElemFuncs contained getAttributeNS getAttributeNode getAttributeNodeNS
+  syntax keyword typescriptDOMElemFuncs contained getBoundingClientRect getClientRects
+  syntax keyword typescriptDOMElemFuncs contained getElementsByClassName getElementsByTagName
+  syntax keyword typescriptDOMElemFuncs contained getElementsByTagNameNS hasAttribute
+  syntax keyword typescriptDOMElemFuncs contained hasAttributeNS insertAdjacentHTML
+  syntax keyword typescriptDOMElemFuncs contained matches querySelector querySelectorAll
+  syntax keyword typescriptDOMElemFuncs contained removeAttribute removeAttributeNS
+  syntax keyword typescriptDOMElemFuncs contained removeAttributeNode requestFullscreen
+  syntax keyword typescriptDOMElemFuncs contained requestPointerLock scrollIntoView
+  syntax keyword typescriptDOMElemFuncs contained setAttribute setAttributeNS setAttributeNode
+  syntax keyword typescriptDOMElemFuncs contained setAttributeNodeNS setCapture supports
+  syntax keyword typescriptDOMElemFuncs contained getAttribute
+  hi def link typescriptDOMElemFuncs Keyword
+
+  "runtime syntax/yats/dom-document.vim
+  syntax keyword typescriptDOMDocProp contained activeElement body cookie defaultView
+  syntax keyword typescriptDOMDocProp contained designMode dir domain embeds forms head
+  syntax keyword typescriptDOMDocProp contained images lastModified links location plugins
+  syntax keyword typescriptDOMDocProp contained postMessage readyState referrer registerElement
+  syntax keyword typescriptDOMDocProp contained scripts styleSheets title vlinkColor
+  syntax keyword typescriptDOMDocProp contained xmlEncoding characterSet compatMode
+  syntax keyword typescriptDOMDocProp contained contentType currentScript doctype documentElement
+  syntax keyword typescriptDOMDocProp contained documentURI documentURIObject firstChild
+  syntax keyword typescriptDOMDocProp contained implementation lastStyleSheetSet namespaceURI
+  syntax keyword typescriptDOMDocProp contained nodePrincipal ononline pointerLockElement
+  syntax keyword typescriptDOMDocProp contained popupNode preferredStyleSheetSet selectedStyleSheetSet
+  syntax keyword typescriptDOMDocProp contained styleSheetSets textContent tooltipNode
+  syntax cluster props add=typescriptDOMDocProp
+  hi def link typescriptDOMDocProp Keyword
+  syntax keyword typescriptDOMDocMethod contained caretPositionFromPoint close createNodeIterator nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained createRange createTreeWalker elementFromPoint nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained getElementsByName adoptNode createAttribute nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained createCDATASection createComment createDocumentFragment nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained createElement createElementNS createEvent nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained createExpression createNSResolver nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained createProcessingInstruction createTextNode nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained enableStyleSheetsForSet evaluate execCommand nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained exitPointerLock getBoxObjectFor getElementById nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained getElementsByClassName getElementsByTagName nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained getElementsByTagNameNS getSelection nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained hasFocus importNode loadOverlay open nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained queryCommandSupported querySelector nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMDocMethod contained querySelectorAll write writeln nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptDOMDocMethod
+  hi def link typescriptDOMDocMethod Keyword
+
+  "runtime syntax/yats/dom-event.vim
+  syntax keyword typescriptDOMEventTargetMethod contained addEventListener removeEventListener nextgroup=typescriptEventFuncCallArg
+  syntax keyword typescriptDOMEventTargetMethod contained dispatchEvent waitUntil nextgroup=typescriptEventFuncCallArg
+  syntax cluster props add=typescriptDOMEventTargetMethod
+  hi def link typescriptDOMEventTargetMethod Keyword
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AnimationEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AudioProcessingEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeInputEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeUnloadEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BlobEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ClipboardEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CloseEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CompositionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CSSFontFaceLoadEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CustomEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceLightEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceMotionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceOrientationEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceProximityEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DOMTransactionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DragEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName EditingBeforeInputEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ErrorEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName FocusEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName GamepadEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName HashChangeEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName IDBVersionChangeEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName KeyboardEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MediaStreamEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MessageEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MouseEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MutationEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName OfflineAudioCompletionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PageTransitionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PointerEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PopStateEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ProgressEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RelatedEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RTCPeerConnectionIceEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SensorEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName StorageEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGZoomEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TimeEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TouchEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TrackEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TransitionEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UIEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UserProximityEvent
+  syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName WheelEvent
+  hi def link typescriptDOMEventCons Structure
+  syntax keyword typescriptDOMEventProp contained bubbles cancelable currentTarget defaultPrevented
+  syntax keyword typescriptDOMEventProp contained eventPhase target timeStamp type isTrusted
+  syntax keyword typescriptDOMEventProp contained isReload
+  syntax cluster props add=typescriptDOMEventProp
+  hi def link typescriptDOMEventProp Keyword
+  syntax keyword typescriptDOMEventMethod contained initEvent preventDefault stopImmediatePropagation nextgroup=typescriptEventFuncCallArg
+  syntax keyword typescriptDOMEventMethod contained stopPropagation respondWith default nextgroup=typescriptEventFuncCallArg
+  syntax cluster props add=typescriptDOMEventMethod
+  hi def link typescriptDOMEventMethod Keyword
+
+  "runtime syntax/yats/dom-storage.vim
+  syntax keyword typescriptDOMStorage contained sessionStorage localStorage
+  hi def link typescriptDOMStorage Keyword
+  syntax keyword typescriptDOMStorageProp contained length
+  syntax cluster props add=typescriptDOMStorageProp
+  hi def link typescriptDOMStorageProp Keyword
+  syntax keyword typescriptDOMStorageMethod contained getItem key setItem removeItem nextgroup=typescriptFuncCallArg
+  syntax keyword typescriptDOMStorageMethod contained clear nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptDOMStorageMethod
+  hi def link typescriptDOMStorageMethod Keyword
+
+  "runtime syntax/yats/dom-form.vim
+  syntax keyword typescriptDOMFormProp contained acceptCharset action elements encoding
+  syntax keyword typescriptDOMFormProp contained enctype length method name target
+  syntax cluster props add=typescriptDOMFormProp
+  hi def link typescriptDOMFormProp Keyword
+  syntax keyword typescriptDOMFormMethod contained reportValidity reset submit nextgroup=typescriptFuncCallArg
+  syntax cluster props add=typescriptDOMFormMethod
+  hi def link typescriptDOMFormMethod Keyword
+
+  "runtime syntax/yats/css.vim
+  syntax keyword typescriptDOMStyle contained alignContent alignItems alignSelf animation
+  syntax keyword typescriptDOMStyle contained animationDelay animationDirection animationDuration
+  syntax keyword typescriptDOMStyle contained animationFillMode animationIterationCount
+  syntax keyword typescriptDOMStyle contained animationName animationPlayState animationTimingFunction
+  syntax keyword typescriptDOMStyle contained appearance backfaceVisibility background
+  syntax keyword typescriptDOMStyle contained backgroundAttachment backgroundBlendMode
+  syntax keyword typescriptDOMStyle contained backgroundClip backgroundColor backgroundImage
+  syntax keyword typescriptDOMStyle contained backgroundOrigin backgroundPosition backgroundRepeat
+  syntax keyword typescriptDOMStyle contained backgroundSize border borderBottom borderBottomColor
+  syntax keyword typescriptDOMStyle contained borderBottomLeftRadius borderBottomRightRadius
+  syntax keyword typescriptDOMStyle contained borderBottomStyle borderBottomWidth borderCollapse
+  syntax keyword typescriptDOMStyle contained borderColor borderImage borderImageOutset
+  syntax keyword typescriptDOMStyle contained borderImageRepeat borderImageSlice borderImageSource
+  syntax keyword typescriptDOMStyle contained borderImageWidth borderLeft borderLeftColor
+  syntax keyword typescriptDOMStyle contained borderLeftStyle borderLeftWidth borderRadius
+  syntax keyword typescriptDOMStyle contained borderRight borderRightColor borderRightStyle
+  syntax keyword typescriptDOMStyle contained borderRightWidth borderSpacing borderStyle
+  syntax keyword typescriptDOMStyle contained borderTop borderTopColor borderTopLeftRadius
+  syntax keyword typescriptDOMStyle contained borderTopRightRadius borderTopStyle borderTopWidth
+  syntax keyword typescriptDOMStyle contained borderWidth bottom boxDecorationBreak
+  syntax keyword typescriptDOMStyle contained boxShadow boxSizing breakAfter breakBefore
+  syntax keyword typescriptDOMStyle contained breakInside captionSide caretColor caretShape
+  syntax keyword typescriptDOMStyle contained caret clear clip clipPath color columns
+  syntax keyword typescriptDOMStyle contained columnCount columnFill columnGap columnRule
+  syntax keyword typescriptDOMStyle contained columnRuleColor columnRuleStyle columnRuleWidth
+  syntax keyword typescriptDOMStyle contained columnSpan columnWidth content counterIncrement
+  syntax keyword typescriptDOMStyle contained counterReset cursor direction display
+  syntax keyword typescriptDOMStyle contained emptyCells flex flexBasis flexDirection
+  syntax keyword typescriptDOMStyle contained flexFlow flexGrow flexShrink flexWrap
+  syntax keyword typescriptDOMStyle contained float font fontFamily fontFeatureSettings
+  syntax keyword typescriptDOMStyle contained fontKerning fontLanguageOverride fontSize
+  syntax keyword typescriptDOMStyle contained fontSizeAdjust fontStretch fontStyle fontSynthesis
+  syntax keyword typescriptDOMStyle contained fontVariant fontVariantAlternates fontVariantCaps
+  syntax keyword typescriptDOMStyle contained fontVariantEastAsian fontVariantLigatures
+  syntax keyword typescriptDOMStyle contained fontVariantNumeric fontVariantPosition
+  syntax keyword typescriptDOMStyle contained fontWeight grad grid gridArea gridAutoColumns
+  syntax keyword typescriptDOMStyle contained gridAutoFlow gridAutoPosition gridAutoRows
+  syntax keyword typescriptDOMStyle contained gridColumn gridColumnStart gridColumnEnd
+  syntax keyword typescriptDOMStyle contained gridRow gridRowStart gridRowEnd gridTemplate
+  syntax keyword typescriptDOMStyle contained gridTemplateAreas gridTemplateRows gridTemplateColumns
+  syntax keyword typescriptDOMStyle contained height hyphens imageRendering imageResolution
+  syntax keyword typescriptDOMStyle contained imageOrientation imeMode inherit justifyContent
+  syntax keyword typescriptDOMStyle contained left letterSpacing lineBreak lineHeight
+  syntax keyword typescriptDOMStyle contained listStyle listStyleImage listStylePosition
+  syntax keyword typescriptDOMStyle contained listStyleType margin marginBottom marginLeft
+  syntax keyword typescriptDOMStyle contained marginRight marginTop marks mask maskType
+  syntax keyword typescriptDOMStyle contained maxHeight maxWidth minHeight minWidth
+  syntax keyword typescriptDOMStyle contained mixBlendMode objectFit objectPosition
+  syntax keyword typescriptDOMStyle contained opacity order orphans outline outlineColor
+  syntax keyword typescriptDOMStyle contained outlineOffset outlineStyle outlineWidth
+  syntax keyword typescriptDOMStyle contained overflow overflowWrap overflowX overflowY
+  syntax keyword typescriptDOMStyle contained overflowClipBox padding paddingBottom
+  syntax keyword typescriptDOMStyle contained paddingLeft paddingRight paddingTop pageBreakAfter
+  syntax keyword typescriptDOMStyle contained pageBreakBefore pageBreakInside perspective
+  syntax keyword typescriptDOMStyle contained perspectiveOrigin pointerEvents position
+  syntax keyword typescriptDOMStyle contained quotes resize right shapeImageThreshold
+  syntax keyword typescriptDOMStyle contained shapeMargin shapeOutside tableLayout tabSize
+  syntax keyword typescriptDOMStyle contained textAlign textAlignLast textCombineHorizontal
+  syntax keyword typescriptDOMStyle contained textDecoration textDecorationColor textDecorationLine
+  syntax keyword typescriptDOMStyle contained textDecorationStyle textIndent textOrientation
+  syntax keyword typescriptDOMStyle contained textOverflow textRendering textShadow
+  syntax keyword typescriptDOMStyle contained textTransform textUnderlinePosition top
+  syntax keyword typescriptDOMStyle contained touchAction transform transformOrigin
+  syntax keyword typescriptDOMStyle contained transformStyle transition transitionDelay
+  syntax keyword typescriptDOMStyle contained transitionDuration transitionProperty
+  syntax keyword typescriptDOMStyle contained transitionTimingFunction unicodeBidi unicodeRange
+  syntax keyword typescriptDOMStyle contained userSelect userZoom verticalAlign visibility
+  syntax keyword typescriptDOMStyle contained whiteSpace width willChange wordBreak
+  syntax keyword typescriptDOMStyle contained wordSpacing wordWrap writingMode zIndex
+  hi def link typescriptDOMStyle Keyword
+
+
+
+  let typescript_props = 1
+
+  "runtime syntax/yats/event.vim
+  syntax keyword typescriptAnimationEvent contained animationend animationiteration
+  syntax keyword typescriptAnimationEvent contained animationstart beginEvent endEvent
+  syntax keyword typescriptAnimationEvent contained repeatEvent
+  syntax cluster events add=typescriptAnimationEvent
+  hi def link typescriptAnimationEvent Title
+  syntax keyword typescriptCSSEvent contained CssRuleViewRefreshed CssRuleViewChanged
+  syntax keyword typescriptCSSEvent contained CssRuleViewCSSLinkClicked transitionend
+  syntax cluster events add=typescriptCSSEvent
+  hi def link typescriptCSSEvent Title
+  syntax keyword typescriptDatabaseEvent contained blocked complete error success upgradeneeded
+  syntax keyword typescriptDatabaseEvent contained versionchange
+  syntax cluster events add=typescriptDatabaseEvent
+  hi def link typescriptDatabaseEvent Title
+  syntax keyword typescriptDocumentEvent contained DOMLinkAdded DOMLinkRemoved DOMMetaAdded
+  syntax keyword typescriptDocumentEvent contained DOMMetaRemoved DOMWillOpenModalDialog
+  syntax keyword typescriptDocumentEvent contained DOMModalDialogClosed unload
+  syntax cluster events add=typescriptDocumentEvent
+  hi def link typescriptDocumentEvent Title
+  syntax keyword typescriptDOMMutationEvent contained DOMAttributeNameChanged DOMAttrModified
+  syntax keyword typescriptDOMMutationEvent contained DOMCharacterDataModified DOMContentLoaded
+  syntax keyword typescriptDOMMutationEvent contained DOMElementNameChanged DOMNodeInserted
+  syntax keyword typescriptDOMMutationEvent contained DOMNodeInsertedIntoDocument DOMNodeRemoved
+  syntax keyword typescriptDOMMutationEvent contained DOMNodeRemovedFromDocument DOMSubtreeModified
+  syntax cluster events add=typescriptDOMMutationEvent
+  hi def link typescriptDOMMutationEvent Title
+  syntax keyword typescriptDragEvent contained drag dragdrop dragend dragenter dragexit
+  syntax keyword typescriptDragEvent contained draggesture dragleave dragover dragstart
+  syntax keyword typescriptDragEvent contained drop
+  syntax cluster events add=typescriptDragEvent
+  hi def link typescriptDragEvent Title
+  syntax keyword typescriptElementEvent contained invalid overflow underflow DOMAutoComplete
+  syntax keyword typescriptElementEvent contained command commandupdate
+  syntax cluster events add=typescriptElementEvent
+  hi def link typescriptElementEvent Title
+  syntax keyword typescriptFocusEvent contained blur change DOMFocusIn DOMFocusOut focus
+  syntax keyword typescriptFocusEvent contained focusin focusout
+  syntax cluster events add=typescriptFocusEvent
+  hi def link typescriptFocusEvent Title
+  syntax keyword typescriptFormEvent contained reset submit
+  syntax cluster events add=typescriptFormEvent
+  hi def link typescriptFormEvent Title
+  syntax keyword typescriptFrameEvent contained DOMFrameContentLoaded
+  syntax cluster events add=typescriptFrameEvent
+  hi def link typescriptFrameEvent Title
+  syntax keyword typescriptInputDeviceEvent contained click contextmenu DOMMouseScroll
+  syntax keyword typescriptInputDeviceEvent contained dblclick gamepadconnected gamepaddisconnected
+  syntax keyword typescriptInputDeviceEvent contained keydown keypress keyup MozGamepadButtonDown
+  syntax keyword typescriptInputDeviceEvent contained MozGamepadButtonUp mousedown mouseenter
+  syntax keyword typescriptInputDeviceEvent contained mouseleave mousemove mouseout
+  syntax keyword typescriptInputDeviceEvent contained mouseover mouseup mousewheel MozMousePixelScroll
+  syntax keyword typescriptInputDeviceEvent contained pointerlockchange pointerlockerror
+  syntax keyword typescriptInputDeviceEvent contained wheel
+  syntax cluster events add=typescriptInputDeviceEvent
+  hi def link typescriptInputDeviceEvent Title
+  syntax keyword typescriptMediaEvent contained audioprocess canplay canplaythrough
+  syntax keyword typescriptMediaEvent contained durationchange emptied ended ended loadeddata
+  syntax keyword typescriptMediaEvent contained loadedmetadata MozAudioAvailable pause
+  syntax keyword typescriptMediaEvent contained play playing ratechange seeked seeking
+  syntax keyword typescriptMediaEvent contained stalled suspend timeupdate volumechange
+  syntax keyword typescriptMediaEvent contained waiting complete
+  syntax cluster events add=typescriptMediaEvent
+  hi def link typescriptMediaEvent Title
+  syntax keyword typescriptMenuEvent contained DOMMenuItemActive DOMMenuItemInactive
+  syntax cluster events add=typescriptMenuEvent
+  hi def link typescriptMenuEvent Title
+  syntax keyword typescriptNetworkEvent contained datachange dataerror disabled enabled
+  syntax keyword typescriptNetworkEvent contained offline online statuschange connectionInfoUpdate
+  syntax cluster events add=typescriptNetworkEvent
+  hi def link typescriptNetworkEvent Title
+  syntax keyword typescriptProgressEvent contained abort error load loadend loadstart
+  syntax keyword typescriptProgressEvent contained progress timeout uploadprogress
+  syntax cluster events add=typescriptProgressEvent
+  hi def link typescriptProgressEvent Title
+  syntax keyword typescriptResourceEvent contained cached error load
+  syntax cluster events add=typescriptResourceEvent
+  hi def link typescriptResourceEvent Title
+  syntax keyword typescriptScriptEvent contained afterscriptexecute beforescriptexecute
+  syntax cluster events add=typescriptScriptEvent
+  hi def link typescriptScriptEvent Title
+  syntax keyword typescriptSensorEvent contained compassneedscalibration devicelight
+  syntax keyword typescriptSensorEvent contained devicemotion deviceorientation deviceproximity
+  syntax keyword typescriptSensorEvent contained orientationchange userproximity
+  syntax cluster events add=typescriptSensorEvent
+  hi def link typescriptSensorEvent Title
+  syntax keyword typescriptSessionHistoryEvent contained pagehide pageshow popstate
+  syntax cluster events add=typescriptSessionHistoryEvent
+  hi def link typescriptSessionHistoryEvent Title
+  syntax keyword typescriptStorageEvent contained change storage
+  syntax cluster events add=typescriptStorageEvent
+  hi def link typescriptStorageEvent Title
+  syntax keyword typescriptSVGEvent contained SVGAbort SVGError SVGLoad SVGResize SVGScroll
+  syntax keyword typescriptSVGEvent contained SVGUnload SVGZoom
+  syntax cluster events add=typescriptSVGEvent
+  hi def link typescriptSVGEvent Title
+  syntax keyword typescriptTabEvent contained visibilitychange
+  syntax cluster events add=typescriptTabEvent
+  hi def link typescriptTabEvent Title
+  syntax keyword typescriptTextEvent contained compositionend compositionstart compositionupdate
+  syntax keyword typescriptTextEvent contained copy cut paste select text
+  syntax cluster events add=typescriptTextEvent
+  hi def link typescriptTextEvent Title
+  syntax keyword typescriptTouchEvent contained touchcancel touchend touchenter touchleave
+  syntax keyword typescriptTouchEvent contained touchmove touchstart
+  syntax cluster events add=typescriptTouchEvent
+  hi def link typescriptTouchEvent Title
+  syntax keyword typescriptUpdateEvent contained checking downloading error noupdate
+  syntax keyword typescriptUpdateEvent contained obsolete updateready
+  syntax cluster events add=typescriptUpdateEvent
+  hi def link typescriptUpdateEvent Title
+  syntax keyword typescriptValueChangeEvent contained hashchange input readystatechange
+  syntax cluster events add=typescriptValueChangeEvent
+  hi def link typescriptValueChangeEvent Title
+  syntax keyword typescriptViewEvent contained fullscreen fullscreenchange fullscreenerror
+  syntax keyword typescriptViewEvent contained resize scroll
+  syntax cluster events add=typescriptViewEvent
+  hi def link typescriptViewEvent Title
+  syntax keyword typescriptWebsocketEvent contained close error message open
+  syntax cluster events add=typescriptWebsocketEvent
+  hi def link typescriptWebsocketEvent Title
+  syntax keyword typescriptWindowEvent contained DOMWindowCreated DOMWindowClose DOMTitleChanged
+  syntax cluster events add=typescriptWindowEvent
+  hi def link typescriptWindowEvent Title
+  syntax keyword typescriptUncategorizedEvent contained beforeunload message open show
+  syntax cluster events add=typescriptUncategorizedEvent
+  hi def link typescriptUncategorizedEvent Title
+  syntax keyword typescriptServiceWorkerEvent contained install activate fetch
+  syntax cluster events add=typescriptServiceWorkerEvent
+  hi def link typescriptServiceWorkerEvent Title
+
+
+endif
+
+" patch
+"runtime syntax/basic/patch.vim
+" patch for generated code
+syntax keyword typescriptGlobal Promise
+  \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
+syntax keyword typescriptGlobal Map WeakMap
+  \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
+
+"runtime syntax/basic/members.vim
+syntax keyword typescriptConstructor           contained constructor
+  \ nextgroup=@typescriptCallSignature
+  \ skipwhite skipempty
+
+
+syntax cluster memberNextGroup contains=typescriptMemberOptionality,typescriptTypeAnnotation,@typescriptCallSignature
+
+syntax match typescriptMember /\K\k*/
+  \ nextgroup=@memberNextGroup
+  \ contained skipwhite
+
+syntax match typescriptMethodAccessor contained /\v(get|set)\s\K/me=e-1
+  \ nextgroup=@typescriptMembers
+
+syntax cluster typescriptPropertyMemberDeclaration contains=
+  \ typescriptClassStatic,
+  \ typescriptAccessibilityModifier,
+  \ typescriptReadonlyModifier,
+  \ typescriptMethodAccessor,
+  \ @typescriptMembers
+  " \ typescriptMemberVariableDeclaration
+
+syntax match typescriptMemberOptionality /?\|!/ contained
+  \ nextgroup=typescriptTypeAnnotation,@typescriptCallSignature
+  \ skipwhite skipempty
+
+syntax cluster typescriptMembers contains=typescriptMember,typescriptStringMember,typescriptComputedMember
+
+syntax keyword typescriptClassStatic static
+  \ nextgroup=@typescriptMembers,typescriptAsyncFuncKeyword,typescriptReadonlyModifier
+  \ skipwhite contained
+
+syntax keyword typescriptAccessibilityModifier public private protected contained
+
+syntax keyword typescriptReadonlyModifier readonly contained
+
+syntax region  typescriptStringMember   contained
+  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1/
+  \ nextgroup=@memberNextGroup
+  \ skipwhite skipempty
+
+syntax region  typescriptComputedMember   contained matchgroup=typescriptProperty
+  \ start=/\[/rs=s+1 end=/]/
+  \ contains=@typescriptValue,typescriptMember,typescriptMappedIn
+  \ nextgroup=@memberNextGroup
+  \ skipwhite skipempty
+
+"runtime syntax/basic/class.vim
+"don't add typescriptMembers to nextgroup, let outer scope match it
+" so we won't match abstract method outside abstract class
+syntax keyword typescriptAbstract              abstract
+  \ nextgroup=typescriptClassKeyword
+  \ skipwhite skipnl
+syntax keyword typescriptClassKeyword          class
+  \ nextgroup=typescriptClassName,typescriptClassExtends,typescriptClassBlock
+  \ skipwhite
+
+syntax match   typescriptClassName             contained /\K\k*/
+  \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptClassTypeParameter
+  \ skipwhite skipnl
+
+syntax region typescriptClassTypeParameter
+  \ start=/</ end=/>/
+  \ contains=typescriptTypeParameter
+  \ nextgroup=typescriptClassBlock,typescriptClassExtends
+  \ contained skipwhite skipnl
+
+syntax keyword typescriptClassExtends          contained extends implements nextgroup=typescriptClassHeritage skipwhite skipnl
+
+syntax match   typescriptClassHeritage         contained /\v(\k|\.|\(|\))+/
+  \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptMixinComma,typescriptClassTypeArguments
+  \ contains=@typescriptValue
+  \ skipwhite skipnl
+  \ contained
+
+syntax region typescriptClassTypeArguments matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/
+  \ contains=@typescriptType
+  \ nextgroup=typescriptClassExtends,typescriptClassBlock,typescriptMixinComma
+  \ contained skipwhite skipnl
+
+syntax match typescriptMixinComma /,/ contained nextgroup=typescriptClassHeritage skipwhite skipnl
+
+" we need add arrowFunc to class block for high order arrow func
+" see test case
+syntax region  typescriptClassBlock matchgroup=typescriptBraces start=/{/ end=/}/
+  \ contains=@typescriptPropertyMemberDeclaration,typescriptAbstract,@typescriptComments,typescriptBlock,typescriptAssign,typescriptDecorator,typescriptAsyncFuncKeyword,typescriptArrowFunc
+  \ contained fold
+
+syntax keyword typescriptInterfaceKeyword          interface nextgroup=typescriptInterfaceName skipwhite
+syntax match   typescriptInterfaceName             contained /\k\+/
+  \ nextgroup=typescriptObjectType,typescriptInterfaceExtends,typescriptInterfaceTypeParameter
+  \ skipwhite skipnl
+syntax region typescriptInterfaceTypeParameter
+  \ start=/</ end=/>/
+  \ contains=typescriptTypeParameter
+  \ nextgroup=typescriptObjectType,typescriptInterfaceExtends
+  \ contained
+  \ skipwhite skipnl
+
+syntax keyword typescriptInterfaceExtends          contained extends nextgroup=typescriptInterfaceHeritage skipwhite skipnl
+
+syntax match typescriptInterfaceHeritage contained /\v(\k|\.)+/
+  \ nextgroup=typescriptObjectType,typescriptInterfaceComma,typescriptInterfaceTypeArguments
+  \ skipwhite
+
+syntax region typescriptInterfaceTypeArguments matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/ skip=/\s*,\s*/
+  \ contains=@typescriptType
+  \ nextgroup=typescriptObjectType,typescriptInterfaceComma
+  \ contained skipwhite
+
+syntax match typescriptInterfaceComma /,/ contained nextgroup=typescriptInterfaceHeritage skipwhite skipnl
+
+"runtime syntax/basic/cluster.vim
+"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
+syntax cluster typescriptStatement
+  \ contains=typescriptBlock,typescriptVariable,
+  \ @typescriptTopExpression,typescriptAssign,
+  \ typescriptConditional,typescriptRepeat,typescriptBranch,
+  \ typescriptLabel,typescriptStatementKeyword,
+  \ typescriptFuncKeyword,
+  \ typescriptTry,typescriptExceptions,typescriptDebugger,
+  \ typescriptExport,typescriptInterfaceKeyword,typescriptEnum,
+  \ typescriptModule,typescriptAliasKeyword,typescriptImport
+
+syntax cluster typescriptPrimitive  contains=typescriptString,typescriptTemplate,typescriptRegexpString,typescriptNumber,typescriptBoolean,typescriptNull,typescriptArray
+
+syntax cluster typescriptEventTypes            contains=typescriptEventString,typescriptTemplate,typescriptNumber,typescriptBoolean,typescriptNull
+
+" top level expression: no arrow func
+" also no func keyword. funcKeyword is contained in statement
+" funcKeyword allows overloading (func without body)
+" funcImpl requires body
+syntax cluster typescriptTopExpression
+  \ contains=@typescriptPrimitive,
+  \ typescriptIdentifier,typescriptIdentifierName,
+  \ typescriptOperator,typescriptUnaryOp,
+  \ typescriptParenExp,typescriptRegexpString,
+  \ typescriptGlobal,typescriptAsyncFuncKeyword,
+  \ typescriptClassKeyword,typescriptTypeCast
+
+" no object literal, used in type cast and arrow func
+" TODO: change func keyword to funcImpl
+syntax cluster typescriptExpression
+  \ contains=@typescriptTopExpression,
+  \ typescriptArrowFuncDef,
+  \ typescriptFuncImpl
+
+syntax cluster typescriptValue
+  \ contains=@typescriptExpression,typescriptObjectLiteral
+
+syntax cluster typescriptEventExpression       contains=typescriptArrowFuncDef,typescriptParenExp,@typescriptValue,typescriptRegexpString,@typescriptEventTypes,typescriptOperator,typescriptGlobal,jsxRegion
+
+"runtime syntax/basic/function.vim
+syntax keyword typescriptAsyncFuncKeyword      async
+  \ nextgroup=typescriptFuncKeyword,typescriptArrowFuncDef
+  \ skipwhite
+
+syntax keyword typescriptAsyncFuncKeyword      await
+  \ nextgroup=@typescriptValue
+  \ skipwhite
+
+syntax keyword typescriptFuncKeyword           function
+  \ nextgroup=typescriptAsyncFunc,typescriptFuncName,@typescriptCallSignature
+  \ skipwhite skipempty
+
+syntax match   typescriptAsyncFunc             contained /*/
+  \ nextgroup=typescriptFuncName,@typescriptCallSignature
+  \ skipwhite skipempty
+
+syntax match   typescriptFuncName              contained /\K\k*/
+  \ nextgroup=@typescriptCallSignature
+  \ skipwhite
+
+" destructuring ({ a: ee }) =>
+syntax match   typescriptArrowFuncDef          contained /({\_[^}]*}\(:\_[^)]\)\?)\s*=>/
+  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+  \ nextgroup=@typescriptExpression,typescriptBlock
+  \ skipwhite skipempty
+
+" matches `(a) =>` or `([a]) =>` or
+" `(
+"  a) =>`
+syntax match   typescriptArrowFuncDef          contained /(\(\_s*[a-zA-Z\$_\[]\_[^)]*\)*)\s*=>/
+  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+  \ nextgroup=@typescriptExpression,typescriptBlock
+  \ skipwhite skipempty
+
+syntax match   typescriptArrowFuncDef          contained /\K\k*\s*=>/
+  \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+  \ nextgroup=@typescriptExpression,typescriptBlock
+  \ skipwhite skipempty
+
+" TODO: optimize this pattern
+syntax region   typescriptArrowFuncDef          contained start=/(\_[^)]*):/ end=/=>/
+  \ contains=typescriptArrowFuncArg,typescriptArrowFunc,typescriptTypeAnnotation
+  \ nextgroup=@typescriptExpression,typescriptBlock
+  \ skipwhite skipempty keepend
+
+syntax match   typescriptArrowFunc             /=>/
+syntax match   typescriptArrowFuncArg          contained /\K\k*/
+syntax region  typescriptArrowFuncArg          contained start=/<\|(/ end=/\ze=>/ contains=@typescriptCallSignature
+
+syntax region typescriptReturnAnnotation contained start=/:/ end=/{/me=e-1 contains=@typescriptType nextgroup=typescriptBlock
+
+
+syntax region typescriptFuncImpl contained start=/function/ end=/{/me=e-1
+  \ contains=typescriptFuncKeyword
+  \ nextgroup=typescriptBlock
+
+syntax cluster typescriptCallImpl contains=typescriptGenericImpl,typescriptParamImpl
+syntax region typescriptGenericImpl matchgroup=typescriptTypeBrackets
+  \ start=/</ end=/>/ skip=/\s*,\s*/
+  \ contains=typescriptTypeParameter
+  \ nextgroup=typescriptParamImpl
+  \ contained skipwhite
+syntax region typescriptParamImpl matchgroup=typescriptParens
+  \ start=/(/ end=/)/
+  \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
+  \ nextgroup=typescriptReturnAnnotation,typescriptBlock
+  \ contained skipwhite skipnl
+
+"runtime syntax/basic/decorator.vim
+syntax match typescriptDecorator /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/
+  \ nextgroup=typescriptArgumentList
+  \ contains=@_semantic,typescriptDotNotation
+
+" Define the default highlighting.
+hi def link typescriptReserved             Error
+
+hi def link typescriptEndColons            Exception
+hi def link typescriptSymbols              Normal
+hi def link typescriptBraces               Function
+hi def link typescriptParens               Normal
+hi def link typescriptComment              Comment
+hi def link typescriptLineComment          Comment
+hi def link typescriptDocComment           Comment
+hi def link typescriptCommentTodo          Todo
+hi def link typescriptRef                  Include
+hi def link typescriptDocNotation          SpecialComment
+hi def link typescriptDocTags              SpecialComment
+hi def link typescriptDocNGParam           typescriptDocParam
+hi def link typescriptDocParam             Function
+hi def link typescriptDocNumParam          Function
+hi def link typescriptDocEventRef          Function
+hi def link typescriptDocNamedParamType    Type
+hi def link typescriptDocParamName         Type
+hi def link typescriptDocParamType         Type
+hi def link typescriptString               String
+hi def link typescriptSpecial              Special
+hi def link typescriptStringLiteralType    String
+hi def link typescriptStringMember         String
+hi def link typescriptTemplate             String
+hi def link typescriptEventString          String
+hi def link typescriptASCII                Special
+hi def link typescriptTemplateSB           Label
+hi def link typescriptRegexpString         String
+hi def link typescriptGlobal               Constant
+hi def link typescriptPrototype            Type
+hi def link typescriptConditional          Conditional
+hi def link typescriptConditionalElse      Conditional
+hi def link typescriptCase                 Conditional
+hi def link typescriptDefault              typescriptCase
+hi def link typescriptBranch               Conditional
+hi def link typescriptIdentifier           Structure
+hi def link typescriptVariable             Identifier
+hi def link typescriptEnumKeyword          Identifier
+hi def link typescriptRepeat               Repeat
+hi def link typescriptForOperator          Repeat
+hi def link typescriptStatementKeyword     Statement
+hi def link typescriptMessage              Keyword
+hi def link typescriptOperator             Identifier
+hi def link typescriptKeywordOp            Identifier
+hi def link typescriptCastKeyword          Special
+hi def link typescriptType                 Type
+hi def link typescriptNull                 Boolean
+hi def link typescriptNumber               Number
+hi def link typescriptExponent             Number
+hi def link typescriptBoolean              Boolean
+hi def link typescriptObjectLabel          typescriptLabel
+hi def link typescriptLabel                Label
+hi def link typescriptStringProperty       String
+hi def link typescriptImport               Special
+hi def link typescriptAmbientDeclaration   Special
+hi def link typescriptExport               Special
+hi def link typescriptModule               Special
+hi def link typescriptTry                  Special
+hi def link typescriptExceptions           Special
+
+hi def link typescriptMember              Function
+hi def link typescriptMethodAccessor       Operator
+
+hi def link typescriptAsyncFuncKeyword     Keyword
+hi def link typescriptAsyncFor             Keyword
+hi def link typescriptFuncKeyword          Keyword
+hi def link typescriptAsyncFunc            Keyword
+hi def link typescriptArrowFunc            Type
+hi def link typescriptFuncName             Function
+hi def link typescriptFuncArg              PreProc
+hi def link typescriptArrowFuncArg         PreProc
+hi def link typescriptFuncComma            Operator
+
+hi def link typescriptClassKeyword         Keyword
+hi def link typescriptClassExtends         Keyword
+" hi def link typescriptClassName            Function
+hi def link typescriptAbstract             Special
+" hi def link typescriptClassHeritage        Function
+" hi def link typescriptInterfaceHeritage    Function
+hi def link typescriptClassStatic          StorageClass
+hi def link typescriptReadonlyModifier     Keyword
+hi def link typescriptInterfaceKeyword     Keyword
+hi def link typescriptInterfaceExtends     Keyword
+hi def link typescriptInterfaceName        Function
+
+hi def link shellbang                      Comment
+
+hi def link typescriptTypeParameter         Identifier
+hi def link typescriptConstraint            Keyword
+hi def link typescriptPredefinedType        Type
+hi def link typescriptReadonlyArrayKeyword  Keyword
+hi def link typescriptUnion                 Operator
+hi def link typescriptFuncTypeArrow         Function
+hi def link typescriptConstructorType       Function
+hi def link typescriptTypeQuery             Keyword
+hi def link typescriptAccessibilityModifier Keyword
+hi def link typescriptOptionalMark          PreProc
+hi def link typescriptFuncType              Special
+hi def link typescriptMappedIn              Special
+hi def link typescriptCall                  PreProc
+hi def link typescriptParamImpl             PreProc
+hi def link typescriptConstructSignature    Identifier
+hi def link typescriptAliasDeclaration      Identifier
+hi def link typescriptAliasKeyword          Keyword
+hi def link typescriptUserDefinedType       Keyword
+hi def link typescriptTypeReference         Identifier
+hi def link typescriptConstructor           Keyword
+hi def link typescriptDecorator             Special
+
+hi link typeScript             NONE
+
+if exists('s:cpo_save')
+  let &cpo = s:cpo_save
+  unlet s:cpo_save
+endif
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/typescriptreact.vim
@@ -0,0 +1,160 @@
+" Vim syntax file
+" Language:     TypeScript with React (JSX)
+" Maintainer:   Bram Moolenaar
+" Last Change:	2019 Nov 17
+" Based On:     Herrington Darkholme's yats.vim
+" Changes:      See https:github.com/HerringtonDarkholme/yats.vim
+" Credits:      See yats.vim on github
+
+if !exists("main_syntax")
+  if exists("b:current_syntax")
+    finish
+  endif
+  let main_syntax = 'typescriptreact'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax region tsxTag
+      \ start=+<\([^/!?<>="':]\+\)\@=+
+      \ skip=+</[^ /!?<>"']\+>+
+      \ end=+/\@<!>+
+      \ end=+\(/>\)\@=+
+      \ contained
+      \ contains=tsxTagName,tsxIntrinsicTagName,tsxAttrib,tsxEscJs,
+                \tsxCloseString,@tsxComment
+
+syntax match tsxTag /<>/ contained
+
+
+" <tag></tag>
+" s~~~~~~~~~e
+" and self close tag
+" <tag/>
+" s~~~~e
+" A big start regexp borrowed from https://git.io/vDyxc
+syntax region tsxRegion
+      \ start=+<\_s*\z([a-zA-Z1-9\$_-]\+\(\.\k\+\)*\)+
+      \ skip=+<!--\_.\{-}-->+
+      \ end=+</\_s*\z1>+
+      \ matchgroup=tsxCloseString end=+/>+
+      \ fold
+      \ contains=tsxRegion,tsxCloseString,tsxCloseTag,tsxTag,tsxCommentInvalid,tsxFragment,tsxEscJs,@Spell
+      \ keepend
+      \ extend
+
+" <>   </>
+" s~~~~~~e
+" A big start regexp borrowed from https://git.io/vDyxc
+syntax region tsxFragment
+      \ start=+\(\((\|{\|}\|\[\|,\|&&\|||\|?\|:\|=\|=>\|\Wreturn\|^return\|\Wdefault\|^\|>\)\_s*\)\@<=<>+
+      \ skip=+<!--\_.\{-}-->+
+      \ end=+</>+
+      \ fold
+      \ contains=tsxRegion,tsxCloseString,tsxCloseTag,tsxTag,tsxCommentInvalid,tsxFragment,tsxEscJs,@Spell
+      \ keepend
+      \ extend
+
+" </tag>
+" ~~~~~~
+syntax match tsxCloseTag
+      \ +</\_s*[^/!?<>"']\+>+
+      \ contained
+      \ contains=tsxTagName,tsxIntrinsicTagName
+
+syntax match tsxCloseTag +</>+ contained
+
+syntax match tsxCloseString
+      \ +/>+
+      \ contained
+
+" <!-- -->
+" ~~~~~~~~
+syntax match tsxCommentInvalid /<!--\_.\{-}-->/ display
+
+syntax region tsxBlockComment
+    \ contained
+    \ start="/\*"
+    \ end="\*/"
+
+syntax match tsxLineComment
+    \ "//.*$"
+    \ contained
+    \ display
+
+syntax cluster tsxComment contains=tsxBlockComment,tsxLineComment
+
+syntax match tsxEntity "&[^; \t]*;" contains=tsxEntityPunct
+syntax match tsxEntityPunct contained "[&.;]"
+
+" <tag key={this.props.key}>
+"  ~~~
+syntax match tsxTagName
+    \ +[</]\_s*[^/!?<>"'* ]\++hs=s+1
+    \ contained
+    \ nextgroup=tsxAttrib
+    \ skipwhite
+    \ display
+syntax match tsxIntrinsicTagName
+    \ +[</]\_s*[a-z1-9-]\++hs=s+1
+    \ contained
+    \ nextgroup=tsxAttrib
+    \ skipwhite
+    \ display
+
+" <tag key={this.props.key}>
+"      ~~~
+syntax match tsxAttrib
+    \ +[a-zA-Z_][-0-9a-zA-Z_]*+
+    \ nextgroup=tsxEqual skipwhite
+    \ contained
+    \ display
+
+" <tag id="sample">
+"        ~
+syntax match tsxEqual +=+ display contained
+  \ nextgroup=tsxString skipwhite
+
+" <tag id="sample">
+"         s~~~~~~e
+syntax region tsxString contained start=+"+ end=+"+ contains=tsxEntity,@Spell display
+
+" <tag key={this.props.key}>
+"          s~~~~~~~~~~~~~~e
+syntax region tsxEscJs
+    \ contained
+    \ contains=@typescriptValue,@tsxComment
+    \ matchgroup=typescriptBraces
+    \ start=+{+
+    \ end=+}+
+    \ extend
+
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""
+" Source the part common with typescriptreact.vim
+source <sfile>:h/typescriptcommon.vim
+
+
+syntax cluster typescriptExpression add=tsxRegion,tsxFragment
+
+hi def link tsxTag htmlTag
+hi def link tsxTagName Function
+hi def link tsxIntrinsicTagName htmlTagName
+hi def link tsxString String
+hi def link tsxNameSpace Function
+hi def link tsxCommentInvalid Error
+hi def link tsxBlockComment Comment
+hi def link tsxLineComment Comment
+hi def link tsxAttrib Type
+hi def link tsxEscJs tsxEscapeJs
+hi def link tsxCloseTag htmlTag
+hi def link tsxCloseString Identifier
+
+let b:current_syntax = "typescriptreact"
+if main_syntax == 'typescriptreact'
+  unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/tutor/tutor.es
+++ b/runtime/tutor/tutor.es
@@ -8,7 +8,7 @@
      aprender fácilmente a usar Vim como un editor de propósito general.
 
      El tiempo necesario para completar el tutor es aproximadamente de 25-30
-     minutos, dependiendo de cuanto tiempo se dedique a la experimentación.
+     minutos, dependiendo de cuánto tiempo se dedique a la experimentación.
 
      Los mandatos de estas lecciones modificarán el texto. Haga una copia de
      este fichero para practicar (con «vimtutor» esto ya es una copia).
@@ -98,7 +98,7 @@ NOTA: A medida que vaya avanzando en est
 
   1. Mueva el cursor a la primera línea de abajo señalada con --->.
 
-  2. Para que la primera línea se igual a la segunda mueva el cursor bajo el
+  2. Para que la primera línea sea igual a la segunda, mueva el cursor bajo el
      primer carácter que sigue al texto que ha de ser insertado.
 
   3. Pulse  i  y escriba los caracteres a añadir.
@@ -109,7 +109,7 @@ NOTA: A medida que vaya avanzando en est
 ---> Flta texto en esta .
 ---> Falta algo de texto en esta línea.
 
-  5. Cuando se sienta cómodo insertando texto pase al resumen que esta más
+  5. Cuando se sienta cómodo insertando texto pase al resumen que está más
      abajo.
 
 
@@ -224,8 +224,8 @@ NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal
       3) El cielo es azul,
       4) Yo tengo un coche,
       5) Los relojes marcan la hora,
-      6) El azucar es dulce,
-      7) Y así eres tu.
+      6) El azúcar es dulce,
+      7) Y así eres tú.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		       Lección 2.5: EL MANDATO DESHACER
@@ -288,7 +288,7 @@ NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal
 
   5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto.
 
-     d) ¿Puedes aprenderla tu?
+     d) ¿Puedes aprenderla tú?
      b) Las violetas son azules,
      c) La inteligencia se aprende,
      a) Las rosas son rojas,
@@ -593,7 +593,7 @@ NOTA: El fichero recuperado se sitúa a partir de la posición del cursor.
 	  :!dir - muestra el contenido de un directorio.
 	  :!del NOMBRE_DE_FICHERO  -  borra el fichero NOMBRE_DE FICHERO.
 
-  2.  :#,#w NOMBRE_DE _FICHERO  guarda desde las líneas # hasta la # en el
+  2.  :#,#w NOMBRE_DE _FICHERO  guarda desde la línea # hasta la # en el
      fichero NOMBRE_DE_FICHERO.
 
   3.  :r NOMBRE_DE _FICHERO  recupera el fichero del disco NOMBRE_DE FICHERO
--- a/runtime/tutor/tutor.es.utf-8
+++ b/runtime/tutor/tutor.es.utf-8
@@ -8,7 +8,7 @@
      aprender fácilmente a usar Vim como un editor de propósito general.
 
      El tiempo necesario para completar el tutor es aproximadamente de 25-30
-     minutos, dependiendo de cuanto tiempo se dedique a la experimentación.
+     minutos, dependiendo de cuánto tiempo se dedique a la experimentación.
 
      Los mandatos de estas lecciones modificarán el texto. Haga una copia de
      este fichero para practicar (con «vimtutor» esto ya es una copia).
@@ -98,7 +98,7 @@ NOTA: A medida que vaya avanzando en est
 
   1. Mueva el cursor a la primera línea de abajo señalada con --->.
 
-  2. Para que la primera línea se igual a la segunda mueva el cursor bajo el
+  2. Para que la primera línea sea igual a la segunda, mueva el cursor bajo el
      primer carácter que sigue al texto que ha de ser insertado.
 
   3. Pulse  i  y escriba los caracteres a añadir.
@@ -109,7 +109,7 @@ NOTA: A medida que vaya avanzando en est
 ---> Flta texto en esta .
 ---> Falta algo de texto en esta línea.
 
-  5. Cuando se sienta cómodo insertando texto pase al resumen que esta más
+  5. Cuando se sienta cómodo insertando texto pase al resumen que está más
      abajo.
 
 
@@ -224,8 +224,8 @@ NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal
       3) El cielo es azul,
       4) Yo tengo un coche,
       5) Los relojes marcan la hora,
-      6) El azucar es dulce,
-      7) Y así eres tu.
+      6) El azúcar es dulce,
+      7) Y así eres tú.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		       Lección 2.5: EL MANDATO DESHACER
@@ -288,7 +288,7 @@ NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal
 
   5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto.
 
-     d) ¿Puedes aprenderla tu?
+     d) ¿Puedes aprenderla tú?
      b) Las violetas son azules,
      c) La inteligencia se aprende,
      a) Las rosas son rojas,
@@ -593,7 +593,7 @@ NOTA: El fichero recuperado se sitúa a partir de la posición del cursor.
 	  :!dir - muestra el contenido de un directorio.
 	  :!del NOMBRE_DE_FICHERO  -  borra el fichero NOMBRE_DE FICHERO.
 
-  2.  :#,#w NOMBRE_DE _FICHERO  guarda desde las líneas # hasta la # en el
+  2.  :#,#w NOMBRE_DE _FICHERO  guarda desde la línea # hasta la # en el
      fichero NOMBRE_DE_FICHERO.
 
   3.  :r NOMBRE_DE _FICHERO  recupera el fichero del disco NOMBRE_DE FICHERO
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-10-24 20:05+0200\n"
+"POT-Creation-Date: 2019-11-13 22:38+0100\n"
 "PO-Revision-Date: 2008-05-24 17:26+0200\n"
 "Last-Translator: Christian Brabandt <cb@256bit.org>\n"
 "Language-Team: German\n"
@@ -3711,8 +3711,8 @@ msgid "E315: ml_get: invalid lnum: %ld"
 msgstr "E315: ml_get: unzulässige Zeilennummer: %ld"
 
 #, c-format
-msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: kann Zeile %ld nicht finden"
+msgid "E316: ml_get: cannot find line %ld in buffer %d %s"
+msgstr "E316: ml_get: kann Zeile %ld in Puffer %d %s nicht finden"
 
 msgid "E317: pointer block id wrong 3"
 msgstr "E317: Zeiger Block id falsch 3"
@@ -3999,6 +3999,12 @@ msgstr "Beep!"
 msgid "E677: Error writing temp file"
 msgstr "E677: Fehler beim Schreiben einer temporären Datei"
 
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "vor %ld Sekunde"
+msgstr[1] "vor %ld Sekunden"
+
 msgid "ERROR: "
 msgstr "FEHLER: "
 
@@ -4298,8 +4304,8 @@ msgstr "E527: Fehlendes Komma"
 msgid "E528: Must specify a ' value"
 msgstr "E528: Ein ' Wert muss angegeben werden"
 
-msgid "E595: contains unprintable or wide character"
-msgstr "E595: Enthält nicht-druckbare oder Multi-Byte Zeichen"
+msgid "E595: 'showbreak' contains unprintable or wide character"
+msgstr "E595: 'showbreak' enthält nicht-druckbare oder Multi-Byte Zeichen"
 
 msgid "E596: Invalid font(s)"
 msgstr "E596: Ungültige Schriftart(en)"
@@ -4553,8 +4559,7 @@ msgid "shell returned %d"
 msgstr "Shell gab %d zurück"
 
 msgid "E278: Cannot put a terminal buffer in a popup window"
-msgstr ""
-"E278: Terminal kann nicht in einem Popup-Fenster geöffnet werdent."
+msgstr "E278: Terminal kann nicht in einem Popup-Fenster geöffnet werdent."
 
 #, c-format
 msgid "E997: Tabpage not found: %d"
@@ -4859,10 +4864,10 @@ msgstr "E353: Register %s ist leer"
 
 msgid ""
 "\n"
-"--- Registers ---"
-msgstr ""
-"\n"
-"--- Register ---"
+"Type Name Content"
+msgstr ""
+"\n"
+"Typ Name Inhalt"
 
 msgid ""
 "E883: search pattern and expression register may not contain two or more "
@@ -5731,9 +5736,6 @@ msgstr "Tag-Datei %s wird durchsucht"
 msgid "E430: Tag file path truncated for %s\n"
 msgstr "E430: Tag-Dateipfad wurde abgeschnitten für %s\n"
 
-msgid "Ignoring long line in tags file"
-msgstr "Ignoriere zu lange Zeile in Tag-Datei"
-
 #, c-format
 msgid "E431: Format error in tags file \"%s\""
 msgstr "E431: Format Fehler in Tag-Datei \"%s\""
@@ -5749,6 +5751,9 @@ msgstr "E432: Tag-Datei ist nicht sortie
 msgid "E433: No tags file"
 msgstr "E433: Keine Tag-Datei"
 
+msgid "Ignoring long line in tags file"
+msgstr "Ignoriere zu lange Zeile in Tag-Datei"
+
 msgid "E434: Can't find tag pattern"
 msgstr "E434: Kann Tag-Muster nicht finden"
 
@@ -5796,6 +5801,9 @@ msgstr "Kann Datei $VIMRUNTIME/rgb.txt nicht öffnen."
 msgid "E181: Invalid attribute: %s"
 msgstr "E181: Ungültiges Attribut: %s"
 
+msgid "E279: Sorry, ++shell is not supported on this system"
+msgstr "E279: Schade, ++shell wird auf diesem System nicht unterstützt"
+
 #, c-format
 msgid "Kill job in \"%s\"?"
 msgstr "Beende job in \"%s\"?"
@@ -5993,12 +6001,6 @@ msgstr "Nichts zum Wiederherstellen"
 msgid "number changes  when               saved"
 msgstr "Nummer Änderung Wann               Gesichert"
 
-#, c-format
-msgid "%ld second ago"
-msgid_plural "%ld seconds ago"
-msgstr[0] "vor %ld Sekunde"
-msgstr[1] "vor %ld Sekunden"
-
 msgid "E790: undojoin is not allowed after undo"
 msgstr "E790: 'undojoin' ist nicht erlaubt nach 'undo'"