pyfunged
pyfunged is a graphical editor and debugger for Funge program. (Well, it ends with -ed so it’s a editor, and it ends with -d so it’s a debugger. Simple, heh?)
planned features
- based on pyglet: no external dependency.
- supports vi-like key mapping (but it will also support normal key mapping, if you want)
- tailored support for funge program editing
- user can input the code towards any directions; if you type
v
, <
and so it will automatically change direction for you. (NB: backspace will work accordingly, so it traces back the flow)
- shows an expected code flow dynamically (NB: if there is an unsafe command code flow won’t extend beyond that.)
- can show flipped, mirrored and rotated (e.g. by z axis) funge space, for convenient viewing (e.g. reversed string)
- can show non-ASCII character accordingly (NB: will be shown as character code though.)
- trefunge space will be correctly shown. (yes, pyglet is based on OpenGL) no (confusing, i think) perspective mode though.
- has a built-in debugger:
- run the code with a built-in console
- view current stack stack; string will be shown concatenated (i.e. it does distinguish a cell value pushed by
Stack.push
and Stack.push_string
, but only for viewing)
- view current funge space; read and written cells are highlighted, shows visualized code path, shows multiple IPs
- step by step execution
- set and unset breakpoint, both unconditionally and conditionally (by stack contents)
key mapping
- normal mode
h
/<Left>
, j
/<Down>
, k
/<Up>
, l
/<Right>
for moving around
i
for switching to insert mode
a
is equivalent to <Space>i
<Space>
for tracing the code flow (unless there are no or 2+ candidates)
<Bksp>
for tracing the code flow back (unless there are no or 2+ candidates)
:
for switching to command mode
<F5>
for executing the code (execution mode)
- insert mode
- any key for inserting a character
<Left>
, <Down>
, <Up>
, <Right>
for moving around
<Esc>
for switching to normal mode
- command mode
- execution mode
<Esc>
for switching to debugger mdoe
<F5>
…
- debugger mode