(cm, line, updateFrontier)
| 104 | } |
| 105 | |
| 106 | export function getLineStyles(cm, line, updateFrontier) { |
| 107 | if (!line.styles || line.styles[0] != cm.state.modeGen) { |
| 108 | let context = getContextBefore(cm, lineNo(line)) |
| 109 | let resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state) |
| 110 | let result = highlightLine(cm, line, context) |
| 111 | if (resetState) context.state = resetState |
| 112 | line.stateAfter = context.save(!resetState) |
| 113 | line.styles = result.styles |
| 114 | if (result.classes) line.styleClasses = result.classes |
| 115 | else if (line.styleClasses) line.styleClasses = null |
| 116 | if (updateFrontier === cm.doc.highlightFrontier) |
| 117 | cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier) |
| 118 | } |
| 119 | return line.styles |
| 120 | } |
| 121 | |
| 122 | export function getContextBefore(cm, n, precise) { |
| 123 | let doc = cm.doc, display = cm.display |
no test coverage detected