检查大型/复杂Lisp对象的方法


12

我一直在处理一些组织输出引擎代码,这些代码会传递一些相当大且复杂的列表对象。通过阅读对象的长字包装印刷表示形式或在暂存缓冲区中迭代地编写和评估访问器,来探索对象非常繁琐。我并想知道是否有任何好的方法可以交互式地检查值。

例如:许多IDE在交互式树状视图中显示对象值,从而允许增量扩展键/值。对象始终显示在屏幕上,并且可以检查对象而不必担心所查看的值类型。Chrome开发者工具的随机屏幕截图,如下所示:

Chrome开发者工具对象视图

其他工具将值显示为可导航的弹出窗口(功能非常相似)。Visual Studio的随机屏幕截图:

Visual Studio数据提示

Emacs Lisp有类似的东西吗?也许是edebug中内置的东西或其他软件包提供的东西?还是只是在等待开发?

注意:发布此问题后不久,我发现了pppp +。格式化在视觉上导航对象结构方面非常有用。它省去了修改print-lengthprint-depth调到极值并在单独的缓冲区中格式化输出的需要。


也许图书馆hide-show.el在这方面有所帮助。
提请

3
@ebpa如果pppp+你想要什么,然后你可以将其添加为自己的解决方案,并将其标记为在几天的答案。
Kaushal Modi

@Drew我提供了基于pp +的解决方案的答案。我对它并不完全满意。当我发布更好的替代方案时,我将更新我的答案。
ebpa

Answers:


0

我发现功能pp-eval-last-sexp-with-tooltippp+包是一个很好的通用解决方案。它实际上与相同eval-last-sexp,但是整齐地格式化了返回值并将其显示为工具提示。大于pp-max-tooltip-sizex-max-tooltip-size)的值将显示在单独的窗口中。

目前,我必须绑定它C-x C-e

(require 'pp+)
(define-key global-map (kbd "C-x C-e") #'pp-eval-last-sexp-with-tooltip)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.