Search code examples
common-lispslime

In Slime's inspector, after inspecting an element, how can I get back to the list of objects?


I am using Slime (Emacs) and Common Lisp (SBCL). After evaluating an expression, the REPL returns a list of CL objects:

    (#<BOOKMARK-ENTRY {1009AFB963}> #<BOOKMARK-ENTRY {1009AFD5A3}>
     #<BOOKMARK-ENTRY {1009AFDB53}> #<BOOKMARK-ENTRY {1009AFE0E3}>
     #<BOOKMARK-ENTRY {1009AFE683}> #<BOOKMARK-ENTRY {1009AFEC23}>
     #<BOOKMARK-ENTRY {1009AFF173}> #<BOOKMARK-ENTRY {1009AFF753}>
     #<BOOKMARK-ENTRY {1009AFFCD3}> #<BOOKMARK-ENTRY {1009B00233}>
     #<BOOKMARK-ENTRY {1009B00783}> #<BOOKMARK-ENTRY {1009B00CE3}>
     #<BOOKMARK-ENTRY {1009B01253}> #<BOOKMARK-ENTRY {1009B01823}>
     #<BOOKMARK-ENTRY {1009B01DD3}> #<BOOKMARK-ENTRY {1009B02393}>
     #<BOOKMARK-ENTRY {1009B028B3}> #<BOOKMARK-ENTRY {1009B02E13}>
     #<BOOKMARK-ENTRY {1009B03373}> #<BOOKMARK-ENTRY {1009B03903}>
     #<BOOKMARK-ENTRY {1009B03EB3}> #<BOOKMARK-ENTRY {1009B04453}>
     #<BOOKMARK-ENTRY {1009B049F3}> #<BOOKMARK-ENTRY {1009B04F23}>
     #<BOOKMARK-ENTRY {1009B054A3}> #<BOOKMARK-ENTRY {1009B05AB3}>
     #<BOOKMARK-ENTRY {1009B05FF3}> #<BOOKMARK-ENTRY {1009B06513}>
     #<BOOKMARK-ENTRY {1009B06A83}> #<BOOKMARK-ENTRY {1009B07133}>
     #<BOOKMARK-ENTRY {1009B076B3}> #<BOOKMARK-ENTRY {1009B07C13}>
     #<BOOKMARK-ENTRY {1009B08213}>)

If I click to inspect the list, a new window is opened with all objects listed:

#<CONS {1009AFCBB7}>
--------------------
A proper list:
0: #<BOOKMARK-ENTRY {1009AFB963}>
1: #<BOOKMARK-ENTRY {1009AFD5A3}>
2: #<BOOKMARK-ENTRY {1009AFDB53}>
3: #<BOOKMARK-ENTRY {1009AFE0E3}>
4: #<BOOKMARK-ENTRY {1009AFE683}>
5: #<BOOKMARK-ENTRY {1009AFEC23}>
6: #<BOOKMARK-ENTRY {1009AFF173}>
7: #<BOOKMARK-ENTRY {1009AFF753}>
8: #<BOOKMARK-ENTRY {1009AFFCD3}>
9: #<BOOKMARK-ENTRY {1009B00233}>
10: #<BOOKMARK-ENTRY {1009B00783}>
11: #<BOOKMARK-ENTRY {1009B00CE3}>
12: #<BOOKMARK-ENTRY {1009B01253}>
13: #<BOOKMARK-ENTRY {1009B01823}>
14: #<BOOKMARK-ENTRY {1009B01DD3}>
15: #<BOOKMARK-ENTRY {1009B02393}>
16: #<BOOKMARK-ENTRY {1009B028B3}>
17: #<BOOKMARK-ENTRY {1009B02E13}>
18: #<BOOKMARK-ENTRY {1009B03373}>
19: #<BOOKMARK-ENTRY {1009B03903}>
20: #<BOOKMARK-ENTRY {1009B03EB3}>
21: #<BOOKMARK-ENTRY {1009B04453}>
22: #<BOOKMARK-ENTRY {1009B049F3}>
23: #<BOOKMARK-ENTRY {1009B04F23}>
24: #<BOOKMARK-ENTRY {1009B054A3}>
25: #<BOOKMARK-ENTRY {1009B05AB3}>
26: #<BOOKMARK-ENTRY {1009B05FF3}>
27: #<BOOKMARK-ENTRY {1009B06513}>
28: #<BOOKMARK-ENTRY {1009B06A83}>
29: #<BOOKMARK-ENTRY {1009B07133}>
30: #<BOOKMARK-ENTRY {1009B076B3}>
31: #<BOOKMARK-ENTRY {1009B07C13}>
32: #<BOOKMARK-ENTRY {1009B08213}>

If I click on any object (bookmark entry), I am going to see the info I want with the slot values, such as:

#<BOOKMARK-ENTRY {1009B01253}>
--------------------
Class: #<STANDARD-CLASS NYXT:BOOKMARK-ENTRY>
--------------------
 Group slots by inheritance [ ]
 Sort slots alphabetically  [X]

All Slots:
[ ]  ANNOTATION = ""
[ ]  DATE       = @2021-07-21T19:13:02.981953-03:00
[ ]  SEARCH-URL = ""
[ ]  SHORTCUT   = ""
[ ]  TAGS       = ("certo" "deu" "tudo" "white" "yankee")
[ ]  TITLE      = ""
[ ]  URL        = #<QURI.URI.HTTP:URI-HTTPS https://en.wikipedia.org/wiki/Yankee_White>

[set value]  [make unbound]

OK. But how do I leave this information and get back to the previous information?

I mean the screen with:

```lisp
#<CONS {1009AFCBB7}>
--------------------
A proper list:
0: #<BOOKMARK-ENTRY {1009AFB963}>
     .
     .
     .
32: #<BOOKMARK-ENTRY {1009B08213}>

?

Is there a command for this? What is the name? Is there a keybinding to do it?

Thanks.


Solution

  • After using C-h m, I managed to find the command slime-inspector-pop which is bounded to l in this buffer.

    To illustrate, let's visit the object numbered #26:

    26: #<BOOKMARK-ENTRY {100B847933}>
    

    I press return on it and I get:

    #<BOOKMARK-ENTRY {100B847933}>
    --------------------
    Class: #<STANDARD-CLASS NYXT:BOOKMARK-ENTRY>
    --------------------
     Group slots by inheritance [ ]
     Sort slots alphabetically  [X]
    
    All Slots:
    [ ]  ANNOTATION = ""
    [ ]  DATE       = @2021-07-03T10:42:53.050403-03:00
    [ ]  SEARCH-URL = ""
    [ ]  SHORTCUT   = ""
    [ ]  TAGS       = ("CNN")
    [ ]  TITLE      = ""
    [ ]  URL        = #<QURI.URI.HTTP:URI-HTTPS https://www.cnnbrasil.com.br/>
    
    [set value]  [make unbound]
    

    To get back, I just do l. Thus, I am back to the previous window with a subtle difference. Now, the name of the object is slightly different in the list with @13:

    26: @13=#<BOOKMARK-ENTRY {100B847933}>
    

    If my interpretation is not wrong, this shows that the object was inspected and that it was 13rd object in the list to be visited.