First, have a *slime-locations* buffer or similar, which contains references to positions in files/other buffers:
(defun process-toplevel-form ...) [src/compiler/main.lisp] (macrolet ...) [src/compiler/ir1tran.lisp] (defun %compile ...) [src/compiler/main.lisp]
one position per line. One should be able to:
* kill/yank these lines to delete and reorder them. * hit Enter/Space as in an XREF buffer to jump to the location. * save/load these buffers into files. * add current location in a file into the buffer.
For extra points things like C-c C-c in the buffer would be interpreted as the relavant command in the location referred to be the current line.
One could use the buffer to maintain a shortlist of relevant locations in the source, etc.
For example: I often work on SBCL by editing the live source and recompiling stuff on the fly. Every once and a while I mess up my session, however, and need to restart -- which means hunting through buffers for the definitions to recompile. This is often order-sensitive: add an optional argument to one function, then recompile the callers to pass that thing in, etc. When working on certain bits I may be restarting every few minutes! If I could record those locations in a buffer like this, the workflow would be much nicer!
Now that I've written this down I'm guessing that aside from slime-compile-all-locations something like this probably exists as a generic Emacs feature. What is it called?
Cheers,
-- Nikodemus