aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-02-01 08:35:28 +0100
committerGitHub <noreply@github.com>2022-02-01 08:35:28 +0100
commita562b5771ea91becd0a469378ec852feaf50d2d0 (patch)
tree72f9215a32c2428b40345bbea0100115db61915b /runtime
parent547497b042dccc10de0e144485d36952dbd1182e (diff)
downloadrneovim-a562b5771ea91becd0a469378ec852feaf50d2d0.tar.gz
rneovim-a562b5771ea91becd0a469378ec852feaf50d2d0.tar.bz2
rneovim-a562b5771ea91becd0a469378ec852feaf50d2d0.zip
vim-patch:8.2.4274: Basic and form filetype detection is incomplete (#17259)
Problem: Basic and form filetype detection is incomplete. Solution: Add a separate function for .frm files. (Doug Kearns, closes vim/vim#9675) https://github.com/vim/vim/commit/c570e9cf68c0fe30366e82c96be460047dd659b9
Diffstat (limited to 'runtime')
-rw-r--r--runtime/autoload/dist/ft.vim24
-rw-r--r--runtime/filetype.vim2
-rw-r--r--runtime/lua/vim/filetype.lua2
3 files changed, 22 insertions, 6 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index f513a2ac8f..5d8734a625 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -67,7 +67,10 @@ func dist#ft#FTasmsyntax()
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 @@ func dist#ft#FTbas(alt = '')
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 @@ func dist#ft#FTe()
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()
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 7c86809cb8..8b40b43a04 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -2050,7 +2050,7 @@ au BufRead,BufNewFile *.hw,*.module,*.pkg
\ endif
" Visual Basic (also uses *.bas) or FORM
-au BufNewFile,BufRead *.frm call dist#ft#FTbas('form')
+au BufNewFile,BufRead *.frm call dist#ft#FTfrm()
" SaxBasic is close to Visual Basic
au BufNewFile,BufRead *.sba setf vb
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index ff44f48195..e2cf408f3b 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -789,7 +789,7 @@ local extension = {
ex = function() vim.fn["dist#ft#ExCheck"]() end,
exu = function() vim.fn["dist#ft#EuphoriaCheck"]() end,
exw = function() vim.fn["dist#ft#EuphoriaCheck"]() end,
- frm = function() vim.fn["dist#ft#FTbas"]("form") end,
+ frm = function() vim.fn["dist#ft#FTfrm"]() end,
fs = function() vim.fn["dist#ft#FTfs"]() end,
h = function() vim.fn["dist#ft#FTheader"]() end,
htm = function() vim.fn["dist#ft#FThtml"]() end,