forked from aniani/vim
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
|
endfor
|
||||||
endfunc
|
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'
|
" Restore 'cpoptions'
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
@@ -1214,6 +1214,9 @@ au BufNewFile,BufRead *.xom,*.xin setf omnimark
|
|||||||
" OPAM
|
" OPAM
|
||||||
au BufNewFile,BufRead opam,*.opam,*.opam.template setf 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
|
" OpenROAD
|
||||||
au BufNewFile,BufRead *.or setf openroad
|
au BufNewFile,BufRead *.or setf openroad
|
||||||
|
|
||||||
|
@@ -1121,4 +1121,54 @@ func Test_git_file()
|
|||||||
filetype off
|
filetype off
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
4064,
|
||||||
/**/
|
/**/
|
||||||
4063,
|
4063,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user