Update runtime files
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index c009494..8d31483 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2021 Oct 14
+*eval.txt*	For Vim version 8.2.  Last change: 2021 Oct 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 7788c0b..7d21893 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 8.2.  Last change: 2021 Aug 31
+*insert.txt*    For Vim version 8.2.  Last change: 2021 Oct 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -893,7 +893,7 @@
 	    endif
 	endfunc
 
-	if has('patch-8.2.3520')
+	if exists('+thesaurusfunc')
 	    set thesaurusfunc=Thesaur
 	endif
 
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 8da3a78..2c77355 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2021 Sep 12
+*map.txt*       For Vim version 8.2.  Last change: 2021 Oct 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1004,6 +1004,9 @@
 clobbering the `"*` or `"+` registers, if its value contains the item `unnamed`
 or `unnamedplus`.
 
+The `mode()` function will return the state as it will be after applying the
+operator.
+
 ==============================================================================
 2. Abbreviations			*abbreviations* *Abbreviations*
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index f884448..f210d31 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.2.  Last change: 2021 Sep 21
+*options.txt*	For Vim version 8.2.  Last change: 2021 Oct 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -717,7 +717,8 @@
 	"double":	Use twice the width of ASCII characters.
 							*E834* *E835*
 	The value "double" cannot be used if 'listchars' or 'fillchars'
-	contains a character that would be double width.
+	contains a character that would be double width.  These errors may
+	also be given when calling setcellwidths().
 
 	The values are overruled for characters specified with
 	|setcellwidths()|.
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index f7c5c17..f1e2ac4 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 8.2.  Last change: 2021 Mar 29
+*quickref.txt*  For Vim version 8.2.  Last change: 2021 Oct 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -732,6 +732,7 @@
 'guifontset'	  'gfs'     GUI: Names of multibyte fonts to be used
 'guifontwide'	  'gfw'     list of font names for double-wide characters
 'guiheadroom'	  'ghr'     GUI: pixels room for window decorations
