]> Dogcows Code - chaz/vim-mermaid/blob - syntax/mermaid.vim
Initial commit
[chaz/vim-mermaid] / syntax / mermaid.vim
1 " Vim syntax file for Mermaid diagrams
2 " Language: Mermaid
3 " Maintainer: Charles McGarvey
4 " Version: 0.1
5
6 if exists('b:current_syntax')
7 finish
8 endif
9
10 " sequenceDiagram
11 syntax keyword mmdDiagramType sequenceDiagram
12
13 " -> --> ->> -->> -X --X
14 syntax match mmdArrow /\v(--\>\>|--\>|-\>\>|--X|-\>|-X)/
15 \ nextgroup=mmdActivationSymbol,mmdActorBeforeMessage skipwhite contained
16
17 syntax match mmdInvalidActorChar /[-:;,]/ contained
18
19 syntax match mmdActorBeforeArrow /\v\S.{-}\ze\s*(-\>|--\>|-\>\>|--\>\>|-X|--X)/
20 \ contains=mmdInvalidActorChar nextgroup=mmdArrow skipwhite
21 syntax match mmdActorBeforeMessage /\v([^\t :][^:]*)=[^\t :]/
22 \ contains=mmdInvalidActorChar nextgroup=mmdMessageDelimiter skipwhite contained
23 syntax match mmdActorBeforeComma /\v\S.{-}\ze\s*,/
24 \ contains=mmdInvalidActorChar nextgroup=mmdComma,mmdActorBeforeMessage skipwhite contained
25
26 " ,
27 syntax match mmdComma /\v,/ nextgroup=mmdActorBeforeMessage skipwhite contained
28
29 " +|-
30 syntax match mmdActivationSymbol /\v[-\+]/ contained nextgroup=mmdActorBeforeMessage skipwhite
31
32 " participant <ACTOR> [as <TEXT>]
33 " activate <ACTOR>
34 " deactivate <ACTOR>
35 syntax match mmdActor /\v\S.*/ contained contains=mmdInvalidActorChar
36 syntax match mmdActor /\v\c\S.{-}\ze\s+as\s/ nextgroup=mmdAlias skipwhite contained contains=mmdInvalidActorChar
37 syntax match mmdParticipant /^\v\c\s*\zsparticipant\ze\s/ nextgroup=mmdActor skipwhite
38 syntax match mmdAlias /\v\cas\ze\s/ nextgroup=mmdMessage skipwhite contained
39 syntax match mmdActivation /^\v\c\s*\zs(activate|deactivate)\s+/ nextgroup=mmdActor skipwhite
40
41 " loop [<TEXT>]
42 " alt [<TEXT>]
43 " else [<TEXT>]
44 " opt [<TEXT>]
45 " rect [<COLOR>]
46 " end
47 syntax match mmdGroup /^\v\c\s*\zs(alt|else|loop|opt)/ nextgroup=mmdMessage skipwhite
48 syntax match mmdGroup /^\v\c\s*\zsrect/ nextgroup=mmdColor skipwhite
49 syntax match mmdGroup /^\v\c\s*\zsend/
50 syntax match mmdColor /\v\S.*/ contained
51
52 " autonumber
53 syntax match mmdAutonumber /^\v\c\s*\zsautonumber/
54
55 " Note left|right of <ACTOR>: <TEXT>
56 " Note over <ACTOR>[,<ACTOR>]: <TEXT>
57 syntax match mmdMessageDelimiter /\v:/ contained nextgroup=mmdMessage skipwhite
58 syntax match mmdMessage /\v\S.*/ contained
59 syntax match mmdNote /^\v\c\s*Note\s+(right of|left of)\ze\s/ nextgroup=mmdActorBeforeMessage skipwhite
60 syntax match mmdNote /^\v\c\s*Note\s+over\ze\s/ nextgroup=mmdActorBeforeComma,mmdActorBeforeMessage skipwhite
61
62 " %% <TEXT>
63 syntax keyword mmdTodo contained FIXME TODO XXX
64 syntax match mmdComment /\v\%\%.*$/ contains=mmdTodo
65
66 highlight link mmdInvalidActorChar Error
67 highlight link mmdDiagramType Function
68 highlight link mmdArrow Operator
69 highlight link mmdComma Operator
70 highlight link mmdActivationSymbol Keyword
71 highlight link mmdParticipant Keyword
72 highlight link mmdActivation Keyword
73 highlight link mmdAlias Keyword
74 highlight link mmdTodo Todo
75 highlight link mmdComment Comment
76 highlight link mmdActor Identifier
77 highlight link mmdActorBeforeArrow Identifier
78 highlight link mmdActorBeforeMessage Identifier
79 highlight link mmdActorBeforeComma Identifier
80 highlight link mmdMessageDelimiter Delimiter
81 highlight link mmdMessage String
82 highlight link mmdNote Keyword
83 highlight link mmdGroup Statement
84 highlight link mmdAutonumber Statement
85 highlight link mmdColor Constant
86
87 let b:current_syntax = 'mermaid'
This page took 0.037348 seconds and 4 git commands to generate.