collapse tag fix preview

GitOrigin-RevId: bbc562920e937d428b130ca88ba6fc59309f0efc
This commit is contained in:
Dmitry Avdeev
2022-06-27 13:05:48 +03:00
committed by intellij-monorepo-bot
parent bffaed5bef
commit d0aa498bad
2 changed files with 5 additions and 29 deletions

View File

@@ -46,9 +46,9 @@ public class CollapseTagTest extends BasePlatformTestCase {
public void testCollapseInnerTag() {
myFixture.enableInspections(new CheckTagEmptyBodyInspection());
PsiFile file = myFixture.configureByText(XmlFileType.INSTANCE, "<a>\n" +
" <b></b><caret>\n" +
" <b><caret></b>\n" +
"</a>");
assertFalse(new CollapseTagIntention().isAvailable(getProject(), myFixture.getEditor(), file));
assertTrue(new CollapseTagIntention().isAvailable(getProject(), myFixture.getEditor(), file));
IntentionAction action = myFixture.findSingleIntention("Collapse");
assertNotNull(action);
WriteCommandAction.runWriteCommandAction(getProject(), () -> action.invoke(getProject(), myFixture.getEditor(), file));

View File

@@ -6,15 +6,13 @@ import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.XmlSuppressableInspectionTool;
import com.intellij.lang.ASTNode;
import com.intellij.lang.xml.XMLLanguage;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.XmlElementVisitor;
import com.intellij.psi.html.HtmlTag;
import com.intellij.psi.xml.XmlChildRole;
import com.intellij.psi.xml.XmlTag;
import com.intellij.psi.xml.XmlTokenType;
import com.intellij.util.IncorrectOperationException;
import com.intellij.xml.XmlExtension;
import com.intellij.xml.analysis.XmlAnalysisBundle;
import org.jetbrains.annotations.NonNls;
@@ -47,7 +45,7 @@ public class CheckTagEmptyBodyInspection extends XmlSuppressableInspectionTool {
holder.registerProblem(
tag,
XmlAnalysisBundle.message("xml.inspections.tag.empty.body"),
isCollapsibleTag(tag) ? new Fix(tag) : null
isCollapsibleTag(tag) ? new CollapseTagIntention() : null
);
}
}
@@ -67,26 +65,4 @@ public class CheckTagEmptyBodyInspection extends XmlSuppressableInspectionTool {
public String getShortName() {
return "CheckTagEmptyBody";
}
public static class Fix extends CollapseTagIntention {
private final SmartPsiElementPointer<XmlTag> myPointer;
public Fix(XmlTag tag) {
myPointer = SmartPointerManager.getInstance(tag.getProject()).createSmartPsiElementPointer(tag);
}
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
XmlTag tag = myPointer.getElement();
if (tag == null) {
return;
}
applyFix(project, tag);
}
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
return true;
}
}
}