mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-202914 mess after selection
This commit is contained in:
+9
-11
@@ -5,9 +5,10 @@ import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.codeInsight.template.*;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.structuralsearch.impl.matcher.CompiledPattern;
|
||||
import com.intellij.structuralsearch.impl.matcher.compiler.PatternCompiler;
|
||||
import com.intellij.structuralsearch.impl.matcher.MatcherImplUtil;
|
||||
import com.intellij.structuralsearch.impl.matcher.PatternTreeContext;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -60,16 +61,13 @@ public class StructuralSearchTemplateBuilder {
|
||||
MatchOptions matchOptions = new MatchOptions();
|
||||
String text = myPsiFile.getText();
|
||||
matchOptions.setSearchPattern(text);
|
||||
CompiledPattern pattern = PatternCompiler.compilePattern(myPsiFile.getProject(), matchOptions, false);
|
||||
if (pattern == null)
|
||||
return myBuilder;
|
||||
|
||||
PsiElement current = pattern.getNodes().current();
|
||||
if (current != null) {
|
||||
myShift = current.getTextRange().getStartOffset();
|
||||
current.accept(visitor);
|
||||
PsiElement[] elements =
|
||||
MatcherImplUtil.createTreeFromText(text, PatternTreeContext.Block, myPsiFile.getFileType(), myPsiFile.getProject());
|
||||
PsiElement psiElement = ContainerUtil.find(elements, element -> !(element instanceof PsiWhiteSpace));
|
||||
if (psiElement != null) {
|
||||
myShift = 2;
|
||||
psiElement.accept(visitor);
|
||||
}
|
||||
|
||||
return myBuilder;
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -24,6 +24,16 @@ public class SSTemplateBuilderTest extends LightCodeInsightFixtureTestCase {
|
||||
assertEquals(1, template.getSegmentsCount());
|
||||
}
|
||||
|
||||
public void testStartingWhitespace() {
|
||||
doTest(" List<Integer> list = null;", " $Class1$<$Class2$> list = null;");
|
||||
}
|
||||
|
||||
public void testInnerWhiteSpace() {
|
||||
doTest("try {\n" +
|
||||
" List<Integer> list = null;} finally {}", "try {\n" +
|
||||
" $Class1$<$Class2$> list = null;} finally {}");
|
||||
}
|
||||
|
||||
private Template doTest(String text, String expected) {
|
||||
PsiFile psiFile = myFixture.configureByText(JavaFileType.INSTANCE, text);
|
||||
TemplateBuilderImpl builder = (TemplateBuilderImpl)new StructuralSearchTemplateBuilder(getFile()).buildTemplate();
|
||||
|
||||
Reference in New Issue
Block a user