Hello,

I made a patch that adds missing XZ compression support to some runtime files.

Regards
Jan Steffens

-- 
You received this message from the "vim_dev" 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
diff -uNr vim72/autoload/getscript.vim vim72-xz/autoload/getscript.vim
--- vim72/autoload/getscript.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/autoload/getscript.vim	2010-05-16 22:41:34.930283754 +0200
@@ -557,6 +557,11 @@
       exe "silent !gunzip ".shellescape(sname)
       let sname= substitute(sname,'\.gz$','','')
 "      call Decho("decompress: new sname<".sname."> after gunzip")
+     elseif sname =~ '\.xz$'
+"      call Decho("decompress: attempt to unxz ".sname)
+      exe "silent !unxz ".shellescape(sname)
+      let sname= substitute(sname,'\.xz$','','')
+"      call Decho("decompress: new sname<".sname."> after unxz")
      else
 "      call Decho("no decompression needed")
      endif
diff -uNr vim72/autoload/netrw.vim vim72-xz/autoload/netrw.vim
--- vim72/autoload/netrw.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/autoload/netrw.vim	2010-05-16 22:40:28.007276216 +0200
@@ -163,7 +163,7 @@
 endif
 " Default values - d-g ---------- {{{3
 call s:NetrwInit("g:netrw_dirhist_cnt"      , 0)
-call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}')
+call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".xz" : "unxz", ".zip" : "unzip", ".tar" : "tar -xf" }')
 call s:NetrwInit("g:netrw_dirhistmax"       , 10)
 call s:NetrwInit("g:netrw_fastbrowse"       , 1)
 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
@@ -920,7 +920,7 @@
    unlet b:netrw_method
    unlet b:netrw_fname
   endif
-  if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
+  if s:FileReadable(tmpfile) && tmpfile !~ '.tar.xz$' && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
 "   call Decho("cleanup by deleting tmpfile<".tmpfile.">")
    call s:NetrwDelete(tmpfile)
   endif
@@ -1387,6 +1387,9 @@
    elseif rfile =~ '\.tar\.bz2'
 "    call Decho("handling remote bz2-compressed tar file")
     call tar#Browse(tfile)
+   elseif rfile =~ '\.tar\.xz'
+"    call Decho("handling remote xz-compressed tar file")
+    call tar#Browse(tfile)
    else
 "    call Decho("edit temporary file")
     e!
@@ -2312,7 +2315,7 @@
    exe "sil! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
    exe "sil keepalt doau BufReadPre ".fnameescape(s:fname)
    silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
-   if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
+   if s:path !~ '.tar.xz' && s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
     " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
     exe "sil keepalt doau BufReadPost ".fnameescape(s:fname)
    endif
@@ -4390,7 +4393,7 @@
 "                          using g:netrw_compress_suffix to know which to
 "                          do.  By default:
 "                            g:netrw_compress        = "gzip"
-"                            g:netrw_decompress      = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
+"                            g:netrw_decompress      = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".xz" : "unxz", ".zip" : "unzip" , ".tar" : "tar -xf"}
 fun! s:NetrwMarkFileCompress(islocal)
 "  call Dfunc("s:NetrwMarkFileCompress(islocal=".a:islocal.")")
   let svpos    = netrw#NetrwSavePosn()
@@ -7868,7 +7871,7 @@
   if a:fname != ""
    if a:fname =~ '\.[^./]\+$'
 "    call Decho("using fname<".a:fname.">'s suffix")
-    if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2'
+    if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2' || a:fname =~ '.tar.xz'
      let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
     else
      let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
diff -uNr vim72/autoload/tar.vim vim72-xz/autoload/tar.vim
--- vim72/autoload/tar.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/autoload/tar.vim	2010-05-16 22:43:47.552260967 +0200
@@ -164,6 +164,9 @@
   elseif tarfile =~# '\.lzma$'
 "   call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+  elseif tarfile =~# '\.xz$'
+"   call Decho("3: exe silent r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
   else
    if tarfile =~ '^\s*-'
     " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
@@ -265,10 +268,13 @@
   elseif  fname =~ '\.lzma$' && executable("lzcat")
    let decmp= "|lzcat"
    let doro = 1
+  elseif  fname =~ '\.xz$' && executable("xzcat")
+   let decmp= "|xzcat"
+   let doro = 1
   else
    let decmp=""
    let doro = 0
-   if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.zip$\|\.Z$'
+   if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$'
     setlocal bin
    endif
   endif
