From 55dfb5566f500f67c7eca8a452d93fc92375d184 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Mon, 20 Apr 2015 18:43:56 +0300 Subject: [PATCH] IDEA-138792 Better way to avoid formatting when replacing JSON strings in quickfix I use CodeStyleManager#performActionWithFormatterDisabled for this purpose instead of performing modifications on AST nodes. --- .../JsonStandardComplianceInspection.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java b/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java index b4f7ffc2374d..29b05e2d52a6 100644 --- a/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java +++ b/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java @@ -6,13 +6,13 @@ import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel; import com.intellij.json.JsonBundle; import com.intellij.json.JsonElementTypes; import com.intellij.json.psi.*; -import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiComment; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiWhiteSpace; +import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -145,9 +145,13 @@ public class JsonStandardComplianceInspection extends LocalInspectionTool { if (element instanceof JsonStringLiteral && rawText.startsWith("'")) { content = escapeSingleQuotedStringContent(content); } - // TODO: find out better way to replace element and skip reformatting step afterwards - final ASTNode replacement = new JsonElementGenerator(project).createValue("\"" + content + "\"").getNode(); - element.getParent().getNode().replaceChild(element.getNode(), replacement); + final PsiElement replacement = new JsonElementGenerator(project).createValue("\"" + content + "\""); + CodeStyleManager.getInstance(project).performActionWithFormatterDisabled(new Runnable() { + @Override + public void run() { + element.replace(replacement); + } + }); } else if (element != null) { LOG.error("Quick fix was applied to unexpected element", rawText, element.getParent().getText());