Skip to content

Commit fbba065

Browse files
committed
Update to show suggestion index and count
1 parent 3bd4da8 commit fbba065

4 files changed

Lines changed: 51 additions & 10 deletions

File tree

Core/Sources/Service/SuggestionCommandHandler/WindowBaseCommandHandler.swift

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ struct WindowBaseCommandHandler: SuggestionCommandHanlder {
5050
)
5151

5252
if let suggestion = filespace.presentingSuggestion {
53-
presenter.presentSuggestion(suggestion, lines: editor.lines, fileURL: fileURL)
53+
presenter.presentSuggestion(
54+
suggestion,
55+
lines: editor.lines,
56+
fileURL: fileURL,
57+
currentSuggestionIndex: filespace.suggestionIndex,
58+
suggestionCount: filespace.suggestions.count
59+
)
5460
} else {
5561
presenter.discardSuggestion(fileURL: fileURL)
5662
}
@@ -76,7 +82,13 @@ struct WindowBaseCommandHandler: SuggestionCommandHanlder {
7682
)
7783

7884
if let suggestion = filespace.presentingSuggestion {
79-
presenter.presentSuggestion(suggestion, lines: editor.lines, fileURL: fileURL)
85+
presenter.presentSuggestion(
86+
suggestion,
87+
lines: editor.lines,
88+
fileURL: fileURL,
89+
currentSuggestionIndex: filespace.suggestionIndex,
90+
suggestionCount: filespace.suggestions.count
91+
)
8092
} else {
8193
presenter.discardSuggestion(fileURL: fileURL)
8294
}
@@ -102,7 +114,13 @@ struct WindowBaseCommandHandler: SuggestionCommandHanlder {
102114
)
103115

104116
if let suggestion = filespace.presentingSuggestion {
105-
presenter.presentSuggestion(suggestion, lines: editor.lines, fileURL: fileURL)
117+
presenter.presentSuggestion(
118+
suggestion,
119+
lines: editor.lines,
120+
fileURL: fileURL,
121+
currentSuggestionIndex: filespace.suggestionIndex,
122+
suggestionCount: filespace.suggestions.count
123+
)
106124
} else {
107125
presenter.discardSuggestion(fileURL: fileURL)
108126
}

Core/Sources/Service/SuggestionPresenter/PresentInWindowSuggestionPresenter.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@ import CopilotModel
22
import Foundation
33

44
struct PresentInWindowSuggestionPresenter {
5-
func presentSuggestion(_ suggestion: CopilotCompletion, lines: [String], fileURL: URL) {
5+
func presentSuggestion(
6+
_ suggestion: CopilotCompletion,
7+
lines: [String],
8+
fileURL: URL,
9+
currentSuggestionIndex: Int,
10+
suggestionCount: Int
11+
) {
612
Task { @MainActor in
713
let controller = GraphicalUserInterfaceController.shared.suggestionWidget
814
controller.suggestCode(
915
suggestion.text,
1016
startLineIndex: suggestion.position.line,
11-
fileURL: fileURL
17+
fileURL: fileURL,
18+
currentSuggestionIndex: currentSuggestionIndex,
19+
suggestionCount: suggestionCount
1220
)
1321
}
1422
}

Core/Sources/SuggestionWidget/SuggestionPanelView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ struct ToolBar: View {
107107

108108
var body: some View {
109109
HStack {
110-
Text("\(viewModel.currentSuggestionIndex)/\(viewModel.suggestionCount)")
110+
Text("\(viewModel.currentSuggestionIndex + 1)/\(viewModel.suggestionCount)")
111+
.monospacedDigit()
111112

112113
Spacer()
113114

Core/Sources/SuggestionWidget/SuggestionWidgetController.swift

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public final class SuggestionWidgetController {
5656
private var suggestionForFiles: [URL: Suggestion] = [:]
5757

5858
enum Suggestion {
59-
case code([String], startLineIndex: Int)
59+
case code([String], startLineIndex: Int, currentSuggestionIndex: Int, suggestionCount: Int)
6060
}
6161

6262
public nonisolated init() {
@@ -83,14 +83,24 @@ public final class SuggestionWidgetController {
8383
}
8484
}
8585

86-
public func suggestCode(_ code: String, startLineIndex: Int, fileURL: URL) {
86+
public func suggestCode(
87+
_ code: String,
88+
startLineIndex: Int,
89+
fileURL: URL,
90+
currentSuggestionIndex: Int,
91+
suggestionCount: Int
92+
) {
8793
withAnimation(.easeInOut(duration: 0.2)) {
8894
suggestionPanelViewModel.suggestion = code.split(separator: "\n").map(String.init)
8995
suggestionPanelViewModel.startLineIndex = startLineIndex
9096
suggestionPanelViewModel.isPanelDisplayed = true
97+
suggestionPanelViewModel.currentSuggestionIndex = currentSuggestionIndex
98+
suggestionPanelViewModel.suggestionCount = suggestionCount
9199
suggestionForFiles[fileURL] = .code(
92100
suggestionPanelViewModel.suggestion,
93-
startLineIndex: startLineIndex
101+
startLineIndex: startLineIndex,
102+
currentSuggestionIndex: currentSuggestionIndex,
103+
suggestionCount: suggestionCount
94104
)
95105
widgetViewModel.isProcessing = false
96106
}
@@ -101,6 +111,8 @@ public final class SuggestionWidgetController {
101111
suggestionForFiles[fileURL] = nil
102112
suggestionPanelViewModel.suggestion = []
103113
suggestionPanelViewModel.startLineIndex = 0
114+
suggestionPanelViewModel.currentSuggestionIndex = 0
115+
suggestionPanelViewModel.suggestionCount = 0
104116
suggestionPanelViewModel.isPanelDisplayed = false
105117
widgetViewModel.isProcessing = false
106118
}
@@ -136,9 +148,11 @@ public final class SuggestionWidgetController {
136148
continue
137149
}
138150
switch suggestion {
139-
case let .code(code, startLineIndex):
151+
case let .code(code, startLineIndex, currentSuggestionIndex, suggestionCount):
140152
suggestionPanelViewModel.suggestion = code
141153
suggestionPanelViewModel.startLineIndex = startLineIndex
154+
suggestionPanelViewModel.currentSuggestionIndex = currentSuggestionIndex
155+
suggestionPanelViewModel.suggestionCount = suggestionCount
142156
}
143157
}
144158
}

0 commit comments

Comments
 (0)