summaryrefslogtreecommitdiff
path: root/src/normal.c
diff options
context:
space:
mode:
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);
+ }
}
}
}