emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Support for xz compression (patch included)


From: Ulrich Mueller
Subject: Support for xz compression (patch included)
Date: Wed, 22 Sep 2010 17:45:32 +0200

Hi,

So far Emacs has only rudimentary support for xz compression, namely
in jka-compr and dired. Please find below a patch against the current
trunk that extends xz support.

On a related note, info.el supports "unyabba" and the ".Y" filename
suffix. Is anyone still using yabba to compress Info files, or could
that be removed?

Ulrich


doc/misc/ChangeLog
2010-09-22  Ulrich Mueller  <address@hidden>

        * woman.texi (Interface Options): xz compression is now supported.

lib-src/ChangeLog
2010-09-22  Ulrich Mueller  <address@hidden>

        * etags.c (compressors, print_language_names): Support xz
        compression.

lisp/ChangeLog
2010-09-22  Ulrich Mueller  <address@hidden>

        * eshell/em-ls.el (eshell-ls-archive-regexp):
        * eshell/esh-util.el (eshell-tar-regexp):
        * ibuffer.el (ibuffer-compressed-file-name-regexp):
        * info.el (Info-suffix-list):
        * international/mule.el (auto-coding-alist):
        * woman.el (woman-file-regexp, woman-file-compression-regexp):
        * progmodes/etags.el (tags-compression-info-list):
        Support xz compression.

--- emacs-orig/doc/misc/woman.texi
+++ emacs/doc/misc/woman.texi
@@ -1121,8 +1121,8 @@
 for which decompressors are available and handled by auto-compression
 mode.  It should begin with @code{\\.} and end with @code{\\'} and
 @emph{must not} be optional.  The default value is
address@hidden"\\.\\(g?z\\|bz2\\)\\'"}, which matches the @code{gzip} and
address@hidden compression extensions.
address@hidden"\\.\\(g?z\\|bz2\\|xz\\)\\'"}, which matches the @code{gzip},
address@hidden, and @code{xz} compression extensions.
 
 @emph{Do not change this unless you are sure you know what you are doing!}
 
--- emacs-orig/lib-src/etags.c
+++ emacs/lib-src/etags.c
@@ -561,6 +561,7 @@
   { "gz", "gzip -d -c"},
   { "GZ", "gzip -d -c"},
   { "bz2", "bzip2 -d -c" },
+  { "xz", "xz -d -c" },
   { NULL }
 };
 
@@ -874,7 +875,7 @@
 Fortran is tried first; if no tags are found, C is tried next.\n\
 When parsing any C file, a \"class\" or \"template\" keyword\n\
 switches to C++.");
