patch 9.0.1061: cannot display 'showcmd' somewhere else

Problem:    Cannot display 'showcmd' somewhere else.
Solution:   Add the 'showcmdloc' option. (Luuk van Baal, closes #11684)
diff --git a/src/testdir/dumps/Test_statusline_showcmd_1.dump b/src/testdir/dumps/Test_statusline_showcmd_1.dump
new file mode 100644
index 0000000..049e0f7
--- /dev/null
+++ b/src/testdir/dumps/Test_statusline_showcmd_1.dump
@@ -0,0 +1,6 @@
+|a+0&#e0e0e08| +0&#ffffff0@73
+|b+0&#e0e0e08| +0&#ffffff0@73
+|c+0&#e0e0e08> +0&#ffffff0@73
+|~+0#4040ff13&| @73
+|3+3#0000000&|x|2| @71
+|-+2&&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@56
diff --git a/src/testdir/dumps/Test_statusline_showcmd_2.dump b/src/testdir/dumps/Test_statusline_showcmd_2.dump
new file mode 100644
index 0000000..c443662
--- /dev/null
+++ b/src/testdir/dumps/Test_statusline_showcmd_2.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+|b| @73
+>c| @73
+|~+0#4040ff13&| @73
+|1+3#0000000&|2|3|4| @70
+| +0&&@74
diff --git a/src/testdir/dumps/Test_statusline_showcmd_3.dump b/src/testdir/dumps/Test_statusline_showcmd_3.dump
new file mode 100644
index 0000000..26ba377
--- /dev/null
+++ b/src/testdir/dumps/Test_statusline_showcmd_3.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+|b| @73
+>c| @73
+|~+0#4040ff13&| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @32|1|2|3|4| @6|3|,|1| @11|A|l@1
+|:+0&&| @73
diff --git a/src/testdir/dumps/Test_tabline_showcmd_1.dump b/src/testdir/dumps/Test_tabline_showcmd_1.dump
new file mode 100644
index 0000000..de8f62c
--- /dev/null
+++ b/src/testdir/dumps/Test_tabline_showcmd_1.dump
@@ -0,0 +1,6 @@
+| +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +1&&@51|3+8#0000001#e0e0e08|x|2| +1#0000000#ffffff0@6
+|a+0&#e0e0e08| +0&#ffffff0@73
+|b+0&#e0e0e08| +0&#ffffff0@73
+|c+0&#e0e0e08> +0&#ffffff0@73
+|~+0#4040ff13&| @73
+|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@38|3|,|2| @10|A|l@1| 
diff --git a/src/testdir/dumps/Test_tabline_showcmd_2.dump b/src/testdir/dumps/Test_tabline_showcmd_2.dump
new file mode 100644
index 0000000..b5a7283
--- /dev/null
+++ b/src/testdir/dumps/Test_tabline_showcmd_2.dump
@@ -0,0 +1,6 @@
+| +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +1&&@51|1+8#0000001#e0e0e08|2|3|4| +1#0000000#ffffff0@5
+|a+0&&| @73
+|b| @73
+>c| @73
+|~+0#4040ff13&| @73
+| +0#0000000&@56|3|,|1| @10|A|l@1| 
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index 7337217..a18aa66 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -132,6 +132,7 @@
       \ 'selection': [['old', 'inclusive'], ['', 'xxx']],
       \ 'selectmode': [['', 'mouse', 'key,cmd'], ['xxx']],
       \ 'sessionoptions': [['', 'blank', 'help,options,slash'], ['xxx']],
+      \ 'showcmdloc': [['last', 'statusline', 'tabline'], ['xxx']],
       \ 'signcolumn': [['', 'auto', 'no'], ['xxx', 'no,yes']],
       \ 'spellfile': [['', 'file.en.add', '/tmp/dir\ with\ space/en.utf-8.add'], ['xxx', '/tmp/file']],
       \ 'spelllang': [['', 'xxx', 'sr@latin'], ['not&lang', "that\\\rthere"]],
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 15f2083..a829597 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -558,4 +558,26 @@
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_statusline_showcmd()
+  CheckScreendump
+
+  let lines =<< trim END
+    set laststatus=2
+    set statusline=%S
+    set showcmdloc=statusline
+    call setline(1, ['a', 'b', 'c'])
+  END
+  call writefile(lines, 'XTest_statusline', 'D')
+
+  let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 6})
+  call feedkeys("\<C-V>Gl", "xt")
+  call VerifyScreenDump(buf, 'Test_statusline_showcmd_1', {})
+
+  call feedkeys("\<Esc>1234", "xt")
+  call VerifyScreenDump(buf, 'Test_statusline_showcmd_2', {})
+
+  call feedkeys("\<Esc>:set statusline=\<CR>:\<CR>1234", "xt")
+  call VerifyScreenDump(buf, 'Test_statusline_showcmd_3', {})
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim
index ab0268d..da73884 100644
--- a/src/testdir/test_tabline.vim
+++ b/src/testdir/test_tabline.vim
@@ -1,6 +1,9 @@
 " Test for tabline
 
 source shared.vim
+source view_util.vim
+source check.vim
+source screendump.vim
 
 func TablineWithCaughtError()
   let s:func_in_tabline_called = 1
@@ -158,5 +161,23 @@
   call RunVim([], [], "-e -s -S Xclickscript -c qa")
 endfunc
 
+func Test_tabline_showcmd()
+  CheckScreendump
+
+  let lines =<< trim END
+    set showtabline=2
+    set showcmdloc=tabline
+    call setline(1, ['a', 'b', 'c'])
+  END
+  call writefile(lines, 'XTest_tabline', 'D')
+
+  let buf = RunVimInTerminal('-S XTest_tabline', {'rows': 6})
+
+  call feedkeys("\<C-V>Gl", "xt")
+  call VerifyScreenDump(buf, 'Test_tabline_showcmd_1', {})
+
+  call feedkeys("\<Esc>1234", "xt")
+  call VerifyScreenDump(buf, 'Test_tabline_showcmd_2', {})
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab