On Thu, Apr 14, 2011 at 08:22:22PM -0400, Chris Sutcliffe wrote: > On 14 April 2011 20:11, Chris Sutcliffe wrote: > > On 14 April 2011 16:38, Chris Sutcliffe wrote: > >> I've noticed an issue with vim while running under mksh and pdksh. > >> Specifically, the stderr output by gcc (i.e. compilation warnings and > >> errors) is not captured in the QuickFix window. I see the stderr > >> output in the terminal window during the compilation process, however, > >> when vim returns to the editor window and I execute a :cl or :copen, I > >> only see stdout output. > > > > Following up with one of the mksh developers he mentioned that mksh > > sets a close-on-exec flag on filedescriptors, > > which is a traditional Korn Shell security feature. He's not sure if > > its related to the issue or not, but I figured I would pass it along. > > I just realized the issue, looking at :h shellredir > > The default is ">". For Unix, if the 'shell' option is "csh", "tcsh" > or "zsh" during initializations, the default becomes ">&". If the > 'shell' option is "sh", "ksh" or "bash" the default becomes > ">%s 2>&1". This means that stderr is also included. > For Win32, the Unix checks are done and additionally "cmd" is checked > for, which makes the default ">%s 2>&1". Also, the same names with > ".exe" appended are checked for. > > pdksh and mksh aren't captured by the ksh rule, unless I explicitly > set the SHELL variable to be ksh.
Right. So, either option.c has to learn about mksh/pdksh or people
using those shells can add something like
if &shell =~? '\%(m\|pd\)ksh'
set shellredir=>%s\ 2>&1
endif
to their vimrc. On the bright side, at least Vim behaves better not
knowing about mksh/pdksh than it does not knowing about fish. :) fish
users get caught by much more subtle (and annoying) issues until they
find out they have to "set shell=/bin/sh" (or some other shell Vim knows
how to handle).
--
James
GPG Key: 1024D/61326D40 2003-09-02 James Vega <[email protected]>
signature.asc
Description: Digital signature
