diff options
author | Christian Clason <c.clason@uni-graz.at> | 2023-03-13 19:50:09 +0100 |
---|---|---|
committer | Christian Clason <c.clason@uni-graz.at> | 2023-03-13 20:17:31 +0100 |
commit | 95ab5a0da3a465351a781031698d6cc8a727584a (patch) | |
tree | d5930203908328f5b5c6669c03875cd799b11f48 /src/nvim/help.c | |
parent | f01f18cdf4ffc3ce035db5fde2f45493eebb7fd9 (diff) | |
download | rneovim-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.c | 8 |
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; } } |