👋 欢迎使用Runestone - 一款适用于iOS的高性能纯文本编辑器,具有代码编辑功能
Runestone使用GitHub的Tree-sitter将代码解析为语法树,用于需要理解编辑器中代码的功能,例如语法高亮。
✨ 功能
- 语法高亮。
- 行号。
- 高亮选中的行。
- 显示不可见字符(制表符、空格和换行符)。
- 插入字符对,例如插入前引号时自动插入后引号。
- 自定义颜色和字体。
- 开启和关闭自动换行。
- 调整行高。
- 添加页面指引。
- 添加垂直和水平过度滚动。
- 在文本视图中高亮范围。
- 使用正则表达式搜索文本。
- 自动检测文件是否使用空格或制表符进行缩进。
- 指定插入换行符时使用的行尾(CR、LF、CRLF)。
- 自动检测文本中的行尾。
🚀 入门
请参阅文档中的入门文章和认识Runestone系列教程。
📖 文档
所有公共类型的文档可在docs.runestone.app上找到。文档使用Apple的DocC文档编译器从Swift代码生成。
🏎 性能
Runestone旨在实现高速运行。其出色的性能主要归功于Tree-sitter的增量解析和AvalonEdit管理文档中行的方法。
在评估Runestone的性能时,关键是要在发布配置下构建您的应用。使用发布配置时编译器应用的优化在打开大型文档时变得非常明显。
🖥 Catalyst
该项目应该在Mac上的Catalyst平台上基本可用,但尚未完全测试,实现也不被视为完成。目前重点关注iPhone和iPad。
📱 项目
Runestone框架被一个同名应用程序使用。Runestone应用是一款适用于iPhone和iPad的纯文本编辑器,使用了此框架的所有功能。
👨💻 贡献
非常欢迎提交包含错误修复和新功能的拉取请求。我很乐意审查并在准备就绪后合并它们,只要它们包含符合Runestone愿景并提供普遍有用功能的更改。
克隆仓库以开始处理项目。请注意,Runestone通过子模块依赖Tree-sitter。在构建Runestone之前,还必须克隆此子模块。克隆仓库时传递--recursive
选项以克隆所有子模块。
git clone --recursive git@github.com:simonbs/Runestone.git
❤️ 致谢
- Tree-sitter用于增量解析代码。
- 行管理从AvalonEdit翻译成Swift。
- swift-tree-sitter和SwiftTreeSitter为Tree-sitter绑定提供了灵感。
- 缩进策略检测灵感来自auto-detect-indentation。
- 最后(但同样重要!),非常感谢Alexander Blach(Textastic的开发者)、Till Konitzer(Essayist的开发者)、Greg Pierce(Drafts的开发者)和Max Brunsfeld(Tree-sitter的开发者)在我遇到困难时指点迷津。