annotate lisp/jka-compr.el @ 97528:184bb2071e3f

mail/: Add new (temporary) libaries for which to test Rmail/mbox such that Rmail/babyl is not affected. This creates a facility/feature called "pmail" (analagous to "rmail") that can be used independently from Rmail for testing purposes. The plan is to replace the "rmail" files eventually and remove "pmail" entirely at that point. In the interim, interested developers can use either Rmail or Pmail or both (which is not recommended for the casual User or the faint of heart).
author Paul Reilly <pmr@pajato.com>
date Mon, 18 Aug 2008 04:51:28 +0000
parents f77d335546ac
children d42aff5ca541
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
74442
b2e5081b9320 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 69163
diff changeset
3 ;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Author: jka@ece.cmu.edu (Jay K. Adams)
17976
852464ce5d6a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17441
diff changeset
7 ;; Maintainer: FSF
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; Keywords: data
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
10 ;; This file is part of GNU Emacs.
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93611
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93611
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93611
diff changeset
15 ;; (at your option) any later version.
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
16
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
17 ;; 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
18 ;; 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
19 ;; 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
20 ;; GNU General Public License for more details.
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
21
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93611
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
13514
0e46e8075a1d (auto-compression-mode): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 13337
diff changeset
24
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 34732
diff changeset
25 ;;; Commentary:
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
27 ;; This package implements low-level support for reading, writing,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
28 ;; 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
29 ;; 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
30 ;; 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
31 ;; 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
32 ;; 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
33 ;; with compressed files without modification.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
36 ;; INSTRUCTIONS:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
37 ;;
32497
447210134c3b Doc fix.
Miles Bader <miles@gnu.org>
parents: 32317
diff changeset
38 ;; To use jka-compr, invoke the command `auto-compression-mode' (which
447210134c3b Doc fix.
Miles Bader <miles@gnu.org>
parents: 32317
diff changeset
39 ;; see), or customize the variable of the same name. Its operation
447210134c3b Doc fix.
Miles Bader <miles@gnu.org>
parents: 32317
diff changeset
40 ;; should be transparent to the user (except for messages appearing when
447210134c3b Doc fix.
Miles Bader <miles@gnu.org>
parents: 32317
diff changeset
41 ;; a file is being compressed or uncompressed).
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
42 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
43 ;; 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
44 ;; customize jka-compr to work with other compression programs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
45 ;; 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
46 ;; Unix compress and gzip.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
47 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
48 ;; If you don't want messages about compressing and decompressing
75423
d03ddfe8401e (jka-compr-shell): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 75347
diff changeset
49 ;; to show up in the echo area, you can set the compress-msg and
d03ddfe8401e (jka-compr-shell): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 75347
diff changeset
50 ;; decompress-msg fields of the jka-compr-compression-info-list to
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
51 ;; nil.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
54 ;; APPLICATION NOTES:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
55 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
56 ;; crypt++
45720
c145c11ef3b3 Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 42461
diff changeset
57 ;; jka-compr can coexist with crypt++ if you take all the decompression
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
58 ;; 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
59 ;; 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
60 ;; 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
61 ;; decode encrypted compressed files--that is, files that have been
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
62 ;; compressed then encrypted (in that order). Theoretically, crypt++ and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
63 ;; 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
64 ;; 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
65 ;; file.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
66 ;;
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
69 ;; ACKNOWLEDGMENTS
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
70 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
71 ;; jka-compr is a V19 adaptation of jka-compr for V18 of Emacs. Many people
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
72 ;; have made helpful suggestions, reported bugs, and even fixed bugs in
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
73 ;; 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
74 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
75 ;; Jean-loup Gailly
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
76 ;; David Hughes
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
77 ;; Richard Pieri
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
78 ;; Daniel Quinlan
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
79 ;; Chris P. Ross
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
80 ;; Rick Sladkey
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
81 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
82 ;; 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
83 ;; Version 18 of Emacs.
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 ;; 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
86 ;; 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
87 ;; 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
88 ;; probably got some ideas from it.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13900
diff changeset
89 ;;
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;;; Code:
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
93 (require 'jka-cmpr-hook)
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
94
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
95 (defcustom jka-compr-shell "sh"
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 "*Shell to be used for calling compression programs.
75423
d03ddfe8401e (jka-compr-shell): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 75347
diff changeset
97 NOTE: Not used in MS-DOS and Windows systems."
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
98 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
99 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
101 (defvar jka-compr-use-shell
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
102 (not (memq system-type '(ms-dos windows-nt))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
104 (defvar jka-compr-really-do-compress nil
60781
4dec7a239cfa (jka-compr-really-do-compress): Make variable buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 54521
diff changeset
105 "Non-nil in a buffer whose visited file was uncompressed on visiting it.
4dec7a239cfa (jka-compr-really-do-compress): Make variable buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 54521
diff changeset
106 This means compress the data on writing the file, even if the
4dec7a239cfa (jka-compr-really-do-compress): Make variable buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 54521
diff changeset
107 data appears to be compressed already.")
4dec7a239cfa (jka-compr-really-do-compress): Make variable buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 54521
diff changeset
108 (make-variable-buffer-local 'jka-compr-really-do-compress)
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
109 (put 'jka-compr-really-do-compress 'permanent-local t)
7617
edc853e14f7b (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars.
Richard M. Stallman <rms@gnu.org>
parents: 7616
diff changeset
110
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 (put 'compression-error 'error-conditions '(compression-error file-error error))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
11635
b56f6afa16ec (jka-compr-write-region): Handle the append
Richard M. Stallman <rms@gnu.org>
parents: 11621
diff changeset
115 (defvar jka-compr-acceptable-retval-list '(0 2 141))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 (defun jka-compr-error (prog args infile message &optional errfile)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
120 (let ((errbuf (get-buffer-create " *jka-compr-error*")))
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
121 (with-current-buffer errbuf
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
122 (widen) (erase-buffer)
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
123 (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
124 prog
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
125 (mapconcat 'identity args " ")
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
126 infile))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
128 (and errfile
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
129 (insert-file-contents errfile)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (display-buffer errbuf))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
132 (signal 'compression-error
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
133 (list "Opening input file" (format "error %s" message) infile)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
134
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
135
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
136 (defcustom jka-compr-dd-program "/bin/dd"
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
137 "How to invoke `dd'."
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
138 :type 'string
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
139 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
142 (defvar jka-compr-dd-blocksize 256)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 (defun jka-compr-partial-uncompress (prog message args infile beg len)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 "Call program PROG with ARGS args taking input from INFILE.
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 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
148 to keep: LEN chars starting BEG chars from the beginning."
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
149 (let ((start (point))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
150 (prefix beg))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
151 (if (and jka-compr-use-shell jka-compr-dd-program)
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
152 ;; Put the uncompression output through dd
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
153 ;; to discard the part we don't want.
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
154 (let ((skip (/ beg jka-compr-dd-blocksize))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
155 (err-file (jka-compr-make-temp-name))
75494
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
156 ;; call-process barfs if default-directory is inaccessible.
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
157 (default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
158 (if (and default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
159 (file-accessible-directory-p default-directory))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
160 default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
161 (file-name-directory infile)))
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
162 count)
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
163 ;; Update PREFIX based on the text that we won't read in.
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
164 (setq prefix (- beg (* skip jka-compr-dd-blocksize))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
165 count (and len (1+ (/ (+ len prefix) jka-compr-dd-blocksize))))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
166 (unwind-protect
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
167 (or (memq (call-process
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
168 jka-compr-shell infile t nil "-c"
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
169 (format
42231
054cf5ce349b (jka-compr-partial-uncompress): Use null-device instead of a literal
Eli Zaretskii <eliz@gnu.org>
parents: 41102
diff changeset
170 "%s %s 2> %s | %s bs=%d skip=%d %s 2> %s"
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
171 prog
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
172 (mapconcat 'identity args " ")
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
173 err-file
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
174 jka-compr-dd-program
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
175 jka-compr-dd-blocksize
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
176 skip
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
177 ;; dd seems to be unreliable about
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
178 ;; providing the last block. So, always
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
179 ;; read one more than you think you need.
42231
054cf5ce349b (jka-compr-partial-uncompress): Use null-device instead of a literal
Eli Zaretskii <eliz@gnu.org>
parents: 41102
diff changeset
180 (if count (format "count=%d" (1+ count)) "")
054cf5ce349b (jka-compr-partial-uncompress): Use null-device instead of a literal
Eli Zaretskii <eliz@gnu.org>
parents: 41102
diff changeset
181 null-device))
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
182 jka-compr-acceptable-retval-list)
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
183 (jka-compr-error prog args infile message err-file))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
184 (jka-compr-delete-temp-file err-file)))
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
185 ;; Run the uncompression program directly.
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
186 ;; We get the whole file and must delete what we don't want.
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
187 (jka-compr-call-process prog message infile t nil args))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
189 ;; Delete the stuff after what we want, if there is any.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (and
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
191 len
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
192 (< (+ start prefix len) (point))
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
193 (delete-region (+ start prefix len) (point)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
195 ;; Delete the stuff before what we want.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 (delete-region start (+ start prefix))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (defun jka-compr-call-process (prog message infile output temp args)
75494
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
200 ;; call-process barfs if default-directory is inaccessible.
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
201 (let ((default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
202 (if (and default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
203 (file-accessible-directory-p default-directory))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
204 default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
205 (file-name-directory infile))))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
206 (if jka-compr-use-shell
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
207 (let ((err-file (jka-compr-make-temp-name))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
208 (coding-system-for-read (or coding-system-for-read 'undecided))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
209 (coding-system-for-write 'no-conversion))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
210 (unwind-protect
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
211 (or (memq
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
212 (call-process jka-compr-shell infile
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
213 (if (stringp output) nil output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
214 nil
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
215 "-c"
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
216 (format "%s %s 2> %s %s"
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
217 prog
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
218 (mapconcat 'identity args " ")
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
219 err-file
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
220 (if (stringp output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
221 (concat "> " output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
222 "")))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
223 jka-compr-acceptable-retval-list)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
224 (jka-compr-error prog args infile message err-file))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
225 (jka-compr-delete-temp-file err-file)))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
226 (or (eq 0
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
227 (apply 'call-process
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
228 prog infile (if (stringp output) temp output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
229 nil args))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
230 (jka-compr-error prog args infile message))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
231 (and (stringp output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
232 (with-current-buffer temp
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
233 (write-region (point-min) (point-max) output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
234 (erase-buffer))))))
6002
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
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
237 ;; Support for temp files. Much of this was inspired if not lifted
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
238 ;; from ange-ftp.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
240 (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
241 (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
242 "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
243 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
244 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
245 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (defun jka-compr-make-temp-name (&optional local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 "This routine will return the name of a new file."
26039
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25285
diff changeset
249 (make-temp-file jka-compr-temp-name-template))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250
26039
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25285
diff changeset
251 (defalias 'jka-compr-delete-temp-file 'delete-file)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (defun jka-compr-write-region (start end file &optional append visit)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 (visit-file (if (stringp visit) (expand-file-name visit) filename))
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
257 (info (jka-compr-get-compression-info visit-file))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
258 (magic (and info (jka-compr-info-file-magic-bytes info))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
260 ;; If we uncompressed this file when visiting it,
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
261 ;; then recompress it when writing it
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
262 ;; even if the contents look compressed already.
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
263 (if (and jka-compr-really-do-compress
95366
52e3cee99f90 * progmodes/flymake.el (flymake-save-buffer-in-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
264 (or (null start)
52e3cee99f90 * progmodes/flymake.el (flymake-save-buffer-in-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
265 (= (- end start) (buffer-size))))
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
266 (setq magic nil))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
268 (if (and info
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
269 ;; If the contents to be written out
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
270 ;; are properly compressed already,
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
271 ;; don't try to compress them over again.
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
272 (not (and magic
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
273 (equal (if (stringp start)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
274 (substring start 0 (min (length start)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
275 (length magic)))
95368
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
276 (let* ((from (or start (point-min)))
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
277 (to (min (or end (point-max))
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
278 (+ from (length magic)))))
95366
52e3cee99f90 * progmodes/flymake.el (flymake-save-buffer-in-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
279 (buffer-substring from to)))
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
280 magic))))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
281 (let ((can-append (jka-compr-info-can-append info))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
282 (compress-program (jka-compr-info-compress-program info))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
283 (compress-message (jka-compr-info-compress-message info))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
284 (compress-args (jka-compr-info-compress-args info))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
285 (base-name (file-name-nondirectory visit-file))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
286 temp-file temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
287 ;; we need to leave `last-coding-system-used' set to its
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
288 ;; value after calling write-region the first time, so
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
289 ;; that `basic-save-buffer' sees the right value.
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
290 (coding-system-used last-coding-system-used))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291
54521
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
292 (or compress-program
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
293 (error "No compression program defined"))
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
294
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
295 (setq temp-buffer (get-buffer-create " *jka-compr-wr-temp*"))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
296 (with-current-buffer temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
297 (widen) (erase-buffer))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
299 (if (and append
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
300 (not can-append)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
301 (file-exists-p filename))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
303 (let* ((local-copy (file-local-copy filename))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
304 (local-file (or local-copy filename)))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
305
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
306 (setq temp-file local-file))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
307
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
308 (setq temp-file (jka-compr-make-temp-name)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
310 (and
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
311 compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
312 (message "%s %s..." compress-message base-name))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
313
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
314 (jka-compr-run-real-handler 'write-region
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
315 (list start end temp-file t 'dont))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
316 ;; save value used by the real write-region
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
317 (setq coding-system-used last-coding-system-used)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
319 ;; Here we must read the output of compress program as is
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
320 ;; without any code conversion.
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
321 (let ((coding-system-for-read 'no-conversion))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
322 (jka-compr-call-process compress-program
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
323 (concat compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
324 " " base-name)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
325 temp-file
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
326 temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
327 nil
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
328 compress-args))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
330 (with-current-buffer temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
331 (let ((coding-system-for-write 'no-conversion))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
332 (if (memq system-type '(ms-dos windows-nt))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
333 (setq buffer-file-type t) )
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
334 (jka-compr-run-real-handler 'write-region
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
335 (list (point-min) (point-max)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
336 filename
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
337 (and append can-append) 'dont))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
338 (erase-buffer)) )
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
340 (jka-compr-delete-temp-file temp-file)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
341
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
342 (and
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
343 compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
344 (message "%s %s...done" compress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
346 (cond
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
347 ((eq visit t)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
348 (setq buffer-file-name filename)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
349 (setq jka-compr-really-do-compress t)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
350 (set-visited-file-modtime))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
351 ((stringp visit)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
352 (setq buffer-file-name visit)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
353 (let ((buffer-file-name filename))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
354 (set-visited-file-modtime))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
356 (and (or (eq visit t)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
357 (eq visit nil)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
358 (stringp visit))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
359 (message "Wrote %s" visit-file))
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
360
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
361 ;; ensure `last-coding-system-used' has an appropriate value
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
362 (setq last-coding-system-used coding-system-used)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
363
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
364 nil)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
365
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
366 (jka-compr-run-real-handler 'write-region
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
367 (list start end filename append visit)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
6218
f4d5338c2142 (jka-compr-insert-file-contents): Handle 5th arg.
Richard M. Stallman <rms@gnu.org>
parents: 6041
diff changeset
370 (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
371 (barf-if-buffer-read-only)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (and (or beg end)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 (error "Attempt to visit less than an entire file"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
380 (if (not info)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
381
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
382 (jka-compr-run-real-handler 'insert-file-contents
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
383 (list file visit beg end replace))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
385 (let ((uncompress-message (jka-compr-info-uncompress-message info))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
386 (uncompress-program (jka-compr-info-uncompress-program info))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
387 (uncompress-args (jka-compr-info-uncompress-args info))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
388 (base-name (file-name-nondirectory filename))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
389 (notfound nil)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
390 (local-copy
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
391 (jka-compr-run-real-handler 'file-local-copy (list filename)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
392 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
393 size start)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
395 (setq local-file (or local-copy filename))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
397 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
398 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
399 (setq buffer-file-name filename))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
400
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
401 (unwind-protect ; to make sure local-copy gets deleted
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
403 (progn
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
404
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
405 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
406 uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
407 (message "%s %s..." uncompress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
409 (condition-case error-code
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
411 (let ((coding-system-for-read 'no-conversion))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
412 (if replace
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
413 (goto-char (point-min)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
414 (setq start (point))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
415 (if (or beg end)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
416 (jka-compr-partial-uncompress uncompress-program
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
417 (concat uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
418 " " base-name)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
419 uncompress-args
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
420 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
421 (or beg 0)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
422 (if (and beg end)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
423 (- end beg)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
424 end))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
425 ;; If visiting, bind off buffer-file-name so that
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
426 ;; file-locking will not ask whether we should
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
427 ;; really edit the buffer.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
428 (let ((buffer-file-name
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
429 (if visit nil buffer-file-name)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
430 (jka-compr-call-process uncompress-program
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
431 (concat uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
432 " " base-name)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
433 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
434 t
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
435 nil
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
436 uncompress-args)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
437 (setq size (- (point) start))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
438 (if replace
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
439 (delete-region (point) (point-max)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
440 (goto-char start))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
441 (error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
442 ;; If the file we wanted to uncompress does not exist,
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
443 ;; handle that according to VISIT as `insert-file-contents'
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
444 ;; would, maybe signaling the same error it normally would.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
445 (if (and (eq (car error-code) 'file-error)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
446 (eq (nth 3 error-code) local-file))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
447 (if visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
448 (setq notfound error-code)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
449 (signal 'file-error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
450 (cons "Opening input file"
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
451 (nthcdr 2 error-code))))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
452 ;; If the uncompression program can't be found,
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
453 ;; signal that as a non-file error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
454 ;; so that find-file-noselect-1 won't handle it.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
455 (if (and (eq (car error-code) 'file-error)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
456 (equal (cadr error-code) "Searching for program"))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
457 (error "Uncompression program `%s' not found"
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
458 (nth 3 error-code)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
459 (signal (car error-code) (cdr error-code))))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
461 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
462 local-copy
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
463 (file-exists-p local-copy)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
464 (delete-file local-copy)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
466 (unless notfound
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
467 (decode-coding-inserted-region
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
468 (point) (+ (point) size)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
469 (jka-compr-byte-compiler-base-file-name file)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
470 visit beg end replace))
49377
e5099d153f94 (jka-compr-insert-file-contents): Read a process
Kenichi Handa <handa@m17n.org>
parents: 47180
diff changeset
471
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
472 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
473 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
474 (progn
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
475 (unlock-buffer)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
476 (setq buffer-file-name filename)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
477 (setq jka-compr-really-do-compress t)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
478 (set-visited-file-modtime)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
479
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
480 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
481 uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
482 (message "%s %s...done" uncompress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
484 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
485 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
486 notfound
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
487 (signal 'file-error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
488 (cons "Opening input file" (nth 2 notfound))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
490 ;; This is done in insert-file-contents after we return.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
491 ;; That is a little weird, but better to go along with it now
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
492 ;; than to change it now.
22484
661650f543ee (jka-compr-insert-file-contents): Don't run
Richard M. Stallman <rms@gnu.org>
parents: 22360
diff changeset
493
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
494 ;; ;; Run the functions that insert-file-contents would.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
495 ;; (let ((p after-insert-file-functions)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
496 ;; (insval size))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
497 ;; (while p
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
498 ;; (setq insval (funcall (car p) size))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
499 ;; (if insval
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
500 ;; (progn
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
501 ;; (or (integerp insval)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
502 ;; (signal 'wrong-type-argument
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
503 ;; (list 'integerp insval)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
504 ;; (setq size insval)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
505 ;; (setq p (cdr p))))
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
506
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
507 (or (jka-compr-info-compress-program info)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
508 (message "You can't save this buffer because compression program is not defined"))
54521
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
509
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
510 (list filename size)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (defun jka-compr-file-local-copy (file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (if info
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (let ((uncompress-message (jka-compr-info-uncompress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (uncompress-program (jka-compr-info-uncompress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 (uncompress-args (jka-compr-info-uncompress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (base-name (file-name-nondirectory filename))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
523 (local-copy
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
524 (jka-compr-run-real-handler 'file-local-copy (list filename)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (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
526 (temp-buffer (get-buffer-create " *jka-compr-flc-temp*"))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 local-file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (setq local-file (or local-copy filename))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
533 (with-current-buffer temp-buffer
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
534
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (message "%s %s..." uncompress-message base-name))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
538
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
539 ;; Here we must read the output of uncompress program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
540 ;; and write it to TEMP-FILE without any code
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
541 ;; conversion. An appropriate code conversion (if
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
542 ;; necessary) is done by the later I/O operation
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
543 ;; (e.g. load).
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
544 (let ((coding-system-for-read 'no-conversion)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
545 (coding-system-for-write 'no-conversion))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
547 (jka-compr-call-process uncompress-program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
548 (concat uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
549 " " base-name)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
550 local-file
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
551 t
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
552 nil
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
553 uncompress-args)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
555 (and
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
556 uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
557 (message "%s %s...done" uncompress-message base-name))
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
558
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
559 (write-region
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
560 (point-min) (point-max) temp-file nil 'dont)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 local-copy
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (file-exists-p local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 (delete-file local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (kill-buffer temp-buffer))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 temp-file)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
570
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
571 (jka-compr-run-real-handler 'file-local-copy (list filename)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
574 ;; Support for loading compressed files.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (defun jka-compr-load (file &optional noerror nomessage nosuffix)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 "Documented as original."
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (let* ((local-copy (jka-compr-file-local-copy file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (load-file (or local-copy file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
583 (let (inhibit-file-name-operation
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
584 inhibit-file-name-handlers)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (or nomessage
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 (message "Loading %s..." file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587
12758
a285eaa710ac (jka-compr-load): Bind load-force-doc-strings.
Richard M. Stallman <rms@gnu.org>
parents: 11635
diff changeset
588 (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
589 (load load-file noerror t t))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (or nomessage
27512
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
591 (message "Loading %s...done." file))
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
592 ;; Fix up the load history to point at the right library.
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
593 (let ((l (assoc load-file load-history)))
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
594 ;; Remove .gz and .elc?.
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
595 (while (file-name-extension file)
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
596 (setq file (file-name-sans-extension file)))
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
597 (setcar l file)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (jka-compr-delete-temp-file local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 t))
12922
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
602
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
603 (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
604 (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
605 (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
606 (save-match-data
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
607 (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
608 file)))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
609
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
610 (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
611 (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
612 (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
613 (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
614 (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
615 'jka-compr-byte-compiler-base-file-name)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616
61946
982afd92d8bb Many functions and vars moved to jka-compr-hook.el.
Richard M. Stallman <rms@gnu.org>
parents: 61601
diff changeset
617 ;;;###autoload
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
618 (defvar jka-compr-inhibit nil
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
619 "Non-nil means inhibit automatic uncompression temporarily.
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
620 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
621 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
622
61946
982afd92d8bb Many functions and vars moved to jka-compr-hook.el.
Richard M. Stallman <rms@gnu.org>
parents: 61601
diff changeset
623 ;;;###autoload
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defun jka-compr-handler (operation &rest args)
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
625 (save-match-data
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
626 (let ((jka-op (get operation 'jka-compr)))
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
627 (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
628 (apply jka-op args)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
629 (jka-compr-run-real-handler operation args)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
631 ;; If we are given an operation that we don't handle,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
632 ;; call the Emacs primitive for that operation,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
633 ;; and manipulate the inhibit variables
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
634 ;; to prevent the primitive from calling our handler again.
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
635 (defun jka-compr-run-real-handler (operation args)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
636 (let ((inhibit-file-name-handlers
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
637 (cons 'jka-compr-handler
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
638 (and (eq inhibit-file-name-operation operation)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
639 inhibit-file-name-handlers)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
640 (inhibit-file-name-operation operation))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
641 (apply operation args)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
642
62108
5b31557e355c (jka-compr-uninstall): Add autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents: 61946
diff changeset
643 ;;;###autoload
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (defun jka-compr-uninstall ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 "Uninstall jka-compr.
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
646 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
647 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
648 by `jka-compr-installed'."
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
649 ;; Delete from inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
650 ;; what jka-compr-install added.
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
651 (mapc
11296
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
652 (function (lambda (x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
653 (and (jka-compr-info-strip-extension x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
654 (setq inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
655 (delete (jka-compr-info-regexp x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
656 inhibit-first-line-modes-suffixes)))))
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
657 jka-compr-compression-info-list--internal)
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 (let* ((fnha (cons nil file-name-handler-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (last fnha))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (if (eq (cdr (car (cdr last))) 'jka-compr-handler)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (setq last (cdr last))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (setq file-name-handler-alist (cdr fnha)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (let* ((ama (cons nil auto-mode-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (last ama)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 entry)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (setq entry (car (cdr last)))
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
675 (if (or (member entry jka-compr-mode-alist-additions--internal)
9493
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
676 (and (consp (cdr entry))
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
677 (eq (nth 2 entry) 'jka-compr)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (setq last (cdr last))))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
680
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
681 (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
682
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
683 (while jka-compr-added-to-file-coding-system-alist
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
684 (setq file-coding-system-alist
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
685 (delq (car (member (pop jka-compr-added-to-file-coding-system-alist)
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
686 file-coding-system-alist))
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
687 file-coding-system-alist)))
39829
79ed34b0c0df (jka-compr-load-suffixes): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
688
79ed34b0c0df (jka-compr-load-suffixes): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
689 ;; Remove the suffixes that were added by jka-compr.
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
690 (dolist (suff jka-compr-load-suffixes--internal)
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
691 (setq load-file-rep-suffixes (delete suff load-file-rep-suffixes)))
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
692
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
693 (setq jka-compr-compression-info-list--internal nil
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
694 jka-compr-mode-alist-additions--internal nil
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
695 jka-compr-load-suffixes--internal nil))
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 (provide 'jka-compr)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
699 ;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 34732
diff changeset
700 ;;; jka-compr.el ends here