Show More
@@ -216,8 +216,9 b' def mailmap(context, mapping, args):' | |||||
216 |
|
216 | |||
217 | return stringutil.mapname(cache['mailmap'], author) |
|
217 | return stringutil.mapname(cache['mailmap'], author) | |
218 |
|
218 | |||
219 | @templatefunc('pad(text, width[, fillchar=\' \'[, left=False]])', |
|
219 | @templatefunc( | |
220 | argspec='text width fillchar left') |
|
220 | 'pad(text, width[, fillchar=\' \'[, left=False[, truncate=False]]])', | |
|
221 | argspec='text width fillchar left truncate') | |||
221 | def pad(context, mapping, args): |
|
222 | def pad(context, mapping, args): | |
222 | """Pad text with a |
|
223 | """Pad text with a | |
223 | fill character.""" |
|
224 | fill character.""" | |
@@ -231,6 +232,7 b' def pad(context, mapping, args):' | |||||
231 |
|
232 | |||
232 | text = evalstring(context, mapping, args['text']) |
|
233 | text = evalstring(context, mapping, args['text']) | |
233 |
|
234 | |||
|
235 | truncate = False | |||
234 | left = False |
|
236 | left = False | |
235 | fillchar = ' ' |
|
237 | fillchar = ' ' | |
236 | if 'fillchar' in args: |
|
238 | if 'fillchar' in args: | |
@@ -240,8 +242,12 b' def pad(context, mapping, args):' | |||||
240 | raise error.ParseError(_("pad() expects a single fill character")) |
|
242 | raise error.ParseError(_("pad() expects a single fill character")) | |
241 | if 'left' in args: |
|
243 | if 'left' in args: | |
242 | left = evalboolean(context, mapping, args['left']) |
|
244 | left = evalboolean(context, mapping, args['left']) | |
|
245 | if 'truncate' in args: | |||
|
246 | truncate = evalboolean(context, mapping, args['truncate']) | |||
243 |
|
247 | |||
244 | fillwidth = width - encoding.colwidth(color.stripeffects(text)) |
|
248 | fillwidth = width - encoding.colwidth(color.stripeffects(text)) | |
|
249 | if fillwidth < 0 and truncate: | |||
|
250 | return encoding.trim(color.stripeffects(text), width, leftside=left) | |||
245 | if fillwidth <= 0: |
|
251 | if fillwidth <= 0: | |
246 | return text |
|
252 | return text | |
247 | if left: |
|
253 | if left: |
@@ -696,6 +696,12 b' pad() should interact well with color co' | |||||
696 | > '{pad(label(red, "red"), 5, label(cyan, "-"))}\n' |
|
696 | > '{pad(label(red, "red"), 5, label(cyan, "-"))}\n' | |
697 | \x1b[0;31mred\x1b[0m\x1b[0;36m-\x1b[0m\x1b[0;36m-\x1b[0m (esc) |
|
697 | \x1b[0;31mred\x1b[0m\x1b[0;36m-\x1b[0m\x1b[0;36m-\x1b[0m (esc) | |
698 |
|
698 | |||
|
699 | pad() with truncate has to strip color codes, though | |||
|
700 | ||||
|
701 | $ hg debugtemplate --color=always \ | |||
|
702 | > '{pad(label(red, "scarlet"), 5, truncate=true)}\n' | |||
|
703 | scarl | |||
|
704 | ||||
699 | label should be no-op if color is disabled: |
|
705 | label should be no-op if color is disabled: | |
700 |
|
706 | |||
701 | $ hg log --color=never -l 1 --template '{label(red, "text\n")}' |
|
707 | $ hg log --color=never -l 1 --template '{label(red, "text\n")}' | |
@@ -928,6 +934,15 b' Test pad function' | |||||
928 | 1------------------- {node|short} |
|
934 | 1------------------- {node|short} | |
929 | 0------------------- test |
|
935 | 0------------------- test | |
930 |
|
936 | |||
|
937 | $ hg log --template '{pad(author, 5, "-", False, True)}\n' | |||
|
938 | test- | |||
|
939 | {node | |||
|
940 | test- | |||
|
941 | $ hg log --template '{pad(author, 5, "-", True, True)}\n' | |||
|
942 | -test | |||
|
943 | hort} | |||
|
944 | -test | |||
|
945 | ||||
931 | Test template string in pad function |
|
946 | Test template string in pad function | |
932 |
|
947 | |||
933 | $ hg log -r 0 -T '{pad("\{{rev}}", 10)} {author|user}\n' |
|
948 | $ hg log -r 0 -T '{pad("\{{rev}}", 10)} {author|user}\n' |
General Comments 0
You need to be logged in to leave comments.
Login now