blob: fe472c9fefca64dc42fc5fd92444bede83587e68 [file] [log] [blame]
Bram Moolenaar5555acc2006-04-07 21:33:12 +00001"%% SiSU Vim syntax file
Bram Moolenaar5555acc2006-04-07 21:33:12 +00002" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003" SiSU Markup: SiSU (sisu-0.38)
Bram Moolenaar5555acc2006-04-07 21:33:12 +00004" (originally looked at Ruby Vim by Mirko Nasato)
Bram Moolenaardd2a3cd2007-05-05 17:10:09 +00005" Last Update: 2006 Jul 22
6
Bram Moolenaar5555acc2006-04-07 21:33:12 +00007if version < 600
8 syntax clear
9elseif exists("b:current_syntax")
Bram Moolenaar5555acc2006-04-07 21:33:12 +000010 finish
11else
12endif
Bram Moolenaarc6fe9192006-04-09 21:54:49 +000013"% 11 Errors?
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000014syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000015"% 10 Markers: Endnote Identifiers, Pagebreaks etc.:
16if !exists("sisu_no_identifiers")
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000017 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\}"
Bram Moolenaard68071d2006-05-02 22:08:30 +000027 syn match sisu_link contains=@NoSpell "\(https\?://\|\.\.\/\)\S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000028 "metaverse specific
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000029 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>"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000035endif
36"% 9 URLs Numbers: and ASCII Codes
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000037syn 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\)"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000039"% 8 Tuned Error - is error if not already matched
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000040syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
41syn match sisu_error contains=sisu_error "<a href\|</a>]"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000042"% 7 Simple Enclosed Markup:
43" Simple Markup:
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000044"% url/link
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000045syn 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="$"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000046"% header
Bram Moolenaarc6fe9192006-04-09 21:54:49 +000047syn 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="$"
Bram Moolenaarb21e5842006-04-16 18:30:08 +000048syn 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$"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000051"% headings
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000052syn 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="$"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000053"% grouped text
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000054syn 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\)"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000057syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
58"% endnotes
Bram Moolenaardd2a3cd2007-05-05 17:10:09 +000059syn 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"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000061syn 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"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000062"% images
Bram Moolenaard68071d2006-05-02 22:08:30 +000063syn 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
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000064"% some line operations
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000065syn 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="$"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000069"% font face curly brackets
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000070syn 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="},"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000077syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000078syn 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
Bram Moolenaar5555acc2006-04-07 21:33:12 +000082"% misc
Bram Moolenaarc6fe9192006-04-09 21:54:49 +000083syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000084"% 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
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000090syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline
91"% metaverse <:>
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000092syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000093syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000094syn 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>"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000096"% 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)
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000103syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000104syn 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*$"
Bram Moolenaard68071d2006-05-02 22:08:30 +0000109syn match sisu_error contains=sisu_error,sisu_error_wspace "[^ (}]https\?:\S\+"
Bram Moolenaarc6fe9192006-04-09 21:54:49 +0000110syn match sisu_error contains=sisu_error_wspace "\t\+"
Bram Moolenaard68071d2006-05-02 22:08:30 +0000111syn match sisu_error contains=sisu_error "https\?:\S\+[}><]"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000112syn 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*"
Bram Moolenaarb21e5842006-04-16 18:30:08 +0000120syn match sisu_error contains=sisu_error "{\~^\S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000121syn 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>"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000124"errors for filetype sisu, though not error in 'metaverse':
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000125syn 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 "%{"
Bram Moolenaard68071d2006-05-02 22:08:30 +0000131syn match sisu_error "<br>https\?:\S\+\|https\?:\S\+<br>"
132syn match sisu_error "[><]https\?:\S\+\|https\?:\S\+[><]"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000133"% 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
Bram Moolenaarc6fe9192006-04-09 21:54:49 +0000142 HiLink sisu_normal Normal
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000143 HiLink sisu_header PreProc
Bram Moolenaarc6fe9192006-04-09 21:54:49 +0000144 HiLink sisu_header_content Statement
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000145 HiLink sisu_heading Title
Bram Moolenaarc6fe9192006-04-09 21:54:49 +0000146 HiLink sisu_structure Operator
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000147 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
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000157 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
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000167 HiLink sisu_error_wspace Error
168 HiLink sisu_error Error
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000169 delcommand HiLink
170endif
171let b:current_syntax = "sisu"