aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/extmark.c6
-rw-r--r--src/nvim/decoration_provider.c10
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;
}