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