aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/undo.c4
-rw-r--r--test/functional/ui/sign_spec.lua17
2 files changed, 20 insertions, 1 deletions
diff --git a/src/nvim/undo.c b/src/nvim/undo.c
index d343fb5fa0..d517f07b32 100644
--- a/src/nvim/undo.c
+++ b/src/nvim/undo.c
@@ -2389,7 +2389,9 @@ static void u_undoredo(bool undo, bool do_buf_event)
// When text has been changed, possibly the start of the next line
// may have SpellCap that should be removed or it needs to be
// displayed. Schedule the next line for redrawing just in case.
- if (spell_check_window(curwin) && bot <= curbuf->b_ml.ml_line_count) {
+ // Also just in case the line had a sign which needs to be removed.
+ if ((spell_check_window(curwin) || curbuf->b_signs_with_text)
+ && bot <= curbuf->b_ml.ml_line_count) {
redrawWinline(curwin, bot);
}
diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua
index 29ec08e15c..af03bce4a0 100644
--- a/test/functional/ui/sign_spec.lua
+++ b/test/functional/ui/sign_spec.lua
@@ -548,4 +548,21 @@ describe('Signs', function()
delete | redraw | undo
]])
end)
+
+ it('sign not shown on line it was previously on after undo', function()
+ exec([[
+ call setline(1, range(1, 4))
+ call nvim_buf_set_extmark(0, nvim_create_namespace(''), 1, 0, {'sign_text':'S1'})
+ ]])
+ exec('norm 2Gdd')
+ exec('silent undo')
+ screen:expect([[
+ {2: }1 |
+ S1^2 |
+ {2: }3 |
+ {2: }4 |
+ {0:~ }|*9
+ |
+ ]])
+ end)
end)