Mercurial > vim
changeset 33065:3284c31289f5 v9.0.1820
patch 9.0.1820: Rexx files may not be recognised
Commit: https://github.com/vim/vim/commit/e06afb7860805537ccd69966bc03169852c9b378
Author: Doug Kearns <dougkearns@gmail.com>
Date: Tue Aug 29 22:21:35 2023 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 29 Aug 2023 22:30:07 +0200 |
parents | b29e94d1422f |
children | f0df8833518d |
files | runtime/autoload/dist/ft.vim runtime/autoload/dist/script.vim src/testdir/test_filetype.vim src/version.c |
diffstat | 4 files changed, 34 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -147,13 +147,19 @@ export def FTcls() endif var line1 = getline(1) - - if line1 =~ '^\v%(\%|\\)' - setf tex - elseif line1[0] == '#' && line1 =~ 'rexx' + if line1 =~ '^#!.*\<\%(rexx\|regina\)\>' setf rexx + return elseif line1 == 'VERSION 1.0 CLASS' setf vb + return + endif + + var nonblank1 = getline(nextnonblank(1)) + if nonblank1 =~ '^\v%(\%|\\)' + setf tex + elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)' + setf rexx else setf st endif
--- a/runtime/autoload/dist/script.vim +++ b/runtime/autoload/dist/script.vim @@ -213,6 +213,10 @@ export def Exe2filetype(name: string, li elseif name =~ '^crystal\>' return 'crystal' + # Rexx + elseif name =~ '^\%(rexx\|regina\)\>' + return 'rexx' + endif return ''
--- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -945,6 +945,8 @@ def s:GetScriptChecks(): dict<list<list< forth: [['#!/path/gforth']], icon: [['#!/path/icon']], crystal: [['#!/path/crystal']], + rexx: [['#!/path/rexx'], + ['#!/path/regina']], } enddef @@ -2045,7 +2047,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!