Skip to content

Commit 6aa5404

Browse files
authored
Merge pull request #28 from SeeSharpSoft/fb_fix_tsv_add_separator_inspection
Fb fix tsv add separator inspection
2 parents 1afd25a + 9bc288c commit 6aa5404

File tree

13 files changed

+70
-14
lines changed

13 files changed

+70
-14
lines changed

src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvLexer.flex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.intellij.lexer.FlexLexer;
44
import com.intellij.psi.tree.IElementType;
55
import com.intellij.openapi.project.Project;
66
import net.seesharpsoft.intellij.plugins.csv.psi.CsvTypes;
7-
import static net.seesharpsoft.intellij.plugins.csv.settings.CsvCodeStyleSettings.getCurrentSeparator;
87
import com.intellij.psi.TokenType;
98

109
%%

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ protected CsvShiftColumnIntentionAction(String text) {
1818
super(text);
1919
}
2020

21-
protected static void changeLeftAndRightColumnOrder(@NotNull Project project, CsvFile psiFile, CsvColumnInfo<PsiElement> leftColumnInfo, CsvColumnInfo<PsiElement> rightColumnInfo) {
22-
Document document = PsiDocumentManager.getInstance(project).getDocument(psiFile);
23-
document.setText(changeLeftAndRightColumnOrder(document.getText(), CsvCodeStyleSettings.getCurrentSeparator(project, psiFile.getLanguage()), leftColumnInfo, rightColumnInfo));
21+
protected static void changeLeftAndRightColumnOrder(@NotNull Project project, CsvFile csvFile, CsvColumnInfo<PsiElement> leftColumnInfo, CsvColumnInfo<PsiElement> rightColumnInfo) {
22+
Document document = PsiDocumentManager.getInstance(project).getDocument(csvFile);
23+
document.setText(changeLeftAndRightColumnOrder(document.getText(), CsvCodeStyleSettings.getCurrentSeparator(project, csvFile.getLanguage()), leftColumnInfo, rightColumnInfo));
2424
}
2525

2626
@NotNull
@@ -43,10 +43,10 @@ protected static String changeLeftAndRightColumnOrder(String text, String separa
4343
TextRange.create(middleSeparator.getEndOffset(), middleSeparator.getEndOffset()) :
4444
findNextSeparatorOrCRLF(rightElement);
4545

46-
newText.append(text.substring(lastIndex, leftSeparator.getEndOffset()))
47-
.append(text.substring(middleSeparator.getEndOffset(), rightSeparator.getStartOffset()))
46+
newText.append(text, lastIndex, leftSeparator.getEndOffset())
47+
.append(text, middleSeparator.getEndOffset(), rightSeparator.getStartOffset())
4848
.append(separator)
49-
.append(text.substring(leftSeparator.getEndOffset(), middleSeparator.getStartOffset()));
49+
.append(text, leftSeparator.getEndOffset(), middleSeparator.getStartOffset());
5050

5151
lastIndex = rightSeparator.getStartOffset();
5252
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import com.intellij.psi.tree.IElementType;
1515
import com.intellij.util.IncorrectOperationException;
1616
import net.seesharpsoft.intellij.plugins.csv.CsvLanguage;
17-
import net.seesharpsoft.intellij.plugins.csv.settings.CsvCodeStyleSettings;
1817
import net.seesharpsoft.intellij.plugins.csv.psi.CsvTypes;
18+
import net.seesharpsoft.intellij.plugins.csv.settings.CsvCodeStyleSettings;
1919
import org.jetbrains.annotations.NonNls;
2020
import org.jetbrains.annotations.NotNull;
2121
import org.jetbrains.annotations.Nullable;
@@ -142,8 +142,9 @@ public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descri
142142
try {
143143
PsiElement element = descriptor.getPsiElement();
144144
Document document = PsiDocumentManager.getInstance(project).getDocument(element.getContainingFile());
145+
String separator = CsvCodeStyleSettings.getCurrentSeparator(element.getProject(), element.getContainingFile().getLanguage());
145146
String text = document.getText();
146-
document.setText(text.substring(0, element.getTextOffset()) + CsvCodeStyleSettings.getCurrentSeparator(project) + text.substring(element.getTextOffset()));
147+
document.setText(text.substring(0, element.getTextOffset()) + separator + text.substring(element.getTextOffset()));
147148
} catch (IncorrectOperationException e) {
148149
LOG.error(e);
149150
}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.intellij.lang.Language;
44
import com.intellij.openapi.application.ApplicationManager;
55
import com.intellij.openapi.project.Project;
6-
import com.intellij.openapi.project.ProjectCoreUtil;
76
import com.intellij.psi.codeStyle.CodeStyleSettings;
87
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
98
import com.intellij.psi.codeStyle.CustomCodeStyleSettings;
@@ -48,10 +47,6 @@ public static String getCurrentSeparator(@Nullable Project project, @Nullable La
4847
return getCurrentSeparator(project);
4948
}
5049

51-
public static String getCurrentSeparator() {
52-
return getCurrentSeparator(ProjectCoreUtil.theOnlyOpenProject());
53-
}
54-
5550
public CsvCodeStyleSettings(CodeStyleSettings settings) {
5651
super("CsvCodeStyleSettings", settings);
5752
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package net.seesharpsoft.intellij.plugins.tsv.intention;
2+
3+
import com.intellij.codeInsight.intention.IntentionAction;
4+
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
5+
import net.seesharpsoft.intellij.plugins.csv.intention.CsvValidationInspection;
6+
7+
public class TsvInspectionTest extends LightCodeInsightFixtureTestCase {
8+
9+
@Override
10+
protected String getTestDataPath() {
11+
return "./src/test/resources/inspection";
12+
}
13+
14+
@Override
15+
protected void setUp() throws Exception {
16+
super.setUp();
17+
myFixture.enableInspections(CsvValidationInspection.class);
18+
}
19+
20+
protected void doTestIntention(String testName, String hint) throws Throwable {
21+
myFixture.configureByFile(testName + "/before.tsv");
22+
final IntentionAction action = myFixture.filterAvailableIntentions(hint).stream()
23+
.filter(intentionAction -> intentionAction.getText().equals(hint))
24+
.findFirst().get();
25+
26+
myFixture.launchAction(action);
27+
myFixture.checkResultByFile(testName + "/after.tsv");
28+
}
29+
30+
public void testAddClosingQuote() throws Throwable {
31+
doTestIntention("AddClosingQuote", "Add closing quote");
32+
}
33+
34+
public void testAddMissingSeparator() throws Throwable {
35+
doTestIntention("AddMissingSeparator", "Add separator");
36+
}
37+
38+
public void testSurroundWithQuotes() throws Throwable {
39+
doTestIntention("SurroundWithQuotes", "Surround with quotes");
40+
}
41+
42+
public void testInvalidRange() throws Throwable {
43+
doTestIntention("AddMissingSeparator", "Add separator");
44+
}
45+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Header 1 "Header 2
2+
Value 1 Value 2"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Header 1 "Header 2
2+
Value 1 Value 2<caret>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Header 1 "Header 2" Header 3
2+
Value" 1 Value 2
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Header 1 "Header 2" <caret>Header 3
2+
Value" 1 Value 2
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"Header 1" "Header 2
2+
Value 1 a " Value 2"

0 commit comments

Comments
 (0)