IJ-CR-146673 LLM-11798 hide EP_NAME and rename API: title -> name

(cherry picked from commit 96bf9be0fcb4fa45eb91aba1433de5a7b52a6de3)

GitOrigin-RevId: c424bc0ab35203726670eaaa97f3cbaa31878928
This commit is contained in:
Dmitry Krasilschikov
2024-10-29 17:07:42 +02:00
committed by intellij-monorepo-bot
parent 2e659ee2c1
commit 9fe2a57216
4 changed files with 20 additions and 17 deletions

View File

@@ -7,12 +7,12 @@ import com.intellij.openapi.vcs.changes.LocalChangeList.getAllDefaultNames
import org.jetbrains.annotations.ApiStatus
import java.awt.Component
interface ShelveTitleProvider {
interface ShelveNameProvider {
/**
* Create a custom title for shelved changes
* Create a custom name for shelved changes
*/
suspend fun suggestTitle(project: Project, patch: ShelveTitlePatch): String?
suspend fun generateName(project: Project, patch: ShelveNamePatch): String?
/**
* Show got it tooltip popup if applicable
@@ -21,16 +21,21 @@ interface ShelveTitleProvider {
fun showGotItPopup(project: Project, component: Component): Boolean
companion object {
val EP_NAME: ExtensionPointName<ShelveTitleProvider> = ExtensionPointName<ShelveTitleProvider>("com.intellij.vcs.shelve.name")
private val EP_NAME: ExtensionPointName<ShelveNameProvider> = ExtensionPointName<ShelveNameProvider>("com.intellij.vcs.shelve.name")
@JvmStatic
fun showGotItTooltip(project: Project, component: Component) {
EP_NAME.extensionList.any { it.showGotItPopup(project, component) }
}
@JvmStatic
suspend fun generateShelveName(project: Project, patch: ShelveNamePatch): String? {
return EP_NAME.getIterable().firstNotNullOfOrNull { it?.generateName(project, patch) }
}
@JvmStatic
fun hasDefaultName(name: String): Boolean = getAllDefaultNames().contains(name)
}
}
data class ShelveTitlePatch(val patchText: String, val fileNumber: Int)
data class ShelveNamePatch(val patchText: String, val fileNumber: Int)

View File

@@ -235,7 +235,7 @@
dynamic="false"/>
<extensionPoint name="vcs.shelve.name"
interface="com.intellij.vcs.ShelveTitleProvider"
interface="com.intellij.vcs.ShelveNameProvider"
dynamic="true"/>
<extensionPoint name="vcs.codeVisionLanguageContext" beanClass="com.intellij.lang.LanguageExtensionPoint" dynamic="true">

View File

@@ -57,15 +57,13 @@ import com.intellij.util.ui.UIUtil;
import com.intellij.util.xmlb.annotations.Attribute;
import com.intellij.util.xmlb.annotations.OptionTag;
import com.intellij.util.xmlb.annotations.XCollection;
import com.intellij.vcs.ShelveTitlePatch;
import com.intellij.vcs.ShelveTitleProvider;
import com.intellij.vcs.ShelveNamePatch;
import com.intellij.vcs.ShelveNameProvider;
import com.intellij.vcs.VcsActivity;
import com.intellij.vcsUtil.FilesProgress;
import com.intellij.vcsUtil.VcsImplUtil;
import com.intellij.vcsUtil.VcsUtil;
import io.opentelemetry.api.trace.Tracer;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlinx.coroutines.CoroutineScope;
import org.jdom.Element;
import org.jdom.Parent;
@@ -401,8 +399,8 @@ public final class ShelveChangesManager implements PersistentStateComponent<Elem
changeList.markToDelete(markToBeDeleted);
if (Registry.is("llm.vcs.shelve.title.generation")) {
if (ShelveTitleProvider.hasDefaultName(commitMessage)) {
ShelveChangesNameSuggester.INSTANCE.suggestBetterName(myProject, new ShelveTitlePatch(Files.readString(patchFile), patches.size()),
if (ShelveNameProvider.hasDefaultName(commitMessage)) {
ShelveChangesNameSuggester.INSTANCE.suggestBetterName(myProject, new ShelveNamePatch(Files.readString(patchFile), patches.size()),
name -> renameChangeList(changeList, name));
}
}
@@ -852,7 +850,7 @@ public final class ShelveChangesManager implements PersistentStateComponent<Elem
public void showGotItTooltip(@NotNull Project project, @Nullable Component component) {
if (component != null) {
ShelveTitleProvider.showGotItTooltip(project, component);
ShelveNameProvider.showGotItTooltip(project, component);
}
}

View File

@@ -2,15 +2,15 @@
package com.intellij.openapi.vcs.changes.shelf
import com.intellij.openapi.project.Project
import com.intellij.vcs.ShelveTitlePatch
import com.intellij.vcs.ShelveTitleProvider
import com.intellij.vcs.ShelveNamePatch
import com.intellij.vcs.ShelveNameProvider
import kotlinx.coroutines.launch
import java.util.function.Consumer
object ShelveChangesNameSuggester {
fun suggestBetterName(project: Project, patch: ShelveTitlePatch, rename: Consumer<String>) {
fun suggestBetterName(project: Project, patch: ShelveNamePatch, rename: Consumer<String>) {
ShelveChangesManager.getInstance(project).coroutineScope.launch {
rename.accept(ShelveTitleProvider.EP_NAME.getIterable().firstNotNullOf { it?.suggestTitle(project, patch) })
ShelveNameProvider.generateShelveName(project, patch)?.let { rename.accept(it) }
}
}
}