aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2023-09-16 14:59:20 +0200
committerGitHub <noreply@github.com>2023-09-16 14:59:20 +0200
commit883e2a1409feb3420f333c56446f0dbb49cd47cb (patch)
tree659e3acfb83bb7bc2631658b24b8f8807a869876 /src
parent07080f67fe7e526576d5d50777fb122a99b3e183 (diff)
parent477458f7bf8dc70ff56d3d4af4ef44f83b95016a (diff)
downloadrneovim-883e2a1409feb3420f333c56446f0dbb49cd47cb.tar.gz
rneovim-883e2a1409feb3420f333c56446f0dbb49cd47cb.tar.bz2
rneovim-883e2a1409feb3420f333c56446f0dbb49cd47cb.zip
Merge pull request #25186 from llllvvuu/fix/preserve_marktree_orderinh
fix(marktree): preserve ordering in `marktree_move`
Diffstat (limited to 'src')
-rw-r--r--src/nvim/marktree.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/nvim/marktree.c b/src/nvim/marktree.c
index e0bc9ae347..627efa9e96 100644
--- a/src/nvim/marktree.c
+++ b/src/nvim/marktree.c
@@ -1178,6 +1178,9 @@ void marktree_move(MarkTree *b, MarkTreeIter *itr, int row, int col)
}
if (internal) {
+ if (key.pos.row == newpos.row && key.pos.col == newpos.col) {
+ return;
+ }
key.pos = newpos;
bool match;
// tricky: could minimize movement in either direction better
@@ -1185,7 +1188,7 @@ void marktree_move(MarkTree *b, MarkTreeIter *itr, int row, int col)
if (!match) {
new_i++;
}
- if (new_i == itr->i || key_cmp(key, x->key[new_i]) == 0) {
+ if (new_i == itr->i) {
x->key[itr->i].pos = newpos;
} else if (new_i < itr->i) {
memmove(&x->key[new_i + 1], &x->key[new_i], sizeof(MTKey) * (size_t)(itr->i - new_i));