diff options
Diffstat (limited to 'data/vim/patches/8.1.0542')
-rw-r--r-- | data/vim/patches/8.1.0542 | 423 |
1 files changed, 0 insertions, 423 deletions
diff --git a/data/vim/patches/8.1.0542 b/data/vim/patches/8.1.0542 deleted file mode 100644 index 761fd1b22..000000000 --- a/data/vim/patches/8.1.0542 +++ /dev/null @@ -1,423 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0542 -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.0542 -Problem: shiftwidth() does not take 'vartabstop' into account. -Solution: Use the cursor position or a position explicitly passed. - Also make >> and << work better with 'vartabstop'. (Christian - Brabandt) -Files: runtime/doc/change.txt, runtime/doc/eval.txt, src/edit.c, - src/evalfunc.c, src/normal.c, src/ops.c, src/option.c, - src/proto/edit.pro, src/proto/option.pro, - src/testdir/test_vartabs.vim - -*** ../vim-8.1.0541/runtime/doc/change.txt 2018-07-29 16:09:14.628945654 +0200 ---- runtime/doc/change.txt 2018-11-22 02:13:49.924044656 +0100 -*************** -*** 476,481 **** ---- 476,485 ---- - *<* - <{motion} Shift {motion} lines one 'shiftwidth' leftwards. - -+ If the 'vartabstop' feature is enabled, and the -+ 'shiftwidth' option is set to zero, the amount of -+ indent is calculated at the first non-blank character -+ in the line. - *<<* - << Shift [count] lines one 'shiftwidth' leftwards. - -*************** -*** 487,492 **** ---- 491,500 ---- - *>* - >{motion} Shift {motion} lines one 'shiftwidth' rightwards. - -+ If the 'vartabstop' feature is enabled, and the -+ 'shiftwidth' option is set to zero, the amount of -+ indent is calculated at the first non-blank character -+ in the line. - *>>* - >> Shift [count] lines one 'shiftwidth' rightwards. - -*************** -*** 708,713 **** ---- 716,722 ---- - search pattern. - {not in Vi: highlighting of the match, other responses than 'y' or 'n'} - -+ *:s_e* - [e] When the search pattern fails, do not issue an error message and, in - particular, continue in maps as if no error occurred. This is most - useful to prevent the "No match" error from breaking a mapping. Vim -*************** -*** 719,724 **** ---- 728,734 ---- - Interrupted - {not in Vi} - -+ *:s_g* - [g] Replace all occurrences in the line. Without this argument, - replacement occurs only for the first occurrence in each line. If - the 'edcompatible' option is on, Vim remembers this flag and toggles -*** ../vim-8.1.0541/runtime/doc/eval.txt 2018-11-11 15:20:32.432704446 +0100 ---- runtime/doc/eval.txt 2018-11-22 02:20:01.809633383 +0100 -*************** -*** 2379,2385 **** - shellescape({string} [, {special}]) - String escape {string} for use as shell - command argument -! shiftwidth() Number effective value of 'shiftwidth' - simplify({filename}) String simplify filename as much as possible - sin({expr}) Float sine of {expr} - sinh({expr}) Float hyperbolic sine of {expr} ---- 2385,2391 ---- - shellescape({string} [, {special}]) - String escape {string} for use as shell - command argument -! shiftwidth([{col}]) Number effective value of 'shiftwidth' - simplify({filename}) String simplify filename as much as possible - sin({expr}) Float sine of {expr} - sinh({expr}) Float hyperbolic sine of {expr} -*************** -*** 7629,7639 **** - < See also |::S|. - - -! shiftwidth() *shiftwidth()* - Returns the effective value of 'shiftwidth'. This is the - 'shiftwidth' value unless it is zero, in which case it is the - 'tabstop' value. This function was introduced with patch -! 7.3.694 in 2012, everybody should have it by now. - - - simplify({filename}) *simplify()* ---- 7638,7654 ---- - < See also |::S|. - - -! shiftwidth([{col}]) *shiftwidth()* - Returns the effective value of 'shiftwidth'. This is the - 'shiftwidth' value unless it is zero, in which case it is the - 'tabstop' value. This function was introduced with patch -! 7.3.694 in 2012, everybody should have it by now (however it -! did not allow for the optional {col} argument until 8.1.542). -! -! When there is one argument {col} this is used as column number -! for which to return the 'shiftwidth' value. This matters for the -! 'vartabstop' feature. If the 'vartabstop' setting is enabled and -! no {col} argument is given, column 1 will be assumed. - - - simplify({filename}) *simplify()* -*** ../vim-8.1.0541/src/edit.c 2018-11-02 11:59:11.555438565 +0100 ---- src/edit.c 2018-11-22 02:21:29.857045389 +0100 -*************** -*** 262,268 **** - #ifdef FEAT_SMARTINDENT - static void ins_try_si(int c); - #endif -- static colnr_T get_nolist_virtcol(void); - #if defined(FEAT_EVAL) - static char_u *do_insert_char_pre(int c); - #endif ---- 262,267 ---- -*************** -*** 10681,10689 **** - * Get the value that w_virtcol would have when 'list' is off. - * Unless 'cpo' contains the 'L' flag. - */ -! static colnr_T - get_nolist_virtcol(void) - { - if (curwin->w_p_list && vim_strchr(p_cpo, CPO_LISTWM) == NULL) - return getvcol_nolist(&curwin->w_cursor); - validate_virtcol(); ---- 10680,10693 ---- - * Get the value that w_virtcol would have when 'list' is off. - * Unless 'cpo' contains the 'L' flag. - */ -! colnr_T - get_nolist_virtcol(void) - { -+ // check validity of cursor in current buffer -+ if (curwin->w_buffer == NULL -+ || curwin->w_buffer->b_ml.ml_mfp == NULL -+ || curwin->w_cursor.lnum > curwin->w_buffer->b_ml.ml_line_count) -+ return 0; - if (curwin->w_p_list && vim_strchr(p_cpo, CPO_LISTWM) == NULL) - return getvcol_nolist(&curwin->w_cursor); - validate_virtcol(); -*** ../vim-8.1.0541/src/evalfunc.c 2018-11-11 21:22:53.649977524 +0100 ---- src/evalfunc.c 2018-11-22 02:23:21.876290935 +0100 -*************** -*** 835,841 **** - {"sha256", 1, 1, f_sha256}, - #endif - {"shellescape", 1, 2, f_shellescape}, -! {"shiftwidth", 0, 0, f_shiftwidth}, - {"simplify", 1, 1, f_simplify}, - #ifdef FEAT_FLOAT - {"sin", 1, 1, f_sin}, ---- 835,841 ---- - {"sha256", 1, 1, f_sha256}, - #endif - {"shellescape", 1, 2, f_shellescape}, -! {"shiftwidth", 0, 1, f_shiftwidth}, - {"simplify", 1, 1, f_simplify}, - #ifdef FEAT_FLOAT - {"sin", 1, 1, f_sin}, -*************** -*** 11241,11246 **** ---- 11241,11261 ---- - static void - f_shiftwidth(typval_T *argvars UNUSED, typval_T *rettv) - { -+ rettv->vval.v_number = 0; -+ -+ if (argvars[0].v_type != VAR_UNKNOWN) -+ { -+ long col; -+ -+ col = (long)get_tv_number_chk(argvars, NULL); -+ if (col < 0) -+ return; // type error; errmsg already given -+ #ifdef FEAT_VARTABS -+ rettv->vval.v_number = get_sw_value_col(curbuf, col); -+ return; -+ #endif -+ } -+ - rettv->vval.v_number = get_sw_value(curbuf); - } - -*** ../vim-8.1.0541/src/normal.c 2018-11-10 16:01:23.331381891 +0100 ---- src/normal.c 2018-11-22 02:24:26.215854890 +0100 -*************** -*** 8143,8148 **** ---- 8143,8149 ---- - do - i = gchar_cursor(); - while (VIM_ISWHITE(i) && oneright() == OK); -+ curwin->w_valid &= ~VALID_WCOL; - } - curwin->w_set_curswant = TRUE; - break; -*** ../vim-8.1.0541/src/ops.c 2018-11-16 20:54:27.053554626 +0100 ---- src/ops.c 2018-11-22 02:51:34.899814809 +0100 -*************** -*** 334,340 **** - { - int count; - int i, j; -! int p_sw = (int)get_sw_value(curbuf); - - count = get_indent(); /* get current indent */ - ---- 334,340 ---- - { - int count; - int i, j; -! int p_sw = (int)get_sw_value_indent(curbuf); - - count = get_indent(); /* get current indent */ - -*************** -*** 386,392 **** - int total; - char_u *newp, *oldp; - int oldcol = curwin->w_cursor.col; -! int p_sw = (int)get_sw_value(curbuf); - #ifdef FEAT_VARTABS - int *p_vts = curbuf->b_p_vts_array; - #endif ---- 386,392 ---- - int total; - char_u *newp, *oldp; - int oldcol = curwin->w_cursor.col; -! int p_sw = (int)get_sw_value_indent(curbuf); - #ifdef FEAT_VARTABS - int *p_vts = curbuf->b_p_vts_array; - #endif -*** ../vim-8.1.0541/src/option.c 2018-11-20 14:25:43.480880171 +0100 ---- src/option.c 2018-11-22 02:52:47.875239563 +0100 -*************** -*** 13113,13119 **** - long - get_sw_value(buf_T *buf) - { -! return buf->b_p_sw ? buf->b_p_sw : buf->b_p_ts; - } - - /* ---- 13113,13160 ---- - long - get_sw_value(buf_T *buf) - { -! return get_sw_value_col(buf, 0); -! } -! -! /* -! * Idem, using the first non-black in the current line. -! */ -! long -! get_sw_value_indent(buf_T *buf) -! { -! pos_T pos = curwin->w_cursor; -! -! pos.col = getwhitecols_curline(); -! return get_sw_value_pos(buf, &pos); -! } -! -! /* -! * Idem, using "pos". -! */ -! long -! get_sw_value_pos(buf_T *buf, pos_T *pos) -! { -! pos_T save_cursor = curwin->w_cursor; -! long sw_value; -! -! curwin->w_cursor = *pos; -! sw_value = get_sw_value_col(buf, get_nolist_virtcol()); -! curwin->w_cursor = save_cursor; -! return sw_value; -! } -! -! /* -! * Idem, using virtual column "col". -! */ -! long -! get_sw_value_col(buf_T *buf, colnr_T col UNUSED) -! { -! return buf->b_p_sw ? buf->b_p_sw : -! #ifdef FEAT_VARTABS -! tabstop_at(col, buf->b_p_ts, buf->b_p_vts_array); -! #else -! buf->b_p_ts; -! #endif - } - - /* -*** ../vim-8.1.0541/src/proto/edit.pro 2018-06-03 14:42:17.848505102 +0200 ---- src/proto/edit.pro 2018-11-22 02:27:22.574651476 +0100 -*************** -*** 46,49 **** ---- 46,50 ---- - void ins_scroll(void); - void ins_horscroll(void); - int ins_copychar(linenr_T lnum); -+ colnr_T get_nolist_virtcol(void); - /* vim: set ft=c : */ -*** ../vim-8.1.0541/src/proto/option.pro 2018-10-02 14:45:07.023652468 +0200 ---- src/proto/option.pro 2018-11-22 02:51:41.159765202 +0100 -*************** -*** 72,77 **** ---- 72,80 ---- - int tabstop_count(int *ts); - int tabstop_first(int *ts); - long get_sw_value(buf_T *buf); -+ long get_sw_value_indent(buf_T *buf); -+ long get_sw_value_pos(buf_T *buf, pos_T *pos); -+ long get_sw_value_col(buf_T *buf, colnr_T col); - long get_sts_value(void); - void find_mps_values(int *initc, int *findc, int *backwards, int switchit); - unsigned int get_bkc_value(buf_T *buf); -*** ../vim-8.1.0541/src/testdir/test_vartabs.vim 2018-10-15 22:51:46.744578471 +0200 ---- src/testdir/test_vartabs.vim 2018-11-22 02:54:38.198381540 +0100 -*************** -*** 297,302 **** ---- 297,367 ---- - set nolist listchars&vim - endfunc - -+ func Test_vartabs_shiftwidth() -+ "return -+ if winwidth(0) < 40 -+ return -+ endif -+ new -+ 40vnew -+ %d -+ " setl varsofttabstop=10,20,30,40 -+ setl shiftwidth=0 vartabstop=10,20,30,40 -+ call setline(1, "x") -+ -+ " Check without any change. -+ let expect = ['x '] -+ let lines = ScreenLines(1, winwidth(0)) -+ call s:compare_lines(expect, lines) -+ " Test 1: -+ " shiftwidth depends on the indent, first check with cursor at the end of the -+ " line (which is the same as the start of the line, since there is only one -+ " character). -+ norm! $>> -+ let expect1 = [' x '] -+ let lines = ScreenLines(1, winwidth(0)) -+ call s:compare_lines(expect1, lines) -+ call assert_equal(10, shiftwidth()) -+ call assert_equal(10, shiftwidth(1)) -+ call assert_equal(20, shiftwidth(virtcol('.'))) -+ norm! $>> -+ let expect2 = [' x ', '~ '] -+ let lines = ScreenLines([1, 2], winwidth(0)) -+ call s:compare_lines(expect2, lines) -+ call assert_equal(20, shiftwidth(virtcol('.')-2)) -+ call assert_equal(30, shiftwidth(virtcol('.'))) -+ norm! $>> -+ let expect3 = [' ', ' x ', '~ '] -+ let lines = ScreenLines([1, 3], winwidth(0)) -+ call s:compare_lines(expect3, lines) -+ call assert_equal(30, shiftwidth(virtcol('.')-2)) -+ call assert_equal(40, shiftwidth(virtcol('.'))) -+ norm! $>> -+ let expect4 = [' ', ' ', ' x '] -+ let lines = ScreenLines([1, 3], winwidth(0)) -+ call assert_equal(40, shiftwidth(virtcol('.'))) -+ call s:compare_lines(expect4, lines) -+ -+ " Test 2: Put the cursor at the first column, result should be the same -+ call setline(1, "x") -+ norm! 0>> -+ let lines = ScreenLines(1, winwidth(0)) -+ call s:compare_lines(expect1, lines) -+ norm! 0>> -+ let lines = ScreenLines([1, 2], winwidth(0)) -+ call s:compare_lines(expect2, lines) -+ norm! 0>> -+ let lines = ScreenLines([1, 3], winwidth(0)) -+ call s:compare_lines(expect3, lines) -+ norm! 0>> -+ let lines = ScreenLines([1, 3], winwidth(0)) -+ call s:compare_lines(expect4, lines) -+ -+ " cleanup -+ bw! -+ bw! -+ endfunc -+ - func Test_vartabs_failures() - call assert_fails('set vts=8,') - call assert_fails('set vsts=8,') -*** ../vim-8.1.0541/src/version.c 2018-11-21 13:58:27.092110956 +0100 ---- src/version.c 2018-11-22 02:19:24.593880355 +0100 -*************** -*** 794,795 **** ---- 794,797 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 542, - /**/ - --- -I wonder, do vegetarians eat fruit bats? - - /// 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 /// |