Am 2014-11-20 23:07, schrieb Bram Moolenaar:
Christian wrote:
On Mi, 19 Nov 2014, Bram Moolenaar wrote:
>
> Patch 7.4.517
> Problem: With a wrapping line the cursor may not end up in the right place.
> (Nazri Ramliy)
> Solution: Adjust n_extra for a Tab that wraps. (Christian Brabandt)
> Files: src/screen.c
Here is a test for that patch.
Ehm?
Shoot, I forgot to attach the test, right?
Here is it again.
Best,
Christian
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/testdir/test_breakindent.in b/src/testdir/test_breakindent.in
--- a/src/testdir/test_breakindent.in
+++ b/src/testdir/test_breakindent.in
@@ -6,18 +6,18 @@ STARTTEST
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
-:fu! ScreenChar(width)
+:fu! ScreenChar(line, width)
: let c=''
: for i in range(1,a:width)
-: let c.=nr2char(screenchar(line('.'), i))
+: let c.=nr2char(screenchar(a:line, i))
: endfor
: let c.="\n"
: for i in range(1,a:width)
-: let c.=nr2char(screenchar(line('.')+1, i))
+: let c.=nr2char(screenchar(a:line+1, i))
: endfor
: let c.="\n"
: for i in range(1,a:width)
-: let c.=nr2char(screenchar(line('.')+2, i))
+: let c.=nr2char(screenchar(a:line+2, i))
: endfor
: return c
:endfu
@@ -29,43 +29,43 @@ STARTTEST
:endfu
:set briopt=min:0
:let g:test="Test 1: Simple breakindent"
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test="Test 2: Simple breakindent + sbr=>>"
:set sbr=>>
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test ="Test 3: Simple breakindent + briopt:sbr"
:set briopt=sbr,min:0 sbr=++
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test ="Test 4: Simple breakindent + min width: 18"
:set sbr= briopt=min:18
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test =" Test 5: Simple breakindent + shift by 2"
:set briopt=shift:2,min:0
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test=" Test 6: Simple breakindent + shift by -1"
:set briopt=shift:-1,min:0
-:let line1=ScreenChar(8)
+:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4
-:let line1=ScreenChar(10)
+:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
:let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=# list
-:let line1=ScreenChar(10)
+:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
-:let line1=ScreenChar(10)
+:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
-:let line1=ScreenChar(10)
+:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
:wincmd p
:let g:test="\n Test 11: strdisplaywidth when breakindent is on"
@@ -74,6 +74,14 @@ STARTTEST
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width)
+:let g:str="\t\t\t\t\t{"
+:let g:test=" Test 12: breakindent + long indent"
+:wincmd p
+:set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4
+:$put =g:str
+zt:let line1=ScreenChar(1,10)
+:wincmd p
+:call DoRecordScreen()
:"
:" Test, that the string " a\tb\tc\td\te" is correctly
:" displayed in a 20 column wide window (see bug report
@@ -87,7 +95,7 @@ fbgjyl:let line1 = @0
:?^\s*z
fygjyl:let line2 = @0
:quit!
-:$put ='Test 12: breakindent with wrapping Tab'
+:$put ='Test 13: breakindent with wrapping Tab'
:$put =line1
:$put =line2
:"
diff --git a/src/testdir/test_breakindent.ok b/src/testdir/test_breakindent.ok
--- a/src/testdir/test_breakindent.ok
+++ b/src/testdir/test_breakindent.ok
@@ -53,6 +53,12 @@ Test 4: Simple breakindent + min width:
Test 11: strdisplaywidth when breakindent is on
strdisplaywidth: 46 == calculated: 64
-Test 12: breakindent with wrapping Tab
+ {
+
+ Test 12: breakindent + long indent
+56
+
+~
+Test 13: breakindent with wrapping Tab
d
w