Hi,

I am updating the Vim9 LSP plugin to support various position
encodings (utf-8, utf-16 and utf-32).
I ran into a problem with positioning the cursor on a multibyte
character with composing characters.

The LSP plugin uses the Vim function setcursorcharpos() to position
the cursor.  This function ignores composing characters. The LSP
server counts the composing characters separately from
the base character.  So when using the character index returned by the
LSP server to
position the cursor, the cursor is placed in an incorrect column.

e.g:

void fn(int aVar)
{
    printf("aVar = %d\n", aVar);
    printf("😊😊😊😊 = %d\n", aVar);
    printf("áb́áb́ = %d\n", aVar);
    printf("ą́ą́ą́ą́ = %d\n", aVar);
}

I have tried this test with clangd, pyright and gopls language servers
and all of them count the
composing characters as separate characters.

One approach to solve this issue is to add an optional argument to the
setcursorcharpos() function
that either counts or ignores composing characters. The default is to
ignore the composing
characters.  Another approach is to add a function that computes the
character offset ignoring the composing characters from a character
offset that includes the composing characters.

Any suggestions?

Thanks,
Yegappan

-- 
-- 
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/CAAW7x7kQhcr1VAo-6j21Hq3ztdhWuVgQ0DcA98FdpTqJ%2BQy1Kw%40mail.gmail.com.

Raspunde prin e-mail lui