diff options
Diffstat (limited to 'data/vim/patches/8.1.0126')
-rw-r--r-- | data/vim/patches/8.1.0126 | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0126 b/data/vim/patches/8.1.0126 new file mode 100644 index 000000000..a179307be --- /dev/null +++ b/data/vim/patches/8.1.0126 @@ -0,0 +1,213 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0126 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0126 +Problem: Various problems with 'vartabstop'. +Solution: Fix memory leak. Fix crash. Add a few more tests. (Christian + Brabandt, closes #3076) +Files: src/ex_cmds.c, src/option.c, src/screen.c, + src/testdir/test_vartabs.vim + + +*** ../vim-8.1.0125/src/ex_cmds.c 2018-06-28 11:28:04.793455550 +0200 +--- src/ex_cmds.c 2018-06-28 20:37:11.354721386 +0200 +*************** +*** 866,872 **** + { + set_string_option_direct((char_u *)"vts", -1, new_ts_str, + OPT_FREE|OPT_LOCAL, 0); +- vim_free(new_ts_str); + curbuf->b_p_vts_array = new_vts_array; + vim_free(old_vts_ary); + } +--- 866,871 ---- +*************** +*** 877,882 **** +--- 876,882 ---- + curbuf->b_p_ts = tabstop_first(new_vts_array); + vim_free(new_vts_array); + } ++ vim_free(new_ts_str); + } + #else + curbuf->b_p_ts = new_ts; +*** ../vim-8.1.0125/src/option.c 2018-06-28 15:29:48.081656098 +0200 +--- src/option.c 2018-06-28 20:40:51.173370370 +0200 +*************** +*** 12870,12876 **** + tabstop_fromto( + colnr_T start_col, + colnr_T end_col, +! int ts, + int *vts, + int *ntabs, + int *nspcs) +--- 12870,12876 ---- + tabstop_fromto( + colnr_T start_col, + colnr_T end_col, +! int ts_arg, + int *vts, + int *ntabs, + int *nspcs) +*************** +*** 12880,12891 **** + int padding = 0; + int tabcount; + int t; + + if (vts == NULL || vts[0] == 0) + { + int tabs = 0; +! int initspc = ts - (start_col % ts); + + if (spaces >= initspc) + { + spaces -= initspc; +--- 12880,12893 ---- + int padding = 0; + int tabcount; + int t; ++ int ts = ts_arg == 0 ? curbuf->b_p_ts : ts_arg; + + if (vts == NULL || vts[0] == 0) + { + int tabs = 0; +! int initspc = 0; + ++ initspc = ts - (start_col % ts); + if (spaces >= initspc) + { + spaces -= initspc; +*** ../vim-8.1.0125/src/screen.c 2018-06-25 21:24:47.284934379 +0200 +--- src/screen.c 2018-06-28 20:38:50.538108113 +0200 +*************** +*** 4753,4765 **** + n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol, + NULL) - 1; + if (c == TAB && n_extra + col > wp->w_width) +! #ifdef FEAT_VARTABS + n_extra = tabstop_padding(vcol, wp->w_buffer->b_p_ts, +! wp->w_buffer->b_p_vts_array) - 1; +! #else + n_extra = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; +! #endif + + # ifdef FEAT_MBYTE + c_extra = mb_off > 0 ? MB_FILLER_CHAR : ' '; +--- 4753,4765 ---- + n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol, + NULL) - 1; + if (c == TAB && n_extra + col > wp->w_width) +! # ifdef FEAT_VARTABS + n_extra = tabstop_padding(vcol, wp->w_buffer->b_p_ts, +! wp->w_buffer->b_p_vts_array) - 1; +! # else + n_extra = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; +! # endif + + # ifdef FEAT_MBYTE + c_extra = mb_off > 0 ? MB_FILLER_CHAR : ' '; +*************** +*** 4902,4907 **** +--- 4902,4912 ---- + p_extra_free = p; + for (i = 0; i < tab_len; i++) + { ++ if (*p == NUL) ++ { ++ tab_len = i; ++ break; ++ } + #ifdef FEAT_MBYTE + mb_char2bytes(lcs_tab2, p); + p += mb_char2len(lcs_tab2); +*** ../vim-8.1.0125/src/testdir/test_vartabs.vim 2018-06-25 21:24:47.284934379 +0200 +--- src/testdir/test_vartabs.vim 2018-06-28 20:42:19.772833210 +0200 +*************** +*** 262,282 **** + endfunc + + func! Test_vartabs_linebreak() +! if winwidth(0) < 80 + return + endif + new +! 70vnew + %d +! setl linebreak vartabstop=10,15,20,40 + call setline(1, "\tx\tx\tx\tx") + +! let lines = ScreenLines([1, 2], winwidth(0)) +! let expect = [' x x x ', +! \ ' x '] + call s:compare_lines(expect, lines) + + " cleanup + bw! + bw! + endfunc +--- 262,298 ---- + endfunc + + func! Test_vartabs_linebreak() +! if winwidth(0) < 40 + return + endif + new +! 40vnew + %d +! setl linebreak vartabstop=10,20,30,40 + call setline(1, "\tx\tx\tx\tx") + +! let expect = [' x ', +! \ 'x x ', +! \ 'x '] +! let lines = ScreenLines([1, 3], winwidth(0)) +! call s:compare_lines(expect, lines) +! setl list listchars=tab:>- +! let expect = ['>---------x>------------------ ', +! \ 'x>------------------x>------------------', +! \ 'x '] +! let lines = ScreenLines([1, 3], winwidth(0)) +! call s:compare_lines(expect, lines) +! setl linebreak vartabstop=40 +! let expect = ['>---------------------------------------', +! \ 'x>--------------------------------------', +! \ 'x>--------------------------------------', +! \ 'x>--------------------------------------', +! \ 'x '] +! let lines = ScreenLines([1, 5], winwidth(0)) + call s:compare_lines(expect, lines) + + " cleanup + bw! + bw! ++ set nolist listchars&vim + endfunc +*** ../vim-8.1.0125/src/version.c 2018-06-28 19:26:24.321655175 +0200 +--- src/version.c 2018-06-28 20:36:19.043047749 +0200 +*************** +*** 791,792 **** +--- 791,794 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 126, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +138. You develop a liking for cold coffee. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 /// |