MCPcopy Index your code
hub / github.com/csev/py4e / regChange

Function regChange

tools/pythonauto/static/codemirrorepl/codemirror.js:2024–2085  ·  view source on GitHub ↗
(cm, from, to, lendiff)

Source from the content-addressed store, hash-verified

2022 // lines are divided into visual lines. regLineChange (below)
2023 // registers single-line changes.
2024 function regChange(cm, from, to, lendiff) {
2025 if (from == null) from = cm.doc.first;
2026 if (to == null) to = cm.doc.first + cm.doc.size;
2027 if (!lendiff) lendiff = 0;
2028
2029 var display = cm.display;
2030 if (lendiff && to < display.viewTo &&
2031 (display.updateLineNumbers == null || display.updateLineNumbers > from))
2032 display.updateLineNumbers = from;
2033
2034 cm.curOp.viewChanged = true;
2035
2036 if (from >= display.viewTo) { // Change after
2037 if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)
2038 resetView(cm);
2039 } else if (to <= display.viewFrom) { // Change before
2040 if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {
2041 resetView(cm);
2042 } else {
2043 display.viewFrom += lendiff;
2044 display.viewTo += lendiff;
2045 }
2046 } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap
2047 resetView(cm);
2048 } else if (from <= display.viewFrom) { // Top overlap
2049 var cut = viewCuttingPoint(cm, to, to + lendiff, 1);
2050 if (cut) {
2051 display.view = display.view.slice(cut.index);
2052 display.viewFrom = cut.lineN;
2053 display.viewTo += lendiff;
2054 } else {
2055 resetView(cm);
2056 }
2057 } else if (to >= display.viewTo) { // Bottom overlap
2058 var cut = viewCuttingPoint(cm, from, from, -1);
2059 if (cut) {
2060 display.view = display.view.slice(0, cut.index);
2061 display.viewTo = cut.lineN;
2062 } else {
2063 resetView(cm);
2064 }
2065 } else { // Gap in the middle
2066 var cutTop = viewCuttingPoint(cm, from, from, -1);
2067 var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);
2068 if (cutTop && cutBot) {
2069 display.view = display.view.slice(0, cutTop.index)
2070 .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))
2071 .concat(display.view.slice(cutBot.index));
2072 display.viewTo += lendiff;
2073 } else {
2074 resetView(cm);
2075 }
2076 }
2077
2078 var ext = display.externalMeasured;
2079 if (ext) {
2080 if (to < ext.lineN)
2081 ext.lineN += lendiff;

Callers 8

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

Calls 6

visualLineNoFunction · 0.85
resetViewFunction · 0.85
visualLineEndNoFunction · 0.85
viewCuttingPointFunction · 0.85
buildViewArrayFunction · 0.85
sliceMethod · 0.80

Tested by

no test coverage detected