Files
lix/doc/manual/rl-next/repl-relative-st.md
T
blokyk daadfed9ae libcmd/repl: allow :st argument to be relative to current stack index
See [lix-project/lix#1156], but basically currently the `:st <n>`
debugger command doesn't allow any negative indices, and putting a plus
sign in front of the arg doesn't change anything; thus, we can exploit
that "design space" to allow users to move between different stack
frames easily, by simply prepending their arg with a +/- sign.

The actual behavior is little more nuanced when you account for errors:
as suggested by @pennae (thanks! :), when the user inputs an offset that
would result in an invalid frame index, the debugger instead clamps it
to the closest bound (i.e. 0 for negative offsets, $maxFrame for
positive ones) and just prints a warning.

Fixes #1156

[lix-project/lix#1156]: https://git.lix.systems/lix-project/lix/issues/1156

Change-Id: I02a0cdb6aaebbdb0515308880a3bf9c0d2fcd25e
2026-03-20 18:22:24 +01:00

789 B

synopsis, issues, cls, category, credits
synopsis issues cls category credits
Allow moving between stack frames relative to current debugger frame
1156
5411
Improvements
blokyk

Debugging functional programs often involve switching between a bunch of stack frames to get the full context of what's happening and who's calling who. Before this change, going up or down the stack in the nix debugger with :st meant remembering the absolute index of each stack frame, instead of their positions relative to one another; this got tiring fast.

Now, you can prepend :st's argument with a + or - sign to indicate you want to move relative to the current stack frame. For example, typing :st +3 when you were on frame 10 will go frame 13; vice-versa, typing :st -4 on frame 6 will go to frame 2.