* fix(utils): swap_nodes calculates correct char_delta
The char_delta is not calculated correctly right now when there are two
treesitter nodes being swapped, one directly following the other. This
is rare but can happen for example when attempting to swap "print" and
"(1)" in "print(1)". In this case an incorrect char_delta is calculated
because of a bug in range comparison.
* test(swap_nodes): check cursor
* add a regression test (for multiline node swap)
* add a test with adjacent swaps that fails when char_delta is not
calculated correctly
* test(swap_nodes): check text content after swap
* test: note language for parser
* fix tests
* use same not equal for table comparison
After some discussion, it looks like the easiest thing to do for now is
to keep a private copy of get_node_text (just to skip the deprecation
message) and invoke that, until core provides an equivalent function
that can return the node content in a table representing the node
"lines".
Also fixes the statusline by calling the private version for
get_node_text until a change is made in core.
Offset encoding is a mandatory argument to
`vim.lsp.util.apply_text_edits` since bc722c8a74
Since we are always within a Neovim context, we can just pass `"utf-8"`.
https://github.com/nvim-treesitter/nvim-treesitter/pull/1829
half fixed incremental selection for the vim parser,
but other bugs still remain (infinite selection and skip selecting the
root node).
Problems can be replicated with these two files:
(missing selecting the root node)
```vim
set scrolloff=7
set scrolloff=7
```
(infinite loop)
```vim
set scrolloff=7
```
The main problem is that we try to map
the current selection range to a TS range,
but the TS range of a node could include the EOL/EOL marks
so it's impossible to know when to change the vim range
to match the TS range, is more easy to transform the
TS range to a vim range and do the comparison.
Be sure to call `parser:parser()` to get a tree instead of getting the
tree directly. This will not cost anything is the buffer is freshly
parsed.
Fixes#181