зеркало из https://github.com/microsoft/git.git
pretty.c: support <direction>|(<negative number>) forms
%>|(num), %><|(num) and %<|(num), where num is a positive number, sets a fixed column from the screen's left border. There is no way for us to specifiy a column relative to the right border, which is useful when you want to make use of all terminal space (on big screens). Use negative num for that. Inspired by Go's array syntax (*). (*) I know Python has this first (or before Go, at least) but the idea didn't occur to me until I learned Go. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
3ad87c807c
Коммит
066790d7cb
8
pretty.c
8
pretty.c
|
@ -1022,9 +1022,15 @@ static size_t parse_padding_placeholder(struct strbuf *sb,
|
|||
int width;
|
||||
if (!end || end == start)
|
||||
return 0;
|
||||
width = strtoul(start, &next, 10);
|
||||
width = strtol(start, &next, 10);
|
||||
if (next == start || width == 0)
|
||||
return 0;
|
||||
if (width < 0) {
|
||||
if (to_column)
|
||||
width += term_columns();
|
||||
if (width < 0)
|
||||
return 0;
|
||||
}
|
||||
c->padding = to_column ? -width : width;
|
||||
c->flush_type = flush_type;
|
||||
|
||||
|
|
|
@ -176,6 +176,17 @@ EOF
|
|||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting at the nth column' '
|
||||
COLUMNS=50 git log --pretty="tformat:%h %<|(-10)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
$head1 message two Z
|
||||
$head2 message one Z
|
||||
$head3 add bar Z
|
||||
$head4 $(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %<|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
|
@ -308,6 +319,17 @@ EOF
|
|||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting at the nth column' '
|
||||
COLUMNS=50 git log --pretty="tformat:%h %>|(-10)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
$head1 message two
|
||||
$head2 message one
|
||||
$head3 add bar
|
||||
$head4 $(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %>|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
|
@ -397,6 +419,17 @@ EOF
|
|||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting at the nth column' '
|
||||
COLUMNS=70 git log --pretty="tformat:%h %><|(-30)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
$head1 message two Z
|
||||
$head2 message one Z
|
||||
$head3 add bar Z
|
||||
$head4 $(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %><|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче