mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
for nonword characters consider whole words boundary to be just different character (r=Peter.Gromov)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user