From d820a6831d5b5409e4d1786927d64f4b79cec5a3 Mon Sep 17 00:00:00 2001 From: Thomas Schouten <hollandpirates@gmail.com> Date: Mon, 27 Jan 2025 19:17:03 +0100 Subject: [PATCH] Fix package update cache --- .../inspections/latex/probablebugs/packages.xml | 2 +- .../packages/LatexPackageUpdateInspection.kt | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/resources/META-INF/extensions/inspections/latex/probablebugs/packages.xml b/resources/META-INF/extensions/inspections/latex/probablebugs/packages.xml index db654fe87..9a011ebcd 100644 --- a/resources/META-INF/extensions/inspections/latex/probablebugs/packages.xml +++ b/resources/META-INF/extensions/inspections/latex/probablebugs/packages.xml @@ -10,7 +10,7 @@ level="WARNING" /> <localInspection language="Latex" implementationClass="nl.hannahsten.texifyidea.inspections.latex.probablebugs.packages.LatexPackageUpdateInspection" groupPath="LaTeX" groupName="Probable bugs" displayName="Package has an update available" - enabledByDefault="true" + enabledByDefault="false" level="WARNING" /> <localInspection language="Latex" implementationClass="nl.hannahsten.texifyidea.inspections.latex.probablebugs.packages.LatexPackageNameDoesNotMatchFileNameInspection" groupPath="LaTeX" groupName="Probable bugs" displayName="Package name does not match file name" diff --git a/src/nl/hannahsten/texifyidea/inspections/latex/probablebugs/packages/LatexPackageUpdateInspection.kt b/src/nl/hannahsten/texifyidea/inspections/latex/probablebugs/packages/LatexPackageUpdateInspection.kt index 10bfc761d..9a5e46c9c 100644 --- a/src/nl/hannahsten/texifyidea/inspections/latex/probablebugs/packages/LatexPackageUpdateInspection.kt +++ b/src/nl/hannahsten/texifyidea/inspections/latex/probablebugs/packages/LatexPackageUpdateInspection.kt @@ -34,7 +34,7 @@ class LatexPackageUpdateInspection : TexifyInspectionBase() { object Cache { /** Map package name to old and new revision number */ - var availablePackageUpdates = mapOf<String, Pair<String?, String?>>() + var availablePackageUpdates: Map<String, Pair<String?, String?>>? = null } override val inspectionGroup = InsightGroup.LATEX @@ -46,9 +46,14 @@ class LatexPackageUpdateInspection : TexifyInspectionBase() { override fun inspectFile(file: PsiFile, manager: InspectionManager, isOntheFly: Boolean): List<ProblemDescriptor> { if (!LatexSdkUtil.isTlmgrAvailable(file.project) || !TexliveSdk.Cache.isAvailable) return emptyList() - if (Cache.availablePackageUpdates.isEmpty()) { + if (Cache.availablePackageUpdates == null) { val tlmgrExecutable = LatexSdkUtil.getExecutableName("tlmgr", file.project) - val result = runCommand(tlmgrExecutable, "update", "--list") ?: return emptyList() + val result = runCommand(tlmgrExecutable, "update", "--list") + // Try to fill the cache only once + if (result == null) { + Cache.availablePackageUpdates = mapOf() + return emptyList() + } Cache.availablePackageUpdates = """update:\s*(?<package>[^ ]+).*local:\s*(?<local>\d+), source:\s*(?<source>\d+)""".toRegex() .findAll(result) .mapNotNull { Pair(it.groups["package"]?.value ?: return@mapNotNull null, Pair(it.groups["local"]?.value, it.groups["source"]?.value)) } @@ -57,10 +62,10 @@ class LatexPackageUpdateInspection : TexifyInspectionBase() { return file.childrenOfType<LatexCommands>() .filter { it.name in CommandMagic.packageInclusionCommands } - .filter { it.requiredParameter(0) in Cache.availablePackageUpdates.keys } + .filter { it.requiredParameter(0) in Cache.availablePackageUpdates!!.keys } .mapNotNull { val packageName = it.requiredParameter(0) ?: return@mapNotNull null - val packageVersions = Cache.availablePackageUpdates[packageName] ?: return@mapNotNull null + val packageVersions = Cache.availablePackageUpdates!![packageName] ?: return@mapNotNull null manager.createProblemDescriptor( it, "Update available for package $packageName",