Bzip2 mini-HOWTO: Using bzip2 with emacs

Next Previous Contents

## 6. Using bzip2 with emacs

## 6.1 Changing emacs for everyone:

I've written the following patch to jka-compr.el which adds bzip2 to auto-compression-mode.

Disclaimer: I have only tested this with emacs-20.2, but have no reason to believe that a similar approach won't work with other versions.

To use it,

1. Go to the emacs-20.2/lisp source directory (wherever you untarred it)
2. Put the patch below in a file called jka-compr.el.diff (it should be alone in that file ;).
3. Do

   > `

   >      patch < jka-compr.el.diff

   > `

4. Start emacs, and do

   > `

   >      M-x byte-compile-file jka-compr.el

   > `

5. Leave emacs.
6. Move your original jka-compr.elc to a safe place in case of bugs.
7. Replace it with the new jka-compr.elc.
8. Have fun!

    --- jka-compr.el        Sat Jul 26 17:02:39 1997
    +++ jka-compr.el.new    Thu Feb  5 17:44:35 1998
    @@ -44,7 +44,7 @@
     ;; The variable, jka-compr-compression-info-list can be used to
     ;; customize jka-compr to work with other compression programs.
     ;; The default value of this variable allows jka-compr to work with
    -;; Unix compress and gzip.
    +;; Unix compress and gzip.  David Fetter added bzip2 support :)
     ;;
     ;; If you are concerned about the stderr output of gzip and other
     ;; compression/decompression programs showing up in your buffers, you
    @@ -121,7 +121,9 @@

     ;;; I have this defined so that .Z files are assumed to be in unix
    -;;; compress format; and .gz files, in gzip format.
    +;;; compress format; and .gz files, in gzip format, and .bz2 files,
    +;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk.
    +;;; Keep up the good work, people!
     (defcustom jka-compr-compression-info-list
       ;;[regexp
       ;; compr-message  compr-prog  compr-args
    @@ -131,6 +133,10 @@
          "compressing"    "compress"     ("-c")
          "uncompressing"  "uncompress"   ("-c")
          nil t]
    +    ["\\.bz2\\'"
    +     "bzip2ing"        "bzip2"         ("")
    +     "bunzip2ing"      "bzip2"         ("-d")
    +     nil t]
         ["\\.tgz\\'"
          "zipping"        "gzip"         ("-c" "-q")
          "unzipping"      "gzip"         ("-c" "-q" "-d")

## 6.2 Changing emacs for one person:

Thanks for this one go to Ulrik Dickow, ukd@kampsax.dk, Systems Programmer at Kampsax Technology:

To make it so you can use bzip2 automatically when you aren't the sysadmin, just add the following to your .emacs file.

    ;; Automatic (un)compression on loading/saving files (gzip(1) and similar)
    ;; We start it in the off state, so that bzip2(1) support can be added.
    ;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34.
    ;; Should work with many older and newer Emacsen too.  No warranty though.
    ;;
    (if (fboundp 'auto-compression-mode) ; Emacs 19.30+
        (auto-compression-mode 0)
      (require 'jka-compr)
      (toggle-auto-compression 0))
    ;; Now add bzip2 support and turn auto compression back on.
    (add-to-list 'jka-compr-compression-info-list
                 ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
                  "zipping"        "bzip2"         ()
                  "unzipping"      "bzip2"         ("-d")
                  nil t])
    (toggle-auto-compression 1 t)

Next Previous Contents