MCPcopy
hub / github.com/witheve/Eve / regChange

Function regChange

src/codemirror.js:3262–3323  ·  view source on GitHub ↗
(cm, from, to, lendiff)

Source from the content-addressed store, hash-verified

3260 // lines are divided into visual lines. regLineChange (below)
3261 // registers single-line changes.
3262 function regChange(cm, from, to, lendiff) {
3263 if (from == null) from = cm.doc.first;
3264 if (to == null) to = cm.doc.first + cm.doc.size;
3265 if (!lendiff) lendiff = 0;
3266
3267 var display = cm.display;
3268 if (lendiff && to < display.viewTo &&
3269 (display.updateLineNumbers == null || display.updateLineNumbers > from))
3270 display.updateLineNumbers = from;
3271
3272 cm.curOp.viewChanged = true;
3273
3274 if (from >= display.viewTo) { // Change after
3275 if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)
3276 resetView(cm);
3277 } else if (to <= display.viewFrom) { // Change before
3278 if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {
3279 resetView(cm);
3280 } else {
3281 display.viewFrom += lendiff;
3282 display.viewTo += lendiff;
3283 }
3284 } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap
3285 resetView(cm);
3286 } else if (from <= display.viewFrom) { // Top overlap
3287 var cut = viewCuttingPoint(cm, to, to + lendiff, 1);
3288 if (cut) {
3289 display.view = display.view.slice(cut.index);
3290 display.viewFrom = cut.lineN;
3291 display.viewTo += lendiff;
3292 } else {
3293 resetView(cm);
3294 }
3295 } else if (to >= display.viewTo) { // Bottom overlap
3296 var cut = viewCuttingPoint(cm, from, from, -1);
3297 if (cut) {
3298 display.view = display.view.slice(0, cut.index);
3299 display.viewTo = cut.lineN;
3300 } else {
3301 resetView(cm);
3302 }
3303 } else { // Gap in the middle
3304 var cutTop = viewCuttingPoint(cm, from, from, -1);
3305 var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);
3306 if (cutTop && cutBot) {
3307 display.view = display.view.slice(0, cutTop.index)
3308 .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))
3309 .concat(display.view.slice(cutBot.index));
3310 display.viewTo += lendiff;
3311 } else {
3312 resetView(cm);
3313 }
3314 }
3315
3316 var ext = display.externalMeasured;
3317 if (ext) {
3318 if (to < ext.lineN)
3319 ext.lineN += lendiff;

Callers 8

resetModeStateFunction · 0.85
wrappingChangedFunction · 0.85
guttersChangedFunction · 0.85
codemirror.jsFile · 0.85
shiftDocFunction · 0.85
markTextFunction · 0.85
attachDocFunction · 0.85

Calls 5

visualLineNoFunction · 0.85
resetViewFunction · 0.85
visualLineEndNoFunction · 0.85
viewCuttingPointFunction · 0.85
buildViewArrayFunction · 0.85

Tested by

no test coverage detected