Yegappan wrote:

> The byteidx() function returns the length of a string in bytes when
> the specified character
> index is equal to the number of characters in the string:
> 
>     echo byteidx("abc", 3)
>     3

When increasing the index we get:
        echo byteidx("abc", 0) byteidx("abc", 1) byteidx("abc", 2) 
byteidx("abc", 3) byteidx("abc", 4)
        0 1 2 3 -1

> But the charidx() function returns -1 when the specified byte index is
> equal to the number
> of bytes in the string:
> 
>     echo charidx("abc", 3)
>     -1

        echo charidx("abc", 0) charidx("abc", 1) charidx("abc", 2) 
charidx("abc", 3) charidx("abc", 4)
        0 1 2 -1 -1

That is unexpected, for single-byte characters the byte index and
character index are the same.

> When I implemented the support for charidx() in 8.2.2233, I didn't
> handle this case properly.
> Should we change charidx() to return the number of characters in the
> string in this case?
> This will help in the LSP plugin where the language server specifies
> the index after the last character in some cases (e.g. completion).
> The LSP plugin currently checks for this case and then uses
> strcharlen() to get the number of characters.  This involves computing
> the string length two times.

It would be good if we can make this consistent.  There is a tiny
backwards compatibility problem, but does it matter?  I can't think of a
situation where a plugin would rely on getting -1 instead of the number
of characters.

If we change this, your plugin would still need to handle using an older
Vim version.  I suppose that's not much of a problem.

-- 
hundred-and-one symptoms of being an internet addict:
126. You brag to all of your friends about your date Saturday night...but
     you don't tell them it was only in a chat room.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20230607172738.F2F4E1C0758%40moolenaar.net.

Reply via email to