for nonword characters consider whole words boundary to be just different character (r=Peter.Gromov)

This commit is contained in:
Maxim.Mossienko
2015-07-28 16:21:31 +02:00
parent c53f33317f
commit 7da83f8bc1
2 changed files with 12 additions and 4 deletions
@@ -619,6 +619,14 @@ public class FindManagerTest extends DaemonAnalyzerTestCase {
List<Usage> usages = FindUtil.findAll(myProject, myEditor, model);
assertNotNull(usages);
assertEquals(2, usages.size());
configureByText(FileTypes.PLAIN_TEXT, "myproperty=@AspectJ");
model = new FindModel();
model.setStringToFind("@AspectJ");
model.setWholeWordsOnly(true);
usages = FindUtil.findAll(myProject, myEditor, model);
assertNotNull(usages);
assertEquals(1, usages.size());
}
public void testFindInCurrentFileOutsideProject() throws Exception {
@@ -401,10 +401,10 @@ public class FindManagerImpl extends FindManager {
if (startOffset != 0) {
boolean previousCharacterIsIdentifier = Character.isJavaIdentifierPart(text.charAt(startOffset - 1)) &&
(startOffset <= 1 || text.charAt(startOffset - 2) != '\\');
boolean previousCharacterIsWhitespace = Character.isWhitespace(text.charAt(startOffset - 1));
boolean previousCharacterIsSameAsNext = text.charAt(startOffset - 1) == text.charAt(startOffset);
boolean firstCharacterIsIdentifier = Character.isJavaIdentifierPart(text.charAt(startOffset));
isWordStart = !firstCharacterIsIdentifier && (previousCharacterIsIdentifier || previousCharacterIsWhitespace) ||
isWordStart = !firstCharacterIsIdentifier && !previousCharacterIsSameAsNext ||
firstCharacterIsIdentifier && !previousCharacterIsIdentifier;
} else {
isWordStart = true;
@@ -414,11 +414,11 @@ public class FindManagerImpl extends FindManager {
if (endOffset != text.length()) {
boolean nextCharacterIsIdentifier = Character.isJavaIdentifierPart(text.charAt(endOffset));
boolean nextCharacterIsWhitespace = Character.isWhitespace(text.charAt(endOffset));
boolean nextCharacterIsSameAsPrevious = endOffset > 0 && text.charAt(endOffset) == text.charAt(endOffset - 1);
boolean lastSearchedCharacterIsIdentifier = endOffset > 0 && Character.isJavaIdentifierPart(text.charAt(endOffset - 1));
isWordEnd = lastSearchedCharacterIsIdentifier && !nextCharacterIsIdentifier ||
!lastSearchedCharacterIsIdentifier && (nextCharacterIsIdentifier || nextCharacterIsWhitespace);
!lastSearchedCharacterIsIdentifier && !nextCharacterIsSameAsPrevious;
} else {
isWordEnd = true;
}