Skip to content

Commit 03393fb

Browse files
committed
Fix programmatic cursor position updates
1 parent 1fa4d3c commit 03393fb

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

Sources/CodeEditSourceEditor/SourceEditor/SourceEditor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ public struct SourceEditor: NSViewControllerRepresentable {
159159
return
160160
}
161161

162-
private func updateControllerWithState(_ state: SourceEditorState, controller: TextViewController) {
163-
if let cursorPositions = state.cursorPositions, cursorPositions != state.cursorPositions {
162+
func updateControllerWithState(_ state: SourceEditorState, controller: TextViewController) {
163+
if let cursorPositions = state.cursorPositions, cursorPositions != controller.cursorPositions {
164164
controller.setCursorPositions(cursorPositions)
165165
}
166166

Tests/CodeEditSourceEditorTests/Controller/TextViewControllerTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,24 @@ final class TextViewControllerTests: XCTestCase {
432432
XCTAssertEqual(controller.cursorPositions[1].start.column, 1)
433433
}
434434

435+
func test_sourceEditorUpdatesCursorPositionsFromState() {
436+
controller.setText("1\n2\n")
437+
controller.setCursorPositions([CursorPosition(line: 1, column: 1)])
438+
let editor = SourceEditor(
439+
.constant(""),
440+
language: .default,
441+
configuration: Mock.config(),
442+
state: .constant(SourceEditorState())
443+
)
444+
445+
editor.updateControllerWithState(
446+
SourceEditorState(cursorPositions: [CursorPosition(line: 2, column: 1)]),
447+
controller: controller
448+
)
449+
450+
XCTAssertEqual(controller.cursorPositions.first?.start, CursorPosition.Position(line: 2, column: 1))
451+
}
452+
435453
// MARK: - TreeSitterClient
436454

437455
func test_treeSitterSetUp() {

0 commit comments

Comments
 (0)