diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/compatibility/SpellCheckerSupport.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/compatibility/SpellCheckerSupport.kt new file mode 100644 index 0000000..9d5fc6c --- /dev/null +++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/compatibility/SpellCheckerSupport.kt @@ -0,0 +1,23 @@ +package com.chylex.intellij.inspectionlens.compatibility + +import com.chylex.intellij.inspectionlens.editor.LensSeverity +import com.intellij.lang.annotation.HighlightSeverity +import com.intellij.openapi.diagnostic.logger +import com.intellij.profile.codeInspection.InspectionProfileManager +import com.intellij.spellchecker.SpellCheckerSeveritiesProvider + +object SpellCheckerSupport { + private val log = logger<SpellCheckerSupport>() + + fun load() { + typoSeverity?.let { LensSeverity.registerMapping(it, LensSeverity.TYPO) } + } + + private val typoSeverity: HighlightSeverity? + get() = try { + SpellCheckerSeveritiesProvider.TYPO + } catch (e: NoClassDefFoundError) { + log.warn("Falling back to registered severity search due to ${e.javaClass.simpleName}: ${e.message}") + InspectionProfileManager.getInstance().severityRegistrar.getSeverity("TYPO") + } +} diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/LensSeverity.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/LensSeverity.kt index e452a4f..6b581f3 100644 --- a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/LensSeverity.kt +++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/LensSeverity.kt @@ -1,8 +1,8 @@ package com.chylex.intellij.inspectionlens.editor import com.chylex.intellij.inspectionlens.InspectionLensRefresher +import com.chylex.intellij.inspectionlens.compatibility.SpellCheckerSupport import com.intellij.lang.annotation.HighlightSeverity -import com.intellij.spellchecker.SpellCheckerSeveritiesProvider import com.intellij.ui.ColorUtil import com.intellij.ui.ColorUtil.toAlpha import com.intellij.ui.JBColor @@ -43,9 +43,12 @@ enum class LensSeverity(baseColor: Color, lightThemeDarkening: Int, darkThemeBri HighlightSeverity.WARNING to WARNING, HighlightSeverity.WEAK_WARNING to WEAK_WARNING, HighlightSeverity.GENERIC_SERVER_ERROR_OR_WARNING to SERVER_PROBLEM, - SpellCheckerSeveritiesProvider.TYPO to TYPO, )) + init { + SpellCheckerSupport.load() + } + /** * Registers a mapping from a [HighlightSeverity] to a [LensSeverity], and refreshes all open editors. */