Ok, please give me some time to fix.

On Friday, February 24, 2012 1:01:25 PM UTC+9, Ben Fritz wrote:
> On Feb 23, 8:01 pm, mattn <mattn...@gmail.com> wrote:
> 
> > As you know, ':!start' is imitation of 'start' command in cmd.exe. So I'm
> > thinking vim's behavor should be same as cmd's one.
> > If typing below in cmd.exe, it works correctly.
> >
> 
> I agree. Now, note, with 7.3.456:
> 
> C:\>start cmd /k (echo A^^^&B ^& pause)
> A new window pops up, "A&B" is echoed at the top, and it says "Press
> any key to continue..."
> 
> :set shellxquote=(:
> :!start cmd /k (echo A^^^&B ^& pause)
> A new window pops up, and "A^&B & pause" is echoed at the top.
> :!start cmd /k (echo A^&B & pause)
> A new window pops up, "A&B" is echoed at the top, and it says "Press
> any key to continue..."
> 
> :set shellxquote="
> :!start cmd /k (echo A^^^&B ^& pause)
> A new window pops up, "A&B" is echoed at the top, and it says "Press
> any key to continue..."
> 
> What should a user expect? That :!start acts like the "start" command
> in a cmd.exe shell? Currently, it does not with shellxquote=(. Or
> should the user expect that :!start invokes the command with the given
> literal arguments as cmd.exe would have passed in after doing its own
> processing of escaped characters, etc.? I think conceptually the
> former is easier to grasp (and to experiment with outside of Vim to
> get right). But, quoting and escaping in cmd.exe is so convoluted (who
> knew?) that I suppose either way is acceptable, as long as we provide
> an explanation and examples in the :help.
> 
> I don't like that shellxquote=" and shellxquote=( have such different
> behaviors in this case.
> 
> Here's an interesting test:
> :!if 1==0 (echo A^&B & pause) else (echo B^&A & echo C^|D & pause)
> works as expected
> :echo system('if 1==0 (echo A^&B) else (echo B^&A & echo C^|D)')
> works as expected
> :!start cmd /k (if 1==0 (echo A^&B) else (echo B^&A & echo C^|D))
> Works as *intended* with shellxquote=( but not as one might expect if
> one tries the same command from a cmd.exe shell
> Does NOT work as intended with shellxquote=", but this is to be
> expected if the command is compared to a cmd.exe shell.
> 
> Escaping the !start command with ^ characters makes it work as
> intended and expected for shellxquote=" but breaks shellxquote=(.
> 
> Arguably it is easier for the user if we allow them to use mostly the
> same string for :!start cmd /c as they do for system() and :!cmd, but
> pedantically it's wrong.
> 
> Should we just update the help and call it good or try to make :!start
> actually behave like "start" from a cmd.exe shell?

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to