CodeMirror: MscGen mode

## MscGen mode

# Sample mscgen program # See http://www.mcternan.me.uk/mscgen or # https://sverweij.github.io/mscgen_js for more samples msc { # options hscale="1.2"; # entities/ lifelines a [label="Entity A"], b [label="Entity B", linecolor="red", arclinecolor="red", textbgcolor="pink"], c [label="Entity C"]; # arcs/ messages a => c [label="doSomething(args)"]; b => c [label="doSomething(args)"]; c >> * [label="everyone asked me", arcskip="1"]; c =>> c [label="doing something"]; c -x * [label="report back", arcskip="1"]; |||; --- [label="shows's over, however ..."]; b => a [label="did you see c doing something?"]; a -> b [label="nope"]; b :> a [label="shall we ask again?"]; a => b [label="naah"]; ...; }

## Xù mode

# Xù - expansions to MscGen to support inline expressions # https://github.com/sverweij/mscgen_js/blob/master/wikum/xu.md # More samples: https://sverweij.github.io/mscgen_js xu { hscale="0.8", width="700"; a, b [label="change store"], c, d [label="necro queue"], e [label="natalis queue"], f; a =>> b [label="get change list()"]; a alt f [label="changes found"] { /* alt is a xu specific keyword*/ b >> a [label="list of changes"]; a =>> c [label="cull old stuff (list of changes)"]; b loop e [label="for each change"] { // loop is xu specific as well... /* * Interesting stuff happens. */ c =>> b [label="get change()"]; b >> c [label="change"]; c alt e [label="change too old"] { c =>> d [label="queue(change)"]; --- [label="change newer than latest run"]; c =>> e [label="queue(change)"]; --- [label="all other cases"]; ||| [label="leave well alone"]; }; }; c >> a [label="done processing"]; /* shucks! nothing found ...*/ --- [label="nothing found"]; b >> a [label="nothing"]; a note a [label="silent exit"]; }; }

## MsGenny mode

# MsGenny - simplified version of MscGen / Xù # https://github.com/sverweij/mscgen_js/blob/master/wikum/msgenny.md # More samples: https://sverweij.github.io/mscgen_js a -> b : a -> b (signal); a => b : a => b (method); b >> a : b >> a (return value); a =>> b : a =>> b (callback); a -x b : a -x b (lost); a :> b : a :> b (emphasis); a .. b : a .. b (dotted); a -- b : "a -- b straight line"; a note a : a note a\n(note), b box b : b box b\n(action); a rbox a : a rbox a\n(reference), b abox b : b abox b\n(state/ condition); ||| : ||| (empty row); ... : ... (omitted row); --- : --- (comment);

Simple mode for highlighting MscGen and two derived sequence chart languages.

MIME types defined: `text/x-mscgen` `text/x-xu` `text/x-msgenny`