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.

  • bo-tato@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    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.topOPB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

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

        • Decweb@alien.topOPB
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          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.topB
            link
            fedilink
            English
            arrow-up
            1
            ·
            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.