Skip to content

Commit d93c57c

Browse files
committed
Tweak real-time suggestion trigger
1 parent 456a648 commit d93c57c

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

Core/Sources/Service/AutoTrigger.swift

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,37 @@ public actor AutoTrigger {
8585
}()
8686

8787
let escape = 0x35
88-
89-
guard await Environment.frontmostXcodeWindowIsEditor() else { continue }
88+
let isEditing = await Environment.frontmostXcodeWindowIsEditor()
9089

91-
guard event.type == .keyUp,
92-
event.getIntegerValueField(.keyboardEventKeycode) != escape
93-
else { continue }
90+
// if Xcode suggestion panel is presenting, and we are not trying to close it
91+
// ignore this event.
92+
if !isEditing, event.getIntegerValueField(.keyboardEventKeycode) != escape {
93+
continue
94+
}
95+
96+
let shouldTrigger = {
97+
// closing suggestion panel
98+
if isEditing, event.getIntegerValueField(.keyboardEventKeycode) == escape {
99+
return true
100+
}
101+
102+
// normally typing
103+
if event.type == .keyUp,
104+
event.getIntegerValueField(.keyboardEventKeycode) != escape
105+
{
106+
return true
107+
}
108+
109+
return false
110+
}()
111+
112+
guard shouldTrigger else { continue }
94113

95114
triggerTask = Task { @ServiceActor in
96115
try? await Task.sleep(nanoseconds: UInt64(
97116
UserDefaults.shared
98117
.value(forKey: SettingsKey.realtimeSuggestionDebounce) as? Int
99-
?? 700_000_000
118+
?? 800_000_000
100119
))
101120
if Task.isCancelled { return }
102121
os_log(.info, "Prefetch suggestions.")

Core/Sources/Service/XPCService.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
224224
) {
225225
let task = Task { @ServiceActor in
226226
do {
227+
try Task.checkCancellation()
227228
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
228229
try Task.checkCancellation()
229230
let fileURL = try await Environment.fetchCurrentFileURL()

0 commit comments

Comments
 (0)