 3f8eccbe16
			
		
	
	3f8eccbe16
	
	
	
		
			
			Normally all cells (and in turn columns) share the same width. This layout mode can waste space because one long item can stretch our all columns. With COL_DENSE enabled, column width is calculated indepdendently. All columns are shrunk to minimum, then it attempts to push cells of the last row over to the next column with hope that everything still fits even there's one row less. The process is repeated until the new layout cannot fit in given width any more, or there's only one row left (perfect!). Apparently, this mode consumes more cpu than the old one, but it makes better use of terminal space. For layouting one or two screens, cpu usage should not be detectable. This patch introduces option handling code besides layout modes and enable/disable to expose this feature as "dense". The feature can be turned off by specifying "nodense". Thanks-to: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			181 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='git column'
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success 'setup' '
 | |
| 	cat >lista <<\EOF
 | |
| one
 | |
| two
 | |
| three
 | |
| four
 | |
| five
 | |
| six
 | |
| seven
 | |
| eight
 | |
| nine
 | |
| ten
 | |
| eleven
 | |
| EOF
 | |
| '
 | |
| 
 | |
| test_expect_success 'never' '
 | |
| 	git column --indent=Z --mode=never <lista >actual &&
 | |
| 	test_cmp lista actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'always' '
 | |
| 	cat >expected <<\EOF &&
 | |
| Zone
 | |
| Ztwo
 | |
| Zthree
 | |
| Zfour
 | |
| Zfive
 | |
| Zsix
 | |
| Zseven
 | |
| Zeight
 | |
| Znine
 | |
| Zten
 | |
| Zeleven
 | |
| EOF
 | |
| 	git column --indent=Z --mode=plain <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '80 columns' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one    two    three  four   five   six    seven  eight  nine   ten    eleven
 | |
| EOF
 | |
| 	COLUMNS=80 git column --mode=column <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| cat >expected <<\EOF
 | |
| one
 | |
| two
 | |
| three
 | |
| four
 | |
| five
 | |
| six
 | |
| seven
 | |
| eight
 | |
| nine
 | |
| ten
 | |
| eleven
 | |
| EOF
 | |
| 
 | |
| test_expect_success COLUMNS_CAN_BE_1 'COLUMNS = 1' '
 | |
| 	COLUMNS=1 git column --mode=column <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'width = 1' '
 | |
| 	git column --mode=column --width=1 <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| COLUMNS=20
 | |
| export COLUMNS
 | |
| 
 | |
| test_expect_success '20 columns' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one    seven
 | |
| two    eight
 | |
| three  nine
 | |
| four   ten
 | |
| five   eleven
 | |
| six
 | |
| EOF
 | |
| 	git column --mode=column <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, nodense' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one    seven
 | |
| two    eight
 | |
| three  nine
 | |
| four   ten
 | |
| five   eleven
 | |
| six
 | |
| EOF
 | |
| 	git column --mode=column,nodense < lista > actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, dense' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one   five  nine
 | |
| two   six   ten
 | |
| three seven eleven
 | |
| four  eight
 | |
| EOF
 | |
| 	git column --mode=column,dense < lista > actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, padding 2' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one     seven
 | |
| two     eight
 | |
| three   nine
 | |
| four    ten
 | |
| five    eleven
 | |
| six
 | |
| EOF
 | |
| 	git column --mode=column --padding 2 <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, indented' '
 | |
| 	cat >expected <<\EOF &&
 | |
|   one    seven
 | |
|   two    eight
 | |
|   three  nine
 | |
|   four   ten
 | |
|   five   eleven
 | |
|   six
 | |
| EOF
 | |
| 	git column --mode=column --indent="  " <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, row first' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one    two
 | |
| three  four
 | |
| five   six
 | |
| seven  eight
 | |
| nine   ten
 | |
| eleven
 | |
| EOF
 | |
| 	git column --mode=row <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, row first, nodense' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one    two
 | |
| three  four
 | |
| five   six
 | |
| seven  eight
 | |
| nine   ten
 | |
| eleven
 | |
| EOF
 | |
| 	git column --mode=row,nodense <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_expect_success '20 columns, row first, dense' '
 | |
| 	cat >expected <<\EOF &&
 | |
| one   two    three
 | |
| four  five   six
 | |
| seven eight  nine
 | |
| ten   eleven
 | |
| EOF
 | |
| 	git column --mode=row,dense <lista >actual &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_done
 |