Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 1 | Test for breakindent |
| 2 | |
| 3 | STARTTEST |
| 4 | :so small.vim |
| 5 | :if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif |
| 6 | :10new|:vsp|:vert resize 20 |
| 7 | :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\" |
| 8 | :set ts=4 sw=4 sts=4 breakindent |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 9 | :fu! ScreenChar(line, width) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 10 | : let c='' |
| 11 | : for i in range(1,a:width) |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 12 | : let c.=nr2char(screenchar(a:line, i)) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 13 | : endfor |
| 14 | : let c.="\n" |
| 15 | : for i in range(1,a:width) |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 16 | : let c.=nr2char(screenchar(a:line+1, i)) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 17 | : endfor |
| 18 | : let c.="\n" |
| 19 | : for i in range(1,a:width) |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 20 | : let c.=nr2char(screenchar(a:line+2, i)) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 21 | : endfor |
| 22 | : return c |
| 23 | :endfu |
| 24 | :fu DoRecordScreen() |
| 25 | : wincmd l |
| 26 | : $put =printf(\"\n%s\", g:test) |
| 27 | : $put =g:line1 |
| 28 | : wincmd p |
| 29 | :endfu |
Bram Moolenaar | 285ed7e | 2014-08-24 21:39:49 +0200 | [diff] [blame] | 30 | :set briopt=min:0 |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 31 | :let g:test="Test 1: Simple breakindent" |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 32 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 33 | :call DoRecordScreen() |
| 34 | :let g:test="Test 2: Simple breakindent + sbr=>>" |
| 35 | :set sbr=>> |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 36 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 37 | :call DoRecordScreen() |
| 38 | :let g:test ="Test 3: Simple breakindent + briopt:sbr" |
| 39 | :set briopt=sbr,min:0 sbr=++ |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 40 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 41 | :call DoRecordScreen() |
| 42 | :let g:test ="Test 4: Simple breakindent + min width: 18" |
| 43 | :set sbr= briopt=min:18 |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 44 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 45 | :call DoRecordScreen() |
| 46 | :let g:test =" Test 5: Simple breakindent + shift by 2" |
| 47 | :set briopt=shift:2,min:0 |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 48 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 49 | :call DoRecordScreen() |
| 50 | :let g:test=" Test 6: Simple breakindent + shift by -1" |
| 51 | :set briopt=shift:-1,min:0 |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 52 | :let line1=ScreenChar(line('.'),8) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 53 | :call DoRecordScreen() |
| 54 | :let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr" |
| 55 | :set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 56 | :let line1=ScreenChar(line('.'),10) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 57 | :call DoRecordScreen() |
| 58 | :let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr" |
| 59 | :set briopt=shift:1,sbr,min:0 nu sbr=# list |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 60 | :let line1=ScreenChar(line('.'),10) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 61 | :call DoRecordScreen() |
| 62 | :let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list" |
| 63 | :set briopt-=sbr |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 64 | :let line1=ScreenChar(line('.'),10) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 65 | :call DoRecordScreen() |
| 66 | :let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n" |
| 67 | :set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 68 | :let line1=ScreenChar(line('.'),10) |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 69 | :call DoRecordScreen() |
| 70 | :wincmd p |
| 71 | :let g:test="\n Test 11: strdisplaywidth when breakindent is on" |
| 72 | :set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4 |
| 73 | :let text=getline(2) "skip leading tab when calculating text width |
| 74 | :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times |
| 75 | :$put =g:test |
| 76 | :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 77 | :let g:str="\t\t\t\t\t{" |
| 78 | :let g:test=" Test 12: breakindent + long indent" |
| 79 | :wincmd p |
| 80 | :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 |
| 81 | :$put =g:str |
| 82 | zt:let line1=ScreenChar(1,10) |
| 83 | :wincmd p |
| 84 | :call DoRecordScreen() |
Bram Moolenaar | 9576508 | 2014-08-24 21:19:25 +0200 | [diff] [blame] | 85 | :" |
| 86 | :" Test, that the string " a\tb\tc\td\te" is correctly |
| 87 | :" displayed in a 20 column wide window (see bug report |
| 88 | :" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ |
| 89 | :only |
| 90 | :vert 20new |
| 91 | :set all& nocp breakindent briopt=min:10 |
| 92 | :call setline(1, [" a\tb\tc\td\te", " z y x w v"]) |
| 93 | :/^\s*a |
| 94 | fbgjyl:let line1 = @0 |
| 95 | :?^\s*z |
| 96 | fygjyl:let line2 = @0 |
| 97 | :quit! |
Bram Moolenaar | baf0344 | 2014-11-27 14:09:13 +0100 | [diff] [blame^] | 98 | :$put ='Test 13: breakindent with wrapping Tab' |
Bram Moolenaar | 9576508 | 2014-08-24 21:19:25 +0200 | [diff] [blame] | 99 | :$put =line1 |
| 100 | :$put =line2 |
| 101 | :" |
Bram Moolenaar | 597a422 | 2014-06-25 14:39:50 +0200 | [diff] [blame] | 102 | :%w! test.out |
| 103 | :qa! |
| 104 | ENDTEST |
| 105 | dummy text |