Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1226)

Unified Diff: Source/devtools/front_end/source_frame/SourceFrame.js

Issue 658403002: DevTools: Support regex search and case sensitive search in sources panel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/source_frame/SourceFrame.js
diff --git a/Source/devtools/front_end/source_frame/SourceFrame.js b/Source/devtools/front_end/source_frame/SourceFrame.js
index 6c5756844ef18f95c827dbd2d4d1b11b341c479e..c53a16f2911e55d8564ea91d40b9ea6a7d1f5368 100644
--- a/Source/devtools/front_end/source_frame/SourceFrame.js
+++ b/Source/devtools/front_end/source_frame/SourceFrame.js
@@ -82,9 +82,9 @@ WebInspector.SourceFrame.createSearchRegex = function(query, modifiers)
// Silent catch.
}
- // Otherwise just do case-insensitive search.
+ // Otherwise just do a plain text search.
if (!regex)
- regex = createPlainTextSearchRegex(query, "i" + modifiers);
+ regex = createPlainTextSearchRegex(query, modifiers);
return regex;
}
@@ -397,25 +397,26 @@ WebInspector.SourceFrame.prototype = {
},
/**
- * @param {string} query
+ * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
* @param {boolean} shouldJump
* @param {boolean} jumpBackwards
* @param {function(!WebInspector.View, number)} callback
* @param {function(number)} currentMatchChangedCallback
* @param {function()} searchResultsChangedCallback
*/
- performSearch: function(query, shouldJump, jumpBackwards, callback, currentMatchChangedCallback, searchResultsChangedCallback)
+ performSearch: function(searchConfig, shouldJump, jumpBackwards, callback, currentMatchChangedCallback, searchResultsChangedCallback)
{
/**
- * @param {string} query
* @this {WebInspector.SourceFrame}
*/
- function doFindSearchMatches(query)
+ function doFindSearchMatches()
lushnikov 2014/10/20 13:09:19 In order to simplify reading, can we have this met
{
this._currentSearchResultIndex = -1;
this._searchResults = [];
- var regex = WebInspector.SourceFrame.createSearchRegex(query);
+ var modifiers = searchConfig.caseSensitive ? "" : "i";
+ var query = searchConfig.isRegex ? "/" + searchConfig.query + "/" : searchConfig.query;
+ var regex = WebInspector.SourceFrame.createSearchRegex(query, modifiers);
this._searchRegex = regex;
this._searchResults = this._collectRegexMatches(regex);
if (!this._searchResults.length)
@@ -433,9 +434,9 @@ WebInspector.SourceFrame.prototype = {
this._currentSearchMatchChangedCallback = currentMatchChangedCallback;
this._searchResultsChangedCallback = searchResultsChangedCallback;
if (this.loaded)
- doFindSearchMatches.call(this, query);
+ doFindSearchMatches.call(this);
else
- this._delayedFindSearchMatches = doFindSearchMatches.bind(this, query);
+ this._delayedFindSearchMatches = doFindSearchMatches.bind(this);
this._ensureContentLoaded();
},
@@ -547,29 +548,32 @@ WebInspector.SourceFrame.prototype = {
},
/**
- * @param {string} text
+ * @param {string} replacement
*/
- replaceSelectionWith: function(text)
+ replaceSelectionWith: function(replacement)
{
var range = this._searchResults[this._currentSearchResultIndex];
if (!range)
return;
this._textEditor.highlightSearchResults(this._searchRegex, null);
- var newRange = this._textEditor.editRange(range, text);
+ var newRange = this._textEditor.editRange(range, replacement);
this._textEditor.setSelection(newRange.collapseToEnd());
},
/**
- * @param {string} query
+ * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
* @param {string} replacement
*/
- replaceAllWith: function(query, replacement)
+ replaceAllWith: function(searchConfig, replacement)
{
this._resetCurrentSearchResultIndex();
var text = this._textEditor.text();
var range = this._textEditor.range();
- var regex = WebInspector.SourceFrame.createSearchRegex(query, "g");
+
+ var modifiers = searchConfig.caseSensitive ? "" : "i";
+ var query = searchConfig.isRegex ? "/" + searchConfig.query + "/" : searchConfig.query;
+ var regex = WebInspector.SourceFrame.createSearchRegex(query, "g" + modifiers);
if (regex.__fromRegExpQuery)
text = text.replace(regex, replacement);
else
@@ -604,10 +608,11 @@ WebInspector.SourceFrame.prototype = {
do {
var match = regexObject.exec(line);
if (match) {
+ var matchEndIndex = match.index + Math.max(match[0].length, 1);
if (match[0].length)
- ranges.push(new WebInspector.TextRange(i, offset + match.index, i, offset + match.index + match[0].length));
- offset += match.index + 1;
- line = line.substring(match.index + 1);
+ ranges.push(new WebInspector.TextRange(i, offset + match.index, i, offset + matchEndIndex));
+ offset += matchEndIndex;
+ line = line.substring(matchEndIndex);
}
} while (match && line);
}

Powered by Google App Engine
This is Rietveld 408576698