vim-patch:8.2.3843: dep3patch files are not recognized (#16700)

Problem:    Dep3patch files are not recognized.
Solution:   Recognize dep3patch files by their location and content. (James
            McCoy, closes vim/vim#9367)
647ab4cede
This commit is contained in:
Christian Clason 2021-12-18 17:22:09 +01:00 committed by GitHub
parent 34d88edaec
commit ff1b0f632a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 0 deletions

View File

@ -811,6 +811,23 @@ func dist#ft#Redif()
endwhile
endfunc
" This function is called for all files under */debian/patches/*, make sure not
" to non-dep3patch files, such as README and other text files.
func dist#ft#Dep3patch()
if expand('%:t') ==# 'series'
return
endif
for ln in getline(1, 100)
if ln =~# '^\%(Description\|Subject\|Origin\|Bug\|Forwarded\|Author\|From\|Reviewed-by\|Acked-by\|Last-Updated\|Applied-Upstream\):'
setf dep3patch
return
elseif ln =~# '^---'
" end of headers found. stop processing
return
endif
endfor
endfunc
" Restore 'cpoptions'
let &cpo = s:cpo_save

View File

@ -486,6 +486,9 @@ au BufNewFile,BufRead dict.conf,.dictrc setf dictconf
" Dictd config
au BufNewFile,BufRead dictd*.conf setf dictdconf
" DEP3 formatted patch files
au BufNewFile,BufRead */debian/patches/* call dist#ft#Dep3patch()
" Diff files
au BufNewFile,BufRead *.diff,*.rej setf diff
au BufNewFile,BufRead *.patch

View File

@ -1004,4 +1004,44 @@ func Test_fs_file()
filetype off
endfunc
func Test_dep3patch_file()
filetype on
call assert_true(mkdir('debian/patches', 'p'))
" series files are not patches
call writefile(['Description: some awesome patch'], 'debian/patches/series')
split debian/patches/series
call assert_notequal('dep3patch', &filetype)
bwipe!
" diff/patch files without the right headers should still show up as ft=diff
call writefile([], 'debian/patches/foo.diff')
split debian/patches/foo.diff
call assert_equal('diff', &filetype)
bwipe!
" Files with the right headers are detected as dep3patch, even if they don't
" have a diff/patch extension
call writefile(['Subject: dep3patches'], 'debian/patches/bar')
split debian/patches/bar
call assert_equal('dep3patch', &filetype)
bwipe!
" Files in sub-directories are detected
call assert_true(mkdir('debian/patches/s390x', 'p'))
call writefile(['Subject: dep3patches'], 'debian/patches/s390x/bar')
split debian/patches/s390x/bar
call assert_equal('dep3patch', &filetype)
bwipe!
" The detection stops when seeing the "header end" marker
call writefile(['---', 'Origin: the cloud'], 'debian/patches/baz')
split debian/patches/baz
call assert_notequal('dep3patch', &filetype)
bwipe!
call delete('debian/patches', 'rf')
endfunc
" vim: shiftwidth=2 sts=2 expandtab