The bug occurs when opening a TeX file which is not the .latexmain file in a directory whose path contains an asterisk or any other glob character which happens to expand to multiple paths.
The code in question is from packages.vim:
if expand('%:p') != fname
call Tex_Debug(':Tex_pack_updateall: sview '.Tex_EscapeSpaces(fname), 'pack')
exe 'sview '.Tex_EscapeSpaces(fname)
call Tex_Debug(':Tex_pack_updateall: split', 'pack')
The call to sview fails because Tex_EscapeSpaces doesn't escape the asterisk in the path. The error in verbose mode is:
Error detected while processing function Tex_pack_updateall:
E77: Too many file names
Because splitting the buffer fails, the following call to q closes the original buffer and therefore the instance of vim which was just opened. The user only sees vim close immediately with no error message.
A solution to this problem is to use fnameescape instead of Tex_EscapeSpaces because it properly escapes all characters not only spaces.
I think this problem could also occur at other places where Tex_EscapeSpaces is used in conjunction with asterisks in the path name. Maybe Tex_EscapeSpaces should use fnameescape internally. The problem might be that * expansion might be desired in certain places. I don't know if that is the case anywhere in latexsuite.
I attached a patch that fixes the problem for me.
Log in to post a comment.