annotate lisp/jka-compr.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 511da81b16c5
children 417b1e4d63cd
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,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 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"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 95368
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))
108806
511da81b16c5 Change delete-by-moving-to-trash so Lisp calls explicitly request trashing.
Chong Yidong <cyd@stupidchicken.com>
parents: 108223
diff changeset
184 (delete-file err-file)))
108183
b67d7273ec18 Avoid using trash for certain temp files (Bug#6070).
Chong Yidong <cyd@stupidchicken.com>
parents: 106951
diff changeset
185
40782
3a4d800ced48 (jka-compr-partial-uncompress): Support an alternative of not using dd.
Richard M. Stallman <rms@gnu.org>
parents: 39829
diff changeset
186 ;; 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
187 ;; 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
188 (jka-compr-call-process prog message infile t nil args))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
190 ;; Delete the stuff after what we want, if there is any.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (and
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
192 len
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
193 (< (+ start prefix len) (point))
6041
649926e9c1a8 (jka-compr-partial-uncompress): Make dd give you
Richard M. Stallman <rms@gnu.org>
parents: 6002
diff changeset
194 (delete-region (+ start prefix len) (point)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195
8065
31eb7a0e2763 (jka-compr-partial-uncompress): Handle the case where
Richard M. Stallman <rms@gnu.org>
parents: 7976
diff changeset
196 ;; Delete the stuff before what we want.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (delete-region start (+ start prefix))))
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
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (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
201 ;; 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
202 (let ((default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
203 (if (and default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
204 (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
205 default-directory
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
206 (file-name-directory infile))))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
207 (if jka-compr-use-shell
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
208 (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
209 (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
210 (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
211 (unwind-protect
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
212 (or (memq
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
213 (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
214 (if (stringp output) nil output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
215 nil
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
216 "-c"
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
217 (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
218 prog
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
219 (mapconcat 'identity args " ")
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
220 err-file
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
221 (if (stringp output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
222 (concat "> " output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
223 "")))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
224 jka-compr-acceptable-retval-list)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
225 (jka-compr-error prog args infile message err-file))
108806
511da81b16c5 Change delete-by-moving-to-trash so Lisp calls explicitly request trashing.
Chong Yidong <cyd@stupidchicken.com>
parents: 108223
diff changeset
226 (delete-file err-file)))
75494
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
227 (or (eq 0
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
228 (apply 'call-process
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
229 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
230 nil args))
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
231 (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
232 (and (stringp output)
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
233 (with-current-buffer temp
04d75deb3a31 (jka-compr-partial-uncompress, jka-compr-call-process): Rebind
Chong Yidong <cyd@stupidchicken.com>
parents: 75423
diff changeset
234 (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
235 (erase-buffer))))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
238 ;; 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
239 ;; from ange-ftp.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
241 (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
242 (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
243 "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
244 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
245 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16940
diff changeset
246 :group 'jka-compr)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (defun jka-compr-make-temp-name (&optional local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 "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
250 (make-temp-file jka-compr-temp-name-template))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 (defun jka-compr-write-region (start end file &optional append visit)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (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
255 (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
256 (magic (and info (jka-compr-info-file-magic-bytes info))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
258 ;; 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
259 ;; 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
260 ;; 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
261 (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
262 (or (null start)
52e3cee99f90 * progmodes/flymake.el (flymake-save-buffer-in-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
263 (= (- end start) (buffer-size))))
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
264 (setq magic nil))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
266 (if (and info
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
267 ;; 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
268 ;; are properly compressed already,
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
269 ;; 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
270 (not (and magic
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
271 (equal (if (stringp start)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
272 (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
273 (length magic)))
95368
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
274 (let* ((from (or start (point-min)))
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
275 (to (min (or end (point-max))
f77d335546ac (jka-compr-write-region): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95366
diff changeset
276 (+ from (length magic)))))
95366
52e3cee99f90 * progmodes/flymake.el (flymake-save-buffer-in-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
277 (buffer-substring from to)))
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
278 magic))))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
279 (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
280 (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
281 (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
282 (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
283 (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
284 temp-file temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
285 ;; 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
286 ;; 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
287 ;; 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
288 (coding-system-used last-coding-system-used))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
54521
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
290 (or compress-program
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
291 (error "No compression program defined"))
36922d8fd700 (jka-compr-compression-info-list): Add tbz and dz.
Juri Linkov <juri@jurta.org>
parents: 53477
diff changeset
292
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
293 (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
294 (with-current-buffer temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
295 (widen) (erase-buffer))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
297 (if (and append
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
298 (not can-append)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
299 (file-exists-p filename))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
301 (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
302 (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
303
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
304 (setq temp-file local-file))
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 (jka-compr-make-temp-name)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
308 (and
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
309 compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
310 (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
311
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
312 (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
313 (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
314 ;; 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
315 (setq coding-system-used last-coding-system-used)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
317 ;; 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
318 ;; without any code conversion.
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
319 (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
320 (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
321 (concat compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
322 " " base-name)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
323 temp-file
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
324 temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
325 nil
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
326 compress-args))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
328 (with-current-buffer temp-buffer
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
329 (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
330 (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
331 (setq buffer-file-type t) )
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
332 (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
333 (list (point-min) (point-max)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
334 filename
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
335 (and append can-append) 'dont))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
336 (erase-buffer)) )
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
108806
511da81b16c5 Change delete-by-moving-to-trash so Lisp calls explicitly request trashing.
Chong Yidong <cyd@stupidchicken.com>
parents: 108223
diff changeset
338 (delete-file temp-file)
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
339
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
340 (and
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
341 compress-message
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
342 (message "%s %s...done" compress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
344 (cond
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
345 ((eq visit t)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
346 (setq buffer-file-name filename)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
347 (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
348 (set-visited-file-modtime))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
349 ((stringp visit)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
350 (setq buffer-file-name visit)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
351 (let ((buffer-file-name filename))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
352 (set-visited-file-modtime))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
354 (and (or (eq visit t)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
355 (eq visit nil)
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
356 (stringp visit))
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
357 (message "Wrote %s" visit-file))
22360
09dbe38a603f (jka-compr-write-region): Ensure
Karl Heuer <kwzh@gnu.org>
parents: 22194
diff changeset
358
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
359 ;; 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
360 (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
361
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
362 nil)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
363
26987
af30e0897839 (jka-compr-info-file-magic-bytes): New function.
Richard M. Stallman <rms@gnu.org>
parents: 26039
diff changeset
364 (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
365 (list start end filename append visit)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367
6218
f4d5338c2142 (jka-compr-insert-file-contents): Handle 5th arg.
Richard M. Stallman <rms@gnu.org>
parents: 6041
diff changeset
368 (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
369 (barf-if-buffer-read-only)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (and (or beg end)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 visit
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (error "Attempt to visit less than an entire file"))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
378 (if (not info)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
379
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
380 (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
381 (list file visit beg end replace))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
383 (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
384 (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
385 (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
386 (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
387 (notfound nil)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
388 (local-copy
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
389 (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
390 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
391 size start)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
393 (setq local-file (or local-copy filename))
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 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
396 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
397 (setq buffer-file-name filename))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
398
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
399 (unwind-protect ; to make sure local-copy gets deleted
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
401 (progn
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
402
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
403 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
404 uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
405 (message "%s %s..." uncompress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
407 (condition-case error-code
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 (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
410 (if replace
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
411 (goto-char (point-min)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
412 (setq start (point))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
413 (if (or beg end)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
414 (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
415 (concat uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
416 " " base-name)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
417 uncompress-args
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
418 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
419 (or beg 0)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
420 (if (and beg end)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
421 (- end beg)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
422 end))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
423 ;; 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
424 ;; 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
425 ;; really edit the buffer.
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
426 (let ((buffer-file-name
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
427 (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
428 (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
429 (concat uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
430 " " base-name)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
431 local-file
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
432 t
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
433 nil
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
434 uncompress-args)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
435 (setq size (- (point) start))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
436 (if replace
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
437 (delete-region (point) (point-max)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
438 (goto-char start))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
439 (error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
440 ;; 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
441 ;; 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
442 ;; 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
443 (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
444 (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
445 (if visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
446 (setq notfound error-code)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
447 (signal 'file-error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
448 (cons "Opening input file"
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
449 (nthcdr 2 error-code))))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
450 ;; 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
451 ;; 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
452 ;; 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
453 (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
454 (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
455 (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
456 (nth 3 error-code)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
457 (signal (car error-code) (cdr error-code))))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
459 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
460 local-copy
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
461 (file-exists-p local-copy)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
462 (delete-file local-copy)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
464 (unless notfound
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
465 (decode-coding-inserted-region
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
466 (point) (+ (point) size)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
467 (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
468 visit beg end replace))
49377
e5099d153f94 (jka-compr-insert-file-contents): Read a process
Kenichi Handa <handa@m17n.org>
parents: 47180
diff changeset
469
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
470 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
471 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
472 (progn
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
473 (unlock-buffer)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
474 (setq buffer-file-name filename)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
475 (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
476 (set-visited-file-modtime)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
477
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
478 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
479 uncompress-message
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
480 (message "%s %s...done" uncompress-message base-name))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
482 (and
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
483 visit
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
484 notfound
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
485 (signal 'file-error
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
486 (cons "Opening input file" (nth 2 notfound))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
488 ;; 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
489 ;; 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
490 ;; 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
491
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
492 ;; ;; 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
493 ;; (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
494 ;; (insval size))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
495 ;; (while p
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
496 ;; (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
497 ;; (if insval
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
498 ;; (progn
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
499 ;; (or (integerp insval)
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
500 ;; (signal 'wrong-type-argument
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
501 ;; (list 'integerp insval)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
502 ;; (setq size insval)))
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
503 ;; (setq p (cdr p))))
8774
ade4b542a74c (jka-compr-compression-info-list): Expand regular
Richard M. Stallman <rms@gnu.org>
parents: 8593
diff changeset
504
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
505 (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
506 (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
507
93611
014868cc0301 (jka-compr-insert-file-contents): Reduce indentation slightly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
508 (list filename size)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 (defun jka-compr-file-local-copy (file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (let* ((filename (expand-file-name file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (info (jka-compr-get-compression-info filename)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (if info
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 (let ((uncompress-message (jka-compr-info-uncompress-message info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 (uncompress-program (jka-compr-info-uncompress-program info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (uncompress-args (jka-compr-info-uncompress-args info))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (base-name (file-name-nondirectory filename))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
521 (local-copy
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
522 (jka-compr-run-real-handler 'file-local-copy (list filename)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 (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
524 (temp-buffer (get-buffer-create " *jka-compr-flc-temp*"))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 local-file)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (setq local-file (or local-copy filename))
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 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
16940
6d680b18a47b (jka-compr-error): Use with-current-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16630
diff changeset
531 (with-current-buffer temp-buffer
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
532
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 uncompress-message
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (message "%s %s..." uncompress-message base-name))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
536
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
537 ;; Here we must read the output of uncompress program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
538 ;; and write it to TEMP-FILE without any code
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
539 ;; conversion. An appropriate code conversion (if
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
540 ;; necessary) is done by the later I/O operation
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
541 ;; (e.g. load).
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
542 (let ((coding-system-for-read 'no-conversion)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
543 (coding-system-for-write 'no-conversion))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
545 (jka-compr-call-process uncompress-program
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
546 (concat uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
547 " " base-name)
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
548 local-file
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
549 t
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
550 nil
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
551 uncompress-args)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552
18906
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
553 (and
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
554 uncompress-message
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
555 (message "%s %s...done" uncompress-message base-name))
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
556
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
557 (write-region
67642fb78fc4 Fix previous changes.
Kenichi Handa <handa@m17n.org>
parents: 18879
diff changeset
558 (point-min) (point-max) temp-file nil 'dont)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (and
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 local-copy
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (file-exists-p local-copy)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (delete-file local-copy))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 (kill-buffer temp-buffer))
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 temp-file)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
568
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
569 (jka-compr-run-real-handler 'file-local-copy (list filename)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
572 ;; Support for loading compressed files.
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (defun jka-compr-load (file &optional noerror nomessage nosuffix)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 "Documented as original."
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (let* ((local-copy (jka-compr-file-local-copy file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 (load-file (or local-copy file)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (unwind-protect
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
581 (let (inhibit-file-name-operation
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
582 inhibit-file-name-handlers)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (or nomessage
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (message "Loading %s..." file))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585
12758
a285eaa710ac (jka-compr-load): Bind load-force-doc-strings.
Richard M. Stallman <rms@gnu.org>
parents: 11635
diff changeset
586 (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
587 (load load-file noerror t t))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (or nomessage
27512
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
589 (message "Loading %s...done." file))
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
590 ;; Fix up the load history to point at the right library.
106951
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
591 (let ((l (or (assoc load-file load-history)
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
592 ;; On MS-Windows, if load-file is in
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
593 ;; temporary-file-directory, it will look like
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
594 ;; "c:/DOCUME~1/USER/LOCALS~1/foo", whereas
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
595 ;; readevalloop will record its truename in
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
596 ;; load-history. Therefore try truename if the
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
597 ;; original name is not in load-history.
89c890863220 Fix bug #5447, whereby loading C:/foo.el.gz on MS-Windows would fail.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
598 (assoc (file-truename load-file) load-history))))
27512
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
599 ;; Remove .gz and .elc?.
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
600 (while (file-name-extension file)
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
601 (setq file (file-name-sans-extension file)))
b7020186895e (jka-compr-load): Fix up load-history.
Dave Love <fx@gnu.org>
parents: 26987
diff changeset
602 (setcar l file)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603
108223
261591829d04 Add optional arg to delete-file to force deletion (Bug#6070).
Chong Yidong <cyd@stupidchicken.com>
parents: 108183
diff changeset
604 (delete-file local-copy))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 t))
12922
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
607
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
608 (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
609 (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
610 (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
611 (save-match-data
e171a85fd6b0 (jka-compr-byte-compiler-base-file-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12758
diff changeset
612 (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
613 file)))
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
614
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
615 (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
616 (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
617 (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
618 (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
619 (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
620 'jka-compr-byte-compiler-base-file-name)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621
61946
982afd92d8bb Many functions and vars moved to jka-compr-hook.el.
Richard M. Stallman <rms@gnu.org>
parents: 61601
diff changeset
622 ;;;###autoload
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
623 (defvar jka-compr-inhibit nil
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
624 "Non-nil means inhibit automatic uncompression temporarily.
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
625 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
626 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
627
61946
982afd92d8bb Many functions and vars moved to jka-compr-hook.el.
Richard M. Stallman <rms@gnu.org>
parents: 61601
diff changeset
628 ;;;###autoload
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (defun jka-compr-handler (operation &rest args)
7976
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
630 (save-match-data
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
631 (let ((jka-op (get operation 'jka-compr)))
20132
b691f68b0757 (jka-compr-inhibit): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 19004
diff changeset
632 (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
633 (apply jka-op args)
b72b84744a85 Use plists to record handlers.
Richard M. Stallman <rms@gnu.org>
parents: 7617
diff changeset
634 (jka-compr-run-real-handler operation args)))))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
636 ;; If we are given an operation that we don't handle,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
637 ;; call the Emacs primitive for that operation,
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
638 ;; and manipulate the inhibit variables
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
639 ;; to prevent the primitive from calling our handler again.
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
640 (defun jka-compr-run-real-handler (operation args)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
641 (let ((inhibit-file-name-handlers
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
642 (cons 'jka-compr-handler
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
643 (and (eq inhibit-file-name-operation operation)
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
644 inhibit-file-name-handlers)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
645 (inhibit-file-name-operation operation))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
646 (apply operation args)))
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
647
62108
5b31557e355c (jka-compr-uninstall): Add autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents: 61946
diff changeset
648 ;;;###autoload
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (defun jka-compr-uninstall ()
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 "Uninstall jka-compr.
7066
de9caaa1de09 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6800
diff changeset
651 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
652 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
653 by `jka-compr-installed'."
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
654 ;; Delete from inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
655 ;; what jka-compr-install added.
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
656 (mapc
11296
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
657 (function (lambda (x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
658 (and (jka-compr-info-strip-extension x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
659 (setq inhibit-first-line-modes-suffixes
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
660 (delete (jka-compr-info-regexp x)
c271ed10f874 (jka-compr-install): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11179
diff changeset
661 inhibit-first-line-modes-suffixes)))))
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
662 jka-compr-compression-info-list--internal)
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 (let* ((fnha (cons nil file-name-handler-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (last fnha))
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 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (if (eq (cdr (car (cdr last))) 'jka-compr-handler)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (setq last (cdr last))))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (setq file-name-handler-alist (cdr fnha)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (let* ((ama (cons nil auto-mode-alist))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (last ama)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 entry)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (while (cdr last)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (setq entry (car (cdr last)))
69163
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
680 (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
681 (and (consp (cdr entry))
0160fca3dee1 (jka-compr-mode-compression-info-list): Add .tgz extension.
Richard M. Stallman <rms@gnu.org>
parents: 9084
diff changeset
682 (eq (nth 2 entry) 'jka-compr)))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (setcdr last (cdr (cdr last)))
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 (setq last (cdr last))))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49418
diff changeset
685
19004
f2ce7e947ec9 (jka-compr-added-to-file-coding-system-alist): New var.
Richard M. Stallman <rms@gnu.org>
parents: 18906
diff changeset
686 (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
687
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
688 (while jka-compr-added-to-file-coding-system-alist
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
689 (setq file-coding-system-alist
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
690 (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
691 file-coding-system-alist))
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
692 file-coding-system-alist)))
39829
79ed34b0c0df (jka-compr-load-suffixes): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
693
79ed34b0c0df (jka-compr-load-suffixes): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
694 ;; 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
695 (dolist (suff jka-compr-load-suffixes--internal)
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
696 (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
697
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
698 (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
699 jka-compr-mode-alist-additions--internal nil
d70e9ee4bf88 (jka-compr-uninstall): Replace `mapcar' with `mapc'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
700 jka-compr-load-suffixes--internal nil))
6002
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (provide 'jka-compr)
7507f44b1e5e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703
66805
8068044e970e Require 'jka-cmpr-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
704 ;; 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
705 ;;; jka-compr.el ends here