From 4a2a15d8dc8d310d537ababc2abba0fe444276a8 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Fri, 27 Dec 2019 06:09:59 +0000 Subject: unposted: internal: Vim ztst support: Add an ftplugin in addition to the syntax highlighter. --- Util/ztst-ftplugin.vim | 29 +++++++++++++++++ Util/ztst-syntax.vim | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ Util/ztst.vim | 85 -------------------------------------------------- 3 files changed, 114 insertions(+), 85 deletions(-) create mode 100644 Util/ztst-ftplugin.vim create mode 100644 Util/ztst-syntax.vim delete mode 100644 Util/ztst.vim (limited to 'Util') diff --git a/Util/ztst-ftplugin.vim b/Util/ztst-ftplugin.vim new file mode 100644 index 000000000..60f2b526f --- /dev/null +++ b/Util/ztst-ftplugin.vim @@ -0,0 +1,29 @@ +" ztst filetype plugin + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Inherit zsh.vim +runtime! ftplugin/zsh.vim + +let b:undo_ftplugin .= "| setl fo< comments< commentstring<" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format expected output/errput lines +setlocal comments+=:*>,:>,:*?,:?,:F: + +" Format comments to be up to 78 characters long +if &textwidth == 0 + setlocal textwidth=78 +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/Util/ztst-syntax.vim b/Util/ztst-syntax.vim new file mode 100644 index 000000000..8d8becfe7 --- /dev/null +++ b/Util/ztst-syntax.vim @@ -0,0 +1,85 @@ +"" A Vim syntax highlighting file for Test/*.ztst +" +" See ../Util/zyodl.vim for installation instructions. +" Also, it's recommended to 'setlocal conceallevel=3 concealcursor=nc'. +" +" 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.) + +"" 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=ztstOutputPatternSigil,ztstOutputPatternMarker +syn match ztstOutputPatternSigil /[*]/ contained +syn match ztstOutputPatternMarker /[>]/ contained conceal +syn match ztstOutputLiteral /^>/ nextgroup=ztstOutput +syn region ztstOutput start=// end=/$/ contained + +syn match ztstErrputPattern /^[*][?]/ nextgroup=ztstErrput contains=ztstErrputPatternSigil,ztstErrputPatternMarker +syn match ztstErrputPatternSigil /[*]/ contained +syn match ztstErrputPatternMarker /[?]/ contained conceal +syn match ztstErrputLiteral /^[?]/ nextgroup=ztstErrput +syn region ztstErrput start=// end=/$/ contained + +syn match ztstFrequentExplanationMarker /^F:/ nextgroup=ztstFrequentExplanation +syn region ztstFrequentExplanation start=// end=/$/ contained + +syn match ztstDirective /^%.*/ + +syn match ztstComment /^#.*/ + +" Highlight those variables which are /de jure/ or /de facto/ APIs of the test +" harness to the test files. +syn keyword ztstSpecialVariable ZTST_unimplemented ZTST_skip ZTST_testdir ZTST_fd ZTST_srcdir 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 ztstOutputPatternSigil Type +hi def link ztstOutputPatternMarker Ignore +hi def link ztstOutputLiteral Ignore +hi def link ztstErrput Identifier +hi def link ztstErrputPatternSigil Type +hi def link ztstErrputPatternMarker Ignore +hi def link ztstErrputLiteral Ignore +hi def link ztstDirective Statement +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 diff --git a/Util/ztst.vim b/Util/ztst.vim deleted file mode 100644 index 8d8becfe7..000000000 --- a/Util/ztst.vim +++ /dev/null @@ -1,85 +0,0 @@ -"" A Vim syntax highlighting file for Test/*.ztst -" -" See ../Util/zyodl.vim for installation instructions. -" Also, it's recommended to 'setlocal conceallevel=3 concealcursor=nc'. -" -" 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.) - -"" 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=ztstOutputPatternSigil,ztstOutputPatternMarker -syn match ztstOutputPatternSigil /[*]/ contained -syn match ztstOutputPatternMarker /[>]/ contained conceal -syn match ztstOutputLiteral /^>/ nextgroup=ztstOutput -syn region ztstOutput start=// end=/$/ contained - -syn match ztstErrputPattern /^[*][?]/ nextgroup=ztstErrput contains=ztstErrputPatternSigil,ztstErrputPatternMarker -syn match ztstErrputPatternSigil /[*]/ contained -syn match ztstErrputPatternMarker /[?]/ contained conceal -syn match ztstErrputLiteral /^[?]/ nextgroup=ztstErrput -syn region ztstErrput start=// end=/$/ contained - -syn match ztstFrequentExplanationMarker /^F:/ nextgroup=ztstFrequentExplanation -syn region ztstFrequentExplanation start=// end=/$/ contained - -syn match ztstDirective /^%.*/ - -syn match ztstComment /^#.*/ - -" Highlight those variables which are /de jure/ or /de facto/ APIs of the test -" harness to the test files. -syn keyword ztstSpecialVariable ZTST_unimplemented ZTST_skip ZTST_testdir ZTST_fd ZTST_srcdir 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 ztstOutputPatternSigil Type -hi def link ztstOutputPatternMarker Ignore -hi def link ztstOutputLiteral Ignore -hi def link ztstErrput Identifier -hi def link ztstErrputPatternSigil Type -hi def link ztstErrputPatternMarker Ignore -hi def link ztstErrputLiteral Ignore -hi def link ztstDirective Statement -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