in src/lib/CodeMirror/indentationMarkers.ts [282:346]
private findAndSetActiveLines() {
const currentLine = getCurrentLine(this.state);
if (!this.has(currentLine)) {
return;
}
let current = this.get(currentLine);
// check if the current line is starting a new block, if yes, we want to
// start from inside the block.
if (this.has(current.line.number + 1)) {
const next = this.get(current.line.number + 1);
if (next.level > current.level) {
current = next;
}
}
// same, but if the current line is ending a block
if (this.has(current.line.number - 1)) {
const prev = this.get(current.line.number - 1);
if (prev.level > current.level) {
current = prev;
}
}
if (current.level === 0) {
return;
}
current.active = current.level;
let start: number;
let end: number;
// iterate to the start of the block
for (start = current.line.number; start > 1; start--) {
if (!this.has(start - 1)) {
continue;
}
const prev = this.get(start - 1);
if (prev.level < current.level) {
break;
}
prev.active = current.level;
}
// iterate to the end of the block
for (end = current.line.number; end < this.state.doc.lines; end++) {
if (!this.has(end + 1)) {
continue;
}
const next = this.get(end + 1);
if (next.level < current.level) {
break;
}
next.active = current.level;
}
}