mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.0.1820: Rexx files may not be recognised (#24956)
Problem: Rexx files may not be recognised
Solution: Add shebang detection and improve disambiguation of *.cls
files
closes: vim/vim#12951
e06afb7860
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
This commit is contained in:
parent
7914881356
commit
5d49542b56
@ -194,13 +194,18 @@ function M.cls(_, bufnr)
|
||||
return vim.g.filetype_cls
|
||||
end
|
||||
local line1 = getline(bufnr, 1)
|
||||
if line1:find('^[%%\\]') then
|
||||
return 'tex'
|
||||
elseif line1:find('^#') and line1:lower():find('rexx') then
|
||||
if matchregex(line1, [[^#!.*\<\%(rexx\|regina\)\>]]) then
|
||||
return 'rexx'
|
||||
elseif line1 == 'VERSION 1.0 CLASS' then
|
||||
return 'vb'
|
||||
end
|
||||
|
||||
local nonblank1 = nextnonblank(bufnr, 1)
|
||||
if nonblank1 and nonblank1:find('^[%%\\]') then
|
||||
return 'tex'
|
||||
elseif nonblank1 and findany(nonblank1, { '^%s*/%*', '^%s*::%w' }) then
|
||||
return 'rexx'
|
||||
end
|
||||
return 'st'
|
||||
end
|
||||
|
||||
@ -1648,6 +1653,7 @@ local patterns_hashbang = {
|
||||
guile = 'scheme',
|
||||
['nix%-shell'] = 'nix',
|
||||
['crystal\\>'] = { 'crystal', { vim_regex = true } },
|
||||
['^\\%(rexx\\|regina\\)\\>'] = { 'rexx', { vim_regex = true } },
|
||||
}
|
||||
|
||||
---@private
|
||||
|
@ -856,6 +856,8 @@ let s:script_checks = {
|
||||
\ 'forth': [['#!/path/gforth']],
|
||||
\ 'icon': [['#!/path/icon']],
|
||||
\ 'crystal': [['#!/path/crystal']],
|
||||
\ 'rexx': [['#!/path/rexx'],
|
||||
\ ['#!/path/regina']],
|
||||
\ }
|
||||
|
||||
" Various forms of "env" optional arguments.
|
||||
@ -1953,7 +1955,22 @@ func Test_cls_file()
|
||||
|
||||
" 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
|
||||
call assert_equal('rexx', &filetype)
|
||||
bwipe!
|
||||
|
Loading…
Reference in New Issue
Block a user