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); } })();