Update runtime files
diff --git a/runtime/ftplugin/bitbake.vim b/runtime/ftplugin/bitbake.vim
new file mode 100644
index 0000000..99fe334
--- /dev/null
+++ b/runtime/ftplugin/bitbake.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin file
+" Language: Bitbake
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Repository: https://github.com/openembedded/bitbake
+" Latest Revision: 2022-07-23
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=#%s
+setlocal comments=:#
+setlocal suffixesadd=.bb,.bbclass
+
+let b:undo_ftplugin = "setl cms< com< sua<"
diff --git a/runtime/ftplugin/expect.vim b/runtime/ftplugin/expect.vim
new file mode 100644
index 0000000..a4c6af9
--- /dev/null
+++ b/runtime/ftplugin/expect.vim
@@ -0,0 +1,24 @@
+" Vim filetype plugin file
+" Language:	Expect
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2022 Jul 16
+
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Syntax is similar to Tcl
+runtime! ftplugin/tcl.vim
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "Expect Command Files (*.exp)\t*.exp\n" ..
+	\	       "All Files (*.*)\t*.*\n"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
diff --git a/runtime/ftplugin/html.vim b/runtime/ftplugin/html.vim
index 3179aa2..94cb626 100644
--- a/runtime/ftplugin/html.vim
+++ b/runtime/ftplugin/html.vim
@@ -1,16 +1,14 @@
 " Vim filetype plugin file
-" Language:	html
-"
-" This runtime file is looking for a new maintainer.
-"
-" Former maintainer:	Dan Sharp
-" Last Changed: 20 Jan 2009
+" Language:		HTML
+" Maintainer:		Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer:	Dan Sharp
+" Last Changed:		2022 Jul 20
 
-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
-" compatibility mode.
 let s:save_cpo = &cpo
 set cpo-=C
 
@@ -18,36 +16,40 @@
 setlocal commentstring=<!--%s-->
 setlocal comments=s:<!--,m:\ \ \ \ ,e:-->
 
-if exists("g:ft_html_autocomment") && (g:ft_html_autocomment == 1)
-    setlocal formatoptions-=t formatoptions+=croql
+let b:undo_ftplugin = "setlocal comments< commentstring< matchpairs<"
+
+if get(g:, "ft_html_autocomment", 0)
+  setlocal formatoptions-=t formatoptions+=croql
+  let b:undo_ftplugin ..= " | setlocal formatoptions<"
 endif
 
 if exists('&omnifunc')
   setlocal omnifunc=htmlcomplete#CompleteTags
   call htmlcomplete#DetectOmniFlavor()
+  let b:undo_ftplugin ..= " | setlocal omnifunc<"
 endif
 
-" HTML:  thanks to Johannes Zellner and Benji Fisher.
-if exists("loaded_matchit")
-    let b:match_ignorecase = 1
-    let b:match_words = '<:>,' .
-    \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
-    \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
-    \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
+" HTML: thanks to Johannes Zellner and Benji Fisher.
+if exists("loaded_matchit") && !exists("b:match_words")
+  let b:match_ignorecase = 1
+  let b:match_words = '<!--:-->,' ..
+	\	      '<:>,' ..
+	\	      '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' ..
+	\	      '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' ..
+	\	      '<\@<=\([^/!][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
+  let b:html_set_match_words = 1
+  let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words b:html_set_match_words"
 endif
 
 " Change the :browse e filter to primarily show HTML-related files.
-if has("gui_win32")
-    let  b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" .
-		\	"JavaScript Files (*.js)\t*.js\n" .
-		\	"Cascading StyleSheets (*.css)\t*.css\n" .
-		\	"All Files (*.*)\t*.*\n"
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let  b:browsefilter = "HTML Files (*.html *.htm)\t*.htm;*.html\n" ..
+	\		"JavaScript Files (*.js)\t*.js\n" ..
+	\		"Cascading StyleSheets (*.css)\t*.css\n" ..
+	\		"All Files (*.*)\t*.*\n"
+  let b:html_set_browsefilter = 1
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter b:html_set_browsefilter"
 endif
 
-" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc< comments< formatoptions<" .
-    \	" | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter"
-
-" Restore the saved compatibility options.
 let &cpo = s:save_cpo
 unlet s:save_cpo