mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
Added inspection and quickfix for trailing whitespaces within PsiWhitespace elements
GitOrigin-RevId: 5a5e8d286ce3a26690fdb885aa649ab68d569690
This commit is contained in:
committed by
intellij-monorepo-bot
parent
123ce76579
commit
d4662f96b4
@@ -6,6 +6,8 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
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;
|
||||
@@ -14,6 +16,7 @@ import ru.adelf.idea.dotenv.DotEnvFactory;
|
||||
import ru.adelf.idea.dotenv.psi.DotEnvFile;
|
||||
import ru.adelf.idea.dotenv.psi.DotEnvTypes;
|
||||
import ru.adelf.idea.dotenv.psi.DotEnvValue;
|
||||
import ru.adelf.idea.dotenv.psi.impl.DotEnvValueImpl;
|
||||
|
||||
public class TrailingWhitespaceInspection extends LocalInspectionTool {
|
||||
// Change the display name within the plugin.xml
|
||||
@@ -47,6 +50,15 @@ public class TrailingWhitespaceInspection extends LocalInspectionTool {
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
PsiTreeUtil.findChildrenOfType(file, PsiWhiteSpaceImpl.class).forEach(whiteSpace -> {
|
||||
if (whiteSpace.getText().matches("\\s*[ \\t]\\n\\s*")) {
|
||||
problemsHolder.registerProblem(whiteSpace,
|
||||
"Line has trailing whitespace.",
|
||||
new TrailingWhitespaceInspection.RemoveTrailingWhitespaceQuickFix()
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
return problemsHolder;
|
||||
}
|
||||
@@ -63,10 +75,15 @@ public class TrailingWhitespaceInspection extends LocalInspectionTool {
|
||||
try {
|
||||
PsiElement psiElement = descriptor.getPsiElement();
|
||||
|
||||
PsiElement newPsiElement = DotEnvFactory.createFromText(project, DotEnvTypes.VALUE,
|
||||
"DUMMMY_KEY="+psiElement.getText().stripTrailing());
|
||||
|
||||
psiElement.replace(newPsiElement);
|
||||
if (psiElement instanceof DotEnvValueImpl) {
|
||||
PsiElement newPsiElement = DotEnvFactory.createFromText(project, DotEnvTypes.VALUE,
|
||||
"DUMMY_KEY=" + psiElement.getText().stripTrailing());
|
||||
psiElement.replace(newPsiElement);
|
||||
} else if (psiElement instanceof PsiWhiteSpaceImpl) {
|
||||
PsiElement newPsiElement = DotEnvFactory.createFromText(project, ElementType.WHITE_SPACE,
|
||||
"DUMMY_KEY='VALUE'" + psiElement.getText().replaceAll("[ \\t]*\\n", "\n"));
|
||||
psiElement.replace(newPsiElement);
|
||||
}
|
||||
} catch (IncorrectOperationException e) {
|
||||
Logger.getInstance(IncorrectDelimiterInspection.class).error(e);
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class InspectionsTest extends DotEnvLightCodeInsightFixtureTestCase {
|
||||
|
||||
@Test
|
||||
public void testTrailingWhitespaceInspection() {
|
||||
doInspectionTest(new TrailingWhitespaceInspection(), Arrays.asList(" ", " "));
|
||||
doInspectionTest(new TrailingWhitespaceInspection(), Arrays.asList(" ", " ", " \n", " \n\n"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -13,7 +13,10 @@ INCORRECT-DELIMITER=test-test
|
||||
*LEADING_CHARACTER=test
|
||||
|
||||
TRAILING_WHITESPACE_SPACE=space
|
||||
TRAILING_WHITESPACE_TAB=tab
|
||||
TRAILING_WHITESPACE_TAB=tab
|
||||
TRAILING_WHITESPACE_QUOTE="quote"
|
||||
TRAILING_WHITESPACE_MULTI_LINE="multi
|
||||
line"
|
||||
|
||||
lower_case_KEY=test
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ INCORRECT_DELIMITER=test-test
|
||||
|
||||
TRAILING_WHITESPACE_SPACE=space
|
||||
TRAILING_WHITESPACE_TAB=tab
|
||||
TRAILING_WHITESPACE_QUOTE="quote"
|
||||
TRAILING_WHITESPACE_MULTI_LINE="multi
|
||||
line"
|
||||
|
||||
LOWER_CASE_KEY=test
|
||||
|
||||
|
||||
Reference in New Issue
Block a user