+'guiligatures'	  'gli'	    GTK GUI: ASCII characters that can form shapes
 'guioptions'	  'go'	    GUI: Which components and options are used
 'guipty'		    GUI: try to use a pseudo-tty for ":!" commands
 'guitablabel'	  'gtl'     GUI: custom label for a tab page
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 81df62d..e522fe8 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -302,6 +302,7 @@
 'gfs'	options.txt	/*'gfs'*
 'gfw'	options.txt	/*'gfw'*
 'ghr'	options.txt	/*'ghr'*
+'gli'	options.txt	/*'gli'*
 'go'	options.txt	/*'go'*
 'go-!'	options.txt	/*'go-!'*
 'go-A'	options.txt	/*'go-A'*
@@ -339,6 +340,7 @@
 'guifontset'	options.txt	/*'guifontset'*
 'guifontwide'	options.txt	/*'guifontwide'*
 'guiheadroom'	options.txt	/*'guiheadroom'*
+'guiligatures'	options.txt	/*'guiligatures'*
 'guioptions'	options.txt	/*'guioptions'*
 'guipty'	options.txt	/*'guipty'*
 'guitablabel'	options.txt	/*'guitablabel'*
@@ -1138,6 +1140,7 @@
 'tgc'	options.txt	/*'tgc'*
 'tgst'	options.txt	/*'tgst'*
 'thesaurus'	options.txt	/*'thesaurus'*
+'thesaurusfunc'	options.txt	/*'thesaurusfunc'*
 'tildeop'	options.txt	/*'tildeop'*
 'timeout'	options.txt	/*'timeout'*
 'timeoutlen'	options.txt	/*'timeoutlen'*
@@ -2077,6 +2080,7 @@
 :XMLent	insert.txt	/*:XMLent*
 :XMLns	insert.txt	/*:XMLns*
 :[range]	motion.txt	/*:[range]*
+:[vV\x16]	autocmd.txt	/*:[vV\\x16]*
 :\bar	cmdline.txt	/*:\\bar*
 :_!	cmdline.txt	/*:_!*
 :_#	cmdline.txt	/*:_#*
@@ -3992,6 +3996,7 @@
 E1237	map.txt	/*E1237*
 E1239	eval.txt	/*E1239*
 E124	eval.txt	/*E124*
+E1243	options.txt	/*E1243*
 E125	eval.txt	/*E125*
 E126	eval.txt	/*E126*
 E127	eval.txt	/*E127*
@@ -5930,6 +5935,8 @@
 compl-spelling	insert.txt	/*compl-spelling*
 compl-stop	insert.txt	/*compl-stop*
 compl-tag	insert.txt	/*compl-tag*
+compl-thesaurus	insert.txt	/*compl-thesaurus*
+compl-thesaurusfunc	insert.txt	/*compl-thesaurusfunc*
 compl-vim	insert.txt	/*compl-vim*
 compl-whole-line	insert.txt	/*compl-whole-line*
 complete()	eval.txt	/*complete()*
@@ -9826,6 +9833,7 @@
 try-finally	eval.txt	/*try-finally*
 try-nested	eval.txt	/*try-nested*
 try-nesting	eval.txt	/*try-nesting*
+tsrfu'	options.txt	/*tsrfu'*
 tutor	usr_01.txt	/*tutor*
 twice	if_cscop.txt	/*twice*
 two-engines	pattern.txt	/*two-engines*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 558493b..80310f2 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2021 Oct 15
+*todo.txt*      For Vim version 8.2.  Last change: 2021 Oct 16
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,8 +38,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Remove s:flaky_tests from runtest.vim, set g:test_is_flaky in each test.
-
 Vim9 - Make everything work:
 - "filter #pat# ls" should work, #pat# is not a comment
     vim9script
diff --git a/runtime/ftplugin/changelog.vim b/runtime/ftplugin/changelog.vim
index 257e9cd..e9df63f 100644
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -2,7 +2,7 @@
 " Language:             generic Changelog file
 " Maintainer:           Martin Florian <marfl@posteo.de>
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2015-10-25
+" Latest Revision:      2021-10-17
 " Variables:
 "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
 "       description: the timeformat used in ChangeLog entries.
@@ -55,7 +55,7 @@
     elseif $EMAIL_ADDRESS != ""
       return $EMAIL_ADDRESS
     endif
-    
+
     let login = s:login()
     return printf('%s <%s@%s>', s:name(login), login, s:hostname())
   endfunction
@@ -223,12 +223,6 @@
     let &paste = save_paste
   endfunction
 
-  if exists(":NewChangelogEntry") != 2
-    nnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR>
-    xnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR>
-    command! -nargs=0 NewChangelogEntry call s:new_changelog_entry('')
-  endif
-
   let b:undo_ftplugin = "setl com< fo< et< ai<"
 
   setlocal comments=
@@ -241,14 +235,26 @@
     let b:undo_ftplugin .= " tw<"
   endif
 
+  if !exists("no_plugin_maps") && !exists("no_changelog_maps") && exists(":NewChangelogEntry") != 2
+    nnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR>
+    xnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR>
+    command! -buffer -nargs=0 NewChangelogEntry call s:new_changelog_entry('')
+    let b:undo_ftplugin .= " | sil! exe 'nunmap <buffer> <Leader>o'" .
+          \                " | sil! exe 'vunmap <buffer> <Leader>o'" .
+          \                " | sil! delc NewChangelogEntry"
+  endif
+
   let &cpo = s:cpo_save
   unlet s:cpo_save
 else
   let s:cpo_save = &cpo
   set cpo&vim
 
-  " Add the Changelog opening mapping
-  nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR>
+  if !exists("no_plugin_maps") && !exists("no_changelog_maps")
+    " Add the Changelog opening mapping
+    nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR>
+    let b:undo_ftplugin .= " | silent! exe 'nunmap <buffer> <Leader>o"
+  endif
 
   function! s:open_changelog()
     let path = expand('%:p:h')
diff --git a/runtime/ftplugin/nsis.vim b/runtime/ftplugin/nsis.vim
index 1a35127..3dc0d63 100644
--- a/runtime/ftplugin/nsis.vim
+++ b/runtime/ftplugin/nsis.vim
@@ -3,7 +3,7 @@
 " Maintainer:		Ken Takata
 " URL:			https://github.com/k-takata/vim-nsis
 " Previous Maintainer:	Nikolai Weibull <now@bitwi.se>
-" Last Change:		2018-01-26
+" Last Change:		2021-10-18
 
 if exists("b:did_ftplugin")
   finish
@@ -15,7 +15,6 @@
 let b:did_ftplugin = 1
 
 let b:undo_ftplugin = "setl com< cms< fo< def< inc<"
-      \ " | unlet! b:match_ignorecase b:match_words"
 
 setlocal comments=s1:/*,mb:*,ex:*/,b:#,:; commentstring=;\ %s
 setlocal formatoptions-=t formatoptions+=croql
