Update runtime files; use compiled functions
diff --git a/runtime/ftplugin.vim b/runtime/ftplugin.vim
index a434b93..645f8c3 100644
--- a/runtime/ftplugin.vim
+++ b/runtime/ftplugin.vim
@@ -1,7 +1,7 @@
 " Vim support file to switch on loading plugins for file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2006 Apr 30
+" Last change:	2022 Feb 04
 
 if exists("did_load_ftplugin")
   finish
@@ -10,26 +10,26 @@
 
 augroup filetypeplugin
   au FileType * call s:LoadFTPlugin()
-
-  func! s:LoadFTPlugin()
-    if exists("b:undo_ftplugin")
-      exe b:undo_ftplugin
-      unlet! b:undo_ftplugin b:did_ftplugin
-    endif
-
-    let s = expand("<amatch>")
-    if s != ""
-      if &cpo =~# "S" && exists("b:did_ftplugin")
-	" In compatible mode options are reset to the global values, need to
-	" set the local values also when a plugin was already used.
-	unlet b:did_ftplugin
-      endif
-
-      " When there is a dot it is used to separate filetype names.  Thus for
-      " "aaa.bbb" load "aaa" and then "bbb".
-      for name in split(s, '\.')
-	exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
-      endfor
-    endif
-  endfunc
 augroup END
+
+def s:LoadFTPlugin()
+  if exists("b:undo_ftplugin")
+    exe b:undo_ftplugin
+    unlet! b:undo_ftplugin b:did_ftplugin
+  endif
+
+  var s = expand("<amatch>")
+  if s != ""
+    if &cpo =~# "S" && exists("b:did_ftplugin")
+      # In compatible mode options are reset to the global values, need to
+      # set the local values also when a plugin was already used.
+      unlet b:did_ftplugin
+    endif
+
+    # When there is a dot it is used to separate filetype names.  Thus for
+    # "aaa.bbb" load "aaa" and then "bbb".
+    for name in split(s, '\.')
+      exe 'runtime! ftplugin/' .. name .. '.vim ftplugin/' .. name .. '_*.vim ftplugin/' .. name .. '/*.vim'
+    endfor
+  endif
+enddef