summaryrefslogtreecommitdiff
path: root/src/search.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2007-06-19 10:56:05 +0000
committerBram Moolenaar <Bram@vim.org>2007-06-19 10:56:05 +0000
commit1864a4e0fd303ac2cb199df6993747a3a1f5a7b1 (patch)
treebe7d0f87decd690be4852b89671a7d60b2f8d61a /src/search.c
parentb1269f11849fd838b96a7629bb552f6cd4c59d16 (diff)
downloadvim-git-1864a4e0fd303ac2cb199df6993747a3a1f5a7b1.tar.gz
updated for version 7.1-005v7.1.005
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/search.c b/src/search.c
index d73f3b9f2..ff9eb6abb 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3600,13 +3600,16 @@ current_block(oap, count, include, what, other)
{
oap->start = start_pos;
oap->motion_type = MCHAR;
+ oap->inclusive = FALSE;
if (sol)
- {
incl(&curwin->w_cursor);
- oap->inclusive = FALSE;
- }
- else
+ else if (lt(start_pos, curwin->w_cursor))
+ /* Include the character under the cursor. */
oap->inclusive = TRUE;
+ else
+ /* End is before the start (no text in between <>, [], etc.): don't
+ * operate on any text. */
+ curwin->w_cursor = start_pos;
}
return OK;
@@ -3734,7 +3737,7 @@ current_tagblock(oap, count_arg, include)
if (in_html_tag(FALSE))
{
- /* cursor on start tag, move to just after it */
+ /* cursor on start tag, move to its '>' */
while (*ml_get_cursor() != '>')
if (inc_cursor() < 0)
break;
@@ -3838,7 +3841,7 @@ again:
/* Exclude the start tag. */
curwin->w_cursor = start_pos;
while (inc_cursor() >= 0)
- if (*ml_get_cursor() == '>' && lt(curwin->w_cursor, end_pos))
+ if (*ml_get_cursor() == '>')
{
inc_cursor();
start_pos = curwin->w_cursor;
@@ -3860,7 +3863,11 @@ again:
#ifdef FEAT_VISUAL
if (VIsual_active)
{
- if (*p_sel == 'e')
+ /* If the end is before the start there is no text between tags, select
+ * the char under the cursor. */
+ if (lt(end_pos, start_pos))
+ curwin->w_cursor = start_pos;
+ else if (*p_sel == 'e')
++curwin->w_cursor.col;
VIsual = start_pos;
VIsual_mode = 'v';
@@ -3872,7 +3879,15 @@ again:
{
oap->start = start_pos;
oap->motion_type = MCHAR;
- oap->inclusive = TRUE;
+ if (lt(end_pos, start_pos))
+ {
+ /* End is before the start: there is no text between tags; operate
+ * on an empty area. */
+ curwin->w_cursor = start_pos;
+ oap->inclusive = FALSE;
+ }
+ else
+ oap->inclusive = TRUE;
}
retval = OK;