emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/jka-compr.el


From: Richard M . Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/jka-compr.el
Date: Sat, 30 Apr 2005 16:18:10 -0400

Index: emacs/lisp/jka-compr.el
diff -c emacs/lisp/jka-compr.el:1.82 emacs/lisp/jka-compr.el:1.83
*** emacs/lisp/jka-compr.el:1.82        Sun Apr 17 16:00:48 2005
--- emacs/lisp/jka-compr.el     Sat Apr 30 20:18:10 2005
***************
*** 100,114 ****
  
  ;;; Code:
  
- (defgroup compression nil
-   "Data compression utilities"
-   :group 'data)
- 
- (defgroup jka-compr nil
-   "jka-compr customization"
-   :group 'compression)
- 
- 
  (defcustom jka-compr-shell "sh"
    "*Shell to be used for calling compression programs.
  The value of this variable only matters if you want to discard the
--- 100,105 ----
***************
*** 120,237 ****
  (defvar jka-compr-use-shell
    (not (memq system-type '(ms-dos windows-nt))))
  
- ;;; 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.
- (defcustom jka-compr-compression-info-list
-   ;;[regexp
-   ;; compr-message  compr-prog  compr-args
-   ;; uncomp-message uncomp-prog uncomp-args
-   ;; can-append auto-mode-flag strip-extension-flag file-magic-bytes]
-   '(["\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'"
-      "compressing"    "compress"     ("-c")
-      "uncompressing"  "uncompress"   ("-c")
-      nil t "\037\235"]
-      ;; Formerly, these had an additional arg "-c", but that fails with
-      ;; "Version 0.1pl2, 29-Aug-97." (RedHat 5.1 GNU/Linux) and
-      ;; "Version 0.9.0b, 9-Sept-98".
-     ["\\.bz2\\'"
-      "bzip2ing"        "bzip2"         nil
-      "bunzip2ing"      "bzip2"         ("-d")
-      nil t "BZh"]
-     ["\\.tbz\\'"
-      "bzip2ing"        "bzip2"         nil
-      "bunzip2ing"      "bzip2"         ("-d")
-      nil nil "BZh"]
-     ["\\.tgz\\'"
-      "zipping"        "gzip"         ("-c" "-q")
-      "unzipping"      "gzip"         ("-c" "-q" "-d")
-      t nil "\037\213"]
-     ["\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'"
-      "zipping"        "gzip"         ("-c" "-q")
-      "unzipping"      "gzip"         ("-c" "-q" "-d")
-      t t "\037\213"]
-     ;; 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.
-     ["\\.dz\\'"
-      nil              nil            nil
-      "unzipping"      "gzip"         ("-c" "-q" "-d")
-      nil t "\037\213"])
- 
-   "List of vectors that describe available compression techniques.
- Each element, which describes a compression technique, is a vector of
- the form [REGEXP COMPRESS-MSG COMPRESS-PROGRAM COMPRESS-ARGS
- UNCOMPRESS-MSG UNCOMPRESS-PROGRAM UNCOMPRESS-ARGS
- APPEND-FLAG STRIP-EXTENSION-FLAG FILE-MAGIC-CHARS], where:
- 
-    regexp                is a regexp that matches filenames that are
-                          compressed with this format
- 
-    compress-msg          is the message to issue to the user when doing this
-                          type of compression (nil means no message)
- 
-    compress-program      is a program that performs this compression
-                          (nil means visit file in read-only mode)
- 
-    compress-args         is a list of args to pass to the compress program
- 
-    uncompress-msg        is the message to issue to the user when doing this
-                          type of uncompression (nil means no message)
- 
-    uncompress-program    is a program that performs this compression
- 
-    uncompress-args       is a list of args to pass to the uncompress program
- 
-    append-flag           is non-nil if this compression technique can be
-                          appended
- 
-    strip-extension-flag  non-nil means strip the regexp from file names
-                          before attempting to set the mode.
- 
-    file-magic-chars      is a string of characters that you would find
-                        at the beginning of a file compressed in this way.
- 
- Because of the way `call-process' is defined, discarding the stderr output of
- a program adds the overhead of starting a shell each time the program is
- invoked."
-   :type '(repeat (vector regexp
-                        (choice :tag "Compress Message"
-                                (string :format "%v")
-                                (const :tag "No Message" nil))
-                        (choice :tag "Compress Program"
-                                (string)
-                                (const :tag "None" nil))
-                        (repeat :tag "Compress Arguments" string)
-                        (choice :tag "Uncompress Message"
-                                (string :format "%v")
-                                (const :tag "No Message" nil))
-                        (choice :tag "Uncompress Program"
-                                (string)
-                                (const :tag "None" nil))
-                        (repeat :tag "Uncompress Arguments" string)
-                        (boolean :tag "Append")
-                        (boolean :tag "Strip Extension")
-                        (string :tag "Magic Bytes")))
-   :group 'jka-compr)
- 
- (defcustom jka-compr-mode-alist-additions
-   (list (cons "\\.tgz\\'" 'tar-mode) (cons "\\.tbz\\'" 'tar-mode))
-   "A list of pairs to add to `auto-mode-alist' when jka-compr is installed."
-   :type '(repeat (cons string symbol))
-   :group 'jka-compr)
- 
- (defcustom jka-compr-load-suffixes '(".gz")
-   "List of suffixes to try when loading files."
-   :type '(repeat string)
-   :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)
- 
- (defvar jka-compr-file-name-handler-entry
-   nil
-   "The entry in `file-name-handler-alist' used by the jka-compr I/O 
functions.")
- 
  (defvar jka-compr-really-do-compress nil
    "Non-nil in a buffer whose visited file was uncompressed on visiting it.
  This means compress the data on writing the file, even if the
--- 111,116 ----
***************
*** 764,775 ****
  (put 'byte-compiler-base-file-name 'jka-compr
       'jka-compr-byte-compiler-base-file-name)
  
  (defvar jka-compr-inhibit nil
    "Non-nil means inhibit automatic uncompression temporarily.
  Lisp programs can bind this to t to do that.
  It is not recommended to set this variable permanently to anything but nil.")
  
! (put 'jka-compr-handler 'safe-magic t)
  (defun jka-compr-handler (operation &rest args)
    (save-match-data
      (let ((jka-op (get operation 'jka-compr)))
--- 643,655 ----
  (put 'byte-compiler-base-file-name 'jka-compr
       'jka-compr-byte-compiler-base-file-name)
  
+ ;;;###autoload
  (defvar jka-compr-inhibit nil
    "Non-nil means inhibit automatic uncompression temporarily.
  Lisp programs can bind this to t to do that.
  It is not recommended to set this variable permanently to anything but nil.")
  
! ;;;###autoload
  (defun jka-compr-handler (operation &rest args)
    (save-match-data
      (let ((jka-op (get operation 'jka-compr)))
***************
*** 790,854 ****
      (apply operation args)))
  
  
- (defun jka-compr-build-file-regexp ()
-   (mapconcat
-    'jka-compr-info-regexp
-    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'."
- 
-   (setq jka-compr-file-name-handler-entry
-       (cons (jka-compr-build-file-regexp) 'jka-compr-handler))
- 
-   (setq file-name-handler-alist (cons jka-compr-file-name-handler-entry
-                                     file-name-handler-alist))
- 
-   (setq jka-compr-added-to-file-coding-system-alist nil)
- 
-   (mapcar
-    (function (lambda (x)
-              ;; Don't do multibyte encoding on the compressed files.
-              (let ((elt (cons (jka-compr-info-regexp x)
-                                '(no-conversion . no-conversion))))
-                (setq file-coding-system-alist
-                      (cons elt file-coding-system-alist))
-                (setq jka-compr-added-to-file-coding-system-alist
-                      (cons elt jka-compr-added-to-file-coding-system-alist)))
- 
-              (and (jka-compr-info-strip-extension x)
-                   ;; Make entries in auto-mode-alist so that modes
-                   ;; are chosen right according to the file names
-                   ;; sans `.gz'.
-                   (setq auto-mode-alist
-                         (cons (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.
-                   (setq inhibit-first-line-modes-suffixes
-                         (cons (jka-compr-info-regexp x)
-                               inhibit-first-line-modes-suffixes)))))
-    jka-compr-compression-info-list)
-   (setq auto-mode-alist
-       (append auto-mode-alist jka-compr-mode-alist-additions))
- 
-   ;; Make sure that (load "foo") will find /bla/foo.el.gz.
-   (setq load-suffixes
-       (apply 'append
-              (mapcar (lambda (suffix)
-                        (cons suffix
-                              (mapcar (lambda (ext) (concat suffix ext))
-                                      jka-compr-load-suffixes)))
-                      load-suffixes))))
- 
- 
  (defun jka-compr-uninstall ()
    "Uninstall jka-compr.
  This removes the entries in `file-name-handler-alist' and `auto-mode-alist'
--- 670,675 ----
***************
*** 908,966 ****
        (push suffix suffixes)))
      (setq load-suffixes (nreverse suffixes))))
  
- 
- (defun jka-compr-installed-p ()
-   "Return non-nil if jka-compr is installed.
- The return value is the entry in `file-name-handler-alist' for jka-compr."
- 
-   (let ((fnha file-name-handler-alist)
-       (installed nil))
- 
-     (while (and fnha (not installed))
-      (and (eq (cdr (car fnha)) 'jka-compr-handler)
-          (setq installed (car fnha)))
-       (setq fnha (cdr fnha)))
- 
-     installed))
- 
- 
- ;;; Add the file I/O hook if it does not already exist.
- ;;; Make sure that jka-compr-file-name-handler-entry is eq to the
- ;;; entry for jka-compr in file-name-handler-alist.
- (and (jka-compr-installed-p)
-      (jka-compr-uninstall))
- 
- 
- ;;;###autoload
- (define-minor-mode auto-compression-mode
-   "Toggle automatic file compression and uncompression.
- With prefix argument ARG, turn auto compression on if positive, else off.
- Returns the new status of auto compression (non-nil means on)."
-   :global t :group 'jka-compr
-   (let* ((installed (jka-compr-installed-p))
-        (flag auto-compression-mode))
-     (cond
-      ((and flag installed) t)         ; already installed
-      ((and (not flag) (not installed)) nil) ; already not installed
-      (flag (jka-compr-install))
-      (t (jka-compr-uninstall)))))
- 
- 
- ;;;###autoload
- (defmacro with-auto-compression-mode (&rest body)
-   "Evalute BODY with automatic file compression and uncompression enabled."
-   (let ((already-installed (make-symbol "already-installed")))
-     `(let ((,already-installed (jka-compr-installed-p)))
-        (unwind-protect
-          (progn
-            (unless ,already-installed
-              (jka-compr-install))
-            ,@body)
-        (unless ,already-installed
-          (jka-compr-uninstall))))))
- (put 'with-auto-compression-mode 'lisp-indent-function 0)
- 
- 
  (provide 'jka-compr)
  
  ;;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc
--- 729,734 ----




reply via email to

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