annotate lisp/uncompress.el @ 1628:5ca8f0065e4e

* make-dist: Explain what's going on if config.sub and gmalloc.c can't be linked. Place the code which copies them near the code which links the rest of the files around them.
author Jim Blandy <jimb@redhat.com>
date Fri, 20 Nov 1992 17:08:05 +0000
parents 2cdce064065f
children d98c49df2acd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
1 ;;; uncompress.el --- auto-decompression hook for visiting .Z files
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
2
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
3 ;; Copyright (C) 1992 Free Software Foundation, Inc.
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
5 ;; Maintainer: FSF
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
6
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
7 ;; This file is part of GNU Emacs.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
8
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
12 ;; any later version.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
13
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
17 ;; GNU General Public License for more details.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
18
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
19 ;; You should have received a copy of the GNU General Public License
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
21 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
22
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
23 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
24
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 ;; When we are about to make a backup file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 ;; uncompress the file we visited
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 ;; so that making the backup can work properly.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 ;; This is used as a write-file-hook.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 (defun uncompress-backup-file ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 (and buffer-file-name make-backup-files (not buffer-backed-up)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 (not (file-exists-p buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 (call-process "uncompress" nil nil nil buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 (or (assoc "\\.Z$" auto-mode-alist)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 (setq auto-mode-alist
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 (cons '("\\.Z$" . uncompress-while-visiting) auto-mode-alist)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 (defun uncompress-while-visiting ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 "Temporary \"major mode\" used for .Z files, to uncompress the contents.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 It then selects a major mode from the uncompressed file name and contents."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 (if (and (not (null buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 (string-match "\\.Z$" buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (set-visited-file-name
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 (substring buffer-file-name 0 (match-beginning 0))))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 (message "Uncompressing...")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 (let ((buffer-read-only nil))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (shell-command-on-region (point-min) (point-max) "uncompress" t))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 (message "Uncompressing...done")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (set-buffer-modified-p nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 (make-local-variable 'write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (or (memq 'uncompress-backup-file write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 (setq write-file-hooks (cons 'uncompress-backup-file write-file-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 (normal-mode))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (or (memq 'find-compressed-version find-file-not-found-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (setq find-file-not-found-hooks
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (cons 'find-compressed-version find-file-not-found-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (defun find-compressed-version ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 "Hook to read and uncompress the compressed version of a file."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 ;; Just pretend we had visited the compressed file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 ;; and uncompress-while-visiting will do the rest.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (if (file-exists-p (concat buffer-file-name ".Z"))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (progn
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (setq buffer-file-name (concat buffer-file-name ".Z"))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (insert-file-contents buffer-file-name t)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (goto-char (point-min))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 (setq error nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 t)))
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
72
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
73 ;;; uncompress.el ends here