]> code.delx.au - gnu-emacs/blobdiff - lisp/jka-cmpr-hook.el
* lisp/simple.el (save-mark-and-excursion): Add declare forms.
[gnu-emacs] / lisp / jka-cmpr-hook.el
index e1cf2a661ed735445a9e377e295916db43d73220..39302f028e9c59e3132cf4ee4f6c61c219799e33 100644 (file)
@@ -1,10 +1,10 @@
 ;;; jka-cmpr-hook.el --- preloaded code to enable jka-compr.el
 
-;; Copyright (C) 1993-1995, 1997, 1999-2000, 2002-2011
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997, 1999-2000, 2002-2016 Free Software
+;; Foundation, Inc.
 
-;; Author: jka@ece.cmu.edu (Jay K. Adams)
-;; Maintainer: FSF
+;; Author: Jay K. Adams <jka@ece.cmu.edu>
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: data
 ;; Package: emacs
 
   "jka-compr customization."
   :group 'compression)
 
+(defcustom jka-compr-verbose t
+  "If non-nil, output messages whenever compressing or uncompressing files."
+  :version "24.1"
+  :type 'boolean
+  :group 'jka-compr)
+
 ;; List of all the elements we actually added to file-coding-system-alist.
 (defvar jka-compr-added-to-file-coding-system-alist nil)
 
@@ -103,6 +109,7 @@ Otherwise, it is nil.")
   "Return information about the compression scheme of FILENAME.
 The determination as to which compression scheme, if any, to use is
 based on the filename itself and `jka-compr-compression-info-list'."
+  (setq filename (file-name-sans-versions filename))
   (catch 'compression-info
     (let ((case-fold-search nil))
       (dolist (x jka-compr-compression-info-list)
@@ -113,7 +120,7 @@ based on the filename itself and `jka-compr-compression-info-list'."
 (defun jka-compr-install ()
   "Install jka-compr.
 This adds entries to `file-name-handler-alist' and `auto-mode-alist'
-and `inhibit-first-line-modes-suffixes'."
+and `inhibit-local-variables-suffixes'."
 
   (setq jka-compr-file-name-handler-entry
        (cons (jka-compr-build-file-regexp) 'jka-compr-handler))
@@ -139,12 +146,12 @@ and `inhibit-first-line-modes-suffixes'."
          ;; are chosen right according to the file names
          ;; sans `.gz'.
          (push (list (jka-compr-info-regexp x) nil 'jka-compr) auto-mode-alist)
-         ;; Also add these regexps to
-         ;; inhibit-first-line-modes-suffixes, so that a
-         ;; -*- line in the first file of a compressed tar
-         ;; file doesn't override tar-mode.
+         ;; Also add these regexps to inhibit-local-variables-suffixes,
+         ;; so that a -*- line in the first file of a compressed tar file,
+         ;; or a Local Variables section in a member file at the end of
+         ;; the tar file don't override tar-mode.
          (push (jka-compr-info-regexp x)
-               inhibit-first-line-modes-suffixes)))
+               inhibit-local-variables-suffixes)))
   (setq auto-mode-alist
        (append auto-mode-alist jka-compr-mode-alist-additions))
 
@@ -185,19 +192,6 @@ options through Custom does this automatically."
 
 ;; I have this defined so that .Z files are assumed to be in unix
 ;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
-
-;; FIXME? It seems ugly that one has to add "\\(~\\|\\.~[0-9]+~\\)?" to
-;; all the regexps here, in order to match backup files etc.
-;; It's trivial to modify jka-compr-get-compression-info to match
-;; regexps against file-name-sans-versions, but this regexp is also
-;; used to build a file-name-handler-alist entry.
-;; find-file-name-handler does not use file-name-sans-versions.
-;; Perhaps it should,
-;; http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00812.html,
-;; but it's used all over the place and there are probably other ramifications.
-;; One could modify jka-compr-build-file-regexp to add the backup regexp,
-;; but jka-compr-compression-info-list is a defcustom to which
-;; anything could be added, so it's easiest to leave things as they are.
 (defcustom jka-compr-compression-info-list
   ;;[regexp
   ;; compr-message  compr-prog  compr-args
@@ -228,10 +222,22 @@ options through Custom does this automatically."
      "compressing"        "gzip"         ("-c" "-q")
      "uncompressing"      "gzip"         ("-c" "-q" "-d")
      t t "\037\213"]
+    ["\\.lz\\'"
+     "Lzip compressing"   "lzip"         ("-c" "-q")
+     "Lzip uncompressing" "lzip"         ("-c" "-q" "-d")
+     t t "LZIP"]
+    ["\\.lzma\\'"
+     "LZMA compressing"   "lzma"         ("-c" "-q" "-z")
+     "LZMA uncompressing" "lzma"         ("-c" "-q" "-d")
+     t t ""]
     ["\\.xz\\'"
      "XZ compressing"     "xz"           ("-c" "-q")
      "XZ uncompressing"   "xz"           ("-c" "-q" "-d")
      t t "\3757zXZ\0"]
+    ["\\.txz\\'"
+     "XZ compressing"     "xz"           ("-c" "-q")
+     "XZ uncompressing"   "xz"           ("-c" "-q" "-d")
+     t nil "\3757zXZ\0"]
     ;; dzip is gzip with random access.  Its compression program can't
     ;; read/write stdin/out, so .dz files can only be viewed without
     ;; saving, having their contents decompressed with gzip.
@@ -296,10 +302,13 @@ variables.  Setting this through Custom does that automatically."
                         (boolean :tag "Strip Extension")
                         (string :tag "Magic Bytes")))
   :set 'jka-compr-set
