Update runtime files.
diff --git a/runtime/ftplugin/ada.vim b/runtime/ftplugin/ada.vim
index 0809e7b..a0621e1 100644
--- a/runtime/ftplugin/ada.vim
+++ b/runtime/ftplugin/ada.vim
@@ -159,40 +159,41 @@
 endif
 
 " Section: Commands, Mapping, Menus {{{1
-"
-call ada#Map_Popup (
-   \ 'Tag.List',
-   \  'l',
-   \ 'call ada#List_Tag ()')
-call ada#Map_Popup (
-   \'Tag.Jump',
-   \'j',
-   \'call ada#Jump_Tag ()')
-call ada#Map_Menu (
-   \'Tag.Create File',
-   \':AdaTagFile',
-   \'call ada#Create_Tags (''file'')')
-call ada#Map_Menu (
-   \'Tag.Create Dir',
-   \':AdaTagDir',
-   \'call ada#Create_Tags (''dir'')')
+if !exists(':AdaTagFile')
+  call ada#Map_Popup (
+     \ 'Tag.List',
+     \  'l',
+     \ 'call ada#List_Tag ()')
+  call ada#Map_Popup (
+     \'Tag.Jump',
+     \'j',
+     \'call ada#Jump_Tag ()')
+  call ada#Map_Menu (
+     \'Tag.Create File',
+     \':AdaTagFile',
+     \'call ada#Create_Tags (''file'')')
+  call ada#Map_Menu (
+     \'Tag.Create Dir',
+     \':AdaTagDir',
+     \'call ada#Create_Tags (''dir'')')
 
-call ada#Map_Menu (
-   \'Highlight.Toggle Space Errors',
-   \ ':AdaSpaces',
-   \'call ada#Switch_Syntax_Option (''space_errors'')')
-call ada#Map_Menu (
-   \'Highlight.Toggle Lines Errors',
-   \ ':AdaLines',
-   \'call ada#Switch_Syntax_Option (''line_errors'')')
-call ada#Map_Menu (
-   \'Highlight.Toggle Rainbow Color',
-   \ ':AdaRainbow',
-   \'call ada#Switch_Syntax_Option (''rainbow_color'')')
-call ada#Map_Menu (
-   \'Highlight.Toggle Standard Types',
-   \ ':AdaTypes',
-   \'call ada#Switch_Syntax_Option (''standard_types'')')
+  call ada#Map_Menu (
+     \'Highlight.Toggle Space Errors',
+     \ ':AdaSpaces',
+     \'call ada#Switch_Syntax_Option (''space_errors'')')
+  call ada#Map_Menu (
+     \'Highlight.Toggle Lines Errors',
+     \ ':AdaLines',
+     \'call ada#Switch_Syntax_Option (''line_errors'')')
+  call ada#Map_Menu (
+     \'Highlight.Toggle Rainbow Color',
+     \ ':AdaRainbow',
+     \'call ada#Switch_Syntax_Option (''rainbow_color'')')
+  call ada#Map_Menu (
+     \'Highlight.Toggle Standard Types',
+     \ ':AdaTypes',
+     \'call ada#Switch_Syntax_Option (''standard_types'')')
+endif
 
 " 1}}}
 " Reset cpoptions
