[vcs] IJPL-173922 Share IssueNavigationConfiguration

GitOrigin-RevId: 9a6b4303cc9f224975e24b7381cc634a0a8ed791
This commit is contained in:
Ilia.Shulgin
2025-05-25 16:32:18 +00:00
committed by intellij-monorepo-bot
parent 6fc577294c
commit c191be6a78
18 changed files with 77 additions and 39 deletions
+1
View File
@@ -31,6 +31,7 @@ jvm_library(
"//java/idea-ui:ui",
"//platform/usageView-impl",
"//platform/vcs-api:vcs",
"//platform/vcs-impl/shared",
"//platform/editor-ui-ex:editor-ex",
"//java/execution/impl",
"//platform/diff-api:diff",
+1
View File
@@ -22,6 +22,7 @@
<orderEntry type="module" module-name="intellij.java.ui" />
<orderEntry type="module" module-name="intellij.platform.usageView.impl" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.vcs" />
<orderEntry type="module" module-name="intellij.platform.vcs.impl.shared" />
<orderEntry type="module" module-name="intellij.platform.editor.ex" />
<orderEntry type="module" module-name="intellij.idea.community.customization" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.execution.impl" />
+2
View File
@@ -43,6 +43,7 @@ jvm_library(
"//platform/credential-store-impl:credentialStore-impl",
"//platform/dvcs-impl/shared",
"@lib//:http-client",
"//platform/vcs-impl/shared",
],
runtime_deps = [":collaboration-tools_resources"]
)
@@ -98,6 +99,7 @@ jvm_library(
"@lib//:http-client",
"@lib//:app-cash-turbine-jvm",
"@lib//:assert_j",
"//platform/vcs-impl/shared",
],
runtime_deps = [":collaboration-tools_resources"]
)
@@ -49,5 +49,6 @@
<orderEntry type="library" name="http-client" level="project" />
<orderEntry type="library" scope="TEST" name="app.cash.turbine.jvm" level="project" />
<orderEntry type="library" scope="TEST" name="assertJ" level="project" />
<orderEntry type="module" module-name="intellij.platform.vcs.impl.shared" />
</component>
</module>
@@ -13,8 +13,6 @@
*f:com.intellij.codeInsight.hints.VcsCodeVisionLanguageContext$Companion
- sf:EXTENSION:java.lang.String
- f:getProvidersExtensionPoint():com.intellij.lang.LanguageExtension
*:com.intellij.openapi.vcs.LinkDescriptor
- a:getRange():com.intellij.openapi.util.TextRange
*:com.intellij.openapi.vcs.VcsFileListenerIgnoredFilesProvider
- *sf:Companion:com.intellij.openapi.vcs.VcsFileListenerIgnoredFilesProvider$Companion
- s:isAdditionAllowed(com.intellij.openapi.project.Project,com.intellij.openapi.vcs.FilePath):Z
-29
View File
@@ -268,35 +268,6 @@ f:com.intellij.openapi.vcs.Ignored
- f:getMatchedPattern():java.lang.String
- hashCode():I
a:com.intellij.openapi.vcs.IgnoredCheckResult
c:com.intellij.openapi.vcs.IssueNavigationConfiguration
- com.intellij.openapi.util.SimpleModificationTracker
- com.intellij.openapi.components.PersistentStateComponent
- <init>():V
- s:findIssueLinkMatches(java.lang.CharSequence,com.intellij.openapi.vcs.IssueNavigationLink,java.util.List):V
- findIssueLinks(java.lang.CharSequence):java.util.List
- s:getInstance(com.intellij.openapi.project.Project):com.intellij.openapi.vcs.IssueNavigationConfiguration
- getLinks():java.util.List
- getState():com.intellij.openapi.vcs.IssueNavigationConfiguration
- loadState(com.intellij.openapi.vcs.IssueNavigationConfiguration):V
- s:processTextWithLinks(java.lang.String,java.util.List,java.util.function.Consumer,java.util.function.BiConsumer):V
- setLinks(java.util.List):V
c:com.intellij.openapi.vcs.IssueNavigationConfiguration$LinkMatch
- com.intellij.openapi.vcs.LinkDescriptor
- java.lang.Comparable
- <init>(com.intellij.openapi.util.TextRange,java.lang.String):V
- compareTo(java.lang.Object):I
- getRange():com.intellij.openapi.util.TextRange
- getTargetUrl():java.lang.String
c:com.intellij.openapi.vcs.IssueNavigationLink
- <init>():V
- <init>(java.lang.String,java.lang.String):V
- equals(java.lang.Object):Z
- getIssuePattern():java.util.regex.Pattern
- getIssueRegexp():java.lang.String
- getLinkRegexp():java.lang.String
- hashCode():I
- setIssueRegexp(java.lang.String):V
- setLinkRegexp(java.lang.String):V
f:com.intellij.openapi.vcs.LineHandlerHelper
- <init>():V
- s:splitText(java.lang.String):java.util.List
@@ -12,7 +12,6 @@
<projectService serviceInterface="com.intellij.openapi.vcs.AbstractVcsHelper"
serviceImplementation="com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl"/>
<projectService serviceImplementation="com.intellij.openapi.vcs.IssueNavigationConfiguration"/>
<projectService serviceImplementation="com.intellij.openapi.vcs.contentAnnotation.VcsContentAnnotationSettings"/>
<projectService serviceInterface="com.intellij.openapi.vcs.roots.VcsRootDetector"
serviceImplementation="com.intellij.openapi.vcs.roots.VcsRootDetectorImpl"/>
+1
View File
@@ -24,6 +24,7 @@ jvm_library(
"//platform/platform-impl/rpc",
"//platform/diagnostic",
"@lib//:opentelemetry",
"//platform/platform-impl:ide-impl",
],
runtime_deps = [":shared_resources"]
)
@@ -0,0 +1,2 @@
*:com.intellij.openapi.vcs.LinkDescriptor
- a:getRange():com.intellij.openapi.util.TextRange
+30
View File
@@ -1,3 +1,33 @@
c:com.intellij.openapi.vcs.IssueNavigationConfiguration
- com.intellij.openapi.util.SimpleModificationTracker
- com.intellij.openapi.components.PersistentStateComponent
- <init>():V
- s:findIssueLinkMatches(java.lang.CharSequence,com.intellij.openapi.vcs.IssueNavigationLink,java.util.List):V
- findIssueLinks(java.lang.CharSequence):java.util.List
- s:getInstance(com.intellij.openapi.project.Project):com.intellij.openapi.vcs.IssueNavigationConfiguration
- getLinks():java.util.List
- getState():com.intellij.openapi.vcs.IssueNavigationConfiguration
- loadState(com.intellij.openapi.vcs.IssueNavigationConfiguration):V
- noStateLoaded():V
- s:processTextWithLinks(java.lang.String,java.util.List,java.util.function.Consumer,java.util.function.BiConsumer):V
- setLinks(java.util.List):V
c:com.intellij.openapi.vcs.IssueNavigationConfiguration$LinkMatch
- com.intellij.openapi.vcs.LinkDescriptor
- java.lang.Comparable
- <init>(com.intellij.openapi.util.TextRange,java.lang.String):V
- compareTo(java.lang.Object):I
- getRange():com.intellij.openapi.util.TextRange
- getTargetUrl():java.lang.String
c:com.intellij.openapi.vcs.IssueNavigationLink
- <init>():V
- <init>(java.lang.String,java.lang.String):V
- equals(java.lang.Object):Z
- getIssuePattern():java.util.regex.Pattern
- getIssueRegexp():java.lang.String
- getLinkRegexp():java.lang.String
- hashCode():I
- setIssueRegexp(java.lang.String):V
- setLinkRegexp(java.lang.String):V
com.intellij.platform.vcs.impl.shared.changes.DiffPreviewUpdateProcessor
- a:clear():V
- a:getComponent():javax.swing.JComponent
@@ -45,5 +45,6 @@
<orderEntry type="module" module-name="intellij.platform.ide.rpc" />
<orderEntry type="module" module-name="intellij.platform.diagnostic" />
<orderEntry type="library" name="opentelemetry" level="project" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
</component>
</module>
@@ -1,4 +1,4 @@
<idea-plugin package="com.intellij.platform.vcs.impl.shared">
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<platform.entityTypes implementation="com.intellij.platform.vcs.impl.shared.rhizome.ShelfDiffEntityTypeProvider"/>
<platform.entityTypes implementation="com.intellij.platform.vcs.impl.shared.rhizome.GroupingItemTypeProvider"/>
@@ -6,5 +6,9 @@
<platform.entityTypes implementation="com.intellij.platform.vcs.impl.shared.rhizome.VcsEntityTypeProvider"/>
<registryKey key="vcs.shelves.rhizome.enabled" defaultValue="false" restartRequired="true"
description="New vcs shelves split to frontend and backend using Rhizome and rpc"/>
<projectService serviceImplementation="com.intellij.openapi.vcs.IssueNavigationConfiguration"/>
<projectSettings service="com.intellij.openapi.vcs.IssueNavigationConfiguration"/>
<rdct.remoteSettingProvider implementation="com.intellij.platform.vcs.impl.shared.VcsRemoteSettingsInfoProvider"/>
</extensions>
</idea-plugin>
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.vcs;
@@ -13,6 +13,7 @@ import com.intellij.openapi.util.SimpleModificationTracker;
import com.intellij.openapi.util.TextRange;
import com.intellij.util.io.URLUtil;
import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -25,10 +26,18 @@ import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@State(name = "IssueNavigationConfiguration", storages = @Storage("vcs.xml"))
/**
* Settings state is available both on frontend and backend.
* However, the synchronization direction is only backend -> frontend, which provides only read access on the frontend side.
*
* @see com.intellij.platform.vcs.impl.shared.VcsRemoteSettingsInfoProvider
*/
@State(name = IssueNavigationConfiguration.SETTINGS_KEY, storages = @Storage("vcs.xml"))
public class IssueNavigationConfiguration extends SimpleModificationTracker
implements PersistentStateComponent<IssueNavigationConfiguration> {
@ApiStatus.Internal
public static final String SETTINGS_KEY = "IssueNavigationConfiguration";
private static final Logger LOG = Logger.getInstance(IssueNavigationConfiguration.class);
public static IssueNavigationConfiguration getInstance(Project project) {
@@ -56,6 +65,11 @@ public class IssueNavigationConfiguration extends SimpleModificationTracker
XmlSerializerUtil.copyBean(state, this);
}
@Override
public void noStateLoaded() {
loadState(new IssueNavigationConfiguration());
}
public static class LinkMatch implements LinkDescriptor, Comparable {
private final TextRange myRange;
private final String myTargetUrl;
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.vcs;
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.vcs
import com.intellij.openapi.util.TextRange
@@ -13,4 +13,4 @@ import org.jetbrains.annotations.ApiStatus
@ApiStatus.Experimental
interface LinkDescriptor {
val range: TextRange
}
}
@@ -0,0 +1,11 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.platform.vcs.impl.shared
import com.intellij.ide.settings.RemoteSettingInfo
import com.intellij.ide.settings.RemoteSettingInfoProvider
import com.intellij.openapi.vcs.IssueNavigationConfiguration
internal class VcsRemoteSettingsInfoProvider : RemoteSettingInfoProvider {
override fun getRemoteSettingsInfo(): Map<String, RemoteSettingInfo> =
mapOf(IssueNavigationConfiguration.SETTINGS_KEY to RemoteSettingInfo(RemoteSettingInfo.Direction.OnlyFromBackend))
}
+1
View File
@@ -40,6 +40,7 @@ jvm_library(
"@lib//:fastutil-min",
"//platform/usageView-impl",
"//platform/vcs-api:vcs",
"//platform/vcs-impl/shared",
"//platform/workspace/storage",
"//plugins/kotlin/plugin/k1",
"//plugins/kotlin/code-insight/api",
@@ -40,6 +40,7 @@
<orderEntry type="library" scope="TEST" name="fastutil-min" level="project" />
<orderEntry type="module" module-name="intellij.platform.usageView.impl" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.vcs" />
<orderEntry type="module" module-name="intellij.platform.vcs.impl.shared" />
<orderEntry type="module" module-name="intellij.platform.workspace.storage" scope="TEST" />
<orderEntry type="module" module-name="kotlin.plugin.k1" scope="TEST" />
<orderEntry type="module" module-name="kotlin.code-insight.api" scope="TEST" />