+  :version "24.1"                      ; removed version extension piece
   :group 'jka-compr)
 
 (defcustom jka-compr-mode-alist-additions
-  (list (cons (purecopy "\\.tgz\\'") 'tar-mode) (cons (purecopy "\\.tbz2?\\'") 'tar-mode))
+  (purecopy '(("\\.tgz\\'" . tar-mode)
+              ("\\.tbz2?\\'" . tar-mode)
+              ("\\.txz\\'" . tar-mode)))
   "List of pairs added to `auto-mode-alist' when installing jka-compr.
 Uninstalling jka-compr removes all pairs from `auto-mode-alist' that
 installing added.
@@ -309,10 +318,11 @@ already enabled \(as it is by default), you have to call
 `jka-compr-update' after setting it to properly update other
 variables.  Setting this through Custom does that automatically."
   :type '(repeat (cons string symbol))
+  :version "24.4"                      ; add txz
   :set 'jka-compr-set
   :group 'jka-compr)
 
-(defcustom jka-compr-load-suffixes (list (purecopy ".gz"))
+(defcustom jka-compr-load-suffixes (purecopy '(".gz"))
   "List of compression related suffixes to try when loading files.
 Enabling Auto Compression mode appends this list to `load-file-rep-suffixes',
 which see.  Disabling Auto Compression mode removes all suffixes
@@ -327,9 +337,14 @@ variables.  Setting this through Custom does that automatically."
   :group 'jka-compr)
 
 (define-minor-mode auto-compression-mode
-  "Toggle automatic file compression and uncompression.
-With prefix argument ARG, turn auto compression on if positive, else off.
-Return the new status of auto compression (non-nil means on)."
+  "Toggle Auto Compression mode.
+With a prefix argument ARG, enable Auto Compression mode if ARG
+is positive, and disable it otherwise.  If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+Auto Compression mode is a global minor mode.  When enabled,
+compressed files are automatically uncompressed for reading, and
+compressed when writing."
   :global t :init-value t :group 'jka-compr :version "22.1"
   (let* ((installed (jka-compr-installed-p))
         (flag auto-compression-mode))