diff --git a/src/main/java/com/andrewbrookins/idea/wrap/config/WrapSettingsState.kt b/src/main/java/com/andrewbrookins/idea/wrap/config/WrapSettingsState.kt index 4f79c04..8d4bc31 100644 --- a/src/main/java/com/andrewbrookins/idea/wrap/config/WrapSettingsState.kt +++ b/src/main/java/com/andrewbrookins/idea/wrap/config/WrapSettingsState.kt @@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull storages = [Storage("wrap.xml")] ) class WrapSettingsState : PersistentStateComponent { + var doOverrideColumnWidth: Boolean = false var columnWidthOverride: Int = 80 var useMinimumRaggednessAlgorithm: Boolean = false var plaintextFileTypes: String = ".md,.markdown,.adoc,.asciidoc,.txt" diff --git a/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.form b/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.form index 102158b..288dcea 100644 --- a/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.form +++ b/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.form @@ -1,16 +1,16 @@
- + - + - + @@ -19,7 +19,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -58,16 +58,25 @@ - + - + + + + + + + + + + diff --git a/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.java b/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.java index c2b17b2..2335a7a 100644 --- a/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.java +++ b/src/main/java/com/andrewbrookins/idea/wrap/ui/WrapSettingsPanel.java @@ -22,6 +22,7 @@ public class WrapSettingsPanel { private JLabel columnWidthOverrideLabel; private JCheckBox useMinimumRaggednessAlgorithmCheckBox; private JLabel plaintextFileTypesLabel; + private JCheckBox doOverrideColumnWidthCheckBox; public WrapSettingsPanel() { settingsProvider = WrapSettingsState.getInstance(); @@ -32,10 +33,12 @@ public JPanel getPanel() { } public boolean isModified() { + Boolean doOverrideColumn = settingsProvider.getState().getDoOverrideColumnWidth(); Integer columnOverride = Objects.requireNonNull(settingsProvider.getState()).getColumnWidthOverride(); Boolean useMinimumRaggednessAlgorithm = settingsProvider.getState().getUseMinimumRaggednessAlgorithm(); String plaintextFileTypes = settingsProvider.getState().getPlaintextFileTypes(); - return !Objects.equals(columnWidthOverrideField.getText(), String.valueOf(columnOverride)) | + return !Comparing.equal(doOverrideColumnWidthCheckBox.isSelected(), doOverrideColumn) | + !Objects.equals(columnWidthOverrideField.getText(), String.valueOf(columnOverride)) | !Objects.equals(plaintextFileTypesField.getText(), plaintextFileTypes) | !Comparing.equal(useMinimumRaggednessAlgorithmCheckBox.isSelected(), useMinimumRaggednessAlgorithm); } @@ -50,17 +53,20 @@ public void apply() { columnWidth = null; } + settingsProvider.getState().setDoOverrideColumnWidth(doOverrideColumnWidthCheckBox.isSelected()); Objects.requireNonNull(settingsProvider.getState()).setColumnWidthOverride(columnWidth); settingsProvider.getState().setPlaintextFileTypes(plaintextFileTypesField.getText()); settingsProvider.getState().setUseMinimumRaggednessAlgorithm(useMinimumRaggednessAlgorithmCheckBox.isSelected()); } public void reset() { + boolean doOverrideColumn = settingsProvider.getState().getDoOverrideColumnWidth(); Integer columnOverride = Objects.requireNonNull(settingsProvider.getState()).getColumnWidthOverride(); boolean useMinimumRaggednessAlgorithm = settingsProvider.getState().getUseMinimumRaggednessAlgorithm(); String plaintextFileTypes = settingsProvider.getState().getPlaintextFileTypes(); String overrideText = columnOverride == null ? "" : String.valueOf(columnOverride); + doOverrideColumnWidthCheckBox.setSelected(doOverrideColumn); columnWidthOverrideField.setText(overrideText); useMinimumRaggednessAlgorithmCheckBox.setSelected(useMinimumRaggednessAlgorithm); plaintextFileTypesField.setText(plaintextFileTypes); diff --git a/src/main/java/com/andrewbrookins/idea/wrap/utils.kt b/src/main/java/com/andrewbrookins/idea/wrap/utils.kt index 2de801a..5aca7de 100644 --- a/src/main/java/com/andrewbrookins/idea/wrap/utils.kt +++ b/src/main/java/com/andrewbrookins/idea/wrap/utils.kt @@ -26,15 +26,17 @@ fun isPlaintext(dataContext: DataContext?): Boolean { fun getWrapper(project: Project?, editor: Editor, fileIsPlaintext: Boolean): CodeWrapper { + val doOverrideColumnWidth = WrapSettingsState.getInstance().state.doOverrideColumnWidth val columnWidthOverride = WrapSettingsState.getInstance().state.columnWidthOverride val useMinimumRaggednessAlgorithm = WrapSettingsState.getInstance().state.useMinimumRaggednessAlgorithm ?: false + val columnWidth = if (doOverrideColumnWidth) columnWidthOverride else editor.settings.getRightMargin(project) val tabWidth = editor.settings.getTabSize(project) val wrapper: CodeWrapper if (fileIsPlaintext) { wrapper = CodeWrapper( - width = columnWidthOverride, + width = columnWidth, tabWidth = tabWidth, useMinimumRaggedness = useMinimumRaggednessAlgorithm, commentRegex = "(//)?".toRegex(), @@ -43,7 +45,7 @@ fun getWrapper(project: Project?, editor: Editor, fileIsPlaintext: Boolean): Cod } else { wrapper = CodeWrapper( - width = columnWidthOverride, + width = columnWidth, tabWidth = tabWidth, useMinimumRaggedness = useMinimumRaggednessAlgorithm ) @@ -66,4 +68,4 @@ fun shouldWrapLine(textData: TextData, isPlaintext: Boolean): Boolean { *

* Paragraph2. lskaj flskdj flsdkj flsdkjf lsdkj flsdkj flksdj flksdj flksdj flkdsj flsdkj flsdkj * fldksj fldskjf - */ \ No newline at end of file + */