diff options
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r-- | src/nvim/buffer.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index de2cb64d59..d5681eabec 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -4360,6 +4360,8 @@ void buf_addsign( return; } +// For an existing, placed sign "markId" change the type to "typenr". +// Returns the line number of the sign, or zero if the sign is not found. linenr_T buf_change_sign_type( buf_T *buf, /* buffer to store sign in */ int markId, /* sign ID */ @@ -4480,6 +4482,15 @@ void buf_delete_signs(buf_T *buf) { signlist_T *next; + // When deleting the last sign need to redraw the windows to remove the + // sign column. + if (buf->b_signlist != NULL) { + redraw_buf_later(buf, NOT_VALID); + // TODO(oni-link): Is this call necessary if curwin is not a viewport + // for buf? + changed_cline_bef_curs(); + } + while (buf->b_signlist != NULL) { next = buf->b_signlist->next; free(buf->b_signlist); @@ -4495,11 +4506,9 @@ void buf_delete_all_signs() buf_T *buf; /* buffer we are checking for signs */ for (buf = firstbuf; buf != NULL; buf = buf->b_next) { - if (buf->b_signlist != NULL) { - /* Need to redraw the windows to remove the sign column. */ - redraw_buf_later(buf, NOT_VALID); - buf_delete_signs(buf); - } + if (buf->b_signlist != NULL) { + buf_delete_signs(buf); + } } } |