mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
InlayHints: make possible to enable/disable parameter hints by language
GitOrigin-RevId: cf70ebde957855034e1f19b78fc952c0a2f0af31
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a06b7f402b
commit
98b8ec8386
+13
@@ -44,6 +44,7 @@ class ParameterNameHintsSettings : PersistentStateComponent<Element> {
|
||||
private val removedPatterns = hashMapOf<String, Set<String>>()
|
||||
private val addedPatterns = hashMapOf<String, Set<String>>()
|
||||
private val options = hashMapOf<String, Boolean>()
|
||||
private val disabledLanguages = hashSetOf<String>()
|
||||
|
||||
fun addIgnorePattern(language: Language, pattern: String) {
|
||||
val patternsBefore = getAddedPatterns(language)
|
||||
@@ -95,6 +96,18 @@ class ParameterNameHintsSettings : PersistentStateComponent<Element> {
|
||||
return root
|
||||
}
|
||||
|
||||
fun setIsEnabledForLanguage(enabled: Boolean, language: Language) {
|
||||
if (!enabled) {
|
||||
disabledLanguages.add(language.id)
|
||||
} else {
|
||||
disabledLanguages.remove(language.id)
|
||||
}
|
||||
}
|
||||
|
||||
fun isEnabledForLanguage(language: Language): Boolean {
|
||||
return language.id !in disabledLanguages
|
||||
}
|
||||
|
||||
override fun loadState(state: Element) {
|
||||
addedPatterns.clear()
|
||||
removedPatterns.clear()
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
package com.intellij.codeInsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.filtering.MatcherConstructor
|
||||
import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings
|
||||
import com.intellij.lang.Language
|
||||
import com.intellij.lang.LanguageExtensionPoint
|
||||
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import java.util.*
|
||||
@@ -47,4 +49,17 @@ fun getBaseLanguagesWithProviders(): List<Language> {
|
||||
.map { (first) -> first }
|
||||
.sorted(Comparator.comparing<Language, String> { l -> l.displayName })
|
||||
.collect(Collectors.toList())
|
||||
}
|
||||
|
||||
fun isHintsEnabledForLanguage(language: Language): Boolean {
|
||||
if (!EditorSettingsExternalizable.getInstance().isShowParameterNameHints) return false
|
||||
return ParameterNameHintsSettings.getInstance().isEnabledForLanguage(language)
|
||||
}
|
||||
|
||||
fun setShowAllParameterHints(value: Boolean) {
|
||||
EditorSettingsExternalizable.getInstance().isShowParameterNameHints = value
|
||||
}
|
||||
|
||||
fun setShowParameterHintsForLanguage(value: Boolean, language: Language) {
|
||||
ParameterNameHintsSettings.getInstance().setIsEnabledForLanguage(value, language)
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import com.intellij.diff.util.DiffUtil;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.Inlay;
|
||||
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
|
||||
import com.intellij.openapi.editor.ex.util.EditorScrollingPositionKeeper;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.util.ProgressIndicatorBase;
|
||||
@@ -78,13 +77,13 @@ public class ParameterHintsPass extends EditorBoundHighlightingPass {
|
||||
|
||||
Language language = myFile.getLanguage();
|
||||
InlayParameterHintsProvider provider = InlayParameterHintsExtension.INSTANCE.forLanguage(language);
|
||||
if (provider == null || !provider.canShowHintsWhenDisabled() && !isEnabled() || DiffUtil.isDiffEditor(myEditor)) return;
|
||||
if (provider == null || !provider.canShowHintsWhenDisabled() && !isEnabled(language) || DiffUtil.isDiffEditor(myEditor)) return;
|
||||
|
||||
myTraverser.forEach(element -> process(element, provider));
|
||||
}
|
||||
|
||||
private static boolean isEnabled() {
|
||||
return EditorSettingsExternalizable.getInstance().isShowParameterNameHints();
|
||||
private static boolean isEnabled(Language language) {
|
||||
return HintUtilsKt.isHintsEnabledForLanguage(language);
|
||||
}
|
||||
|
||||
private void process(PsiElement element, InlayParameterHintsProvider provider) {
|
||||
|
||||
+7
-1
@@ -28,6 +28,8 @@ import javax.swing.JComponent
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.SwingUtilities
|
||||
|
||||
// Note: old parameter hints panel is special cased as it rely on global settings, so it doesn't fit to this model,
|
||||
// but logically belongs to this settings
|
||||
internal class SingleLanguageInlayHintsSettingsPanel(
|
||||
val project: Project,
|
||||
val language: Language,
|
||||
@@ -188,7 +190,11 @@ internal class SingleLanguageInlayHintsSettingsPanel(
|
||||
settingsWrapper.apply()
|
||||
}
|
||||
for (providerType in providerTypes) {
|
||||
settings.changeHintTypeStatus(providerType.key, language, providerType.isEnabled())
|
||||
if (providerType.isOldParameterHints) {
|
||||
setShowParameterHintsForLanguage(providerType.isEnabled(), language)
|
||||
} else {
|
||||
settings.changeHintTypeStatus(providerType.key, language, providerType.isEnabled())
|
||||
}
|
||||
}
|
||||
parameterHintsPanel?.saveOptions()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user