@@ -70,6 +70,7 @@ public final class SuggestionWidgetController {
7070 private var windowChangeObservationTask : Task < Void , Error > ?
7171 private var activeApplicationMonitorTask : Task < Void , Error > ?
7272 private var suggestionForFiles : [ URL : Suggestion ] = [ : ]
73+ private var currentFileURL : URL ?
7374
7475 public var onAcceptButtonTapped : ( ( ) -> Void ) ? {
7576 get { suggestionPanelViewModel. onAcceptButtonTapped }
@@ -147,11 +148,13 @@ public final class SuggestionWidgetController {
147148 suggestionCount: Int
148149 ) {
149150 withAnimation ( . easeInOut( duration: 0.2 ) ) {
150- suggestionPanelViewModel. suggestion = highlighted ( code: code, language: language)
151- suggestionPanelViewModel. startLineIndex = startLineIndex
152- suggestionPanelViewModel. isPanelDisplayed = true
153- suggestionPanelViewModel. currentSuggestionIndex = currentSuggestionIndex
154- suggestionPanelViewModel. suggestionCount = suggestionCount
151+ if fileURL == currentFileURL || currentFileURL == nil {
152+ suggestionPanelViewModel. suggestion = highlighted ( code: code, language: language)
153+ suggestionPanelViewModel. startLineIndex = startLineIndex
154+ suggestionPanelViewModel. isPanelDisplayed = true
155+ suggestionPanelViewModel. currentSuggestionIndex = currentSuggestionIndex
156+ suggestionPanelViewModel. suggestionCount = suggestionCount
157+ }
155158 suggestionForFiles [ fileURL] = . code(
156159 code,
157160 language: language,
@@ -166,11 +169,13 @@ public final class SuggestionWidgetController {
166169 public func discardSuggestion( fileURL: URL ) {
167170 withAnimation ( . easeInOut( duration: 0.2 ) ) {
168171 suggestionForFiles [ fileURL] = nil
169- suggestionPanelViewModel. suggestion = [ ]
170- suggestionPanelViewModel. startLineIndex = 0
171- suggestionPanelViewModel. currentSuggestionIndex = 0
172- suggestionPanelViewModel. suggestionCount = 0
173- suggestionPanelViewModel. isPanelDisplayed = false
172+ if fileURL == currentFileURL || currentFileURL == nil {
173+ suggestionPanelViewModel. suggestion = [ ]
174+ suggestionPanelViewModel. startLineIndex = 0
175+ suggestionPanelViewModel. currentSuggestionIndex = 0
176+ suggestionPanelViewModel. suggestionCount = 0
177+ suggestionPanelViewModel. isPanelDisplayed = false
178+ }
174179 widgetViewModel. isProcessing = false
175180 }
176181 }
@@ -195,10 +200,14 @@ public final class SuggestionWidgetController {
195200 guard let self else { return }
196201 try Task . checkCancellation ( )
197202 self . updateWindowLocation ( animated: false )
198-
203+
199204 if notification. name == kAXFocusedUIElementChangedNotification {
200- guard let fileURL = try ? await Environment . fetchCurrentFileURL ( ) ,
201- let suggestion = suggestionForFiles [ fileURL]
205+ guard let fileURL = try ? await Environment . fetchCurrentFileURL ( ) else {
206+ suggestionPanelViewModel. suggestion = [ ]
207+ continue
208+ }
209+ currentFileURL = fileURL
210+ guard let suggestion = suggestionForFiles [ fileURL]
202211 else {
203212 suggestionPanelViewModel. suggestion = [ ]
204213 continue
0 commit comments