Skip to content

Commit 616b789

Browse files
authored
Merge pull request #133 from SeeSharpSoft/master
Release 2.5.0
2 parents 1f5b996 + 28de17e commit 616b789

26 files changed

+199
-54
lines changed

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2.5.0
2+
May 16, 2019
3+
4+
NEW: PSV file support
5+
FIX: NullPointerException in StorageHelper class
6+
17
2.4.0
28
May 11, 2019
39

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This enables default editor features like syntax validation, highlighting and in
1414

1515
## Features
1616

17-
- CSV/TSV file detection
17+
- CSV/TSV/PSV file detection
1818
- table editor
1919
- customizable text editor
2020
- syntax validation

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# https://www.jetbrains.com/intellij-repository/snapshots
44

55
name='CSV Plugin'
6-
pluginVersion=2.4.0
6+
pluginVersion=2.5.0
77
javaVersion=1.8
88
javaTargetVersion=1.8
99
downloadIntellijSources=false

src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvStorageHelper.java

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

3+
import com.intellij.openapi.project.Project;
34
import com.intellij.openapi.util.Key;
4-
import com.intellij.psi.PsiFile;
5+
import com.intellij.openapi.vfs.VirtualFile;
56
import com.intellij.util.PathUtil;
6-
import org.jetbrains.annotations.NotNull;
77

88
import java.util.regex.Pattern;
99

