summaryrefslogtreecommitdiff
path: root/src/normal.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-05-25 13:12:36 +0200
committerBram Moolenaar <Bram@vim.org>2012-05-25 13:12:36 +0200
commit6057b9c658d9f05286675ee417bf1de9d3ca5aff (patch)
tree5894685d1d9f1439639f74a018a2af6a63f9955a /src/normal.c
parentbef1c36ab66a387dbcc87c424030e0cdcb728e69 (diff)
downloadvim-6057b9c658d9f05286675ee417bf1de9d3ca5aff.zip
updated for version 7.3.529
Problem: Using a count before "v" and "V" does not work (Kikyous) Solution: Make the count select that many characters or lines. (Christian Brabandt)
Diffstat (limited to 'src/normal.c')
-rw-r--r--src/normal.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/normal.c b/src/normal.c
index e3a02553f..3c66a3773 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -7660,13 +7660,9 @@ nv_visual(cap)
else /* start Visual mode */
{
check_visual_highlight();
- if (cap->count0) /* use previously selected part */
+ if (cap->count0 > 0 && resel_VIsual_mode != NUL)
{
- if (resel_VIsual_mode == NUL) /* there is none */
- {
- beep_flush();
- return;
- }
+ /* use previously selected part */
VIsual = curwin->w_cursor;
VIsual_active = TRUE;
@@ -7725,6 +7721,16 @@ nv_visual(cap)
/* start Select mode when 'selectmode' contains "cmd" */
may_start_select('c');
n_start_visual_mode(cap->cmdchar);
+ if (VIsual_mode != 'V' && *p_sel == 'e')
+ ++cap->count1; /* include one more char */
+ if (cap->count0 > 0 && --cap->count1 > 0)
+ {
+ /* With a count select that many characters or lines. */
+ if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V)
+ nv_right(cap);
+ else if (VIsual_mode == 'V')
+ nv_down(cap);
+ }
}
}
}