mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
no need to create strings of PsiFile's Text when we can avoid it or use charsequence
This commit is contained in:
@@ -193,14 +193,14 @@ public class AllClassesGetter {
|
||||
|
||||
|
||||
private static String getPackagePrefix(final PsiElement context, final int offset) {
|
||||
final String fileText = context.getContainingFile().getText();
|
||||
final CharSequence fileText = context.getContainingFile().getViewProvider().getContents();
|
||||
int i = offset - 1;
|
||||
while (i >= 0) {
|
||||
final char c = fileText.charAt(i);
|
||||
if (!Character.isJavaIdentifierPart(c) && c != '.') break;
|
||||
i--;
|
||||
}
|
||||
String prefix = fileText.substring(i + 1, offset);
|
||||
String prefix = fileText.subSequence(i + 1, offset).toString();
|
||||
final int j = prefix.lastIndexOf('.');
|
||||
return j > 0 ? prefix.substring(0, j) : "";
|
||||
}
|
||||
|
||||
+2
-1
@@ -49,13 +49,14 @@ import java.util.regex.Pattern;
|
||||
public class FileHeaderChecker {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.defaultFileTemplateUsage.FileHeaderChecker");
|
||||
|
||||
// abcdfghdjsjd kfkdjekr dfhakdjfk dkfkjgk dfjgjfkg ekfk fkgkvv ggkk eefkgjkdd jfkkkssl dfghgk gkhller hhksl lfflgl
|
||||
static ProblemDescriptor checkFileHeader(@NotNull final PsiFile file, final InspectionManager manager, boolean onTheFly) {
|
||||
TIntObjectHashMap<String> offsetToProperty = new TIntObjectHashMap<String>();
|
||||
Pattern pattern = getTemplatePattern(FileTemplateManager.getInstance()
|
||||
.getDefaultTemplate(FileTemplateManager.FILE_HEADER_TEMPLATE_NAME),
|
||||
file.getProject(), offsetToProperty
|
||||
);
|
||||
Matcher matcher = pattern.matcher(file.getText());
|
||||
Matcher matcher = pattern.matcher(file.getViewProvider().getContents());
|
||||
if (matcher.matches()) {
|
||||
final int startOffset = matcher.start(1);
|
||||
final int endOffset = matcher.end(1);
|
||||
|
||||
+1
-1
@@ -150,7 +150,7 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
|
||||
}
|
||||
|
||||
public static boolean hasErrorElementsNearby(final PsiFile file, int startOffset, int endOffset) {
|
||||
endOffset = CharArrayUtil.shiftForward(file.getText(), endOffset, " \t\n");
|
||||
endOffset = CharArrayUtil.shiftForward(file.getViewProvider().getContents(), endOffset, " \t\n");
|
||||
for (PsiElement element : CollectHighlightsUtil.getElementsInRange(file, startOffset, endOffset)) {
|
||||
if (element instanceof PsiErrorElement) {
|
||||
return true;
|
||||
|
||||
+3
-2
@@ -145,8 +145,9 @@ class CompletionAssertions {
|
||||
}
|
||||
|
||||
final TextRange range = insertedElement.getTextRange();
|
||||
String fileCopyText = fileCopy.getText();
|
||||
if ((range.getEndOffset() > fileCopyText.length()) || !range.substring(fileCopyText).equals(insertedElement.getText())) {
|
||||
CharSequence fileCopyText = fileCopy.getViewProvider().getContents();
|
||||
if ((range.getEndOffset() > fileCopyText.length()) ||
|
||||
!fileCopyText.subSequence(range.getStartOffset(), range.getEndOffset()).toString().equals(insertedElement.getText())) {
|
||||
throw new LogEventException("Inconsistent completion tree", "range=" + range + "\n" + DebugUtil.currentStackTrace(),
|
||||
createFileTextAttachment(fileCopy, originalFile), createAstAttachment(fileCopy, originalFile),
|
||||
new Attachment("Element at caret.txt", insertedElement.getText()));
|
||||
|
||||
+8
-8
@@ -84,7 +84,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
@NotNull final CompletionContributor contributor) {
|
||||
final PsiElement position = parameters.getPosition();
|
||||
final String prefix = CompletionData.findPrefixStatic(position, parameters.getOffset());
|
||||
final String textBeforePosition = parameters.getPosition().getContainingFile().getText().substring(0, parameters.getOffset());
|
||||
final int lengthOfTextBeforePosition = parameters.getOffset();
|
||||
ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator();
|
||||
if (!(indicator instanceof CompletionProgressIndicator)) {
|
||||
throw new AssertionError("createResultSet may be invoked only from completion thread: " + indicator + "!=" + getCurrentCompletion() + "; phase set at " + ourPhaseTrace);
|
||||
@@ -92,7 +92,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
CompletionProgressIndicator process = (CompletionProgressIndicator)indicator;
|
||||
CamelHumpMatcher matcher = new CamelHumpMatcher(prefix);
|
||||
CompletionSorterImpl sorter = defaultSorter(parameters, matcher);
|
||||
return new CompletionResultSetImpl(consumer, textBeforePosition, matcher, contributor,parameters, sorter, process, null);
|
||||
return new CompletionResultSetImpl(consumer, lengthOfTextBeforePosition, matcher, contributor,parameters, sorter, process, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -105,13 +105,13 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
}
|
||||
|
||||
private static class CompletionResultSetImpl extends CompletionResultSet {
|
||||
private final String myTextBeforePosition;
|
||||
private final int myLengthOfTextBeforePosition;
|
||||
private final CompletionParameters myParameters;
|
||||
private final CompletionSorterImpl mySorter;
|
||||
private final CompletionProgressIndicator myProcess;
|
||||
@Nullable private final CompletionResultSetImpl myOriginal;
|
||||
|
||||
public CompletionResultSetImpl(final Consumer<CompletionResult> consumer, final String textBeforePosition,
|
||||
public CompletionResultSetImpl(final Consumer<CompletionResult> consumer, final int lengthOfTextBeforePosition,
|
||||
final PrefixMatcher prefixMatcher,
|
||||
CompletionContributor contributor,
|
||||
CompletionParameters parameters,
|
||||
@@ -119,7 +119,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
@NotNull CompletionProgressIndicator process,
|
||||
@Nullable CompletionResultSetImpl original) {
|
||||
super(prefixMatcher, consumer, contributor);
|
||||
myTextBeforePosition = textBeforePosition;
|
||||
myLengthOfTextBeforePosition = lengthOfTextBeforePosition;
|
||||
myParameters = parameters;
|
||||
mySorter = sorter;
|
||||
myProcess = process;
|
||||
@@ -142,7 +142,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
@Override
|
||||
@NotNull
|
||||
public CompletionResultSet withPrefixMatcher(@NotNull final PrefixMatcher matcher) {
|
||||
return new CompletionResultSetImpl(getConsumer(), myTextBeforePosition, matcher, myContributor, myParameters, mySorter, myProcess, this);
|
||||
return new CompletionResultSetImpl(getConsumer(), myLengthOfTextBeforePosition, matcher, myContributor, myParameters, mySorter, myProcess, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -165,7 +165,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
@NotNull
|
||||
@Override
|
||||
public CompletionResultSet withRelevanceSorter(@NotNull CompletionSorter sorter) {
|
||||
return new CompletionResultSetImpl(getConsumer(), myTextBeforePosition, getPrefixMatcher(), myContributor, myParameters, (CompletionSorterImpl)sorter, myProcess, this);
|
||||
return new CompletionResultSetImpl(getConsumer(), myLengthOfTextBeforePosition, getPrefixMatcher(), myContributor, myParameters, (CompletionSorterImpl)sorter, myProcess, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -183,7 +183,7 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
public void restartCompletionOnPrefixChange(ElementPattern<String> prefixCondition) {
|
||||
final CompletionProgressIndicator indicator = getCompletionService().getCurrentCompletion();
|
||||
if (indicator != null) {
|
||||
indicator.addWatchedPrefix(myTextBeforePosition.length() - getPrefixMatcher().getPrefix().length(), prefixCondition);
|
||||
indicator.addWatchedPrefix(myLengthOfTextBeforePosition - getPrefixMatcher().getPrefix().length(), prefixCondition);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user