Sung Pae wrote:

> Fix case where searching backwards from a multibyte character on the
> same line results in a wrong cursor offset. Given the buffer:
> 
>     0123❤
> 
> With the cursor on the 3-byte UTF-8 character ❤ (U+2764), calling the
> command
> 
>     :call search('.', 'b')
> 
> places the cursor on "1" instead of "3". This is due to erroneously
> counting the length of the character as an extra offset, which is not
> needed when searching backwards.
> ---
>  src/search.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/search.c b/src/search.c
> index d7bfc43..8e058eb 100644
> --- a/src/search.c
> +++ b/src/search.c
> @@ -572,7 +572,8 @@ searchit(win, buf, pos, dir, pat, count, options, 
> pat_use, stop_lnum, tm)
>       extra_col = 0;
>  #ifdef FEAT_MBYTE
>      /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */
> -    else if (has_mbyte && pos->lnum >= 1 && pos->lnum <= 
> buf->b_ml.ml_line_count
> +    else if (dir != BACKWARD && has_mbyte
> +                 && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count
>                                                    && pos->col < MAXCOL - 2)
>      {
>       ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col;

Thanks for the patch!

If you can, it would be nice to have a test for this.  So that it
doesn't break again when making other changes.

-- 
If Microsoft would build a car...
... You'd have to press the "Start" button to turn the engine off.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui