Files
neovim/runtime/lua/vim
Mathias Fußenegger bdff50dee5 fix(lsp): revert text edit application order change (#29877)
Reverts https://github.com/neovim/neovim/pull/29212 and adds a few
additional test cases

From the spec

> All text edits ranges refer to positions in the document they are
> computed on. They therefore move a document from state S1 to S2 without
> describing any intermediate state. Text edits ranges must never overlap,
> that means no part of the original document must be manipulated by more
> than one edit. However, it is possible that multiple edits have the same
> start position: multiple inserts, or any number of inserts followed by a
> single remove or replace edit. If multiple inserts have the same
> position, the order in the array defines the order in which the inserted
> strings appear in the resulting text.

The previous fix seems wrong. The important part:

> If multiple inserts have the same position, the order in the array
> defines the order in which the inserted strings appear in the
> resulting text.

Emphasis on _appear in the resulting text_

Which means that in:

    local edits1 = {
      make_edit(0, 3, 0, 3, { 'World' }),
      make_edit(0, 3, 0, 3, { 'Hello' }),
    }

`World` must appear before `Hello` in the final text. That means the old
logic was correct, and the fix was wrong.
2024-07-27 22:30:14 +02:00
..
2024-06-08 21:38:06 +02:00
2024-06-07 10:55:14 +08:00
2024-03-06 10:45:22 +00:00
2024-05-27 20:48:46 +02:00
2024-01-16 09:33:10 +00:00
2024-05-27 20:48:46 +02:00
2024-03-16 19:26:10 +00:00
2024-03-16 19:26:10 +00:00
2024-04-30 07:04:42 +08:00