Browse Source

Fix SD-1794 - Replace all in selection does not replace any text

pull/14/head
Matt Ward 15 years ago
parent
commit
d9c2ae3a33
  1. 2
      src/AddIns/Misc/SearchAndReplace/Project/Engine/Search.cs
  2. 5
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/BruteForceSearchStrategy.cs
  3. 5
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/RegExSearchStrategy.cs
  4. 5
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/WildcardSearchStrategy.cs

2
src/AddIns/Misc/SearchAndReplace/Project/Engine/Search.cs

@ -145,7 +145,7 @@ namespace SearchAndReplace @@ -145,7 +145,7 @@ namespace SearchAndReplace
if (documentIterator.MoveForward()) {
info = documentIterator.Current;
// document is valid for searching -> set iterator & fileName
if (info != null && info.EndOffset >= 0 && info.EndOffset < info.Document.TextLength) {
if (info != null && info.EndOffset >= 0 && info.EndOffset <= info.Document.TextLength) {
textIterator = textIteratorBuilder.BuildTextIterator(info);
} else {
textIterator = null;

5
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/BruteForceSearchStrategy.cs

@ -54,7 +54,10 @@ namespace SearchAndReplace @@ -54,7 +54,10 @@ namespace SearchAndReplace
int InternalFindNext(ITextIterator textIterator, int offset, int length)
{
while (textIterator.MoveAhead(1) && TextSelection.IsInsideRange(textIterator.Position, offset, length)) {
while (textIterator.MoveAhead(1)) {
if (textIterator.Position >= offset + length) {
textIterator.Position = offset;
}
if (SearchOptions.MatchCase ? MatchCaseSensitive(textIterator.Document, textIterator.Position, searchPattern) : MatchCaseInsensitive(textIterator.Document, textIterator.Position, searchPattern)) {
if (!SearchOptions.MatchWholeWord || IsWholeWordAt(textIterator.Document, textIterator.Position, searchPattern.Length)) {
if (TextSelection.IsInsideRange(textIterator.Position + searchPattern.Length - 1, offset, length)) {

5
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/RegExSearchStrategy.cs

@ -58,7 +58,10 @@ namespace SearchAndReplace @@ -58,7 +58,10 @@ namespace SearchAndReplace
{
string document = textIterator.Document.GetText(0, textIterator.Document.TextLength);
while (textIterator.MoveAhead(1) && TextSelection.IsInsideRange(textIterator.Position, offset, length)) {
while (textIterator.MoveAhead(1)) {
if (textIterator.Position >= offset + length) {
textIterator.Position = offset;
}
Match m = regex.Match(document, textIterator.Position);
if (m == null || !m.Success) {
while (textIterator.Position < document.Length - 1) {

5
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/WildcardSearchStrategy.cs

@ -145,7 +145,10 @@ namespace SearchAndReplace @@ -145,7 +145,10 @@ namespace SearchAndReplace
int InternalFindNext(ITextIterator textIterator, int offset, int length)
{
while (textIterator.MoveAhead(1) && TextSelection.IsInsideRange(textIterator.Position, offset, length)) {
while (textIterator.MoveAhead(1)) {
if (textIterator.Position >= offset + length) {
textIterator.Position = offset;
}
int position = textIterator.Position;
if (Match(textIterator.Document, position, !SearchOptions.MatchCase, 0)) {
if (!SearchOptions.MatchWholeWord || SearchReplaceUtilities.IsWholeWordAt(textIterator.Document, position, curMatchEndOffset - position)) {

Loading…
Cancel
Save