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.

