From 43761827f9ae152fe41ee6e27d408aa57b045b32 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Sat, 21 Dec 2019 11:43:29 +0000 Subject: 45109: Add Vim highlighting file for Test/*.ztst files. --- Test/B01cd.ztst | 2 ++ Test/ztst.vim | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Test/ztst.vim (limited to 'Test') diff --git a/Test/B01cd.ztst b/Test/B01cd.ztst index 8d4f0955c..50c14b496 100644 --- a/Test/B01cd.ztst +++ b/Test/B01cd.ztst @@ -105,6 +105,8 @@ # is to be skipped. # ZTST_skip: Set this in any test case if that single test case is to be # skipped. Testing resumes at the next test case in the same file. +# +# Syntax highlighting for Vim is available, see Test/ztst.vim. cd cdtst.tmp/sub/fake && pwd && print $PWD diff --git a/Test/ztst.vim b/Test/ztst.vim new file mode 100644 index 000000000..3c9e0e173 --- /dev/null +++ b/Test/ztst.vim @@ -0,0 +1,72 @@ +"" A Vim syntax highlighting file for Test/*.ztst +" +" See ../Util/zyodl.vim for installation instructions +" See B01cd.ztst for cases we cover + +" TODO: Some zsh syntax isn't highlighted, e.g., «{ cd $0 }» doesn't highlight either 'cd' or '$0' +" Apparently because the $VIMRUNTIME/syntax/zsh.vim zshBrackets group is defined as 'contains=TOP'? +" https://bugs.debian.org/947120 +" TODO: ZTST_unimplemented ZTST_skip aren't recognized everywhere +" I haven't found yet a legitimate use where they aren't highlighted, but +" they aren't highlighted in theoretical cases such as (( ++ZTST_skip )). +" (This example is theoretical because those variables are string-typed.) +" TODO: for glob-like output/errput lines, conceal the '>' or '?' to align them with adjacent lines. + +"" Boilerplate: +if exists("b:current_syntax") + finish +endif +let s:cpo_save = &cpo +set cpo&vim + +"" Syntax groups: +syn clear + +syn include @zsh syntax/zsh.vim + +syn match ztstPayload /^\s\+\zs.*/ contains=@zsh + +syn match ztstExitCode /^\d\+\|^-/ nextgroup=ztstFlags +syn match ztstFlags /[.dDq]*:/ contained nextgroup=ztstTestName contains=ztstColon +syn match ztstColon /:/ contained +syn region ztstTestName start=// end=/$/ contained + +syn match ztstInputMarker /^/ nextgroup=ztstOutput contains=ztstPatternMarker +syn region ztstOutput start=// end=/$/ contained +syn match ztstErrputMarker /^[*]\??/ nextgroup=ztstErrput contains=ztstPatternMarker +syn region ztstErrput start=// end=/$/ contained +syn match ztstPatternMarker /[*]/ contained + +syn match ztstFrequentExplanationMarker /^F:/ nextgroup=ztstFrequentExplanation +syn region ztstFrequentExplanation start=// end=/$/ contained + +syn match ztstDirective /^%.*/ + +syn match ztstComment /^#.*/ + +syn keyword ztstSpecialVariable ZTST_unimplemented ZTST_skip ZTST_testdir containedin=@zsh + +"" Highlight groups: +hi def link ztstExitCode Number +hi def link ztstFlags Normal +hi def link ztstColon Ignore +hi def link ztstTestName Title +hi def link ztstInput Normal +hi def link ztstInputMarker Ignore +hi def link ztstOutput String +hi def link ztstOutputMarker Ignore +hi def link ztstErrput Identifier +hi def link ztstErrputMarker Ignore +hi def link ztstDirective Statement +hi def link ztstPatternMarker Type +hi def link ztstComment Comment +hi def link ztstFrequentExplanation PreProc +hi def link ztstFrequentExplanationMarker Ignore +hi def link ztstSpecialVariable Underlined + +"" Boilerplate: +let b:current_syntax = "ztst" +let &cpo = s:cpo_save +unlet s:cpo_save -- cgit 1.4.1