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

欢迎!请在 关于 页面了解有关其工作方式的一些更多信息。

0
工具跟踪

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

9 个答案

0

评论者:jafingerhut

Jeremie,我不确定,但我相信 Clojure 捐赠库的政策是 依赖于除了 Clojure 或 Clojure 捐赠库之外的其他库。

也许可以在现有的 tools.trace 函数或宏中添加新的arity,然后 sptune 或任何其他开发者期望的函数可以作为参数提供,以控制打印方式?

0

评论者:jgrodziski

Hi Andy,

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

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

0
by

评论者:alexmiller

据我所知,这并不是一项政策,而是一种倾向,尽可能减少他们的出现。其他一些有外部依赖的贡献者。是否可以在tools.trace中这样操作,取决于贡献小组组长Luc的看法。

0
by

评论者:lprefontaine

我调查了这个情况。"在内联tools.trace中的aprint"是我首要的选择。
然而,我们需要让Vlad Bokov填写一个CA(我没有在贡献者名单中看到他)
并授予我们包括部分源代码在tools.trace中的权利。

作为这个工具的普通用户,我发现arity路线很痛苦。碰巧我们在
集成测试模式中用它来解决问题。然后输出到文件中,tty ansi命令
是不受欢迎的。

我认为我们需要一个模式状态来启用/禁用这个特性。在repl中,你会需要一条
语句来获取彩色输出无论你调用的是什么trace函数。这可以是你的
用户配置文件的一部分。

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

同时,我们可以将这个功能保持分离在tools.trace中,稍后再将其移动到其他地方。

有什么评论吗?

0
by

评论者:lprefontaine

我给Vlad发了一封电子邮件,并附上了此票据的链接。
我们首先将进行线下讨论,然后按照计划继续。

0
by
_评论者:razum2um_

嗨Jérémie、Alex和Luc,

我是aprint的作者,很高兴你们喜欢我的库 :)
以下是我对这个问题的看法

1) 我非常赞同将其推向tools.trace的想法
2) 目前所有 clojure contrib-libs 都与语言本身采取相同的补丁接受策略,这让我感到有些疑惑。有关详情请参考 https://github.com/clojure/clojure/pull/17#issuecomment-53628365。尝试理解,如果一个库依赖另一个库,最后一个库必须与原始库采取相同的策略,但实际上并非如此,因为我对几乎所有的 pull request 都很难拒绝。
3) 如果您无法更改此策略,我认为“内联”是一个不错的选择。

现在来说说关于“将什么内容内联”的问题。

4) 我有点惊讶,人们没有和我一样想将 repl 与之整合,不喜欢颜色,只喜欢布局。因此,我们可以忽略颜色并且取消对 clansi 的依赖。或者,我可以选择内联 clansi(具有 MIT 许可),并文档化一个 :^dynamic 以启用颜色(默认情况下颜色将关闭)。
5) 紧凑布局的代码依赖于 jline,肯定不会将其放入其中 :) 因此,这将继续保持 pptn/*print-right-margin* 的默认值,默认为 72,这在我的观点中并不是最佳选择,但就让它如此吧。(或者您还在使用非常旧的终端?)
6) 我认为没有引入新的 :^dynamic 的必要,我建议依赖 pptn/*print-pretty*,如果它是真的,则使用紧凑布局而不是 pptn 的默认布局。

因此:
- 我可以填写并签署一个 CA
- 准备一个仅包含紧凑布局(如果您喜欢,还可以包含颜色)的依赖者免费补丁,该补丁由 pptn/*print-pretty* 和 pptn/*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 报告)
...