@@ -290,6 +296,9 @@
   elseif tarfile =~# '\.lzma$'
 "   call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
    exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+  elseif tarfile =~# '\.xz$'
+"   call Decho("7: exe silent r! xz -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
+   exe "silent r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   else
    if tarfile =~ '^\s*-'
     " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
@@ -393,6 +402,11 @@
    let tarfile = substitute(tarfile,'\.lzma','','e')
    let compress= "lzma -- ".shellescape(tarfile,0)
 "   call Decho("compress<".compress.">")
+  elseif tarfile =~# '\.xz'
+   call system("xz -d -- ".shellescape(tarfile,0))
+   let tarfile = substitute(tarfile,'\.xz','','e')
+   let compress= "xz -- ".shellescape(tarfile,0)
+"   call Decho("compress<".compress.">")
   elseif tarfile =~# '\.tgz'
    call system("gzip -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.tgz','.tar','e')
diff -uNr vim72/autoload/vimball.vim vim72-xz/autoload/vimball.vim
--- vim72/autoload/vimball.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/autoload/vimball.vim	2010-05-16 22:45:32.614510143 +0200
@@ -505,6 +505,26 @@
    exe "e ".escape(fname,' \')
    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
 
+  elseif expand("%") =~ '.*\.xz' && executable("unxz")
+   " handle *.xz with unxz
+   silent exe "!unxz ".shellescape(a:fname)
+   if v:shell_error != 0
+	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unxz may have failed with <".a:fname.">")
+   endif
+   let fname= substitute(a:fname,'\.xz$','','')
+   exe "e ".escape(fname,' \')
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+
+  elseif expand("%") =~ '.*\.xz' && executable("xz")
+   " handle *.xz with xz -d
+   silent exe "!xz -d ".shellescape(a:fname)
+   if v:shell_error != 0
+	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "xz -d" may have failed with <'.a:fname.">")
+   endif
+   let fname= substitute(a:fname,'\.xz$','','')
+   exe "e ".escape(fname,' \')
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+
   elseif expand("%") =~ '.*\.zip' && executable("unzip")
    " handle *.zip with unzip
    silent exe "!unzip ".shellescape(a:fname)
diff -uNr vim72/filetype.vim vim72-xz/filetype.vim
--- vim72/filetype.vim	2010-05-16 22:34:09.000000000 +0200
+++ vim72-xz/filetype.vim	2010-05-16 22:47:29.343285870 +0200
@@ -37,7 +37,7 @@
 " Pattern used to match file names which should not be inspected.
 " Currently finds compressed files.
 if !exists("g:ft_ignore_pat")
-  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
+  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|xz\|zip\|tgz\)$'
 endif
 
 " Function used for patterns that end in a star: don't set the filetype if the
diff -uNr vim72/plugin/tarPlugin.vim vim72-xz/plugin/tarPlugin.vim
--- vim72/plugin/tarPlugin.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/plugin/tarPlugin.vim	2010-05-16 22:46:39.220270785 +0200
@@ -39,8 +39,9 @@
   au BufReadCmd   *.lrp			call tar#Browse(expand("<amatch>"))
   au BufReadCmd   *.tar.bz2		call tar#Browse(expand("<amatch>"))
   au BufReadCmd   *.tar.Z		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.lzma	        call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.xz		call tar#Browse(expand("<amatch>"))
   au BufReadCmd   *.tgz			call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tar.lzma	call tar#Browse(expand("<amatch>"))
 augroup END
 com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
 
diff -uNr vim72/plugin/vimballPlugin.vim vim72-xz/plugin/vimballPlugin.vim
--- vim72/plugin/vimballPlugin.vim	2010-05-16 22:33:59.000000000 +0200
+++ vim72-xz/plugin/vimballPlugin.vim	2010-05-16 22:47:07.425260844 +0200
@@ -26,8 +26,8 @@
 com! -na=? -complete=dir  UseVimball			call vimball#Vimball(1,<f-args>)
 com! -na=0                VimballList			call vimball#Vimball(0)
 com! -na=* -complete=dir  RmVimball				call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
-au SourceCmd  *.vba.gz,*.vba.bz2,*.vba.zip		call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
-au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.zip	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ma ff=unix noma |endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
+au SourceCmd  *.vba.gz,*.vba.bz2,*.vba.xz,*.vba.zip		call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
+au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.xz,*.vba.zip	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ma ff=unix noma |endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
 
 " =====================================================================
 " Restoration And Modelines: {{{1

Raspunde prin e-mail lui