Hello,
I've made a small fix to vim's zip plugin.
Before the patch, the plugin could only edit filenames with the zip extension.
When using an autoloadcmd to open jars, the files would be edited
correctly, but they would be saved at the wrong place, and would be
ignored when opening the archive they were saved to.
The plugin basically stripped the zip suffix in some places, and added
it back at some point, causing these problems. Now the plugin always
uses the full path.
I'm using this to edit firefox extensions directly inside their jar
files. I'm also attaching a patch that adds the required associations
(jar and xpi, I'm sure there are more).
Cheers,
--
Gabriel de Perthuis
--- /usr/share/vim/vim70/autoload/zip.vim 2006-10-20 11:48:47.000000000 +0200
+++ autoload/zip.vim 2006-10-23 21:04:06.000000000 +0200
@@ -131,7 +131,7 @@
" call Decho("fname<".fname.">")
" get zipfile to the new-window
- let zipfile= substitute(w:zipfile,'.zip$','','e')
+ let zipfile= w:zipfile
let curfile= expand("%")
" call Decho("zipfile<".zipfile.">")
" call Decho("curfile<".curfile.">")
@@ -255,8 +255,8 @@
let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
endif
-" call Decho("zip -u '".zipfile.".zip' '".fname."'")
- call system("zip -u '".zipfile.".zip' '".fname."'")
+" call Decho("zip -u '".zipfile."' '".fname."'")
+ call system("zip -u '".zipfile."' '".fname."'")
if v:shell_error != 0
echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
@@ -264,12 +264,12 @@
elseif s:zipfile_{winnr()} =~ '^\a\+://'
" support writing zipfiles across a network
let netzipfile= s:zipfile_{winnr()}
-" call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">")
+" call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
1split|enew
let binkeep= &binary
let eikeep = &ei
set binary ei=all
- exe "e! ".zipfile.".zip"
+ exe "e! ".zipfile
call netrw#NetWrite(netzipfile)
let &ei = eikeep
let &binary = binkeep
--- /usr/share/vim/vim70/plugin/zipPlugin.vim 2006-10-20 11:48:47.000000000 +0200
+++ plugin/zipPlugin.vim 2006-10-23 21:59:30.000000000 +0200
@@ -35,6 +35,8 @@
endif
au BufReadCmd *.zip call zip#Browse(expand("<amatch>"))
+ au BufReadCmd *.jar call zip#Browse(expand("<amatch>"))
+ au BufReadCmd *.xpi call zip#Browse(expand("<amatch>"))
augroup END
" ------------------------------------------------------------------------