[vcs] IJI-3089 Allow contributing new inspections for the commit message editor through extension points.

GitOrigin-RevId: c9297f895bbc7d7200f250298d29673cd0358e31
This commit is contained in:
Piotr Tomiak
2025-10-07 15:15:37 +00:00
committed by intellij-monorepo-bot
parent 0702d04aaf
commit 49ce77ebcb
3 changed files with 16 additions and 7 deletions
@@ -263,6 +263,10 @@
interface="com.intellij.openapi.vcs.VcsFileListenerIgnoredFilesProvider"
dynamic="true"/>
<extensionPoint name="vcs.commitMessageInspection"
interface="com.intellij.vcs.commit.message.BaseCommitMessageInspection"
dynamic="true"/>
<extensionPoint qualifiedName="com.intellij.vcs.impl.backend.treeNodeConverter"
interface="com.intellij.vcs.shelf.NodeToEntityConverter"
dynamic="true"/>
@@ -134,6 +134,11 @@
<openapi.vcs.history.actions.ShowDiffBeforeWithLocalAction.ExtensionProvider
implementation="com.intellij.openapi.vcs.changes.savedPatches.CompareBeforeWithLocalForSavedPatchesAction"/>
<vcs.commitMessageInspection implementation="com.intellij.vcs.commit.message.SubjectBodySeparationInspection"/>
<vcs.commitMessageInspection implementation="com.intellij.vcs.commit.message.SubjectLimitInspection"/>
<vcs.commitMessageInspection implementation="com.intellij.vcs.commit.message.BodyLimitInspection"/>
<vcs.commitMessageInspection implementation="com.intellij.vcs.commit.message.CommitMessageSpellCheckingInspection"/>
<referenceProviderType key="commentsReferenceProvider"
implementationClass="com.intellij.psi.impl.source.resolve.reference.ArbitraryPlaceUrlReferenceProvider"/>
<psi.symbolReferenceProvider hostLanguage=""
@@ -7,8 +7,10 @@ import com.intellij.codeInspection.ex.*;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.VcsConfiguration;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.messages.Topic;
import com.intellij.util.xmlb.annotations.Tag;
import com.intellij.util.xmlb.annotations.Transient;
@@ -16,7 +18,6 @@ import org.jdom.Element;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.EventListener;
import java.util.List;
import java.util.Objects;
@@ -25,6 +26,10 @@ import java.util.Objects;
public class CommitMessageInspectionProfile extends InspectionProfileImpl
implements PersistentStateComponent<CommitMessageInspectionProfile.State> {
@ApiStatus.Internal
@ApiStatus.Experimental
public static final ExtensionPointName<BaseCommitMessageInspection> EP_NAME = ExtensionPointName.create("com.intellij.vcs.commitMessageInspection");
public static final @NotNull Topic<ProfileListener> TOPIC = Topic.create("commit message inspection changes", ProfileListener.class);
private static final String PROFILE_NAME = "Commit Dialog"; // NON-NLS
@@ -131,12 +136,7 @@ public class CommitMessageInspectionProfile extends InspectionProfileImpl
private static class CommitMessageInspectionToolSupplier extends InspectionToolsSupplier {
@Override
public @NotNull List<InspectionToolWrapper<?, ?>> createTools() {
return Arrays.asList(
new LocalInspectionToolWrapper(new SubjectBodySeparationInspection()),
new LocalInspectionToolWrapper(new SubjectLimitInspection()),
new LocalInspectionToolWrapper(new BodyLimitInspection()),
new LocalInspectionToolWrapper(new CommitMessageSpellCheckingInspection())
);
return ContainerUtil.map(EP_NAME.getExtensionList(), it -> new LocalInspectionToolWrapper(it));
}
}