aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-09-08 15:44:14 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-09-08 23:16:54 -0400
commit8dde9b58e56345c8c04620d513b55d3b518ea98e (patch)
tree3eee5ce39d8465481079844f1d0a97f64e375e3f
parent74c362cec029ba39a8eb0bbd629148e4b6b54968 (diff)
downloadrneovim-8dde9b58e56345c8c04620d513b55d3b518ea98e.tar.gz
rneovim-8dde9b58e56345c8c04620d513b55d3b518ea98e.tar.bz2
rneovim-8dde9b58e56345c8c04620d513b55d3b518ea98e.zip
vim-patch:8.1.1197: when starting with multiple tabs file messages is confusing
Problem: When starting with multiple tabs file messages is confusing. Solution: Set 'shortmess' when loading the other tabs. (Christian Brabandt) https://github.com/vim/vim/commit/c75e81262347e47a69faabd72caf89fec3f06e8f
-rw-r--r--src/nvim/main.c16
-rw-r--r--src/nvim/testdir/test_startup.vim13
-rw-r--r--test/functional/core/startup_spec.lua17
3 files changed, 46 insertions, 0 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index 4335dab1f9..bca8991b0f 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -1535,6 +1535,7 @@ static void edit_buffers(mparm_T *parmp, char_u *cwd)
int i;
bool advance = true;
win_T *win;
+ char *p_shm_save = NULL;
/*
* Don't execute Win/Buf Enter/Leave autocommands here
@@ -1566,6 +1567,16 @@ static void edit_buffers(mparm_T *parmp, char_u *cwd)
if (curtab->tp_next == NULL) /* just checking */
break;
goto_tabpage(0);
+ // Temporarily reset 'shm' option to not print fileinfo when
+ // loading the other buffers. This would overwrite the already
+ // existing fileinfo for the first tab.
+ if (i == 1) {
+ char buf[100];
+
+ p_shm_save = xstrdup((char *)p_shm);
+ snprintf(buf, sizeof(buf), "F%s", p_shm);
+ set_option_value("shm", 0L, buf, 0);
+ }
} else {
if (curwin->w_next == NULL) /* just checking */
break;
@@ -1606,6 +1617,11 @@ static void edit_buffers(mparm_T *parmp, char_u *cwd)
}
}
+ if (p_shm_save != NULL) {
+ set_option_value("shm", 0L, p_shm_save, 0);
+ xfree(p_shm_save);
+ }
+
if (parmp->window_layout == WIN_TABS)
goto_tabpage(1);
--autocmd_no_enter;
diff --git a/src/nvim/testdir/test_startup.vim b/src/nvim/testdir/test_startup.vim
index b5647b610d..1e70f28a00 100644
--- a/src/nvim/testdir/test_startup.vim
+++ b/src/nvim/testdir/test_startup.vim
@@ -1,6 +1,7 @@
" Tests for startup.
source shared.vim
+source screendump.vim
" Check that loading startup.vim works.
func Test_startup_script()
@@ -559,3 +560,15 @@ func Test_zzz_startinsert()
endif
call delete('Xtestout')
endfunc
+
+func Test_start_with_tabs()
+ if !CanRunVimInTerminal()
+ return
+ endif
+
+ let buf = RunVimInTerminal('-p a b c', {})
+ call VerifyScreenDump(buf, 'Test_start_with_tabs', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+endfunc
diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua
index 3b32c42ec0..041d9a278d 100644
--- a/test/functional/core/startup_spec.lua
+++ b/test/functional/core/startup_spec.lua
@@ -251,6 +251,23 @@ describe('startup', function()
|
]])
end)
+
+ it('sets \'shortmess\' when loading other tabs', function()
+ clear({args={'-p', 'a', 'b', 'c'}})
+ local screen = Screen.new(25, 4)
+ screen:attach()
+ screen:expect({grid=[[
+ {1: a }{2: b c }{3: }{2:X}|
+ ^ |
+ {4:~ }|
+ |
+ ]], attr_ids={
+ [1] = {bold = true},
+ [2] = {background = Screen.colors.LightGrey, underline = true},
+ [3] = {reverse = true},
+ [4] = {bold = true, foreground = Screen.colors.Blue1},
+ }})
+ end)
end)
describe('sysinit', function()