Skip to content

Commit a41e9bc

Browse files
feat: add global run on save option
1 parent 9236689 commit a41e9bc

File tree

4 files changed

+56
-1
lines changed

4 files changed

+56
-1
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.intellij.csharpier;
2+
3+
import com.intellij.openapi.components.PersistentStateComponent;
4+
import com.intellij.openapi.components.State;
5+
import com.intellij.openapi.components.Storage;
6+
import com.intellij.openapi.project.Project;
7+
import com.intellij.util.xmlb.XmlSerializerUtil;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
@State(
11+
name = "com.intellij.csharpier.global",
12+
storages = @Storage(file = "$APP_CONFIG$/CSharpierPlugin.xml")
13+
)
14+
public class CSharpierGlobalSettings implements PersistentStateComponent<CSharpierGlobalSettings> {
15+
16+
@NotNull
17+
static CSharpierGlobalSettings getInstance(@NotNull Project project) {
18+
return project.getService(CSharpierGlobalSettings.class);
19+
}
20+
21+
private boolean runOnSave;
22+
23+
public boolean getRunOnSave() {
24+
return this.runOnSave;
25+
}
26+
27+
public void setRunOnSave(boolean value) {
28+
this.runOnSave = value;
29+
}
30+
31+
@Override
32+
public CSharpierGlobalSettings getState() {
33+
return this;
34+
}
35+
36+
@Override
37+
public void loadState(@NotNull CSharpierGlobalSettings state) {
38+
XmlSerializerUtil.copyBean(state, this);
39+
}
40+
}

Src/CSharpier.Rider/src/main/java/com/intellij/csharpier/CSharpierSettingsComponent.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class CSharpierSettingsComponent implements SearchableConfigurable {
1616

1717
private final Project project;
1818
private JBCheckBox runOnSaveCheckBox = new JBCheckBox("Run on Save");
19+
private JBCheckBox globalRunOnSaveCheckBox = new JBCheckBox("Run on Save (Global)");
1920
private JBCheckBox disableCSharpierServerCheckBox = new JBCheckBox("Disable CSharpier Server");
2021
private JBCheckBox useCustomPath = new JBCheckBox("Override CSharpier Executable");
2122
private JBTextField customPathTextField = new JBTextField();
@@ -68,6 +69,10 @@ private JComponent createSectionHeader(String label) {
6869
.setFormLeftIndent(leftIndent)
6970
.addComponent(this.runOnSaveCheckBox, topInset)
7071
.setFormLeftIndent(0)
72+
.addComponent(createSectionHeader("Global Settings"), 20)
73+
.setFormLeftIndent(leftIndent)
74+
.addComponent(this.globalRunOnSaveCheckBox, topInset)
75+
.setFormLeftIndent(0)
7176
.addComponent(createSectionHeader("Developer Settings"), 20)
7277
.setFormLeftIndent(leftIndent)
7378
.addComponent(this.useCustomPath, topInset)
@@ -87,6 +92,8 @@ public boolean isModified() {
8792
return (
8893
CSharpierSettings.getInstance(this.project).getRunOnSave() !=
8994
this.runOnSaveCheckBox.isSelected() ||
95+
CSharpierGlobalSettings.getInstance(this.project).getRunOnSave() !=
96+
this.globalRunOnSaveCheckBox.isSelected() ||
9097
CSharpierSettings.getInstance(this.project).getCustomPath() !=
9198
this.customPathTextField.getText() ||
9299
CSharpierSettings.getInstance(this.project).getUseCustomPath() !=
@@ -104,6 +111,9 @@ public void apply() {
104111
settings.setCustomPath(this.customPathTextField.getText());
105112
settings.setDisableCSharpierServer(this.disableCSharpierServerCheckBox.isSelected());
106113
settings.setUseCustomPath(this.useCustomPath.isSelected());
114+
115+
var globalSettings = CSharpierGlobalSettings.getInstance(this.project);
116+
globalSettings.setRunOnSave(this.globalRunOnSaveCheckBox.isSelected());
107117
}
108118

109119
@Override
@@ -113,5 +123,8 @@ public void reset() {
113123
this.useCustomPath.setSelected(settings.getUseCustomPath());
114124
this.customPathTextField.setText(settings.getCustomPath());
115125
this.disableCSharpierServerCheckBox.setSelected(settings.getDisableCSharpierServer());
126+
127+
var globalSettings = CSharpierGlobalSettings.getInstance(this.project);
128+
this.globalRunOnSaveCheckBox.setSelected(globalSettings.getRunOnSave());
116129
}
117130
}

Src/CSharpier.Rider/src/main/java/com/intellij/csharpier/ReformatWithCSharpierOnSaveListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public void beforeDocumentSaving(@NotNull Document document) {
2020
}
2121

2222
var cSharpierSettings = CSharpierSettings.getInstance(project);
23-
if (!cSharpierSettings.getRunOnSave()) {
23+
var cSharpierGlobalSettings = CSharpierGlobalSettings.getInstance(project);
24+
if (!(cSharpierSettings.getRunOnSave() || cSharpierGlobalSettings.getRunOnSave())) {
2425
return;
2526
}
2627

Src/CSharpier.Rider/src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<projectService serviceImplementation="com.intellij.csharpier.CSharpierProcessProvider" />
99
<projectService serviceImplementation="com.intellij.csharpier.DotNetProvider" />
1010
<projectService serviceImplementation="com.intellij.csharpier.FormattingService" />
11+
<projectService serviceImplementation="com.intellij.csharpier.CSharpierGlobalSettings" />
1112
<projectService serviceImplementation="com.intellij.csharpier.CSharpierSettings" />
1213
<projectService serviceImplementation="com.intellij.csharpier.InstallerService" />
1314
<notificationGroup id="CSharpier" displayType="STICKY_BALLOON" />

0 commit comments

Comments
 (0)