1
0
forked from aniani/vim

updated for version 7.1-258

This commit is contained in:
Bram Moolenaar
2008-02-20 12:43:01 +00:00
parent c7486c858d
commit 5bcbd537b4

View File

@@ -624,7 +624,7 @@ searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm)
#ifdef FEAT_EVAL
submatch = first_submatch(&regmatch);
#endif
/* Line me be past end of buffer for "\n\zs". */
/* "lnum" may be past end of buffer for "\n\zs". */
if (lnum + matchpos.lnum > buf->b_ml.ml_line_count)
ptr = (char_u *)"";
else
@@ -833,22 +833,39 @@ searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm)
continue;
}
if (options & SEARCH_END && !(options & SEARCH_NOOF))
/* With the SEARCH_END option move to the last character
* of the match. Don't do it for an empty match, end
* should be same as start then. */
if (options & SEARCH_END && !(options & SEARCH_NOOF)
&& !(matchpos.lnum == endpos.lnum
&& matchpos.col == endpos.col))
{
/* For a match in the first column, set the position
* on the NUL in the previous line. */
pos->lnum = lnum + endpos.lnum;
pos->col = endpos.col - 1;
#ifdef FEAT_MBYTE
if (has_mbyte)
pos->col = endpos.col;
if (endpos.col == 0)
{
/* 'e' offset may put us just below the last line */
if (pos->lnum > buf->b_ml.ml_line_count)
ptr = (char_u *)"";
if (pos->lnum > 1) /* just in case */
{
--pos->lnum;
pos->col = (colnr_T)STRLEN(ml_get_buf(buf,
pos->lnum, FALSE));
}
}
else
{
--pos->col;
#ifdef FEAT_MBYTE
if (has_mbyte
&& pos->lnum <= buf->b_ml.ml_line_count)
{
ptr = ml_get_buf(buf, pos->lnum, FALSE);
pos->col -= (*mb_head_off)(ptr, ptr + pos->col);
}
#endif
}
}
else
{
pos->lnum = lnum + matchpos.lnum;