Freja:用于图形化编程的可自我修改编辑器

Lobsters Hottest 工具

摘要

Freja 是一个用 Janet 实现的可自我修改的文本编辑器,用于图形化编程,支持内联代码求值,目前处于测试阶段。

<p>更多特性,请参见:<a href="https://github.com/sogaiu/freja-stedit" rel="ugc">https://github.com/sogaiu/freja-stedit</a></p> <p><a href="https://lobste.rs/s/3ohaar/freja_self_modifiable_editor_for_coding">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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
  • 在较新版本的 Janet 上,你需要单独安装 jpm:
    • https://github.com/janet-lang/jpm
  • libglfw3-dev
    • (X)ubuntu:sudo apt-get install libglfw3-dev
  • 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 installjpm 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+EnterCtrl+L 调用都会在该环境中进行。

评估环境

每当你按下 Ctrl+L 时,会执行 freja/file_handling/save-and-dofile。 这会保存文件,然后使用 Janet 的 dofile 变体运行该文件。 这导致创建一个新的环境表(使用 make-env)。 这个环境表随后在你按下 Ctrl+Enter 时被使用, 后者会调用 freja/input/eval-iteval-it 会执行光标左侧的代码,具体来说是一个符号、关键字、字符串、数字、结构体、表、元组(包括函数调用)或数组。

致谢

感谢 sogaiu 和 rhine 的初期测试。 <3

许可

Copyright 2020 Jona Ekenberg

特此免费授予任何获得本软件及关联文档文件(“软件”)副本的人,不受限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许被提供软件的人在满足以下条件的情况下这样做:

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

该软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而导致的任何索赔、损害赔偿或其他责任负责,无论此类责任是基于合同、侵权或其他原因。

相似文章

为什么选择Janet?(2023)

Hacker News Top

一篇倡导Janet编程语言的文章,突出其简洁性、易于分发、通过PEG实现的强大解析能力以及优秀的子进程DSL,使其成为副项目和命令行工具的理想选择。