zbirenbaum / copilot.lua

Fully featured & enhanced replacement for copilot.vim complete with API for interacting with Github Copilot
MIT License
2.79k stars 87 forks source link

Error accepting suggestions with multibyte (Cyrillic) characters (`utf-16` -> `utf-8` fixes the issue) #330

Open Galicarnax opened 4 weeks ago

Galicarnax commented 4 weeks ago

When I type with Cyrillic alphabet, and getting suggestions, pressing the key binding to accept gives this error:

Error  02:24:02 PM msg_show.lua_error Error executing vim.schedule lua callback: /usr/share/nvim/runtime/lua/vim/lsp/util.lua:485: index out of range
stack traceback:
    [C]: in function 'get_line_byte_from_position'
    /usr/share/nvim/runtime/lua/vim/lsp/util.lua:485: in function 'apply_text_edits'
    ...l/share/nvim/lazy/copilot.lua/lua/copilot/suggestion.lua:489: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>

Looking into lua/copilot/suggestion.lua, I see this:

    vim.lsp.util.apply_text_edits({ { range = range, newText = newText } }, vim.api.nvim_get_current_buf(), "utf-16")

If I change utf-16 to utf-8, everything seems to work fine. Any reason for utf-16 here?

traysh commented 3 weeks ago

I'm having the same problem when I have any accents in the line I'm accepting the suggestion, such as é or ö. I'm on Linux, the default encoding is utf-8.

I confirm setting that line to utf-8 fixes it for me, but it would probably break for files with other encodings, and some platforms use other encodings by default. Maybe it would be better to check the buffer encoding?

traysh commented 3 weeks ago

This PR should fix it.