Методы исследования больших / сложных объектов LISP

12

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

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

Вид объекта инструментов разработчика Chrome

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

Visual Studio datatip

Есть ли что-нибудь похожее на emacs lisp? Возможно, что-то встроено в edebug или предоставлено другим пакетом? Или это только ждет развития?

Примечание: я обнаружил pp и pp + вскоре после публикации этого вопроса. Форматирование невероятно полезно при визуальной навигации по структуре объектов. Это экономит необходимость изменять print-lengthи print-depthэкстремальные значения и форматирование вывода в отдельном буфере.

ebpa
источник
Возможно, библиотека 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)
ebpa
источник