annotate lisp/jka-compr.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents 051cdf587a57
children 3472aaf1ed7b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 13067
diff changeset
1 ;;; jka-compr.el --- reading/writing/loading compressed files
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 13067
diff changeset
2
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
3 ;; Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: jka@ece.cmu.edu (Jay K. Adams)
17976
852464ce5d6a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17441
diff changeset
6 ;; Maintainer: FSF
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: data
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
9 ;; This file is part of GNU Emacs.
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
10
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
14 ;; any later version.
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
15
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
19 ;; GNU General Public License for more details.
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
20
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
24 ;; Boston, MA 02111-1307, USA.
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
25
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
28 ;; This package implements low-level support for reading, writing,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
29 ;; and loading compressed files. It hooks into the low-level file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
30 ;; I/O functions (including write-region and insert-file-contents) so
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
31 ;; that they automatically compress or uncompress a file if the file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
32 ;; appears to need it (based on the extension of the file name).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
33 ;; Packages like Rmail, VM, GNUS, and Info should be able to work
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
34 ;; with compressed files without modification.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
37 ;; INSTRUCTIONS:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
38 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
39 ;; To use jka-compr, simply load this package, and edit as usual.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
40 ;; Its operation should be transparent to the user (except for
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
41 ;; messages appearing when a file is being compressed or
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
42 ;; uncompressed).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
43 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
44 ;; The variable, jka-compr-compression-info-list can be used to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
45 ;; customize jka-compr to work with other compression programs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
46 ;; The default value of this variable allows jka-compr to work with
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
47 ;; Unix compress and gzip.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
48 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
49 ;; If you are concerned about the stderr output of gzip and other
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
50 ;; compression/decompression programs showing up in your buffers, you
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
51 ;; should set the discard-error flag in the compression-info-list.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
52 ;; This will cause the stderr of all programs to be discarded.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
53 ;; However, it also causes emacs to call compression/uncompression
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
54 ;; programs through a shell (which is specified by jka-compr-shell).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
55 ;; This may be a drag if, on your system, starting up a shell is
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
56 ;; slow.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
57 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
58 ;; If you don't want messages about compressing and decompressing
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
59 ;; to show up in the echo area, you can set the compress-name and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
60 ;; decompress-name fields of the jka-compr-compression-info-list to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
61 ;; nil.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
64 ;; APPLICATION NOTES:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
65 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
66 ;; crypt++
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
67 ;; jka-compr can coexist with crpyt++ if you take all the decompression
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
68 ;; entries out of the crypt-encoding-list. Clearly problems will arise if
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
69 ;; you have two programs trying to compress/decompress files. jka-compr
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
70 ;; will not "work with" crypt++ in the following sense: you won't be able to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
71 ;; decode encrypted compressed files--that is, files that have been
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
72 ;; compressed then encrypted (in that order). Theoretically, crypt++ and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
73 ;; jka-compr could properly handle a file that has been encrypted then
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
74 ;; compressed, but there is little point in trying to compress an encrypted
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
75 ;; file.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
76 ;;
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
79 ;; ACKNOWLEDGMENTS
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
80 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
81 ;; jka-compr is a V19 adaptation of jka-compr for V18 of Emacs. Many people
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
82 ;; have made helpful suggestions, reported bugs, and even fixed bugs in
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
83 ;; jka-compr. I recall the following people as being particularly helpful.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
84 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
85 ;; Jean-loup Gailly
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
86 ;; David Hughes
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
87 ;; Richard Pieri
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
88 ;; Daniel Quinlan
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
89 ;; Chris P. Ross
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
90 ;; Rick Sladkey
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
91 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
92 ;; Andy Norman's ange-ftp was the inspiration for the original jka-compr for
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
93 ;; Version 18 of Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
94 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
95 ;; After I had made progress on the original jka-compr for V18, I learned of a
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
96 ;; package written by Kazushi Jam Marukawa, called jam-zcat, that did exactly
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
97 ;; what I was trying to do. I looked over the jam-zcat source code and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
98 ;; probably got some ideas from it.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
99 ;;
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;;; Code:
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
103 (defgroup compression nil
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
104 "Data compression utilities"
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
105 :group 'data)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
106
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
107 (defgroup jka-compr nil
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
108 "jka-compr customization"
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
109 :group 'compression)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
110
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
111
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
112 (defcustom jka-compr-shell "sh"
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 "*Shell to be used for calling compression programs.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 The value of this variable only matters if you want to discard the
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 stderr of a compression/decompression program (see the documentation
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
116 for `jka-compr-compression-info-list')."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
117 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
118 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
21633
185e8e424ee9 (jka-compr-use-shell) [ms-dos, windows-nt]: Do not use a shell.
Richard M. Stallman <rms@gnu.org>
parents: 20893
diff changeset
120 (defvar jka-compr-use-shell
185e8e424ee9 (jka-compr-use-shell) [ms-dos, windows-nt]: Do not use a shell.
Richard M. Stallman <rms@gnu.org>
parents: 20893
diff changeset
121 (not (memq system-type '(ms-dos windows-nt))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 ;;; I have this defined so that .Z files are assumed to be in unix
20873
d2b5d0e2607e (jka-compr-compression-info-list): Handle bzip.
Richard M. Stallman <rms@gnu.org>
parents: 20497
diff changeset
124 ;;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
125 (defcustom jka-compr-compression-info-list
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 ;;[regexp
7616
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
127 ;; compr-message compr-prog compr-args
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
128 ;; uncomp-message uncomp-prog uncomp-args
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 ;; can-append auto-mode-flag]
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
130 '(["\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'"
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 "compressing" "compress" ("-c")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 "uncompressing" "uncompress" ("-c")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 nil t]
23348
051cdf587a57 (jka-compr-compression-info-list): Remove "-c" from
Dave Love <fx@gnu.org>
parents: 22746
diff changeset
134 ;; Formerly, these had an additional arg "-c", but that fails with
051cdf587a57 (jka-compr-compression-info-list): Remove "-c" from
Dave Love <fx@gnu.org>
parents: 22746
diff changeset
135 ;; "Version 0.1pl2, 29-Aug-97." (RedHat 5.1 GNU/Linux) and
051cdf587a57 (jka-compr-compression-info-list): Remove "-c" from
Dave Love <fx@gnu.org>
parents: 22746
diff changeset
136 ;; "Version 0.9.0b, 9-Sept-98".
20873
d2b5d0e2607e (jka-compr-compression-info-list): Handle bzip.
Richard M. Stallman <rms@gnu.org>
parents: 20497
diff changeset
137 ["\\.bz2\\'"
23348
051cdf587a57 (jka-compr-compression-info-list): Remove "-c" from
Dave Love <fx@gnu.org>
parents: 22746
diff changeset
138 "bzip2ing" "bzip2" nil
051cdf587a57 (jka-compr-compression-info-list): Remove "-c" from
Dave Love <fx@gnu.org>
parents: 22746
diff changeset
139 "bunzip2ing" "bzip2" ("-d")
20893
41ad3e101628 (jka-compr-compression-info-list): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 20873
diff changeset
140 nil t]
9493
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
141 ["\\.tgz\\'"
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
142 "zipping" "gzip" ("-c" "-q")
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
143 "unzipping" "gzip" ("-c" "-q" "-d")
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
144 t nil]
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
145 ["\\.gz\\(~\\|\\.~[0-9]+~\\)?\\'"
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 "zipping" "gzip" ("-c" "-q")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 "unzipping" "gzip" ("-c" "-q" "-d")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 t t])
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 "List of vectors that describe available compression techniques.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 Each element, which describes a compression technique, is a vector of
7616
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
152 the form [REGEXP COMPRESS-MSG COMPRESS-PROGRAM COMPRESS-ARGS
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
153 UNCOMPRESS-MSG UNCOMPRESS-PROGRAM UNCOMPRESS-ARGS
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
154 APPEND-FLAG EXTENSION], where:
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 regexp is a regexp that matches filenames that are
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 compressed with this format
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158
7616
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
159 compress-msg is the message to issue to the user when doing this
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
160 type of compression (nil means no message)
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
161
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 compress-program is a program that performs this compression
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 compress-args is a list of args to pass to the compress program
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
7616
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
166 uncompress-msg is the message to issue to the user when doing this
b0098553bafe (jka-compr-compression-info-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7066
diff changeset
167 type of uncompression (nil means no message)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 uncompress-program is a program that performs this compression
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 uncompress-args is a list of args to pass to the uncompress program
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 append-flag is non-nil if this compression technique can be
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 appended
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 auto-mode flag non-nil means strip the regexp from file names
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 before attempting to set the mode.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
179 Because of the way `call-process' is defined, discarding the stderr output of
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 a program adds the overhead of starting a shell each time the program is
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
181 invoked."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
182 :type '(repeat (vector regexp
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
183 (choice :tag "Compress Message"
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
184 (string :format "%v")
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
185 (const :tag "No Message" nil))
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
186 (string :tag "Compress Program")
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
187 (repeat :tag "Compress Arguments" string)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
188 (choice :tag "Uncompress Message"
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
189 (string :format "%v")
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
190 (const :tag "No Message" nil))
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
191 (string :tag "Uncompress Program")
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
192 (repeat :tag "Uncompress Arguments" string)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
193 (boolean :tag "Append")
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
194 (boolean :tag "Auto Mode")))
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
195 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196
9493
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
197 (defvar jka-compr-mode-alist-additions
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
198 (list (cons "\\.tgz\\'" 'tar-mode))
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
199 "A list of pairs to add to `auto-mode-alist' when jka-compr is installed.")
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
200
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
201 ;; List of all the elements we actually added to file-coding-system-alist.
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
202 (defvar jka-compr-added-to-file-coding-system-alist nil)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
7617
edc853e14f7b (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars.
Richard M. Stallman <rms@gnu.org>
parents: 7616
diff changeset
204 (defvar jka-compr-file-name-handler-entry
edc853e14f7b (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars.
Richard M. Stallman <rms@gnu.org>
parents: 7616
diff changeset
205 nil
edc853e14f7b (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars.
Richard M. Stallman <rms@gnu.org>
parents: 7616
diff changeset
206 "The entry in `file-name-handler-alist' used by the jka-compr I/O functions.")
edc853e14f7b (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars.
Richard M. Stallman <rms@gnu.org>
parents: 7616
diff changeset
207
15083
285482e8df41 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
208 ;;; Functions for accessing the return value of jka-compr-get-compression-info
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 (defun jka-compr-info-regexp (info) (aref info 0))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 (defun jka-compr-info-compress-message (info) (aref info 1))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (defun jka-compr-info-compress-program (info) (aref info 2))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (defun jka-compr-info-compress-args (info) (aref info 3))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (defun jka-compr-info-uncompress-message (info) (aref info 4))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (defun jka-compr-info-uncompress-program (info) (aref info 5))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 (defun jka-compr-info-uncompress-args (info) (aref info 6))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (defun jka-compr-info-can-append (info) (aref info 7))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (defun jka-compr-info-strip-extension (info) (aref info 8))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (defun jka-compr-get-compression-info (filename)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 "Return information about the compression scheme of FILENAME.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 The determination as to which compression scheme, if any, to use is
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
223 based on the filename itself and `jka-compr-compression-info-list'."
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (catch 'compression-info
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 (let ((case-fold-search nil))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (mapcar
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (function (lambda (x)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (and (string-match (jka-compr-info-regexp x) filename)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 (throw 'compression-info x))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 jka-compr-compression-info-list)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 nil)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (put 'compression-error 'error-conditions '(compression-error file-error error))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
237 (defvar jka-compr-acceptable-retval-list '(0 2 141))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 (defun jka-compr-error (prog args infile message &optional errfile)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (let ((errbuf (get-buffer-create " *jka-compr-error*"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (curbuf (current-buffer)))
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
244 (with-current-buffer errbuf
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
245 (widen) (erase-buffer)
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
246 (insert (format "Error while executing \"%s %s < %s\"\n\n"
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
247 prog
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
248 (mapconcat 'identity args " ")
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
249 infile))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
251 (and errfile
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
252 (insert-file-contents errfile)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (display-buffer errbuf))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
255 (signal 'compression-error
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
256 (list "Opening input file" (format "error %s" message) infile)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 (defvar jka-compr-dd-program
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 "/bin/dd")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
263 (defvar jka-compr-dd-blocksize 256)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (defun jka-compr-partial-uncompress (prog message args infile beg len)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 "Call program PROG with ARGS args taking input from INFILE.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 Fourth and fifth args, BEG and LEN, specify which part of the output
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
269 to keep: LEN chars starting BEG chars from the beginning."
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (let* ((skip (/ beg jka-compr-dd-blocksize))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 (prefix (- beg (* skip jka-compr-dd-blocksize)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (count (and len (1+ (/ (+ len prefix) jka-compr-dd-blocksize))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 (start (point))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 (err-file (jka-compr-make-temp-name))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (run-string (format "%s %s 2> %s | %s bs=%d skip=%d %s 2> /dev/null"
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 prog
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (mapconcat 'identity args " ")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 err-file
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 jka-compr-dd-program
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 jka-compr-dd-blocksize
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 skip
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
282 ;; dd seems to be unreliable about
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
283 ;; providing the last block. So, always
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
284 ;; read one more than you think you need.
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
285 (if count (concat "count=" (1+ count)) ""))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 (or (memq (call-process jka-compr-shell
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 infile t nil "-c"
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 run-string)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 jka-compr-acceptable-retval-list)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (jka-compr-error prog args infile message err-file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (jka-compr-delete-temp-file err-file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
297 ;; Delete the stuff after what we want, if there is any.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (and
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
299 len
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
300 (< (+ start prefix len) (point))
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
301 (delete-region (+ start prefix len) (point)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
303 ;; Delete the stuff before what we want.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (delete-region start (+ start prefix))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (defun jka-compr-call-process (prog message infile output temp args)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (if jka-compr-use-shell
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309
18879
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
310 (let ((err-file (jka-compr-make-temp-name))
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
311 (coding-system-for-read (or coding-system-for-read 'undecided))
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
312 (coding-system-for-write 'no-conversion))
18879
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
313
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 (or (memq
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (call-process jka-compr-shell infile
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (if (stringp output) nil output)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 nil
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 "-c"
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (format "%s %s 2> %s %s"
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 prog
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (mapconcat 'identity args " ")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 err-file
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (if (stringp output)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (concat "> " output)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 "")))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 jka-compr-acceptable-retval-list)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 (jka-compr-error prog args infile message err-file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (jka-compr-delete-temp-file err-file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (or (zerop
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (apply 'call-process
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 prog
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 infile
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (if (stringp output) temp output)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 nil
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 args))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (jka-compr-error prog args infile message))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 (and (stringp output)
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
344 (with-current-buffer temp
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (write-region (point-min) (point-max) output)
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
346 (erase-buffer)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 ;;; Support for temp files. Much of this was inspired if not lifted
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 ;;; from ange-ftp.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
352 (defcustom jka-compr-temp-name-template
22100
eb3f36cc775f (jka-compr-temp-name-template): Use temporary-file-directory.
Richard M. Stallman <rms@gnu.org>
parents: 22090
diff changeset
353 (expand-file-name "jka-com" temporary-file-directory)
17441
41a10d128e3b (jka-compr-temp-name-template): Fix editing error.
Richard M. Stallman <rms@gnu.org>
parents: 17411
diff changeset
354 "Prefix added to all temp files created by jka-compr.
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
355 There should be no more than seven characters after the final `/'."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
356 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
357 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (defvar jka-compr-temp-name-table (make-vector 31 nil))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (defun jka-compr-make-temp-name (&optional local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 "This routine will return the name of a new file."
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 (let* ((lastchar ?a)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 (prevchar ?a)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (template (concat jka-compr-temp-name-template "aa"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 (lastpos (1- (length template)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 (not-done t)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 file
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 entry)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (while not-done
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 (aset template lastpos lastchar)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (setq file (concat (make-temp-name template) "#"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 (setq entry (intern file jka-compr-temp-name-table))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 (if (or (get entry 'active)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 (file-exists-p file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 (progn
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 (setq lastchar (1+ lastchar))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (if (> lastchar ?z)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 (progn
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (setq prevchar (1+ prevchar))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 (setq lastchar ?a)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 (if (> prevchar ?z)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (error "Can't allocate temp file.")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 (aset template (1- lastpos) prevchar)))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 (put entry 'active (not local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (setq not-done nil)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (defun jka-compr-delete-temp-file (temp)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (put (intern temp jka-compr-temp-name-table)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 'active nil)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (condition-case ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (delete-file temp)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (error nil)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (defun jka-compr-write-region (start end file &optional append visit)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (visit-file (if (stringp visit) (expand-file-name visit) filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (info (jka-compr-get-compression-info visit-file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (if info
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (let ((can-append (jka-compr-info-can-append info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (compress-program (jka-compr-info-compress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (compress-message (jka-compr-info-compress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (uncompress-program (jka-compr-info-uncompress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (uncompress-message (jka-compr-info-uncompress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 (compress-args (jka-compr-info-compress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 (uncompress-args (jka-compr-info-uncompress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (base-name (file-name-nondirectory visit-file))
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
419 temp-file temp-buffer
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
420 ;; we need to leave `last-coding-system-used' set to its
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
421 ;; value after calling write-region the first time, so
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
422 ;; that `basic-save-buffer' sees the right value.
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
423 (coding-system-used last-coding-system-used))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
425 (setq temp-buffer (get-buffer-create " *jka-compr-wr-temp*"))
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
426 (with-current-buffer temp-buffer
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
427 (widen) (erase-buffer))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
429 (if (and append
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
430 (not can-append)
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
431 (file-exists-p filename))
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
432
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
433 (let* ((local-copy (file-local-copy filename))
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
434 (local-file (or local-copy filename)))
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
435
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
436 (setq temp-file local-file))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
438 (setq temp-file (jka-compr-make-temp-name)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 compress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 (message "%s %s..." compress-message base-name))
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
443
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
444 (jka-compr-run-real-handler 'write-region
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
445 (list start end temp-file t 'dont))
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
446 ;; save value used by the real write-region
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
447 (setq coding-system-used last-coding-system-used)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
449 ;; Here we must read the output of compress program as is
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
450 ;; without any code conversion.
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
451 (let ((coding-system-for-read 'no-conversion))
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
452 (jka-compr-call-process compress-program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
453 (concat compress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
454 " " base-name)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
455 temp-file
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
456 temp-buffer
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
457 nil
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
458 compress-args))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
460 (with-current-buffer temp-buffer
18879
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
461 (let ((coding-system-for-write 'no-conversion))
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
462 (if (memq system-type '(ms-dos windows-nt))
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
463 (setq buffer-file-type t) )
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
464 (jka-compr-run-real-handler 'write-region
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
465 (list (point-min) (point-max)
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
466 filename
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
467 (and append can-append) 'dont))
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
468 (erase-buffer)) )
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 (jka-compr-delete-temp-file temp-file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 compress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 (message "%s %s...done" compress-message base-name))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (cond
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 ((eq visit t)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 (setq buffer-file-name filename)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (set-visited-file-modtime))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 ((stringp visit)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (setq buffer-file-name visit)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 (let ((buffer-file-name filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (set-visited-file-modtime))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 (and (or (eq visit t)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (eq visit nil)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (stringp visit))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 (message "Wrote %s" visit-file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
490 ;; ensure `last-coding-system-used' has an appropriate value
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
491 (setq last-coding-system-used coding-system-used)
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
492
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 nil)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
495 (jka-compr-run-real-handler 'write-region
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
496 (list start end filename append visit)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498
6218
f4d5338c2142 (jka-compr-insert-file-contents): Handle 5th arg.
Richard M. Stallman <rms@gnu.org>
parents: 6041
diff changeset
499 (defun jka-compr-insert-file-contents (file &optional visit beg end replace)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (barf-if-buffer-read-only)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (and (or beg end)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (error "Attempt to visit less than an entire file"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 (if info
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 (let ((uncompress-message (jka-compr-info-uncompress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (uncompress-program (jka-compr-info-uncompress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (uncompress-args (jka-compr-info-uncompress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (base-name (file-name-nondirectory filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (notfound nil)
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
516 (local-copy
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
517 (jka-compr-run-real-handler 'file-local-copy (list filename)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 local-file
18879
8b226efb9a8b (jka-compr-insert-file-contents): Bind coding-system-for-read.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
519 size start
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
520 (coding-system-for-read
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
521 (or coding-system-for-read
20497
0d0951bf17fa (jka-compr-insert-file-contents):
Richard M. Stallman <rms@gnu.org>
parents: 20132
diff changeset
522 ;; If multibyte characters are disabled,
0d0951bf17fa (jka-compr-insert-file-contents):
Richard M. Stallman <rms@gnu.org>
parents: 20132
diff changeset
523 ;; don't do that conversion.
0d0951bf17fa (jka-compr-insert-file-contents):
Richard M. Stallman <rms@gnu.org>
parents: 20132
diff changeset
524 (and (null enable-multibyte-characters)
0d0951bf17fa (jka-compr-insert-file-contents):
Richard M. Stallman <rms@gnu.org>
parents: 20132
diff changeset
525 'raw-text)
22746
516b9dfa5d34 (jka-compr-insert-file-contents): Replace incorrect
Richard M. Stallman <rms@gnu.org>
parents: 22484
diff changeset
526 (let ((coding (find-operation-coding-system
516b9dfa5d34 (jka-compr-insert-file-contents): Replace incorrect
Richard M. Stallman <rms@gnu.org>
parents: 22484
diff changeset
527 'insert-file-contents
516b9dfa5d34 (jka-compr-insert-file-contents): Replace incorrect
Richard M. Stallman <rms@gnu.org>
parents: 22484
diff changeset
528 (jka-compr-byte-compiler-base-file-name file))))
516b9dfa5d34 (jka-compr-insert-file-contents): Replace incorrect
Richard M. Stallman <rms@gnu.org>
parents: 22484
diff changeset
529 (and (consp coding) (car coding)))
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
530 'undecided)) )
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 (setq local-file (or local-copy filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (setq buffer-file-name filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (unwind-protect ; to make sure local-copy gets deleted
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (progn
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 (message "%s %s..." uncompress-message base-name))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (condition-case error-code
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 (progn
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
549 (if replace
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
550 (goto-char (point-min)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (setq start (point))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 (if (or beg end)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 (jka-compr-partial-uncompress uncompress-program
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 (concat uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 " " base-name)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 uncompress-args
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 local-file
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (or beg 0)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (if (and beg end)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (- end beg)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 end))
11621
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
562 ;; If visiting, bind off buffer-file-name so that
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
563 ;; file-locking will not ask whether we should
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
564 ;; really edit the buffer.
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
565 (let ((buffer-file-name
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
566 (if visit nil buffer-file-name)))
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
567 (jka-compr-call-process uncompress-program
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
568 (concat uncompress-message
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
569 " " base-name)
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
570 local-file
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
571 t
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
572 nil
710b5ce824c2 (jka-compr-insert-file-contents): When visiting,
Richard M. Stallman <rms@gnu.org>
parents: 11296
diff changeset
573 uncompress-args)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (setq size (- (point) start))
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
575 (if replace
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
576 (let* ((del-beg (point))
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
577 (del-end (+ del-beg size)))
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
578 (delete-region del-beg
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
579 (min del-end (point-max)))))
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
580 (goto-char start))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (error
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (if (and (eq (car error-code) 'file-error)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (eq (nth 3 error-code) local-file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (if visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (setq notfound error-code)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 (signal 'file-error
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (cons "Opening input file"
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (nthcdr 2 error-code))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (signal (car error-code) (cdr error-code))))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 local-copy
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (file-exists-p local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (delete-file local-copy)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (progn
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
599 (unlock-buffer)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (setq buffer-file-name filename)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (set-visited-file-modtime)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (message "%s %s...done" uncompress-message base-name))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 notfound
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (signal 'file-error
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (cons "Opening input file" (nth 2 notfound))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
22484
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
613 ;; This is done in insert-file-contents after we return.
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
614 ;; That is a little weird, but better to go along with it now
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
615 ;; than to change it now.
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
616
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
617 ;;; ;; Run the functions that insert-file-contents would.
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
618 ;;; (let ((p after-insert-file-functions)
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
619 ;;; (insval size))
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
620 ;;; (while p
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
621 ;;; (setq insval (funcall (car p) size))
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
622 ;;; (if insval
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
623 ;;; (progn
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
624 ;;; (or (integerp insval)
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
625 ;;; (signal 'wrong-type-argument
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
626 ;;; (list 'integerp insval)))
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
627 ;;; (setq size insval)))
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
628 ;;; (setq p (cdr p))))
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
629
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (list filename size))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
632 (jka-compr-run-real-handler 'insert-file-contents
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
633 (list file visit beg end replace)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (defun jka-compr-file-local-copy (file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (if info
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (let ((uncompress-message (jka-compr-info-uncompress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (uncompress-program (jka-compr-info-uncompress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (uncompress-args (jka-compr-info-uncompress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (base-name (file-name-nondirectory filename))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
646 (local-copy
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
647 (jka-compr-run-real-handler 'file-local-copy (list filename)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (temp-file (jka-compr-make-temp-name t))
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
649 (temp-buffer (get-buffer-create " *jka-compr-flc-temp*"))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (notfound nil)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 local-file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (setq local-file (or local-copy filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
657 (with-current-buffer temp-buffer
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (message "%s %s..." uncompress-message base-name))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
663 ;; Here we must read the output of uncompress program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
664 ;; and write it to TEMP-FILE without any code
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
665 ;; conversion. An appropriate code conversion (if
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
666 ;; necessary) is done by the later I/O operation
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
667 ;; (e.g. load).
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
668 (let ((coding-system-for-read 'no-conversion)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
669 (coding-system-for-write 'no-conversion))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
671 (jka-compr-call-process uncompress-program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
672 (concat uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
673 " " base-name)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
674 local-file
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
675 t
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
676 nil
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
677 uncompress-args)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
679 (and
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
680 uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
681 (message "%s %s...done" uncompress-message base-name))
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
682
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
683 (write-region
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
684 (point-min) (point-max) temp-file nil 'dont)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 local-copy
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (file-exists-p local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (delete-file local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 (kill-buffer temp-buffer))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 temp-file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
695 (jka-compr-run-real-handler 'file-local-copy (list filename)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 ;;; Support for loading compressed files.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (defun jka-compr-load (file &optional noerror nomessage nosuffix)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 "Documented as original."
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (let* ((local-copy (jka-compr-file-local-copy file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 (load-file (or local-copy file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
707 (let (inhibit-file-name-operation
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
708 inhibit-file-name-handlers)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (or nomessage
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (message "Loading %s..." file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711
12758
a285eaa710ac (jka-compr-load): Bind load-force-doc-strings.
Richard M. Stallman <rms@gnu.org>
parents: 11635
diff changeset
712 (let ((load-force-doc-strings t))
a285eaa710ac (jka-compr-load): Bind load-force-doc-strings.
Richard M. Stallman <rms@gnu.org>
parents: 11635
diff changeset
713 (load load-file noerror t t))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 (or nomessage
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 (message "Loading %s...done." file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (jka-compr-delete-temp-file local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 t))
12922
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
721
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
722 (defun jka-compr-byte-compiler-base-file-name (file)
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
723 (let ((info (jka-compr-get-compression-info file)))
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
724 (if (and info (jka-compr-info-strip-extension info))
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
725 (save-match-data
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
726 (substring file 0 (string-match (jka-compr-info-regexp info) file)))
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
727 file)))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
728
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
729 (put 'write-region 'jka-compr 'jka-compr-write-region)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
730 (put 'insert-file-contents 'jka-compr 'jka-compr-insert-file-contents)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
731 (put 'file-local-copy 'jka-compr 'jka-compr-file-local-copy)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
732 (put 'load 'jka-compr 'jka-compr-load)
12922
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
733 (put 'byte-compiler-base-file-name 'jka-compr
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
734 'jka-compr-byte-compiler-base-file-name)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
736 (defvar jka-compr-inhibit nil
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
737 "Non-nil means inhibit automatic uncompression temporarily.
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
738 Lisp programs can bind this to t to do that.
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
739 It is not recommended to set this variable permanently to anything but nil.")
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
740
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (defun jka-compr-handler (operation &rest args)
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
742 (save-match-data
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
743 (let ((jka-op (get operation 'jka-compr)))
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
744 (if (and jka-op (not jka-compr-inhibit))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
745 (apply jka-op args)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
746 (jka-compr-run-real-handler operation args)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
748 ;; If we are given an operation that we don't handle,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
749 ;; call the Emacs primitive for that operation,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
750 ;; and manipulate the inhibit variables
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
751 ;; to prevent the primitive from calling our handler again.
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
752 (defun jka-compr-run-real-handler (operation args)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
753 (let ((inhibit-file-name-handlers
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
754 (cons 'jka-compr-handler
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
755 (and (eq inhibit-file-name-operation operation)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
756 inhibit-file-name-handlers)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
757 (inhibit-file-name-operation operation))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
758 (apply operation args)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
759
13887
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
760 ;;;###autoload(defun auto-compression-mode (&optional arg)
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
761 ;;;###autoload "\
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
762 ;;;###autoloadToggle automatic file compression and uncompression.
13887
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
763 ;;;###autoloadWith prefix argument ARG, turn auto compression on if positive, else off.
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
764 ;;;###autoloadReturns the new status of auto compression (non-nil means on)."
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
765 ;;;###autoload (interactive "P")
13887
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
766 ;;;###autoload (if (not (fboundp 'jka-compr-installed-p))
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
767 ;;;###autoload (progn
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
768 ;;;###autoload (require 'jka-compr)
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
769 ;;;###autoload ;; That turned the mode on, so make it initially off.
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
770 ;;;###autoload (toggle-auto-compression)))
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
771 ;;;###autoload (toggle-auto-compression arg t))
13887
4362f8b4f83c (auto-compression-mode): This is now a stub function
Richard M. Stallman <rms@gnu.org>
parents: 13514
diff changeset
772
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
773 (defun toggle-auto-compression (&optional arg message)
13067
fef2a9095f0c (auto-compression-mode): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 12922
diff changeset
774 "Toggle automatic file compression and uncompression.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 With prefix argument ARG, turn auto compression on if positive, else off.
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
776 Returns the new status of auto compression (non-nil means on).
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
777 If the argument MESSAGE is non-nil, it means to print a message
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
778 saying whether the mode is now on or off."
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
779 (interactive "P\np")
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (let* ((installed (jka-compr-installed-p))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 (flag (if (null arg)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (not installed)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (or (eq arg t) (listp arg) (and (integerp arg) (> arg 0))))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 (cond
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 ((and flag installed) t) ; already installed
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 ((and (not flag) (not installed)) nil) ; already not installed
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (flag
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (jka-compr-install))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (t
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 (jka-compr-uninstall)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796
13900
37c5ece37d71 (auto-compression-mode): Add `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 13887
diff changeset
797 (and message
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (if flag
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (message "Automatic file (de)compression is now ON.")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 (message "Automatic file (de)compression is now OFF.")))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 flag))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (defun jka-compr-build-file-regexp ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (concat
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 "\\("
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (mapconcat
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 'jka-compr-info-regexp
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 jka-compr-compression-info-list
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 "\\)\\|\\(")
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 "\\)"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (defun jka-compr-install ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 "Install jka-compr.
11296
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
816 This adds entries to `file-name-handler-alist' and `auto-mode-alist'
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
817 and `inhibit-first-line-modes-suffixes'."
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 (setq jka-compr-file-name-handler-entry
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 (cons (jka-compr-build-file-regexp) 'jka-compr-handler))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 (setq file-name-handler-alist (cons jka-compr-file-name-handler-entry
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 file-name-handler-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
825 (setq jka-compr-added-to-file-coding-system-alist nil)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
826
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 (mapcar
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (function (lambda (x)
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
829 ;; Don't do multibyte encoding on the compressed files.
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
830 (let ((elt (cons (jka-compr-info-regexp x)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
831 '(no-conversion . no-conversion))))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
832 (setq file-coding-system-alist
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
833 (cons elt file-coding-system-alist))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
834 (setq jka-compr-added-to-file-coding-system-alist
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
835 (cons elt jka-compr-added-to-file-coding-system-alist)))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
836
11179
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
837 (and (jka-compr-info-strip-extension x)
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
838 ;; Make entries in auto-mode-alist so that modes
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
839 ;; are chosen right according to the file names
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
840 ;; sans `.gz'.
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
841 (setq auto-mode-alist
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
842 (cons (list (jka-compr-info-regexp x)
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
843 nil 'jka-compr)
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
844 auto-mode-alist))
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
845 ;; Also add these regexps to
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
846 ;; inhibit-first-line-modes-suffixes, so that a
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
847 ;; -*- line in the first file of a compressed tar
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
848 ;; file doesn't override tar-mode.
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
849 (setq inhibit-first-line-modes-suffixes
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
850 (cons (jka-compr-info-regexp x)
9ff0cfb97106 (jka-compr-install): Add items to inhibit-first-line-modes-suffixes.
Richard M. Stallman <rms@gnu.org>
parents: 9493
diff changeset
851 inhibit-first-line-modes-suffixes)))))
9493
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
852 jka-compr-compression-info-list)
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
853 (setq auto-mode-alist
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
854 (append auto-mode-alist jka-compr-mode-alist-additions)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 (defun jka-compr-uninstall ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 "Uninstall jka-compr.
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
859 This removes the entries in `file-name-handler-alist' and `auto-mode-alist'
11296
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
860 and `inhibit-first-line-modes-suffixes' that were added
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
861 by `jka-compr-installed'."
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
862 ;; Delete from inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
863 ;; what jka-compr-install added.
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
864 (mapcar
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
865 (function (lambda (x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
866 (and (jka-compr-info-strip-extension x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
867 (setq inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
868 (delete (jka-compr-info-regexp x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
869 inhibit-first-line-modes-suffixes)))))
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
870 jka-compr-compression-info-list)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 (let* ((fnha (cons nil file-name-handler-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 (last fnha))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (if (eq (cdr (car (cdr last))) 'jka-compr-handler)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (setq last (cdr last))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 (setq file-name-handler-alist (cdr fnha)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (let* ((ama (cons nil auto-mode-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (last ama)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 entry)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (setq entry (car (cdr last)))
9493
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
888 (if (or (member entry jka-compr-mode-alist-additions)
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
889 (and (consp (cdr entry))
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
890 (eq (nth 2 entry) 'jka-compr)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (setq last (cdr last))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
894 (setq auto-mode-alist (cdr ama)))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
895
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
896 (let* ((ama (cons nil file-coding-system-alist))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
897 (last ama)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
898 entry)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
899
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
900 (while (cdr last)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
901 (setq entry (car (cdr last)))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
902 (if (member entry jka-compr-added-to-file-coding-system-alist)
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
903 (setcdr last (cdr (cdr last)))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
904 (setq last (cdr last))))
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
905
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
906 (setq file-coding-system-alist (cdr ama))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (defun jka-compr-installed-p ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 "Return non-nil if jka-compr is installed.
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
911 The return value is the entry in `file-name-handler-alist' for jka-compr."
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (let ((fnha file-name-handler-alist)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (installed nil))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (while (and fnha (not installed))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (and (eq (cdr (car fnha)) 'jka-compr-handler)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (setq installed (car fnha)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (setq fnha (cdr fnha)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 installed))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 ;;; Add the file I/O hook if it does not already exist.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 ;;; Make sure that jka-compr-file-name-handler-entry is eq to the
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 ;;; entry for jka-compr in file-name-handler-alist.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (and (jka-compr-installed-p)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (jka-compr-uninstall))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (jka-compr-install)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 (provide 'jka-compr)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 ;; jka-compr.el ends here.