Update runtime files
diff --git a/runtime/ftplugin/gitattributes.vim b/runtime/ftplugin/gitattributes.vim
new file mode 100644
index 0000000..2025d00
--- /dev/null
+++ b/runtime/ftplugin/gitattributes.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:	git attributes
+" Maintainer:	ObserverOfTime <chronobserver@disroot.org>
+" Last Change:	2022 Sep 08
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/gitignore.vim b/runtime/ftplugin/gitignore.vim
new file mode 100644
index 0000000..3502dd2
--- /dev/null
+++ b/runtime/ftplugin/gitignore.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:	git ignore
+" Maintainer:	ObserverOfTime <chronobserver@disroot.org>
+" Last Change:	2022 Sep 10
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/jsonnet.vim b/runtime/ftplugin/jsonnet.vim
new file mode 100644
index 0000000..1e621e1
--- /dev/null
+++ b/runtime/ftplugin/jsonnet.vim
@@ -0,0 +1,17 @@
+" Vim filetype plugin
+" Language:        Jsonnet
+" Maintainer:      Cezary Drożak <cezary@drozak.net>
+" URL:             https://github.com/google/vim-jsonnet
+" Last Change:     2022-09-08
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = "setlocal commentstring<"
diff --git a/runtime/ftplugin/lua.vim b/runtime/ftplugin/lua.vim
index 2604257..aaa61f7 100644
--- a/runtime/ftplugin/lua.vim
+++ b/runtime/ftplugin/lua.vim
@@ -1,46 +1,46 @@
 " Vim filetype plugin file.
-" Language:	        Lua
+" Language:		Lua
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
 " Previous Maintainer:	Max Ischenko <mfi@ukr.net>
-" Last Change:	        2021 Nov 15
+" Contributor:		Dorai Sitaram <ds26@gte.com>
+" Last Change:		2022 Sep 05
 
-" Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
 endif
-
-" Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-" Set 'formatoptions' to break comment lines but not other lines, and insert
-" the comment leader when hitting <CR> or using "o".
+setlocal comments=:--
+setlocal commentstring=--\ %s
 setlocal formatoptions-=t formatoptions+=croql
 
-setlocal comments=:--
-setlocal commentstring=--%s
+let &l:define = '\<function\|\<local\%(\s\+function\)\='
+
 setlocal suffixesadd=.lua
 
-let b:undo_ftplugin = "setlocal fo< com< cms< sua<"
+let b:undo_ftplugin = "setlocal cms< com< def< fo< sua<"
 
 if exists("loaded_matchit") && !exists("b:match_words")
   let b:match_ignorecase = 0
   let b:match_words =
-        \ '\<\%(do\|function\|if\)\>:' .
-        \ '\<\%(return\|else\|elseif\)\>:' .
-        \ '\<end\>,' .
-        \ '\<repeat\>:\<until\>,' .
-        \ '\%(--\)\=\[\(=*\)\[:]\1]'
-  let b:undo_ftplugin .= " | unlet! b:match_words b:match_ignorecase"
+	\ '\<\%(do\|function\|if\)\>:' ..
+	\ '\<\%(return\|else\|elseif\)\>:' ..
+	\ '\<end\>,' ..
+	\ '\<repeat\>:\<until\>,' ..
+	\ '\%(--\)\=\[\(=*\)\[:]\1]'
+  let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase"
 endif
 
 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
-  let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" .
-	\              "All Files (*.*)\t*.*\n"
-  let b:undo_ftplugin .= " | unlet! b:browsefilter"
+  let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" ..
+	\	       "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/lynx.vim b/runtime/ftplugin/lynx.vim
new file mode 100644
index 0000000..b76c69f
--- /dev/null
+++ b/runtime/ftplugin/lynx.vim
@@ -0,0 +1,29 @@
+" Vim filetype plugin file
+" Language:	Lynx Web Browser Configuration
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2022 Sep 09
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:#
+setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+let b:undo_ftplugin = "setl cms< com< fo<"
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "Lynx Configuration Files (lynx.cfg .lynxrc)\tlynx.cfg;.lynxrc\n" ..
+	\	       "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/sh.vim b/runtime/ftplugin/sh.vim
index 93a46f6..b6fdb8f 100644
--- a/runtime/ftplugin/sh.vim
+++ b/runtime/ftplugin/sh.vim
@@ -1,12 +1,12 @@
 " Vim filetype plugin file
