From b11445cf235aa4770be950a4f4dd710d5b406a13 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 12 Feb 2024 13:03:32 +0100 Subject: [PATCH] IDEA-344583 git: save 'staged' Document on disk to put file into "Staged" list on modifications GitOrigin-RevId: 1727c264e6f5a0fdb0e3a003d17d94dfd5dfc854 --- .../index/GitStageLineStatusTracker.kt | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/plugins/git4idea/src/git4idea/index/GitStageLineStatusTracker.kt b/plugins/git4idea/src/git4idea/index/GitStageLineStatusTracker.kt index 0ff210319e7e..60105a2a2908 100644 --- a/plugins/git4idea/src/git4idea/index/GitStageLineStatusTracker.kt +++ b/plugins/git4idea/src/git4idea/index/GitStageLineStatusTracker.kt @@ -329,6 +329,8 @@ class GitStageLineStatusTracker( } private inner class MyDocumentTrackerHandler(private val unstaged: Boolean) : DocumentTracker.Handler { + private var wasEmpty = isTrackerEmpty() + override fun afterBulkRangeChange(isDirty: Boolean) { cachedBlocks = null @@ -336,16 +338,14 @@ class GitStageLineStatusTracker( if (!isDirty) listeners.multicaster.onRangesChanged() if (isOperational()) { - if (unstaged) { - if (unstagedTracker.blocks.isEmpty()) { + val isEmpty = isTrackerEmpty() + if (wasEmpty != isEmpty) { + wasEmpty = isEmpty + + if (isEmpty && unstaged) { saveDocumentWhenUnchanged(project, document) - saveDocumentWhenUnchanged(project, stagedDocument) - } - } - else { - if (stagedTracker.blocks.isEmpty()) { - saveDocumentWhenUnchanged(project, stagedDocument) } + saveDocumentWhenUnchanged(project, stagedDocument) } } } @@ -354,6 +354,15 @@ class GitStageLineStatusTracker( updateHighlighters() listeners.multicaster.onRangesChanged() } + + private fun isTrackerEmpty(): Boolean { + if (unstaged) { + return unstagedTracker.blocks.isEmpty() + } + else { + return stagedTracker.blocks.isEmpty() + } + } } private class MyLineStatusMarkerPopupRenderer(