Metodi per esaminare oggetti lisp di grandi dimensioni / complicati


12

Ho lavorato con un codice del motore di esportazione dell'organizzazione che passa attorno ad alcuni oggetti elenco piuttosto grandi e complessi. È piuttosto noioso esplorare un oggetto leggendo una lunga rappresentazione stampata racchiusa in una parola di un oggetto o scrivendo e valutando in modo iterativo gli accessori nel buffer di memoria virtuale. Mi chiedo se ci siano buoni metodi per esaminare interattivamente i valori.

Prendiamo ad esempio: molti IDE che presentano valori di oggetti in una vista ad albero interattiva che consente di espandere chiavi / valori in modo incrementale. L'oggetto viene mostrato in modo persistente sullo schermo e può essere esaminato senza molta preoccupazione per i tipi di valore visualizzati. Uno screenshot casuale di strumenti per sviluppatori di Chrome come illustrazione:

Vista oggetti degli strumenti di sviluppo di Chrome

Altri strumenti presentano valori come popover navigabili (funzionalmente molto simili). Uno screenshot casuale da Visual Studio:

Datatip di Visual Studio

Esiste qualcosa di simile per emacs lisp? Forse qualcosa incorporato in edebug o fornito da un altro pacchetto? O sta solo aspettando di essere sviluppato?

Nota: ho scoperto pp e pp + poco dopo aver pubblicato questa domanda. La formattazione è incredibilmente utile nella navigazione visiva della struttura degli oggetti. Salva la necessità di modificare print-lengthe print-depthvalori estremi e di formattare l'output in un buffer separato.


Forse la biblioteca hide-show.elaiuta in questo senso.
Ha

3
@ebpa Se ppe pp+fai quello che vuoi, puoi aggiungerlo come soluzione e contrassegnarlo come risposta in pochi giorni.
Kaushal Modi,

@Drew Ho fornito una risposta con la soluzione basata su pp +. Non ne sono rimasto del tutto soddisfatto. Aggiornerò la mia risposta quando pubblicherò un'alternativa migliore.
ebpa,

Risposte:


0

Ho trovato che la funzione pp-eval-last-sexp-with-tooltipnel pp+pacchetto è un'ottima soluzione per tutti gli usi. È effettivamente lo stesso di eval-last-sexp, ma formatta in modo accurato il valore restituito e lo visualizza come una descrizione comandi. I valori maggiori di pp-max-tooltip-size( x-max-tooltip-size) vengono visualizzati in una finestra separata.

L'ho legato C-x C-eal momento:

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.