diff --git a/Sources/Runestone/StringSyntaxHighlighter.swift b/Sources/Runestone/StringSyntaxHighlighter.swift index 000122d47..54994ab3e 100644 --- a/Sources/Runestone/StringSyntaxHighlighter.swift +++ b/Sources/Runestone/StringSyntaxHighlighter.swift @@ -27,7 +27,7 @@ public final class StringSyntaxHighlighter { /// - language: The language to use when parsing the text /// - languageProvider: Object that can provide embedded languages on demand. A strong reference will be stored to the language provider.. public init( - theme: Theme = DefaultTheme(), + theme: Theme = DefaultTheme.share, language: TreeSitterLanguage, languageProvider: TreeSitterLanguageProvider? = nil ) { diff --git a/Sources/Runestone/TextView/Appearance/DefaultTheme.swift b/Sources/Runestone/TextView/Appearance/DefaultTheme.swift index b392ec33f..2492b0d47 100644 --- a/Sources/Runestone/TextView/Appearance/DefaultTheme.swift +++ b/Sources/Runestone/TextView/Appearance/DefaultTheme.swift @@ -18,6 +18,8 @@ public final class DefaultTheme: Runestone.Theme { public let selectionColor = UIColor(themeColorNamed: "selection") public init() {} + + public static let share = DefaultTheme() // swiftlint:disable:next cyclomatic_complexity public func textColor(for highlightName: String) -> UIColor? { diff --git a/Sources/Runestone/TextView/Core/LayoutManager.swift b/Sources/Runestone/TextView/Core/LayoutManager.swift index 6ee8f1f8f..7d91343f1 100644 --- a/Sources/Runestone/TextView/Core/LayoutManager.swift +++ b/Sources/Runestone/TextView/Core/LayoutManager.swift @@ -35,7 +35,7 @@ final class LayoutManager { } } } - var theme: Theme = DefaultTheme() { + var theme: Theme = DefaultTheme.share { didSet { if theme !== oldValue { gutterBackgroundView.backgroundColor = theme.gutterBackgroundColor diff --git a/Sources/Runestone/TextView/Core/TextView.swift b/Sources/Runestone/TextView/Core/TextView.swift index 69bfdcfd4..4448e761b 100644 --- a/Sources/Runestone/TextView/Core/TextView.swift +++ b/Sources/Runestone/TextView/Core/TextView.swift @@ -641,7 +641,7 @@ open class TextView: UIScrollView { /// Create a new text view. /// - Parameter frame: The frame rectangle of the text view. override public init(frame: CGRect) { - textInputView = TextInputView(theme: DefaultTheme()) + textInputView = TextInputView(theme: DefaultTheme.share) super.init(frame: frame) backgroundColor = .white textInputView.delegate = self diff --git a/Sources/Runestone/TextView/LineController/LineController.swift b/Sources/Runestone/TextView/LineController/LineController.swift index a837661ec..a673e12fc 100644 --- a/Sources/Runestone/TextView/LineController/LineController.swift +++ b/Sources/Runestone/TextView/LineController/LineController.swift @@ -25,7 +25,7 @@ final class LineController { } } } - var theme: Theme = DefaultTheme() { + var theme: Theme = DefaultTheme.share { didSet { syntaxHighlighter?.theme = theme applyThemeToAllLineFragmentControllers() diff --git a/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift b/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift index e77967289..711160187 100644 --- a/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift +++ b/Sources/Runestone/TextView/SyntaxHighlighting/Internal/PlainText/PlainTextSyntaxHighlighter.swift @@ -2,7 +2,7 @@ import CoreGraphics import Foundation final class PlainTextSyntaxHighlighter: LineSyntaxHighlighter { - var theme: Theme = DefaultTheme() + var theme: Theme = DefaultTheme.share var kern: CGFloat = 0 var canHighlight: Bool { false diff --git a/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlighter.swift b/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlighter.swift index f0bc23781..368871ec1 100644 --- a/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlighter.swift +++ b/Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterSyntaxHighlighter.swift @@ -15,7 +15,7 @@ enum TreeSitterSyntaxHighlighterError: LocalizedError { } final class TreeSitterSyntaxHighlighter: LineSyntaxHighlighter { - var theme: Theme = DefaultTheme() + var theme: Theme = DefaultTheme.share var kern: CGFloat = 0 var canHighlight: Bool { languageMode.canHighlight