Make sure the current search needle is not lost.

This commit is contained in:
Mihai Sucan 2011-02-12 20:40:58 +02:00
commit 24e1357755

View file

@ -74,7 +74,7 @@ var Editor =function(renderer, session) {
this.$selectionMarker = null; this.$selectionMarker = null;
this.$highlightLineMarker = null; this.$highlightLineMarker = null;
this.$blockScrolling = 0; this.$blockScrolling = 0;
this.$selectedWordMarkers = []; this.$selectionOccurrences = [];
this.$search = new Search().set({ this.$search = new Search().set({
wrap: true wrap: true
@ -237,7 +237,7 @@ var Editor =function(renderer, session) {
}; };
this.highlightSelection = function() { this.highlightSelection = function() {
if (this.$selectedWordMarkers.length) if (this.$selectionOccurrences.length)
this.clearSelectionHighlight(); this.clearSelectionHighlight();
var selectedRange = this.getSelectionRange(); var selectedRange = this.getSelectionRange();
@ -253,15 +253,17 @@ var Editor =function(renderer, session) {
this.$search.set(newOptions); this.$search.set(newOptions);
var ranges = this.$search.findAll(this.session); var ranges = this.$search.findAll(this.session);
this.$selectedWordMarkers = []; this.$selectionOccurrences = [];
ranges.forEach(function(range) { ranges.forEach(function(range) {
if (!range.contains(selectedRange.start.row, selectedRange.start.column)) if (!range.contains(selectedRange.start.row, selectedRange.start.column))
this.$selectedWordMarkers.push(this.renderer.addMarker(range, "ace_selected_word")); this.$selectionOccurrences.push(this.renderer.addMarker(range, "ace_selected_word"));
}, this); }, this);
this.$search.set(currentOptions);
}; };
this.clearSelectionHighlight = function() { this.clearSelectionHighlight = function() {
this.$selectedWordMarkers.forEach(function(marker) { this.$selectionOccurrences.forEach(function(marker) {
this.renderer.removeMarker(marker); this.renderer.removeMarker(marker);
}, this); }, this);
}; };