STTextView Source Code Syntax Highlighting with TreeSitter, Neon and CodeEditLanguages.
Most code in this repo is borrowed from STTextView-Plugin-Neon, with some adaptations to work with CodeEditLanguages.
Add the plugin package as a dependency of your application, then register/add it to the STTextView instance:
import NeonCodeEditLanguagesPlugin
textView.addPlugin(
NeonCodeEditLanguagesPlugin(
theme: .default,
language: .go
)
)
SwiftUI:
import SwiftUI
import STTextViewUI
import NeonCodeEditLanguagesPlugin
struct ContentView: View {
@State private var text: AttributedString = ""
@State private var selection: NSRange?
var body: some View {
STTextViewUI.TextView(
text: $text,
selection: $selection,
options: [.wrapLines, .highlightSelectedLine],
plugins: [NeonCodeEditLanguagesPlugin(theme: .default, language: .go)]
)
.textViewFont(.monospacedDigitSystemFont(ofSize: NSFont.systemFontSize, weight: .regular))
.onAppear {
loadContent()
}
}
private func loadContent() {
// (....)
self.text = AttributedString(string)
}
}