From 3a305b8258782797b328f2ce46e8bb74e9603594 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Mon, 28 Nov 2016 01:20:23 +0800 Subject: Update editor other cursor classes and adding option for other cursors features in CodeMirror --- public/vendor/codemirror/lib/codemirror.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'public/vendor/codemirror/lib/codemirror.js') diff --git a/public/vendor/codemirror/lib/codemirror.js b/public/vendor/codemirror/lib/codemirror.js index b77c1518..feaee981 100644 --- a/public/vendor/codemirror/lib/codemirror.js +++ b/public/vendor/codemirror/lib/codemirror.js @@ -2330,7 +2330,7 @@ for (var i = 0; i < doc.sel.ranges.length; i++) { if (primary === false && i == doc.sel.primIndex) continue; var range = doc.sel.ranges[i]; - //if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue; + if (!cm.options.otherCursors && (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom)) continue; var collapsed = range.empty(); if (collapsed || cm.options.showCursorWhenSelecting) drawSelectionCursor(cm, range.head, curFragment); @@ -2357,16 +2357,20 @@ otherCursor.style.top = pos.other.top + "px"; otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; } - - $('.other-cursor').each(function(key, value) { - var line = parseInt($(value).attr('data-line')); - var ch = parseInt($(value).attr('data-ch')); - var offsetLeft = parseFloat($(value).attr('data-offset-left')); - var offsetTop = parseFloat($(value).attr('data-offset-top')); - var coord = cm.charCoords({line: line, ch: ch}, 'windows'); - $(value)[0].style.left = coord.left + offsetLeft + 'px'; - $(value)[0].style.top = coord.top + offsetTop + 'px'; - }); + + if (cm.options.otherCursors) { + var others = cm.display.lineSpace.getElementsByClassName('CodeMirror-other-cursor'); + for (var i = 0, l = others.length; i < l; i++) { + var other = others[i]; + var line = parseInt(other.getAttribute('data-line')); + var ch = parseInt(other.getAttribute('data-ch')); + var offsetLeft = parseFloat(other.getAttribute('data-offset-left')); + var offsetTop = parseFloat(other.getAttribute('data-offset-top')); + var coord = cm.charCoords({line: line, ch: ch}, 'windows'); + other.style.left = coord.left + offsetLeft + 'px'; + other.style.top = coord.top + offsetTop + 'px'; + } + } } // Draws the given range as a highlighted selection -- cgit v1.2.3