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(