Я пытаюсь разработать простой режим для codemirror. Этот режим будет окрасить абзацы альтернативно синим и зеленым. Разделение между абзацем - это пустая строка или строка, содержащая только пробелы.Новый режим для codemirror: Обнаружение пустой строки в потоке
Вот вариант кода, который работает, но с большой проблемой, что пустые строки не обнаружено:
CodeMirror.defineMode("rt", function() {
return {
startState: function() {return {state1: true};},
token: function(stream, state) {
if (stream.match(/\s\s*/)!=null){ # this fails to detect empty lines
state.state1 = !state.state1;
}
stream.skipToEnd();
if (state.state1) { return "status1"; }
return "status2";
}
};
});
если применить его к следующему тексту:
line 1
line 2 # the next line is just a backspace and is not detected
line 3
line 4 # the next line is a few spaces followed by a backspace, it is detected
line 5
line 6
его цвета от строки 1 до строки 4 в одном цвете и строки 5 до строки 6 в другой, что ожидается.
Я пытаюсь найти способ обновить свой код, чтобы он обнаружил пустую строку между строкой 2 и линией 3. Любой способ сделать это?
Я боюсь, что это приводит к линии чередуя цвета, а не пункты ^^; – Vince
О, извините, я забыл '^' и '$' из регулярного выражения. Можете ли вы попробовать этот? – AlexStack
все еще нет успеха. «Пустые строки», похоже, вообще не проходят через функцию, как будто codemirror каким-то образом пропускает их перед началом функции ... – Vince