【问题标题】:How to add different colors to mercurial template command?如何为 mercurial 模板命令添加不同的颜色?
【发布时间】:2015-10-07 20:28:10
【问题描述】:

我想要什么:

从更改日志中打印添加 (+) 和删除 (-) 数量的命令,其中添加的部分 (+) 用绿色书写,删除的部分 (-) 用红色书写。


我目前拥有的:

hg log -T {diffstat} 打印我想要的 (+20/-31:),但颜色为黑色。

hg log -T "{label('custom.colorcode', diffstat)} \n" 以绿色打印整个 diffstat (+20/-31:)(我的 custom.colorcode 在 .hgrc 中设置为绿色)


参考文献:

https://www.mercurial-scm.org/repo/hg/help/templates

Can I add custom colors to mercurial command templates?

【问题讨论】:

    标签: mercurial formatting hgrc


    【解决方案1】:

    我不相信 Mercurial 有一种方法可以自动解析 diffstat 输出并为其部分分配颜色,但您可以通过自己进行解析来使用解决方法。例如。使用以下模板:

    hg log -T '{sub("(.*): (.*)/(.*)", "\\1: \033[0;32m\\2\033[0m/\033[0;31m\\3\033[0m", diffstat)}\n'
    

    请注意,这会对 ANSI 颜色转义进行硬编码(绿色为 32,红色为 31)。如果你想用标签来做,这也是可能的,但要慢得多(因为 diffstat 必须计算多次)。这种方法对其他关键字仍然有用,所以无论如何我都会解释它。这是一个示例模板:

    {sub(":.*","",diffstat)}: \
    {label("diff.inserted", sub(".*([+][0-9]+).*", "\\1", diffstat))}/\
    {label("diff.deleted", sub(".*(-[0-9]+).*", "\\1", diffstat))}
    

    使用这么长的模板最简单的方法是将它放在一个文件中(例如~/.hgtemplates/diffstat),然后使用hg log -T ~/.hgtemplates/diffstat。如果模板包含斜杠或反斜杠并且对应于现有文件,Mercurial 将改为查看文件的内容。长模板也可以放在.hgrc的模板部分,例如:

    [templates]
    diffstat = "{sub(":.*","",diffstat)}: \
      {label("diff.inserted", sub(".*([+][0-9]+).*", "\\1", diffstat))}/\
      {label("diff.deleted", sub(".*(-[0-9]+).*", "\\1", diffstat))}\n"
    

    然后可以与相应的名称一起使用(例如hg log -T diffstat)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      相关资源
      最近更新 更多