mirror of
https://github.com/vim/vim.git
synced 2025-10-23 08:44:20 -04:00
patch 9.1.1732: filetype: .inc file detection can be improved
Problem: filetype: .inc file detection can be improved Solution: Update filetype detection for Pascal and BitBake code (Martin Schwan). Fix the detection of .inc files containing Pascal and BitBake code: - the concatenated string, merged from three lines, only contains one beginning and the pattern "^" would not match as expected. Use a range() loop to iterate each line string individually. This way, the pattern "^" works for beginning of lines. - improve BitBake include file detection by also matching forward-slashes "/" in variable names and assignment operators with a dot ".=" and "=.". Valid examples, which should match, are: PREFERRED_PROVIDER_virtual/kernel = "linux-yocto" MACHINEOVERRIDES =. "qemuall:" BBPATH .= ":${LAYERDIR}" - parse twenty instead of just three lines, to accommodate for potential comments at the beginning of files closes: #18202 Signed-off-by: Martin Schwan <m.schwan@phytec.de> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
63a02ca39a
commit
9fd1a657d2
46
runtime/autoload/dist/ft.vim
vendored
46
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 Aug 26
|
# Last Change: 2025 Sep 04
|
||||||
# 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
|
||||||
@@ -828,26 +828,32 @@ export def FTinc()
|
|||||||
if exists("g:filetype_inc")
|
if exists("g:filetype_inc")
|
||||||
exe "setf " .. g:filetype_inc
|
exe "setf " .. g:filetype_inc
|
||||||
else
|
else
|
||||||
var lines = getline(1) .. getline(2) .. getline(3)
|
for lnum in range(1, min([line("$"), 20]))
|
||||||
if lines =~? "perlscript"
|
var line = getline(lnum)
|
||||||
setf aspperl
|
if line =~? "perlscript"
|
||||||
elseif lines =~ "<%"
|
setf aspperl
|
||||||
setf aspvbs
|
return
|
||||||
elseif lines =~ "<?"
|
elseif line =~ "<%"
|
||||||
setf php
|
setf aspvbs
|
||||||
# Pascal supports // comments but they're vary rarely used for file
|
return
|
||||||
# headers so assume POV-Ray
|
elseif line =~ "<?"
|
||||||
elseif lines =~ '^\s*\%({\|(\*\)' || lines =~? ft_pascal_keywords
|
setf php
|
||||||
setf pascal
|
return
|
||||||
elseif lines =~# '\<\%(require\|inherit\)\>' || lines =~# '[A-Z][A-Za-z0-9_:${}]*\s\+\%(??\|[?:+]\)\?= '
|
# Pascal supports // comments but they're vary rarely used for file
|
||||||
setf bitbake
|
# headers so assume POV-Ray
|
||||||
else
|
elseif line =~ '^\s*\%({\|(\*\)' || line =~? ft_pascal_keywords
|
||||||
FTasmsyntax()
|
setf pascal
|
||||||
if exists("b:asmsyntax")
|
return
|
||||||
exe "setf " .. fnameescape(b:asmsyntax)
|
elseif line =~# '\<\%(require\|inherit\)\>' || line =~# '[A-Z][A-Za-z0-9_:${}/]*\s\+\%(??\|[?:+.]\)\?=.\? '
|
||||||
else
|
setf bitbake
|
||||||
setf pov
|
return
|
||||||
endif
|
endif
|
||||||
|
endfor
|
||||||
|
FTasmsyntax()
|
||||||
|
if exists("b:asmsyntax")
|
||||||
|
exe "setf " .. fnameescape(b:asmsyntax)
|
||||||
|
else
|
||||||
|
setf pov
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
enddef
|
enddef
|
||||||
|
@@ -2694,6 +2694,21 @@ func Test_inc_file()
|
|||||||
call assert_equal('bitbake', &filetype)
|
call assert_equal('bitbake', &filetype)
|
||||||
bwipe!
|
bwipe!
|
||||||
|
|
||||||
|
call writefile(['PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"'], 'Xfile.inc')
|
||||||
|
split Xfile.inc
|
||||||
|
call assert_equal('bitbake', &filetype)
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
call writefile(['MACHINEOVERRIDES =. "qemuall:"'], 'Xfile.inc')
|
||||||
|
split Xfile.inc
|
||||||
|
call assert_equal('bitbake', &filetype)
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
call writefile(['BBPATH .= ":${LAYERDIR}"'], 'Xfile.inc')
|
||||||
|
split Xfile.inc
|
||||||
|
call assert_equal('bitbake', &filetype)
|
||||||
|
bwipe!
|
||||||
|
|
||||||
" asm
|
" asm
|
||||||
call writefile(['asmsyntax=foo'], 'Xfile.inc')
|
call writefile(['asmsyntax=foo'], 'Xfile.inc')
|
||||||
split Xfile.inc
|
split Xfile.inc
|
||||||
|
@@ -724,6 +724,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 */
|
||||||
|
/**/
|
||||||
|
1732,
|
||||||
/**/
|
/**/
|
||||||
1731,
|
1731,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user