Я запускаю Mercurial из командной строки на Windows XP. У меня есть плагин extdiff. я хотел

hg vimdiff

использовать команду Vim's DirDiff. Я пытался положить

cmd.vimdiff = gvim
opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)'

В моем Mercurial.ini. Если я сделаю hg vimdiff, откроется gvim с именем файла «+next». Я думаю, что проблема заключается в цитировании и путевых именах, специфичных для окон. Я пробовал несколько перестановок обратной косой черты и одинарных и двойных кавычек (не совсем случайно), но безуспешно.

Сейчас я решил свою проблему, создав отдельный скрипт для вызова gvim, т.е.

[extdiff]
cmd.vimdiff = c:\python25\python.exe
opts.vimdiff = c:\test\gvimdiff.py

и gvimdiff.py существо

import sys
import os

os.system('gvim -c "DirDiff %s %s"' % (sys.argv[1],sys.argv[2]))

Но если кто-нибудь знает секретное заклинание, заставляющее его работать прямо из командной строки, дайте мне знать, и я, возможно, постараюсь обновить документацию.

1 ответ1

2

Проблема вызвана своего рода ошибкой vim при вызове функции с f-args, а аргументы - это строки, заканчивающиеся на '\'. Решение состоит в том, чтобы убрать завершающий '\' для каждого аргумента.

У меня есть более компактное решение здесь:

Использование vimdiff с Mercurial

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .