Hello,
I submit for review a new contrib I've been working on, an interactive dialog for examining the tree of collected traces. It's inspired by Allegro's trace dialog.
Here's a screenshot: http://i.imgur.com/ycIzzOf.png
It's probably still a little rough around the edges, but is proving really useful for my work, and integrates well with the rest of slime. The best way to understand how it works is to try it out:
* apply the patch attached to any recent slime * point a git slime to the "slime-trace-dialog" branch at http://github.com/capitaomorte/slime
slime-trace-dialog is automatically loaded by the slime-fancy contrib:
* specs are traced/untraced with C-c M-t, works like C-c C-t * open the dialog with C-c T, or M-x slime-trace-dialog * click on the interactive parts of the dialog, to control trace collection and inspect objects.
It needs emacs 24 for its lexical-binding feature. I've tested with sbcl, allegro, and clisp.
The swank-side of the contrib, swank-trace-dialog.lisp, uses a new group of interfaces in swank-backend.lisp, WRAP, UNWRAP and WRAPPED-P. There is a default implementation for each one, but the allegro implementation is best, and allows tracing of complex specs using the slime-fancy-trace contrib. sbcl's implementation is second best.
I added these interfaces so they can assist in writing future extensions, like maybe a simple interactive profiler.
Thanks, João
On Thu, Nov 21 2013, João Távora wrote:
[...]
It's probably still a little rough around the edges, but is proving really useful for my work, and integrates well with the rest of slime. The best way to understand how it works is to try it out:
- apply the patch attached to any recent slime
Those are git patches and apparently neither M-x epatch nor the command line version of patch can work with them. So I haven't actually tried it.
To add this to the main repo, all lines in source files need to have less than 80 characters, otherwise I can't commit it. I don't see any other obvious problems.
Helmut
Helmut Eller eller.helmut@gmail.com writes:
- apply the patch attached to any recent slime
Those are git patches and apparently neither M-x epatch nor the command line version of patch can work with them. So I haven't actually tried it.
You can apply the patch with
patch -p1 < ~/Downloads/slime-trace-dialog.diff
...and two conflicts will results in contrib/slime-fancy.el and swank.lisp. I don't know why, but these hunks can be applied by opening the patch file in emacs, cd-ing to the slime dir and applying the offending hunks manually.
Also the patch file had DOS newlines for some reason.
But you're right, and since I have to adjust to 80 characters as well, I will provide patches from the cvs tree with cvs diff -u (or do you prefer any other command?)
I don't see any other obvious problems.
That's promising :)
Thanks, João
Those are git patches and apparently neither M-x epatch nor the command line version of patch can work with them. So I haven't actually tried it.
[...] will provide patches from the cvs tree with cvs diff -u (or do you prefer any other command?)
Helmut,
Here is a new patch I generated from a local copy of the CVS repo with the command 'cvs diff -b -u5 -N' (edited the contrib/CVS/Entries manually to make it catch new files).
I cleaned up the whitespace to 80 columns.
Let me know if it's OK.
João
eller.helmut@gmail.com writes:
To add this to the main repo, all lines in source files need to have less than 80 characters, otherwise I can't commit it. I don't see any other obvious problems.
I cleaned up the whitespace to 80 columns.
Let me know if it's OK.
Ping?
I don't want to be pushy, but has anyone taken a look at this in the past two weeks?
Thanks, João