CodeMirror-SwiftUI is a lightweight wrapper of CodeMirror for macOS and iOS packaged for SwiftUI.
This package is a fork from CodeMirror-Swift
- 🍭 Lightweight CodeMirror wrapper (build 5.59.4)
- ✅ 100% Native Swift 5 and modern WKWebView
- 👑 Support iOS & macOS
- 🎧 Built-in addons
- 📕 100+ built-in themes and syntax highlight modes
- ⚡️ Ready to go
- Xcode 12
- Swift 5.3
CodeMirror-SwiftUI is available via Swift Package Manager
Using Xcode 12, go to File -> Swift Packages -> Add Package Dependency
and enter https://github.com/Pictarine/CodeMirror-SwiftUI
CodeMirror
gives you access to a new view called CodeView
. It can be integrated within your view body
like this :
CodeView(theme: themes[selectedTheme],
code: $codeBlock,
mode: codeMode,
fontSize: fontSize,
showInvisibleCharacters: showInvisibleCharacters,
lineWrapping: lineWrapping)
.onLoadSuccess {
print("Loaded")
}
.onContentChange { newCodeBlock in
print("Content Change")
}
.onLoadFail { error in
print("Load failed : \(error.localizedDescription)")
}
- CodeMirror v5.59.4
- Better find and replace dialog integration
- Autocompletion hints (ctrl+space)
- Reindent (ctrl+i)
- Auto close tags and brackets
CodeView has multiple params:
Parameter name | Optional | Type | Default |
---|---|---|---|
code | false | Binding | |
mode | false | Mode | |
theme | true | CodeViewTheme | .materialPalenight |
fontSize | true | Int | 12 (px) |
showInvisibleCharacters | true | Bool | true |
lineWrapping | true | Bool | true |
CodeView comes with three modifiers
onLoadSuccess { ... }
onLoadFail { ... }
onContentChange { ... }
-
macOS Demo and iOS Demo are available
-
Snip, a snippet manager for macOS is also using CodeMirror-SwiftUI
CodeMirror-SwiftUI is available under the MIT license. See the LICENSE file for more info.