Skip to content

Commit da51eb9

Browse files
committed
[FEATURE] CsvInspectionSuppressor added: suppress ProblematicWhitespace
1 parent 5e48ae5 commit da51eb9

File tree

4 files changed

+49
-10
lines changed

4 files changed

+49
-10
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package net.seesharpsoft.intellij.plugins.csv.intention;
2+
3+
import com.intellij.codeInspection.InspectionProfileEntry;
4+
import com.intellij.codeInspection.InspectionSuppressor;
5+
import com.intellij.codeInspection.ProblematicWhitespaceInspection;
6+
import com.intellij.codeInspection.SuppressQuickFix;
7+
import com.intellij.psi.PsiElement;
8+
import org.jetbrains.annotations.NotNull;
9+
import org.jetbrains.annotations.Nullable;
10+
11+
import java.util.HashSet;
12+
import java.util.Set;
13+
14+
public class CsvInspectionSuppressor implements InspectionSuppressor {
15+
16+
private static final Set<String> generalSuppressedInspections;
17+
18+
static {
19+
generalSuppressedInspections = new HashSet<>();
20+
generalSuppressedInspections.add(InspectionProfileEntry.getShortName(ProblematicWhitespaceInspection.class.getSimpleName()));
21+
}
22+
23+
@Override
24+
public boolean isSuppressedFor(@NotNull PsiElement psiElement, @NotNull String s) {
25+
return generalSuppressedInspections.contains(s);
26+
}
27+
28+
@NotNull
29+
@Override
30+
public SuppressQuickFix[] getSuppressActions(@Nullable PsiElement psiElement, @NotNull String s) {
31+
return new SuppressQuickFix[0];
32+
}
33+
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/intention/CsvValidationInspection.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package net.seesharpsoft.intellij.plugins.csv.intention;
22

3-
import com.intellij.codeInspection.LocalInspectionTool;
4-
import com.intellij.codeInspection.LocalQuickFix;
5-
import com.intellij.codeInspection.ProblemDescriptor;
6-
import com.intellij.codeInspection.ProblemsHolder;
3+
import com.intellij.codeInspection.*;
74
import com.intellij.openapi.diagnostic.Logger;
85
import com.intellij.openapi.editor.Document;
96
import com.intellij.openapi.project.Project;
@@ -80,20 +77,27 @@ public void visitElement(PsiElement element) {
8077
PsiElement firstChild = element.getFirstChild();
8178
PsiElement nextSibling = element.getNextSibling();
8279
if (elementType == TokenType.ERROR_ELEMENT && CsvHelper.getElementType(firstChild) == TokenType.BAD_CHARACTER) {
83-
if (firstChild.getText().equals("\"")) {
84-
holder.registerProblem(element, UNESCAPED_SEQUENCE, fixUnescapedSequence);
85-
} else {
86-
holder.registerProblem(element, SEPARATOR_MISSING, fixSeparatorMissing);
87-
holder.registerProblem(element, UNESCAPED_SEQUENCE, fixUnescapedSequence);
80+
CsvValidationInspection.this.registerError(holder, element, UNESCAPED_SEQUENCE, fixUnescapedSequence);
81+
if (!"\"".equals(firstChild.getText())) {
82+
CsvValidationInspection.this.registerError(holder, element, SEPARATOR_MISSING, fixSeparatorMissing);
8883
}
8984
} else if ((elementType == CsvTypes.TEXT || elementType == CsvTypes.ESCAPED_TEXT)
9085
&& CsvHelper.getElementType(nextSibling) == TokenType.ERROR_ELEMENT
9186
&& nextSibling.getFirstChild() == null) {
92-
holder.registerProblem(element, CLOSING_QUOTE_MISSING, fixClosingQuoteMissing);
87+
CsvValidationInspection.this.registerError(holder, element, CLOSING_QUOTE_MISSING, fixClosingQuoteMissing);
9388
}
9489
}
9590
};
9691
}
92+
93+
private boolean registerError(@NotNull final ProblemsHolder holder, @NotNull PsiElement element, @NotNull String descriptionTemplate, @Nullable LocalQuickFix fix) {
94+
if (element != null && this.isSuppressedFor(element)) {
95+
return false;
96+
}
97+
98+
holder.registerProblem(element, descriptionTemplate, fix);
99+
return true;
100+
}
97101

98102
private static abstract class CsvLocalQuickFix implements LocalQuickFix {
99103
@NotNull

src/main/java/net/seesharpsoft/intellij/plugins/csv/settings/CsvLanguageCodeStyleSettingsProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public CommonCodeStyleSettings getDefaultCommonSettings() {
7878
commonSettings.getIndentOptions().INDENT_SIZE = 1;
7979
commonSettings.getIndentOptions().USE_TAB_CHARACTER = true;
8080
commonSettings.getIndentOptions().SMART_TABS = false;
81+
commonSettings.getIndentOptions().KEEP_INDENTS_ON_EMPTY_LINES = true;
8182
return commonSettings;
8283
}
8384
}

src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
groupName="CSV"
9090
shortName="CsvValidation"
9191
implementationClass="net.seesharpsoft.intellij.plugins.csv.intention.CsvValidationInspection" />
92+
<lang.inspectionSuppressor language="csv" implementationClass="net.seesharpsoft.intellij.plugins.csv.intention.CsvInspectionSuppressor" />
9293

9394
<intentionAction id="CsvShiftColumnLeft" order="FIRST">
9495
<className>net.seesharpsoft.intellij.plugins.csv.intention.CsvShiftColumnLeftIntentionAction</className>

0 commit comments

Comments
 (0)