File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed
Sources/CodeEditSourceEditor
Highlighting/StyledRangeContainer Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -45,6 +45,31 @@ class StyledRangeContainer {
4545 }
4646 }
4747
48+ enum RunState {
49+ case empty
50+ case value( RangeStoreRun < StyleElement > )
51+ case exhausted
52+
53+ var isExhausted : Bool {
54+ if case . exhausted = self { return true }
55+ return false
56+ }
57+
58+ var hasValue : Bool {
59+ if case . value = self { return true }
60+ return false
61+ }
62+
63+ var length : Int {
64+ switch self {
65+ case . empty, . exhausted:
66+ return 0
67+ case . value( let run) :
68+ return run. length
69+ }
70+ }
71+ }
72+
4873 var _storage : [ ProviderID : RangeStore < StyleElement > ] = [ : ]
4974 weak var delegate : StyledRangeContainerDelegate ?
5075
@@ -98,6 +123,11 @@ class StyledRangeContainer {
98123 var minValue = allRuns. compactMap { $0. last } . enumerated ( ) . min ( by: { $0. 1 . length < $1. 1 . length } )
99124
100125 while let value = minValue {
126+ // Early return if all arrays are empty
127+ guard allRuns. contains ( where: { !$0. isEmpty } ) else {
128+ return runs. reversed ( )
129+ }
130+
101131 // Get minimum length off the end of each array
102132 let minRunIdx = value. offset
103133 var minRun = value. element
Original file line number Diff line number Diff line change @@ -149,7 +149,8 @@ public struct SourceEditor: NSViewControllerRepresentable {
149149 controller. setCursorPositions ( cursorPositions)
150150 }
151151
152- if let scrollPosition = state. scrollPosition, scrollPosition != state. scrollPosition {
152+ let scrollView = controller. scrollView
153+ if let scrollPosition = state. scrollPosition, scrollPosition != scrollView? . contentView. bounds. origin {
153154 controller. scrollView. scroll ( controller. scrollView. contentView, to: scrollPosition)
154155 controller. scrollView. reflectScrolledClipView ( controller. scrollView. contentView)
155156 controller. gutterView. needsDisplay = true
You can’t perform that action at this time.
0 commit comments