diff --git a/CHANGELOG.md b/CHANGELOG.md index 3836989..b57f36f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ ## [Unreleased] +## [0.5.10] +### Fixed +- Fixed max lines feature 0-ignore logic (problems not appearing) +- Fixed and improved the problem reset and refresh after using actions (keyboard shortcuts) to enable/disable severity levels or the whole plugin functionality + ## [0.5.9] ### Changed - Added a max lines feature to exclude big files diff --git a/gradle.properties b/gradle.properties index 55c18a7..e4188dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ pluginGroup = org.OverEngineer pluginName = InlineProblems pluginRepositoryUrl = https://github.com/OverEngineer/InlineProblems # SemVer format -> https://semver.org -pluginVersion = 0.5.9 +pluginVersion = 0.5.10 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 212.5 @@ -10,7 +10,9 @@ pluginUntilBuild = # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension platformType = IC +#platformType = RD platformVersion = 2021.2.4 +#platformVersion = 2025.2.3 # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 diff --git a/src/main/java/org/overengineer/inlineproblems/DocumentMarkupModelScanner.java b/src/main/java/org/overengineer/inlineproblems/DocumentMarkupModelScanner.java index 36bf494..4289373 100644 --- a/src/main/java/org/overengineer/inlineproblems/DocumentMarkupModelScanner.java +++ b/src/main/java/org/overengineer/inlineproblems/DocumentMarkupModelScanner.java @@ -80,23 +80,25 @@ public void dispose() { } public void scanForProblemsManually() { + if (!settingsState.isEnableInlineProblem()) { + return; + } + ProjectManager projectManager = ProjectManager.getInstanceIfCreated(); if (projectManager != null) { List problems = new ArrayList<>(); - if (settingsState.isEnableInlineProblem()) - for (var project : projectManager.getOpenProjects()) { - if (!project.isInitialized() || project.isDisposed()) - continue; + for (var project : projectManager.getOpenProjects()) { + if (!project.isInitialized() || project.isDisposed()) + continue; - FileEditorManager fileEditorManager = FileEditorManager.getInstance(project); - for (var editor : fileEditorManager.getAllEditors()) { + FileEditorManager fileEditorManager = FileEditorManager.getInstance(project); + for (var editor : fileEditorManager.getAllEditors()) { if (editor instanceof TextEditor) { var textEditor = (TextEditor) editor; - if ( - editor.getFile() == null || + if (editor.getFile() == null || FileUtil.ignoreFile(editor.getFile().getName(), textEditor.getEditor().getDocument().getLineCount()) ) { continue; @@ -105,9 +107,8 @@ public void scanForProblemsManually() { problems.addAll(getProblemsInEditor(textEditor)); } } + problemManager.updateFromNewActiveProblems(problems); } - - problemManager.updateFromNewActiveProblems(problems); } } diff --git a/src/main/java/org/overengineer/inlineproblems/InlineDrawer.java b/src/main/java/org/overengineer/inlineproblems/InlineDrawer.java index b064f36..a504bb2 100644 --- a/src/main/java/org/overengineer/inlineproblems/InlineDrawer.java +++ b/src/main/java/org/overengineer/inlineproblems/InlineDrawer.java @@ -9,7 +9,6 @@ import org.overengineer.inlineproblems.settings.SettingsState; import org.overengineer.inlineproblems.utils.SeverityUtil; -import javax.annotation.Nullable; import java.awt.Font; import java.awt.Canvas; import java.util.List; @@ -139,7 +138,7 @@ public void drawLineHighlighterAndGutterIcon(List problemsInLine) * @param problemsInLine the problems in the same line as problem, null if no gutter icons are enabled, keep in mind that * it still contains the problem itself */ - public void undrawErrorLineHighlight(InlineProblem problem, @Nullable List problemsInLine) { + public void undrawErrorLineHighlight(InlineProblem problem, List problemsInLine) { MarkupModel markupModel = problem.getTextEditor().getEditor().getMarkupModel(); Arrays.stream(markupModel.getAllHighlighters()) diff --git a/src/main/java/org/overengineer/inlineproblems/actions/EnableInlineProblemsAction.java b/src/main/java/org/overengineer/inlineproblems/actions/EnableInlineProblemsAction.java index 895ed82..02a6d8a 100644 --- a/src/main/java/org/overengineer/inlineproblems/actions/EnableInlineProblemsAction.java +++ b/src/main/java/org/overengineer/inlineproblems/actions/EnableInlineProblemsAction.java @@ -1,16 +1,13 @@ package org.overengineer.inlineproblems.actions; import com.intellij.notification.NotificationType; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.application.ApplicationManager; import org.jetbrains.annotations.NotNull; -import org.overengineer.inlineproblems.DocumentMarkupModelScanner; import org.overengineer.inlineproblems.Notifier; import org.overengineer.inlineproblems.bundles.SettingsBundle; import org.overengineer.inlineproblems.settings.SettingsState; -public class EnableInlineProblemsAction extends AnAction { +public class EnableInlineProblemsAction extends IPAction { @Override public void actionPerformed(@NotNull AnActionEvent anActionEvent) { @@ -25,6 +22,6 @@ public void actionPerformed(@NotNull AnActionEvent anActionEvent) { ); } settingsState.setEnableInlineProblem(!settingsState.isEnableInlineProblem()); - ApplicationManager.getApplication().invokeAndWait(DocumentMarkupModelScanner.getInstance()::scanForProblemsManually); + resetOrRefreshProblems(settingsState); } } diff --git a/src/main/java/org/overengineer/inlineproblems/actions/IPAction.java b/src/main/java/org/overengineer/inlineproblems/actions/IPAction.java new file mode 100644 index 0000000..ffdc633 --- /dev/null +++ b/src/main/java/org/overengineer/inlineproblems/actions/IPAction.java @@ -0,0 +1,23 @@ +package org.overengineer.inlineproblems.actions; + +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.application.ApplicationManager; +import org.overengineer.inlineproblems.DocumentMarkupModelScanner; +import org.overengineer.inlineproblems.ProblemManager; +import org.overengineer.inlineproblems.settings.SettingsState; + +public abstract class IPAction extends AnAction { + + protected void resetOrRefreshProblems(SettingsState settingsState) { + var app = ApplicationManager.getApplication(); + if (settingsState.isEnableInlineProblem()) { + app.invokeLater(DocumentMarkupModelScanner.getInstance()::scanForProblemsManually); + } + else { + var problemManager = app.getService(ProblemManager.class); + if (problemManager != null) { + problemManager.reset(); + } + } + } +} diff --git a/src/main/java/org/overengineer/inlineproblems/actions/ShowErrorsAction.java b/src/main/java/org/overengineer/inlineproblems/actions/ShowErrorsAction.java index fa4ecde..49179a8 100644 --- a/src/main/java/org/overengineer/inlineproblems/actions/ShowErrorsAction.java +++ b/src/main/java/org/overengineer/inlineproblems/actions/ShowErrorsAction.java @@ -1,14 +1,14 @@ package org.overengineer.inlineproblems.actions; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import org.jetbrains.annotations.NotNull; import org.overengineer.inlineproblems.settings.SettingsState; -public class ShowErrorsAction extends AnAction { +public class ShowErrorsAction extends IPAction { @Override public void actionPerformed(@NotNull AnActionEvent anActionEvent) { SettingsState settingsState = SettingsState.getInstance(); settingsState.setShowErrors(!settingsState.isShowErrors()); + resetOrRefreshProblems(settingsState); } } diff --git a/src/main/java/org/overengineer/inlineproblems/actions/ShowInfosAction.java b/src/main/java/org/overengineer/inlineproblems/actions/ShowInfosAction.java index b7271cb..a909860 100644 --- a/src/main/java/org/overengineer/inlineproblems/actions/ShowInfosAction.java +++ b/src/main/java/org/overengineer/inlineproblems/actions/ShowInfosAction.java @@ -1,14 +1,14 @@ package org.overengineer.inlineproblems.actions; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import org.jetbrains.annotations.NotNull; import org.overengineer.inlineproblems.settings.SettingsState; -public class ShowInfosAction extends AnAction { +public class ShowInfosAction extends IPAction { @Override public void actionPerformed(@NotNull AnActionEvent anActionEvent) { SettingsState settingsState = SettingsState.getInstance(); settingsState.setShowInfos(!settingsState.isShowInfos()); + resetOrRefreshProblems(settingsState); } } diff --git a/src/main/java/org/overengineer/inlineproblems/actions/ShowWarningsAction.java b/src/main/java/org/overengineer/inlineproblems/actions/ShowWarningsAction.java index 41ccf04..002f3db 100644 --- a/src/main/java/org/overengineer/inlineproblems/actions/ShowWarningsAction.java +++ b/src/main/java/org/overengineer/inlineproblems/actions/ShowWarningsAction.java @@ -1,14 +1,14 @@ package org.overengineer.inlineproblems.actions; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import org.jetbrains.annotations.NotNull; import org.overengineer.inlineproblems.settings.SettingsState; -public class ShowWarningsAction extends AnAction { +public class ShowWarningsAction extends IPAction { @Override public void actionPerformed(@NotNull AnActionEvent anActionEvent) { SettingsState settingsState = SettingsState.getInstance(); settingsState.setShowWarnings(!settingsState.isShowWarnings()); + resetOrRefreshProblems(settingsState); } } diff --git a/src/main/java/org/overengineer/inlineproblems/actions/ShowWeakWarningsAction.java b/src/main/java/org/overengineer/inlineproblems/actions/ShowWeakWarningsAction.java index fa0e0ca..5b68221 100644 --- a/src/main/java/org/overengineer/inlineproblems/actions/ShowWeakWarningsAction.java +++ b/src/main/java/org/overengineer/inlineproblems/actions/ShowWeakWarningsAction.java @@ -1,14 +1,14 @@ package org.overengineer.inlineproblems.actions; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import org.jetbrains.annotations.NotNull; import org.overengineer.inlineproblems.settings.SettingsState; -public class ShowWeakWarningsAction extends AnAction { +public class ShowWeakWarningsAction extends IPAction { @Override public void actionPerformed(@NotNull AnActionEvent anActionEvent) { SettingsState settingsState = SettingsState.getInstance(); settingsState.setShowWeakWarnings(!settingsState.isShowWeakWarnings()); + resetOrRefreshProblems(settingsState); } } diff --git a/src/main/java/org/overengineer/inlineproblems/listeners/HighlightProblemListener.java b/src/main/java/org/overengineer/inlineproblems/listeners/HighlightProblemListener.java index 307c0e4..267f3c3 100644 --- a/src/main/java/org/overengineer/inlineproblems/listeners/HighlightProblemListener.java +++ b/src/main/java/org/overengineer/inlineproblems/listeners/HighlightProblemListener.java @@ -23,9 +23,10 @@ public class HighlightProblemListener implements HighlightInfoFilter { @Override public boolean accept(@NotNull HighlightInfo highlightInfo, @Nullable PsiFile file) { + if (settingsState.isEnableInlineProblem()) + return true; if (settingsState.getEnabledListener() != Listener.HIGHLIGHT_PROBLEMS_LISTENER) return true; - if (file == null || !file.isValid()) return true; diff --git a/src/main/java/org/overengineer/inlineproblems/utils/FileUtil.java b/src/main/java/org/overengineer/inlineproblems/utils/FileUtil.java index d112476..dc26c37 100644 --- a/src/main/java/org/overengineer/inlineproblems/utils/FileUtil.java +++ b/src/main/java/org/overengineer/inlineproblems/utils/FileUtil.java @@ -27,7 +27,8 @@ public static boolean ignoreFile(String fileName, int lineCount) { if (lineCount >= 0) { var maxFileLines = settings.getMaxFileLines(); - if (maxFileLines >= 0 && lineCount >= maxFileLines) { + // maxFileLines == 0 => line count is ignored + if (maxFileLines > 0 && lineCount >= maxFileLines) { ignore = true; } }