MCPcopy
hub / github.com/csev/py4e / endOperation

Function endOperation

tools/pythonauto/static/codemirrorepl/codemirror.js:1892–1953  ·  view source on GitHub ↗
(cm)

Source from the content-addressed store, hash-verified

1890
1891 // Finish an operation, updating the display and signalling delayed events
1892 function endOperation(cm) {
1893 var op = cm.curOp, doc = cm.doc, display = cm.display;
1894 cm.curOp = null;
1895
1896 if (op.updateMaxLine) findMaxLine(cm);
1897
1898 // If it looks like an update might be needed, call updateDisplay
1899 if (op.viewChanged || op.forceUpdate || op.scrollTop != null ||
1900 op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||
1901 op.scrollToPos.to.line >= display.viewTo) ||
1902 display.maxLineChanged && cm.options.lineWrapping) {
1903 var updated = updateDisplay(cm, {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);
1904 if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop;
1905 }
1906 // If no update was run, but the selection changed, redraw that.
1907 if (!updated && op.selectionChanged) updateSelection(cm);
1908 if (!updated && op.startHeight != cm.doc.height) updateScrollbars(cm);
1909
1910 // Propagate the scroll position to the actual DOM scroller
1911 if (op.scrollTop != null && display.scroller.scrollTop != op.scrollTop) {
1912 var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));
1913 display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
1914 }
1915 if (op.scrollLeft != null && display.scroller.scrollLeft != op.scrollLeft) {
1916 var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));
1917 display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
1918 alignHorizontally(cm);
1919 }
1920 // If we need to scroll a specific position into view, do so.
1921 if (op.scrollToPos) {
1922 var coords = scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
1923 clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
1924 if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);
1925 }
1926
1927 if (op.selectionChanged) restartBlink(cm);
1928
1929 if (cm.state.focused && op.updateInput)
1930 resetInput(cm, op.typing);
1931
1932 // Fire events for markers that are hidden/unidden by editing or
1933 // undoing
1934 var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
1935 if (hidden) for (var i = 0; i < hidden.length; ++i)
1936 if (!hidden[i].lines.length) signal(hidden[i], "hide");
1937 if (unhidden) for (var i = 0; i < unhidden.length; ++i)
1938 if (unhidden[i].lines.length) signal(unhidden[i], "unhide");
1939
1940 var delayed;
1941 if (!--delayedCallbackDepth) {
1942 delayed = delayedCallbacks;
1943 delayedCallbacks = null;
1944 }
1945 // Fire change events, and delayed event handlers
1946 if (op.changeObjs) {
1947 for (var i = 0; i < op.changeObjs.length; i++)
1948 signal(cm, "change", cm, op.changeObjs[i]);
1949 signal(cm, "changes", cm, op.changeObjs);

Callers 6

runInOpFunction · 0.70
operationFunction · 0.70
methodOpFunction · 0.70
docMethodOpFunction · 0.70
readInputFunction · 0.70
codemirror.jsFile · 0.70

Calls 11

findMaxLineFunction · 0.85
maybeScrollWindowFunction · 0.85
signalFunction · 0.85
updateDisplayFunction · 0.70
updateSelectionFunction · 0.70
updateScrollbarsFunction · 0.70
alignHorizontallyFunction · 0.70
scrollPosIntoViewFunction · 0.70
clipPosFunction · 0.70
restartBlinkFunction · 0.70
resetInputFunction · 0.70

Tested by

no test coverage detected