blob: c7cdf2df1d7e167eb6b0bf13020d62067e009b12 [file] [log] [blame]
Bram Moolenaarf2330482008-06-24 20:19:36 +00001"SiSU Vim syntax file
2"SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
Bram Moolenaar5c736222010-01-06 20:54:52 +01003"SiSU Markup: SiSU (sisu-0.69.0, 2008-09-16)
Bram Moolenaarf2330482008-06-24 20:19:36 +00004"(originally looked at Ruby Vim by Mirko Nasato)
Bram Moolenaardd2a3cd2007-05-05 17:10:09 +00005
Bram Moolenaar5555acc2006-04-07 21:33:12 +00006if version < 600
7 syntax clear
8elseif exists("b:current_syntax")
Bram Moolenaar5555acc2006-04-07 21:33:12 +00009 finish
10else
11endif
Bram Moolenaarf2330482008-06-24 20:19:36 +000012
13" Errors:
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000014syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
Bram Moolenaarf2330482008-06-24 20:19:36 +000015
16" Markers Identifiers:
Bram Moolenaar5555acc2006-04-07 21:33:12 +000017if !exists("sisu_no_identifiers")
Bram Moolenaarf2330482008-06-24 20:19:36 +000018 syn match sisu_mark_endnote "\~^"
19 syn match sisu_contain contains=@NoSpell "</\?sub>"
20 syn match sisu_break contains=@NoSpell "<br>\|<br />"
21 syn match sisu_control contains=@NoSpell "<p>\|</p>\|<p />\|<:p[bn]>"
22 syn match sisu_html "<center>\|</center>"
23 syn match sisu_marktail "[~-]#"
24 syn match sisu_html contains=@NoSpell "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>"
25 syn match sisu_control "\""
26 syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
27 syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
28 syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000029 "metaverse specific
Bram Moolenaarf2330482008-06-24 20:19:36 +000030 syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>"
31 syn match sisu_marktail "<\~#>"
32 syn match sisu_markpara contains=@NoSpell "<:i[1-9]>"
33 syn match sisu_link " \*\~\S\+"
34 syn match sisu_action "^<:insert\d\+>"
35 syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$"
36 syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$"
37 syn match sisu_contain "<:e>"
38 syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
39 syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
40 syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]"
41 syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]"
42 syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1"
43 syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+"
44 syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1"
45 syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000046endif
Bram Moolenaarf2330482008-06-24 20:19:36 +000047
48"URLs Numbers And ASCII Codes:
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000049syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
50syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
Bram Moolenaarf2330482008-06-24 20:19:36 +000051
52"Tuned Error: (is error if not already matched)
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000053syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
54syn match sisu_error contains=sisu_error "<a href\|</a>]"
Bram Moolenaarf2330482008-06-24 20:19:36 +000055
56"Simple Paired Enclosed Markup:
57"url/link
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000058syn 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 Moolenaarf2330482008-06-24 20:19:36 +000059"header
60syn 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="\n$"
61syn 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="\n$"
62"headings
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000063syn 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 Moolenaarf2330482008-06-24 20:19:36 +000064"grouped text
65syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
66syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n\n"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000067syn 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 +000068syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
Bram Moolenaarf2330482008-06-24 20:19:36 +000069"endnotes
70syn 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,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
71syn 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,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000072syn 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 Moolenaarf2330482008-06-24 20:19:36 +000073"links and images
74syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|\.\./\)\S\+" oneline
75syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
76syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline
77"some line operations
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000078syn 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="$"
Bram Moolenaarf2330482008-06-24 20:19:36 +000079syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000080syn 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="$"
81syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
Bram Moolenaarf2330482008-06-24 20:19:36 +000082"font face curly brackets
83"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
Bram Moolenaar5c736222010-01-06 20:54:52 +010084syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +000085syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
86syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
87syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
88syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/"
89syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+"
90syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^"
91syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="},"
Bram Moolenaarf2330482008-06-24 20:19:36 +000092syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
Bram Moolenaar5555acc2006-04-07 21:33:12 +000093syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline
Bram Moolenaarf2330482008-06-24 20:19:36 +000094"single words bold italicise etc. "workon
Bram Moolenaar5555acc2006-04-07 21:33:12 +000095syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline
96syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
Bram Moolenaarf2330482008-06-24 20:19:36 +000097"misc
Bram Moolenaarc6fe9192006-04-09 21:54:49 +000098syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
Bram Moolenaarf2330482008-06-24 20:19:36 +000099"metaverse html (flagged as errors for filetype sisu)
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000100syn 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
101syn 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
102syn 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
103syn 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
104syn 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 +0000105syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline
Bram Moolenaarf2330482008-06-24 20:19:36 +0000106"metaverse
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000107syn 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 +0000108syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000109syn 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>"
110syn 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 Moolenaarf2330482008-06-24 20:19:36 +0000111
112"Expensive Mode:
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000113if !exists("sisu_no_expensive")
114else " not Expensive
115 syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
116endif " Expensive?
Bram Moolenaarf2330482008-06-24 20:19:36 +0000117
118"Headers And Headings: (Document Instructions)
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000119syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000120syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
Bram Moolenaarf2330482008-06-24 20:19:36 +0000121
122"Errors:
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000123syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+"
124syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
125syn match sisu_error_wspace contains=sisu_error_wspace " \s*$"
Bram Moolenaarc6fe9192006-04-09 21:54:49 +0000126syn match sisu_error contains=sisu_error_wspace "\t\+"
Bram Moolenaarf2330482008-06-24 20:19:36 +0000127syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
128syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000129syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n"
Bram Moolenaarf2330482008-06-24 20:19:36 +0000130syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n\n"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000131syn match sisu_error contains=sisu_error "\s\+.{{"
132syn match sisu_error contains=sisu_error "^\~\s*$"
133syn match sisu_error contains=sisu_error "^[0-9]\~\s*$"
134syn match sisu_error contains=sisu_error "^[0-9]\~\S\+\s*$"
135syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
136syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
Bram Moolenaarb21e5842006-04-16 18:30:08 +0000137syn match sisu_error contains=sisu_error "{\~^\S\+"
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000138syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]"
139syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']"
140syn match sisu_error contains=sisu_error "<dir>"
Bram Moolenaard8fc5c02006-04-29 21:55:22 +0000141"errors for filetype sisu, though not error in 'metaverse':
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000142syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
143syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n\n"
Bram Moolenaarf2330482008-06-24 20:19:36 +0000144
145"Error Exceptions:
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000146syn match sisu_control "\n\n" "contains=ALL
147syn match sisu_control " //"
148syn match sisu_error "%{"
Bram Moolenaarf2330482008-06-24 20:19:36 +0000149syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
150syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
151
152"Definitions Default Highlighting:
153hi def link sisu_normal Normal
154hi def link sisu_header PreProc
155hi def link sisu_header_content Statement
156hi def link sisu_heading Title
157hi def link sisu_structure Operator
158hi def link sisu_contain Include
159hi def link sisu_mark_endnote Include
160hi def link sisu_require NonText
161hi def link sisu_link NonText
162hi def link sisu_linked String
163hi def link sisu_fontface Include
164hi def link sisu_strikeout DiffDelete
165hi def link sisu_content_alt Special
Bram Moolenaarf2330482008-06-24 20:19:36 +0000166hi def link sisu_sem_content SpecialKey
167hi def link sisu_sem_block Special
168hi def link sisu_sem_marker Visual
169"hi def link sisu_sem_marker Structure
170hi def link sisu_sem_marker_block MatchParen
171hi def link sisu_sem_ex_marker FoldColumn
172hi def link sisu_sem_ex_marker_block Folded
173hi def link sisu_sem_ex_content Comment
174"hi def link sisu_sem_ex_content SpecialKey
175hi def link sisu_sem_ex_block Comment
Bram Moolenaar5c736222010-01-06 20:54:52 +0100176hi def link sisu_index SpecialKey
177hi def link sisu_index_block Visual
Bram Moolenaarf2330482008-06-24 20:19:36 +0000178hi def link sisu_content_endnote Special
179hi def link sisu_control Define
180hi def link sisu_ocn Include
181hi def link sisu_number Number
182hi def link sisu_identifier Function
183hi def link sisu_underline Underlined
184hi def link sisu_markpara Include
185hi def link sisu_marktail Include
186hi def link sisu_mark Identifier
187hi def link sisu_break Structure
188hi def link sisu_html Type
189hi def link sisu_action Identifier
190hi def link sisu_comment Comment
191hi def link sisu_error_sem_marker Error
192hi def link sisu_error_wspace Error
193hi def link sisu_error Error
Bram Moolenaar5555acc2006-04-07 21:33:12 +0000194let b:current_syntax = "sisu"