O problema é causado por uma espécie de bug do vim ao chamar uma função com f-args e os args são strings terminando com '\'. A solução é remover o '\' final de cada argumento.
Eu tenho uma solução mais compacta aqui:
Estou executando o Mercurial na linha de comando do Windows XP. Eu tenho o plugin extdiff. Eu queria
hg vimdiff
para usar o comando DirDiff do Vim. Eu tentei colocar
cmd.vimdiff = gvim
opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)'
No meu Mercurial.ini. Se eu fizer hg vimdiff então gvim abre com um nome de arquivo '+ next'. Eu acho que o problema é fazer com citações e nomes de caminhos específicos para o Windows. Eu tentei uma série de permutações de barras invertidas e aspas simples e duplas (não totalmente aleatoriamente), mas sem sorte.
Já resolvi meu problema fazendo um script separado para invocar o gvim, por exemplo
[extdiff]
cmd.vimdiff = c:\python25\python.exe
opts.vimdiff = c:\test\gvimdiff.py
e gvimdiff.py sendo
import sys
import os
os.system('gvim -c "DirDiff %s %s"' % (sys.argv[1],sys.argv[2]))
Mas se alguém souber o encantamento secreto para fazê-lo funcionar diretamente a partir da linha de comando, avise-me e talvez eu tente atualizar a documentação.
O problema é causado por uma espécie de bug do vim ao chamar uma função com f-args e os args são strings terminando com '\'. A solução é remover o '\' final de cada argumento.
Eu tenho uma solução mais compacta aqui: