huggingface / llm-ls

LSP server leveraging LLMs for code completion (and more?)
Apache License 2.0
602 stars 49 forks source link

Fix off-by-1 error when removing from end of document #61

Closed HennerM closed 8 months ago

HennerM commented 8 months ago

I encountered a bug where the in-memory document did get out of the sync with my editor, specifically the in-memory document had an additional character at the end that was previously deleted.

This happens because the deletion index was using the get_position_idx which caps the character of a range to the number of chars in the specific line - 1. This is usually okay, but if we delete from the end of the line the Range End is actually designated as end_char + 1.

This resulted in one dangling character at the end when deleting from the end.

The out-of-sync lead to all kinds of underflow and range errors. I tested the change together with a local checkout of llm-vscode, which now behaves as intended when deleting from the end