From 63f3dd3b9034eb22cd30d7828a3f0edb66491025 Mon Sep 17 00:00:00 2001 From: Alexander Bashkirov Date: Mon, 4 Oct 2021 17:08:32 +0300 Subject: [PATCH] [quickdoc] (IDEA-278104) Moved quick doc syntax highlighting settings into Advanced Settings GitOrigin-RevId: 3d9e5969d0e7602fbf835376092f1fb1aeb0c093 --- .../javadoc/AnnotationDocGenerator.java | 4 +- .../javadoc/JavaDocInfoGenerator.java | 8 ++-- .../javadoc/JavaDocInfoGeneratorFactory.java | 20 ++++++---- .../lang/java/JavaDocumentationProvider.java | 6 ++- .../messages/ApplicationBundle.properties | 6 +++ .../editor/EditorAppearanceConfigurable.kt | 23 +---------- .../resources/messages/IdeBundle.properties | 5 --- .../ex/EditorSettingsExternalizable.java | 39 +------------------ .../src/META-INF/PlatformExtensions.xml | 4 ++ .../documentation/GroovyPresentationUtil.java | 4 +- .../GroovyDocumentationProvider.java | 10 +++-- .../idea/KotlinDocumentationProvider.kt | 10 +++-- .../kotlin/idea/kdoc/KDocRenderer.kt | 13 +++++-- 13 files changed, 59 insertions(+), 93 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/AnnotationDocGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/AnnotationDocGenerator.java index 35a1623ad122..2cec5f84e102 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/AnnotationDocGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/AnnotationDocGenerator.java @@ -9,10 +9,12 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil; +import com.intellij.openapi.options.advanced.AdvancedSettings; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; +import com.intellij.util.MathUtil; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import one.util.streamex.StreamEx; @@ -76,7 +78,7 @@ public final class AnnotationDocGenerator { } private static float getHighlightingSaturation() { - return EditorSettingsExternalizable.getInstance().getDocSyntaxHighlightingSaturation() * 0.01f; + return MathUtil.clamp(AdvancedSettings.getInt("documentation.components.doc.syntax.highlighting.saturation"), 0, 100) * 0.01f; } private static void appendStyledSpan( diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 1b14f9297a40..b931b36aed79 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -23,6 +23,7 @@ import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil; +import com.intellij.openapi.options.advanced.AdvancedSettings; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; @@ -44,10 +45,7 @@ import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.javadoc.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.*; -import com.intellij.util.ArrayUtil; -import com.intellij.util.ArrayUtilRt; -import com.intellij.util.IncorrectOperationException; -import com.intellij.util.ObjectUtils; +import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import kotlin.text.StringsKt; import org.jdom.Element; @@ -163,7 +161,7 @@ public class JavaDocInfoGenerator { } public float getHighlightingSaturation() { - return EditorSettingsExternalizable.getInstance().getDocSyntaxHighlightingSaturation() * 0.01f; + return MathUtil.clamp(AdvancedSettings.getInt("documentation.components.doc.syntax.highlighting.saturation"), 0, 100) * 0.01f; } public @NotNull JavaDocHighlightingManager getHighlightingManager() { diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorFactory.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorFactory.java index e868f6ed95ee..4acbb2ccbe9e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorFactory.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorFactory.java @@ -2,8 +2,8 @@ package com.intellij.codeInsight.javadoc; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.diagnostic.Checks; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; +import com.intellij.openapi.options.advanced.AdvancedSettings; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; @@ -17,14 +17,17 @@ public class JavaDocInfoGeneratorFactory { } protected JavaDocInfoGenerator createImpl(@NotNull Project project, @Nullable PsiElement element) { + EditorSettingsExternalizable.getInstance(); + EditorSettingsExternalizable.getInstance(); + EditorSettingsExternalizable.getInstance(); return new JavaDocInfoGenerator( project, element, JavaDocHighlightingManagerImpl.getInstance(), false, - EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingEnabled(), - EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingOfInlineCodeBlocksEnabled(), - EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingOfLinksEnabled()); + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting"), + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting.of.inline.code.blocks"), + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting.of.links")); } @NotNull @@ -42,9 +45,12 @@ public class JavaDocInfoGeneratorFactory { private @Nullable PsiElement myElement; private @NotNull JavaDocHighlightingManager myManager = new JavaDocHighlightingManagerImpl(); private boolean myIsRendered = false; - private boolean myDoHighlighting = EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingEnabled(); - private boolean myDoHighlightBlocks = EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingOfInlineCodeBlocksEnabled(); - private boolean myDoHighlightLinks = EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingOfLinksEnabled(); + private boolean myDoHighlighting = + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting"); + private boolean myDoHighlightBlocks = + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting.of.inline.code.blocks"); + private boolean myDoHighlightLinks = + AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting.of.inline.code.blocks"); private JavaDocInfoGeneratorBuilder(@NotNull Project project) { myProject = project; diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 5e2262322602..c99ad761eaea 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -24,6 +24,7 @@ import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil; import com.intellij.openapi.module.Module; +import com.intellij.openapi.options.advanced.AdvancedSettings; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; @@ -46,6 +47,7 @@ import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocTag; import com.intellij.psi.util.*; +import com.intellij.util.MathUtil; import com.intellij.util.SmartList; import com.intellij.util.Url; import com.intellij.util.containers.ContainerUtil; @@ -103,11 +105,11 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext } protected static boolean doSyntaxHighlighting() { - return EditorSettingsExternalizable.getInstance().isDocSyntaxHighlightingEnabled(); + return AdvancedSettings.getBoolean("documentation.components.enable.doc.syntax.highlighting"); } protected static float getHighlightingSaturation() { - return EditorSettingsExternalizable.getInstance().getDocSyntaxHighlightingSaturation() * 0.01f; + return MathUtil.clamp(AdvancedSettings.getInt("documentation.components.doc.syntax.highlighting.saturation"), 0, 100) * 0.01f; } @Override diff --git a/platform/ide-core/resources/messages/ApplicationBundle.properties b/platform/ide-core/resources/messages/ApplicationBundle.properties index 89d1370f5eb8..bd4f6bfe6fa9 100644 --- a/platform/ide-core/resources/messages/ApplicationBundle.properties +++ b/platform/ide-core/resources/messages/ApplicationBundle.properties @@ -828,6 +828,11 @@ advanced.setting.editor.open.tabs.in.main.window=Open declaration source called advanced.setting.editor.open.tabs.in.main.window.description=When navigating to a method/class/variable declaration from a tab in the detached window, new tabs will be opened in the main IDE window. Overrides 'Open declaration source in the same tab'. advanced.setting.ide.macos.disable.native.shortcut.symbols=Use words instead of symbols for macOS keyboard shortcuts advanced.setting.ide.macos.disable.native.shortcut.symbols.description=Change shortcut symbols \u238B, \u232B, \u2325, and others to Esc, Backspace, Option, etc +advanced.setting.documentation.components.enable.doc.syntax.highlighting=Enable code highlighting in documentation components +advanced.setting.documentation.components.enable.doc.syntax.highlighting.of.inline.code.blocks=Highlight inline code blocks +advanced.setting.documentation.components.enable.doc.syntax.highlighting.of.links=Highlight links on code elements +advanced.setting.documentation.components.doc.syntax.highlighting.saturation=Highlighting saturation +advanced.setting.documentation.components.doc.syntax.highlighting.saturation.description=Allows reducing saturation of highlighting colors in order to lower distraction from the main code. Here 100 is the normal saturation (bright tones) and 0 is zero saturation (grey tones) group.advanced.settings.other=Other group.advanced.settings.ide=IDE group.advanced.settings.ui=User Interface @@ -837,6 +842,7 @@ group.advanced.settings.editor=Editor group.advanced.settings.editor.tabs=Editor Tabs group.advanced.settings.find=Find/Replace group.advanced.settings.terminal=Terminal +group.advanced.settings.documentation.components=Documentation Components feedback.form.title=Feedback feedback.form.evaluation.prompt=Tell us about your experience feedback.form.prompt=Share Your Feedback diff --git a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.kt b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.kt index 37dfbafad22a..79eb36e4227a 100644 --- a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.kt +++ b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.kt @@ -15,6 +15,7 @@ import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.options.BoundCompositeSearchableConfigurable import com.intellij.openapi.options.Configurable import com.intellij.openapi.options.UnnamedConfigurable +import com.intellij.openapi.options.advanced.AdvancedSettings.Companion.getBoolean import com.intellij.openapi.options.ex.ConfigurableWrapper import com.intellij.openapi.ui.DialogPanel import com.intellij.ui.layout.* @@ -42,9 +43,6 @@ private val myFocusModeCheckBox get() = CheckboxDescriptor private val myCbShowIntentionBulbCheckBox get() = CheckboxDescriptor(ApplicationBundle.message("checkbox.show.intention.bulb"), PropertyBinding(model::isShowIntentionBulb, model::setShowIntentionBulb)) private val myCodeLensCheckBox get() = CheckboxDescriptor(IdeBundle.message("checkbox.show.editor.preview.popup"), uiSettings::showEditorToolTip) private val myRenderedDocCheckBox get() = CheckboxDescriptor(IdeBundle.message("checkbox.show.rendered.doc.comments"), PropertyBinding(model::isDocCommentRenderingEnabled, model::setDocCommentRenderingEnabled)) -private val myDocSyntaxHighlightingCheckBox get() = CheckboxDescriptor(IdeBundle.message("checkbox.enable.doc.syntax.highlighting"), PropertyBinding(model::isDocSyntaxHighlightingEnabled, model::setDocSyntaxHighlightingEnabled)) -private val myDocSyntaxHighlightingOfInlineCode get() = CheckboxDescriptor(IdeBundle.message("checkbox.enable.doc.syntax.highlighting.of.inline.code.blocks"), PropertyBinding(model::isDocSyntaxHighlightingOfInlineCodeBlocksEnabled, model::setDocSyntaxHighlightingOfInlineCodeBlocksEnabled)) -private val myDocSyntaxHighlightingOfLinksCheckBox get() = CheckboxDescriptor(IdeBundle.message("checkbox.enable.doc.syntax.highlighting.of.links"), PropertyBinding(model::isDocSyntaxHighlightingOfLinksEnabled, model::setDocSyntaxHighlightingOfLinksEnabled)) // @formatter:on class EditorAppearanceConfigurable : BoundCompositeSearchableConfigurable( @@ -107,25 +105,6 @@ class EditorAppearanceConfigurable : BoundCompositeSearchableConfigurable it.value = value * 0.01 }, - PropertyBinding(model::getDocSyntaxHighlightingSaturation, model::setDocSyntaxHighlightingSaturation)) - .enableIf(highlighting.selected) - } - } - largeGapAfter() - } for (configurable in configurables) { appendDslConfigurableRow(configurable) diff --git a/platform/platform-api/resources/messages/IdeBundle.properties b/platform/platform-api/resources/messages/IdeBundle.properties index 7333c003b08d..45045b907dc1 100644 --- a/platform/platform-api/resources/messages/IdeBundle.properties +++ b/platform/platform-api/resources/messages/IdeBundle.properties @@ -506,11 +506,6 @@ checkbox.left.toolwindow.layout=Side-by-side layout on the left checkbox.right.toolwindow.layout=Side-by-side layout on the right checkbox.show.editor.preview.popup=Show code lens on scrollbar hover checkbox.show.rendered.doc.comments=Render documentation comments -group.documentation.components=Documentation Components -checkbox.enable.doc.syntax.highlighting=Enable code highlighting in documentation components -checkbox.enable.doc.syntax.highlighting.of.inline.code.blocks=Highlight inline code blocks -checkbox.enable.doc.syntax.highlighting.of.links=Highlight links -spinner.doc.syntax.highlighting.saturation=Highlighting saturation: checkbox.also.in.reader.mode=Also in Reader mode checkbox.smooth.scrolling=Smooth scrolling checkbox.smooth.scrolling.description=When using the mouse wheel/touchpad, the entire interface will scroll smoothly instead of line by line diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java index 18669ec01d62..acd04c5e0c77 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java @@ -10,12 +10,12 @@ import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Checks; import com.intellij.openapi.editor.actions.CaretStopOptions; import com.intellij.openapi.editor.impl.softwrap.SoftWrapAppliancePlaces; +import com.intellij.openapi.options.advanced.AdvancedSettings; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.serviceContainer.NonInjectable; import com.intellij.ui.breadcrumbs.BreadcrumbsProvider; -import com.intellij.util.MathUtil; import com.intellij.util.xmlb.XmlSerializerUtil; import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.ApiStatus; @@ -70,10 +70,6 @@ public class EditorSettingsExternalizable implements PersistentStateComponent + + + +