@@ -12,13 +12,16 @@ public final class CsvStorageHelper {
1212

1313
public static final Key<String> RELATIVE_FILE_URL = Key.create("CSV_PLUGIN_RELATIVE_URL");
1414

15-
public static String getRelativeFileUrl(@NotNull PsiFile psiFile) {
16-
String url = psiFile.getUserData(RELATIVE_FILE_URL);
15+
public static String getRelativeFileUrl(Project project, VirtualFile virtualFile) {
16+
if (project == null || virtualFile == null) {
17+
return null;
18+
}
19+
String url = virtualFile.getUserData(RELATIVE_FILE_URL);
1720
if (url == null) {
18-
String projectDir = PathUtil.getLocalPath(psiFile.getProject().getBasePath());
19-
url = PathUtil.getLocalPath(psiFile.getOriginalFile().getVirtualFile().getPath())
21+
String projectDir = PathUtil.getLocalPath(project.getBasePath());
22+
url = PathUtil.getLocalPath(virtualFile.getPath())
2023
.replaceFirst("^" + Pattern.quote(projectDir), "");
21-
psiFile.putUserData(RELATIVE_FILE_URL, url);
24+
virtualFile.putUserData(RELATIVE_FILE_URL, url);
2225
}
2326
return url;
2427
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/actions/CsvChangeSeparatorAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public boolean isSelected(@NotNull AnActionEvent anActionEvent) {
2828
return false;
2929
}
3030
CsvFileAttributes csvFileAttributes = ServiceManager.getService(psiFile.getProject(), CsvFileAttributes.class);
31-
return csvFileAttributes.getFileSeparator(psiFile) != null && CsvCodeStyleSettings.getCurrentSeparator(psiFile).equals(mySeparator);
31+
return csvFileAttributes.getFileSeparator(psiFile) != null && CsvCodeStyleSettings.getCurrentSeparator(anActionEvent.getProject(), psiFile).equals(mySeparator);
3232
}
3333

3434
@Override

src/main/java/net/seesharpsoft/intellij/plugins/csv/actions/CsvChangeSeparatorActionGroup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ public void update(AnActionEvent anActionEvent) {
3434

3535
if (psiFile != null) {
3636
anActionEvent.getPresentation()
37-
.setText(String.format("CSV Value Separator: %s", CsvCodeStyleSettings.getSeparatorDisplayText(CsvCodeStyleSettings.getCurrentSeparator(psiFile))));
37+
.setText(String.format("CSV Value Separator: %s",
38+
CsvCodeStyleSettings.getSeparatorDisplayText(CsvCodeStyleSettings.getCurrentSeparator(anActionEvent.getProject(), psiFile)))
39+
);
3840
}
3941
}
4042

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

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.intellij.openapi.components.PersistentStateComponent;
44
import com.intellij.openapi.components.State;
55
import com.intellij.openapi.components.Storage;
6+
import com.intellij.openapi.project.Project;
7+
import com.intellij.openapi.vfs.VirtualFile;
68
import com.intellij.psi.PsiFile;
79
import com.intellij.util.xmlb.XmlSerializerUtil;
810
import net.seesharpsoft.intellij.plugins.csv.CsvStorageHelper;
@@ -37,27 +39,45 @@ public void loadState(@NotNull CsvFileAttributes state) {
3739
}
3840

3941
protected String generateMapKey(@NotNull PsiFile psiFile) {
40-
return CsvStorageHelper.getRelativeFileUrl(psiFile);
42+
return generateMapKey(psiFile.getProject(), psiFile.getOriginalFile().getVirtualFile());
43+
}
44+
45+
protected String generateMapKey(@NotNull Project project, @NotNull VirtualFile virtualFile) {
46+
return CsvStorageHelper.getRelativeFileUrl(project, virtualFile);
4147
}
4248

4349
public void setFileSeparator(@NotNull PsiFile psiFile, @NotNull String separator) {
44-
Attribute state = attributeMap.get(generateMapKey(psiFile));
50+
String key = generateMapKey(psiFile);
51+
if (key == null) {
52+
return;
53+
}
54+
Attribute state = attributeMap.get(key);
4555
if (state == null) {
4656
state = new Attribute();
47-
attributeMap.put(generateMapKey(psiFile), state);
57+
attributeMap.put(key, state);
4858
}
4959
state.separator = separator;
5060
}
5161

5262
public void removeFileSeparator(@NotNull PsiFile psiFile) {
53-
attributeMap.remove(generateMapKey(psiFile));
63+
String key = generateMapKey(psiFile);
64+
if (key != null) {
65+
attributeMap.remove(key);
66+
}
5467
}
5568

56-
public String getFileSeparator(@NotNull PsiFile psiFile) {
57-
Attribute state = attributeMap.get(generateMapKey(psiFile));
58-
if (state != null) {
59-
return state.separator;
69+
public String getFileSeparator(@NotNull Project project, @NotNull VirtualFile virtualFile) {
70+
String key = generateMapKey(project, virtualFile);
71+
if (key != null) {
72+
Attribute state = attributeMap.get(key);
73+
if (state != null) {
74+
return state.separator;
75+
}
6076
}
6177
return null;
6278
}
79+
80+
public String getFileSeparator(@NotNull PsiFile psiFile) {
81+
return getFileSeparator(psiFile.getProject(), psiFile.getOriginalFile().getVirtualFile());
82+
}
6383
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/CsvAnnotator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void annotate(@NotNull final PsiElement element, @NotNull final Annotatio
3939
return;
4040
}
4141

42-
CsvColumnInfo<PsiElement> columnInfo = csvFile.getMyColumnInfoMap().getColumnInfo(element);
42+
CsvColumnInfo<PsiElement> columnInfo = csvFile.getColumnInfoMap().getColumnInfo(element);
4343

4444
if (columnInfo != null) {
4545
PsiElement headerElement = columnInfo.getHeaderElement();
@@ -82,7 +82,7 @@ protected boolean handleSeparatorElement(@NotNull PsiElement element, @NotNull A
8282
if (elementType == CsvTypes.COMMA) {
8383
TextAttributes textAttributes = holder.getCurrentAnnotationSession().getUserData(TAB_SEPARATOR_HIGHLIGHT_COLOR_KEY);
8484
if (!Boolean.TRUE.equals(holder.getCurrentAnnotationSession().getUserData(TAB_SEPARATOR_HIGHLIGHT_COLOR_DETERMINED_KEY))) {
85-
String separator = CsvCodeStyleSettings.getCurrentSeparator(csvFile.getProject(), csvFile.getLanguage());
85+
String separator = CsvCodeStyleSettings.getCurrentSeparator(csvFile);
8686
if (CsvEditorSettingsExternalizable.getInstance().isHighlightTabSeparator() && separator.equals(CsvCodeStyleSettings.TAB_SEPARATOR)) {
8787
textAttributes = new TextAttributes(null,
8888
CsvEditorSettingsExternalizable.getInstance().getTabHighlightColor(),

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public boolean isEditable() {
101101

102102
public CsvColumnInfoMap<PsiElement> getColumnInfoMap() {
103103
CsvFile csvFile = getCsvFile();
104-
return csvFile == null ? null : csvFile.getMyColumnInfoMap();
104+
return csvFile == null ? null : csvFile.getColumnInfoMap();
105105
}
106106

107107
public boolean hasErrors() {
@@ -289,7 +289,7 @@ public CsvFile getCsvFile() {
289289
this.document = FileDocumentManager.getInstance().getDocument(this.file);
290290
PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
291291
this.psiFile = documentManager.getPsiFile(this.document);
292-
this.currentSeparator = CsvCodeStyleSettings.getCurrentSeparator(this.psiFile);
292+
this.currentSeparator = CsvCodeStyleSettings.getCurrentSeparator(this.getProject(), this.getFile());
293293
}
294294
return this.psiFile instanceof CsvFile ? (CsvFile) psiFile : null;
295295
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ protected void updateUIComponents() {
338338
return;
339339
}
340340

341-
CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getMyColumnInfoMap();
341+
CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getColumnInfoMap();
342342
if (Objects.equals(lastColumnInfoMap, columnInfoMap)) {
343343
return;
344344
}

0 commit comments

Comments
 (0)