aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/help.c
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-03-13 19:50:09 +0100
committerChristian Clason <c.clason@uni-graz.at>2023-03-13 20:17:31 +0100
commit95ab5a0da3a465351a781031698d6cc8a727584a (patch)
treed5930203908328f5b5c6669c03875cd799b11f48 /src/nvim/help.c
parentf01f18cdf4ffc3ce035db5fde2f45493eebb7fd9 (diff)
downloadrneovim-95ab5a0da3a465351a781031698d6cc8a727584a.tar.gz
rneovim-95ab5a0da3a465351a781031698d6cc8a727584a.tar.bz2
rneovim-95ab5a0da3a465351a781031698d6cc8a727584a.zip
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 (limited to 'src/nvim/help.c')
-rw-r--r--src/nvim/help.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/help.c b/src/nvim/help.c
index 968f0bc2f4..728c890da4 100644
--- 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;
}
}