[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7009":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":32,"discoverSource":33},7009,"Runestone","simonbs\u002FRunestone","simonbs","📝 Performant plain text editor for iOS with syntax highlighting, line numbers, invisible characters and much more.","",null,"Swift",3154,211,21,31,0,3,33,2,28.98,"MIT License",false,"main",true,[26,27,28],"ios","swift","tree-sitter","2026-06-12 02:01:33","![](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Fraw\u002Fmain\u002FSources\u002FRunestone\u002FDocumentation.docc\u002FResources\u002Fhero.png)\n\n### 👋 Welcome to Runestone - a performant plain text editor for iOS with code editing features\n\nRunestone uses GitHub's [Tree-sitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter\u002F) 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.\n\n[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fsimonbs%2FRunestone%2Fbadge%3Ftype%3Dswift-versions)](https:\u002F\u002Fswiftpackageindex.com\u002Fsimonbs\u002FRunestone)\n[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fsimonbs%2FRunestone%2Fbadge%3Ftype%3Dplatforms)](https:\u002F\u002Fswiftpackageindex.com\u002Fsimonbs\u002FRunestone)\n[![Build and Test](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_and_test.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_and_test.yml)\n[![Build Documentation](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_documentation.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_documentation.yml)\n[![Build Example Project](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_example_project.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fbuild_example_project.yml)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fcodeql.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fcodeql.yml)\n[![SwiftLint](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fswiftlint.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsimonbs\u002FRunestone\u002Factions\u002Fworkflows\u002Fswiftlint.yml)\n[![Twitter](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTwitter-@simonbs-blue.svg?style=flat)](https:\u002F\u002Ftwitter.com\u002Fsimonbs)\n[![Mastodon](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMastodon-@simonbs-blue.svg?style=flat)](https:\u002F\u002Fmastodon.social\u002F@simonbs)\n\n## ✨ Features\n\n- Syntax highlighting.\n- Line numbers.\n- Highlight the selected line.\n- Show invisible characters (tabs, spaces and line breaks).\n- Insertion of character pairs, e.g. inserting the trailing quotation mark when inserting the leading.\n- Customization of colors and fonts.\n- Toggle line wrapping on and off.\n- Adjust height of lines.\n- Add a page guide.\n- Add vertical and horizontal overscroll.\n- Highlight ranges in the text view.\n- Search the text using regular expressions.\n- Automatically detects if a file is using spaces or tabs for indentation.\n- Specify line endings (CR, LF, CRLF) to use when inserting a line break.\n- Automatically detect line endings in a text.\n\n## 🚀 Getting Started\n\nPlease refer to the [Getting Started](https:\u002F\u002Fdocs.runestone.app\u002Fdocumentation\u002Frunestone\u002Fgettingstarted) article in the documentation and the [Meet Runestone](https:\u002F\u002Fdocs.runestone.app\u002Ftutorials\u002Fmeet-runestone) series of tutorials.\n\n## 📖 Documentation\n\nThe documentation of all public types is available at [docs.runestone.app](https:\u002F\u002Fdocs.runestone.app). The documentation is generated from the Swift code using Apple's [DocC documentation compiler](https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fdocc).\n\n## 🏎 Performance\n\nRunestone 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](https:\u002F\u002Fgithub.com\u002Ficsharpcode\u002FAvalonEdit\u002Fblob\u002Fmaster\u002FICSharpCode.AvalonEdit\u002FDocument\u002FDocumentLineTree.cs).\n\nWhen 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.\n\n## 🖥 Catalyst\n\nThe 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.\n\n## 📱 Projects\n\nThe 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.\n\n\u003Ca href=\"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Frunestone-editor\u002Fid1548193893\" target=\"_blank\">\u003Cimg width=\"150\" alt=\"Runestone app icon\" src=\"Assets\u002Frunestone-editor-app-icon.png\"\u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Frunestone-editor\u002Fid1548193893\" target=\"_blank\">\u003Cimg width=\"150\" alt=\"Download on the App Store\" src=\"https:\u002F\u002Fdeveloper.apple.com\u002Fassets\u002Felements\u002Fbadges\u002Fdownload-on-the-app-store.svg\"\u002F>\u003C\u002Fa>\n\n## 👨‍💻 Contributing\n\nPull 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.\n\nClone 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 `--recursive` option when cloning the repository to clone all submodules.\n\n```bash\ngit clone --recursive git@github.com:simonbs\u002FRunestone.git\n```\n\n## ❤️ Acknowledgments\n\n- [Tree-sitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter) is used to parse code incrementally.\n- Line management is translated to Swift from [AvalonEdit](https:\u002F\u002Fgithub.com\u002Ficsharpcode\u002FAvalonEdit).\n- [swift-tree-sitter](https:\u002F\u002Fgithub.com\u002Fviktorstrate\u002Fswift-tree-sitter) and [SwiftTreeSitter](https:\u002F\u002Fgithub.com\u002FChimeHQ\u002FSwiftTreeSitter) which have served as inspiration for the Tree-sitter bindings.\n- Detection of indent strategy inspired by [auto-detect-indentation](https:\u002F\u002Fgithub.com\u002Fjtokoph\u002Fauto-detect-indentation).\n- And last (but not least!), thanks a ton to [Alexander Blach](https:\u002F\u002Ftwitter.com\u002FLextar) (developer of [Textastic](https:\u002F\u002Fwww.textasticapp.com)), [Till Konitzer](https:\u002F\u002Ftwitter.com\u002Fknutknatter) (developer of [Essayist](https:\u002F\u002Fwww.essayist.app)), [Greg Pierce](https:\u002F\u002Ftwitter.com\u002Fagiletortoise) (developer of [Drafts](https:\u002F\u002Fgetdrafts.com)) and [Max Brunsfeld](https:\u002F\u002Ftwitter.com\u002Fmaxbrunsfeld) (developer of [Tree-sitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter\u002F)) for pointing me in the right direction when I got stuck.\n","Runestone 是一个针对 iOS 平台的高性能纯文本编辑器，支持语法高亮、行号显示和不可见字符展示等功能。它利用 GitHub 的 Tree-sitter 技术将代码解析为语法树，从而实现诸如语法高亮等需要理解代码结构的功能。用户可以自定义颜色与字体，并调整行间距及启用换行功能等。此外，该编辑器还提供了正则表达式搜索、自动检测文件缩进方式以及指定行尾符等功能。Runestone 适用于需要在 iOS 设备上进行代码编写或查看的开发者，特别适合那些追求高效编码体验和技术文档阅读的场景。","2026-06-11 03:10:07","top_language"]