139500Re: Vimdiff, version 7.4 on Windows 7
- Oct 11, 2013On Friday, October 11, 2013 12:59:47 AM UTC-5, star...@... wrote:
> After installing vim 7.4 on Windows XP, I got the exact same errors as the OP when trying to do diffsplit:No, there really isn't.
> E810: Cannot read or write temp files
> E97: Cannot create diffs
> FIX (that worked for me):
> In MyDiff() of _vimrc, go to line 13 and change the two single quotes to double quotes. This allows the pattern in the IF-test to match.
> So change:
> if &sh =~ '\<cmd' (fails)
> if &sh =~ "\<cmd" (works)
> Or keep single quotes but escape the backslash:
> if &sh =~ '\\<cmd' (also works)
> Oddly, the original line is technically correct. It seems like there is a bug in vim 7.4 that is swapping the meaning of single and double quotes here.
> 1 function MyDiff()This line is incorrect in Vim 7.4 with default settings. If this line actually executes you'll probably have problems with your diff. So probably your "fix" works by forcing this line NOT to execute because your shell does NOT match <cmd literally.
> 2 let opt = '-a --binary '
> 3 if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
> 4 if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
> 5 let arg1 = v:fname_in
> 6 if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
> 7 let arg2 = v:fname_new
> 8 if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
> 9 let arg3 = v:fname_out
> 10 if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
> 11 let eq = ''
> 12 if $VIMRUNTIME =~ ' '
> 13>>> if &sh =~ '\<cmd' <<<--- CHANGE TO DOUBLE QUOTES
> 14 let cmd = '""' . $VIMRUNTIME . '\diff"'
> 15 let eq = '"'Is that in the _vimrc installed by default? Or your own personal _vimrc?
> 16 else
> 17 let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
> 18 endif
> 19 else
> 20 let cmd = $VIMRUNTIME . '\diff'
> 21 endif
> 22 silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
> 23 endfunction
> (Credit to fvelasqu...@..., http://code.google.com/p/vim/issues/detail?id=28#c6)
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
For more options, visit https://groups.google.com/groups/opt_out.
- << Previous post in topic Next post in topic >>