diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java index 1dd1285a3a99..90e34f66d7f0 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java @@ -104,8 +104,9 @@ public final class CommandMerger { } void mergeWithPerformedCommand(@NotNull PerformedCommand performedCommand) { + boolean isPartial = isPartialForeignCommand(performedCommand); mergeState(performedCommand); - if (!performedCommand.isTransparent() && hasActions()) { + if (!performedCommand.isTransparent() && (hasActions() || isPartial)) { Object groupId = performedCommand.groupId(); if (groupId != SoftReference.dereference(lastGroupId)) { lastGroupId = groupId == null ? null : new WeakReference<>(groupId); diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoSpy.kt b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoSpy.kt index a04f71491ead..b72dcd6da647 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoSpy.kt +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoSpy.kt @@ -19,6 +19,8 @@ interface UndoSpy { fun commandFinished(cmdFinishEvent: CmdEvent) + fun currentCmdEvent(): CmdEvent? + fun withBlind(action: () -> T): T companion object {