Hi, I finally decided to have a test-drive of slime, and I must say installation went _very_ smootly with cmucl-18e. This feels almost like opening the christmas-loot. That's about as far as I've come, but one thing that struck me was that M-, is not "FIND-NEXT-*".
I remember the keybindings being posted several times for comments somewhere (comp.lang.lisp I guess). At the time I was not paying attention, so feel free to file this under "too late", but just as one data-point I'll let you know that I would like it if slime switched from using the slime-specific "SLIME-FIND-DEFINITION-HISTORY-RING" into using the normal GLOBAL-MARK-RING. That way one could use C-X C-SPC for popping back, and have M-, free for some future SLIME-EDIT-NEXT-FDEFINITION. I know there have been cases where I had a previous and a current version of some system open, and being able to jump from a call-site to both old and new easily saved a _lot_ of time. That was using ilisp. There is also the case of g-fs that can legitimately have several methods with the same "name".
"Håkon Alstadheim" haalst@online.no writes:
That's about as far as I've come, but one thing that struck me was that M-, is not "FIND-NEXT-*".
I knew this day would come :-)
... I would like it if slime switched from using the slime-specific "SLIME-FIND-DEFINITION-HISTORY-RING" into using the normal GLOBAL-MARK-RING. That way one could use C-X C-SPC for popping back, and have M-, free for some future SLIME-EDIT-NEXT-FDEFINITION.
`pop-global-mark' isn't really the same thing though, since the global mark ring only gets pushed if you have switched buffers. I often chase through several definitions in the same file and want to step back one at a time.
Our M-, is really like M-* (pop-tag-mark) with etags. The idea of using M-, instead of M-* was that it's easier to reach after pressing `M-.'. I think M-* is a really awkward binding.
Now we've also added a command that goes to the next definition (like M-, in etags) on `C-M-.'. Perhaps it would be good to swap our bindings of `M-,' and `C-M-.'.
Any thoughts/objections to that idea?
(I think C-M-. can only be entered in a window system, and not in an 8-bit terminal. M-* could also be bound as an alternative.)
Cheers, Luke
Luke Gorrie luke@bluetail.com writes:
Now we've also added a command that goes to the next definition (like M-, in etags) on `C-M-.'.
Hmm, well, etags has C-M-. as `find-tag-regexp'. Conceivably we could do a command like that too.
Whaddayareckon, can we push through a rebellion against etags bindings, or is resistance futile (and annoying)?
Luke Gorrie luke@bluetail.com writes:
Now we've also added a command that goes to the next definition (like M-, in etags) on `C-M-.'.
C-M-. is currently broken. My fault; will fix.
Hmm, well, etags has C-M-. as `find-tag-regexp'. Conceivably we could do a command like that too.
If there only where a regexp library on the CL side :-)
Whaddayareckon, can we push through a rebellion against etags bindings, or is resistance futile (and annoying)?
I like our current bindings. I think I need "pop definition" (M-,) more often than the "find next" command and "pop definition" should be on the more convenient key. After all, many symbols have only one definition. We also show all definitions in an extra buffer if there are more than one; this makes the "find next" command less important.
OTOH, if we keep the current bindings we get discussions like this one. I'd say we add optional etags compatibility stuff, but make our bindings the default.
Helmut.
Helmut Eller e9626484@stud3.tuwien.ac.at writes:
I like our current bindings.
[...]
I'd say we add optional etags compatibility stuff, but make our bindings the default.
Agreed.
To really make etags users happy requires a lot of extra touches that I don't like myself, e.g. always prompting for the tag. People with well-trained etags reflexes seem to always do `M-. RET' to find a definition, so with our non-prompting interface they'd jump to the definition and then accidentally insert a newline. (Seen this a lot with friends using Distel, which has the same tags bindings as SLIME.)
So let's go our own current way by default and support etags-style bindings/prompting as a configuration option for people whose fingers are already trained.
-Luke
Helmut Eller writes:
I like our current bindings. I think I need "pop definition" (M-,) more often than the "find next" command and "pop definition" should be on the more convenient key.
FWIW, I concur, and I probably use find-next a lot more than helmut (our code has generic functions galore). I'd happy with C-M-. being find next, and would stick some find-regex on some awkward binding.
Just my 0.02c.
Luke Gorrie luke@bluetail.com writes:
Now we've also added a command that goes to the next definition (like M-, in etags) on `C-M-.'.
Hmm, well, etags has C-M-. as `find-tag-regexp'. Conceivably we could do a command like that too.
Whaddayareckon, can we push through a rebellion against etags bindings, or is resistance futile (and annoying)?
If it bugs me enough (i.e. I actually start using slime for all my lisp stuff and the keybindings bug me) I'll submit a patch for an option variable, e.g. slime-mimic-etags, which could be set to t automatically whenever emacs-nit-picker was t :-)
P.S: My first priority in making myself athome in slime is something else, see my next post.