annotate lisp/uncompress.el @ 8624:2768933d85ad

(xmenu_show): Do nothing special for ButtonPress in the menu. Call XtDispatchEvent for all ButtonRelease events. xlwmenu.c now deals with posting the menu. Check for events in subwidgets of the menu when deciding whether to queue them for later handling.
author Richard M. Stallman <rms@gnu.org>
date Thu, 25 Aug 1994 05:05:50 +0000
parents cc7cd83ccf3f
children 83f275dcd93a
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
7300
cc7cd83ccf3f Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6665
diff changeset
3 ;; Copyright (C) 1992, 1994 Free Software Foundation, Inc.
841
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
2319
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
23 ;;; Commentary:
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
24
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
25 ;; This package can be used to arrange for automatic uncompress of
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
26 ;; files packed with the UNIX compress(1) utility when they are visited.
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
27 ;; All that's necessary is to load it. This can conveniently be done from
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
28 ;; your .emacs file.
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
29
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
30 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
31
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 ;; When we are about to make a backup file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 ;; uncompress the file we visited
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 ;; so that making the backup can work properly.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 ;; This is used as a write-file-hook.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
37 (defvar uncompress-program "gunzip"
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
38 "Program to use for uncompression.")
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
39
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 (defun uncompress-backup-file ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 (and buffer-file-name make-backup-files (not buffer-backed-up)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 (not (file-exists-p buffer-file-name))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
43 (call-process uncompress-program nil nil nil buffer-file-name))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 (or (assoc "\\.Z$" auto-mode-alist)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 (setq auto-mode-alist
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 (cons '("\\.Z$" . uncompress-while-visiting) auto-mode-alist)))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
49 (or (assoc "\\.gz$" auto-mode-alist)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
50 (setq auto-mode-alist
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
51 (cons '("\\.gz$" . uncompress-while-visiting) auto-mode-alist)))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (defun uncompress-while-visiting ()
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
54 "Temporary \"major mode\" used for .Z and .gz files, to uncompress them.
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 It then selects a major mode from the uncompressed file name and contents."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 (if (and (not (null buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (string-match "\\.Z$" buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (set-visited-file-name
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
59 (substring buffer-file-name 0 (match-beginning 0)))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
60 (if (and (not (null buffer-file-name))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
61 (string-match "\\.gz$" buffer-file-name))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
62 (set-visited-file-name
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
63 (substring buffer-file-name 0 (match-beginning 0)))))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (message "Uncompressing...")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (let ((buffer-read-only nil))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
66 (shell-command-on-region (point-min) (point-max) uncompress-program t))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (message "Uncompressing...done")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (set-buffer-modified-p nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (make-local-variable 'write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 (or (memq 'uncompress-backup-file write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (setq write-file-hooks (cons 'uncompress-backup-file write-file-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (normal-mode))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (or (memq 'find-compressed-version find-file-not-found-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (setq find-file-not-found-hooks
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (cons 'find-compressed-version find-file-not-found-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 (defun find-compressed-version ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 "Hook to read and uncompress the compressed version of a file."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 ;; Just pretend we had visited the compressed file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 ;; and uncompress-while-visiting will do the rest.
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
82 (let (name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
83 (if (file-exists-p (setq name (concat buffer-file-name ".Z")))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
84 (setq buffer-file-name name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
85 (if (file-exists-p (setq name (concat buffer-file-name ".gz")))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
86 (setq buffer-file-name name)))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
87 (if (eq name buffer-file-name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
88 (progn
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
89 (insert-file-contents buffer-file-name t)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
90 (goto-char (point-min))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
91 (setq error nil)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
92 t))))
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
93
2356
f7b80bd03e70 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 2319
diff changeset
94 (provide 'uncompress)
f7b80bd03e70 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 2319
diff changeset
95
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
96 ;;; uncompress.el ends here