diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-10-18 10:34:55 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-18 10:34:55 +0800 |
commit | 366d0c7887f76f0adc40671292db46f115c9317e (patch) | |
tree | 0074f8aac664961c0bc8cb2fc8fe47c00efa7ad9 | |
parent | bbc74d51ad791edad1948178736589cb181236e8 (diff) | |
download | rneovim-366d0c7887f76f0adc40671292db46f115c9317e.tar.gz rneovim-366d0c7887f76f0adc40671292db46f115c9317e.tar.bz2 rneovim-366d0c7887f76f0adc40671292db46f115c9317e.zip |
fix(move): check the correct buffer (#25698)
-rw-r--r-- | src/nvim/move.c | 2 | ||||
-rw-r--r-- | test/functional/ui/inccommand_spec.lua | 30 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index 8be05aaa24..da75c79e0b 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -247,7 +247,7 @@ void update_topline(win_T *wp) int old_topfill = wp->w_topfill; // If the buffer is empty, always set topline to 1. - if (buf_is_empty(curbuf)) { // special case - file is empty + if (buf_is_empty(wp->w_buffer)) { // special case - file is empty if (wp->w_topline != 1) { redraw_later(wp, UPD_NOT_VALID); } diff --git a/test/functional/ui/inccommand_spec.lua b/test/functional/ui/inccommand_spec.lua index cb00c75e74..c9e004289d 100644 --- a/test/functional/ui/inccommand_spec.lua +++ b/test/functional/ui/inccommand_spec.lua @@ -3095,6 +3095,36 @@ it(':substitute with inccommand works properly if undo is not synced #20029', fu baz]]) end) +it(':substitute with inccommand does not unexpectedly change viewport #25697', function() + clear() + local screen = Screen.new(45, 5) + common_setup(screen, 'nosplit', long_multiline_text) + command('vnew | tabnew | tabclose') + screen:expect([[ + ^ │£ m n | + {15:~ }│t œ ¥ | + {15:~ }│ | + {11:[No Name] }{10:[No Name] [+] }| + | + ]]) + feed(':s/') + screen:expect([[ + │£ m n | + {15:~ }│t œ ¥ | + {15:~ }│ | + {11:[No Name] }{10:[No Name] [+] }| + :s/^ | + ]]) + feed('<Esc>') + screen:expect([[ + ^ │£ m n | + {15:~ }│t œ ¥ | + {15:~ }│ | + {11:[No Name] }{10:[No Name] [+] }| + | + ]]) +end) + it('long :%s/ with inccommand does not collapse cmdline', function() clear() local screen = Screen.new(10,5) |