diff options
author | Sam Bingner <sam@bingner.com> | 2019-06-05 22:02:50 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2019-06-05 22:02:50 -1000 |
commit | a255618e22152ca2e5fd361a3d0762e9db20dd80 (patch) | |
tree | 5c98f76c0de0785b8d5b58ac622da34f0d024a8f /data/vim/patches/8.1.1343 | |
parent | 1b1fa61507a809a66f053a8523f883b2b6a2f487 (diff) |
Update vim to 8.1.1471
Diffstat (limited to 'data/vim/patches/8.1.1343')
-rw-r--r-- | data/vim/patches/8.1.1343 | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1343 b/data/vim/patches/8.1.1343 new file mode 100644 index 000000000..9a414caf3 --- /dev/null +++ b/data/vim/patches/8.1.1343 @@ -0,0 +1,274 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1343 +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.1343 +Problem: Text properties not adjusted for Visual block mode delete. +Solution: Call adjust_prop_columns(). (closes #4384) +Files: src/ops.c, src/textprop.c, src/testdir/test_textprop.vim, + src/misc1.c, src/testdir/dumps/Test_textprop_vis_01.dump, + src/testdir/dumps/Test_textprop_vis_02.dump + + +*** ../vim-8.1.1342/src/ops.c 2019-05-17 20:17:36.277186167 +0200 +--- src/ops.c 2019-05-17 21:09:38.183335755 +0200 +*************** +*** 1916,1925 **** + curwin->w_cursor.coladd = 0; + } + +! /* n == number of chars deleted +! * If we delete a TAB, it may be replaced by several characters. +! * Thus the number of characters may increase! +! */ + n = bd.textlen - bd.startspaces - bd.endspaces; + oldp = ml_get(lnum); + newp = alloc_check((unsigned)STRLEN(oldp) + 1 - n); +--- 1916,1924 ---- + curwin->w_cursor.coladd = 0; + } + +! // "n" == number of chars deleted +! // If we delete a TAB, it may be replaced by several characters. +! // Thus the number of characters may increase! + n = bd.textlen - bd.startspaces - bd.endspaces; + oldp = ml_get(lnum); + newp = alloc_check((unsigned)STRLEN(oldp) + 1 - n); +*************** +*** 1935,1940 **** +--- 1934,1944 ---- + STRMOVE(newp + bd.textcol + bd.startspaces + bd.endspaces, oldp); + /* replace the line */ + ml_replace(lnum, newp, FALSE); ++ ++ #ifdef FEAT_TEXT_PROP ++ if (curbuf->b_has_textprop && n != 0) ++ adjust_prop_columns(lnum, bd.textcol, -n); ++ #endif + } + + check_cursor_col(); +*** ../vim-8.1.1342/src/textprop.c 2019-05-17 19:56:29.860129184 +0200 +--- src/textprop.c 2019-05-17 21:54:59.788551130 +0200 +*************** +*** 957,963 **** + * shift by "bytes_added" (can be negative). + * Note that "col" is zero-based, while tp_col is one-based. + * Only for the current buffer. +! * Called is expected to check b_has_textprop and "bytes_added" being non-zero. + */ + void + adjust_prop_columns( +--- 957,963 ---- + * shift by "bytes_added" (can be negative). + * Note that "col" is zero-based, while tp_col is one-based. + * Only for the current buffer. +! * Caller is expected to check b_has_textprop and "bytes_added" being non-zero. + */ + void + adjust_prop_columns( +*************** +*** 994,1008 **** + ? 2 : 1)) + : (tmp_prop.tp_col > col + 1)) + { +! tmp_prop.tp_col += bytes_added; + dirty = TRUE; + } + else if (tmp_prop.tp_len > 0 + && tmp_prop.tp_col + tmp_prop.tp_len > col + + ((pt != NULL && (pt->pt_flags & PT_FLAG_INS_END_INCL)) + ? 0 : 1)) + { +! tmp_prop.tp_len += bytes_added; + dirty = TRUE; + if (tmp_prop.tp_len <= 0) + continue; // drop this text property +--- 994,1021 ---- + ? 2 : 1)) + : (tmp_prop.tp_col > col + 1)) + { +! if (tmp_prop.tp_col + bytes_added < col + 1) +! { +! tmp_prop.tp_len += (tmp_prop.tp_col - 1 - col) + bytes_added; +! tmp_prop.tp_col = col + 1; +! } +! else +! tmp_prop.tp_col += bytes_added; + dirty = TRUE; ++ if (tmp_prop.tp_len <= 0) ++ continue; // drop this text property + } + else if (tmp_prop.tp_len > 0 + && tmp_prop.tp_col + tmp_prop.tp_len > col + + ((pt != NULL && (pt->pt_flags & PT_FLAG_INS_END_INCL)) + ? 0 : 1)) + { +! int after = col - bytes_added +! - (tmp_prop.tp_col - 1 + tmp_prop.tp_len); +! if (after > 0) +! tmp_prop.tp_len += bytes_added + after; +! else +! tmp_prop.tp_len += bytes_added; + dirty = TRUE; + if (tmp_prop.tp_len <= 0) + continue; // drop this text property +*** ../vim-8.1.1342/src/testdir/test_textprop.vim 2019-05-17 19:56:29.860129184 +0200 +--- src/testdir/test_textprop.vim 2019-05-17 22:18:01.264176320 +0200 +*************** +*** 613,619 **** + endfunc + + " screenshot test with textprop highlighting +! funct Test_textprop_screenshots() + " The Vim running in the terminal needs to use utf-8. + if !CanRunVimInTerminal() || g:orig_encoding != 'utf-8' + return +--- 613,619 ---- + endfunc + + " screenshot test with textprop highlighting +! func Test_textprop_screenshot_various() + " The Vim running in the terminal needs to use utf-8. + if !CanRunVimInTerminal() || g:orig_encoding != 'utf-8' + return +*************** +*** 671,673 **** +--- 671,722 ---- + call StopVimInTerminal(buf) + call delete('XtestProp') + endfunc ++ ++ func RunTestVisualBlock(width, dump) ++ call writefile([ ++ \ "call setline(1, [" ++ \ .. "'xxxxxxxxx 123 x'," ++ \ .. "'xxxxxxxx 123 x'," ++ \ .. "'xxxxxxx 123 x'," ++ \ .. "'xxxxxx 123 x'," ++ \ .. "'xxxxx 123 x'," ++ \ .. "'xxxx 123 xx'," ++ \ .. "'xxx 123 xxx'," ++ \ .. "'xx 123 xxxx'," ++ \ .. "'x 123 xxxxx'," ++ \ .. "' 123 xxxxxx'," ++ \ .. "])", ++ \ "hi SearchProp ctermbg=yellow", ++ \ "call prop_type_add('search', {'highlight': 'SearchProp'})", ++ \ "call prop_add(1, 11, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(2, 10, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(3, 9, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(4, 8, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(5, 7, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(6, 6, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(7, 5, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(8, 4, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(9, 3, {'length': 3, 'type': 'search'})", ++ \ "call prop_add(10, 2, {'length': 3, 'type': 'search'})", ++ \ "normal 1G6|\<C-V>" .. repeat('l', a:width - 1) .. "10jx", ++ \], 'XtestPropVis') ++ let buf = RunVimInTerminal('-S XtestPropVis', {'rows': 12}) ++ call VerifyScreenDump(buf, 'Test_textprop_vis_' .. a:dump, {}) ++ ++ " clean up ++ call StopVimInTerminal(buf) ++ call delete('XtestPropVis') ++ endfunc ++ ++ " screenshot test with Visual block mode operations ++ func Test_textprop_screenshot_visual() ++ if !CanRunVimInTerminal() ++ return ++ endif ++ ++ " Delete two columns while text props are three chars wide. ++ call RunTestVisualBlock(2, '01') ++ ++ " Same, but delete four columns ++ call RunTestVisualBlock(4, '02') ++ endfunc +*** ../vim-8.1.1342/src/misc1.c 2019-05-11 17:03:55.166019785 +0200 +--- src/misc1.c 2019-05-17 22:55:55.840537922 +0200 +*************** +*** 434,441 **** + saved_cursor.col = (colnr_T)(s - newline); + } + #ifdef FEAT_TEXT_PROP +! adjust_prop_columns(curwin->w_cursor.lnum, (colnr_T)(p - oldline), +! ind_len - (colnr_T)(p - oldline)); + #endif + retval = TRUE; + } +--- 434,448 ---- + saved_cursor.col = (colnr_T)(s - newline); + } + #ifdef FEAT_TEXT_PROP +! { +! int added = ind_len - (colnr_T)(p - oldline); +! +! // When increasing indent this behaves like spaces were inserted at +! // the old indent, when decreasing indent it behaves like spaces +! // were deleted at the new indent. +! adjust_prop_columns(curwin->w_cursor.lnum, +! (colnr_T)(added > 0 ? (p - oldline) : ind_len), added); +! } + #endif + retval = TRUE; + } +*** ../vim-8.1.1342/src/testdir/dumps/Test_textprop_vis_01.dump 2019-05-17 22:56:37.016317697 +0200 +--- src/testdir/dumps/Test_textprop_vis_01.dump 2019-05-17 22:18:08.928132508 +0200 +*************** +*** 0 **** +--- 1,12 ---- ++ |x+0&#ffffff0@4>x@1| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @61 ++ |x@5| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @62 ++ |x@4| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63 ++ |x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64 ++ |x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65 ++ |x@3| |3+0&#ffff4012| +0&#ffffff0|x@1| @65 ++ |x@2| |1+0&#ffff4012| +0&#ffffff0|x@2| @65 ++ |x@1| |1+0&#ffff4012|2|x+0&#ffffff0@3| @65 ++ |x| |1+0&#ffff4012|2|3|x+0&#ffffff0@3| @65 ++ @1|1+0&#ffff4012|2|3| +0&#ffffff0|x@3| @65 ++ |~+0#4040ff13&| @73 ++ | +0#0000000&@56|1|,|6| @10|A|l@1| +*** ../vim-8.1.1342/src/testdir/dumps/Test_textprop_vis_02.dump 2019-05-17 22:56:37.020317676 +0200 +--- src/testdir/dumps/Test_textprop_vis_02.dump 2019-05-17 22:18:10.028126220 +0200 +*************** +*** 0 **** +--- 1,12 ---- ++ |x+0&#ffffff0@4> |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63 ++ |x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64 ++ |x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65 ++ |x@4|3+0&#ffff4012| +0&#ffffff0|x| @66 ++ |x@4| |x| @67 ++ |x@3| |x@1| @67 ++ |x@2| |1+0&#ffff4012|x+0&#ffffff0@1| @67 ++ |x@1| |1+0&#ffff4012|2|x+0&#ffffff0@1| @67 ++ |x| |1+0&#ffff4012|2|3|x+0&#ffffff0@1| @67 ++ @1|1+0&#ffff4012|2|3| +0&#ffffff0|x@1| @67 ++ |~+0#4040ff13&| @73 ++ | +0#0000000&@56|1|,|6| @10|A|l@1| +*** ../vim-8.1.1342/src/version.c 2019-05-17 20:17:36.277186167 +0200 +--- src/version.c 2019-05-17 22:56:44.572277252 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1343, + /**/ + +-- +Your company is doomed if your primary product is overhead transparencies. + (Scott Adams - The Dilbert principle) + + /// 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 /// |