diff runtime/autoload/dist/ft.vim @ 33010:fcd65e5d277a v9.0.1797

patch 9.0.1797: Vimball/Visual Basic filetype detection conflict Commit: https://github.com/vim/vim/commit/f97f6bbf56408c0c97b4ddbe81fba858d7455b0d Author: Doug Kearns <dougkearns@gmail.com> Date: Sun Aug 27 18:44:09 2023 +0200 patch 9.0.1797: Vimball/Visual Basic filetype detection conflict Problem: Vimball/Visual Basic filetype detection conflict Solution: runtime(vb): Improve Vimball and Visual Basic detection logic Only run Vimball Archiver's BufEnter autocommand on Vimball archives. Fixes #2694. closes: #12899 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Doug Kearns <dougkearns@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Sun, 27 Aug 2023 19:00:04 +0200
parents 6e346800670c
children 3284c31289f5
line wrap: on
line diff
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -62,7 +62,7 @@ export def FTasmsyntax()
   endif
 enddef
 
-var ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
+var ft_visual_basic_content = '\c^\s*\%(Attribute\s\+VB_Name\|Begin\s\+\%(VB\.\|{\%(\x\+-\)\+\x\+}\)\)'
 
 # See FTfrm() for Visual Basic form file detection
 export def FTbas()
@@ -146,11 +146,13 @@ export def FTcls()
     return
   endif
 
-  if getline(1) =~ '^\v%(\%|\\)'
+  var line1 = getline(1)
+
+  if line1 =~ '^\v%(\%|\\)'
     setf tex
-  elseif getline(1)[0] == '#' && getline(1) =~ 'rexx'
+  elseif line1[0] == '#' && line1 =~ 'rexx'
     setf rexx
-  elseif getline(1) == 'VERSION 1.0 CLASS'
+  elseif line1 == 'VERSION 1.0 CLASS'
     setf vb
   else
     setf st
@@ -324,6 +326,11 @@ export def FTfrm()
     return
   endif
 
+  if getline(1) == "VERSION 5.00"
+    setf vb
+    return
+  endif
+
   var lines = getline(1, min([line("$"), 5]))
 
   if match(lines, ft_visual_basic_content) > -1
@@ -1197,5 +1204,13 @@ export def FTv()
   setf v
 enddef
 
+export def FTvba()
+  if getline(1) =~ '^["#] Vimball Archiver'
+    setf vim
+  else
+    setf vb
+  endif
+enddef
+
 # Uncomment this line to check for compilation errors early
 # defcompile