diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index 81f8fbe6..0716003f 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -209,6 +209,14 @@ box-sizing: border-box; } +.ace_marker-layer .ace_occur-highlight { + position: absolute; + z-index: 4; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; diff --git a/lib/ace/occur.js b/lib/ace/occur.js index 6b7b0558..a69d6ec6 100644 --- a/lib/ace/occur.js +++ b/lib/ace/occur.js @@ -35,6 +35,7 @@ var oop = require("./lib/oop"); var Range = require("./range").Range; var Search = require("./search").Search; var Document = require("./document").Document; +var SearchHighlight = require("./search_highlight").SearchHighlight; /** * @class Occur @@ -99,6 +100,13 @@ oop.inherits(Occur, Search); return true; } + this.highlight = function(sess, regexp) { + var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( + new SearchHighlight(null, "ace_occur-highlight", "text")); + hl.setRegexp(regexp); + sess._emit("changeBackMarker"); // force highlight layer redraw + } + this.display = function(session, options) { this.$originalDoc = session.doc; var found = this.matchingLines(session, options), @@ -107,14 +115,13 @@ oop.inherits(Occur, Search); occurDoc.$occur = this; occurDoc.$occurMatchingLines = found; session.setDocument(occurDoc); - session.highlight(null); - session.highlight(options.re); + this.highlight(session, options.re); session._emit('changeBackMarker'); } this.displayOriginal = function(session) { session.setDocument(this.$originalDoc); - session.highlight(null); + this.highlight(session, null); session._emit('changeBackMarker'); } @@ -166,6 +173,23 @@ oop.inherits(Occur, Search); }).call(Occur.prototype); +var dom = require('./lib/dom'); +(function patchHighlightMarkerStyling() { + var id = 'incremental-occur-highlighting', + css = 'div.ace_occur-highlight {\n' + + " border-radius: 4px;\n" + + "border: 8px solid rgba(87, 255, 8, 0.25);\n" + + "box-shadow: 0 0 4px rgb(91, 255, 50);\n" + + "}\n" + + '.ace_dark div.ace_occur-highlight {\n' + + "border: 8px solid rgb(80, 140, 85);\n" + + "box-shadow: 0 0 4px rgb(60, 120, 70);\n" + + '}\n'; + dom.importCssString(css, id); +})(); + +window.Occur = Occur +window.Document = Document exports.Occur = Occur;