Loading ...
Sorry, an error occurred while loading the content.

Re: Issue 127 in vim: TFS Plugin Broken by latest VIM

Expand Messages
  • vim@...
    Comment #4 on issue 127 by fritzoph...@gmail.com: TFS Plugin Broken by latest VIM http://code.google.com/p/vim/issues/detail?id=127 It looks like the plugin is
    Message 1 of 8 , Apr 25, 2013
    • 0 Attachment
      Comment #4 on issue 127 by fritzoph...@...: TFS Plugin Broken by
      latest VIM
      http://code.google.com/p/vim/issues/detail?id=127

      It looks like the plugin is manually escaping quote characters in the
      command with ^, which with default settings Vim will now do automatically
      as-needed.

      It looks like the format of commands that run are:

      ! start /min cmd /c path/to/tool.exe ^"tool arguments^"

      or, depending on the command or specific settings, I'm not sure which:

      r!cmd /c "path/to/tool.exe ^"tool arguments^""

      "Does not work" means very little. What specific output do you get when you
      try to run a command that fails?

      I don't have TFS installed, and the plugin invokes a big chain of functions
      to execute any command, so I tried the second command format with the 'dir'
      command, as follows:

      new
      r!cmd /c "dir /b ^"C:\Program Files^""

      Doing this gives me:
      E485: Can't read file C:/Users/btfritz/AppData/Local/Temp/VIoF289.tmp

      If I remove the ^ characters (because Vim's default settings are now set up
      for these not to be needed anymore), I get a directory listing as I expect:

      :new
      r!cmd /c "dir /b "C:\Program Files""

      For now you can try removing the ^ escaping from the commands in the
      plugin. You should contact the plugin maintainer to let him know his plugin
      needs adjustment for Vim's new default shellxquote and shellxescape
      settings.

      Note that ^" isn't actually a valid escape to include a quote within a
      quote. The quotes also prevent special meanings of characters, so the
      plugin was arguably wrong in the first place:

      C:\>echo ^^
      ^
      C:\>echo ^"
      "
      C:\>echo "^""
      "^""

      --
      You received this message because this project is configured to send all
      issue notifications to this address.
      You may adjust your notification preferences at:
      https://code.google.com/hosting/settings

      --
      --
      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

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • vim@...
      Comment #5 on issue 127 by lukemaul...@gmail.com: TFS Plugin Broken by latest VIM http://code.google.com/p/vim/issues/detail?id=127 Removing the ^ worked
      Message 2 of 8 , Apr 27, 2013
      • 0 Attachment
        Comment #5 on issue 127 by lukemaul...@...: TFS Plugin Broken by
        latest VIM
        http://code.google.com/p/vim/issues/detail?id=127

        Removing the ^ worked great, thank you. Was this a change to VIM's
        behavior?

        --
        You received this message because this project is configured to send all
        issue notifications to this address.
        You may adjust your notification preferences at:
        https://code.google.com/hosting/settings

        --
        --
        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

        ---
        You received this message because you are subscribed to the Google Groups "vim_dev" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • vim@...
        Comment #6 on issue 127 by fritzoph...@gmail.com: TFS Plugin Broken by latest VIM http://code.google.com/p/vim/issues/detail?id=127 ... ...sort of. It s a
        Message 3 of 8 , Apr 29, 2013
        • 0 Attachment
          Comment #6 on issue 127 by fritzoph...@...: TFS Plugin Broken by
          latest VIM
          http://code.google.com/p/vim/issues/detail?id=127

          > Removing the ^ worked great, thank you. Was this a change to VIM's
          > behavior?

          ...sort of.

          It's a change in the DEFAULT behavior.

          Previously something like this:

          "C:\Program Files\MyApp\myapp.exe" "some arguments"

          Would get executed directly in cmd.exe with no escaping or anything, which
          the wonderful world of quoting in Windows cmd.exe would interpret as:

          C:\Program Files\MyApp\myapp.exe" "some arguments

          Which would obviously fail because "C:\Program" is not an executable
          program (and probably doesn't even exist as a directory).

          The plugin you are using dates from when this was still the default
          behavior and is probably the only workaround that worked for the author at
          the time. However, as I pointed out, I have no idea why it worked, because
          it was wrong anyway. You can't escape quotes within quotes in Windows.

          Anyway, Vim changed over a series of changes, each one less broken than the
          last, to actually execute something like this in the cmd.exe shell for the
          example I give above:

          (^"C:\Program Files\MyApp\myapp.exe^" ^"some arguments^")

          This works in almost every use case, although another thread recently found
          something strange going on with parentheses between quotes or something
          like that.

          Support was also added to execute something like this instead, but it's not
          the default, and I'm not actually sure what it fixes:

          "(^"C:\Program Files\MyApp\myapp.exe^" ^"some arguments^")"

          Remember how I said that escaping quotes within quotes won't work? You
          might wonder why the above works. Well...cmd.exe will always strip off the
          first and last quote in a line that begins and ends with a quote. So it's
          actually like those aren't even there. Again though, I don't remember the
          details. I think we ended up with defaults that work *almost* all the time
          but still fail in specific less-common scenarios.

          It's probably easier to do as some plugin authors do, and just build a .bat
          script in a temp file and execute that, so you don't need to worry about
          quoting.

          --
          You received this message because this project is configured to send all
          issue notifications to this address.
          You may adjust your notification preferences at:
          https://code.google.com/hosting/settings

          --
          --
          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

          ---
          You received this message because you are subscribed to the Google Groups "vim_dev" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        • vim@...
          Updates: Status: Invalid Comment #7 on issue 127 by chrisbr...@googlemail.com: TFS Plugin Broken by latest VIM
          Message 4 of 8 , Sep 30, 2014
          • 0 Attachment
            Updates:
            Status: Invalid

            Comment #7 on issue 127 by chrisbr...@...: TFS Plugin Broken by
            latest VIM
            https://code.google.com/p/vim/issues/detail?id=127

            (No comment was entered for this change.)

            --
            You received this message because this project is configured to send all
            issue notifications to this address.
            You may adjust your notification preferences at:
            https://code.google.com/hosting/settings

            --
            --
            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

            ---
            You received this message because you are subscribed to the Google Groups "vim_dev" group.
            To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
            For more options, visit https://groups.google.com/d/optout.
          Your message has been successfully submitted and would be delivered to recipients shortly.