Skip to content

Commit c1fba09

Browse files
committed
[FEATURE] Default value separator #259
1 parent 42f6afe commit c1fba09

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/main/java/net/seesharpsoft/intellij/plugins/csv/components/CsvFileAttributes.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@
2020
import org.jetbrains.annotations.NotNull;
2121
import org.jetbrains.annotations.Nullable;
2222

23-
import java.util.Arrays;
24-
import java.util.HashMap;
25-
import java.util.Map;
23+
import java.util.*;
2624

2725
@State(
2826
name = "CsvFileAttributes",
@@ -125,10 +123,15 @@ CsvValueSeparator autoDetectOrGetDefaultValueSeparator(Project project, VirtualF
125123

126124
private @NotNull
127125
CsvValueSeparator autoDetectSeparator(Project project, VirtualFile virtualFile) {
128-
Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
126+
final Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
129127
final String text = document == null ? "" : document.getText();
128+
final List<CsvValueSeparator> applicableValueSeparators = new ArrayList(Arrays.asList(CsvValueSeparator.values()));
129+
final CsvValueSeparator defaultValueSeparator = CsvEditorSettings.getInstance().getDefaultValueSeparator();
130+
if (defaultValueSeparator.isCustom()) {
131+
applicableValueSeparators.add(defaultValueSeparator);
132+
}
130133
Pair<CsvValueSeparator, Integer> separatorWithCount =
131-
Arrays.stream(CsvValueSeparator.values())
134+
applicableValueSeparators.parallelStream()
132135
// count
133136
.map(separator -> {
134137
String character = separator.getCharacter();
@@ -143,7 +146,7 @@ CsvValueSeparator autoDetectSeparator(Project project, VirtualFile virtualFile)
143146

144147
CsvValueSeparator valueSeparator = separatorWithCount != null ?
145148
separatorWithCount.getFirst() :
146-
CsvEditorSettings.getInstance().getDefaultValueSeparator();
149+
defaultValueSeparator;
147150

148151
setFileSeparator(project, virtualFile, valueSeparator);
149152
return valueSeparator;

src/main/java/net/seesharpsoft/intellij/plugins/csv/settings/CsvEditorSettingsProvider.form

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,9 @@
370370
<constraints>
371371
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
372372
</constraints>
373-
<properties/>
373+
<properties>
374+
<editable value="true"/>
375+
</properties>
374376
</component>
375377
<component id="aed54" class="javax.swing.JCheckBox" binding="cbAutoDetectSeparator">
376378
<constraints>

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,11 @@ public void apply() throws ConfigurationException {
143143
csvEditorSettings.setTableDefaultColumnWidth((int) tfDefaultColumnWidth.getValue());
144144
csvEditorSettings.setTableAutoColumnWidthOnOpen(cbAdjustColumnWidthOnOpen.isSelected());
145145
csvEditorSettings.setDefaultEscapeCharacter((CsvEscapeCharacter)comboEscapeCharacter.getSelectedItem());
146-
csvEditorSettings.setDefaultValueSeparator((CsvValueSeparator)comboValueSeparator.getSelectedItem());
146+
csvEditorSettings.setDefaultValueSeparator(
147+
comboValueSeparator.getSelectedItem() instanceof CsvValueSeparator ?
148+
(CsvValueSeparator)comboValueSeparator.getSelectedItem() :
149+
CsvValueSeparator.create((String)comboValueSeparator.getSelectedItem())
150+
);
147151
csvEditorSettings.setKeepTrailingSpaces(cbKeepTrailingWhitespaces.isSelected());
148152
csvEditorSettings.setCommentIndicator(tfCommentIndicator.getText());
149153
csvEditorSettings.setValueColoring((CsvEditorSettings.ValueColoring) comboValueColoring.getSelectedItem());

0 commit comments

Comments
 (0)