(cm, line)
| 1033 | } |
| 1034 | |
| 1035 | function measureLine(cm, line) { |
| 1036 | // First look in the cache |
| 1037 | var cached = findCachedMeasurement(cm, line); |
| 1038 | if (cached) return cached.measure; |
| 1039 | |
| 1040 | // Failing that, recompute and store result in cache |
| 1041 | var measure = measureLineInner(cm, line); |
| 1042 | var cache = cm.display.measureLineCache; |
| 1043 | var memo = {text: line.text, width: cm.display.scroller.clientWidth, |
| 1044 | markedSpans: line.markedSpans, measure: measure, |
| 1045 | classes: line.textClass + "|" + line.wrapClass}; |
| 1046 | if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo; |
| 1047 | else cache.push(memo); |
| 1048 | return measure; |
| 1049 | } |
| 1050 | |
| 1051 | function measureLineInner(cm, line) { |
| 1052 | if (!cm.options.lineWrapping && line.text.length >= cm.options.crudeMeasuringFrom) |
no test coverage detected