mirror of
https://github.com/vim/vim.git
synced 2025-07-24 10:45:12 -04:00
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)
This commit is contained in:
parent
c4573eb12d
commit
c570e9cf68
24
runtime/autoload/dist/ft.vim
vendored
24
runtime/autoload/dist/ft.vim
vendored
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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'],
|
||||
@ -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
|
||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4274,
|
||||
/**/
|
||||
4273,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user