0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 9.0.1820: Rexx files may not be recognised

Problem:  Rexx files may not be recognised
Solution: Add shebang detection and improve disambiguation of *.cls
	  files

closes: #12951

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
This commit is contained in:
Doug Kearns
2023-08-29 22:21:35 +02:00
committed by Christian Brabandt
parent 3e1e63de18
commit e06afb7860
4 changed files with 34 additions and 5 deletions

View File

@@ -147,13 +147,19 @@ export def FTcls()
endif endif
var line1 = getline(1) var line1 = getline(1)
if line1 =~ '^#!.*\<\%(rexx\|regina\)\>'
if line1 =~ '^\v%(\%|\\)'
setf tex
elseif line1[0] == '#' && line1 =~ 'rexx'
setf rexx setf rexx
return
elseif line1 == 'VERSION 1.0 CLASS' elseif line1 == 'VERSION 1.0 CLASS'
setf vb setf vb
return
endif
var nonblank1 = getline(nextnonblank(1))
if nonblank1 =~ '^\v%(\%|\\)'
setf tex
elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
setf rexx
else else
setf st setf st
endif endif

View File

@@ -213,6 +213,10 @@ export def Exe2filetype(name: string, line1: string): string
elseif name =~ '^crystal\>' elseif name =~ '^crystal\>'
return 'crystal' return 'crystal'
# Rexx
elseif name =~ '^\%(rexx\|regina\)\>'
return 'rexx'
endif endif
return '' return ''

View File

@@ -945,6 +945,8 @@ def s:GetScriptChecks(): dict<list<list<string>>>
forth: [['#!/path/gforth']], forth: [['#!/path/gforth']],
icon: [['#!/path/icon']], icon: [['#!/path/icon']],
crystal: [['#!/path/crystal']], crystal: [['#!/path/crystal']],
rexx: [['#!/path/rexx'],
['#!/path/regina']],
} }
enddef enddef
@@ -2045,7 +2047,22 @@ func Test_cls_file()
" Rexx " Rexx
call writefile(['# rexx'], 'Xfile.cls') call writefile(['#!/usr/bin/rexx'], 'Xfile.cls')
split Xfile.cls
call assert_equal('rexx', &filetype)
bwipe!
call writefile(['#!/usr/bin/regina'], 'Xfile.cls')
split Xfile.cls
call assert_equal('rexx', &filetype)
bwipe!
call writefile(['/* Comment */'], 'Xfile.cls')
split Xfile.cls
call assert_equal('rexx', &filetype)
bwipe!
call writefile(['::class Foo subclass Bar public'], 'Xfile.cls')
split Xfile.cls split Xfile.cls
call assert_equal('rexx', &filetype) call assert_equal('rexx', &filetype)
bwipe! bwipe!

View File

@@ -699,6 +699,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 */
/**/
1820,
/**/ /**/
1819, 1819,
/**/ /**/