Skip to content

Commit

Permalink
patch 8.2.4064: foam files are not detected
Browse files Browse the repository at this point in the history
Problem:    Foam files are not detected.
Solution:   Detect the foam filetype by the path and file contents. (Mohammed
            Elwardi Fadeli, closes #9501)
  • Loading branch information
FoamScience authored and brammool committed Jan 11, 2022
1 parent b882244 commit 2284f6c
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 0 deletions.
17 changes: 17 additions & 0 deletions runtime/autoload/dist/ft.vim
Expand Up @@ -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
3 changes: 3 additions & 0 deletions runtime/filetype.vim
Expand Up @@ -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

Expand Down
50 changes: 50 additions & 0 deletions src/testdir/test_filetype.vim
Expand Up @@ -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
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

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

0 comments on commit 2284f6c

Please sign in to comment.