1"%% SiSU Vim syntax file 2" SiSU Maintainer: Ralph Amissah <[email protected]> 3" SiSU Markup: SiSU (sisu-0.38) 4" (originally looked at Ruby Vim by Mirko Nasato) 5" Last Update: 2006 Jul 22 6 7if version < 600 8 syntax clear 9elseif exists("b:current_syntax") 10 finish 11else 12endif 13"% 11 Errors? 14syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" 15"% 10 Markers: Endnote Identifiers, Pagebreaks etc.: 16if !exists("sisu_no_identifiers") 17 syn match sisu_mark_endnote "\~^" 18 syn match sisu_contain contains=@NoSpell "</\?sub>" 19 syn match sisu_break contains=@NoSpell "<br>\|<br />" 20 syn match sisu_control contains=@NoSpell "<p>\|</p>\|<p />\|<:p[bn]>" 21 syn match sisu_html "<center>\|</center>" 22 syn match sisu_marktail "[~-]#" 23 syn match sisu_html contains=@NoSpell "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>" 24 syn match sisu_control "\"" 25 syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" 26 syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" 27 syn match sisu_link contains=@NoSpell "\(https\?://\|\.\.\/\)\S\+" 28 "metaverse specific 29 syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>" 30 syn match sisu_marktail "<\~#>" 31 syn match sisu_markpara contains=@NoSpell "<:i[12]>" 32 syn match sisu_link " \*\~\S\+" 33 syn match sisu_action "^<:insert\d\+>" 34 syn match sisu_contain "<:e>" 35endif 36"% 9 URLs Numbers: and ASCII Codes 37syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" 38syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" 39"% 8 Tuned Error - is error if not already matched 40syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" 41syn match sisu_error contains=sisu_error "<a href\|</a>]" 42"% 7 Simple Enclosed Markup: 43" Simple Markup: 44"% url/link 45syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" 46"% header 47syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="$" 48syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(tags\?\|date\)\s\+"rs=e-1 end="\n$" 49syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\S\+:[+-]\?\s"rs=e-1 end="$" 50syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\(tags\?\|date\):\s\+"rs=e-1 end="\n$" 51"% headings 52syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" 53"% grouped text 54syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="table{.\+" end="}table" 55syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="{t\~h}" end="$$" 56syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)" 57syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" 58"% endnotes 59syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" 60syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" 61syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n" 62"% images 63syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}\(\(https\?://\|\.\./\)\S\+\|image\)" oneline 64"% some line operations 65syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" 66syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([12*]\|[12]\*\) " end="$" 67syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" 68syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$" 69"% font face curly brackets 70syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" 71syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" 72syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" 73syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" 74syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" 75syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" 76syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," 77syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" 78syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline 79"% single words bold italicise etc. "workon 80syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline 81syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline 82"% misc 83syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline 84"% metaverse html (flagged as errors for filetype sisu) 85syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline 86syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" skip="\n" oneline 87syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline 88syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline 89syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline 90syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline 91"% metaverse <:> 92syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>" 93syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>" 94syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>" 95syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>" 96"% 6 Expensive Mode 97" Expensive Mode: 98if !exists("sisu_no_expensive") 99else " not Expensive 100 syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline 101endif " Expensive? 102"% 5 Headers: and Headings (Document Instructions) 103syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" 104syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" 105"% 4 Errors? 106syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+" 107syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" 108syn match sisu_error_wspace contains=sisu_error_wspace " \s*$" 109syn match sisu_error contains=sisu_error,sisu_error_wspace "[^ (}]https\?:\S\+" 110syn match sisu_error contains=sisu_error_wspace "\t\+" 111syn match sisu_error contains=sisu_error "https\?:\S\+[}><]" 112syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n" 113syn match sisu_error contains=sisu_error "^[\-\~]{[^{]\{-}\n\n" 114syn match sisu_error contains=sisu_error "\s\+.{{" 115syn match sisu_error contains=sisu_error "^\~\s*$" 116syn match sisu_error contains=sisu_error "^[0-9]\~\s*$" 117syn match sisu_error contains=sisu_error "^[0-9]\~\S\+\s*$" 118syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" 119syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" 120syn match sisu_error contains=sisu_error "{\~^\S\+" 121syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" 122syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" 123syn match sisu_error contains=sisu_error "<dir>" 124"errors for filetype sisu, though not error in 'metaverse': 125syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" 126syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n\n" 127"% 3 Error Exceptions? 128syn match sisu_control "\n\n" "contains=ALL 129syn match sisu_control " //" 130syn match sisu_error "%{" 131syn match sisu_error "<br>https\?:\S\+\|https\?:\S\+<br>" 132syn match sisu_error "[><]https\?:\S\+\|https\?:\S\+[><]" 133"% 2 Definitions - Define the default highlighting. 134if version >= 508 || !exists("did_sisu_syntax_inits") 135 if version < 508 136 let did_sisu_syntax_inits = 1 137 command -nargs=+ HiLink hi link <args> 138 else 139 command -nargs=+ HiLink hi def link <args> 140 endif 141"% 1 Defined 142 HiLink sisu_normal Normal 143 HiLink sisu_header PreProc 144 HiLink sisu_header_content Statement 145 HiLink sisu_heading Title 146 HiLink sisu_structure Operator 147 HiLink sisu_contain Include 148 HiLink sisu_mark_endnote Include 149 HiLink sisu_link NonText 150 HiLink sisu_linked String 151 HiLink sisu_fontface Include 152 HiLink sisu_strikeout DiffDelete 153 HiLink sisu_content_alt Special 154 HiLink sisu_content_endnote Special 155 HiLink sisu_control Define 156 HiLink sisu_ocn Include 157 HiLink sisu_number Number 158 HiLink sisu_identifier Function 159 HiLink sisu_underline Underlined 160 HiLink sisu_markpara Include 161 HiLink sisu_marktail Include 162 HiLink sisu_mark Identifier 163 HiLink sisu_break Structure 164 HiLink sisu_html Type 165 HiLink sisu_action Identifier 166 HiLink sisu_comment Comment 167 HiLink sisu_error_wspace Error 168 HiLink sisu_error Error 169 delcommand HiLink 170endif 171let b:current_syntax = "sisu" 172