aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraichoo <raichoo@googlemail.com>2018-05-10 14:55:07 +0200
committerJustin M. Keyes <justinkz@gmail.com>2018-05-10 14:55:07 +0200
commit3a6b80f2f44dcb5cd050bbbaacce4fc8a638aede (patch)
treef9f8ea4ccd4da90684d5f7e48acdd7cb7d77c6f0
parentf1a307555395d43fedc5d672d2bca8d92b00532e (diff)
downloadrneovim-3a6b80f2f44dcb5cd050bbbaacce4fc8a638aede.tar.gz
rneovim-3a6b80f2f44dcb5cd050bbbaacce4fc8a638aede.tar.bz2
rneovim-3a6b80f2f44dcb5cd050bbbaacce4fc8a638aede.zip
UI: redraw statusline when entering cmdline (#8347)
-rw-r--r--src/nvim/ex_getln.c7
-rw-r--r--test/functional/ui/cmdline_spec.lua21
2 files changed, 28 insertions, 0 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index e1198d6f1c..96388a2a9d 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -347,6 +347,13 @@ static uint8_t *command_line_enter(int firstc, long count, int indent)
redrawcmd();
}
+ // redraw the statusline for statuslines that display the current mode
+ // using the mode() function.
+ if (KeyTyped) {
+ curwin->w_redr_status = true;
+ redraw_statuslines();
+ }
+
did_emsg = false;
got_int = false;
s->state.check = command_line_check;
diff --git a/test/functional/ui/cmdline_spec.lua b/test/functional/ui/cmdline_spec.lua
index f8680678ef..41c290a462 100644
--- a/test/functional/ui/cmdline_spec.lua
+++ b/test/functional/ui/cmdline_spec.lua
@@ -157,6 +157,27 @@ describe('external cmdline', function()
end)
end)
+ it("redraws statusline on entering", function()
+ command('set laststatus=2')
+ command('set statusline=%{mode()}')
+ feed(':')
+ screen:expect([[
+ |
+ {1:~ }|
+ {1:~ }|
+ {3:c^ }|
+ |
+ ]], nil, nil, function()
+ eq({{
+ content = { { {}, "" } },
+ firstc = ":",
+ indent = 0,
+ pos = 0,
+ prompt = ""
+ }}, cmdline)
+ end)
+ end)
+
it("works with input()", function()
feed(':call input("input", "default")<cr>')
screen:expect([[