diff --git a/runtime/ftplugin/basic.vim b/runtime/ftplugin/basic.vim
new file mode 100644
index 0000000..c6ec254
--- /dev/null
+++ b/runtime/ftplugin/basic.vim
@@ -0,0 +1,27 @@
+" Vim filetype plugin file
+" Language:	BASIC
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2015 Jan 10
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:REM,:'
+setlocal commentstring='\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "BASIC Source Files (*.bas)\t*.bas\n" .
+		     \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms< sua<" .
+		    \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/ftplugin/bzl.vim b/runtime/ftplugin/bzl.vim
index 0296b0c..8ab876e 100644
--- a/runtime/ftplugin/bzl.vim
+++ b/runtime/ftplugin/bzl.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Bazel (http://bazel.io)
 " Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl)
-" Last Change:	2015 Aug 11
+" Last Change:	2021 Jan 19
 
 ""
 " @section Introduction, intro
@@ -51,6 +51,8 @@
 endif
 
 if exists('*BzlFoldText')
+  let &cpo = s:save_cpo
+  unlet s:save_cpo
   finish
 endif
 
diff --git a/runtime/ftplugin/framescript.vim b/runtime/ftplugin/framescript.vim
index 48fe0ac..66802ca 100644
--- a/runtime/ftplugin/framescript.vim
+++ b/runtime/ftplugin/framescript.vim
@@ -3,14 +3,14 @@
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
 " Latest Revision:      2008-07-19
 
-let s:cpo_save = &cpo
-set cpo&vim
-
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 let b:undo_ftplugin = "setl com< cms< fo< inc< | unlet! b:matchwords"
 
 setlocal comments=s1:/*,mb:*,ex:*/,:// commentstring=/*\ %s\ */
diff --git a/runtime/ftplugin/freebasic.vim b/runtime/ftplugin/freebasic.vim
new file mode 100644
index 0000000..a2bb459
--- /dev/null
+++ b/runtime/ftplugin/freebasic.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:	FreeBasic
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2015 Jan 10
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+runtime! ftplugin/basic.vim
+
+" vim: ts=8
diff --git a/runtime/ftplugin/hamster.vim b/runtime/ftplugin/hamster.vim
index 6c0630f..5446e72 100644
--- a/runtime/ftplugin/hamster.vim
+++ b/runtime/ftplugin/hamster.vim
@@ -2,7 +2,7 @@
 " Language:    Hamster Script
 " Version:     2.0.6.0
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2017 Mar 18
+" Last Change: 2021 Jan 19
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -57,6 +57,9 @@
 endif
 
 setlocal ignorecase
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
-setlocal cpo+=M		" makes \%( match \)
+
+" Disabled, 'cpo' is a global option.
+" setlocal cpo+=M		" makes \%( match \)
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index 793b887..8a62860 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -159,6 +159,8 @@
 " - Only definitions below, executed once -------------------------------------
 
 if exists("*OMLetFoldLevel")
+  let &cpoptions = s:cposet
+  unlet s:cposet
   finish
 endif
 
@@ -635,7 +637,7 @@
   nnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("normal")<CR>
   xnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("visual")<CR>`<
 
-let &cpoptions=s:cposet
+let &cpoptions = s:cposet
 unlet s:cposet
 
 " vim:sw=2 fdm=indent
diff --git a/runtime/ftplugin/tidy.vim b/runtime/ftplugin/tidy.vim
new file mode 100644
index 0000000..470548d
--- /dev/null
+++ b/runtime/ftplugin/tidy.vim
@@ -0,0 +1,32 @@
+" Vim filetype plugin file
+" Language:	HMTL Tidy Configuration
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Sep 4
+
+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
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "HTML Tidy Files (tidyrc, .tidyrc, tidy.conf)\ttidyrc;.tidyrc;tidy.conf\n" .
+		     \ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" .
+		     \ "XHTML Files (*.xhtml, *.xhtm)\t*.xhtml;*.xhtm\n" .
+		     \ "XML Files (*.xml)\t*.xml\n" .
+		     \ "All Files (*.*)\t*.*\n"
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms<" .
+		    \ " | unlet! b:browsefilter"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 6adadbd..d39ad95 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:	2021 Jan 12
+" Last Change:	2021 Jan 23
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -88,8 +88,13 @@
 " Let the matchit plugin know what items can be matched.
 if exists("loaded_matchit")
   let b:match_ignorecase = 0
+  " "func" can also be used as a type:
+  "   var Ref: func
+  " or to list functions:
+  "   func name
+  " require a parenthesis following, then there can be an "endfunc".
   let b:match_words =
-	\ '\<\%(fu\%[nction]\|def\)\>)\@!:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
+	\ '\<\%(fu\%[nction]\|def\)\s\+\S\+(:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
  	\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
 	\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
 	\ '{:},' .