@@ -37,6 +36,7 @@
 	\ '\${MementoSection}:\${MementoSectionEnd},' .
 	\ '!if\%(\%(macro\)\?n\?def\)\?\>:!else\>:!endif\>,' .
 	\ '!macro\>:!macroend\>'
+  let b:undo_ftplugin .= " | unlet! b:match_ignorecase b:match_words"
 endif
 
 let &cpo = s:cpo_save
diff --git a/runtime/indent/dosbatch.vim b/runtime/indent/dosbatch.vim
index aea2a18..d24b139 100644
--- a/runtime/indent/dosbatch.vim
+++ b/runtime/indent/dosbatch.vim
@@ -2,7 +2,7 @@
 " Language:	MSDOS batch file (with NT command extensions)
 " Maintainer:	Ken Takata
 " URL:		https://github.com/k-takata/vim-dosbatch-indent
-" Last Change:	2017 May 10
+" Last Change:	2021-10-18
 " Filenames:	*.bat
 " License:	VIM License
 
@@ -17,6 +17,8 @@
 setlocal indentkeys=!^F,o,O
 setlocal indentkeys+=0=)
 
+let b:undo_indent = "setl ai< inde< indk< si<"
+
 if exists("*GetDosBatchIndent")
   finish
 endif
diff --git a/runtime/indent/nsis.vim b/runtime/indent/nsis.vim
index 223f4fa..5d3decc 100644
--- a/runtime/indent/nsis.vim
+++ b/runtime/indent/nsis.vim
@@ -2,7 +2,7 @@
 " Language:		NSIS script
 " Maintainer:		Ken Takata
 " URL:			https://github.com/k-takata/vim-nsis
-" Last Change:		2018-01-21
+" Last Change:		2021-10-18
 " Filenames:		*.nsi
 " License:		VIM License
 
