Patch 8.0.0394
Problem: Tabs are not aligned when scrolling horizontally and a Tab doesn't
fit. (Axel Bender)
Solution: Handle a Tab as a not fitting character. (Christian Brabandt)
Also fix that ":redraw" does not scroll horizontally to show the
cursor. And fix the test that depended on the old behavior.
Files: src/screen.c, src/ex_docmd.c, src/testdir/test_listlbr.vim,
src/testdir/test_listlbr_utf8.vim,
src/testdir/test_breakindent.vim
*** ../vim-8.0.0393/src/screen.c 2017-02-27 21:11:29.988530382 +0100
--- src/screen.c 2017-03-01 18:03:28.751547298 +0100
***************
*** 3429,3438 ****
#else
--ptr;
#endif
#ifdef FEAT_MBYTE
! /* character fits on the screen, don't need to skip it */
! if ((*mb_ptr2cells)(ptr) >= c && col == 0)
#endif
n_skip = v - vcol;
}
--- 3429,3441 ----
#else
--ptr;
#endif
+ /* If the character fits on the screen, don't need to skip it.
+ * Except for a TAB. */
+ if ((
#ifdef FEAT_MBYTE
! (*mb_ptr2cells)(ptr) >= c ||
#endif
+ *ptr == TAB) && col == 0)
n_skip = v - vcol;
}
*** ../vim-8.0.0393/src/ex_docmd.c 2017-02-25 14:59:29.906090427 +0100
--- src/ex_docmd.c 2017-03-01 17:32:27.037653167 +0100
***************
*** 9812,9817 ****
--- 9812,9818 ----
RedrawingDisabled = 0;
p_lz = FALSE;
+ validate_cursor();
update_topline();
update_screen(eap->forceit ? CLEAR : VIsual_active ? INVERTED : 0);
#ifdef FEAT_TITLE
*** ../vim-8.0.0393/src/testdir/test_listlbr.vim 2017-02-05
21:14:26.743355267 +0100
--- src/testdir/test_listlbr.vim 2017-03-01 17:12:54.318105910 +0100
***************
*** 217,219 ****
--- 217,235 ----
call s:compare_lines(expect, lines)
call s:close_windows()
endfunc
+
+ func Test_list_with_tab_and_skipping_first_chars()
+ call s:test_windows('setl list listchars=tab:>- ts=70 nowrap')
+ call setline(1, ["iiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa",
"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa",
"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa",
"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa"])
+ call cursor(4,64)
+ norm! 2zl
+ let lines = s:screen_lines([1, 4], winwidth(0))
+ let expect = [
+ \ "---------------aaaaa",
+ \ "---------------aaaaa",
+ \ "---------------aaaaa",
+ \ "iiiiiiiii>-----aaaaa",
+ \ ]
+ call s:compare_lines(expect, lines)
+ call s:close_windows()
+ endfu
*** ../vim-8.0.0393/src/testdir/test_listlbr_utf8.vim 2017-02-26
19:40:55.869921651 +0100
--- src/testdir/test_listlbr_utf8.vim 2017-03-01 17:23:12.433679374 +0100
***************
*** 220,222 ****
--- 220,256 ----
call s:compare_lines(expect, lines)
call s:close_windows('setl brk&vim')
endfunc
+
+ func Test_chinese_char_on_wrap_column()
+ call s:test_windows("setl nolbr wrap sbr=")
+ syntax off
+ call setline(1, [
+ \ 'aaaaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'aaaaaaaaaaaaaaaaa中'.
+ \ 'hello'])
+ call cursor(1,1)
+ norm! $
+ redraw!
+ let expect=[
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中aaaaaaaaaaaaaaaaa>',
+ \ '中hello ']
+ let lines = s:screen_lines([1, 10], winwidth(0))
+ call s:compare_lines(expect, lines)
+ call s:close_windows()
+ endfu
*** ../vim-8.0.0393/src/testdir/test_breakindent.vim 2017-02-05
21:14:26.743355267 +0100
--- src/testdir/test_breakindent.vim 2017-03-01 17:42:25.897230778 +0100
***************
*** 274,280 ****
function Test_breakindent16()
" Check that overlong lines are indented correctly.
- " TODO: currently it does not fail even when the bug is not fixed.
let s:input=""
call s:test_windows('setl breakindent briopt=min:0 ts=4')
call setline(1, "\t".repeat("1234567890", 10))
--- 274,279 ----
***************
*** 283,298 ****
redraw!
let lines=s:screen_lines(1,10)
let expect=[
- \ " 123456",
\ " 789012",
\ " 345678",
\ ]
call s:compare_lines(expect, lines)
let lines=s:screen_lines(4,10)
let expect=[
- \ " 901234",
\ " 567890",
\ " 123456",
\ ]
call s:compare_lines(expect, lines)
call s:close_windows()
--- 282,297 ----
redraw!
let lines=s:screen_lines(1,10)
let expect=[
\ " 789012",
\ " 345678",
+ \ " 901234",
\ ]
call s:compare_lines(expect, lines)
let lines=s:screen_lines(4,10)
let expect=[
\ " 567890",
\ " 123456",
+ \ " 7890 ",
\ ]
call s:compare_lines(expect, lines)
call s:close_windows()
*** ../vim-8.0.0393/src/version.c 2017-03-01 15:45:01.410957865 +0100
--- src/version.c 2017-03-01 17:23:52.709388031 +0100
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 394,
/**/
--
hundred-and-one symptoms of being an internet addict:
34. You laugh at people with a 10 Mbit connection.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
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.