patch 9.0.1820: Rexx files may not be recognised

Problem:  Rexx files may not be recognised
Solution: Add shebang detection and improve disambiguation of *.cls
	  files

closes: #12951

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index 6c15c29..2958f45 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -147,13 +147,19 @@
   endif
 
   var line1 = getline(1)
-
-  if line1 =~ '^\v%(\%|\\)'
-    setf tex
-  elseif line1[0] == '#' && line1 =~ 'rexx'
+  if line1 =~ '^#!.*\<\%(rexx\|regina\)\>'
     setf rexx
+    return
   elseif line1 == 'VERSION 1.0 CLASS'
     setf vb
+    return
+  endif
+
+  var nonblank1 = getline(nextnonblank(1))
+  if nonblank1 =~ '^\v%(\%|\\)'
+    setf tex
+  elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
+    setf rexx
   else
     setf st
   endif
diff --git a/runtime/autoload/dist/script.vim b/runtime/autoload/dist/script.vim
index 6163003..fca5dcd 100644
--- a/runtime/autoload/dist/script.vim
+++ b/runtime/autoload/dist/script.vim
@@ -213,6 +213,10 @@
   elseif name =~ '^crystal\>'
     return 'crystal'
 
+    # Rexx
+  elseif name =~ '^\%(rexx\|regina\)\>'
+    return 'rexx'
+
   endif
 
   return ''