@@ -17,6 +17,8 @@
 setlocal indentkeys=!^F,o,O
 setlocal indentkeys+==~${Else,=~${EndIf,=~${EndUnless,=~${AndIf,=~${AndUnless,=~${OrIf,=~${OrUnless,=~${Case,=~${Default,=~${EndSelect,=~${EndSwith,=~${Loop,=~${Next,=~${MementoSectionEnd,=~FunctionEnd,=~SectionEnd,=~SectionGroupEnd,=~PageExEnd,0=~!macroend,0=~!if,0=~!else,0=~!endif
 
+let b:undo_indent = "setl ai< inde< indk< si<"
+
 if exists("*GetNsisIndent")
   finish
 endif
diff --git a/runtime/indent/teraterm.vim b/runtime/indent/teraterm.vim
index 35d7354..181c9a3 100644
--- a/runtime/indent/teraterm.vim
+++ b/runtime/indent/teraterm.vim
@@ -3,7 +3,7 @@
 "		Based on Tera Term Version 4.100
 " Maintainer:	Ken Takata
 " URL:		https://github.com/k-takata/vim-teraterm
-" Last Change:	2018-08-31
+" Last Change:	2021-10-18
 " Filenames:	*.ttl
 " License:	VIM License
 
@@ -18,6 +18,8 @@
 setlocal indentkeys=!^F,o,O,e
 setlocal indentkeys+==elseif,=endif,=loop,=next,=enduntil,=endwhile
 
+let b:undo_indent = "setl ai< inde< indk< si<"
+
 if exists("*GetTeraTermIndent")
   finish
 endif
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 176f9ea..5d17880 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2020 Oct 27
+" Last Change:	2021 Oct 17
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -652,6 +652,8 @@
     endif
     call <SID>AddOption("guiheadroom", gettext("room (in pixels) left above/below the window"))
     call append("$", " \tset ghr=" . &ghr)
+    call <SID>AddOption("guiligatures", gettext("list of ASCII characters that can be combined into complesshapes"))
+    call <SID>OptionG("gli", &gli)
   endif
   if has("directx")
     call <SID>AddOption("renderoptions", gettext("options for text rendering"))
@@ -840,6 +842,9 @@
   call <SID>AddOption("thesaurus", gettext("list of thesaurus files for keyword completion"))
   call append("$", "\t" .. s:global_or_local)
   call <SID>OptionG("tsr", &tsr)
+  call <SID>AddOption("thesaurusfunc", gettext("function used for thesaurus completion"))
+  call append("$", "\t" .. s:global_or_local)
+  call <SID>OptionG("tsrfu", &tsrfu)
 endif
 call <SID>AddOption("infercase", gettext("adjust case of a keyword completion match"))
 call append("$", "\t" .. s:local_to_buffer)
diff --git a/runtime/syntax/arduino.vim b/runtime/syntax/arduino.vim
index 4a4ef82..1c9618f 100644
--- a/runtime/syntax/arduino.vim
+++ b/runtime/syntax/arduino.vim
@@ -1,50 +1,79 @@
 " Vim syntax file
 " Language:    Arduino
 " Maintainer:  Johannes Hoff <johannes@johanneshoff.com>
-" Last Change: 2011 June 3
+" Last Change: 21 October 2021
 " License:     VIM license (:help license, replace vim by arduino.vim)
 
 " Syntax highlighting like in the Arduino IDE
-" Keywords extracted from <arduino>/build/shared/lib/keywords.txt (arduino
-" version 0021)
+" Automatically generated by the script available at
+"    https://bitbucket.org/johannes/arduino-vim-syntax
+" Using keywords from <arduino>/build/shared/lib/keywords.txt
+" From version: 1.8.16
 
-" Thanks to Rik, Erik Nomitch, Adam Obeng and Graeme Cross for helpful feedback!
+" Thanks to Rik, Erik Nomitch, Adam Obeng, Graeme Cross and Niall Parker
+" for helpful feedback!
 
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
   finish
 endif
 
 " Read the C syntax to start with
-runtime! syntax/cpp.vim
+if version < 600
+  so <sfile>:p:h/cpp.vim
+else
+  runtime! syntax/cpp.vim
+endif
 
-syn keyword arduinoConstant HIGH LOW INPUT OUTPUT
-syn keyword arduinoConstant DEC BIN HEX OCT BYTE
-syn keyword arduinoConstant PI HALF_PI TWO_PI
-syn keyword arduinoConstant LSBFIRST MSBFIRST 
-syn keyword arduinoConstant CHANGE FALLING RISING 
-syn keyword arduinoConstant SERIAL DISPLAY
-syn keyword arduinoConstant DEFAULT EXTERNAL INTERNAL INTERNAL1V1 INTERNAL2V56
+syn keyword arduinoConstant  BIN CHANGE DEC DEFAULT EXTERNAL FALLING HALF_PI HEX
+syn keyword arduinoConstant  HIGH INPUT INPUT_PULLUP INTERNAL INTERNAL1V1
+syn keyword arduinoConstant  INTERNAL2V56 LED_BUILTIN LED_BUILTIN_RX
+syn keyword arduinoConstant  LED_BUILTIN_TX LOW LSBFIRST MSBFIRST OCT OUTPUT PI
+syn keyword arduinoConstant  RISING TWO_PI
 
-syn keyword arduinoStdFunc abs acos asin atan atan2 ceil constrain
-syn keyword arduinoStdFunc cos degrees exp floor log
-syn keyword arduinoStdFunc map max min pow radians 
-syn keyword arduinoStdFunc round sin sq sqrt tan
-syn keyword arduinoStdFunc randomSeed random
+syn keyword arduinoFunc      analogRead analogReadResolution analogReference
+syn keyword arduinoFunc      analogWrite analogWriteResolution attachInterrupt
+syn keyword arduinoFunc      bit bitClear bitRead bitSet bitWrite delay
+syn keyword arduinoFunc      delayMicroseconds detachInterrupt
+syn keyword arduinoFunc      digitalPinToInterrupt digitalRead digitalWrite
+syn keyword arduinoFunc      highByte interrupts lowByte micros millis
+syn keyword arduinoFunc      noInterrupts noTone pinMode pulseIn pulseInLong
+syn keyword arduinoFunc      shiftIn shiftOut tone yield
 
-syn keyword arduinoFunc analogReference analogRead analogWrite 
-syn keyword arduinoFunc attachInterrupt detachInterrupt interrupts noInterrupts 
-syn keyword arduinoFunc lowByte highByte bitRead bitWrite bitSet bitClear
-syn keyword arduinoFunc millis micros delay delayMicroseconds 
-syn keyword arduinoFunc pinMode digitalWrite digitalRead 
-syn keyword arduinoFunc tone noTone pulseIn shiftOut 
+syn keyword arduinoMethod    available availableForWrite begin charAt compareTo
+syn keyword arduinoMethod    concat end endsWith equals equalsIgnoreCase export
+syn keyword arduinoMethod    final find findUntil flush getBytes indexOf
+syn keyword arduinoMethod    lastIndexOf length loop override parseFloat
+syn keyword arduinoMethod    parseInt peek print println read readBytes
+syn keyword arduinoMethod    readBytesUntil readString readStringUntil replace
+syn keyword arduinoMethod    setCharAt setTimeout setup startsWith Stream
+syn keyword arduinoMethod    substring toCharArray toInt toLowerCase toUpperCase
+syn keyword arduinoMethod    trim
 
-syn keyword arduinoMethod setup loop
-syn keyword arduinoMethod begin end available read flush print println write peek
+syn keyword arduinoModule    Keyboard Mouse Serial Serial1 Serial2 Serial3
+syn keyword arduinoModule    SerialUSB
 
-syn keyword arduinoType boolean byte word String 
+syn keyword arduinoStdFunc   abs accept acos acosf asin asinf atan atan2 atan2f
+syn keyword arduinoStdFunc   atanf cbrt cbrtf ceil ceilf click constrain
+syn keyword arduinoStdFunc   copysign copysignf cos cosf cosh coshf degrees exp
+syn keyword arduinoStdFunc   expf fabs fabsf fdim fdimf floor floorf fma fmaf
+syn keyword arduinoStdFunc   fmax fmaxf fmin fminf fmod fmodf hypot hypotf
+syn keyword arduinoStdFunc   isfinite isinf isnan isPressed ldexp ldexpf log
+syn keyword arduinoStdFunc   log10 log10f logf lrint lrintf lround lroundf map
+syn keyword arduinoStdFunc   max min move pow powf press radians random
+syn keyword arduinoStdFunc   randomSeed release releaseAll round roundf signbit
+syn keyword arduinoStdFunc   sin sinf sinh sinhf sq sqrt sqrtf tan tanf tanh
+syn keyword arduinoStdFunc   tanhf trunc truncf
 
-syn keyword arduinoModule Serial Serial1 Serial2 Serial3
+syn keyword arduinoType      _Bool _Complex _Imaginary array atomic_bool
+syn keyword arduinoType      atomic_char atomic_int atomic_llong atomic_long
+syn keyword arduinoType      atomic_schar atomic_short atomic_uchar atomic_uint
+syn keyword arduinoType      atomic_ullong atomic_ulong atomic_ushort boolean
+syn keyword arduinoType      byte char16_t char32_t complex NULL null PROGMEM
+syn keyword arduinoType      String word
 
 hi def link arduinoType Type
 hi def link arduinoConstant Constant
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 93b03ae..79352c0 100644
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2021 Aug 03
+" Last Change: 2021 Oct 19
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
@@ -24,7 +24,8 @@
       \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'trixie', 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'jammy',
+      \ 'devel'
       \ ]
 let s:unsupported = [
       \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index 8aa96fc..4b4c497 100644
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2021 Aug 03
+" Last Change: 2021 Oct 19
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
@@ -26,7 +26,8 @@
       \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'trixie', 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'jammy',
+      \ 'devel'
       \ ]
 let s:unsupported = [
       \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
diff --git a/runtime/syntax/nsis.vim b/runtime/syntax/nsis.vim
index 3389771..3a73fe0 100644
--- a/runtime/syntax/nsis.vim
+++ b/runtime/syntax/nsis.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
-" Language:		NSIS script, for version of NSIS 3.03 and later
+" Language:		NSIS script, for version of NSIS 3.08 and later
 " Maintainer:		Ken Takata
 " URL:			https://github.com/k-takata/vim-nsis
 " Previous Maintainer:	Alex Jakushev <Alex.Jakushev@kemek.lt>
-" Last Change:		2018-10-02
+" Last Change:		2020-10-18
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -97,6 +97,8 @@
 syn match nsisSysVar		"$CDBURN_AREA"
 syn match nsisSysVar		"$HWNDPARENT"
 syn match nsisSysVar		"$PLUGINSDIR"
+syn match nsisSysVar		"$\%(USERTEMPLATES\|USERSTARTMENU\|USERSMPROGRAMS\|USERDESKTOP\)"
+syn match nsisSysVar		"$\%(COMMONTEMPLATES\|COMMONSTARTMENU\|COMMONSMPROGRAMS\|COMMONDESKTOP\|COMMONPROGRAMDATA\)"
 syn match nsisSysVar		"$\\r"
 syn match nsisSysVar		"$\\n"
 syn match nsisSysVar		"$\\t"
@@ -149,7 +151,7 @@
 syn region nsisSectionOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionKwd
 syn match nsisSectionKwd	contained "/o\>"
 
-syn keyword nsisStatement	contained SectionIn nextgroup=nsisSectionInOpt skipwhite
+syn keyword nsisStatement	contained SectionInstType SectionIn nextgroup=nsisSectionInOpt skipwhite
 syn region nsisSectionInOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionInKwd
 syn keyword nsisSectionInKwd	contained RO
 
@@ -269,10 +271,22 @@
 syn region nsisManifestDPIAwareOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestDPIAwareKwd
 syn keyword nsisManifestDPIAwareKwd	contained notset true false
 
+syn keyword nsisAttribute	contained ManifestLongPathAware nextgroup=nsisManifestLongPathAwareOpt skipwhite
+syn region nsisManifestLongPathAwareOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestLongPathAwareKwd
+syn match nsisManifestLongPathAwareKwd	contained "\<\%(notset\|true\|false\)\>"
+
 syn keyword nsisAttribute	contained ManifestSupportedOS nextgroup=nsisManifestSupportedOSOpt skipwhite
 syn region nsisManifestSupportedOSOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestSupportedOSKwd
 syn match nsisManifestSupportedOSKwd	contained "\<\%(none\|all\|WinVista\|Win7\|Win8\|Win8\.1\|Win10\)\>"
 
+syn keyword nsisAttribute	contained PEAddResource nextgroup=nsisPEAddResourceOpt skipwhite
+syn region nsisPEAddResourceOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPEAddResourceKwd
+syn match nsisPEAddResourceKwd	contained "/\%(OVERWRITE\|REPLACE\)\>"
+
+syn keyword nsisAttribute	contained PERemoveResource nextgroup=nsisPERemoveResourceOpt skipwhite
+syn region nsisPERemoveResourceOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPERemoveResourceKwd
+syn match nsisPERemoveResourceKwd	contained "/NOERRORS\>"
+
 syn keyword nsisAttribute	contained RequestExecutionLevel nextgroup=nsisRequestExecutionLevelOpt skipwhite
 syn region nsisRequestExecutionLevelOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRequestExecutionLevelKwd
 syn keyword nsisRequestExecutionLevelKwd contained none user highest admin
@@ -353,7 +367,7 @@
 
 syn keyword nsisInstruction	contained DeleteRegKey nextgroup=nsisDeleteRegKeyOpt skipwhite
 syn region nsisDeleteRegKeyOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteRegKeyKwd,nsisRegistry
-syn match nsisDeleteRegKeyKwd	contained "/ifempty\>"
+syn match nsisDeleteRegKeyKwd	contained "/\%(ifempty\|ifnosubkeys\|ifnovalues\)\>"
 
 syn keyword nsisInstruction	contained nextgroup=nsisRegistryOpt skipwhite
 			\ DeleteRegValue EnumRegKey EnumRegValue ReadRegDWORD ReadRegStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr
@@ -368,8 +382,8 @@
 syn keyword nsisSetRegViewKwd	contained default lastused
 
 "FUNCTIONS - general purpose (4.9.3)
-syn keyword nsisInstruction	contained CallInstDLL CreateDirectory GetDLLVersion
-syn keyword nsisInstruction	contained GetDLLVersionLocal GetFileTime GetFileTimeLocal
+syn keyword nsisInstruction	contained CallInstDLL CreateDirectory GetWinVer
+syn keyword nsisInstruction	contained GetFileTime GetFileTimeLocal GetKnownFolderPath
 syn keyword nsisInstruction	contained GetTempFileName SearchPath RegDLL UnRegDLL
 
 syn keyword nsisInstruction	contained CopyFiles nextgroup=nsisCopyFilesOpt skipwhite
@@ -380,6 +394,10 @@
 syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd
 syn match nsisCreateShortcutKwd	 contained "/NoWorkingDir\>"
 
+syn keyword nsisInstruction	contained GetDLLVersion GetDLLVersionLocal nextgroup=nsisGetDLLVersionOpt skipwhite
+syn region nsisGetDLLVersionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetDLLVersionKwd
+syn match nsisGetDLLVersionKwd	 contained "/ProductVersion\>"
+
 syn keyword nsisInstruction	contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite
 syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd
 syn match nsisGetFullPathNameKwd  contained "/SHORT\>"
@@ -395,6 +413,7 @@
 syn keyword nsisInstruction	contained Abort Call ClearErrors GetCurrentAddress
 syn keyword nsisInstruction	contained GetFunctionAddress GetLabelAddress Goto
 syn keyword nsisInstruction	contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent
+syn keyword nsisInstruction	contained IfShellVarContextAll IfRtlLanguage
 syn keyword nsisInstruction	contained IntCmp IntCmpU Int64Cmp Int64CmpU IntPtrCmp IntPtrCmpU
 syn keyword nsisInstruction	contained Return Quit SetErrors StrCmp StrCmpS
 
@@ -460,6 +479,10 @@
 syn keyword nsisInstruction	contained nextgroup=nsisBooleanOpt skipwhite
 			\ LockWindow SetAutoClose
 
+syn keyword nsisInstruction	contained LoadAndSetImage nextgroup=nsisLoadAndSetImageOpt skipwhite
+syn region nsisLoadAndSetImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLoadAndSetImageKwd
+syn match nsisLoadAndSetImageKwd  contained "/\%(EXERESOURCE\|STRINGID\|RESIZETOFIT\%(WIDTH\|HEIGHT\)\)\>"
+
 syn keyword nsisInstruction	contained SendMessage nextgroup=nsisSendMessageOpt skipwhite
 syn region nsisSendMessageOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSendMessageKwd
 syn match nsisSendMessageKwd	contained "/TIMEOUT\>"
@@ -556,7 +579,7 @@
 "PREPROCESSOR (5.4)
 syn match nsisDefine		contained "!define\>" nextgroup=nsisDefineOpt skipwhite
 syn region nsisDefineOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd
-syn match nsisDefineKwd		contained "/\%(ifndef\|redef\|date\|utcdate\|math\|file\)\>"
+syn match nsisDefineKwd		contained "/\%(ifndef\|redef\|date\|utcdate\|file\|intfmt\|math\)\>"
 
 syn match nsisDefine		contained "!undef\>"
 syn match nsisPreCondit		contained "!ifdef\>"
@@ -615,7 +638,10 @@
 hi def link nsisLicenseBkColorKwd	Constant
 hi def link nsisLicenseForceSelectionKwd Constant
 hi def link nsisManifestDPIAwareKwd	Constant
+hi def link nsisManifestLongPathAwareKwd Constant
 hi def link nsisManifestSupportedOSKwd	Constant
+hi def link nsisPEAddResourceKwd	Constant
+hi def link nsisPERemoveResourceKwd	Constant
 hi def link nsisRequestExecutionLevelKwd Constant
 hi def link nsisShowInstDetailsKwd	Constant
 hi def link nsisSilentInstallKwd	Constant
@@ -633,11 +659,13 @@
 hi def link nsisSetRegViewKwd		Constant
 hi def link nsisCopyFilesKwd		Constant
 hi def link nsisCreateShortcutKwd	Constant
+hi def link nsisGetDLLVersionKwd	Constant
 hi def link nsisGetFullPathNameKwd	Constant
 hi def link nsisFileAttrib		Constant
 hi def link nsisMessageBox		Constant
 hi def link nsisFileWriteUTF16LEKwd	Constant
 hi def link nsisSetShellVarContextKwd	Constant
+hi def link nsisLoadAndSetImageKwd	Constant
 hi def link nsisSendMessageKwd		Constant
 hi def link nsisSetBrandingImageKwd	Constant
 hi def link nsisSetDetailsViewKwd	Constant