12345678910111213141516171819202122232425262728293031323334 |
- (function() {
- "use strict";
- CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) {
- if (old && old != CodeMirror.Init) {
- cm.off("change", onChange);
- cm.display.lineSpace.parentNode.style.paddingBottom = "";
- cm.state.scrollPastEndPadding = null;
- }
- if (val) {
- cm.on("change", onChange);
- updateBottomMargin(cm);
- }
- });
- function onChange(cm, change) {
- if (CodeMirror.changeEnd(change).line == cm.lastLine())
- updateBottomMargin(cm);
- }
- function updateBottomMargin(cm) {
- var padding = "";
- if (cm.lineCount() > 1) {
- var totalH = cm.display.scroller.clientHeight - 30,
- lastLineH = cm.getLineHandle(cm.lastLine()).height;
- padding = (totalH - lastLineH) + "px";
- }
- if (cm.state.scrollPastEndPadding != padding) {
- cm.state.scrollPastEndPadding = padding;
- cm.display.lineSpace.parentNode.style.paddingBottom = padding;
- cm.setSize();
- }
- }
- })();
|