mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
patch 8.2.4064: foam files are not detected
Problem: Foam files are not detected. Solution: Detect the foam filetype by the path and file contents. (Mohammed Elwardi Fadeli, closes #9501)
This commit is contained in:
17
runtime/autoload/dist/ft.vim
vendored
17
runtime/autoload/dist/ft.vim
vendored
@ -829,6 +829,23 @@ func dist#ft#Dep3patch()
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
" This function checks the first 15 lines for appearance of 'FoamFile'
|
||||
" and then 'object' in a following line.
|
||||
" In that case, it's probably an OpenFOAM file
|
||||
func dist#ft#FTfoam()
|
||||
let ffile = 0
|
||||
let lnum = 1
|
||||
while lnum <= 15
|
||||
if getline(lnum) =~# '^FoamFile'
|
||||
let ffile = 1
|
||||
elseif ffile == 1 && getline(lnum) =~# '^\s*object'
|
||||
setf foam
|
||||
return
|
||||
endif
|
||||
let lnum = lnum + 1
|
||||
endwhile
|
||||
endfunc
|
||||
|
||||
" Restore 'cpoptions'
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
@ -1214,6 +1214,9 @@ au BufNewFile,BufRead *.xom,*.xin setf omnimark
|
||||
" OPAM
|
||||
au BufNewFile,BufRead opam,*.opam,*.opam.template setf opam
|
||||
|
||||
" OpenFOAM
|
||||
au BufNewFile,BufRead [a-zA-Z0-9]*Dict\(.*\)\=,[a-zA-Z]*Properties\(.*\)\=,*Transport\(.*\),fvSchemes,fvSolution,fvConstrains,fvModels,*/constant/g,*/0\(\.orig\)\=/* call dist#ft#FTfoam()
|
||||
|
||||
" OpenROAD
|
||||
au BufNewFile,BufRead *.or setf openroad
|
||||
|
||||
|
@ -1121,4 +1121,54 @@ func Test_git_file()
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
func Test_foam_file()
|
||||
filetype on
|
||||
call assert_true(mkdir('0', 'p'))
|
||||
call assert_true(mkdir('0.orig', 'p'))
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'Xfile1Dict')
|
||||
split Xfile1Dict
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'Xfile1Dict.something')
|
||||
split Xfile1Dict.something
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'XfileProperties')
|
||||
split XfileProperties
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'XfileProperties.something')
|
||||
split XfileProperties.something
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'XfileProperties')
|
||||
split XfileProperties
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], 'XfileProperties.something')
|
||||
split XfileProperties.something
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], '0/Xfile')
|
||||
split 0/Xfile
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['FoamFile {', ' object something;'], '0.orig/Xfile')
|
||||
split 0.orig/Xfile
|
||||
call assert_equal('foam', &filetype)
|
||||
bwipe!
|
||||
|
||||
call delete('0', 'rf')
|
||||
call delete('0.orig', 'rf')
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4064,
|
||||
/**/
|
||||
4063,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user