2024 年 Clojure 调查问卷! 中分享您的想法。

欢迎!请参阅关于页面以了解有关如何使用本网站的更多信息。

0
tools.trace

问题:当使用 trace-ns 时,对于重要的函数调用和大量数据结构,输出流中的非常长的显示很难阅读。
解决方案:当在输出字符串中打印值时,使用(链接:https://github.com/razum2um/aprint 文本:Aprint 库),现在可以获得语法高亮和对数据结构的更好布局。
权衡:向 tools.trace 添加新的依赖项
测试:是,修改清理函数以同时清除由 aprint 添加的颜色信息,因此测试通过率为 100%

9 个答案

0

评论由:jafingerhut

Jeremy,我不确定,但我认为 Clojure contrib 库的策略是依赖于 Clojure 或 Clojure contrib 之外的库。

也许可以通过向现有的 tools.trace 函数或宏添加新的 arities 来提供 sprint 或任何其他开发者期望的函数,以便作为参数来控制打印方式?

0

评论由:jgrodziski

嗨 Andy,

感谢您的评论,是的,我已经考虑过这一点,并且知道这将是最大的担忧...
我会看看两种可能性的
- 最快的方法:为 tools.trace 的函数和宏添加新的参数,提供可以添加颜色和布局的过滤器
最好选择:看看将aprint代码内联是否值得考虑,或者更好的办法是直接在clojure.pprint中添加语法高亮功能,即使pprint在tools.trace中没有使用(顺便加上一些酷炫的库,比如(链接:https://github.com/AvisoNovate/pretty 文本:Pretty),这可以添加到clojure.repl)

总之,添加aprint(无论是色彩还是布局)在提高我易用性方面做出了巨大的贡献...

0

评论者:alexmiller

据我所知,那不是一个政策,而只是一个尽可能最小化它们的偏好。有其他contribs有外部依赖。是否在这里使用它,由contribution lead Luc决定。

0

评论者:lprefontaine

我调查了这个问题。将aprint内联到tools.trace将是我首选。
但是我们需要让Vlad Bokov填写CA(我在贡献者名单中没看到他)
并授予我们使用其中部分源代码的权利。

作为一名工具的常规用户,我发现通过arity途径很痛苦。我们使用这个在
集成测试模式下解决问题上。然后输出到文件中,其中tty ansi命令
是不受欢迎的。

我认为我们需要一个模式状态来启用/禁用此功能。在repl中,你需要一条语句
来获取彩色输出,无论你调用什么trace函数。这可以成为你的
用户个人资料的一部分。

最终这可能会迁移到core.pprint,但这需要一段时间才能在clojure版本中实现。

同时,我们可以将此保留在tools.trace中,以便稍后移动到其他地方。

有什么评论吗?

0

评论者:lprefontaine

我已经给Vlad发了一封邮件,还有这个票证的链接。
首先进行线下讨论,然后再根据计划推进。

0
_评论者:razum2um_

嗨 Jérémie,Alex和Luc,

我是aprint的作者,很高兴你们喜欢我的库 :)
关于它的想法如下:

1) 我真的很喜欢将其推进到tools.trace中
2) 目前所有 Clojure contrib 库都与语言本身具有相同的补丁接受政策,这一点我早已感到疑惑https://github.com/clojure/clojure/pull/17#issuecomment-53628365 尝试着理解,如果某个库依赖于另一个库,那么后者必须与原库保持相同的政策,而这显然不是一个合理的做法,因为我很难停止接受 pull request。
3) 如果无法改变这个政策,我认为“内联”是最优选择。

现在来说说关于“什么将被内联”的一些观点。

4) 我有点惊讶,人们似乎并不像我一样,想要将它们集成到 repl 中https://github.com/greglook/whidbey, 他们不喜欢颜色,他们只喜欢布局。因此,颜色可以被舍弃,我们也就消除了对 clansi 的依赖。或者我可以内联 clansi(具有 MIT 许可证),并记录如何使用 :^dynamic 来打开颜色(默认情况下将关闭)
5) 紧凑布局的代码依赖于 jline,并且肯定不会被内联在内 :) 因此,这将继续保持 pprint/*print-right-margin* 的默认值,即默认为 72,这在我的观点并不算最佳选择,但就让它这样吧。(或者你还在用非常古老的终端运行 clojure 吗?)
6) 我认为引入一个新的 :^dynamic 并没有意义,我建议依赖于 pprint/*print-pretty*,如果它为真 - 使用紧凑布局而不是 pprint 的默认布局

因此
- 我可以填写和签署一份 CA
- 准备一个依赖的免费补丁给您,其中只包含紧凑布局(如果您需要的话,还包括颜色)由 pprint/*print-pretty* 和 pprint/*print-right-margin* 控制
0
by

评论者:lprefontaine

嗨 Vlad,

这项工作有什么变化吗?

我即将发布 0.7.9 版本。不知道你是否有时间完成上述步骤。

Luc P.

0
by

评论者:lprefontaine

顺便说一下,

我仍然在 Hollerith 卡上打印 Clojure 代码,因此当一行超过 80 个字符并且最后 8 个字符无法使用时,我处于不熟悉的领域 :)

0
by
参考:https://clojure.atlassian.net/browse/TTRACE-9(由 alex+import 报告)
...