Metody badania dużych / skomplikowanych obiektów seplenienych

12

Pracowałem z kodem silnika eksportu organizacji, który przekazuje dość duże i złożone obiekty listy. Eksplorowanie obiektu jest dość żmudne poprzez czytanie długiej, opakowanej słowem reprezentacji obiektu lub iteracyjne pisanie i ocenianie akcesoriów w buforze scratch. Zastanawiam się, czy istnieją jakieś dobre metody interaktywnego badania wartości.

Weźmy na przykład: wiele IDE, które prezentują wartości obiektów w interaktywnym widoku drzewa, co pozwala na stopniowe rozszerzanie kluczy / wartości. Obiekt jest stale wyświetlany na ekranie i można go badać bez większego zaniepokojenia przeglądanymi typami wartości. Losowy zrzut ekranu narzędzi programistycznych Chrome jako ilustracja:

Widok obiektu narzędzi programistycznych Chrome

Inne narzędzia prezentują wartości jako nawigowalne pop-upy (funkcjonalnie bardzo podobne). Losowy zrzut ekranu z Visual Studio:

Datatip programu Visual Studio

Czy jest coś podobnego do emacs lisp? Być może coś wbudowanego w edebug lub dostarczonego przez inny pakiet? Czy to tylko czeka na rozwój?

Uwaga: odkryłem pp i pp + wkrótce po opublikowaniu tego pytania. Formatowanie jest niezwykle pomocne w wizualnej nawigacji struktury obiektów. Oszczędza to konieczności modyfikowania print-lengthi print-depthekstremalnych wartości oraz formatowania danych wyjściowych w osobnym buforze.

ebpa
źródło
Być może biblioteka hide-show.elpomaga w tym zakresie.
Drew
3
@ebpa Jeśli ppi pp+robisz, co chcesz, możesz dodać to jako własne rozwiązanie i oznaczyć jako odpowiedź w ciągu kilku dni.
Kaushal Modi
@Drew Podałem odpowiedź z rozwiązaniem opartym na pp +. Jednak nie byłem do końca zadowolony. Zaktualizuję swoją odpowiedź, kiedy opublikuję lepszą alternatywę.
ebpa

Odpowiedzi:

0

Odkryłem, że funkcja pp-eval-last-sexp-with-tooltipw pp+pakiecie jest świetnym rozwiązaniem ogólnego zastosowania. Jest efektywnie taki sam jak eval-last-sexp, ale starannie formatuje zwracaną wartość i wyświetla ją jako podpowiedź. Wartości większe niż pp-max-tooltip-size( x-max-tooltip-size) są pokazane w osobnym oknie.

W tej chwili mam obowiązek C-x C-e:

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
ebpa
źródło