Bambu Bar
Monitor Bambu Lab printers from your Mac menu bar: print progress, the live camera, AMS filament, alerts and desktop widgets. Bambu Bar for macOS 26+.
翻訳待ち
📝 Performant plain text editor for iOS with syntax highlighting, line numbers, invisible characters and much more.
翻訳待ち
生産性Swift · ShellGitHub @simonbs自分でインストール所有者未確認
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Runestone uses GitHub's Tree-sitter to parse code to a syntax tree which is used for features that require an understanding of the code in the editor, for example syntax highlighting.
Please refer to the Getting Started article in the documentation and the Meet Runestone series of tutorials.
The documentation of all public types is available at docs.runestone.app. The documentation is generated from the Swift code using Apple's DocC documentation compiler.
Open Example/Example.xcodeproj in Xcode and run the Example scheme to try Runestone. The Folding Examples submenu in the ellipsis menu contains JavaScript and Markdown documents with code folding enabled. You can turn folding on or off using the Code Folding setting in the same menu.
To add folding to your own text view, set textView.isCodeFoldingEnabled to true and use a language with a folding query. Refer to the Code Folding article for more information.
To inspect a local UTF-8 document without saving it to preferences, install the Example and copy the file into its Documents directory:
device='<simulator UDID>'
container=$(xcrun simctl get_app_container "$device" dk.simonbs.Example data)
cp '/path/to/large-file.json' "$container/Documents/large-file.json"
SIMCTL_CHILD_RUNESTONE_DOCUMENT=large-file.json xcrun simctl launch "$device" dk.simonbs.Example
When opening a document this way, the example shows Jump to Top and Jump to Bottom commands and enables line wrapping and line numbers. Set RUNESTONE_WRAP_LINES=0 to turn off line wrapping. Use a .md or .markdown extension for Markdown documents.
Runestone was built to be fast. Its good performance is by far mostly thanks to Tree-sitter's incremental parsing and AvalonEdit's approach for managing lines in a document.
When judging the performance of Runestone, it is key to build your app in the release configuration. The optimizations applied by the compiler when using the release configuration becomes very apparent when opening large documents.
The project should mostly work with Catalyst on the Mac, however, it isn't fully tested and the implementation isn't considered done. The focus is currently on the iPhone and iPad.
The Runestone framework is used by an app of the same name. The Runestone app is a plain text editor for iPhone and iPad that uses all the features of this framework.
Pull requests with bugfixes and new features are much appreciated. I'll be happy to review them and merge them once they're ready, as long as they contain change that fit within the vision of Runestone and provide generally useful functionality.
Clone the repository to get started working on the project. Note that Runestone depends on Tree-sitter through a submodule. This submodule must be cloned as well before Runestone can be built. Pass the --recurse-submodules option when cloning the repository to clone all submodules.
git clone --recurse-submodules https://github.com/simonbs/Runestone.git
For an existing checkout, initialize or update the submodule to the commit recorded by Runestone:
git submodule update --init --recursive
SwiftPM initializes submodules automatically when resolving Runestone as a Git dependency. Downloaded GitHub source ZIP/tar archives omit submodule contents; use a Git checkout to build from source.