#javascript #angular #typescript #codemirror #codemirror-modes
#javascript #угловой #typescript #codemirror #codemirror-режимы
Вопрос:
Я хотел бы определить свой пользовательский режим, который расширяет один из доступных режимов (например, javascript)? Я пытался использовать приведенный ниже код, но никакого эффекта.
CodeMirror.defineMode("foo", function (config, parserConfig) {
var fooOverlay = {
token: function (stream, state) {
var ch;
if (stream.match("{{")) {
while ((ch = stream.next()) != null)
if (ch == "}" amp;amp; stream.next() == "}") {
stream.eat("}");
return "foo";
}
}
while (stream.next() != null amp;amp; !stream.match("{{", false)) { }
return null;
}
};
return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "javascript"), fooOverlay);
});
this.config = {
lineNumbers: true,
mode: 'foo'
};
Обновить:
CodeMirror.defineSimpleMode("foo", {
start = [
{ regex: /"(?:[^\]|\.)*?(?:"|$)/, token: "string" },
{ regex: /'(?:[^\]|\.)*?(?:'|$)/, token: "string" },
{
regex: /(?:if|foreach|in|while)b/,
token: "keyword"
},
{ regex: /true|false|null|undefined/, token: "atom" },
];
});
Комментарии:
1. Вы когда-нибудь могли это понять?
2. вы решили это? 🙁
3. Извините, ребята, за долгое отсутствие. Наконец, я справился с проблемой способом, описанным выше в разделе обновления.