如何向 mercurial 模板命令添加不同的颜色?
How to add different colors to mercurial template command?
我想要的:
一个打印更改日志中添加(+)和删除(-)数量的命令,其中添加部分(+)用绿色表示,删除部分(-)用红色表示。
我目前拥有的:
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 没有办法自动解析 diffstat 输出并为其部分分配颜色,但您可以通过自己进行解析来使用变通方法。例如。使用以下模板:
hg log -T '{sub("(.*): (.*)/(.*)", "\1: 3[0;32m\23[0m/3[0;31m\33[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
)。
我想要的:
一个打印更改日志中添加(+)和删除(-)数量的命令,其中添加部分(+)用绿色表示,删除部分(-)用红色表示。
我目前拥有的:
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 没有办法自动解析 diffstat 输出并为其部分分配颜色,但您可以通过自己进行解析来使用变通方法。例如。使用以下模板:
hg log -T '{sub("(.*): (.*)/(.*)", "\1: 3[0;32m\23[0m/3[0;31m\33[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
)。