<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div style="font-family:Arial;">Seems a crosspost to SLIME-devel could be in order, right?</div><div style="font-family:Arial;"><br></div><div>----- Original message -----<br></div><div>From: Robert Goldman <rpgoldman@sift.info><br></div><div>To: "Mark H. David" <mhd@yv.org><br></div><div>Cc: ASDF-devel <asdf-devel@common-lisp.net><br></div><div>Subject: Re: slime meta-dot in ASDF sources<br></div><div>Date: Monday, July 15, 2019 5:13 PM<br></div><div><br></div><div type="cite" id="qt"><div style="font-family:sans-serif;"><div style="white-space:normal;"><p dir="auto">On 15 Jul 2019, at 18:27, Mark H. David wrote:<br></p><blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(119, 119, 119);color:rgb(119, 119, 119);margin-top:0px;margin-right:0px;margin-bottom:5px;margin-left:0px;padding-left:5px;"><p dir="auto">How do ASDF developers using emacs with SLIME deal with doing meta-dot (meta-.) on function names in ASDF sources. Out of the box, mostly when I meta-. just goes to one big top-level form that starts like this<br></p><p dir="auto"></p><div style="font-family:Arial;">(with-upgradability ()<br></div><div style="font-family:Arial;"> (define-condition invalid-source-registry (invalid-configuration warning)<br></div><p></p><p dir="auto"></p><div style="font-family:Arial;">Thanks for clues,<br></div><div style="font-family:Arial;"> -Mark<br></div><p></p></blockquote><p dir="auto">One answer to that is that I do the following before I start debugging, to avoid debugging the big concatenated ASDF file:<br></p><pre bgcolor="#F7F7F7" style="background-color:rgb(247, 247, 247);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;margin-left:15px;margin-right:15px;overflow-x:auto;padding-top:5px;padding-right:5px;padding-bottom:5px;padding-left:5px;"><code bgcolor="#F7F7F7" style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;">(defun debug-asdf ()
  (asdf:load-system :uiop :force t)
  (dolist (c (asdf::required-components :asdf/defsystem :keep-component
                                        'asdf:cl-source-file))
    (load (asdf:component-pathname c))))
</code><br></pre><p dir="auto">However, that only gets us to the nearest <code bgcolor="#F7F7F7" style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;">with-upgradability</code> macro invocation in the real source file, rather than in <code bgcolor="#F7F7F7" style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;">build/asdf.lisp</code>.<br></p><p dir="auto">I'm not sure how to answer your further question, because I think the answer might depend on the implementation you are using.<br></p><p dir="auto">I think slime outsources to the implementation how to find a function definition, but I'm not an expert on SLIME internals.<br></p><p dir="auto">Allegro's emacs lisp interface had a thing where it would ask the lisp environment which <i>file</i> held various definitions, and would then search for it based on  some secret sauce involving <code bgcolor="#F7F7F7" style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;">excl::define-parser</code> or something like that.<br></p><p dir="auto">I'd have to know more about SLIME to give a better answer.  Maybe someone else can chime in?<br></p></div></div></div><div style="font-family:Arial;"><br></div></body></html>