1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-12-29 16:25:35 +01:00
zsh/Util/zyodl.vim

109 lines
4.3 KiB
VimL

"" A Vim syntax highlighting file for Doc/Zsh/*.yo
" To try this, run:
" cd Doc/Zsh && vim --cmd "source ./.vimrc" zle.yo
" (This sources the file <Doc/Zsh/.vimrc>.)
"
" To install this permanently:
" 1. Copy this file to ~/.vim/syntax/zyodl.vim
" 2. Create ~/.vim/filetype.vim as explained in ":help new-filetype" case C.
" 3. Add the following command to ~/.vim/filetype.vim:
" autocmd BufRead,BufNewFile **/Doc/Zsh/*.yo setfiletype zyodl
" Or alternatively:
" 1. Append the contents of Doc/Zsh/.vimrc to your .vimrc, changing «<sfile>» to «%».
"
" You may also wish to set:
" autocmd FileType zyodl setlocal conceallevel=2
" in order to benefit from the 'conceal' behaviour for LPAR(), RPAR(), and
" friends.
"" Test case:
" texinode()()()()
" chapter(foo)
" vindex(foo)
" foo tt(foo) var(foo) bf(foo) em(foo) foo
" xitem(foo)
" item(foo)(foo)
" sitem(foo)(foo foo)
" COMMENT(foo var(foo) foo)
" comment(foo)
" example(print *.c+LPAR()#q:s/#%+LPAR()#b+RPAR()s+LPAR()*+RPAR().c/'S${match[1]}.C'/+RPAR())
" example(zargs -- **/*(.) -- ls -l)
" ifzman(zmanref(zshmisc))ifnzman(noderef(Redirection))
" LPAR()foo 42 foo+RPAR()
" chapter(foo (foo) foo)
" chapter(foo (foo (foo) foo) foo) bar
"
" sitem(foo)(foo (foo) foo)
" sitem(foo)(foo (foo) foo)
"
" sitem(foo)(foo tt(foo) foo) # nested underline
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
"" Syntax groups:
syn clear
syn cluster zyodlInline contains=zyodlTt,zyodlVar,zyodlBold,zyodlEmph,zyodlCond
syn region zyodlTt start="\<tt(" end=")" contains=zyodlSpecial,zyodlParenthetical
syn region zyodlVar start="\<var(" end=")" contains=zyodlSpecial,zyodlParenthetical
syn region zyodlBold start="\<bf(" end=")" contains=zyodlSpecial,zyodlParenthetical
syn region zyodlEmph start="\<em(" end=")" contains=zyodlSpecial,zyodlParenthetical
syn region zyodlIndex start="\<.index(" end=")" contains=zyodlSpecial
syn match zyodlNumber "\d\+"
syn region zyodlItem start="\<xitem(" end=")" contains=zyodlSpecial,@zyodlInline
syn region zyodlItem start="\<item(" end=")" contains=zyodlSpecial,@zyodlInline
syn region zyodlExample start="\<example(" end=")" contains=zyodlSpecial,zyodlParenthetical
syn region zyodlComment start="\<COMMENT(" end=")" contains=zyodlSpecial,@zyodlInline,zyodlParenthetical
" comment that gets output in generated texinfo/roff source
syn region zyodlComment start="\<comment(" end=")"
syn region zyodlTitle start="\<\(chapter\|subsect\|sect\)(" end=")" contains=zyodlSpecial,@zyodlInline,zyodlParenthetical
syn match zyodlTitle "^texinode(.*$"
syn region zyodlParenthetical start="\w\@<!(" end=")" transparent contained contains=zyodlParenthetical
" zyodlCond doesn't contain zyodlParenthetical, since section names (probably) don't have parentheticals.
syn region zyodlCond start="\<\(ifzman\|ifnzman\)(" end=")" contains=zyodlRef,zyodlSpecial,@zyodlInline
syn region zyodlRef start="\<\(zmanref\|noderef\)(" end=")"
" zyodlSItemArg2 should use zyodlParenthetical instead of the 'skip='
syn keyword zyodlKeyword sitem nextgroup=zyodlSItemArg1
syn region zyodlSItemArg1 oneline start="(" end=")" contains=zyodlSpecial,@zyodlInline nextgroup=zyodlSItemArg2 contained
syn region zyodlSItemArg2 start="(" end=")" contains=zyodlSpecial,@zyodlInline contained skip="\w\@<!([^)]*)"
" Miscellany
syn match zyodlLineJoiner /\\$/
syn keyword zyodlNote note Note NOTE
syn keyword zyodlBullet itemiz conceal cchar=
syn match zyodlSpecial "\<DASH()-" conceal cchar=
syn match zyodlSpecial "+\?LPAR()" conceal cchar=(
syn match zyodlSpecial "+\?RPAR()" conceal cchar=)
syn match zyodlSpecial "+\?PLUS()" conceal cchar=+
"" Highlight groups:
hi def link zyodlTt Constant
hi def link zyodlVar Identifier
" Not ':hi def link zyodlBold Bold' since there's no such group.
hi def zyodlBold gui=bold cterm=bold
hi def link zyodlEmph Type
hi def link zyodlIndex PreProc
hi def link zyodlSpecial Special
hi def link zyodlNumber Number
hi def link zyodlItem Keyword
hi def link zyodlExample String
hi def link zyodlComment Comment
hi def link zyodlTitle Title
hi def link zyodlCond Conditional
hi def link zyodlRef Include
hi def link zyodlSItemArg1 Macro
hi def link zyodlSItemArg2 Underlined
hi def link zyodlLineJoiner Special
hi def link zyodlNote Todo
let b:current_syntax = "zyodl"
let &cpo = s:cpo_save
unlet s:cpo_save