0
0
mirror of https://github.com/vim/vim.git synced 2025-08-25 19:53:53 -04:00

patch 9.1.0731: inconsistent case sensitive extension matching

Problem:  inconsistent case sensitive extension matching
Solution: unify case sensitive extension matching (Evgeni Chasnovski).

There are different approaches of how extensions are matched with
respect to case sensitivity. In particular, '\c' flag is used in pattern
whereas in most places case sensitive matching is guarded behind
`has("fname_case")` condition.

Replace all instances of '\c' with an explicit case sensitive pattern
variants guarded by `has("fname_case")`. Strictly speaking, this is a
breaking change because only two (most common and prevailingly tested)
variants are now matched: upper first letter and upper all letters.

closes: #15672

Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Evgeni Chasnovski 2024-09-15 19:23:25 +02:00 committed by Christian Brabandt
parent 4d427d4cab
commit 59b089c9df
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 33 additions and 15 deletions

View File

@ -237,7 +237,10 @@ au BufNewFile,BufRead *.bat setf dosbatch
au BufNewFile,BufRead *.cmd au BufNewFile,BufRead *.cmd
\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
" ABB RAPID or Batch file for MSDOS. " ABB RAPID or Batch file for MSDOS.
au BufNewFile,BufRead *.sys\c call dist#ft#FTsys() au BufNewFile,BufRead *.sys call dist#ft#FTsys()
if has("fname_case")
au BufNewFile,BufRead *.Sys,*.SYS call dist#ft#FTsys()
endif
" Batch file for 4DOS " Batch file for 4DOS
au BufNewFile,BufRead *.btm call dist#ft#FTbtm() au BufNewFile,BufRead *.btm call dist#ft#FTbtm()
@ -455,7 +458,10 @@ au BufNewFile,BufRead *.ent call dist#ft#FTent()
au BufNewFile,BufRead .cling_history setf cpp au BufNewFile,BufRead .cling_history setf cpp
" Clipper, FoxPro, ABB RAPID or eviews " Clipper, FoxPro, ABB RAPID or eviews
au BufNewFile,BufRead *.prg\c call dist#ft#FTprg() au BufNewFile,BufRead *.prg call dist#ft#FTprg()
if has("fname_case")
au BufNewFile,BufRead *.Prg,*.PRG call dist#ft#FTprg()
endif
" Clojure " Clojure
au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc setf clojure au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc setf clojure
@ -602,7 +608,10 @@ au BufNewFile,BufRead */tex/latex/**.cfg setf tex
au BufNewFile,BufRead .wakatime.cfg setf dosini au BufNewFile,BufRead .wakatime.cfg setf dosini
" Configure files " Configure files
au BufNewFile,BufRead *.cfg\c call dist#ft#FTcfg() au BufNewFile,BufRead *.cfg call dist#ft#FTcfg()
if has("fname_case")
au BufNewFile,BufRead *.Cfg,*.CFG call dist#ft#FTcfg()
endif
" Cucumber " Cucumber
au BufNewFile,BufRead *.feature setf cucumber au BufNewFile,BufRead *.feature setf cucumber
@ -1227,9 +1236,14 @@ au BufNewFile,BufRead *.kdl setf kdl
au BufNewFile,BufRead *.kix setf kix au BufNewFile,BufRead *.kix setf kix
" Kuka Robot Language " Kuka Robot Language
au BufNewFile,BufRead *.src\c call dist#ft#FTsrc() au BufNewFile,BufRead *.src call dist#ft#FTsrc()
au BufNewFile,BufRead *.dat\c call dist#ft#FTdat() au BufNewFile,BufRead *.dat call dist#ft#FTdat()
au BufNewFile,BufRead *.sub\c setf krl au BufNewFile,BufRead *.sub setf krl
if has("fname_case")
au BufNewFile,BufRead *.Src,*.SRC call dist#ft#FTsrc()
au BufNewFile,BufRead *.Dat,*.DAT call dist#ft#FTdat()
au BufNewFile,BufRead *.Sub,*.SUB setf krl
endif
" Kimwitu[++] " Kimwitu[++]
au BufNewFile,BufRead *.k setf kwt au BufNewFile,BufRead *.k setf kwt
@ -1479,7 +1493,10 @@ au BufNewFile,BufRead .msmtprc setf msmtp
au BufNewFile,BufRead *.mmp setf mmp au BufNewFile,BufRead *.mmp setf mmp
" ABB Rapid, Modula-2, Modsim III or LambdaProlog " ABB Rapid, Modula-2, Modsim III or LambdaProlog
au BufNewFile,BufRead *.mod\c call dist#ft#FTmod() au BufNewFile,BufRead *.mod call dist#ft#FTmod()
if has("fname_case")
au BufNewFile,BufRead *.Mod,*.MOD call dist#ft#FTmod()
endif
" Modula-3 (.m3, .i3, .mg, .ig) " Modula-3 (.m3, .i3, .mg, .ig)
au BufNewFile,BufRead *.[mi][3g] setf modula3 au BufNewFile,BufRead *.[mi][3g] setf modula3

View File

@ -1155,15 +1155,14 @@ func Test_cfg_file()
unlet g:filetype_cfg unlet g:filetype_cfg
" RAPID cfg " RAPID cfg
let ext = 'cfg'
for i in ['EIO', 'MMC', 'MOC', 'PROC', 'SIO', 'SYS'] for i in ['EIO', 'MMC', 'MOC', 'PROC', 'SIO', 'SYS']
call writefile([i .. ':CFG'], 'cfgfile.' .. ext) for ext in ['cfg', 'Cfg', 'CFG']
execute "split cfgfile." .. ext call writefile([i .. ':CFG'], 'cfgfile.' .. ext)
call assert_equal('rapid', &filetype) execute "split cfgfile." .. ext
bwipe! call assert_equal('rapid', &filetype)
call delete('cfgfile.' .. ext) bwipe!
" check different case of file extension call delete('cfgfile.' .. ext)
let ext = substitute(ext, '\(\l\)', '\u\1', '') endfor
endfor endfor
" clean up " clean up

View File

@ -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 */
/**/
731,
/**/ /**/
730, 730,
/**/ /**/