<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 2 Sep 2022, at 04:42, Anton Vodonosov <<a href="mailto:avodonosov@yandex.ru" class="">avodonosov@yandex.ru</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hello.</div><div class=""> </div><div class="">People may want to open package.lisp of some library to study the public API,</div><div class="">and quickly navigate to definition of any symbol from the :export list,</div><div class="">in order to read the docstring.</div><div class=""> </div><div class="">I use slime-edit-definition (with the M-. shortcut) for navigation to docstrings.</div><div class=""> </div><div class="">But that usually does not work from within of (defpackage ) form,</div><div class="">because slime determines the current package based on the (in-package)</div><div class="">at the top of the file and usually package files have</div><div class=""> </div><div class=""><div class="">   (in-package :cl-user)</div><div class=""><br class="">   (defpackage :some-lib</div><div class="">      (:export #:some-function</div><div class="">                    #:another-function</div><div class="">                     ...))</div><div class=""> </div><div class=""> </div><div class="">So when cursor stays on #:some-function and M-. is pressed</div><div class="">slime says "No known definition for: #:some-function (in :cl-user)"</div><div class=""> </div><div class="">As a workaround I temporarily insert (in-pakcage :some-lib) above the (defpackage ).</div><div class=""> </div><div class="">But it would be convenient if slime understood that the within the :export</div><div class="">option of defpackage the symbols belong to the package being defined</div><div class="">and not to the closest (in-package ).</div><div class=""> </div><div class="">So that the proposal for consideration of the slime maintainers.</div></div></div></blockquote><br class=""></div><div>And slightly more difficult, but it would be nice too, to consider making M-. work from documentation files.</div><div><br class=""></div><div>It’s a good idea to start from the package export list to browse a package, but I never did it, notably because the export list loses the kind of definition the symbols name. (Agreed, it’s often obvious, but there are a lot of cases where multiple definitions of different kinds exist).</div><div><br class=""></div><div>From the documentation, the symbols are usually tagged, with a prefix or suffix [macro] or [function] or [class] etc…. The identification of the package may be more difficult since it’s often more informal, (just a title).</div><div><br class=""></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">-- <br class="">__Pascal J. Bourguignon__</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><br class=""><br class=""></div></div></div>
</div>
<br class=""></body></html>