Mercurial > emacs
annotate lisp/uncompress.el @ 18092:8428d56cd207
(smtpmail-via-smtp): Recognize XVRB as a synonym for
VERB and XONE as a synonym for ONEX.
(smtpmail-read-response): Add "%s" to `message' calls to avoid
problems with percent signs in strings.
(smtpmail-read-response): Return all lines of the
response text as a list of strings. Formerly only the first line
was returned. This is insufficient when one wants to parse
e.g. an EHLO response.
Ignore responses starting with "0". This is necessary to support
the VERB SMTP extension.
(smtpmail-via-smtp): Try EHLO and find out which SMTP service
extensions the receiving mailer supports.
Issue the ONEX and XUSR commands if the corresponding extensions
are supported.
Issue VERB if supported and `smtpmail-debug-info' is non-nil.
Add SIZE attribute to MAIL FROM: command if SIZE extension is
supported.
Add code that could set the BODY= attribute to MAIL FROM: if the
receiving mailer supports 8BITMIME. This is currently disabled,
since doing it right might involve adding MIME headers to, and in
some cases reencoding, the message.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 01 Jun 1997 22:24:22 +0000 |
parents | 68dcc3ebe342 |
children | e6a21f2c62f9 |
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 |
14169 | 20 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 ;; Boston, MA 02111-1307, USA. | |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
21
diff
changeset
|
23 |
2319
d98c49df2acd
Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
841
diff
changeset
|
24 ;;; Commentary: |
d98c49df2acd
Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
841
diff
changeset
|
25 |
d98c49df2acd
Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
841
diff
changeset
|
26 ;; This package can be used to arrange for automatic uncompress of |
17250
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
27 ;; compressed files when they are visited. |
2319
d98c49df2acd
Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
841
diff
changeset
|
28 ;; 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
|
29 ;; your .emacs file. |
d98c49df2acd
Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
841
diff
changeset
|
30 |
17250
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
31 ;; M-x auto-compression-mode is a more modern replacement for this package. |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
32 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
657
diff
changeset
|
33 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
657
diff
changeset
|
34 |
21 | 35 ;; When we are about to make a backup file, |
36 ;; uncompress the file we visited | |
37 ;; so that making the backup can work properly. | |
38 ;; This is used as a write-file-hook. | |
39 | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
40 (defvar uncompress-program "gunzip" |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
41 "Program to use for uncompression.") |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
42 |
21 | 43 (defun uncompress-backup-file () |
44 (and buffer-file-name make-backup-files (not buffer-backed-up) | |
45 (not (file-exists-p buffer-file-name)) | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
46 (call-process uncompress-program nil nil nil buffer-file-name)) |
21 | 47 nil) |
48 | |
49 (or (assoc "\\.Z$" auto-mode-alist) | |
50 (setq auto-mode-alist | |
51 (cons '("\\.Z$" . uncompress-while-visiting) auto-mode-alist))) | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
52 (or (assoc "\\.gz$" auto-mode-alist) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
53 (setq auto-mode-alist |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
54 (cons '("\\.gz$" . uncompress-while-visiting) auto-mode-alist))) |
17250
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
55 (or (assoc "\\.tgz$" auto-mode-alist) |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
56 (setq auto-mode-alist |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
57 (cons '("\\.tgz$" . uncompress-while-visiting) auto-mode-alist))) |
21 | 58 |
59 (defun uncompress-while-visiting () | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
60 "Temporary \"major mode\" used for .Z and .gz files, to uncompress them. |
21 | 61 It then selects a major mode from the uncompressed file name and contents." |
62 (if (and (not (null buffer-file-name)) | |
63 (string-match "\\.Z$" buffer-file-name)) | |
64 (set-visited-file-name | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
65 (substring buffer-file-name 0 (match-beginning 0))) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
66 (if (and (not (null buffer-file-name)) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
67 (string-match "\\.gz$" buffer-file-name)) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
68 (set-visited-file-name |
17250
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
69 (substring buffer-file-name 0 (match-beginning 0))) |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
70 (if (and (not (null buffer-file-name)) |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
71 (string-match "\\.tgz$" buffer-file-name)) |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
72 (set-visited-file-name |
68dcc3ebe342
(uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
73 (concat (substring buffer-file-name 0 (match-beginning 0)) ".tar"))))) |
21 | 74 (message "Uncompressing...") |
75 (let ((buffer-read-only nil)) | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
76 (shell-command-on-region (point-min) (point-max) uncompress-program t)) |
21 | 77 (message "Uncompressing...done") |
78 (set-buffer-modified-p nil) | |
79 (make-local-variable 'write-file-hooks) | |
80 (or (memq 'uncompress-backup-file write-file-hooks) | |
81 (setq write-file-hooks (cons 'uncompress-backup-file write-file-hooks))) | |
82 (normal-mode)) | |
83 | |
84 (or (memq 'find-compressed-version find-file-not-found-hooks) | |
85 (setq find-file-not-found-hooks | |
86 (cons 'find-compressed-version find-file-not-found-hooks))) | |
87 | |
88 (defun find-compressed-version () | |
89 "Hook to read and uncompress the compressed version of a file." | |
90 ;; Just pretend we had visited the compressed file, | |
91 ;; and uncompress-while-visiting will do the rest. | |
6665
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
92 (let (name) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
93 (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
|
94 (setq buffer-file-name name) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
95 (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
|
96 (setq buffer-file-name name))) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
97 (if (eq name buffer-file-name) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
98 (progn |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
99 (insert-file-contents buffer-file-name t) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
100 (goto-char (point-min)) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
101 (setq error nil) |
9594cf4c0ff5
(uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
2356
diff
changeset
|
102 t)))) |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
21
diff
changeset
|
103 |
2356 | 104 (provide 'uncompress) |
105 | |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
21
diff
changeset
|
106 ;;; uncompress.el ends here |