extdiff: escape filenames with vim/DirDiff and make quoting work with Windows stable
authorThomas Arendsen Hein <thomas@intevation.de>
Mon, 12 Mar 2012 09:39:30 +0100
branchstable
changeset 16242 55174ab81973
parent 16231 ce292f1379ba
child 16243 b9c4302310e5
extdiff: escape filenames with vim/DirDiff and make quoting work with Windows Use vim function fnameescape() on filenames. Use double quotes for arguments so cmd.exe is happy.
contrib/win32/mercurial.ini
hgext/extdiff.py
tests/test-extension.t
--- a/contrib/win32/mercurial.ini	Thu Mar 08 13:35:27 2012 -0600
+++ b/contrib/win32/mercurial.ini	Mon Mar 12 09:39:30 2012 +0100
@@ -71,7 +71,7 @@
 ;cmd.bc3diff = C:\Program Files\Beyond Compare 3\BCompare.exe
 ;cmd.vdiff = C:\Progra~1\TortoiseSVN\bin\TortoiseMerge.exe
 ;cmd.vimdiff = gvim.exe
-;opts.vimdiff = -f '+next' '+execute "DirDiff ".argv(0)." ".argv(1)'
+;opts.vimdiff = -f "+next" "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"
 
 
 [hgk]
--- a/hgext/extdiff.py	Thu Mar 08 13:35:27 2012 -0600
+++ b/hgext/extdiff.py	Mon Mar 12 09:39:30 2012 +0100
@@ -33,7 +33,8 @@
   # (see http://www.vim.org/scripts/script.php?script_id=102) Non
   # English user, be sure to put "let g:DirDiffDynamicDiffText = 1" in
   # your .vimrc
-  vimdiff = gvim -f '+next' '+execute "DirDiff" argv(0) argv(1)'
+  vimdiff = gvim -f "+next" \\
+            "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"
 
 Tool arguments can include variables that are expanded at runtime::
 
--- a/tests/test-extension.t	Thu Mar 08 13:35:27 2012 -0600
+++ b/tests/test-extension.t	Mon Mar 12 09:39:30 2012 +0100
@@ -301,7 +301,8 @@
     # (see http://www.vim.org/scripts/script.php?script_id=102) Non
     # English user, be sure to put "let g:DirDiffDynamicDiffText = 1" in
     # your .vimrc
-    vimdiff = gvim -f '+next' '+execute "DirDiff" argv(0) argv(1)'
+    vimdiff = gvim -f "+next" \
+              "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"
   
   Tool arguments can include variables that are expanded at runtime: