diff --git a/7.4.467 b/7.4.467 new file mode 100644 index 0000000..03b226b --- /dev/null +++ b/7.4.467 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.467 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.467 +Problem: 'linebreak' does not work well together with Visual mode. +Solution: Disable 'linebreak' while applying an operator. Fix the test. + (Christian Brabandt) +Files: src/normal.c, src/screen.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + + +*** ../vim-7.4.466/src/normal.c 2014-08-30 13:32:03.406623315 +0200 +--- src/normal.c 2014-10-09 13:17:59.264886376 +0200 +*************** +*** 1380,1385 **** +--- 1380,1391 ---- + pos_T old_cursor; + int empty_region_error; + int restart_edit_save; ++ #ifdef FEAT_LINEBREAK ++ int lbr_saved = curwin->w_p_lbr; ++ ++ curwin->w_p_lbr = FALSE; /* avoid a problem with unwanted linebreaks in ++ * block mode */ ++ #endif + + /* The visual area is remembered for redo */ + static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ +*************** +*** 2136,2141 **** +--- 2142,2150 ---- + oap->block_mode = FALSE; + clearop(oap); + } ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = lbr_saved; ++ #endif + } + + /* +*** ../vim-7.4.466/src/screen.c 2014-08-29 12:08:39.686423658 +0200 +--- src/screen.c 2014-10-09 13:18:52.868886493 +0200 +*************** +*** 1584,1592 **** + */ + if (VIsual_mode == Ctrl_V) + { +! colnr_T fromc, toc; + + getvcols(wp, &VIsual, &curwin->w_cursor, &fromc, &toc); + ++toc; + if (curwin->w_curswant == MAXCOL) + toc = MAXCOL; +--- 1584,1600 ---- + */ + if (VIsual_mode == Ctrl_V) + { +! colnr_T fromc, toc; +! #if defined(FEAT_VIRTUALEDIT) && defined(FEAT_LINEBREAK) +! int save_ve_flags = ve_flags; + ++ if (curwin->w_p_lbr) ++ ve_flags = VE_ALL; ++ #endif + getvcols(wp, &VIsual, &curwin->w_cursor, &fromc, &toc); ++ #if defined(FEAT_VIRTUALEDIT) && defined(FEAT_LINEBREAK) ++ ve_flags = save_ve_flags; ++ #endif + ++toc; + if (curwin->w_curswant == MAXCOL) + toc = MAXCOL; +*** ../vim-7.4.466/src/testdir/test_listlbr.in 2014-08-30 18:10:15.106659776 +0200 +--- src/testdir/test_listlbr.in 2014-10-09 13:16:33.072886187 +0200 +*************** +*** 2,8 **** + + STARTTEST + :so small.vim +! :if !exists("+linebreak") || !exists("+conceal") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 + :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" + :norm! zt +--- 2,8 ---- + + STARTTEST + :so small.vim +! :if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 + :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" + :norm! zt +*************** +*** 56,61 **** +--- 56,69 ---- + :syn match All /.*/ contains=ConcealVar + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() ++ :set cpo&vim linebreak ++ :let g:test ="Test 6: set linebreak with visual block mode" ++ :let line="REMOVE: this not" ++ :$put =line ++ :let line="REMOVE: aaaaaaaaaaaaa" ++ :$put =line ++ :1/^REMOVE: ++ 0jf x:$put + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.466/src/testdir/test_listlbr.ok 2014-08-29 12:08:39.686423658 +0200 +--- src/testdir/test_listlbr.ok 2014-10-09 13:16:33.072886187 +0200 +*************** +*** 32,34 **** +--- 32,38 ---- + ~ + ~ + ~ ++ this not ++ aaaaaaaaaaaaa ++ REMOVE: ++ REMOVE: +*** ../vim-7.4.466/src/version.c 2014-10-09 10:44:33.196866267 +0200 +--- src/version.c 2014-10-09 13:16:44.976886213 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 467, + /**/ + +-- +"Marriage is a wonderful institution... +but who wants to live in an institution?" + - Groucho Marx + + /// 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 ///