Show More
@@ -805,35 +805,32 def _xmerge(repo, mynode, fcd, fco, fca, | |||
|
805 | 805 | return True, r, False |
|
806 | 806 | |
|
807 | 807 | |
|
808 |
def _formatlabel( |
|
|
808 | def _formatlabel(input, template, pad): | |
|
809 | 809 | """Applies the given template to the ctx, prefixed by the label. |
|
810 | 810 | |
|
811 | 811 | Pad is the minimum width of the label prefix, so that multiple markers |
|
812 | 812 | can have aligned templated parts. |
|
813 | 813 | """ |
|
814 | ctx = input.fctx.changectx() | |
|
814 | 815 | if ctx.node() is None: |
|
815 | 816 | ctx = ctx.p1() |
|
816 | 817 | |
|
817 | 818 | props = {b'ctx': ctx} |
|
818 | 819 | templateresult = template.renderdefault(props) |
|
819 | 820 | |
|
820 | label = (b'%s:' % label).ljust(pad + 1) | |
|
821 | label = (b'%s:' % input.label).ljust(pad + 1) | |
|
821 | 822 | mark = b'%s %s' % (label, templateresult) |
|
822 | 823 | mark = mark.splitlines()[0] # split for safety |
|
823 | 824 | |
|
824 | 825 | # 8 for the prefix of conflict marker lines (e.g. '<<<<<<< ') |
|
825 |
|
|
|
826 | input.label = stringutil.ellipsis(mark, 80 - 8) | |
|
826 | 827 | |
|
827 | 828 | |
|
828 |
def _formatlabels(repo, |
|
|
829 | def _formatlabels(repo, inputs, tool=None): | |
|
829 | 830 | """Formats the given labels using the conflict marker template. |
|
830 | 831 | |
|
831 | 832 | Returns a list of formatted labels. |
|
832 | 833 | """ |
|
833 | cd = fcd.changectx() | |
|
834 | co = fco.changectx() | |
|
835 | ca = fca.changectx() | |
|
836 | ||
|
837 | 834 | ui = repo.ui |
|
838 | 835 | template = ui.config(b'command-templates', b'mergemarker') |
|
839 | 836 | if tool is not None: |
@@ -844,14 +841,9 def _formatlabels(repo, fcd, fco, fca, l | |||
|
844 | 841 | ui, template, defaults=templatekw.keywords, resources=tres |
|
845 | 842 | ) |
|
846 | 843 | |
|
847 |
pad = max(len(l) for |
|
|
844 | pad = max(len(input.label) for input in inputs) | |
|
848 | 845 | |
|
849 | newlabels = [ | |
|
850 | _formatlabel(cd, tmpl, labels[0], pad), | |
|
851 | _formatlabel(co, tmpl, labels[1], pad), | |
|
852 | _formatlabel(ca, tmpl, labels[2], pad), | |
|
853 | ] | |
|
854 | return newlabels | |
|
846 | return [_formatlabel(input, tmpl, pad) for input in inputs] | |
|
855 | 847 | |
|
856 | 848 | |
|
857 | 849 | def partextras(labels): |
@@ -1052,8 +1044,19 def filemerge(repo, wctx, mynode, orig, | |||
|
1052 | 1044 | labels = [b'local', b'other'] |
|
1053 | 1045 | if len(labels) < 3: |
|
1054 | 1046 | labels.append(b'base') |
|
1047 | local = simplemerge.MergeInput(fcd, labels[0]) | |
|
1048 | other = simplemerge.MergeInput(fco, labels[1]) | |
|
1049 | base = simplemerge.MergeInput(fca, labels[2]) | |
|
1055 | 1050 | if mergetype == nomerge: |
|
1056 | return func(repo, mynode, fcd, fco, fca, toolconf, labels) | |
|
1051 | return func( | |
|
1052 | repo, | |
|
1053 | mynode, | |
|
1054 | fcd, | |
|
1055 | fco, | |
|
1056 | fca, | |
|
1057 | toolconf, | |
|
1058 | [local.label, other.label, base.label], | |
|
1059 | ) | |
|
1057 | 1060 | |
|
1058 | 1061 | if orig != fco.path(): |
|
1059 | 1062 | ui.status( |
@@ -1083,36 +1086,41 def filemerge(repo, wctx, mynode, orig, | |||
|
1083 | 1086 | else: |
|
1084 | 1087 | markerstyle = internalmarkerstyle |
|
1085 | 1088 | |
|
1086 | formattedlabels = labels | |
|
1087 | if markerstyle != b'basic': | |
|
1088 | formattedlabels = _formatlabels( | |
|
1089 | repo, fcd, fco, fca, labels, tool=tool | |
|
1090 | ) | |
|
1091 | ||
|
1092 | 1089 | if mergetype == fullmerge: |
|
1093 | 1090 | # conflict markers generated by premerge will use 'detailed' |
|
1094 | 1091 | # settings if either ui.mergemarkers or the tool's mergemarkers |
|
1095 | 1092 | # setting is 'detailed'. This way tools can have basic labels in |
|
1096 | 1093 | # space-constrained areas of the UI, but still get full information |
|
1097 | 1094 | # in conflict markers if premerge is 'keep' or 'keep-merge3'. |
|
1098 | premergelabels = labels | |
|
1099 | 1095 | labeltool = None |
|
1100 | 1096 | if markerstyle != b'basic': |
|
1101 | 1097 | # respect 'tool's mergemarkertemplate (which defaults to |
|
1102 | 1098 | # command-templates.mergemarker) |
|
1103 | 1099 | labeltool = tool |
|
1104 | 1100 | if internalmarkerstyle != b'basic' or markerstyle != b'basic': |
|
1105 | premergelabels = _formatlabels( | |
|
1106 | repo, fcd, fco, fca, premergelabels, tool=labeltool | |
|
1107 | ) | |
|
1101 | _formatlabels(repo, [local, other, base], tool=labeltool) | |
|
1108 | 1102 | |
|
1109 | 1103 | r = _premerge( |
|
1110 | repo, fcd, fco, fca, toolconf, backup, labels=premergelabels | |
|
1104 | repo, | |
|
1105 | fcd, | |
|
1106 | fco, | |
|
1107 | fca, | |
|
1108 | toolconf, | |
|
1109 | backup, | |
|
1110 | labels=[local.label, other.label, base.label], | |
|
1111 | 1111 | ) |
|
1112 | 1112 | # we're done if premerge was successful (r is 0) |
|
1113 | 1113 | if not r: |
|
1114 | 1114 | return r, False |
|
1115 | 1115 | |
|
1116 | # Reset to basic labels | |
|
1117 | local.label = labels[0] | |
|
1118 | other.label = labels[1] | |
|
1119 | base.label = labels[2] | |
|
1120 | ||
|
1121 | if markerstyle != b'basic': | |
|
1122 | _formatlabels(repo, [local, other, base], tool=tool) | |
|
1123 | ||
|
1116 | 1124 | needcheck, r, deleted = func( |
|
1117 | 1125 | repo, |
|
1118 | 1126 | mynode, |
@@ -1121,7 +1129,7 def filemerge(repo, wctx, mynode, orig, | |||
|
1121 | 1129 | fca, |
|
1122 | 1130 | toolconf, |
|
1123 | 1131 | backup, |
|
1124 |
labels= |
|
|
1132 | labels=[local.label, other.label, base.label], | |
|
1125 | 1133 | ) |
|
1126 | 1134 | |
|
1127 | 1135 | if needcheck: |
General Comments 0
You need to be logged in to leave comments.
Login now