diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 643bc217..f77c5aa3 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -539,11 +539,6 @@ var Editor = function(renderer, session) { this.$highlightTags = function() { var session = this.session; - if (session.$tagHighlight) { - session.removeMarker(session.$tagHighlight); - session.$tagHighlight = null; - } - if (this.$highlightTagPending) { return; } @@ -558,7 +553,9 @@ var Editor = function(renderer, session) { var iterator = new TokenIterator(self.session, pos.row, pos.column); var token = iterator.getCurrentToken(); - if( !token || token.type.indexOf('tag-name') === -1 ){ + if (!token || token.type.indexOf('tag-name') === -1) { + session.removeMarker(session.$tagHighlight); + session.$tagHighlight = null; return; } @@ -601,15 +598,23 @@ var Editor = function(renderer, session) { } if (!token) { + session.removeMarker(session.$tagHighlight); + session.$tagHighlight = null; return; } - + var row = iterator.getCurrentTokenRow(); var column = iterator.getCurrentTokenColumn(); var range = new Range(row, column, row, column+token.value.length); - - if (range) - self.session.$tagHighlight = self.session.addMarker(range, "ace_bracket", "text"); + + //remove range if different + if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) { + session.removeMarker(session.$tagHighlight); + session.$tagHighlight = null; + } + + if (range && !session.$tagHighlight) + session.$tagHighlight = session.addMarker(range, "ace_bracket", "text"); }, 50); };