Skip to content

Commit

Permalink
patch 8.2.4274: Basic and form filetype detection is incomplete
Browse files Browse the repository at this point in the history
Problem:    Basic and form filetype detection is incomplete.
Solution:   Add a separate function for .frm files. (Doug Kearns, closes #9675)
  • Loading branch information
dkearns authored and brammool committed Jan 31, 2022
1 parent c4573eb commit c570e9c
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 5 deletions.
24 changes: 20 additions & 4 deletions runtime/autoload/dist/ft.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion runtime/filetype.vim
Original file line number Diff line number Diff line change
Expand Up @@ -2051,7 +2051,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
Expand Down
28 changes: 28 additions & 0 deletions src/testdir/test_filetype.vim
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ let s:filename_checks = {
\ 'fgl': ['file.4gl', 'file.4gh', 'file.m4gl'],
\ 'fish': ['file.fish'],
\ 'focexec': ['file.fex', 'file.focexec'],
\ 'form': ['file.frm'],
\ 'forth': ['file.ft', 'file.fth'],
\ 'fortran': ['file.f', 'file.for', 'file.fortran', 'file.fpp', 'file.ftn', 'file.f77', 'file.f90', 'file.f95', 'file.f03', 'file.f08'],
\ 'fpcmake': ['file.fpc'],
Expand Down Expand Up @@ -1278,4 +1279,31 @@ func Test_bas_file()
filetype off
endfunc

func Test_frm_file()
filetype on

call writefile(['looks like FORM'], 'Xfile.frm')
split Xfile.frm
call assert_equal('form', &filetype)
bwipe!

" Test dist#ft#FTfrm()

let g:filetype_frm = 'form'
split Xfile.frm
call assert_equal('form', &filetype)
bwipe!
unlet g:filetype_frm

" Visual Basic

call writefile(['Begin VB.Form Form1'], 'Xfile.frm')
split Xfile.frm
call assert_equal('vb', &filetype)
bwipe!

call delete('Xfile.frm')
filetype off
endfunc

" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4274,
/**/
4273,
/**/
Expand Down

0 comments on commit c570e9c

Please sign in to comment.