Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
51007 views
1
(function() {
2
"use strict";
3
4
CodeMirror.defineOption("rulers", false, function(cm, val, old) {
5
if (old && old != CodeMirror.Init) {
6
clearRulers(cm);
7
cm.off("refresh", refreshRulers);
8
}
9
if (val && val.length) {
10
setRulers(cm);
11
cm.on("refresh", refreshRulers);
12
}
13
});
14
15
function clearRulers(cm) {
16
for (var i = cm.display.lineSpace.childNodes.length - 1; i >= 0; i--) {
17
var node = cm.display.lineSpace.childNodes[i];
18
if (/(^|\s)CodeMirror-ruler($|\s)/.test(node.className))
19
node.parentNode.removeChild(node);
20
}
21
}
22
23
function setRulers(cm) {
24
var val = cm.getOption("rulers");
25
var cw = cm.defaultCharWidth();
26
var left = cm.charCoords(CodeMirror.Pos(cm.firstLine(), 0), "div").left;
27
var bot = -cm.display.scroller.offsetHeight;
28
for (var i = 0; i < val.length; i++) {
29
var elt = document.createElement("div");
30
var col, cls = null;
31
if (typeof val[i] == "number") {
32
col = val[i];
33
} else {
34
col = val[i].column;
35
cls = val[i].className;
36
}
37
elt.className = "CodeMirror-ruler" + (cls ? " " + cls : "");
38
elt.style.cssText = "left: " + (left + col * cw) + "px; top: -50px; bottom: " + bot + "px";
39
cm.display.lineSpace.insertBefore(elt, cm.display.cursorDiv);
40
}
41
}
42
43
function refreshRulers(cm) {
44
clearRulers(cm);
45
setRulers(cm);
46
}
47
})();
48
49