mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-1477: extension point for External Merge tool provided by plugin, see RIDER-33411 UnityYAMLMerge support
(cherry picked from commit 3c8551d52b365fecfac886e2d031ec5b038fd402) GitOrigin-RevId: d005b1f0a582d6dd70c6903557a3b8ce2b11c0d4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
184af1e4f5
commit
29b1e3ef39
+14
@@ -0,0 +1,14 @@
|
||||
package com.intellij.diff.merge.external;
|
||||
|
||||
import com.intellij.diff.merge.MergeRequest;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface AutomaticExternalMergeTool {
|
||||
ExtensionPointName<AutomaticExternalMergeTool> EP_NAME = ExtensionPointName.create("com.intellij.diff.merge.external.AutomaticExternalMergeTool");
|
||||
|
||||
boolean canShow(@NotNull MergeRequest request);
|
||||
void show(@Nullable Project project, @NotNull MergeRequest request);
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.intellij.diff.editor.ChainDiffVirtualFile;
|
||||
import com.intellij.diff.impl.DiffRequestPanelImpl;
|
||||
import com.intellij.diff.impl.DiffWindow;
|
||||
import com.intellij.diff.merge.*;
|
||||
import com.intellij.diff.merge.external.AutomaticExternalMergeTool;
|
||||
import com.intellij.diff.requests.DiffRequest;
|
||||
import com.intellij.diff.tools.binary.BinaryDiffTool;
|
||||
import com.intellij.diff.tools.dir.DirDiffTool;
|
||||
@@ -124,6 +125,13 @@ public class DiffManagerImpl extends DiffManagerEx {
|
||||
@Override
|
||||
@CalledInAwt
|
||||
public void showMerge(@Nullable Project project, @NotNull MergeRequest request) {
|
||||
// plugin may provide a better tool for this MergeRequest
|
||||
AutomaticExternalMergeTool tool = AutomaticExternalMergeTool.EP_NAME.findFirstSafe(mergeTool -> mergeTool.canShow(request));
|
||||
if (tool!=null) {
|
||||
tool.show(project, request);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ExternalMergeTool.isDefault()) {
|
||||
ExternalMergeTool.show(project, request);
|
||||
return;
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
<extensionPoint name="diff.DiffExtension" interface="com.intellij.diff.DiffExtension" dynamic="true"/>
|
||||
<extensionPoint name="diff.lang.DiffIgnoredRangeProvider" interface="com.intellij.diff.lang.DiffIgnoredRangeProvider" dynamic="true"/>
|
||||
<extensionPoint name="diff.impl.DiffToolSubstitutor" interface="com.intellij.diff.impl.DiffToolSubstitutor" dynamic="true"/>
|
||||
<extensionPoint name="diff.tools.external.AutomaticExternalMergeTool" interface="com.intellij.diff.merge.external.AutomaticExternalMergeTool" dynamic="true"/>
|
||||
<extensionPoint name="testStatusListener" interface="com.intellij.execution.testframework.TestStatusListener"/>
|
||||
|
||||
<extensionPoint name="diff.actions.ShowDiffAction.ExtensionProvider"
|
||||
|
||||
Reference in New Issue
Block a user