Методи обстеження великих / складних об'єктів лісп


12

Я працював з деяким кодом для експорту двигуна org, який проходить навколо деяких досить великих і складних об'єктів списку. Дослідно досліджувати об'єкт, читаючи довге друковане слово, надруковане на зображенні об'єкта, або ітеративно записуючи та оцінюючи аксесуари в буфер нуля. Мені цікаво, чи є якісь хороші методи інтерактивного вивчення значень.

Візьмемо для прикладу: багато IDE, які представляють значення об'єктів в інтерактивному поданні дерева, що дозволяє поступово розширювати ключі / значення. Об'єкт постійно відображається на екрані і його можна вивчити без особливих занепокоєнь щодо типів значень, які переглядаються. Випадковий знімок інструментів для розробників Chrome як ілюстрація:

Перегляд об’єкта інструментів для розробників Chrome

Інші інструменти представляють значення як навігаційні попури (функціонально дуже схожі). Випадковий скріншот від Visual Studio:

Підказка даних Visual Studio

Чи є щось подібне для emacs lisp? Можливо, щось вбудовано в edebug або надано іншим пакетом? Або це лише чекає розвитку?

Примітка. Я виявив pp і pp + незабаром після публікації цього питання. Форматування неймовірно допомагає у візуальній навігації структури об’єктів. Це економить необхідність зміни print-lengthта print-depthекстремальних значень та форматування виводу в окремому буфері.


Можливо, бібліотека hide-show.elдопомагає в цьому плані.
Дрю

3
@ebpa Якщо ppі pp+робіть те, що хочете, тоді ви можете додати це як власне рішення та позначити це як відповідь через кілька днів.
Каушал Моді

@Drew Я дав відповідь на базі рішень на базі pp +. Я не був цілком задоволений цим. Я оновлю свою відповідь, коли публікую кращу альтернативу.
ebpa

Відповіді:


0

Я знайшов, що функція pp-eval-last-sexp-with-tooltipв pp+пакеті є чудовим рішенням для цього загального призначення. Він фактично такий самий, як eval-last-sexp, але акуратно форматує повернене значення і відображає його як підказку. Значення більше pp-max-tooltip-size( x-max-tooltip-size) відображаються в окремому вікні.

На C-x C-eданий момент я це зобов'язаний :

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.