Phương pháp kiểm tra các đối tượng lisp lớn / phức tạp


12

Tôi đã làm việc với một số mã công cụ xuất khẩu org đi qua một số đối tượng danh sách khá lớn và phức tạp. Thật là tẻ nhạt khi khám phá một đối tượng bằng cách đọc qua một biểu diễn được in từ dài của một đối tượng hoặc viết và đánh giá các bộ truy cập trong bộ đệm đầu. Tôi và đang tự hỏi nếu có bất kỳ phương pháp tốt để kiểm tra tương tác các giá trị.

Lấy ví dụ: nhiều IDE thể hiện các giá trị đối tượng trong chế độ xem dạng cây tương tác cho phép mở rộng dần các khóa / giá trị. Đối tượng được hiển thị liên tục trên màn hình và có thể được kiểm tra mà không cần quan tâm nhiều về các loại giá trị được xem. Ảnh chụp màn hình ngẫu nhiên các công cụ dành cho nhà phát triển Chrome như minh họa:

Chế độ xem đối tượng công cụ dành cho nhà phát triển Chrome

Các công cụ khác trình bày các giá trị dưới dạng popovers có thể điều hướng (về chức năng rất giống nhau). Ảnh chụp màn hình ngẫu nhiên từ Visual Studio:

Bảng dữ liệu Visual Studio

Có bất cứ điều gì tương tự cho emacs lisp? Có lẽ một cái gì đó được xây dựng trong edebug hoặc được cung cấp bởi một gói khác? Hay đây chỉ là chờ đợi để được phát triển?

Lưu ý: Tôi đã phát hiện ra pppp + ngay sau khi đăng câu hỏi này. Các định dạng là vô cùng hữu ích trong việc điều hướng trực quan cấu trúc đối tượng. Nó tiết kiệm cần phải sửa đổi print-lengthprint-depthcác giá trị cực đoan và định dạng đầu ra trong một bộ đệm riêng.


Có lẽ thư viện hide-show.elgiúp về vấn đề này.
vẽ

3
@ebpa Nếu pppp+làm những gì bạn muốn, thì bạn có thể thêm nó làm giải pháp của riêng bạn và đánh dấu nó như một câu trả lời trong vài ngày.
Kaushal Modi

@Drew Tôi đã cung cấp câu trả lời với giải pháp dựa trên pp +. Tôi đã không hoàn toàn hài lòng với nó mặc dù. Tôi sẽ cập nhật câu trả lời của mình khi tôi xuất bản một giải pháp thay thế tốt hơn.
ebpa

Câu trả lời:


0

Tôi thấy chức năng pp-eval-last-sexp-with-tooltiptrong pp+gói là một giải pháp đa năng tuyệt vời cho việc này. Nó thực sự giống như eval-last-sexp, nhưng định dạng gọn gàng giá trị trả về và hiển thị nó dưới dạng một chú giải công cụ. Các giá trị lớn hơn pp-max-tooltip-size( x-max-tooltip-size) được hiển thị trong một cửa sổ riêng.

Tôi có nó ràng buộc vào C-x C-elúc này:

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.