@@ -9,7 +9,6 @@ import AppKit
99import SwiftUI
1010import Combine
1111import STTextView
12- import SwiftTreeSitter
1312import CodeEditLanguages
1413import TextFormation
1514
@@ -97,7 +96,7 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
9796 internal var highlighter : Highlighter ?
9897
9998 /// The provided highlight provider.
100- private var highlightProvider : HighlightProviding ?
99+ internal var highlightProvider : HighlightProviding ?
101100
102101 // MARK: Init
103102
@@ -183,7 +182,6 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
183182 textView. selectedLineHighlightColor = theme. lineHighlight
184183 textView. string = self . text. wrappedValue
185184 textView. isEditable = self . isEditable
186- textView. widthTracksTextView = self . wrapLines
187185 textView. highlightSelectedLine = true
188186 textView. allowsUndo = true
189187 textView. setupMenus ( )
@@ -223,6 +221,7 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
223221 queue: . main) { [ weak self] _ in
224222 guard let self = self else { return }
225223 ( self . view as? NSScrollView ) ? . contentView. contentInsets. bottom = self . bottomContentInsets
224+ self . updateTextContainerWidthIfNeeded ( )
226225 }
227226
228227 NotificationCenter . default. addObserver (
@@ -232,10 +231,19 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
232231 ) { [ weak self] _ in
233232 self ? . updateCursorPosition ( )
234233 }
234+
235+ NotificationCenter . default. addObserver (
236+ forName: NSView . frameDidChangeNotification,
237+ object: ( self . view as? NSScrollView ) ? . verticalRulerView,
238+ queue: . main
239+ ) { [ weak self] _ in
240+ self ? . updateTextContainerWidthIfNeeded ( )
241+ }
235242 }
236243
237- public override func viewDidAppear( ) {
238- super. viewDidAppear ( )
244+ public override func viewWillAppear( ) {
245+ super. viewWillAppear ( )
246+ updateTextContainerWidthIfNeeded ( )
239247 }
240248
241249 public func textViewDidChangeText( _ notification: Notification ) {
@@ -299,6 +307,7 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
299307 }
300308
301309 highlighter? . invalidate ( )
310+ updateTextContainerWidthIfNeeded ( )
302311 }
303312
304313 /// Gets all attributes for the given capture including the line height, background color, and text color.
@@ -324,37 +333,6 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
324333 ( ( self . lineHeight) - font. lineHeight) / 2
325334 }
326335
327- // MARK: - Highlighting
328-
329- /// Configures the `Highlighter` object
330- private func setUpHighlighter( ) {
331- self . highlighter = Highlighter ( textView: textView,
332- highlightProvider: highlightProvider,
333- theme: theme,
334- attributeProvider: self ,
335- language: language)
336- }
337-
338- /// Sets the highlight provider and re-highlights all text. This method should be used sparingly.
339- public func setHighlightProvider( _ highlightProvider: HighlightProviding ? = nil ) {
340- var provider : HighlightProviding ?
341-
342- if let highlightProvider = highlightProvider {
343- provider = highlightProvider
344- } else {
345- let textProvider : ResolvingQueryCursor . TextProvider = { [ weak self] range, _ -> String ? in
346- return self ? . textView. textContentStorage. textStorage? . mutableString. substring ( with: range)
347- }
348-
349- provider = TreeSitterClient ( codeLanguage: language, textProvider: textProvider)
350- }
351-
352- if let provider = provider {
353- self . highlightProvider = provider
354- highlighter? . setHighlightProvider ( provider)
355- }
356- }
357-
358336 // MARK: Selectors
359337
360338 override public func keyDown( with event: NSEvent ) {
0 commit comments