Mercurial > emacs
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 |
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 | 3 ;; Copyright (C) 1992, 1994 Free Software Foundation, Inc. |
841 | 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 | 32 ;; When we are about to make a backup file, |
33 ;; uncompress the file we visited | |
34 ;; so that making the backup can work properly. | |
35 ;; This is used as a write-file-hook. | |
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 | 40 (defun uncompress-backup-file () |
41 (and buffer-file-name make-backup-files (not buffer-backed-up) | |
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 | 44 nil) |
45 | |
46 (or (assoc "\\.Z$" auto-mode-alist) | |
47 (setq auto-mode-alist | |
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 | 52 |
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 | 55 It then selects a major mode from the uncompressed file name and contents." |
56 (if (and (not (null buffer-file-name)) | |
57 (string-match "\\.Z$" buffer-file-name)) | |
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 | 64 (message "Uncompressing...") |
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 | 67 (message "Uncompressing...done") |
68 (set-buffer-modified-p nil) | |
69 (make-local-variable 'write-file-hooks) | |
70 (or (memq 'uncompress-backup-file write-file-hooks) | |
71 (setq write-file-hooks (cons 'uncompress-backup-file write-file-hooks))) | |
72 (normal-mode)) | |
73 | |
74 (or (memq 'find-compressed-version find-file-not-found-hooks) | |
75 (setq find-file-not-found-hooks | |
76 (cons 'find-compressed-version find-file-not-found-hooks))) | |
77 | |
78 (defun find-compressed-version () | |
79 "Hook to read and uncompress the compressed version of a file." | |
80 ;; Just pretend we had visited the compressed file, | |
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 | 94 (provide 'uncompress) |
95 | |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
21
diff
changeset
|
96 ;;; uncompress.el ends here |