diff --git a/plugins/env-files-support/src/main/java/ru/adelf/idea/dotenv/inspections/ExtraBlankLineInspection.java b/plugins/env-files-support/src/main/java/ru/adelf/idea/dotenv/inspections/ExtraBlankLineInspection.java index bedc9810445b..d32690be0222 100644 --- a/plugins/env-files-support/src/main/java/ru/adelf/idea/dotenv/inspections/ExtraBlankLineInspection.java +++ b/plugins/env-files-support/src/main/java/ru/adelf/idea/dotenv/inspections/ExtraBlankLineInspection.java @@ -1,14 +1,17 @@ package ru.adelf.idea.dotenv.inspections; -import com.intellij.codeInspection.InspectionManager; -import com.intellij.codeInspection.LocalInspectionTool; -import com.intellij.codeInspection.ProblemDescriptor; -import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.codeInspection.*; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.impl.source.tree.ElementType; import com.intellij.psi.impl.source.tree.PsiWhiteSpaceImpl; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import ru.adelf.idea.dotenv.DotEnvFactory; import ru.adelf.idea.dotenv.psi.DotEnvFile; import java.util.regex.Matcher; @@ -51,10 +54,38 @@ public class ExtraBlankLineInspection extends LocalInspectionTool { count++; if (count > 2) { - problemsHolder.registerProblem(whiteSpace, "Only one extra line allowed between properties"); + problemsHolder.registerProblem(whiteSpace, + "Only one extra line allowed between properties", + new RemoveExtraBlankLineQuickFix()); } }); return problemsHolder; } + + private static class RemoveExtraBlankLineQuickFix implements LocalQuickFix { + + @NotNull + @Override + public String getName() { + return "Remove extra blank line"; + } + + public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { + try { + PsiElement psiElement = descriptor.getPsiElement(); + + PsiElement newPsiElement = DotEnvFactory.createFromText(project, ElementType.WHITE_SPACE, "\n\n"); + + psiElement.replace(newPsiElement); + } catch (IncorrectOperationException e) { + Logger.getInstance(ExtraBlankLineInspection.class).error(e); + } + } + + @NotNull + public String getFamilyName() { + return getName(); + } + } } diff --git a/plugins/env-files-support/src/test/java/ru/adelf/idea/dotenv/tests/dotenv/fixtures/quickFix.env b/plugins/env-files-support/src/test/java/ru/adelf/idea/dotenv/tests/dotenv/fixtures/quickFix.env index 0b354b2ca67e..d7b46e610019 100644 --- a/plugins/env-files-support/src/test/java/ru/adelf/idea/dotenv/tests/dotenv/fixtures/quickFix.env +++ b/plugins/env-files-support/src/test/java/ru/adelf/idea/dotenv/tests/dotenv/fixtures/quickFix.env @@ -5,7 +5,6 @@ SPACE_INSIDE_NON_QUOTED="spaces without quotes" # extra blank lines test START - # extra blank lines test END INCORRECT_DELIMITER=test-test \ No newline at end of file