SwiftyMonaco is a wrapper for Monaco Editor from Microsoft.
There is a simple example of how to use SwiftyMonaco
import SwiftUI
struct EditorView: View {
@State var text: String
var body: some View {
SwiftyMonaco(text: $text)
}
}Remember! You should allow outgoing internet connections in your app before using this library, because Monaco Editor runs inside WKWebView and macOS considers it as an outgoing internet connection (Network -> Outgoing connections (Client)):
Also you can use SwiftyMonaco with syntax highlighting by passing SyntaxHighlight rule:
import SwiftUI
struct EditorView: View {
@State var text: String
var body: some View {
SwiftyMonaco(text: $text)
.syntaxHighlight(.systemVerilog)
}
}SyntaxHighlight |
Language |
|---|---|
.swift |
Swift |
.cpp |
C++ |
.systemVerilog |
Verilog/SystemVerilog |
To create your own SyntaxHighlight you can use available initializers:
// With JS file containing syntax definition for Monarch
let syntax = SyntaxHighlight(title: "My custom language", fileURL: Bundle.module.url(forResource: "lang", withExtension: "js", subdirectory: "Languages")!)
// With a String containing syntax definition for Monarch
let syntax = SyntaxHighlight(title: "My custom language", configuration: "...")You can create your own syntax at Monaco Editor Monarch website
SwiftyMonaco automatically detects interface theme changes and updates Monaco Editor theme according to it without dropping the current state of the editor.

