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