patch 8.2.4274: Basic and form filetype detection is incomplete

Problem:    Basic and form filetype detection is incomplete.
Solution:   Add a separate function for .frm files. (Doug Kearns, closes #9675)
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index f513a2a..5d8734a 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -67,7 +67,10 @@
   endif
 endfunc
 
-func dist#ft#FTbas(alt = '')
+let s:ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
+
+" See FTfrm() for Visual Basic form file detection
+func dist#ft#FTbas()
   if exists("g:filetype_bas")
     exe "setf " . g:filetype_bas
     return
@@ -86,10 +89,8 @@
     setf freebasic
   elseif match(lines, qb64_preproc) > -1
     setf qb64
-  elseif match(lines, '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)') > -1
+  elseif match(lines, s:ft_visual_basic_content) > -1
     setf vb
-  elseif a:alt != ''
-    exe 'setf ' .. a:alt
   else
     setf basic
   endif
@@ -237,6 +238,21 @@
   endif
 endfunc
 
+func dist#ft#FTfrm()
+  if exists("g:filetype_frm")
+    exe "setf " . g:filetype_frm
+    return
+  endif
+
+  let lines = getline(1, min([line("$"), 5]))
+
+  if match(lines, s:ft_visual_basic_content) > -1
+    setf vb
+  else
+    setf form
+  endif
+endfunc
+
 " Distinguish between Forth and F#.
 " Provided by Doug Kearns.
 func dist#ft#FTfs()