Subversion-Projekte lars-tiefland.ci

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
776 lars 1
// CodeMirror, copyright (c) by Marijn Haverbeke and others
2
// Distributed under an MIT license: http://codemirror.net/LICENSE
3
 
4
(function(mod) {
5
  if (typeof exports == "object" && typeof module == "object") // CommonJS
6
    mod(require("../../lib/codemirror"));
7
  else if (typeof define == "function" && define.amd) // AMD
8
    define(["../../lib/codemirror"], mod);
9
  else // Plain browser env
10
    mod(CodeMirror);
11
})(function(CodeMirror) {
12
  "use strict";
13
 
14
  CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) {
15
    if (old && old != CodeMirror.Init) {
16
      cm.off("change", onChange);
17
      cm.off("refresh", updateBottomMargin);
18
      cm.display.lineSpace.parentNode.style.paddingBottom = "";
19
      cm.state.scrollPastEndPadding = null;
20
    }
21
    if (val) {
22
      cm.on("change", onChange);
23
      cm.on("refresh", updateBottomMargin);
24
      updateBottomMargin(cm);
25
    }
26
  });
27
 
28
  function onChange(cm, change) {
29
    if (CodeMirror.changeEnd(change).line == cm.lastLine())
30
      updateBottomMargin(cm);
31
  }
32
 
33
  function updateBottomMargin(cm) {
34
    var padding = "";
35
    if (cm.lineCount() > 1) {
36
      var totalH = cm.display.scroller.clientHeight - 30,
37
          lastLineH = cm.getLineHandle(cm.lastLine()).height;
38
      padding = (totalH - lastLineH) + "px";
39
    }
40
    if (cm.state.scrollPastEndPadding != padding) {
41
      cm.state.scrollPastEndPadding = padding;
42
      cm.display.lineSpace.parentNode.style.paddingBottom = padding;
43
      cm.setSize();
44
    }
45
  }
46
});