mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
patch 9.1.1304: filetype: some man files are not recognized
Problem: filetype: some man files are not recognized (e.g. 1p (POSIX commands)) Solution: update the filetype detection pattern and detect more man files as nroff (Eisuke Kawashima) - sections are revised referring to - debian-12:/etc/manpath.config - fedora-41:/etc/man_db.conf - detection logic is improved - detection test is implemented closes: #17117 Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
d62377386c
commit
babdb0554a
16
runtime/autoload/dist/ft.vim
vendored
16
runtime/autoload/dist/ft.vim
vendored
@ -3,7 +3,7 @@ vim9script
|
||||
# Vim functions for file type detection
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Apr 10
|
||||
# Last Change: 2025 Apr 15
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# These functions are moved here from runtime/filetype.vim to make startup
|
||||
@ -595,11 +595,15 @@ enddef
|
||||
# This function checks if one of the first five lines start with a dot. In
|
||||
# that case it is probably an nroff file: 'filetype' is set and 1 is returned.
|
||||
export def FTnroff(): number
|
||||
if getline(1)[0] .. getline(2)[0] .. getline(3)[0]
|
||||
.. getline(4)[0] .. getline(5)[0] =~ '\.'
|
||||
setf nroff
|
||||
return 1
|
||||
endif
|
||||
var n = 1
|
||||
while n < 5
|
||||
var line = getline(n)
|
||||
if line =~ '^\.\S\S\?'
|
||||
setf nroff
|
||||
return 1
|
||||
endif
|
||||
n += 1
|
||||
endwhile
|
||||
return 0
|
||||
enddef
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2025 Apr 13
|
||||
" Last Change: 2025 Apr 15
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
@ -1726,7 +1726,7 @@ au BufNewFile,BufRead *.me
|
||||
\ setf nroff |
|
||||
\ endif
|
||||
au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff
|
||||
au BufNewFile,BufRead *.[1-9] call dist#ft#FTnroff()
|
||||
au BufNewFile,BufRead *.[0-9],*.[013]p,*.[1-8]x,*.3{am,perl,pm,posix,type},*.[nlop] call dist#ft#FTnroff()
|
||||
|
||||
" Nroff or Objective C++
|
||||
au BufNewFile,BufRead *.mm call dist#ft#FTmm()
|
||||
|
@ -2889,6 +2889,20 @@ func Test_map_file()
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
func Test_nroff_file()
|
||||
filetype on
|
||||
|
||||
call writefile(['.TH vim 1 "YYYY Mth DD"'], 'Xfile.1', 'D')
|
||||
split Xfile.1
|
||||
call assert_equal('nroff', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['. /etc/profile'], 'Xfile.1', 'D')
|
||||
split Xfile.1
|
||||
call assert_notequal('nroff', &filetype)
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_org_file()
|
||||
filetype on
|
||||
|
||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1304,
|
||||
/**/
|
||||
1303,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user