Skip to content

Commit 4e8d31c

Browse files
committed
Correctly format code if the selection range doesn't start at character 0
1 parent 8c53b93 commit 4e8d31c

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

Core/Sources/Service/GUI/PromptToCodeProvider+Service.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ extension PromptToCodeProvider {
88
code: service.code,
99
language: service.language.rawValue,
1010
description: "",
11-
startLineIndex: service.selectionRange.start.line
11+
startLineIndex: service.selectionRange.start.line,
12+
startLineColumn: service.selectionRange.start.character
1213
)
1314

1415
var cancellables = Set<AnyCancellable>()

Core/Sources/SuggestionWidget/PromptToCodeProvider.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public final class PromptToCodeProvider: ObservableObject {
99
@Published public var description: String
1010
@Published public var isResponding: Bool
1111
@Published public var startLineIndex: Int
12+
@Published public var startLineColumn: Int
1213
@Published public var requirement: String
1314
@Published public var errorMessage: String
1415
@Published public var canRevert: Bool
@@ -25,6 +26,7 @@ public final class PromptToCodeProvider: ObservableObject {
2526
description: String = "",
2627
isResponding: Bool = false,
2728
startLineIndex: Int = 0,
29+
startLineColumn: Int = 0,
2830
requirement: String = "",
2931
errorMessage: String = "",
3032
canRevert: Bool = false,
@@ -39,6 +41,7 @@ public final class PromptToCodeProvider: ObservableObject {
3941
self.description = description
4042
self.isResponding = isResponding
4143
self.startLineIndex = startLineIndex
44+
self.startLineColumn = startLineColumn
4245
self.requirement = requirement
4346
self.errorMessage = errorMessage
4447
self.canRevert = canRevert

Core/Sources/SuggestionWidget/SuggestionPanelContent/CodeBlock.swift

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,30 @@ struct CodeBlock: View {
77
let colorScheme: ColorScheme
88
let commonPrecedingSpaceCount: Int
99
let highlightedCode: [NSAttributedString]
10+
let firstLinePrecedingSpaceCount: Int
1011

11-
init(code: String, language: String, startLineIndex: Int, colorScheme: ColorScheme) {
12+
init(
13+
code: String,
14+
language: String,
15+
startLineIndex: Int,
16+
colorScheme: ColorScheme,
17+
firstLinePrecedingSpaceCount: Int = 0
18+
) {
1219
self.code = code
1320
self.language = language
1421
self.startLineIndex = startLineIndex
1522
self.colorScheme = colorScheme
23+
self.firstLinePrecedingSpaceCount = firstLinePrecedingSpaceCount
24+
let padding = firstLinePrecedingSpaceCount > 0
25+
? String(repeating: " ", count: firstLinePrecedingSpaceCount)
26+
: ""
1627
let result = Self.highlight(
17-
code: code,
28+
code: padding + code,
1829
language: language,
1930
colorScheme: colorScheme
2031
)
21-
self.commonPrecedingSpaceCount = result.commonLeadingSpaceCount
22-
self.highlightedCode = result.code
32+
commonPrecedingSpaceCount = result.commonLeadingSpaceCount
33+
highlightedCode = result.code
2334
}
2435

2536
var body: some View {

Core/Sources/SuggestionWidget/SuggestionPanelContent/PromptToCodePanel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ struct PromptToCodePanel: View {
2424
code: provider.code,
2525
language: provider.language,
2626
startLineIndex: provider.startLineIndex,
27-
colorScheme: colorScheme
27+
colorScheme: colorScheme,
28+
firstLinePrecedingSpaceCount: provider.startLineColumn
2829
)
2930
.frame(maxWidth: .infinity)
3031
}

0 commit comments

Comments
 (0)