From b326bf5f419b345d50407be4fb43b937510112a4 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 7 Dec 2021 23:00:03 +0800 Subject: [PATCH] fix(screen): do not draw filler lines post eof if already at last row --- src/nvim/screen.c | 2 +- test/functional/ui/decorations_spec.lua | 63 +++++++++++++++++++++++++ test/functional/ui/diff_spec.lua | 26 ++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 2ce2be0bfd..a3ec6e26a2 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -1692,7 +1692,7 @@ static void win_update(win_T *wp, Providers *providers) if (eof) { // we hit the end of the file wp->w_botline = buf->b_ml.ml_line_count + 1; j = win_get_fill(wp, wp->w_botline); - if (j > 0 && !wp->w_botfill) { + if (j > 0 && !wp->w_botfill && row < wp->w_grid.Rows) { // Display filler text below last line. win_line() will check // for ml_line_count+1 and only draw filler lines foldinfo_T info = FOLDINFO_INIT; diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index dce6384b9b..1575cab591 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -1031,6 +1031,69 @@ if (h->n_buckets < new_n_buckets) { // expand | ]]} + screen:try_resize(50, 11) + feed('gg') + screen:expect{grid=[[ + ^if (h->n_buckets < new_n_buckets) { // expand | + khkey_t *new_keys = (khkey_t *)krealloc((void *)| + h->keys, new_n_buckets * sizeof(khkey_t)); | + h->keys = new_keys; | + if (kh_is_map && val_size) { | + char *new_vals = krealloc( h->vals_buf, new_n_| + buckets * val_size); | + h->vals_buf = new_vals; | + } | + } | + | + ]]} + + feed('G') + screen:expect{grid=[[ + khkey_t *new_keys = (khkey_t *)krealloc((void *)| + h->keys, new_n_buckets * sizeof(khkey_t)); | + h->keys = new_keys; | + if (kh_is_map && val_size) { | + char *new_vals = krealloc( h->vals_buf, new_n_| + buckets * val_size); | + h->vals_buf = new_vals; | + } | + ^} | + Grugg | + | + ]]} + + feed('gg') + screen:expect{grid=[[ + ^if (h->n_buckets < new_n_buckets) { // expand | + khkey_t *new_keys = (khkey_t *)krealloc((void *)| + h->keys, new_n_buckets * sizeof(khkey_t)); | + h->keys = new_keys; | + if (kh_is_map && val_size) { | + char *new_vals = krealloc( h->vals_buf, new_n_| + buckets * val_size); | + h->vals_buf = new_vals; | + } | + } | + | + ]]} + + screen:try_resize(50, 12) + feed('G') + screen:expect{grid=[[ + if (h->n_buckets < new_n_buckets) { // expand | + khkey_t *new_keys = (khkey_t *)krealloc((void *)| + h->keys, new_n_buckets * sizeof(khkey_t)); | + h->keys = new_keys; | + if (kh_is_map && val_size) { | + char *new_vals = krealloc( h->vals_buf, new_n_| + buckets * val_size); | + h->vals_buf = new_vals; | + } | + ^} | + Grugg | + | + ]]} + meths.buf_del_extmark(0, ns, id) screen:expect{grid=[[ if (h->n_buckets < new_n_buckets) { // expand | diff --git a/test/functional/ui/diff_spec.lua b/test/functional/ui/diff_spec.lua index 13949b0756..bd2692d19a 100644 --- a/test/functional/ui/diff_spec.lua +++ b/test/functional/ui/diff_spec.lua @@ -186,6 +186,19 @@ describe('Diff mode screen', function() {7: