commit 95ab5a0da3a465351a781031698d6cc8a727584a
parent f01f18cdf4ffc3ce035db5fde2f45493eebb7fd9
Author: Christian Clason <c.clason@uni-graz.at>
Date: Mon, 13 Mar 2023 19:50:09 +0100
fix(help): force tree reparse after local addition insertion
Problem: *local-additions* in `help.txt` are inserted via `ml_append`,
which messes up treesitter highlighting of this file as the buffer
becomes desynced from the tree.
Solution: Add hack on top of hack by explicitly calling `mark_adjust`
and `changed_lines_buf` after each insertion.
Diffstat:
1 file changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/nvim/help.c b/src/nvim/help.c
@@ -10,6 +10,7 @@
#include "nvim/ascii.h"
#include "nvim/buffer.h"
+#include "nvim/change.h"
#include "nvim/charset.h"
#include "nvim/cmdexpand.h"
#include "nvim/ex_cmds.h"
@@ -699,6 +700,8 @@ void fix_help_buffer(void)
continue;
}
+ int lnum_start = lnum;
+
// Go through all directories in 'runtimepath', skipping
// $VIMRUNTIME.
char *p = p_rtp;
@@ -829,6 +832,11 @@ void fix_help_buffer(void)
}
xfree(rt);
}
+ linenr_T appended = lnum - lnum_start;
+ if (appended) {
+ mark_adjust(lnum_start + 1, (linenr_T)MAXLNUM, appended, 0L, kExtmarkUndo);
+ changed_lines_buf(curbuf, lnum_start + 1, lnum_start + 1, appended);
+ }
break;
}
}