Skip to content

Commit e9c9d5e

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/dev'
Conflicts: src/main/java/org/overengineer/inlineproblems/settings/SettingsComponent.java
2 parents 8af6e21 + b18265a commit e9c9d5e

File tree

11 files changed

+103
-43
lines changed

11 files changed

+103
-43
lines changed

src/main/java/org/overengineer/inlineproblems/DocumentMarkupModelScanner.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.overengineer.inlineproblems.entities.enums.Listener;
2020
import org.overengineer.inlineproblems.listeners.HighlightProblemListener;
2121
import org.overengineer.inlineproblems.settings.SettingsState;
22-
import org.overengineer.inlineproblems.utils.FileNameUtil;
22+
import org.overengineer.inlineproblems.utils.FileUtil;
2323

2424
import java.util.ArrayList;
2525
import java.util.Arrays;
@@ -92,12 +92,16 @@ public void scanForProblemsManually() {
9292
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
9393
for (var editor : fileEditorManager.getAllEditors()) {
9494

95-
if (editor.getFile() == null || FileNameUtil.ignoreFile(editor.getFile().getName())) {
96-
continue;
97-
}
98-
9995
if (editor instanceof TextEditor) {
10096
var textEditor = (TextEditor) editor;
97+
98+
if (
99+
editor.getFile() == null ||
100+
FileUtil.ignoreFile(editor.getFile().getName(), textEditor.getEditor().getDocument().getLineCount())
101+
) {
102+
continue;
103+
}
104+
101105
problems.addAll(getProblemsInEditor(textEditor));
102106
}
103107
}
@@ -112,7 +116,10 @@ public void scanForProblemsManually() {
112116
* millisecond if the HighlightProblemListener is used.
113117
*/
114118
public void scanForProblemsManuallyInTextEditor(TextEditor textEditor) {
115-
if (textEditor.getFile() == null || FileNameUtil.ignoreFile(textEditor.getFile().getName())) {
119+
if (
120+
textEditor.getFile() == null ||
121+
FileUtil.ignoreFile(textEditor.getFile().getName(), textEditor.getEditor().getDocument().getLineCount())
122+
) {
116123
return;
117124
}
118125

src/main/java/org/overengineer/inlineproblems/ListenerManager.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.overengineer.inlineproblems.listeners.HighlightProblemListener;
1010
import org.overengineer.inlineproblems.listeners.MarkupModelProblemListener;
1111
import org.overengineer.inlineproblems.settings.SettingsState;
12-
import org.overengineer.inlineproblems.utils.FileNameUtil;
12+
import org.overengineer.inlineproblems.utils.FileUtil;
1313

1414

1515
public class ListenerManager {
@@ -40,12 +40,15 @@ public void installMarkupModelListenerOnAllProjects() {
4040
for (var project : manager.getOpenProjects()) {
4141
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
4242
for (var editor : fileEditorManager.getAllEditors()) {
43-
44-
if (editor.getFile() == null || FileNameUtil.ignoreFile(editor.getFile().getName())) {
45-
continue;
46-
}
47-
4843
if (editor instanceof TextEditor) {
44+
var textEditor = (TextEditor) editor;
45+
if (
46+
editor.getFile() == null ||
47+
FileUtil.ignoreFile(editor.getFile().getName(), textEditor.getEditor().getDocument().getLineCount())
48+
) {
49+
continue;
50+
}
51+
4952
MarkupModelProblemListener.setup((TextEditor) editor);
5053
logger.debug("Installing MarkupModelListener");
5154
}

src/main/java/org/overengineer/inlineproblems/listeners/FileEditorListener.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.jetbrains.annotations.NotNull;
77
import org.overengineer.inlineproblems.entities.enums.Listener;
88
import org.overengineer.inlineproblems.settings.SettingsState;
9-
import org.overengineer.inlineproblems.utils.FileNameUtil;
9+
import org.overengineer.inlineproblems.utils.FileUtil;
1010

1111
import java.util.Arrays;
1212

@@ -24,13 +24,15 @@ public void fileOpenedSync(
2424
if (settingsState.getEnabledListener() != Listener.MARKUP_MODEL_LISTENER)
2525
return;
2626

27-
if (FileNameUtil.ignoreFile(file.getName())) {
27+
// Precheck only file name, later we check the line count only
28+
if (FileUtil.ignoreFile(file.getName(), -1)) {
2829
return;
2930
}
3031

3132
Arrays.stream(editors.first)
32-
.filter(e -> e instanceof TextEditor)
33-
.map(e -> (TextEditor)e)
34-
.forEach(MarkupModelProblemListener::setup);
33+
.filter(e -> e instanceof TextEditor)
34+
.map(e -> (TextEditor) e)
35+
.filter(tE -> !FileUtil.ignoreFile(null, tE.getEditor().getDocument().getLineCount()))
36+
.forEach(MarkupModelProblemListener::setup);
3537
}
3638
}

src/main/java/org/overengineer/inlineproblems/listeners/HighlightProblemListener.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.overengineer.inlineproblems.DocumentMarkupModelScanner;
1313
import org.overengineer.inlineproblems.entities.enums.Listener;
1414
import org.overengineer.inlineproblems.settings.SettingsState;
15-
import org.overengineer.inlineproblems.utils.FileNameUtil;
15+
import org.overengineer.inlineproblems.utils.FileUtil;
1616

1717

1818
public class HighlightProblemListener implements HighlightInfoFilter {
@@ -29,7 +29,8 @@ public boolean accept(@NotNull HighlightInfo highlightInfo, @Nullable PsiFile fi
2929
if (file == null || !file.isValid())
3030
return true;
3131

32-
if (FileNameUtil.ignoreFile(file.getName())) {
32+
// Only check file name here, the line count is checked in the scanForProblemsManuallyInTextEditor call
33+
if (FileUtil.ignoreFile(file.getName(), -1)) {
3334
return true;
3435
}
3536

@@ -48,7 +49,7 @@ public void handleAccept(PsiFile file) {
4849
return;
4950

5051
FileEditor editor = FileEditorManager.getInstance(file.getProject()).getSelectedEditor(file.getVirtualFile());
51-
if (editor == null) {
52+
if (editor == null || !(editor instanceof TextEditor)) {
5253
return;
5354
}
5455

src/main/java/org/overengineer/inlineproblems/settings/SettingsComponent.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class SettingsComponent {
6666
private final JFormattedTextField inlayFontSizeDeltaText;
6767
private final JFormattedTextField manualScannerDelay;
6868
private final JFormattedTextField maxProblemsPerLine;
69+
private final JFormattedTextField maxFileLines;
6970
private final JBCheckBox fillProblemLabels = new JBCheckBox(SettingsBundle.message("settings.fillProblemLabels"));
7071
private final JBCheckBox boldProblemLabels = new JBCheckBox(SettingsBundle.message("settings.boldProblemLabels"));
7172
private final JBCheckBox italicProblemLabels = new JBCheckBox(SettingsBundle.message("settings.italicProblemLabels"));
@@ -134,6 +135,9 @@ public SettingsComponent() {
134135
manualScannerDelay = new JFormattedTextField(numberFormatter);
135136
manualScannerDelay.setText(Integer.toString(settingsState.getManualScannerDelay()));
136137

138+
maxFileLines = new JFormattedTextField(numberFormatter);
139+
maxFileLines.setText(Integer.toString(settingsState.getMaxFileLines()));
140+
137141
fillProblemLabels.setSelected(settingsState.isFillProblemLabels());
138142
boldProblemLabels.setSelected(settingsState.isBoldProblemLabels());
139143
italicProblemLabels.setSelected(settingsState.isItalicProblemLabels());
@@ -177,9 +181,11 @@ public SettingsComponent() {
177181
.addLabeledComponent(new JLabel(SettingsBundle.message("settings.problemFilterListLabel")), problemFilterList)
178182
.addTooltip(SettingsBundle.message("settings.problemFilterListTooltip"))
179183
.addLabeledComponent(new JLabel(SettingsBundle.message("settings.fileExtensionBlacklistLabel")), fileExtensionBlacklist)
180-
.addTooltip(SettingsBundle.message("settings.fileExtensionBlaclistTooltip"))
184+
.addTooltip(SettingsBundle.message("settings.fileExtensionBlacklistTooltip"))
181185
.addLabeledComponent(new JBLabel(SettingsBundle.message("settings.maxProblemsPerLineLabel")), maxProblemsPerLine)
182186
.addTooltip(SettingsBundle.message("settings.maxProblemsPerLineTooltip"))
187+
.addLabeledComponent(new JLabel(SettingsBundle.message("settings.maxFileLinesLabel")), maxFileLines)
188+
.addTooltip(SettingsBundle.message("settings.maxFileLinesTooltip"))
183189
.addSeparator()
184190
.addComponent(new JBLabel(SettingsBundle.message("settings.submenu.colors")))
185191
.addComponent(showErrors)
@@ -628,4 +634,17 @@ public int getMaxProblemsPerLine() {
628634
public void setMaxProblemsPerLine(int max) {
629635
maxProblemsPerLine.setText(Integer.toString(Math.max(0, max)));
630636
}
637+
638+
public int getMaxFileLines() {
639+
try {
640+
return Math.max(Integer.parseInt(maxFileLines.getText()), 0);
641+
}
642+
catch (NumberFormatException e) {
643+
return 0;
644+
}
645+
}
646+
647+
public void setMaxFileLines(int lines) {
648+
maxFileLines.setText(Integer.toString(Math.max(0, lines)));
649+
}
631650
}

src/main/java/org/overengineer/inlineproblems/settings/SettingsConfigurable.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public boolean isModified() {
8787

8888
state.getProblemFilterList().equals(settingsComponent.getProblemFilterList()) &&
8989
state.getFileExtensionBlacklist().equals(settingsComponent.getFileExtensionBlacklist()) &&
90+
state.getMaxFileLines() == settingsComponent.getMaxFileLines() &&
9091

9192
state.getAdditionalInfoSeveritiesAsString().equals(settingsComponent.getAdditionalInfoSeverities()) &&
9293
state.getAdditionalWarningSeveritiesAsString().equals(settingsComponent.getAdditionalWarningSeverities()) &&
@@ -104,6 +105,7 @@ public void apply() {
104105
boolean listenerChanged = state.getEnabledListener() != settingsComponent.getEnabledListener();
105106
boolean fileExtensionBlacklistChanged = !Objects.equals(state.getFileExtensionBlacklist(), settingsComponent.getFileExtensionBlacklist());
106107
boolean manualScannerDelayChanged = state.getManualScannerDelay() != settingsComponent.getManualScannerDelay();
108+
boolean maxFileLinesChanged = state.getMaxFileLines() != settingsComponent.getMaxFileLines();
107109

108110
state.setShowErrors(settingsComponent.isShowErrors());
109111
state.setHighlightErrors(settingsComponent.isHighlightErrors());
@@ -150,6 +152,7 @@ public void apply() {
150152
state.setManualScannerDelay(settingsComponent.getManualScannerDelay());
151153
state.setProblemFilterList(settingsComponent.getProblemFilterList());
152154
state.setFileExtensionBlacklist(settingsComponent.getFileExtensionBlacklist());
155+
state.setMaxFileLines(settingsComponent.getMaxFileLines());
153156

154157
state.setAdditionalInfoSeverities(settingsComponent.getAdditionalInfoSeveritiesList());
155158
state.setAdditionalWarningSeverities(settingsComponent.getAdditionalWarningSeveritiesList());
@@ -162,8 +165,8 @@ public void apply() {
162165

163166
listenerManager.resetAndRescan();
164167

165-
// When the blacklist changes we need to re-apply all MarkupModelProblemListeners
166-
if (fileExtensionBlacklistChanged && state.getEnabledListener() == Listener.MARKUP_MODEL_LISTENER) {
168+
// When the blacklist or maxFileLines changes we need to re-apply all MarkupModelProblemListeners
169+
if ((fileExtensionBlacklistChanged || maxFileLinesChanged) && state.getEnabledListener() == Listener.MARKUP_MODEL_LISTENER) {
167170
listenerManager.resetMarkupModelProblemListeners();
168171
}
169172

src/main/java/org/overengineer/inlineproblems/settings/SettingsState.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public class SettingsState implements PersistentStateComponent<SettingsState> {
9797
private int enabledListener = Listener.MARKUP_MODEL_LISTENER;
9898
private String problemFilterList = "todo;fixme;open in browser";
9999
private String fileExtensionBlacklist = "";
100+
private int maxFileLines = 0;
100101

101102
private List<Integer> additionalErrorSeverities = new ArrayList<>();
102103
private List<Integer> additionalWarningSeverities = new ArrayList<>();

src/main/java/org/overengineer/inlineproblems/utils/FileNameUtil.java

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.overengineer.inlineproblems.utils;
2+
3+
import org.overengineer.inlineproblems.settings.SettingsState;
4+
5+
public class FileUtil {
6+
7+
/**
8+
* Returns true if the file should be ignored, current checks involve the file name and the line count
9+
* @param fileName can be null to ignore
10+
* @param lineCount can be -1 to ignore
11+
* @return true if the file should be ignored, false otherwise
12+
*/
13+
public static boolean ignoreFile(String fileName, int lineCount) {
14+
boolean ignore = false;
15+
var settings = SettingsState.getInstance();
16+
17+
if (fileName != null) {
18+
for (var e : settings.getFileExtensionBlacklist().split(";")) {
19+
if (e.isBlank() || e.isEmpty() || e.equals(";")) continue;
20+
if (fileName.endsWith(e)) {
21+
ignore = true;
22+
break;
23+
}
24+
}
25+
}
26+
27+
if (lineCount >= 0) {
28+
var maxFileLines = settings.getMaxFileLines();
29+
30+
if (maxFileLines >= 0 && lineCount >= maxFileLines) {
31+
ignore = true;
32+
}
33+
}
34+
35+
return ignore;
36+
}
37+
}

src/main/resources/messages/SettingsBundle_en.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ settings.inlaySizeDeltaTooltip=Used to have smaller font size for the inlays, sh
2929
settings.problemFilterListLabel=Problem filter list
3030
settings.problemFilterListTooltip=Semicolon separated list of problem text beginnings that will not be handled
3131
settings.fileExtensionBlacklistLabel=File extension blacklist
32-
settings.fileExtensionBlaclistTooltip=Semicolon separated list of file extensions to ignore (like ".java;.md")
32+
settings.fileExtensionBlacklistTooltip=Semicolon separated list of file extensions to ignore (like ".java;.md")
33+
settings.maxFileLinesLabel=Maximum file lines
34+
settings.maxFileLinesTooltip=Skip files with more lines than this value (0 = unlimited)
3335
settings.submenu.colors=Colors
3436
settings.errorTextColor=Error text color:
3537
settings.errorLabelBorderColor=Error label border color:

0 commit comments

Comments
 (0)