diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 24a654dd..d521ec85 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -717,9 +717,7 @@ var EditSession = function(text, mode) { clazz = "ace_step"; var range = new Range(startRow, 0, endRow, Infinity); - - var id = this.addMarker(range, clazz, "fullLine", inFront); - range.id = id; + range.id = this.addMarker(range, clazz, "fullLine", inFront); return range; }; diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 517b69b4..93dfd537 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -507,10 +507,13 @@ var Editor = function(renderer, session) { session.removeMarker(session.$highlightLineMarker.id); session.$highlightLineMarker = null; } else if (!session.$highlightLineMarker && highlight) { - session.$highlightLineMarker = session.highlightLines(highlight.row, highlight.row, "ace_active-line"); + var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); + range.id = session.addMarker(range, "ace_active-line", "screenLine"); + session.$highlightLineMarker = range; } else if (highlight) { session.$highlightLineMarker.start.row = highlight.row; session.$highlightLineMarker.end.row = highlight.row; + session.$highlightLineMarker.start.column = highlight.column; session._emit("changeBackMarker"); } }; diff --git a/lib/ace/layer/marker.js b/lib/ace/layer/marker.js index c68d3964..9162a501 100644 --- a/lib/ace/layer/marker.js +++ b/lib/ace/layer/marker.js @@ -82,6 +82,8 @@ var Marker = function(parentEl) { marker.renderer(html, range, left, top, config); } else if (marker.type == "fullLine") { this.drawFullLineMarker(html, range, marker.clazz, config); + } else if (marker.type == "screenLine") { + this.drawScreenLineMarker(html, range, marker.clazz, config); } else if (range.isMultiLine()) { if (marker.type == "text") this.drawTextMarker(html, range, marker.clazz, config); @@ -194,7 +196,19 @@ var Marker = function(parentEl) { "top:", top, "px;", "left:0;right:0;'>" ); - } + }; + + this.drawScreenLineMarker = function(stringBuilder, range, clazz, config) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + + stringBuilder.push( + "
" + ); + }; }).call(Marker.prototype); diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 4700d3f4..a6a61653 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -465,8 +465,16 @@ var VirtualRenderer = function(container, theme) { }; this.$updateGutterLineHighlight = function() { - this.$gutterLineHighlight.style.top = this.$cursorLayer.$pixelPos.top - this.layerConfig.offset + "px"; - this.$gutterLineHighlight.style.height = this.layerConfig.lineHeight + "px"; + var pos = this.$cursorLayer.$pixelPos; + var height = this.layerConfig.lineHeight; + if (this.session.getUseWrapMode()) { + var cursor = this.session.selection.getCursor(); + cursor.column = 0; + pos = this.$cursorLayer.getPixelPosition(cursor, true); + height *= this.session.getRowLength(cursor.row); + } + this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + "px"; + this.$gutterLineHighlight.style.height = height + "px"; }; this.$updatePrintMargin = function() {