// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function() {
  CodeMirror.defineMode("markdown_with_stex", function(){
    var inner = CodeMirror.getMode({}, "stex");
    var outer = CodeMirror.getMode({}, "markdown");

    var innerOptions = {
      open: '$',
      close: '$',
      mode: inner,
      delimStyle: 'delim',
      innerStyle: 'inner'
    };

    return CodeMirror.multiplexingMode(outer, innerOptions);
  });

  var mode = CodeMirror.getMode({}, "markdown_with_stex");

  function MT(name) {
    test.mode(
      name,
      mode,
      Array.prototype.slice.call(arguments, 1),
      'multiplexing');
  }

  MT(
    "stexInsideMarkdown",
    "[strong **Equation:**] [delim&delim-open $][inner&tag \\pi][delim&delim-close $]");

  CodeMirror.defineMode("identical_delim_multiplex", function() {
    return CodeMirror.multiplexingMode(CodeMirror.getMode({indentUnit: 2}, "javascript"), {
      open: "#",
      close: "#",
      mode: CodeMirror.getMode({}, "markdown"),
      parseDelimiters: true,
      innerStyle: "q"
    });
  });

  var mode2 = CodeMirror.getMode({}, "identical_delim_multiplex");

  test.mode("identical_delimiters_with_parseDelimiters", mode2, [
    "[keyword let] [def x] [operator =] [q #foo][q&em *bar*][q #];"
  ], "multiplexing")
})();