-" Language:	sh
-"
-" This runtime file is looking for a new maintainer.
-"
-" Former maintainer:	Dan Sharp
-" Last Changed: 20 Jan 2009
+" Language:		sh
+" Maintainer:		Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer:	Dan Sharp
+" Last Change:		2022 Sep 07
 
-if exists("b:did_ftplugin") | finish | endif
+if exists("b:did_ftplugin")
+  finish
+endif
 let b:did_ftplugin = 1
 
 " Make sure the continuation lines below do not cause problems in
@@ -14,28 +14,35 @@
 let s:save_cpo = &cpo
 set cpo-=C
 
-setlocal commentstring=#%s
+setlocal comments=:#
+setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 " Shell:  thanks to Johannes Zellner
-if exists("loaded_matchit")
-    let s:sol = '\%(;\s*\|^\s*\)\@<='  " start of line
-    let b:match_words =
-    \ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' .
-    \ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' .
-    \ s:sol.'case\>:' . s:sol. 'esac\>'
+if exists("loaded_matchit") && !exists("b:match_words")
+  let b:match_ignorecase = 0
+  let s:sol = '\%(;\s*\|^\s*\)\@<='  " start of line
+  let b:match_words =
+	\  s:sol .. 'if\>:' .. s:sol.'elif\>:' .. s:sol.'else\>:' .. s:sol .. 'fi\>,' ..
+	\  s:sol .. '\%(for\|while\)\>:' .. s:sol .. 'done\>,' ..
+	\  s:sol .. 'case\>:' .. s:sol .. 'esac\>'
+  unlet s:sol
+  let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
 endif
 
 " Change the :browse e filter to primarily show shell-related files.
-if has("gui_win32")
-    let  b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" .
-		\	"Korn Shell Scripts (*.ksh)\t*.ksh\n" .
-		\	"Bash Shell Scripts (*.bash)\t*.bash\n" .
-		\	"All Files (*.*)\t*.*\n"
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+    let  b:browsefilter = "Bourne Shell Scripts (*.sh)\t*.sh\n" ..
+		\	  "Korn Shell Scripts (*.ksh)\t*.ksh\n" ..
+		\	  "Bash Shell Scripts (*.bash)\t*.bash\n" ..
+		\	  "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
-" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words"
-
 " Restore the saved compatibility options.
 let &cpo = s:save_cpo
 unlet s:save_cpo
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 772bfa0..60934d7 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2022 Aug 4
+" Last Change:	2022 Sep 09
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -48,17 +48,17 @@
 " Use :help to lookup the keyword under the cursor with K.
 setlocal keywordprg=:help
 
+" Comments starts with # in Vim9 script.  We have to guess which one to use.
 if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>'
-  " Set 'comments' to format dashed lists in comments
-  setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#
-  " Comments starts with # in Vim9 script
   setlocal commentstring=#%s
 else
-  setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
-  " Comments starts with a double quote in legacy script
   setlocal commentstring=\"%s
 endif
 
+" Set 'comments' to format dashed lists in comments, both in Vim9 and legacy
+" script.
+setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#,sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+
 " set 'include' to recognize import commands
 setlocal include=\\v^\\s*import\\s*(autoload)?
 
diff --git a/runtime/ftplugin/zimbu.vim b/runtime/ftplugin/zimbu.vim
index c966498..9d9fa6f 100644
--- a/runtime/ftplugin/zimbu.vim
+++ b/runtime/ftplugin/zimbu.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Zimbu
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2021 Nov 12
+" Last Change:	2022 Sep 07
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -28,7 +28,7 @@
 
 " Set 'comments' to format dashed lists in comments.
 " And to keep Zudocu comment characters.
-setlocal comments=sO:#\ -,mO:#\ \ ,:#=,:#-,:#%,:#
+setlocal comments=sO:#\ -,mO:#\ \ ,exO:#/,s:/*,m:\ ,ex:*/,:#=,:#-,:#%,:#
 
 setlocal errorformat^=%f\ line\ %l\ col\ %c:\ %m,ERROR:\ %m
 
diff --git a/runtime/ftplugin/zsh.vim b/runtime/ftplugin/zsh.vim
index 34410f1..0ca8077 100644
--- a/runtime/ftplugin/zsh.vim
+++ b/runtime/ftplugin/zsh.vim
@@ -2,7 +2,7 @@
 " Language:             Zsh shell script
 " Maintainer:           Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2020-09-01
+" Latest Revision:      2021-04-03
 " License:              Vim (see :h license)
 " Repository:           https://github.com/chrisbra/vim-zsh