vendor/assets/javascripts/codemirror/addons/selection/active-line.js in codemirror-rails-3.20 vs vendor/assets/javascripts/codemirror/addons/selection/active-line.js in codemirror-rails-3.21
- old
+ new
@@ -10,14 +10,14 @@
var BACK_CLASS = "CodeMirror-activeline-background";
CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
var prev = old && old != CodeMirror.Init;
if (val && !prev) {
- updateActiveLine(cm);
- cm.on("cursorActivity", updateActiveLine);
+ updateActiveLine(cm, cm.getCursor().line);
+ cm.on("beforeSelectionChange", selectionChange);
} else if (!val && prev) {
- cm.off("cursorActivity", updateActiveLine);
+ cm.off("beforeSelectionChange", selectionChange);
clearActiveLine(cm);
delete cm.state.activeLine;
}
});
@@ -26,14 +26,20 @@
cm.removeLineClass(cm.state.activeLine, "wrap", WRAP_CLASS);
cm.removeLineClass(cm.state.activeLine, "background", BACK_CLASS);
}
}
- function updateActiveLine(cm) {
- var line = cm.getLineHandleVisualStart(cm.getCursor().line);
+ function updateActiveLine(cm, selectedLine) {
+ var line = cm.getLineHandleVisualStart(selectedLine);
if (cm.state.activeLine == line) return;
- clearActiveLine(cm);
- cm.addLineClass(line, "wrap", WRAP_CLASS);
- cm.addLineClass(line, "background", BACK_CLASS);
- cm.state.activeLine = line;
+ cm.operation(function() {
+ clearActiveLine(cm);
+ cm.addLineClass(line, "wrap", WRAP_CLASS);
+ cm.addLineClass(line, "background", BACK_CLASS);
+ cm.state.activeLine = line;
+ });
+ }
+
+ function selectionChange(cm, sel) {
+ updateActiveLine(cm, sel.head.line);
}
})();