From 29eb651a92ded3e3f008d6853f3df6693f296576 Mon Sep 17 00:00:00 2001 From: oni-link Date: Thu, 22 May 2014 11:20:45 +0200 Subject: vim-patch:7.4.281 #746 Problem: When a session file has more than one tabpage and 'showtabline' is one the positions may be slightly off. Solution: Set 'showtabline' to two while positioning windows. https://code.google.com/p/vim/source/detail?r=24c90f1fec859b54cf2b854b98c4c9e614c46061 --- src/nvim/ex_docmd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/nvim/ex_docmd.c') diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 9102ba63bb..e8930bd0f6 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -7974,6 +7974,17 @@ makeopens ( return FAIL; } + int restore_stal = FALSE; + // When there are two or more tabpages and 'showtabline' is 1 the tabline + // will be displayed when creating the next tab. That resizes the windows + // in the first tab, which may cause problems. Set 'showtabline' to 2 + // temporarily to avoid that. + if (p_stal == 1 && first_tabpage->tp_next != NULL) { + if (put_line(fd, "set stal=2") == FAIL) { + return FAIL; + } + restore_stal = TRUE; + } /* * May repeat putting Windows for each tab, when "tabpages" is in @@ -8113,6 +8124,9 @@ makeopens ( || put_eol(fd) == FAIL) return FAIL; } + if (restore_stal && put_line(fd, "set stal=1") == FAIL) { + return FAIL; + } /* * Wipe out an empty unnamed buffer we started in. -- cgit