diff options
author | bfredl <bjorn.linse@gmail.com> | 2023-04-02 13:37:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-02 13:37:24 +0200 |
commit | 3a4db8154ff043f044ab18d5fced42bffb1002fd (patch) | |
tree | 33dafdef6c525994c2926b48b85fb750f1815f41 | |
parent | da6a42cdafb812b0a188b8f06cffa9835c19d3fb (diff) | |
parent | e3a3d300636872f786f0c8a338ed1a3749d0a1f6 (diff) | |
download | rneovim-3a4db8154ff043f044ab18d5fced42bffb1002fd.tar.gz rneovim-3a4db8154ff043f044ab18d5fced42bffb1002fd.tar.bz2 rneovim-3a4db8154ff043f044ab18d5fced42bffb1002fd.zip |
Merge pull request #22844 from luukvbaal/stlrecording
fix(ui): recording change doesn't trigger statusline redraw
-rw-r--r-- | src/nvim/buffer_defs.h | 1 | ||||
-rw-r--r-- | src/nvim/drawscreen.c | 2 | ||||
-rw-r--r-- | test/functional/ui/statusline_spec.lua | 14 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index 4bdf5aac64..c808909942 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -1288,6 +1288,7 @@ struct window_S { int w_stl_topfill; // topfill when last redrawn char w_stl_empty; // true if elements show 0-1 (empty line) int w_stl_state; // State when last redrawn + int w_stl_recording; // reg_recording when last redrawn int w_alt_fnum; // alternate file (for # and CTRL-^) diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c index 13e9d1ea49..f90a41c406 100644 --- a/src/nvim/drawscreen.c +++ b/src/nvim/drawscreen.c @@ -827,6 +827,7 @@ void show_cursor_info_later(bool force) || curwin->w_buffer->b_ml.ml_line_count != curwin->w_stl_line_count || curwin->w_topfill != curwin->w_stl_topfill || empty_line != curwin->w_stl_empty + || reg_recording != curwin->w_stl_recording || state != curwin->w_stl_state) { if (curwin->w_status_height || global_stl_height()) { curwin->w_redr_status = true; @@ -851,6 +852,7 @@ void show_cursor_info_later(bool force) curwin->w_stl_line_count = curwin->w_buffer->b_ml.ml_line_count; curwin->w_stl_topfill = curwin->w_topfill; curwin->w_stl_state = state; + curwin->w_stl_recording = reg_recording; } /// @return true when postponing displaying the mode message: when not redrawing diff --git a/test/functional/ui/statusline_spec.lua b/test/functional/ui/statusline_spec.lua index c59ade0e31..ffd45a59a3 100644 --- a/test/functional/ui/statusline_spec.lua +++ b/test/functional/ui/statusline_spec.lua @@ -622,3 +622,17 @@ it('K_EVENT does not trigger a statusline redraw unnecessarily', function() sleep(50) eq(1, eval('g:counter < 50'), 'g:counter=' .. eval('g:counter')) end) + +it('statusline is redrawn on recording state change #22683', function() + clear() + local screen = Screen.new(40, 4) + screen:attach() + command('set ls=2 stl=%{repeat(reg_recording(),5)}') + feed('qQ') + screen:expect([[ + ^ | + ~ | + QQQQQ | + recording @Q | + ]]) +end) |