diff --git a/Sources/CodeEditSourceEditor/SourceEditor/SourceEditor.swift b/Sources/CodeEditSourceEditor/SourceEditor/SourceEditor.swift index ed3ee508b..4f7424300 100644 --- a/Sources/CodeEditSourceEditor/SourceEditor/SourceEditor.swift +++ b/Sources/CodeEditSourceEditor/SourceEditor/SourceEditor.swift @@ -159,8 +159,8 @@ public struct SourceEditor: NSViewControllerRepresentable { return } - private func updateControllerWithState(_ state: SourceEditorState, controller: TextViewController) { - if let cursorPositions = state.cursorPositions, cursorPositions != state.cursorPositions { + func updateControllerWithState(_ state: SourceEditorState, controller: TextViewController) { + if let cursorPositions = state.cursorPositions, cursorPositions != controller.cursorPositions { controller.setCursorPositions(cursorPositions) } diff --git a/Tests/CodeEditSourceEditorTests/Controller/TextViewControllerTests.swift b/Tests/CodeEditSourceEditorTests/Controller/TextViewControllerTests.swift index bef6615bd..aead96459 100644 --- a/Tests/CodeEditSourceEditorTests/Controller/TextViewControllerTests.swift +++ b/Tests/CodeEditSourceEditorTests/Controller/TextViewControllerTests.swift @@ -432,6 +432,24 @@ final class TextViewControllerTests: XCTestCase { XCTAssertEqual(controller.cursorPositions[1].start.column, 1) } + func test_sourceEditorUpdatesCursorPositionsFromState() { + controller.setText("1\n2\n") + controller.setCursorPositions([CursorPosition(line: 1, column: 1)]) + let editor = SourceEditor( + .constant(""), + language: .default, + configuration: Mock.config(), + state: .constant(SourceEditorState()) + ) + + editor.updateControllerWithState( + SourceEditorState(cursorPositions: [CursorPosition(line: 2, column: 1)]), + controller: controller + ) + + XCTAssertEqual(controller.cursorPositions.first?.start, CursorPosition.Position(line: 2, column: 1)) + } + // MARK: - TreeSitterClient func test_treeSitterSetUp() {