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