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

Function endOperation

tools/pythonauto/static/codemirror/codemirror.js:1377–1434  ·  view source on GitHub ↗
(cm)

Source from the content-addressed store, hash-verified

1375 }
1376
1377 function endOperation(cm) {
1378 var op = cm.curOp, doc = cm.doc, display = cm.display;
1379 cm.curOp = null;
1380
1381 if (op.updateMaxLine) computeMaxLength(cm);
1382 if (display.maxLineChanged && !cm.options.lineWrapping && display.maxLine) {
1383 var width = measureLineWidth(cm, display.maxLine);
1384 display.sizer.style.minWidth = Math.max(0, width + 3) + "px";
1385 display.maxLineChanged = false;
1386 var maxScrollLeft = Math.max(0, display.sizer.offsetLeft + display.sizer.offsetWidth - display.scroller.clientWidth);
1387 if (maxScrollLeft < doc.scrollLeft && !op.updateScrollPos)
1388 setScrollLeft(cm, Math.min(display.scroller.scrollLeft, maxScrollLeft), true);
1389 }
1390 var newScrollPos, updated;
1391 if (op.updateScrollPos) {
1392 newScrollPos = op.updateScrollPos;
1393 } else if (op.selectionChanged && display.scroller.clientHeight) { // don't rescroll if not visible
1394 var coords = cursorCoords(cm, doc.sel.head);
1395 newScrollPos = calculateScrollPos(cm, coords.left, coords.top, coords.left, coords.bottom);
1396 }
1397 if (op.changes.length || op.forceUpdate || newScrollPos && newScrollPos.scrollTop != null) {
1398 updated = updateDisplay(cm, op.changes, newScrollPos && newScrollPos.scrollTop, op.forceUpdate);
1399 if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop;
1400 }
1401 if (!updated && op.selectionChanged) updateSelection(cm);
1402 if (op.updateScrollPos) {
1403 var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, newScrollPos.scrollTop));
1404 var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, newScrollPos.scrollLeft));
1405 display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
1406 display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
1407 alignHorizontally(cm);
1408 if (op.scrollToPos)
1409 scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
1410 clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
1411 } else if (newScrollPos) {
1412 scrollCursorIntoView(cm);
1413 }
1414 if (op.selectionChanged) restartBlink(cm);
1415
1416 if (cm.state.focused && op.updateInput)
1417 resetInput(cm, op.userSelChange);
1418
1419 var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
1420 if (hidden) for (var i = 0; i < hidden.length; ++i)
1421 if (!hidden[i].lines.length) signal(hidden[i], "hide");
1422 if (unhidden) for (var i = 0; i < unhidden.length; ++i)
1423 if (unhidden[i].lines.length) signal(unhidden[i], "unhide");
1424
1425 var delayed;
1426 if (!--delayedCallbackDepth) {
1427 delayed = delayedCallbacks;
1428 delayedCallbacks = null;
1429 }
1430 if (op.textChanged)
1431 signal(cm, "change", cm, op.textChanged);
1432 if (op.cursorActivity) signal(cm, "cursorActivity", cm);
1433 if (delayed) for (var i = 0; i < delayed.length; ++i) delayed[i]();
1434 }

Callers 6

operationFunction · 0.70
docOperationFunction · 0.70
runInOpFunction · 0.70
readInputFunction · 0.70
codemirror.jsFile · 0.70
widgetOperationFunction · 0.70

Calls 14

measureLineWidthFunction · 0.85
signalFunction · 0.85
computeMaxLengthFunction · 0.70
setScrollLeftFunction · 0.70
cursorCoordsFunction · 0.70
calculateScrollPosFunction · 0.70
updateDisplayFunction · 0.70
updateSelectionFunction · 0.70
alignHorizontallyFunction · 0.70
scrollPosIntoViewFunction · 0.70
clipPosFunction · 0.70
scrollCursorIntoViewFunction · 0.70

Tested by

no test coverage detected