From 806d8e4a90b08447b2b195a0910221c8cc9a1e09 Mon Sep 17 00:00:00 2001 From: "Ilia.Shulgin" Date: Thu, 30 Jan 2025 16:27:09 +0100 Subject: [PATCH] [vcs] IJPL-176372 Enable non-modal commit by default Neither reads nor writes to `VcsApplicationSettings.COMMIT_FROM_LOCAL_CHANGES` are performed anymore - toolwindow mode is enforced. However, modal flow is not removed completely and still present for actions like "Fixup" and is activated if non-distributed VCS is present. GitOrigin-RevId: 5a4bc6c33202b1678db831a75e97a233dd03eb28 --- .../resources/messages/VcsBundle.properties | 4 +-- platform/vcs-impl/api-dump.txt | 3 -- .../changes/actions/VcsStatisticsCollector.kt | 4 --- .../configurable/CommitDialogConfigurable.kt | 17 +++------- .../configurable/VcsOptionsTopHitProvider.kt | 5 --- .../intellij/vcs/commit/CommitModeManager.kt | 16 ++-------- .../vcs/commit/SwitchToCommitDialogAction.kt | 30 ----------------- .../src/training/git/GitLessonsUtil.kt | 32 ++----------------- .../lesson/GitChangelistsAndShelveLesson.kt | 2 -- .../training/git/lesson/GitCommitLesson.kt | 3 -- .../git/lesson/GitQuickStartLesson.kt | 2 -- plugins/git4idea/src/git4idea/GitVcs.java | 3 +- .../src/git4idea/config/GitVcsPanel.kt | 14 -------- .../src/git4idea/index/GitStageManager.kt | 2 -- .../actions/GitEnableStagingAreaAction.kt | 3 +- 15 files changed, 11 insertions(+), 129 deletions(-) delete mode 100644 platform/vcs-impl/src/com/intellij/vcs/commit/SwitchToCommitDialogAction.kt diff --git a/platform/vcs-api/vcs-api-core/resources/messages/VcsBundle.properties b/platform/vcs-api/vcs-api-core/resources/messages/VcsBundle.properties index a70079dc2fd0..192c7022a07e 100644 --- a/platform/vcs-api/vcs-api-core/resources/messages/VcsBundle.properties +++ b/platform/vcs-api/vcs-api-core/resources/messages/VcsBundle.properties @@ -794,9 +794,8 @@ inspection.SubjectBodySeparationInspection.display.name=Blank line between subje inspection.BodyLimitInspection.display.name=Limit body line inspection.CommitMessageSpellCheckingInspection.display.name=Spelling inspection.SubjectLimitInspection.display.name=Limit subject line -settings.commit.without.dialog=Use non-modal commit interface settings.commit.postpone.slow.checks=Run advanced checks after a commit is done -settings.commit.postpone.slow.checks.description=Failed checks will not prevent a commit in the non-modal interface +settings.commit.postpone.slow.checks.description=Failed checks will not prevent a commit settings.commit.postpone.slow.checks.description.short=Failed checks will not prevent a commit settings.confirmation.option.text.ask=Ask settings.confirmation.option.text.no=No @@ -940,7 +939,6 @@ commit.description.tooltip.path=Path: {0} settings.version.control.option.group=Version Control settings.commit.message.option.group=Commit message -settings.commit.option.group=Commit settings.changelists.option.group=Changelists settings.confirmation.option.group=Confirmation dialog.title.files.created=Files Created diff --git a/platform/vcs-impl/api-dump.txt b/platform/vcs-impl/api-dump.txt index eb7110b0e424..72491585fadc 100644 --- a/platform/vcs-impl/api-dump.txt +++ b/platform/vcs-impl/api-dump.txt @@ -4876,15 +4876,12 @@ f:com.intellij.vcs.commit.CommitModeManager - dispose():V - f:getCurrentCommitMode():com.intellij.vcs.commit.CommitMode - sf:getInstance(com.intellij.openapi.project.Project):com.intellij.vcs.commit.CommitModeManager -- sf:setCommitFromLocalChanges(com.intellij.openapi.project.Project,Z):V - sf:subscribeOnCommitModeChange(com.intellij.util.messages.SimpleMessageBusConnection,com.intellij.vcs.commit.CommitModeManager$CommitModeListener):V com.intellij.vcs.commit.CommitModeManager$CommitModeListener - java.util.EventListener - a:commitModeChanged():V f:com.intellij.vcs.commit.CommitModeManager$Companion - f:getInstance(com.intellij.openapi.project.Project):com.intellij.vcs.commit.CommitModeManager -- f:isNonModalInSettings():Z -- f:setCommitFromLocalChanges(com.intellij.openapi.project.Project,Z):V - f:subscribeOnCommitModeChange(com.intellij.util.messages.SimpleMessageBusConnection,com.intellij.vcs.commit.CommitModeManager$CommitModeListener):V com.intellij.vcs.commit.CommitModeManager$SettingsListener - java.util.EventListener diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/VcsStatisticsCollector.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/VcsStatisticsCollector.kt index 8b01073cbcf3..b45b9d7f04f4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/VcsStatisticsCollector.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/VcsStatisticsCollector.kt @@ -79,10 +79,6 @@ object VcsStatisticsCollector : CounterUsagesCollector() { } } - fun logNonModalCommitStateChanged(project: Project?) { - NON_MODAL_COMMIT_STATE_CHANGED.log(project, VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES) - } - private fun computeDelta(before: Collection, after: Collection): Int { val beforeSet = before.toHashSet() val afterSet = after.toHashSet() diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/CommitDialogConfigurable.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/CommitDialogConfigurable.kt index 453aa27b6e62..ab3b202e540b 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/CommitDialogConfigurable.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/CommitDialogConfigurable.kt @@ -7,16 +7,17 @@ import com.intellij.openapi.options.UnnamedConfigurable import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogPanel import com.intellij.openapi.util.Disposer -import com.intellij.openapi.vcs.* +import com.intellij.openapi.vcs.CheckinProjectPanel +import com.intellij.openapi.vcs.ProjectLevelVcsManager +import com.intellij.openapi.vcs.VcsBundle +import com.intellij.openapi.vcs.VcsConfiguration import com.intellij.openapi.vcs.changes.Change import com.intellij.openapi.vcs.changes.CommitContext import com.intellij.openapi.vfs.VirtualFile -import com.intellij.ui.components.JBCheckBox import com.intellij.ui.dsl.builder.AlignX import com.intellij.ui.dsl.builder.TopGap import com.intellij.ui.dsl.builder.bindSelected import com.intellij.ui.dsl.builder.panel -import com.intellij.ui.layout.selected import com.intellij.util.containers.mapNotNullLoggingErrors import com.intellij.util.ui.UIUtil import com.intellij.vcs.commit.* @@ -49,18 +50,9 @@ class CommitDialogConfigurable(private val project: Project) override fun createPanel(): DialogPanel { val disposable = disposable!! - val appSettings = VcsApplicationSettings.getInstance() val settings = VcsConfiguration.getInstance(project) - lateinit var nonModalCommitCheckBox: JBCheckBox return panel { - row { - nonModalCommitCheckBox = checkBox(VcsBundle.message("settings.commit.without.dialog")) - .comment(VcsBundle.message("settings.commit.without.dialog.applies.to.git.mercurial")) - .bindSelected({ appSettings.COMMIT_FROM_LOCAL_CHANGES }, { CommitModeManager.setCommitFromLocalChanges(project, it) }) - .component - } - row { checkBox(VcsBundle.message("checkbox.clear.initial.commit.message")) .bindSelected(settings::CLEAR_INITIAL_COMMIT_MESSAGE) @@ -96,7 +88,6 @@ class CommitDialogConfigurable(private val project: Project) row { checkBox(VcsBundle.message("settings.commit.postpone.slow.checks")) .comment(VcsBundle.message("settings.commit.postpone.slow.checks.description")) - .enabledIf(nonModalCommitCheckBox.selected) .bindSelected({ settings.NON_MODAL_COMMIT_POSTPONE_SLOW_CHECKS }, { setRunSlowCommitChecksAfterCommit(project, it) }) } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsOptionsTopHitProvider.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsOptionsTopHitProvider.kt index 4250e697392d..7bf59478bec1 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsOptionsTopHitProvider.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsOptionsTopHitProvider.kt @@ -6,20 +6,17 @@ import com.intellij.ide.ui.search.OptionDescription import com.intellij.openapi.application.ApplicationBundle import com.intellij.openapi.project.Project import com.intellij.openapi.vcs.ProjectLevelVcsManager -import com.intellij.openapi.vcs.VcsApplicationSettings import com.intellij.openapi.vcs.VcsBundle import com.intellij.openapi.vcs.VcsConfiguration import com.intellij.openapi.vcs.changes.conflicts.ChangelistConflictTracker import com.intellij.openapi.vcs.contentAnnotation.VcsContentAnnotationSettings import com.intellij.openapi.vcs.readOnlyHandler.ReadonlyStatusHandlerImpl import com.intellij.openapi.vfs.ReadonlyStatusHandler -import com.intellij.vcs.commit.CommitModeManager.Companion.setCommitFromLocalChanges import com.intellij.vcs.commit.message.CommitMessageInspectionProfile import com.intellij.vcsUtil.VcsUtil private val vcsOptionGroupName get() = VcsBundle.message("settings.version.control.option.group") private val commitMessageOptionGroupName get() = VcsBundle.message("settings.commit.message.option.group") -private val commitOptionGroupName get() = VcsBundle.message("settings.commit.option.group") private val confirmationOptionGroupName get() = VcsBundle.message("settings.confirmation.option.group") private val changelistsOptionGroupName get() = VcsBundle.message("settings.changelists.option.group") @@ -65,7 +62,6 @@ private fun cdIncludeShelfBaseContent(project: Project): CheckboxDescriptor = private fun cdChangelistConflictDialog(project: Project): CheckboxDescriptor = CheckboxDescriptor(VcsBundle.message("settings.show.conflict.resolve.dialog.checkbox"), changelistsOptions(project)::SHOW_DIALOG, groupName = changelistsOptionGroupName) private fun cdChangelistShowConflicts(project: Project): CheckboxDescriptor = CheckboxDescriptor(VcsBundle.message("settings.highlight.files.with.conflicts.checkbox"), changelistsOptions(project)::HIGHLIGHT_CONFLICTS, groupName = changelistsOptionGroupName) private fun cdChangelistShowNonCurrent(project: Project): CheckboxDescriptor = CheckboxDescriptor(VcsBundle.message("settings.highlight.files.from.non.active.changelist.checkbox"), changelistsOptions(project)::HIGHLIGHT_NON_ACTIVE_CHANGELIST, groupName = changelistsOptionGroupName) -private fun cdNonModalCommit(project: Project): CheckboxDescriptor = CheckboxDescriptor(VcsBundle.message("settings.commit.without.dialog"), { VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES }, { setCommitFromLocalChanges(project, it) }, groupName = commitOptionGroupName) // @formatter:on internal class VcsOptionsTopHitProvider : VcsOptionsTopHitProviderBase() { @@ -89,7 +85,6 @@ internal class VcsOptionsTopHitProvider : VcsOptionsTopHitProviderBase() { cdChangelistConflictDialog(project), cdChangelistShowConflicts(project), cdChangelistShowNonCurrent(project), - cdNonModalCommit(project) ).map(CheckboxDescriptor::asOptionDescriptor) } } diff --git a/platform/vcs-impl/src/com/intellij/vcs/commit/CommitModeManager.kt b/platform/vcs-impl/src/com/intellij/vcs/commit/CommitModeManager.kt index 73ad743e7551..78f38651be15 100644 --- a/platform/vcs-impl/src/com/intellij/vcs/commit/CommitModeManager.kt +++ b/platform/vcs-impl/src/com/intellij/vcs/commit/CommitModeManager.kt @@ -92,7 +92,7 @@ class CommitModeManager(private val project: Project, private val coroutineScope return CommitMode.ExternalCommitMode(singleVcs) } - if (isNonModalInSettings() && canSetNonModal()) { + if (canSetNonModal()) { return CommitMode.NonModalCommitMode(isToggleCommitUi) } @@ -144,18 +144,6 @@ class CommitModeManager(private val project: Project, private val coroutineScope @JvmStatic fun getInstance(project: Project): CommitModeManager = project.service() - - @JvmStatic - fun setCommitFromLocalChanges(project: Project?, value: Boolean) { - val oldValue = appSettings.COMMIT_FROM_LOCAL_CHANGES - if (oldValue == value) return - - appSettings.COMMIT_FROM_LOCAL_CHANGES = value - VcsStatisticsCollector.logNonModalCommitStateChanged(project) - getApplication().messageBus.syncPublisher(SETTINGS).settingsChanged() - } - - fun isNonModalInSettings(): Boolean = isForceNonModalCommit.asBoolean() || appSettings.COMMIT_FROM_LOCAL_CHANGES } interface SettingsListener : EventListener { @@ -179,7 +167,7 @@ sealed class CommitMode { object PendingCommitMode : CommitMode() { override fun useCommitToolWindow(): Boolean { // Enable 'Commit' toolwindow before vcses are activated - return CommitModeManager.isNonModalInSettings() + return true } override fun disableDefaultCommitAction(): Boolean { diff --git a/platform/vcs-impl/src/com/intellij/vcs/commit/SwitchToCommitDialogAction.kt b/platform/vcs-impl/src/com/intellij/vcs/commit/SwitchToCommitDialogAction.kt deleted file mode 100644 index b681da557cd6..000000000000 --- a/platform/vcs-impl/src/com/intellij/vcs/commit/SwitchToCommitDialogAction.kt +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.vcs.commit - -import com.intellij.openapi.actionSystem.ActionManager -import com.intellij.openapi.actionSystem.ActionUpdateThread -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.IdeActions.ACTION_CHECKIN_PROJECT -import com.intellij.openapi.actionSystem.ex.ActionUtil.invokeAction -import com.intellij.openapi.project.DumbAwareAction -import com.intellij.vcs.commit.CommitModeManager.Companion.setCommitFromLocalChanges - -private class SwitchToCommitDialogAction : DumbAwareAction() { - override fun getActionUpdateThread(): ActionUpdateThread { - return ActionUpdateThread.BGT - } - - override fun update(e: AnActionEvent) { - val project = e.project - e.presentation.isEnabledAndVisible = project != null && - CommitModeManager.isNonModalInSettings() && - CommitModeManager.getInstance(project).getCurrentCommitMode() != CommitMode.ModalCommitMode - } - - override fun actionPerformed(e: AnActionEvent) { - setCommitFromLocalChanges(e.project, false) - - val commitAction = ActionManager.getInstance().getAction(ACTION_CHECKIN_PROJECT) ?: return - invokeAction(commitAction, e.dataContext, e.place, e.inputEvent, null) - } -} \ No newline at end of file diff --git a/plugins/git-features-trainer/src/training/git/GitLessonsUtil.kt b/plugins/git-features-trainer/src/training/git/GitLessonsUtil.kt index 36f3cde37a89..29b16273acfd 100644 --- a/plugins/git-features-trainer/src/training/git/GitLessonsUtil.kt +++ b/plugins/git-features-trainer/src/training/git/GitLessonsUtil.kt @@ -220,32 +220,6 @@ object GitLessonsUtil { } } - fun LessonContext.showWarningIfModalCommitEnabled() { - task { - val step = stateCheck { - VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES - } - val callbackId = LearningUiManager.addCallback { - CommitModeManager.setCommitFromLocalChanges(project, true) - step.complete(true) - } - showWarning(GitLessonsBundle.message("git.use.non.modal.commit.ui.warning", - action("ShowSettings"), - strong(VcsBundle.message("version.control.main.configurable.name")), - strong(VcsBundle.message("commit.dialog.configurable")), - strong(VcsBundle.message("settings.commit.without.dialog"))) - + " " + GitLessonsBundle.message("git.click.to.change.settings", callbackId)) { - !VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES - } - test { - if (!VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES) { - Thread.sleep(1000) // need to wait until LessonMessagePane become updated after restart and warning will be showed - clickLessonMessagePaneLink(" click ") - } - } - } - } - fun LessonContext.showWarningIfStagingAreaEnabled() { task { val step = stateCheck { @@ -267,12 +241,10 @@ object GitLessonsUtil { } fun LessonContext.restoreCommitWindowStateInformer() { - val enabledModalInterface = !VcsApplicationSettings.getInstance().COMMIT_FROM_LOCAL_CHANGES val enabledStagingArea = GitVcsApplicationSettings.getInstance().isStagingAreaEnabled - if (!enabledModalInterface && !enabledStagingArea) return + if (!enabledStagingArea) return restoreChangedSettingsInformer { - if (enabledModalInterface) CommitModeManager.setCommitFromLocalChanges(null, false) - if (enabledStagingArea) enableStagingArea(true) + enableStagingArea(true) } } diff --git a/plugins/git-features-trainer/src/training/git/lesson/GitChangelistsAndShelveLesson.kt b/plugins/git-features-trainer/src/training/git/lesson/GitChangelistsAndShelveLesson.kt index 90a59a01936c..e1a413fdc6cf 100644 --- a/plugins/git-features-trainer/src/training/git/lesson/GitChangelistsAndShelveLesson.kt +++ b/plugins/git-features-trainer/src/training/git/lesson/GitChangelistsAndShelveLesson.kt @@ -39,7 +39,6 @@ import training.git.GitLessonsUtil.openCommitWindow import training.git.GitLessonsUtil.restoreByUiAndBackgroundTask import training.git.GitLessonsUtil.restoreCommitWindowStateInformer import training.git.GitLessonsUtil.showWarningIfCommitWindowClosed -import training.git.GitLessonsUtil.showWarningIfModalCommitEnabled import training.git.GitLessonsUtil.showWarningIfStagingAreaEnabled import training.ui.LearningUiUtil.findComponentWithTimeout import training.util.LessonEndInfo @@ -73,7 +72,6 @@ class GitChangelistsAndShelveLesson : GitLesson("Git.ChangelistsAndShelf", GitLe PsiDocumentManager.getInstance(project).commitAllDocuments() } - showWarningIfModalCommitEnabled() showWarningIfStagingAreaEnabled() lateinit var highlightLineMarkerTaskId: TaskContext.TaskId diff --git a/plugins/git-features-trainer/src/training/git/lesson/GitCommitLesson.kt b/plugins/git-features-trainer/src/training/git/lesson/GitCommitLesson.kt index d31c6f74f755..0e8ae8b8db38 100644 --- a/plugins/git-features-trainer/src/training/git/lesson/GitCommitLesson.kt +++ b/plugins/git-features-trainer/src/training/git/lesson/GitCommitLesson.kt @@ -10,7 +10,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.ui.popup.Balloon import com.intellij.openapi.vcs.VcsBundle import com.intellij.openapi.vcs.VcsConfiguration -import com.intellij.openapi.vcs.VcsNotificationIdsHolder import com.intellij.openapi.vcs.changes.ChangesViewWorkflowManager import com.intellij.openapi.vfs.VfsUtil import com.intellij.openapi.vfs.VirtualFile @@ -43,7 +42,6 @@ import training.git.GitLessonsUtil.resetGitLogWindow import training.git.GitLessonsUtil.restoreCommitWindowStateInformer import training.git.GitLessonsUtil.showWarningIfCommitWindowClosed import training.git.GitLessonsUtil.showWarningIfGitWindowClosed -import training.git.GitLessonsUtil.showWarningIfModalCommitEnabled import training.git.GitLessonsUtil.showWarningIfStagingAreaEnabled import training.git.GitLessonsUtil.triggerOnChangeCheckboxShown import training.git.GitLessonsUtil.triggerOnNotification @@ -81,7 +79,6 @@ class GitCommitLesson : GitLesson("Git.Commit", GitLessonsBundle.message("git.co modifyFiles() } - showWarningIfModalCommitEnabled() showWarningIfStagingAreaEnabled() highlightToolWindowStripe(ToolWindowId.COMMIT) diff --git a/plugins/git-features-trainer/src/training/git/lesson/GitQuickStartLesson.kt b/plugins/git-features-trainer/src/training/git/lesson/GitQuickStartLesson.kt index 874307cd1b84..bf531e2f6c30 100644 --- a/plugins/git-features-trainer/src/training/git/lesson/GitQuickStartLesson.kt +++ b/plugins/git-features-trainer/src/training/git/lesson/GitQuickStartLesson.kt @@ -38,7 +38,6 @@ import training.git.GitLessonsUtil.openCommitWindow import training.git.GitLessonsUtil.restoreByUiAndBackgroundTask import training.git.GitLessonsUtil.restoreCommitWindowStateInformer import training.git.GitLessonsUtil.showWarningIfCommitWindowClosed -import training.git.GitLessonsUtil.showWarningIfModalCommitEnabled import training.git.GitLessonsUtil.showWarningIfStagingAreaEnabled import training.git.GitLessonsUtil.triggerOnChangeCheckboxShown import training.git.GitLessonsUtil.triggerOnCheckout @@ -68,7 +67,6 @@ class GitQuickStartLesson : GitLesson("Git.QuickStart", GitLessonsBundle.message override val lessonContent: LessonContext.() -> Unit = { val cloneActionText = GitBundle.message("action.Git.Clone.text") - showWarningIfModalCommitEnabled() showWarningIfStagingAreaEnabled() task { diff --git a/plugins/git4idea/src/git4idea/GitVcs.java b/plugins/git4idea/src/git4idea/GitVcs.java index 28467fa6ab84..192ea3d49c07 100644 --- a/plugins/git4idea/src/git4idea/GitVcs.java +++ b/plugins/git4idea/src/git4idea/GitVcs.java @@ -354,8 +354,7 @@ public final class GitVcs extends AbstractVcs { @Override public boolean isWithCustomLocalChanges() { - return GitVcsApplicationSettings.getInstance().isStagingAreaEnabled() && - GitStageManagerKt.canEnableStagingArea(); + return GitVcsApplicationSettings.getInstance().isStagingAreaEnabled(); } @Override diff --git a/plugins/git4idea/src/git4idea/config/GitVcsPanel.kt b/plugins/git4idea/src/git4idea/config/GitVcsPanel.kt index cb3ad851e96f..413f87f65516 100644 --- a/plugins/git4idea/src/git4idea/config/GitVcsPanel.kt +++ b/plugins/git4idea/src/git4idea/config/GitVcsPanel.kt @@ -50,7 +50,6 @@ import git4idea.branch.GitBranchIncomingOutgoingManager import git4idea.config.GitExecutableSelectorPanel.Companion.createGitExecutableSelectorRow import git4idea.config.gpg.GpgSignConfigurableRow.Companion.createGpgSignRow import git4idea.i18n.GitBundle.message -import git4idea.index.canEnableStagingArea import git4idea.index.enableStagingArea import git4idea.repo.GitRepositoryManager import git4idea.stash.ui.isStashTabAvailable @@ -197,7 +196,6 @@ internal class GitVcsPanel(private val project: Project) : group(message("settings.commit.group.title")) { row { checkBox(cdEnableStagingArea) - .enabledIf(StagingAreaAvailablePredicate(project, disposable!!)) } row { checkBox(cdWarnAboutCrlf(project)) @@ -381,18 +379,6 @@ internal class ExpandableTextFieldWithReadOnlyText(lineParser: ParserFunction, fun JoinerFunction.join(vararg items: String): String = `fun`(items.toList()) } -class StagingAreaAvailablePredicate(val project: Project, val disposable: Disposable) : ComponentPredicate() { - override fun addListener(listener: (Boolean) -> Unit) { - project.messageBus.connect(disposable).subscribe(CommitModeManager.SETTINGS, object : CommitModeManager.SettingsListener { - override fun settingsChanged() { - listener(invoke()) - } - }) - } - - override fun invoke(): Boolean = canEnableStagingArea() -} - class HasGitRootsPredicate(val project: Project, val disposable: Disposable) : ComponentPredicate() { override fun addListener(listener: (Boolean) -> Unit) { project.messageBus.connect(disposable).subscribe(VcsRepositoryManager.VCS_REPOSITORY_MAPPING_UPDATED, diff --git a/plugins/git4idea/src/git4idea/index/GitStageManager.kt b/plugins/git4idea/src/git4idea/index/GitStageManager.kt index 747c0d172dd0..e13e5a5c24de 100644 --- a/plugins/git4idea/src/git4idea/index/GitStageManager.kt +++ b/plugins/git4idea/src/git4idea/index/GitStageManager.kt @@ -46,8 +46,6 @@ fun enableStagingArea(enabled: Boolean) { ApplicationManager.getApplication().messageBus.syncPublisher(CommitModeManager.SETTINGS).settingsChanged() } -internal fun canEnableStagingArea() = CommitModeManager.isNonModalInSettings() - internal fun isStagingAreaAvailable(project: Project): Boolean { val commitMode = CommitModeManager.getInstance(project).getCurrentCommitMode() return commitMode is CommitMode.ExternalCommitMode && diff --git a/plugins/git4idea/src/git4idea/index/actions/GitEnableStagingAreaAction.kt b/plugins/git4idea/src/git4idea/index/actions/GitEnableStagingAreaAction.kt index be6efd3e6716..0e8d52dd7463 100644 --- a/plugins/git4idea/src/git4idea/index/actions/GitEnableStagingAreaAction.kt +++ b/plugins/git4idea/src/git4idea/index/actions/GitEnableStagingAreaAction.kt @@ -7,13 +7,12 @@ import com.intellij.openapi.project.DumbAwareToggleAction import com.intellij.openapi.vcs.ProjectLevelVcsManager import git4idea.GitVcs import git4idea.config.GitVcsApplicationSettings -import git4idea.index.canEnableStagingArea import git4idea.index.enableStagingArea abstract class GitToggleStagingAreaAction(private val enable: Boolean) : DumbAwareToggleAction() { override fun update(e: AnActionEvent) { val project = e.project - if (project == null || !canEnableStagingArea() || + if (project == null || ProjectLevelVcsManager.getInstance(project).singleVCS?.keyInstanceMethod != GitVcs.getKey()) { e.presentation.isEnabledAndVisible = false }