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.

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

      Nice tips for future use though not quite what I’m looking for (though the prefix tip is one I’ll have to remember).

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

      Is that just hyerspec?

      You could alternatively install info version from an old Wiegley’s thing called ready-lisp. Then you have it directly in Emacs, working as any other info manual.

      Another option is to open the web version of files in eww. It is then still in Emacs, so you skip the web server and to switch between Emacs and web browser; if that is a feature for you.

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

        nope these 2 links don’t give the hyperspec, they build a web view of the systems, packages and symbols (classes macros functions etc) in the current image.

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

          Aha, ok. Thank you for the info, I’ll take a look at them too then, sounds useful 😀