Metode untuk memeriksa objek lisp besar / rumit

12

Saya telah bekerja dengan beberapa kode mesin ekspor org yang melewati beberapa objek daftar yang agak besar dan kompleks. Agak membosankan untuk mengeksplorasi suatu objek dengan membaca melalui representasi cetak panjang dari sebuah objek atau secara iteratif menulis dan mengevaluasi accessor dalam buffer awal. Saya dan saya bertanya-tanya apakah ada metode yang baik untuk menguji nilai secara interaktif.

Ambil contoh: banyak IDE yang menyajikan nilai objek dalam tampilan hierarki interaktif yang memungkinkan penambahan kunci / nilai secara bertahap. Objek tersebut terus-menerus ditampilkan di layar dan dapat diperiksa tanpa banyak perhatian tentang jenis nilai yang dilihat. Tangkapan layar acak alat pengembang Chrome sebagai ilustrasi:

Tampilan objek alat pengembang Chrome

Alat lain menyajikan nilai sebagai popover yang dapat dinavigasi (secara fungsional sangat mirip). Tangkapan layar acak dari Visual Studio:

Data Studio Visual

Apakah ada yang serupa dengan emacs lisp? Mungkin sesuatu dibangun ke dalam edebug atau disediakan oleh paket lain? Atau apakah ini hanya menunggu untuk dikembangkan?

Catatan: Saya menemukan pp dan pp + tidak lama setelah memposting pertanyaan ini. Pemformatan ini sangat membantu dalam menavigasi struktur objek secara visual. Menghemat perlu memodifikasi print-lengthdan print-depthnilai-nilai ekstrim dan memformat output dalam buffer terpisah.

Epa
sumber
Mungkin perpustakaan hide-show.elmembantu dalam hal ini.
Drew
3
@ebpa Jika ppdan pp+lakukan apa yang Anda inginkan, maka Anda dapat menambahkannya sebagai solusi Anda sendiri dan menandainya sebagai jawaban dalam beberapa hari.
Kaushal Modi
@Rew saya memberikan jawaban dengan solusi berbasis pp +. Saya belum sepenuhnya puas dengan itu. Saya akan memperbarui jawaban saya ketika saya mempublikasikan alternatif yang lebih baik.
ebpa

Jawaban:

0

Saya menemukan fungsi pp-eval-last-sexp-with-tooltipdalam pp+paket adalah solusi tujuan umum yang bagus untuk ini. Secara efektif sama dengan eval-last-sexp, tetapi memformat nilai hasil dengan rapi dan menampilkannya sebagai tooltip. Nilai yang lebih besar dari pp-max-tooltip-size( x-max-tooltip-size) ditampilkan di jendela terpisah.

Saya terikat C-x C-epada saat ini:

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
Epa
sumber