Skip to content

Commit c40e46b

Browse files
committed
Tweak suggestion presentation
1 parent 892a041 commit c40e46b

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

Core/Sources/Service/RealtimeSuggestionController.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,10 @@ public class RealtimeSuggestionController {
105105
let focusElementType = focusElement.description
106106
focusedUIElement = focusElement
107107

108+
let fileURL = XcodeInspector.shared.activeDocumentURL
109+
108110
Task { // Notify suggestion service for open file.
109111
try await Task.sleep(nanoseconds: 500_000_000)
110-
let fileURL = try await Environment.fetchCurrentFileURL()
111112
_ = try await Workspace.fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
112113
}
113114

@@ -118,6 +119,13 @@ public class RealtimeSuggestionController {
118119
editorObservationTask = nil
119120

120121
editorObservationTask = Task { [weak self] in
122+
if let sourceEditor = self?.sourceEditor {
123+
await PseudoCommandHandler().invalidateRealtimeSuggestionsIfNeeded(
124+
fileURL: fileURL,
125+
sourceEditor: sourceEditor
126+
)
127+
}
128+
121129
let notificationsFromEditor = AXNotificationStream(
122130
app: activeXcode,
123131
element: focusElement,
@@ -135,8 +143,10 @@ public class RealtimeSuggestionController {
135143
await self.notifyEditingFileChange(editor: focusElement)
136144
case kAXSelectedTextChangedNotification:
137145
guard let sourceEditor else { continue }
138-
await PseudoCommandHandler()
139-
.invalidateRealtimeSuggestionsIfNeeded(sourceEditor: sourceEditor)
146+
await PseudoCommandHandler().invalidateRealtimeSuggestionsIfNeeded(
147+
fileURL: fileURL,
148+
sourceEditor: sourceEditor
149+
)
140150
default:
141151
continue
142152
}

Core/Sources/Service/SuggestionCommandHandler/PseudoCommandHandler.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,9 @@ struct PseudoCommandHandler {
6060
_ = try? await handler.generateRealtimeSuggestions(editor: editor)
6161
}
6262

63-
func invalidateRealtimeSuggestionsIfNeeded(sourceEditor: SourceEditor) async {
64-
guard let fileURL = try? await Environment.fetchCurrentFileURL(),
65-
let (_, filespace) = try? await Workspace
66-
.fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL) else { return }
63+
func invalidateRealtimeSuggestionsIfNeeded(fileURL: URL, sourceEditor: SourceEditor) async {
64+
guard let (_, filespace) = try? await Workspace
65+
.fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL) else { return }
6766

6867
if await !filespace.validateSuggestions(
6968
lines: sourceEditor.content.lines,

Core/Sources/Service/Workspace.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,6 @@ extension Workspace {
282282

283283
let filespace = createFilespaceIfNeeded(fileURL: fileURL)
284284

285-
if filespaces[fileURL] == nil {
286-
filespaces[fileURL] = filespace
287-
}
288-
289285
if !editor.uti.isEmpty {
290286
filespace.uti = editor.uti
291287
filespace.tabSize = editor.tabSize

0 commit comments

Comments
 (0)