-  puts ("Compressed files are supported using gzip and bzip2.\n\
+  puts ("Compressed files are supported using gzip, bzip2, and xz.\n\
 \n\
 For detailed help on a given language use, for example,\n\
 etags --help --lang=ada.");
--- emacs-orig/lisp/eshell/em-ls.el
+++ emacs/lisp/eshell/em-ls.el
@@ -162,7 +162,7 @@
 
 (defcustom eshell-ls-archive-regexp
   (concat "\\.\\(t\\(a[rz]\\|gz\\)\\|arj\\|lzh\\|"
-         "zip\\|[zZ]\\|gz\\|bz2\\|deb\\|rpm\\)\\'")
+         "zip\\|[zZ]\\|gz\\|bz2\\|xz\\|deb\\|rpm\\)\\'")
   "*A regular expression that matches names of file archives.
 This typically includes both traditional archives and compressed
 files."
--- emacs-orig/lisp/eshell/esh-util.el
+++ emacs/lisp/eshell/esh-util.el
@@ -71,7 +71,7 @@
   :group 'eshell-util)
 
 (defcustom eshell-tar-regexp
-  "\\.t\\(ar\\(\\.\\(gz\\|bz2\\|Z\\)\\)?\\|gz\\|a[zZ]\\|z2\\)\\'"
+  "\\.t\\(ar\\(\\.\\(gz\\|bz2\\|xz\\|Z\\)\\)?\\|gz\\|a[zZ]\\|z2\\)\\'"
   "*Regular expression used to match tar file names."
   :type 'regexp
   :group 'eshell-util)
--- emacs-orig/lisp/ibuffer.el
+++ emacs/lisp/ibuffer.el
@@ -332,7 +332,7 @@
   :group 'ibuffer)
 
 (defcustom ibuffer-compressed-file-name-regexp
-  "\\.\\(arj\\|bgz\\|bz2\\|gz\\|lzh\\|taz\\|tgz\\|zip\\|z\\)$"
+  "\\.\\(arj\\|bgz\\|bz2\\|gz\\|lzh\\|taz\\|tgz\\|xz\\|zip\\|z\\)$"
   "Regexp to match compressed file names."
   :type 'regexp
   :group 'ibuffer)
--- emacs-orig/lisp/info.el
+++ emacs/lisp/info.el
@@ -397,30 +397,34 @@
         ("-info"    . nil)
         ("/index"   . nil)
         (""         . nil))
-    '( (".info.Z".    "uncompress")
-       (".info.Y".    "unyabba")
-       (".info.gz".   "gunzip")
-       (".info.z".    "gunzip")
-       (".info.bz2" . ("bzip2" "-dc"))
-       (".info".      nil)
-       ("-info.Z".   "uncompress")
-       ("-info.Y".   "unyabba")
-       ("-info.gz".  "gunzip")
-       ("-info.bz2" . ("bzip2" "-dc"))
-       ("-info.z".   "gunzip")
-       ("-info".     nil)
-       ("/index.Z".   "uncompress")
-       ("/index.Y".   "unyabba")
-       ("/index.gz".  "gunzip")
-       ("/index.z".   "gunzip")
-       ("/index.bz2". ("bzip2" "-dc"))
-       ("/index".     nil)
-       (".Z".         "uncompress")
-       (".Y".         "unyabba")
-       (".gz".        "gunzip")
-       (".z".         "gunzip")
-       (".bz2" .      ("bzip2" "-dc"))
-       ("".           nil)))
+    '( (".info.Z"    . "uncompress")
+       (".info.Y"    . "unyabba")
+       (".info.gz"   . "gunzip")
+       (".info.z"    . "gunzip")
+       (".info.bz2"  . ("bzip2" "-dc"))
+       (".info.xz"   . "unxz")
+       (".info"      . nil)
+       ("-info.Z"    . "uncompress")
+       ("-info.Y"    . "unyabba")
+       ("-info.gz"   . "gunzip")
+       ("-info.z"    . "gunzip")
+       ("-info.bz2"  . ("bzip2" "-dc"))
+       ("-info.xz"   . "unxz")
+       ("-info"      . nil)
+       ("/index.Z"   . "uncompress")
+       ("/index.Y"   . "unyabba")
+       ("/index.gz"  . "gunzip")
+       ("/index.z"   . "gunzip")
+       ("/index.bz2" . ("bzip2" "-dc"))
+       ("/index.xz"  . "unxz")
+       ("/index"     . nil)
+       (".Z"         . "uncompress")
+       (".Y"         . "unyabba")
+       (".gz"        . "gunzip")
+       (".z"         . "gunzip")
+       (".bz2"       . ("bzip2" "-dc"))
+       (".xz"        . "unxz")
+       (""           . nil)))
   "List of file name suffixes and associated decoding commands.
 Each entry should be (SUFFIX . STRING); the file is given to
 the command as standard input.
--- emacs-orig/lisp/international/mule.el
+++ emacs/lisp/international/mule.el
@@ -1679,7 +1679,7 @@
      . no-conversion-multibyte)
     ("\\.\\(exe\\|EXE\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
-    ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
+    ("\\.\\(gz\\|Z\\|bz\\|bz2\\|xz\\|gpg\\)\\'" . no-conversion)
     ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
     ("\\.pdf\\'" . no-conversion)
     ("/#[^/]+#\\'" . emacs-mule)))
--- emacs-orig/lisp/progmodes/etags.el
+++ emacs/lisp/progmodes/etags.el
@@ -68,7 +68,8 @@
   :type '(repeat file))
 
 ;;;###autoload
-(defcustom tags-compression-info-list (purecopy '("" ".Z" ".bz2" ".gz" ".tgz"))
+(defcustom tags-compression-info-list
+  (purecopy '("" ".Z" ".bz2" ".gz" ".xz" ".tgz"))
   "*List of extensions tried by etags when jka-compr is used.
 An empty string means search the non-compressed file.
 These extensions will be tried only if jka-compr was activated
--- emacs-orig/lisp/woman.el
+++ emacs/lisp/woman.el
@@ -810,7 +810,7 @@
 
 (defvar woman-file-regexp nil
   "Regexp used to select (possibly compressed) man source files, e.g.
-\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\)\\)?\\'\".
+\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\'\".
 Built automatically from the customizable user options
 `woman-uncompressed-file-regexp' and `woman-file-compression-regexp'.")
 
@@ -846,11 +846,11 @@
   :group 'woman-interface)
 
 (defcustom woman-file-compression-regexp
-  "\\.\\(g?z\\|bz2\\)\\'"
+  "\\.\\(g?z\\|bz2\\|xz\\)\\'"
   "Do not change this unless you are sure you know what you are doing!
 Regexp used to match compressed man file extensions for which
 decompressors are available and handled by auto-compression mode,
-e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\)\\\\'\" for `gzip' or `bzip2'.
+e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\'\" for `gzip', `bzip2', or `xz'.
 Should begin with \\. and end with \\' and MUST NOT be optional."
   ;; Should be compatible with car of
   ;; `jka-compr-file-name-handler-entry', but that is unduly



reply via email to

[Prev in Thread] Current Thread [Next in Thread]