Freja:用于图形化编程的可自我修改编辑器
摘要
Freja 是一个用 Janet 实现的可自我修改的文本编辑器,用于图形化编程,支持内联代码求值,目前处于测试阶段。
查看缓存全文
缓存时间: 2026/06/18 10:01
saikyun/freja
Source: https://github.com/saikyun/freja
freja
用 Janet 实现的可自我修改的文本编辑器。
社交
image
加入我们的 Discord!(https://discord.gg/YYKr25uDhj)
状态
Freja 目前处于 beta 阶段。 它很稳定,崩溃很少见。文件在打开/关闭时会备份,因此很难丢失工作。
部分功能尚缺失(打开文件时的自动补全、文件间快速切换)。 目前在 Windows 上有一个问题,使得在 Freja 内部评估代码变得困难。
目前主要适用于 Janet,没有其他语言的特定工具支持。 但它可以作为普通文本编辑器使用,我会用 Freja 写 C 代码。
尝试使用
先决条件
- Janet – https://janet-lang.org/
- 需要此 commit 或更新版本:
04ca945ecf0598e069caadb35a3c3089187a8186
- 需要此 commit 或更新版本:
- 在较新版本的 Janet 上,你需要单独安装 jpm:
- https://github.com/janet-lang/jpm
- libglfw3-dev
- (X)ubuntu:
sudo apt-get install libglfw3-dev
- (X)ubuntu:
- Raylib 依赖 – https://github.com/raysan5/raylib#installing-and-building-raylib-on-multiple-platforms
安装
[sudo] jpm install https://github.com/Saikyun/freja
如果你获得的是旧版本,请在重新运行上述命令前尝试执行 [sudo] jpm clear-cache。
从源码运行步骤
git clone https://github.com/Saikyun/freja cd freja sudo jpm deps jpm build janet freja/main.janet
注意:从源码运行 Freja 时,必须从项目目录启动。
如果你从其他目录启动,将会出现如下错误:
could not open file fonts/MplusCodeLatin60-Medium.otf
如果你想从任何位置运行 Freja,最好使用 jpm install 或 jpm build。
如果你想使用 PREFIX 以避免污染系统全局库,请查看 sogaiu 的帖子 (https://github.com/saikyun/freja/issues/30#issuecomment-907937626)。
一些示例
``
| 表示光标
1 2| 3
按下 Ctrl+Enter
#=> 2
“a b c”|
Ctrl+Enter
#=> “a b c”
“a b| c”
Ctrl+Enter
#=> b is undefined
(+ 1 2 3)|
Ctrl+Enter
#=> 6 `` 这在尝试运行文件中的示例代码或只是玩玩代码时非常有用。
主要的使用方式是打开一个文件,按下 Ctrl+L,
这将使 Freja 查看该文件的环境。
后续的 Ctrl+Enter 和 Ctrl+L 调用都会在该环境中进行。
评估环境
每当你按下 Ctrl+L 时,会执行 freja/file_handling/save-and-dofile。
这会保存文件,然后使用 Janet 的 dofile 变体运行该文件。
这导致创建一个新的环境表(使用 make-env)。
这个环境表随后在你按下 Ctrl+Enter 时被使用,
后者会调用 freja/input/eval-it。
eval-it 会执行光标左侧的代码,具体来说是一个符号、关键字、字符串、数字、结构体、表、元组(包括函数调用)或数组。
致谢
感谢 sogaiu 和 rhine 的初期测试。 <3
许可
Copyright 2020 Jona Ekenberg
特此免费授予任何获得本软件及关联文档文件(“软件”)副本的人,不受限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许被提供软件的人在满足以下条件的情况下这样做:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
该软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而导致的任何索赔、损害赔偿或其他责任负责,无论此类责任是基于合同、侵权或其他原因。
相似文章
Show HN: Juggler – 一个开源GUI代码智能体,由JUCE的创建者开发
Juggler是一个开源GUI代码智能体,提供了一个可视化工作台,用于与LLM交互以编辑代码,具有可检查的工具调用、分支线程和可编辑上下文。它可以在本地或远程运行,并支持多种模型。
fred: A text editor that uses C for everything - Handmade Network Expo 2026
Cameron Damera 在 Handmade Network Expo 2026 上演示了完全用 C 编写的文本编辑器 Fred,其核心特性包括内置 TCC 编译器、实时插件系统、动态 Tree-sitter 语言支持、撤销树和会话恢复,所有代码均手工编写,不依赖 AI。
Show HN:TikZ 编辑器 – 用于 LaTeX 图形的 WYSIWYG 编辑器
一款用于 LaTeX 中 TikZ 图形的 WYSIWYG 编辑器,可同步源代码和渲染输出,支持拖放编辑。它由 AI 编程代理(Codex)构建,旨在简化学术人员的图形创作。
为什么选择Janet?(2023)
一篇倡导Janet编程语言的文章,突出其简洁性、易于分发、通过PEG实现的强大解析能力以及优秀的子进程DSL,使其成为副项目和命令行工具的理想选择。
Wordgard: 新的浏览器内富文本编辑器,来自ProseMirror的创建者
Wordgard 是一个新的开源JavaScript富文本编辑器库,来自Marijn Haverbeke,旨在提供强大的编程接口,用于构建定制化的内容编辑器。