updated for version 7.0072
diff --git a/runtime/plugin/gzip.vim b/runtime/plugin/gzip.vim
index 0e9d0f5..0eebc5c 100644
--- a/runtime/plugin/gzip.vim
+++ b/runtime/plugin/gzip.vim
@@ -1,6 +1,6 @@
 " Vim plugin for editing compressed files.
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Mar 24
+" Last Change: 2005 May 18
 
 " Exit quickly when:
 " - this plugin was already loaded
@@ -48,12 +48,41 @@
   exe "return s:have_" . name
 endfun
 
+" Set b:gzip_comp_arg to the gzip argument to be used for compression, based on
+" the flags in the compressed file.
+" The only compression methods that can be detected are max speed (-1) and max
+" compression (-9).
+fun s:set_compression(line)
+  " get the Compression Method
+  let l:cm = char2nr(a:line[2])
+  " if it's 8 (DEFLATE), we can check for the compression level
+  if l:cm == 8
+    " get the eXtra FLags
+    let l:xfl = char2nr(a:line[8])
+    " max compression
+    if l:xfl == 2
+      let b:gzip_comp_arg = "-9"
+    " min compression
+    elseif l:xfl == 4
+      let b:gzip_comp_arg = "-1"
+    endif
+  endif
+endfun
+
+
 " After reading compressed file: Uncompress text in buffer with "cmd"
 fun s:read(cmd)
   " don't do anything if the cmd is not supported
   if !s:check(a:cmd)
     return
   endif
+
+  " for gzip check current compression level and set b:gzip_comp_arg.
+  silent! unlet b:gzip_comp_arg
+  if a:cmd[0] == 'g'
+    call s:set_compression(getline(1))
+  endif
+
   " make 'patchmode' empty, we don't want a copy of the written file
   let pm_save = &pm
   set pm=
@@ -121,7 +150,11 @@
     let nm = resolve(expand("<afile>"))
     let nmt = s:tempname(nm)
     if rename(nm, nmt) == 0
-      call system(a:cmd . " " . nmt)
+      if exists("b:gzip_comp_arg")
+	call system(a:cmd . " " . b:gzip_comp_arg . " " . nmt)
+      else
+	call system(a:cmd . " " . nmt)
+      endif
       call rename(nmt . "." . expand("<afile>:e"), nm)
     endif
   endif
@@ -131,8 +164,15 @@
 fun s:appre(cmd)
   " don't do anything if the cmd is not supported
   if s:check(a:cmd)
-    " Rename to a weird name to avoid the risk of overwriting another file
     let nm = expand("<afile>")
+
+    " for gzip check current compression level and set b:gzip_comp_arg.
+    silent! unlet b:gzip_comp_arg
+    if a:cmd[0] == 'g'
+      call s:set_compression(readfile(nm, "b", 1)[0])
+    endif
+
+    " Rename to a weird name to avoid the risk of overwriting another file
     let nmt = expand("<afile>:p:h") . "/X~=@l9q5"
     let nmte = nmt . "." . expand("<afile>:e")
     if rename(nm, nmte) == 0