this post was submitted on 22 Oct 2023
1 points (100.0% liked)

Emacs

314 readers
2 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 1 year ago
MODERATORS
 

When editing common lisp with slime and emacs, I'd like a speedbar listing, alternately, top level definitions in the file I'm editing, and top level definitions in the package I'm looking at (which may be a superset of definitions in the file). Preferably sorted by type of definition (function, macro, constant, etc) and/or alphabetically.

Is there some emacs tooling for this? I haven't found it.

you are viewing a single comment's thread
view the rest of the comments
[–] bo-tato@alien.top 1 points 1 year ago (1 children)

I'm using doom emacs pretty much it's default setup for common lisp, and SPC-s-i is bound to consult-imenu which gives a nice fuzzy searchable listing of all top level definitions in the current file and their type (function, variable, etc).

SPC-m-h-p or sly-apropos-package will show all public symbols in a package with their docstrings. With a prefix argument it will include all private symbols also, with clickable links to go to their definition.

What I don't know is if there's a way to view all top level definitions in a whole asdf system

[–] Decweb@alien.top 1 points 1 year ago (1 children)

Are the sly presentations in a speedbar or special buffer of some kind, or just listed in the REPL?

[–] bo-tato@alien.top 1 points 1 year ago (1 children)

It looks like this, it opens a vertical popup at the bottom of the screen with fuzzy completion. Well that's just cause doom is using Vertico for completion by default, I assume with other completion frameworks or configuration it'll look different.

https://preview.redd.it/u9duaifg8vvb1.png?width=656&format=png&auto=webp&s=44c25fb889e109bec1f4c2a9665ad28921056cc4

[–] Decweb@alien.top 1 points 1 year ago (1 children)

That's the closest approximation (so far) of what I was looking for, though unfortunately I'm a slime user and haven't yet tried sly.

I'm actually surprised there isn't speedbar for CL definitions already in slime, somehow I figured it was an obvious thing I was missing, since you see that sort of thing all the time in IDE's.

[–] bo-tato@alien.top 1 points 1 year ago

I digged in a little and it seems that imenu default for imenu-prev-index-position-function is set to beginning-of-defun which is how this is working, I don't think it has anything to do with sly or slime. Then consult-imenu gives a nicer UI for imenu. I just realized there is also a consult-line-multi which will do for all buffers in the current project, which is what I was looking for. It also supports narrowing to show just functions or just variables or just macros or whatever.