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:
committed by
Christian Brabandt
parent
3e1e63de18
commit
e06afb7860
14
runtime/autoload/dist/ft.vim
vendored
14
runtime/autoload/dist/ft.vim
vendored
@@ -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
|
||||||
|
4
runtime/autoload/dist/script.vim
vendored
4
runtime/autoload/dist/script.vim
vendored
@@ -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 ''
|
||||||
|
@@ -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!
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user