Mercurial > vim
diff src/ops.c @ 10670:bce3eccea39a v8.0.0225
patch 8.0.0225: put in Visual block mode terminates early
commit https://github.com/vim/vim/commit/9957a10d0f0c34d8083af6ed66e198e4796038e0
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jan 23 21:53:53 2017 +0100
patch 8.0.0225: put in Visual block mode terminates early
Problem: When a block is visually selected and put is used on the end of
the selection only one line is changed.
Solution: Check for the end properly. (Christian Brabandt, neovim issue
5781)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 23 Jan 2017 22:00:04 +0100 |
parents | 94db9c08e206 |
children | 3d1872fbecc4 |
line wrap: on
line diff
--- a/src/ops.c +++ b/src/ops.c @@ -3774,6 +3774,11 @@ do_put( */ if (y_type == MCHAR && y_size == 1) { + linenr_T end = curbuf->b_visual.vi_end.lnum; + + if (curbuf->b_visual.vi_end.lnum < curbuf->b_visual.vi_start.lnum) + end = curbuf->b_visual.vi_start.lnum; + do { totlen = count * yanklen; if (totlen > 0) @@ -3801,7 +3806,7 @@ do_put( } if (VIsual_active) lnum++; - } while (VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum); + } while (VIsual_active && lnum <= end); if (VIsual_active) /* reset lnum to the last visual line */ lnum--;