2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面以了解此功能的工作方式。

0
tools.trace

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

9 个答案

0

评论者:jafingerhut

Jeremie,我不确定,但我相信Clojure contrib库的不是依赖于Clojure或Clojure contrib之外的库的政策。

也许如果为现有的tools.trace函数或宏添加了新的arity,可以使用sprint或其他开发者希望调用的函数作为参数来控制打印方式?

0

评论者:jgrodziski

嗨Andy,

感谢您的评论,是的,我考虑过这个问题,并知道这是我们最大的担忧...
我会看看两种可能性
- 最快的:向tools.trace函数和宏添加新参数,提供可以添加颜色和布局的过滤器
- 更好的:看看内联aprint代码是否有考虑价值,或者更好地在clojure.pprint中添加语法高亮功能,即使pprint在tools.trace中没有使用(以及一些类似(链接:https://github.com/AvisoNovate/pretty 文本:Pretty)的巧妙库,可以添加到clojure.repl)

最终,添加打印功能(无论是彩色还是布局)在可操作性方面对我产生了巨大的影响...

0

评论者:alexmiller

关于Andy的说法,据我所知,这不是一项政策,而是一种尽可能减少(它们)的偏好。还有其他贡献者使用了外部依赖。Luc作为贡献项目负责人,他认为这样做是否合适。

0

评论者:lprefontaine

我已经对此事进行了调查。'在tools.trace中内联aprint'将是我首选的方法。
但是,我们需要让Vlad Bokov填写一份CA(我在贡献者名单中看不到他)
并赋予我们包括部分源代码在tools.trace中的权利。

作为这个工具的常规用户,我发现arity路径很痛苦。我们确实在使用
集成测试模式来钉住问题。然后输出到一个文件,那里不被欢迎tty ansi命令。

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

最终,这可以迁移到core.pprint,但这需要一些时间才能在clojure版本中发布。

同时,我们可以将其保存在tools.trace中,以便以后可以移动。

评论?

0

评论者:lprefontaine

我给Vlad发了邮件和这个条目的URL。
首先进行线下讨论,然后如果有计划,我们可以继续进行。

0
_评论者:razum2um_

嗨,Jérémie,Alex和Luc,

我是aprint的作者,很高兴你们喜欢我的库 :)
以下是我对此事的看法

1) 我真的喜欢将其推入tools.trace的想法
2) 目前,clojure的所有contrib-libs都遵循与语言相同的补丁接受策略,我已经对此表示疑虑 https://github.com/clojure/clojure/pull/17#issuecomment-53628365 尝试理解,如果一个库依赖于另一个库,最后一个库必须与原始库分享相同的策略,这不是案件,因为我几乎没有停下来接受pull请求。
3) 如果您不能更改此策略,我将“内联”视为最佳选择。

现在,关于“将内联什么?”这个问题,我有以下几点看法

4) 我有点惊讶,人们似乎并不像我想的这样分享与我使用 repl 集成的方式一样:不关心颜色,他们只是喜欢布局。因此,我们可以放弃颜色,去除对 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

评论者:lprefontaine

哈喽,Vlad,

这个有什么变化吗?

我即将发行 0.7.9 版本。不知道你是否已经抽出时间做了以上步骤。

Luc P

0

评论者:lprefontaine

顺便提一下,

我仍然在 Hollerith 卡上打印 Clojure 代码,所以当一行超过 80 个字符且最后 8 列无论如何都无法使用时,我处于不熟悉的领域 :)
回答

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