mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04: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
						Christian Brabandt
					
				
			
			
				
	
			
			
			
						parent
						
							d62377386c
						
					
				
				
					commit
					babdb0554a
				
			
							
								
								
									
										10
									
								
								runtime/autoload/dist/ft.vim
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								runtime/autoload/dist/ft.vim
									
									
									
									
										vendored
									
									
								
							| @@ -3,7 +3,7 @@ vim9script | |||||||
| # Vim functions for file type detection | # Vim functions for file type detection | ||||||
| # | # | ||||||
| # Maintainer:		The Vim Project <https://github.com/vim/vim> | # 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> | # Former Maintainer:	Bram Moolenaar <Bram@vim.org> | ||||||
|  |  | ||||||
| # These functions are moved here from runtime/filetype.vim to make startup | # 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 | # 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. | # that case it is probably an nroff file: 'filetype' is set and 1 is returned. | ||||||
| export def FTnroff(): number | export def FTnroff(): number | ||||||
|   if getline(1)[0] .. getline(2)[0] .. getline(3)[0] |   var n = 1 | ||||||
|     			.. getline(4)[0] .. getline(5)[0] =~ '\.' |   while n < 5 | ||||||
|  |     var line = getline(n) | ||||||
|  |     if line =~ '^\.\S\S\?' | ||||||
|       setf nroff |       setf nroff | ||||||
|       return 1 |       return 1 | ||||||
|     endif |     endif | ||||||
|  |     n += 1 | ||||||
|  |   endwhile | ||||||
|   return 0 |   return 0 | ||||||
| enddef | enddef | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| " Vim support file to detect file types | " Vim support file to detect file types | ||||||
| " | " | ||||||
| " Maintainer:	The Vim Project <https://github.com/vim/vim> | " 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> | " Former Maintainer:	Bram Moolenaar <Bram@vim.org> | ||||||
|  |  | ||||||
| " Listen very carefully, I will say this only once | " Listen very carefully, I will say this only once | ||||||
| @@ -1726,7 +1726,7 @@ au BufNewFile,BufRead *.me | |||||||
| 	\   setf nroff | | 	\   setf nroff | | ||||||
| 	\ endif | 	\ endif | ||||||
| au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff | 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++ | " Nroff or Objective C++ | ||||||
| au BufNewFile,BufRead *.mm			call dist#ft#FTmm() | au BufNewFile,BufRead *.mm			call dist#ft#FTmm() | ||||||
|   | |||||||
| @@ -2889,6 +2889,20 @@ func Test_map_file() | |||||||
|   filetype off |   filetype off | ||||||
| endfunc | 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() | func Test_org_file() | ||||||
|   filetype on |   filetype on | ||||||
|  |  | ||||||
|   | |||||||
| @@ -704,6 +704,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 */ | ||||||
|  | /**/ | ||||||
|  |     1304, | ||||||
| /**/ | /**/ | ||||||
|     1303, |     1303, | ||||||
| /**/ | /**/ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user