diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/extmark.c | 6 | ||||
-rw-r--r-- | src/nvim/decoration_provider.c | 10 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/nvim/api/extmark.c b/src/nvim/api/extmark.c index 0cf16294b6..e66e25e527 100644 --- a/src/nvim/api/extmark.c +++ b/src/nvim/api/extmark.c @@ -1009,10 +1009,8 @@ void nvim_buf_clear_namespace(Buffer buffer, Integer ns_id, Integer line_start, /// - on_buf: called for each buffer being redrawn (before /// window callbacks) /// ["buf", bufnr, tick] -/// - on_win: called when starting to redraw a -/// specific window. botline_guess is an approximation -/// that does not exceed the last line number. -/// ["win", winid, bufnr, topline, botline_guess] +/// - on_win: called when starting to redraw a specific window. +/// ["win", winid, bufnr, topline, botline] /// - on_line: called for each buffer line being redrawn. /// (The interaction with fold lines is subject to change) /// ["win", winid, bufnr, row] diff --git a/src/nvim/decoration_provider.c b/src/nvim/decoration_provider.c index 6a7ecf102d..9bb499fe4b 100644 --- a/src/nvim/decoration_provider.c +++ b/src/nvim/decoration_provider.c @@ -15,6 +15,7 @@ #include "nvim/log.h" #include "nvim/lua/executor.h" #include "nvim/message.h" +#include "nvim/move.h" #include "nvim/pos_defs.h" #ifdef INCLUDE_GENERATED_DECLARATIONS @@ -121,10 +122,9 @@ void decor_providers_invoke_win(win_T *wp) // then we would need decor_state.running_decor_provider just like "on_line" below assert(kv_size(decor_state.active) == 0); - linenr_T knownmax = MIN(wp->w_buffer->b_ml.ml_line_count, - ((wp->w_valid & VALID_BOTLINE) - ? wp->w_botline - : MAX(wp->w_topline + wp->w_height_inner, wp->w_botline))); + if (kv_size(decor_providers) > 0) { + validate_botline(wp); + } for (size_t i = 0; i < kv_size(decor_providers); i++) { DecorProvider *p = &kv_A(decor_providers, i); @@ -138,7 +138,7 @@ void decor_providers_invoke_win(win_T *wp) ADD_C(args, BUFFER_OBJ(wp->w_buffer->handle)); // TODO(bfredl): we are not using this, but should be first drawn line? ADD_C(args, INTEGER_OBJ(wp->w_topline - 1)); - ADD_C(args, INTEGER_OBJ(knownmax - 1)); + ADD_C(args, INTEGER_OBJ(wp->w_botline - 1 - 1)); if (!decor_provider_invoke((int)i, "win", p->redraw_win, args, true)) { kv_A(decor_providers, i).state = kDecorProviderWinDisabled; } |