emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Generalizing find-definition


From: Helmut Eller
Subject: Re: Generalizing find-definition
Date: Mon, 03 Nov 2014 08:03:34 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)

On Sun, Nov 02 2014, Stefan Monnier wrote:

>> In my experience, tags-loop-continue is rather hard to use and I have
>> long argued to get rid of it and replace it with a better UI.
>> E.g. tags-loop-continue must be pressed multiple times just to find out
>> at the end that none of the offered candidates was relevant.  SLIME does
>> it differently: the list of all candidates is displayed in a separate
>> buffer with one candidate per line; a bit like the results of a search
>> engine like Google.  The user must then move the cursor to the
>> interesting line and press RET to actually jump to the definition.  If
>> there's only a single candidate, then there's no need to display the
>> list and we can jump to the candidate right away.  SLIME has no analog
>> to tags-loop-continue (and no key binding for it) because it's not
>> needed; at least nobody ever asked for such a command.
>
> I agree that tags-loop-continue is not super convenient.
> What key-binding does SLIME use to get this list buffer (which would
> most naturally be implemented as a kind of grep/compilation-mode buffer)?
> Would C-u M-. be usable for that?

M-. brings up the list (if there are multiple candidates; if there's a
single candidate then no list is displayed).  We use C-u M-. to read the
symbol from the minibuffer (as opposed to parsing it from context around
point).

We also have a group of bindings for similar but not so important
commands:

 C-c C-w c  -- who calls (lists callers)
 C-c C-w w  -- calls who (lists functions called by the current function)
 C-c C-w r  -- who references (for global variables)
 C-c C-w s  -- who sets (for global variables)
 C-c C-w b  -- who binds (for dynamic variables)
 C-c C-w s  -- who specializes (lists methods specialized for a specific class)
 C-c <      -- list callers
 C-c >      -- list callees

The C-c < and C-c C-w c do conceptually the same but one is implemented
with an index (like tags) and the other by scanning and inspecting
function objects on the heap.  Different commands for historical
reasons.

Helmut




reply via email to

[Prev in Thread] Current Thread [Next in Thread]