Closed GoogleCodeExporter closed 9 years ago
> 4. Download the latest VIM source code (currently 7.3.884) and compile using
MSVC 2012.
> 5. Replace the VIM 7.3.46 .exe file with the .exe versioned 7.3.884
In general this will not work as well as you hope. There are a lot of "runtime"
files, including syntax scripts, standard plugins, documentation, and more
which are also part of the 7.3.884 source code. You will have none of these if
you just copy over the executable.
> 6. Verify that the TFS functions do not work. They show in the command bar
like they are executing but they do not execute.
Can you give a specific command (exact key sequence if a mapping), and the
specific output you expected, and what you got instead?
One possible source of the problem MIGHT be a few changes that were done
somewhere in those 884 patches to make shell quoting work by default in most
cases on Windows. Check that your 'shellxquote' and 'shellcmdflag' and 'shell'
and 'shellescape' options are set appropriately (in most cases they should
remain at the default).
Without knowing the specific command you tried, and what actually gets
executed, there's not much way to debug this.
Have you tried contacting the plugin maintainer? They can probably debug the
problem easier than most others.
Original comment by fritzoph...@gmail.com
on 9 Apr 2013 at 10:07
Instead of mixing some files of the 7.3.046 distribution with a newly compiled
executable, you should use a consistent set, for instance the Windows installer
available as the newest entry at
http://sourceforge.net/projects/cream/files/Vim/ which Vim-list old-timers have
dubbed "Vim without Cream". It is currently at patchlevel 7.3.829 but it
includes a consistent set of runtime files. Also, it is a Win32 executable but
it will run on a Win64 machine too, and its shorter word length should not give
you problems except with extremely voluminous files (2 GiB or more, let's say)
or computations involving extremely big integers (more than 2147483647 in
absolue value; floating-point numbers, OTOH, are the same on both
architectures).
Before installing it, you may want to remove, with all its contents, the
"vim73" directory containing your existing installation (but not the "vim"
directory above it).
And like Ben Fritz said, try to contact the script maintainer.
Best regards,
Tony.
--
ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY
KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T
HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR
LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER),
BROTHER MAYNARD
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
Original comment by antoine....@gmail.com
on 10 Apr 2013 at 12:18
I downloaded the latest Win64 build from Haroogan
(https://bitbucket.org/Haroogan/64-bit-vim-builds-for-windows-64-bit/downloads)
which is at patch level 7.3.761. I tried the TFS plugin and the plugin still
does not work.
I checked 'shellxquote', 'shellcmdflag', 'shell', and 'shellescape' and those
are not mentioned in my _vimrc file.
I tried contacting the plugin author but I have received no response. The
command puts the following text at the bottom of my VIM window (see screenshot)
but the file is not actually checked out from TFS.
I have verified that the file path is correct and if I execute this command
from a Windows command line, the file is correctly checked out from TFS:
C:\Projects\TFS\NCN -
Other\MRASystem\Main\Go\src\mrawebtoolboxext>"E:\Programs\VisualStudio2012\Commo
n7\IDE\TF.exe" checkout "C:\projects\tfs\ncn -
other\mrasystem\main\go\src\mra\logger\logger.go"
Original comment by lukemaul...@gmail.com
on 25 Apr 2013 at 3:00
Attachments:
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 "^""
"^""
Original comment by fritzoph...@gmail.com
on 25 Apr 2013 at 3:57
Removing the ^ worked great, thank you. Was this a change to VIM's behavior?
Original comment by lukemaul...@gmail.com
on 27 Apr 2013 at 4:41
> 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.
Original comment by fritzoph...@gmail.com
on 29 Apr 2013 at 3:15
Original comment by chrisbr...@googlemail.com
on 30 Sep 2014 at 8:20
Original issue reported on code.google.com by
lukemaul...@gmail.com
on 9 Apr 2013 at 9:03