Mercurial > emacs
annotate lisp/gnus/mm-util.el @ 100718:0a3d5993b567
Remove non-working entry for pmail.
(fill-column): Fix typo.
(change-log-mode): Add fill column.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Sat, 27 Dec 2008 17:10:24 +0000 |
parents | 0363096dbcf8 |
children | a9dc0e7c3f2b |
rev | line source |
---|---|
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1 ;;; mm-util.el --- Utility functions for Mule and low level things |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64736
diff
changeset
|
2 |
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64736
diff
changeset
|
3 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
79708 | 4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
31717 | 5 |
6 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> | |
7 ;; MORIOKA Tomohiko <morioka@jaist.ac.jp> | |
8 ;; This file is part of GNU Emacs. | |
9 | |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93728
diff
changeset
|
10 ;; GNU Emacs is free software: you can redistribute it and/or modify |
31717 | 11 ;; it under the terms of the GNU General Public License as published by |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93728
diff
changeset
|
12 ;; the Free Software Foundation, either version 3 of the License, or |
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93728
diff
changeset
|
13 ;; (at your option) any later version. |
31717 | 14 |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93728
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
31717 | 18 ;; GNU General Public License for more details. |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93728
diff
changeset
|
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
31717 | 22 |
23 ;;; Commentary: | |
24 | |
25 ;;; Code: | |
26 | |
87241
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
27 ;; For Emacs < 22.2. |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
28 (eval-and-compile |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
29 (unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))) |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
30 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
31 (eval-when-compile (require 'cl)) |
31717 | 32 (require 'mail-prsvr) |
33 | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
34 (eval-and-compile |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
35 (if (featurep 'xemacs) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
36 (unless (ignore-errors |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
37 (require 'timer-funcs)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
38 (require 'timer)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
39 (require 'timer))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
40 |
86154 | 41 (defvar mm-mime-mule-charset-alist ) |
42 | |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
43 (eval-and-compile |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
44 (mapc |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
45 (lambda (elem) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
46 (let ((nfunc (intern (format "mm-%s" (car elem))))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
47 (if (fboundp (car elem)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
48 (defalias nfunc (car elem)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
49 (defalias nfunc (cdr elem))))) |
100516 | 50 `((coding-system-list . ignore) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
51 (char-int . identity) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
52 (coding-system-equal . equal) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
53 (annotationp . ignore) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
54 (set-buffer-file-coding-system . ignore) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
55 (read-charset |
100516 | 56 . ,(lambda (prompt) |
57 "Return a charset." | |
58 (intern | |
59 (completing-read | |
60 prompt | |
61 (mapcar (lambda (e) (list (symbol-name (car e)))) | |
62 mm-mime-mule-charset-alist) | |
63 nil t)))) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
64 (subst-char-in-string |
100516 | 65 . ,(lambda (from to string &optional inplace) |
66 ;; stolen (and renamed) from nnheader.el | |
67 "Replace characters in STRING from FROM to TO. | |
61424
ad05d91d3598
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-243
Miles Bader <miles@gnu.org>
parents:
61126
diff
changeset
|
68 Unless optional argument INPLACE is non-nil, return a new string." |
100516 | 69 (let ((string (if inplace string (copy-sequence string))) |
70 (len (length string)) | |
71 (idx 0)) | |
72 ;; Replace all occurrences of FROM with TO. | |
73 (while (< idx len) | |
74 (when (= (aref string idx) from) | |
75 (aset string idx to)) | |
76 (setq idx (1+ idx))) | |
77 string))) | |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
78 (replace-in-string |
100516 | 79 . ,(lambda (string regexp rep &optional literal) |
80 "See `replace-regexp-in-string', only the order of args differs." | |
81 (replace-regexp-in-string regexp rep string nil literal))) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
82 (string-as-unibyte . identity) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
83 (string-make-unibyte . identity) |
61434
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
84 ;; string-as-multibyte often doesn't really do what you think it does. |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
85 ;; Example: |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
86 ;; (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
87 ;; (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
88 ;; (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
89 ;; (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
90 ;; but |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
91 ;; (aref (string-as-multibyte "\201\300") 0) -> 2240 |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
92 ;; (aref (string-as-multibyte "\201\300") 1) -> <error> |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
93 ;; Better use string-to-multibyte or encode-coding-string. |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
94 ;; If you really need string-as-multibyte somewhere it's usually |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
95 ;; because you're using the internal emacs-mule representation (maybe |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
96 ;; because you're using string-as-unibyte somewhere), which is |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
97 ;; generally a problem in itself. |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
98 ;; Here is an approximate equivalence table to help think about it: |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
99 ;; (string-as-multibyte s) ~= (decode-coding-string s 'emacs-mule) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
100 ;; (string-to-multibyte s) ~= (decode-coding-string s 'binary) |
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
101 ;; (string-make-multibyte s) ~= (decode-coding-string s locale-coding-system) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
102 (string-as-multibyte . identity) |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
103 (multibyte-string-p . ignore) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
104 (insert-byte . insert-char) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
105 (multibyte-char-to-unibyte . identity) |
93106
e931cb410f95
(mm-set-buffer-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92153
diff
changeset
|
106 (set-buffer-multibyte . ignore) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
107 (special-display-p |
100516 | 108 . ,(lambda (buffer-name) |
109 "Returns non-nil if a buffer named BUFFER-NAME gets a special frame." | |
110 (and special-display-function | |
111 (or (and (member buffer-name special-display-buffer-names) t) | |
112 (cdr (assoc buffer-name special-display-buffer-names)) | |
113 (catch 'return | |
114 (dolist (elem special-display-regexps) | |
115 (and (stringp elem) | |
116 (string-match elem buffer-name) | |
117 (throw 'return t)) | |
118 (and (consp elem) | |
119 (stringp (car elem)) | |
120 (string-match (car elem) buffer-name) | |
121 (throw 'return (cdr elem))))))))) | |
122 (substring-no-properties | |
123 . ,(lambda (string &optional from to) | |
124 "Return a substring of STRING, without text properties. | |
125 It starts at index FROM and ending before TO. | |
126 TO may be nil or omitted; then the substring runs to the end of STRING. | |
127 If FROM is nil or omitted, the substring starts at the beginning of STRING. | |
128 If FROM or TO is negative, it counts from the end. | |
129 | |
130 With one argument, just copy STRING without its properties." | |
131 (setq string (substring string (or from 0) to)) | |
132 (set-text-properties 0 (length string) nil string) | |
133 string))))) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
134 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
135 (eval-and-compile |
78125 | 136 (if (featurep 'xemacs) |
137 (if (featurep 'file-coding) | |
138 ;; Don't modify string if CODING-SYSTEM is nil. | |
139 (progn | |
140 (defun mm-decode-coding-string (str coding-system) | |
141 (if coding-system | |
142 (decode-coding-string str coding-system) | |
143 str)) | |
144 (defun mm-encode-coding-string (str coding-system) | |
145 (if coding-system | |
146 (encode-coding-string str coding-system) | |
147 str)) | |
148 (defun mm-decode-coding-region (start end coding-system) | |
149 (if coding-system | |
150 (decode-coding-region start end coding-system))) | |
151 (defun mm-encode-coding-region (start end coding-system) | |
152 (if coding-system | |
153 (encode-coding-region start end coding-system)))) | |
154 (defun mm-decode-coding-string (str coding-system) str) | |
155 (defun mm-encode-coding-string (str coding-system) str) | |
156 (defalias 'mm-decode-coding-region 'ignore) | |
157 (defalias 'mm-encode-coding-region 'ignore)) | |
158 (defalias 'mm-decode-coding-string 'decode-coding-string) | |
159 (defalias 'mm-encode-coding-string 'encode-coding-string) | |
160 (defalias 'mm-decode-coding-region 'decode-coding-region) | |
161 (defalias 'mm-encode-coding-region 'encode-coding-region))) | |
162 | |
74214 | 163 (defalias 'mm-string-to-multibyte |
164 (cond | |
165 ((featurep 'xemacs) | |
166 'identity) | |
167 ((fboundp 'string-to-multibyte) | |
168 'string-to-multibyte) | |
169 (t | |
170 (lambda (string) | |
100516 | 171 "Return a multibyte string with the same individual chars as STRING." |
74214 | 172 (mapconcat |
173 (lambda (ch) (mm-string-as-multibyte (char-to-string ch))) | |
174 string ""))))) | |
175 | |
61126
c0aa521e0ca7
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-220
Miles Bader <miles@gnu.org>
parents:
60029
diff
changeset
|
176 (eval-and-compile |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
177 (defalias 'mm-char-or-char-int-p |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
178 (cond |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
179 ((fboundp 'char-or-char-int-p) 'char-or-char-int-p) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
180 ((fboundp 'char-valid-p) 'char-valid-p) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
181 (t 'identity)))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
182 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
183 ;; Fixme: This seems always to be used to read a MIME charset, so it |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
184 ;; should be re-named and fixed (in Emacs) to offer completion only on |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
185 ;; proper charset names (base coding systems which have a |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
186 ;; mime-charset defined). XEmacs doesn't believe in mime-charset; |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
187 ;; test with |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
188 ;; `(or (coding-system-get 'iso-8859-1 'mime-charset) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
189 ;; (coding-system-get 'iso-8859-1 :mime-charset))' |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
190 ;; Actually, there should be an `mm-coding-system-mime-charset'. |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
191 (eval-and-compile |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
192 (defalias 'mm-read-coding-system |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
193 (cond |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
194 ((fboundp 'read-coding-system) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
195 (if (and (featurep 'xemacs) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
196 (<= (string-to-number emacs-version) 21.1)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
197 (lambda (prompt &optional default-coding-system) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
198 (read-coding-system prompt)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
199 'read-coding-system)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
200 (t (lambda (prompt &optional default-coding-system) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
201 "Prompt the user for a coding system." |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
202 (completing-read |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
203 prompt (mapcar (lambda (s) (list (symbol-name (car s)))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
204 mm-mime-mule-charset-alist))))))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
205 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
206 (defvar mm-coding-system-list nil) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
207 (defun mm-get-coding-system-list () |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
208 "Get the coding system list." |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
209 (or mm-coding-system-list |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
210 (setq mm-coding-system-list (mm-coding-system-list)))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
211 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
212 (defun mm-coding-system-p (cs) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
213 "Return non-nil if CS is a symbol naming a coding system. |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
214 In XEmacs, also return non-nil if CS is a coding system object. |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
215 If CS is available, return CS itself in Emacs, and return a coding |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
216 system object in XEmacs." |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
217 (if (fboundp 'find-coding-system) |
61424
ad05d91d3598
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-243
Miles Bader <miles@gnu.org>
parents:
61126
diff
changeset
|
218 (and cs (find-coding-system cs)) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
219 (if (fboundp 'coding-system-p) |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
220 (when (coding-system-p cs) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
221 cs) |
69135
12d289b6e5de
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-118
Miles Bader <miles@gnu.org>
parents:
68940
diff
changeset
|
222 ;; no-MULE XEmacs: |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
223 (car (memq cs (mm-get-coding-system-list)))))) |
36556
8af75e618534
(mm-mime-mule-charset-alist): Move it after definition of
Dave Love <fx@gnu.org>
parents:
36539
diff
changeset
|
224 |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
225 (defun mm-codepage-setup (number &optional alias) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
226 "Create a coding system cpNUMBER. |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
227 The coding system is created using `codepage-setup'. If ALIAS is |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
228 non-nil, an alias is created and added to |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
229 `mm-charset-synonym-alist'. If ALIAS is a string, it's used as |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
230 the alias. Else windows-NUMBER is used." |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
231 (interactive |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
232 (let ((completion-ignore-case t) |
91718
89610dccd10a
(mm-codepage-setup): If cp-supported-codepages isn't
Reiner Steib <Reiner.Steib@gmx.de>
parents:
91327
diff
changeset
|
233 (candidates (if (fboundp 'cp-supported-codepages) |
89610dccd10a
(mm-codepage-setup): If cp-supported-codepages isn't
Reiner Steib <Reiner.Steib@gmx.de>
parents:
91327
diff
changeset
|
234 (cp-supported-codepages) |
98462
512497325cb3
(mm-codepage-setup): Tweak codepage error. Silence compiler warning.
Glenn Morris <rgm@gnu.org>
parents:
96275
diff
changeset
|
235 ;; Removed in Emacs 23 (unicode), so signal an error: |
512497325cb3
(mm-codepage-setup): Tweak codepage error. Silence compiler warning.
Glenn Morris <rgm@gnu.org>
parents:
96275
diff
changeset
|
236 (error "`codepage-setup' not present in this Emacs version.")))) |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
237 (list (completing-read "Setup DOS Codepage: (default 437) " candidates |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
238 nil t nil nil "437")))) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
239 (when alias |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
240 (setq alias (if (stringp alias) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
241 (intern alias) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
242 (intern (format "windows-%s" number))))) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
243 (let* ((cp (intern (format "cp%s" number)))) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
244 (unless (mm-coding-system-p cp) |
98462
512497325cb3
(mm-codepage-setup): Tweak codepage error. Silence compiler warning.
Glenn Morris <rgm@gnu.org>
parents:
96275
diff
changeset
|
245 (if (fboundp 'codepage-setup) ; silence compiler |
512497325cb3
(mm-codepage-setup): Tweak codepage error. Silence compiler warning.
Glenn Morris <rgm@gnu.org>
parents:
96275
diff
changeset
|
246 (codepage-setup number) |
512497325cb3
(mm-codepage-setup): Tweak codepage error. Silence compiler warning.
Glenn Morris <rgm@gnu.org>
parents:
96275
diff
changeset
|
247 (error "`codepage-setup' not present in this Emacs version."))) |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
248 (when (and alias |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
249 ;; Don't add alias if setup of cp failed. |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
250 (mm-coding-system-p cp)) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
251 (add-to-list 'mm-charset-synonym-alist (cons alias cp))))) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
252 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
253 (defvar mm-charset-synonym-alist |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
254 `( |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
255 ;; Not in XEmacs, but it's not a proper MIME charset anyhow. |
40621
11741b5b7d18
2001-11-01 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40542
diff
changeset
|
256 ,@(unless (mm-coding-system-p 'x-ctext) |
71926 | 257 '((x-ctext . ctext))) |
73546 | 258 ;; ISO-8859-15 is very similar to ISO-8859-1. But it's _different_ in 8 |
259 ;; positions! | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
260 ,@(unless (mm-coding-system-p 'iso-8859-15) |
71926 | 261 '((iso-8859-15 . iso-8859-1))) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
262 ;; BIG-5HKSCS is similar to, but different than, BIG-5. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
263 ,@(unless (mm-coding-system-p 'big5-hkscs) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
264 '((big5-hkscs . big5))) |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
265 ;; A Microsoft misunderstanding. |
73546 | 266 ,@(when (and (not (mm-coding-system-p 'unicode)) |
267 (mm-coding-system-p 'utf-16-le)) | |
268 '((unicode . utf-16-le))) | |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
269 ;; A Microsoft misunderstanding. |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
270 ,@(unless (mm-coding-system-p 'ks_c_5601-1987) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
271 (if (mm-coding-system-p 'cp949) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
272 '((ks_c_5601-1987 . cp949)) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
273 '((ks_c_5601-1987 . euc-kr)))) |
71926 | 274 ;; Windows-31J is Windows Codepage 932. |
73546 | 275 ,@(when (and (not (mm-coding-system-p 'windows-31j)) |
276 (mm-coding-system-p 'cp932)) | |
277 '((windows-31j . cp932))) | |
79022 | 278 ;; Charset name: GBK, Charset aliases: CP936, MS936, windows-936 |
279 ;; http://www.iana.org/assignments/charset-reg/GBK | |
280 ;; Emacs 22.1 has cp936, but not gbk, so we alias it: | |
281 ,@(when (and (not (mm-coding-system-p 'gbk)) | |
282 (mm-coding-system-p 'cp936)) | |
283 '((gbk . cp936))) | |
100454 | 284 ;; UTF8 is a bogus name for UTF-8 |
285 ,@(when (and (not (mm-coding-system-p 'utf8)) | |
286 (mm-coding-system-p 'utf-8)) | |
287 '((utf8 . utf-8))) | |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
288 ;; ISO8859-1 is a bogus name for ISO-8859-1 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
289 ,@(when (and (not (mm-coding-system-p 'iso8859-1)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
290 (mm-coding-system-p 'iso-8859-1)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
291 '((iso8859-1 . iso-8859-1))) |
100454 | 292 ;; ISO_8859-1 is a bogus name for ISO-8859-1 |
293 ,@(when (and (not (mm-coding-system-p 'iso_8859-1)) | |
294 (mm-coding-system-p 'iso-8859-1)) | |
295 '((iso_8859-1 . iso-8859-1))) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
296 ) |
73546 | 297 "A mapping from unknown or invalid charset names to the real charset names. |
298 | |
299 See `mm-codepage-iso-8859-list' and `mm-codepage-ibm-list'.") | |
300 | |
301 (defcustom mm-codepage-iso-8859-list | |
302 (list 1250 ;; Windows-1250 is a variant of Latin-2 heavily used by Microsoft | |
303 ;; Outlook users in Czech republic. Use this to allow reading of | |
304 ;; their e-mails. cp1250 should be defined by M-x codepage-setup | |
305 ;; (Emacs 21). | |
306 '(1252 . 1) ;; Windows-1252 is a superset of iso-8859-1 (West | |
307 ;; Europe). See also `gnus-article-dumbquotes-map'. | |
308 '(1254 . 9) ;; Windows-1254 is a superset of iso-8859-9 (Turkish). | |
309 '(1255 . 8));; Windows-1255 is a superset of iso-8859-8 (Hebrew). | |
310 "A list of Windows codepage numbers and iso-8859 charset numbers. | |
311 | |
312 If an element is a number corresponding to a supported windows | |
313 codepage, appropriate entries to `mm-charset-synonym-alist' are | |
314 added by `mm-setup-codepage-iso-8859'. An element may also be a | |
315 cons cell where the car is a codepage number and the cdr is the | |
316 corresponding number of an iso-8859 charset." | |
317 :type '(list (set :inline t | |
318 (const 1250 :tag "Central and East European") | |
319 (const (1252 . 1) :tag "West European") | |
320 (const (1254 . 9) :tag "Turkish") | |
321 (const (1255 . 8) :tag "Hebrew")) | |
322 (repeat :inline t | |
323 :tag "Other options" | |
324 (choice | |
325 (integer :tag "Windows codepage number") | |
326 (cons (integer :tag "Windows codepage number") | |
327 (integer :tag "iso-8859 charset number"))))) | |
328 :version "22.1" ;; Gnus 5.10.9 | |
329 :group 'mime) | |
330 | |
331 (defcustom mm-codepage-ibm-list | |
332 (list 437 ;; (US etc.) | |
333 860 ;; (Portugal) | |
334 861 ;; (Iceland) | |
335 862 ;; (Israel) | |
336 863 ;; (Canadian French) | |
337 865 ;; (Nordic) | |
338 852 ;; | |
339 850 ;; (Latin 1) | |
340 855 ;; (Cyrillic) | |
341 866 ;; (Cyrillic - Russian) | |
342 857 ;; (Turkish) | |
343 864 ;; (Arabic) | |
344 869 ;; (Greek) | |
345 874);; (Thai) | |
346 ;; In Emacs 23 (unicode), cp... and ibm... are aliases. | |
347 ;; Cf. http://thread.gmane.org/v9lkng5nwy.fsf@marauder.physik.uni-ulm.de | |
348 "List of IBM codepage numbers. | |
349 | |
350 The codepage mappings slighly differ between IBM and other vendors. | |
351 See \"ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/IBM/README.TXT\". | |
352 | |
353 If an element is a number corresponding to a supported windows | |
354 codepage, appropriate entries to `mm-charset-synonym-alist' are | |
355 added by `mm-setup-codepage-ibm'." | |
356 :type '(list (set :inline t | |
357 (const 437 :tag "US etc.") | |
358 (const 860 :tag "Portugal") | |
359 (const 861 :tag "Iceland") | |
360 (const 862 :tag "Israel") | |
361 (const 863 :tag "Canadian French") | |
362 (const 865 :tag "Nordic") | |
363 (const 852) | |
364 (const 850 :tag "Latin 1") | |
365 (const 855 :tag "Cyrillic") | |
366 (const 866 :tag "Cyrillic - Russian") | |
367 (const 857 :tag "Turkish") | |
368 (const 864 :tag "Arabic") | |
369 (const 869 :tag "Greek") | |
370 (const 874 :tag "Thai")) | |
371 (repeat :inline t | |
372 :tag "Other options" | |
373 (integer :tag "Codepage number"))) | |
374 :version "22.1" ;; Gnus 5.10.9 | |
375 :group 'mime) | |
376 | |
377 (defun mm-setup-codepage-iso-8859 (&optional list) | |
378 "Add appropriate entries to `mm-charset-synonym-alist'. | |
379 Unless LIST is given, `mm-codepage-iso-8859-list' is used." | |
380 (unless list | |
381 (setq list mm-codepage-iso-8859-list)) | |
382 (dolist (i list) | |
383 (let (cp windows iso) | |
384 (if (consp i) | |
385 (setq cp (intern (format "cp%d" (car i))) | |
386 windows (intern (format "windows-%d" (car i))) | |
387 iso (intern (format "iso-8859-%d" (cdr i)))) | |
388 (setq cp (intern (format "cp%d" i)) | |
389 windows (intern (format "windows-%d" i)))) | |
390 (unless (mm-coding-system-p windows) | |
391 (if (mm-coding-system-p cp) | |
392 (add-to-list 'mm-charset-synonym-alist (cons windows cp)) | |
393 (add-to-list 'mm-charset-synonym-alist (cons windows iso))))))) | |
394 | |
395 (defun mm-setup-codepage-ibm (&optional list) | |
396 "Add appropriate entries to `mm-charset-synonym-alist'. | |
397 Unless LIST is given, `mm-codepage-ibm-list' is used." | |
398 (unless list | |
399 (setq list mm-codepage-ibm-list)) | |
400 (dolist (number list) | |
401 (let ((ibm (intern (format "ibm%d" number))) | |
402 (cp (intern (format "cp%d" number)))) | |
403 (when (and (not (mm-coding-system-p ibm)) | |
404 (mm-coding-system-p cp)) | |
405 (add-to-list 'mm-charset-synonym-alist (cons ibm cp)))))) | |
406 | |
407 ;; Initialize: | |
408 (mm-setup-codepage-iso-8859) | |
409 (mm-setup-codepage-ibm) | |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
410 |
100429
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
411 ;; Note: this has to be defined before `mm-charset-to-coding-system'. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
412 (defcustom mm-charset-eval-alist |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
413 (if (featurep 'xemacs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
414 nil ;; I don't know what would be useful for XEmacs. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
415 '(;; Emacs 21 offers 1250 1251 1253 1257. Emacs 22 provides autoloads for |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
416 ;; 1250-1258 (i.e. `mm-codepage-setup' does nothing). |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
417 (windows-1250 . (mm-codepage-setup 1250 t)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
418 (windows-1251 . (mm-codepage-setup 1251 t)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
419 (windows-1253 . (mm-codepage-setup 1253 t)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
420 (windows-1257 . (mm-codepage-setup 1257 t)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
421 "An alist of (CHARSET . FORM) pairs. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
422 If an article is encoded in an unknown CHARSET, FORM is |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
423 evaluated. This allows to load additional libraries providing |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
424 charsets on demand. If supported by your Emacs version, you |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
425 could use `autoload-coding-system' here." |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
426 :version "22.1" ;; Gnus 5.10.9 |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
427 :type '(list (set :inline t |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
428 (const (windows-1250 . (mm-codepage-setup 1250 t))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
429 (const (windows-1251 . (mm-codepage-setup 1251 t))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
430 (const (windows-1253 . (mm-codepage-setup 1253 t))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
431 (const (windows-1257 . (mm-codepage-setup 1257 t))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
432 (const (cp850 . (mm-codepage-setup 850 nil)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
433 (repeat :inline t |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
434 :tag "Other options" |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
435 (cons (symbol :tag "charset") |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
436 (symbol :tag "form")))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
437 :group 'mime) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
438 (put 'mm-charset-eval-alist 'risky-local-variable t) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
439 |
100444
3e9018e11d27
(mm-charset-override-alist): Declare for compiler.
Glenn Morris <rgm@gnu.org>
parents:
100429
diff
changeset
|
440 (defvar mm-charset-override-alist) |
3e9018e11d27
(mm-charset-override-alist): Declare for compiler.
Glenn Morris <rgm@gnu.org>
parents:
100429
diff
changeset
|
441 |
100429
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
442 ;; Note: this function has to be defined before `mm-charset-override-alist' |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
443 ;; since it will use this function in order to determine its default value |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
444 ;; when loading mm-util.elc. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
445 (defun mm-charset-to-coding-system (charset &optional lbt |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
446 allow-override silent) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
447 "Return coding-system corresponding to CHARSET. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
448 CHARSET is a symbol naming a MIME charset. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
449 If optional argument LBT (`unix', `dos' or `mac') is specified, it is |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
450 used as the line break code type of the coding system. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
451 |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
452 If ALLOW-OVERRIDE is given, use `mm-charset-override-alist' to |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
453 map undesired charset names to their replacement. This should |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
454 only be used for decoding, not for encoding. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
455 |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
456 A non-nil value of SILENT means don't issue a warning even if CHARSET |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
457 is not available." |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
458 ;; OVERRIDE is used (only) in `mm-decode-body' and `mm-decode-string'. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
459 (when (stringp charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
460 (setq charset (intern (downcase charset)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
461 (when lbt |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
462 (setq charset (intern (format "%s-%s" charset lbt)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
463 (cond |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
464 ((null charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
465 charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
466 ;; Running in a non-MULE environment. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
467 ((or (null (mm-get-coding-system-list)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
468 (not (fboundp 'coding-system-get))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
469 charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
470 ;; Check override list quite early. Should only used for decoding, not for |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
471 ;; encoding! |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
472 ((and allow-override |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
473 (let ((cs (cdr (assq charset mm-charset-override-alist)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
474 (and cs (mm-coding-system-p cs) cs)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
475 ;; ascii |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
476 ((eq charset 'us-ascii) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
477 'ascii) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
478 ;; Check to see whether we can handle this charset. (This depends |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
479 ;; on there being some coding system matching each `mime-charset' |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
480 ;; property defined, as there should be.) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
481 ((and (mm-coding-system-p charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
482 ;;; Doing this would potentially weed out incorrect charsets. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
483 ;;; charset |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
484 ;;; (eq charset (coding-system-get charset 'mime-charset)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
485 ) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
486 charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
487 ;; Eval expressions from `mm-charset-eval-alist' |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
488 ((let* ((el (assq charset mm-charset-eval-alist)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
489 (cs (car el)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
490 (form (cdr el))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
491 (and cs |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
492 form |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
493 (prog2 |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
494 ;; Avoid errors... |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
495 (condition-case nil (eval form) (error nil)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
496 ;; (message "Failed to eval `%s'" form)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
497 (mm-coding-system-p cs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
498 (message "Added charset `%s' via `mm-charset-eval-alist'" cs)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
499 cs))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
500 ;; Translate invalid charsets. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
501 ((let ((cs (cdr (assq charset mm-charset-synonym-alist)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
502 (and cs |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
503 (mm-coding-system-p cs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
504 ;; (message |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
505 ;; "Using synonym `%s' from `mm-charset-synonym-alist' for `%s'" |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
506 ;; cs charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
507 cs))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
508 ;; Last resort: search the coding system list for entries which |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
509 ;; have the right mime-charset in case the canonical name isn't |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
510 ;; defined (though it should be). |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
511 ((let (cs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
512 ;; mm-get-coding-system-list returns a list of cs without lbt. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
513 ;; Do we need -lbt? |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
514 (dolist (c (mm-get-coding-system-list)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
515 (if (and (null cs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
516 (eq charset (or (coding-system-get c :mime-charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
517 (coding-system-get c 'mime-charset)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
518 (setq cs c))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
519 (unless (or silent cs) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
520 ;; Warn the user about unknown charset: |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
521 (if (fboundp 'gnus-message) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
522 (gnus-message 7 "Unknown charset: %s" charset) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
523 (message "Unknown charset: %s" charset))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
524 cs)))) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
525 |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
526 ;; Note: `mm-charset-to-coding-system' has to be defined before this. |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
527 (defcustom mm-charset-override-alist |
100429
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
528 ;; Note: pairs that cannot be used in the Emacs version currently running |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
529 ;; will be removed. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
530 '((gb2312 . gbk) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
531 (iso-8859-1 . windows-1252) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
532 (iso-8859-8 . windows-1255) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
533 (iso-8859-9 . windows-1254)) |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
534 "A mapping from undesired charset names to their replacement. |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
535 |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
536 You may add pairs like (iso-8859-1 . windows-1252) here, |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
537 i.e. treat iso-8859-1 as windows-1252. windows-1252 is a |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
538 superset of iso-8859-1." |
100315
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
539 :type |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
540 '(list |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
541 :convert-widget |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
542 (lambda (widget) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
543 (let ((defaults |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
544 (delq nil |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
545 (mapcar (lambda (pair) |
100429
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
546 (if (mm-charset-to-coding-system (cdr pair) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
547 nil nil t) |
100315
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
548 pair)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
549 '((gb2312 . gbk) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
550 (iso-8859-1 . windows-1252) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
551 (iso-8859-8 . windows-1255) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
552 (iso-8859-9 . windows-1254) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
553 (undecided . windows-1252))))) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
554 (val (copy-sequence (default-value 'mm-charset-override-alist))) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
555 pair rest) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
556 (while val |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
557 (push (if (and (prog1 |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
558 (setq pair (assq (caar val) defaults)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
559 (setq defaults (delq pair defaults))) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
560 (equal (car val) pair)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
561 `(const ,pair) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
562 `(cons :format "%v" |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
563 (const :format "(%v" ,(caar val)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
564 (symbol :size 3 :format " . %v)\n" ,(cdar val)))) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
565 rest) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
566 (setq val (cdr val))) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
567 (while defaults |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
568 (push `(const ,(pop defaults)) rest)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
569 (widget-convert |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
570 'list |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
571 `(set :inline t :format "%v" ,@(nreverse rest)) |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
572 `(repeat :inline t :tag "Other options" |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
573 (cons :format "%v" |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
574 (symbol :size 3 :format "(%v") |
da90832da238
* rfc2047.el (rfc2047-charset-to-coding-system): Add new argument
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
98462
diff
changeset
|
575 (symbol :size 3 :format " . %v)\n"))))))) |
100429
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
576 ;; Remove pairs that cannot be used in the Emacs version currently |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
577 ;; running. Note that this section will be evaluated when loading |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
578 ;; mm-util.elc. |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
579 :set (lambda (symbol value) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
580 (custom-set-default |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
581 symbol (delq nil |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
582 (mapcar (lambda (pair) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
583 (if (mm-charset-to-coding-system (cdr pair) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
584 nil nil t) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
585 pair)) |
7255d1413d64
(mm-charset-eval-alist): Define it before mm-charset-to-coding-system.
Katsumi Yamaoka <yamaoka@jpl.org>
parents:
100315
diff
changeset
|
586 value)))) |
73224 | 587 :version "22.1" ;; Gnus 5.10.9 |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
588 :group 'mime) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
589 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
590 (defvar mm-binary-coding-system |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
591 (cond |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
592 ((mm-coding-system-p 'binary) 'binary) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
593 ((mm-coding-system-p 'no-conversion) 'no-conversion) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
594 (t nil)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
595 "100% binary coding system.") |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
596 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
597 (defvar mm-text-coding-system |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
598 (or (if (memq system-type '(windows-nt ms-dos ms-windows)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
599 (and (mm-coding-system-p 'raw-text-dos) 'raw-text-dos) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
600 (and (mm-coding-system-p 'raw-text) 'raw-text)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
601 mm-binary-coding-system) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
602 "Text-safe coding system (For removing ^M).") |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
603 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
604 (defvar mm-text-coding-system-for-write nil |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
605 "Text coding system for write.") |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
606 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
607 (defvar mm-auto-save-coding-system |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
608 (cond |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
609 ((mm-coding-system-p 'utf-8-emacs) ; Mule 7 |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
610 (if (memq system-type '(windows-nt ms-dos ms-windows)) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
611 (if (mm-coding-system-p 'utf-8-emacs-dos) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
612 'utf-8-emacs-dos mm-binary-coding-system) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
613 'utf-8-emacs)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
614 ((mm-coding-system-p 'emacs-mule) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
615 (if (memq system-type '(windows-nt ms-dos ms-windows)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
616 (if (mm-coding-system-p 'emacs-mule-dos) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
617 'emacs-mule-dos mm-binary-coding-system) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
618 'emacs-mule)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
619 ((mm-coding-system-p 'escape-quoted) 'escape-quoted) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
620 (t mm-binary-coding-system)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
621 "Coding system of auto save file.") |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
622 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
623 (defvar mm-universal-coding-system mm-auto-save-coding-system |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
624 "The universal coding system.") |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
625 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
626 ;; Fixme: some of the cars here aren't valid MIME charsets. That |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
627 ;; should only matter with XEmacs, though. |
31717 | 628 (defvar mm-mime-mule-charset-alist |
35793 | 629 `((us-ascii ascii) |
31717 | 630 (iso-8859-1 latin-iso8859-1) |
631 (iso-8859-2 latin-iso8859-2) | |
632 (iso-8859-3 latin-iso8859-3) | |
633 (iso-8859-4 latin-iso8859-4) | |
634 (iso-8859-5 cyrillic-iso8859-5) | |
635 ;; Non-mule (X)Emacs uses the last mule-charset for 8bit characters. | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
636 ;; The fake mule-charset, gnus-koi8-r, tells Gnus that the default |
31717 | 637 ;; charset is koi8-r, not iso-8859-5. |
638 (koi8-r cyrillic-iso8859-5 gnus-koi8-r) | |
639 (iso-8859-6 arabic-iso8859-6) | |
640 (iso-8859-7 greek-iso8859-7) | |
641 (iso-8859-8 hebrew-iso8859-8) | |
642 (iso-8859-9 latin-iso8859-9) | |
35148
a408e1d28e3d
(mm-mime-mule-charset-alist): Add Latin-{8,9}.
Dave Love <fx@gnu.org>
parents:
34724
diff
changeset
|
643 (iso-8859-14 latin-iso8859-14) |
a408e1d28e3d
(mm-mime-mule-charset-alist): Add Latin-{8,9}.
Dave Love <fx@gnu.org>
parents:
34724
diff
changeset
|
644 (iso-8859-15 latin-iso8859-15) |
31717 | 645 (viscii vietnamese-viscii-lower) |
646 (iso-2022-jp latin-jisx0201 japanese-jisx0208 japanese-jisx0208-1978) | |
647 (euc-kr korean-ksc5601) | |
35838
53eebdb81828
2001-02-01 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
35793
diff
changeset
|
648 (gb2312 chinese-gb2312) |
90683
70c40ef3afa5
(mm-mime-mule-charset-alist): Add gbk and GB18030.
Kenichi Handa <handa@m17n.org>
parents:
90645
diff
changeset
|
649 (gbk chinese-gbk) |
70c40ef3afa5
(mm-mime-mule-charset-alist): Add gbk and GB18030.
Kenichi Handa <handa@m17n.org>
parents:
90645
diff
changeset
|
650 (gb18030 gb18030-2-byte |
70c40ef3afa5
(mm-mime-mule-charset-alist): Add gbk and GB18030.
Kenichi Handa <handa@m17n.org>
parents:
90645
diff
changeset
|
651 gb18030-4-byte-bmp gb18030-4-byte-smp |
70c40ef3afa5
(mm-mime-mule-charset-alist): Add gbk and GB18030.
Kenichi Handa <handa@m17n.org>
parents:
90645
diff
changeset
|
652 gb18030-4-byte-ext-1 gb18030-4-byte-ext-2) |
35838
53eebdb81828
2001-02-01 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
35793
diff
changeset
|
653 (big5 chinese-big5-1 chinese-big5-2) |
31717 | 654 (tibetan tibetan) |
655 (thai-tis620 thai-tis620) | |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
656 (windows-1251 cyrillic-iso8859-5) |
31717 | 657 (iso-2022-7bit ethiopic arabic-1-column arabic-2-column) |
658 (iso-2022-jp-2 latin-iso8859-1 greek-iso8859-7 | |
659 latin-jisx0201 japanese-jisx0208-1978 | |
660 chinese-gb2312 japanese-jisx0208 | |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
661 korean-ksc5601 japanese-jisx0212) |
31717 | 662 (iso-2022-int-1 latin-iso8859-1 greek-iso8859-7 |
663 latin-jisx0201 japanese-jisx0208-1978 | |
664 chinese-gb2312 japanese-jisx0208 | |
665 korean-ksc5601 japanese-jisx0212 | |
666 chinese-cns11643-1 chinese-cns11643-2) | |
667 (iso-2022-int-1 latin-iso8859-1 latin-iso8859-2 | |
668 cyrillic-iso8859-5 greek-iso8859-7 | |
669 latin-jisx0201 japanese-jisx0208-1978 | |
670 chinese-gb2312 japanese-jisx0208 | |
671 korean-ksc5601 japanese-jisx0212 | |
672 chinese-cns11643-1 chinese-cns11643-2 | |
673 chinese-cns11643-3 chinese-cns11643-4 | |
674 chinese-cns11643-5 chinese-cns11643-6 | |
675 chinese-cns11643-7) | |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
676 (iso-2022-jp-3 latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208 |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
677 japanese-jisx0213-1 japanese-jisx0213-2) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
678 (shift_jis latin-jisx0201 katakana-jisx0201 japanese-jisx0208) |
71262 | 679 ,(cond ((fboundp 'unicode-precedence-list) |
680 (cons 'utf-8 (delq 'ascii (mapcar 'charset-name | |
681 (unicode-precedence-list))))) | |
682 ((or (not (fboundp 'charsetp)) ;; non-Mule case | |
683 (charsetp 'unicode-a) | |
684 (not (mm-coding-system-p 'mule-utf-8))) | |
685 '(utf-8 unicode-a unicode-b unicode-c unicode-d unicode-e)) | |
686 (t ;; If we have utf-8 we're in Mule 5+. | |
687 (append '(utf-8) | |
688 (delete 'ascii | |
689 (coding-system-get 'mule-utf-8 'safe-charsets)))))) | |
31717 | 690 "Alist of MIME-charset/MULE-charsets.") |
691 | |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
692 (defun mm-enrich-utf-8-by-mule-ucs () |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
693 "Make the `utf-8' MIME charset usable by the Mule-UCS package. |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
694 This function will run when the `un-define' module is loaded under |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
695 XEmacs, and fill the `utf-8' entry in `mm-mime-mule-charset-alist' |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
696 with Mule charsets. It is completely useless for Emacs." |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
697 (when (boundp 'unicode-basic-translation-charset-order-list) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
698 (condition-case nil |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
699 (let ((val (delq |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
700 'ascii |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
701 (copy-sequence |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
702 (symbol-value |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
703 'unicode-basic-translation-charset-order-list)))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
704 (elem (assq 'utf-8 mm-mime-mule-charset-alist))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
705 (if elem |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
706 (setcdr elem val) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
707 (setq mm-mime-mule-charset-alist |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
708 (nconc mm-mime-mule-charset-alist |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
709 (list (cons 'utf-8 val)))))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
710 (error)))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
711 |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
712 ;; Correct by construction, but should be unnecessary for Emacs: |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
713 (if (featurep 'xemacs) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
714 (eval-after-load "un-define" '(mm-enrich-utf-8-by-mule-ucs)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
715 (when (and (fboundp 'coding-system-list) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
716 (fboundp 'sort-coding-systems)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
717 (let ((css (sort-coding-systems (coding-system-list 'base-only))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
718 cs mime mule alist) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
719 (while css |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
720 (setq cs (pop css) |
90317
34c8b755296d
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-23
Miles Bader <miles@gnu.org>
diff
changeset
|
721 mime (or (coding-system-get cs :mime-charset); Emacs 23 (unicode) |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
722 (coding-system-get cs 'mime-charset))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
723 (when (and mime |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
724 (not (eq t (setq mule |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
725 (coding-system-get cs 'safe-charsets)))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
726 (not (assq mime alist))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
727 (push (cons mime (delq 'ascii mule)) alist))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
728 (setq mm-mime-mule-charset-alist (nreverse alist))))) |
31717 | 729 |
92153
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
730 (defvar mm-hack-charsets '(iso-8859-15 iso-2022-jp-2) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
731 "A list of special charsets. |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
732 Valid elements include: |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
733 `iso-8859-15' convert ISO-8859-1, -9 to ISO-8859-15 if ISO-8859-15 exists. |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
734 `iso-2022-jp-2' convert ISO-2022-jp to ISO-2022-jp-2 if ISO-2022-jp-2 exists." |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
735 ) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
736 |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
737 (defvar mm-iso-8859-15-compatible |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
738 '((iso-8859-1 "\xA4\xA6\xA8\xB4\xB8\xBC\xBD\xBE") |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
739 (iso-8859-9 "\xA4\xA6\xA8\xB4\xB8\xBC\xBD\xBE\xD0\xDD\xDE\xF0\xFD\xFE")) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
740 "ISO-8859-15 exchangeable coding systems and inconvertible characters.") |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
741 |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
742 (defvar mm-iso-8859-x-to-15-table |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
743 (and (fboundp 'coding-system-p) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
744 (mm-coding-system-p 'iso-8859-15) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
745 (mapcar |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
746 (lambda (cs) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
747 (if (mm-coding-system-p (car cs)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
748 (let ((c (string-to-char |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
749 (decode-coding-string "\341" (car cs))))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
750 (cons (char-charset c) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
751 (cons |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
752 (- (string-to-char |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
753 (decode-coding-string "\341" 'iso-8859-15)) c) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
754 (string-to-list (decode-coding-string (car (cdr cs)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
755 (car cs)))))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
756 '(gnus-charset 0))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
757 mm-iso-8859-15-compatible)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
758 "A table of the difference character between ISO-8859-X and ISO-8859-15.") |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
759 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
760 (defcustom mm-coding-system-priorities |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
761 (if (boundp 'current-language-environment) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
762 (let ((lang (symbol-value 'current-language-environment))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
763 (cond ((string= lang "Japanese") |
57784
55829134ac17
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-650
Miles Bader <miles@gnu.org>
parents:
57243
diff
changeset
|
764 ;; Japanese users prefer iso-2022-jp to euc-japan or |
55829134ac17
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-650
Miles Bader <miles@gnu.org>
parents:
57243
diff
changeset
|
765 ;; shift_jis, however iso-8859-1 should be used when |
55829134ac17
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-650
Miles Bader <miles@gnu.org>
parents:
57243
diff
changeset
|
766 ;; there are only ASCII text and Latin-1 characters. |
55829134ac17
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-650
Miles Bader <miles@gnu.org>
parents:
57243
diff
changeset
|
767 '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8))))) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
768 "Preferred coding systems for encoding outgoing messages. |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
769 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
770 More than one suitable coding system may be found for some text. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
771 By default, the coding system with the highest priority is used |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
772 to encode outgoing messages (see `sort-coding-systems'). If this |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
773 variable is set, it overrides the default priority." |
57153
497f0d2ca551
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-558
Miles Bader <miles@gnu.org>
parents:
56927
diff
changeset
|
774 :version "21.2" |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
775 :type '(repeat (symbol :tag "Coding system")) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
776 :group 'mime) |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
777 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
778 ;; ?? |
42500
9b68dff3d385
* mm-util.el (mm-use-find-coding-systems-region): New variable.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
42493
diff
changeset
|
779 (defvar mm-use-find-coding-systems-region |
9b68dff3d385
* mm-util.el (mm-use-find-coding-systems-region): New variable.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
42493
diff
changeset
|
780 (fboundp 'find-coding-systems-region) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
781 "Use `find-coding-systems-region' to find proper coding systems. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
782 |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
783 Setting it to nil is useful on Emacsen supporting Unicode if sending |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
784 mail with multiple parts is preferred to sending a Unicode one.") |
42500
9b68dff3d385
* mm-util.el (mm-use-find-coding-systems-region): New variable.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
42493
diff
changeset
|
785 |
31717 | 786 ;;; Internal variables: |
787 | |
788 ;;; Functions: | |
789 | |
790 (defun mm-mule-charset-to-mime-charset (charset) | |
33378 | 791 "Return the MIME charset corresponding to the given Mule CHARSET." |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
792 (if (and (fboundp 'find-coding-systems-for-charsets) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
793 (fboundp 'sort-coding-systems)) |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
794 (let ((css (sort (sort-coding-systems |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
795 (find-coding-systems-for-charsets (list charset))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
796 'mm-sort-coding-systems-predicate)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
797 cs mime) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
798 (while (and (not mime) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
799 css) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
800 (when (setq cs (pop css)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
801 (setq mime (or (coding-system-get cs :mime-charset) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
802 (coding-system-get cs 'mime-charset))))) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
803 mime) |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
804 (let ((alist (mapcar (lambda (cs) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
805 (assq cs mm-mime-mule-charset-alist)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
806 (sort (mapcar 'car mm-mime-mule-charset-alist) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
807 'mm-sort-coding-systems-predicate))) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
808 out) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
809 (while alist |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
810 (when (memq charset (cdar alist)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
811 (setq out (caar alist) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
812 alist nil)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
813 (pop alist)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
814 out))) |
31717 | 815 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
816 (eval-and-compile |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
817 (defvar mm-emacs-mule (and (not (featurep 'xemacs)) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
818 (boundp 'default-enable-multibyte-characters) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
819 default-enable-multibyte-characters |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
820 (fboundp 'set-buffer-multibyte)) |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
821 "True in Emacs with Mule.") |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
822 |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
823 (if mm-emacs-mule |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
824 (defun mm-enable-multibyte () |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
825 "Set the multibyte flag of the current buffer. |
33378 | 826 Only do this if the default value of `enable-multibyte-characters' is |
827 non-nil. This is a no-op in XEmacs." | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
828 (set-buffer-multibyte 'to)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
829 (defalias 'mm-enable-multibyte 'ignore)) |
31717 | 830 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
831 (if mm-emacs-mule |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
832 (defun mm-disable-multibyte () |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
833 "Unset the multibyte flag of in the current buffer. |
33378 | 834 This is a no-op in XEmacs." |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
835 (set-buffer-multibyte nil)) |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
836 (defalias 'mm-disable-multibyte 'ignore))) |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
837 |
31717 | 838 (defun mm-preferred-coding-system (charset) |
839 ;; A typo in some Emacs versions. | |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
840 (or (get-charset-property charset 'preferred-coding-system) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
841 (get-charset-property charset 'prefered-coding-system))) |
31717 | 842 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
843 ;; Mule charsets shouldn't be used. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
844 (defsubst mm-guess-charset () |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
845 "Guess Mule charset from the language environment." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
846 (or |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
847 mail-parse-mule-charset ;; cached mule-charset |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
848 (progn |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
849 (setq mail-parse-mule-charset |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
850 (and (boundp 'current-language-environment) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
851 (car (last |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
852 (assq 'charset |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
853 (assoc current-language-environment |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
854 language-info-alist)))))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
855 (if (or (not mail-parse-mule-charset) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
856 (eq mail-parse-mule-charset 'ascii)) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
857 (setq mail-parse-mule-charset |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
858 (or (car (last (assq mail-parse-charset |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
859 mm-mime-mule-charset-alist))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
860 ;; default |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
861 'latin-iso8859-1))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
862 mail-parse-mule-charset))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
863 |
31717 | 864 (defun mm-charset-after (&optional pos) |
865 "Return charset of a character in current buffer at position POS. | |
866 If POS is nil, it defauls to the current point. | |
867 If POS is out of range, the value is nil. | |
868 If the charset is `composition', return the actual one." | |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
869 (let ((char (char-after pos)) charset) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
870 (if (< (mm-char-int char) 128) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
871 (setq charset 'ascii) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
872 ;; charset-after is fake in some Emacsen. |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
873 (setq charset (and (fboundp 'char-charset) (char-charset char))) |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
874 (if (eq charset 'composition) ; Mule 4 |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
875 (let ((p (or pos (point)))) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
876 (cadr (find-charset-region p (1+ p)))) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
877 (if (and charset (not (memq charset '(ascii eight-bit-control |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
878 eight-bit-graphic)))) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
879 charset |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
880 (mm-guess-charset)))))) |
31717 | 881 |
882 (defun mm-mime-charset (charset) | |
33378 | 883 "Return the MIME charset corresponding to the given Mule CHARSET." |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
884 (if (eq charset 'unknown) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
885 (error "The message contains non-printable characters, please use attachment")) |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
886 (if (and (fboundp 'coding-system-get) (fboundp 'get-charset-property)) |
31717 | 887 ;; This exists in Emacs 20. |
888 (or | |
889 (and (mm-preferred-coding-system charset) | |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
890 (or (coding-system-get |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
891 (mm-preferred-coding-system charset) :mime-charset) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
892 (coding-system-get |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
893 (mm-preferred-coding-system charset) 'mime-charset))) |
31717 | 894 (and (eq charset 'ascii) |
895 'us-ascii) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
896 (mm-preferred-coding-system charset) |
31717 | 897 (mm-mule-charset-to-mime-charset charset)) |
898 ;; This is for XEmacs. | |
899 (mm-mule-charset-to-mime-charset charset))) | |
900 | |
65846
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
901 (if (fboundp 'delete-dups) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
902 (defalias 'mm-delete-duplicates 'delete-dups) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
903 (defun mm-delete-duplicates (list) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
904 "Destructively remove `equal' duplicates from LIST. |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
905 Store the result in LIST and return it. LIST must be a proper list. |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
906 Of several `equal' occurrences of an element in LIST, the first |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
907 one is kept. |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
908 |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
909 This is a compatibility function for Emacsen without `delete-dups'." |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
910 ;; Code from `subr.el' in Emacs 22: |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
911 (let ((tail list)) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
912 (while tail |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
913 (setcdr tail (delete (car tail) (cdr tail))) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
914 (setq tail (cdr tail)))) |
a4e8d78ae3fb
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-574
Miles Bader <miles@gnu.org>
parents:
64754
diff
changeset
|
915 list)) |
31717 | 916 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
917 ;; Fixme: This is used in places when it should be testing the |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
918 ;; default multibyteness. See mm-default-multibyte-p. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
919 (eval-and-compile |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
920 (if (and (not (featurep 'xemacs)) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
921 (boundp 'enable-multibyte-characters)) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
922 (defun mm-multibyte-p () |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
923 "Non-nil if multibyte is enabled in the current buffer." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
924 enable-multibyte-characters) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
925 (defun mm-multibyte-p () (featurep 'mule)))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
926 |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
927 (defun mm-default-multibyte-p () |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
928 "Return non-nil if the session is multibyte. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
929 This affects whether coding conversion should be attempted generally." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
930 (if (featurep 'mule) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
931 (if (boundp 'default-enable-multibyte-characters) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
932 default-enable-multibyte-characters |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
933 t))) |
31717 | 934 |
92153
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
935 (defun mm-iso-8859-x-to-15-region (&optional b e) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
936 (if (fboundp 'char-charset) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
937 (let (charset item c inconvertible) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
938 (save-restriction |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
939 (if e (narrow-to-region b e)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
940 (goto-char (point-min)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
941 (skip-chars-forward "\0-\177") |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
942 (while (not (eobp)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
943 (cond |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
944 ((not (setq item (assq (char-charset (setq c (char-after))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
945 mm-iso-8859-x-to-15-table))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
946 (forward-char)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
947 ((memq c (cdr (cdr item))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
948 (setq inconvertible t) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
949 (forward-char)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
950 (t |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
951 (insert-before-markers (prog1 (+ c (car (cdr item))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
952 (delete-char 1))))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
953 (skip-chars-forward "\0-\177"))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
954 (not inconvertible)))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
955 |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
956 (defun mm-sort-coding-systems-predicate (a b) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
957 (let ((priorities |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
958 (mapcar (lambda (cs) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
959 ;; Note: invalid entries are dropped silently |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
960 (and (setq cs (mm-coding-system-p cs)) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
961 (coding-system-base cs))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
962 mm-coding-system-priorities))) |
57923
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
963 (and (setq a (mm-coding-system-p a)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
964 (if (setq b (mm-coding-system-p b)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
965 (> (length (memq (coding-system-base a) priorities)) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
966 (length (memq (coding-system-base b) priorities))) |
d7def5572cf3
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Miles Bader <miles@gnu.org>
parents:
57784
diff
changeset
|
967 t)))) |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
968 |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
969 (eval-when-compile |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
970 (autoload 'latin-unity-massage-name "latin-unity") |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
971 (autoload 'latin-unity-maybe-remap "latin-unity") |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
972 (autoload 'latin-unity-representations-feasible-region "latin-unity") |
86154 | 973 (autoload 'latin-unity-representations-present-region "latin-unity")) |
974 | |
975 (defvar latin-unity-coding-systems) | |
976 (defvar latin-unity-ucs-list) | |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
977 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
978 (defun mm-xemacs-find-mime-charset-1 (begin end) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
979 "Determine which MIME charset to use to send region as message. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
980 This uses the XEmacs-specific latin-unity package to better handle the |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
981 case where identical characters from diverse ISO-8859-? character sets |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
982 can be encoded using a single one of the corresponding coding systems. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
983 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
984 It treats `mm-coding-system-priorities' as the list of preferred |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
985 coding systems; a useful example setting for this list in Western |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
986 Europe would be '(iso-8859-1 iso-8859-15 utf-8), which would default |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
987 to the very standard Latin 1 coding system, and only move to coding |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
988 systems that are less supported as is necessary to encode the |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
989 characters that exist in the buffer. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
990 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
991 Latin Unity doesn't know about those non-ASCII Roman characters that |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
992 are available in various East Asian character sets. As such, its |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
993 behavior if you have a JIS 0212 LATIN SMALL LETTER A WITH ACUTE in a |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
994 buffer and it can otherwise be encoded as Latin 1, won't be ideal. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
995 But this is very much a corner case, so don't worry about it." |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
996 (let ((systems mm-coding-system-priorities) csets psets curset) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
997 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
998 ;; Load the Latin Unity library, if available. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
999 (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity")) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1000 (require 'latin-unity)) |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1001 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1002 ;; Now, can we use it? |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1003 (if (featurep 'latin-unity) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1004 (progn |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1005 (setq csets (latin-unity-representations-feasible-region begin end) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1006 psets (latin-unity-representations-present-region begin end)) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1007 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1008 (catch 'done |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1009 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1010 ;; Pass back the first coding system in the preferred list |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1011 ;; that can encode the whole region. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1012 (dolist (curset systems) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1013 (setq curset (latin-unity-massage-name 'buffer-default curset)) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1014 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1015 ;; If the coding system is a universal coding system, then |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1016 ;; it can certainly encode all the characters in the region. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1017 (if (memq curset latin-unity-ucs-list) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1018 (throw 'done (list curset))) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1019 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1020 ;; If a coding system isn't universal, and isn't in |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1021 ;; the list that latin unity knows about, we can't |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1022 ;; decide whether to use it here. Leave that until later |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1023 ;; in `mm-find-mime-charset-region' function, whence we |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1024 ;; have been called. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1025 (unless (memq curset latin-unity-coding-systems) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1026 (throw 'done nil)) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1027 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1028 ;; Right, we know about this coding system, and it may |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1029 ;; conceivably be able to encode all the characters in |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1030 ;; the region. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1031 (if (latin-unity-maybe-remap begin end curset csets psets t) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1032 (throw 'done (list curset)))) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1033 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1034 ;; Can't encode using anything from the |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1035 ;; `mm-coding-system-priorities' list. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1036 ;; Leave `mm-find-mime-charset' to do most of the work. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1037 nil)) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1038 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1039 ;; Right, latin unity isn't available; let `mm-find-charset-region' |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1040 ;; take its default action, which equally applies to GNU Emacs. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1041 nil))) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1042 |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1043 (defmacro mm-xemacs-find-mime-charset (begin end) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1044 (when (featurep 'xemacs) |
61126
c0aa521e0ca7
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-220
Miles Bader <miles@gnu.org>
parents:
60029
diff
changeset
|
1045 `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end)))) |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1046 |
87241
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1047 (declare-function mm-delete-duplicates "mm-util" (list)) |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1048 |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1049 (defun mm-find-mime-charset-region (b e &optional hack-charsets) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1050 "Return the MIME charsets needed to encode the region between B and E. |
42206 | 1051 nil means ASCII, a single-element list represents an appropriate MIME |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1052 charset, and a longer list means no appropriate charset." |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1053 (let (charsets) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1054 ;; The return possibilities of this function are a mess... |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1055 (or (and (mm-multibyte-p) |
42500
9b68dff3d385
* mm-util.el (mm-use-find-coding-systems-region): New variable.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
42493
diff
changeset
|
1056 mm-use-find-coding-systems-region |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1057 ;; Find the mime-charset of the most preferred coding |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1058 ;; system that has one. |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1059 (let ((systems (find-coding-systems-region b e))) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1060 (when mm-coding-system-priorities |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47949
diff
changeset
|
1061 (setq systems |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1062 (sort systems 'mm-sort-coding-systems-predicate))) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1063 (setq systems (delq 'compound-text systems)) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1064 (unless (equal systems '(undecided)) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1065 (while systems |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
1066 (let* ((head (pop systems)) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
1067 (cs (or (coding-system-get head :mime-charset) |
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
1068 (coding-system-get head 'mime-charset)))) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1069 ;; The mime-charset (`x-ctext') of |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1070 ;; `compound-text' is not in the IANA list. We |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1071 ;; shouldn't normally use anything here with a |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1072 ;; mime-charset having an `x-' prefix. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1073 ;; Fixme: Allow this to be overridden, since |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1074 ;; there is existing use of x-ctext. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1075 ;; Also people apparently need the coding system |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1076 ;; `iso-2022-jp-3' (which Mule-UCS defines with |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1077 ;; mime-charset, though it's not valid). |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1078 (if (and cs |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1079 (not (string-match "^[Xx]-" (symbol-name cs))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1080 ;; UTF-16 of any variety is invalid for |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1081 ;; text parts and, unfortunately, has |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1082 ;; mime-charset defined both in Mule-UCS |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1083 ;; and versions of Emacs. (The name |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1084 ;; might be `mule-utf-16...' or |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1085 ;; `utf-16...'.) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1086 (not (string-match "utf-16" (symbol-name cs)))) |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1087 (setq systems nil |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1088 charsets (list cs)))))) |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1089 charsets)) |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1090 ;; If we're XEmacs, and some coding system is appropriate, |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1091 ;; mm-xemacs-find-mime-charset will return an appropriate list. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1092 ;; Otherwise, we'll get nil, and the next setq will get invoked. |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1093 (setq charsets (mm-xemacs-find-mime-charset b e)) |
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1094 |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90070
diff
changeset
|
1095 ;; Fixme: won't work for unibyte Emacs 23: |
89076
17b36ecfa8a8
(mm-hack-charsets, mm-iso-8859-15-compatible)
Dave Love <fx@gnu.org>
parents:
88840
diff
changeset
|
1096 |
59089
22da0004ae3c
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750
Miles Bader <miles@gnu.org>
parents:
57923
diff
changeset
|
1097 ;; We're not multibyte, or a single coding system won't cover it. |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47949
diff
changeset
|
1098 (setq charsets |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1099 (mm-delete-duplicates |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1100 (mapcar 'mm-mime-charset |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1101 (delq 'ascii |
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1102 (mm-find-charset-region b e)))))) |
92153
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1103 (if (and (> (length charsets) 1) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1104 (memq 'iso-8859-15 charsets) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1105 (memq 'iso-8859-15 hack-charsets) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1106 (save-excursion (mm-iso-8859-x-to-15-region b e))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1107 (dolist (x mm-iso-8859-15-compatible) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1108 (setq charsets (delq (car x) charsets)))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1109 (if (and (memq 'iso-2022-jp-2 charsets) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1110 (memq 'iso-2022-jp-2 hack-charsets)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1111 (setq charsets (delq 'iso-2022-jp charsets))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1112 ;; Attempt to reduce the number of charsets if utf-8 is available. |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1113 (if (and (featurep 'xemacs) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1114 (> (length charsets) 1) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1115 (mm-coding-system-p 'utf-8)) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1116 (let ((mm-coding-system-priorities |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1117 (cons 'utf-8 mm-coding-system-priorities))) |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1118 (setq charsets |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1119 (mm-delete-duplicates |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1120 (mapcar 'mm-mime-charset |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1121 (delq 'ascii |
37d6263f580b
Revert removal of `mm-hack-charsets' in Gnus
Miles Bader <miles@gnu.org>
parents:
91718
diff
changeset
|
1122 (mm-find-charset-region b e))))))) |
41494
933ab100fb4a
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40621
diff
changeset
|
1123 charsets)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1124 |
31717 | 1125 (defmacro mm-with-unibyte-buffer (&rest forms) |
1126 "Create a temporary buffer, and evaluate FORMS there like `progn'. | |
33378 | 1127 Use unibyte mode for this." |
93728
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1128 `(with-temp-buffer |
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1129 (mm-disable-multibyte) |
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1130 ,@forms)) |
31717 | 1131 (put 'mm-with-unibyte-buffer 'lisp-indent-function 0) |
1132 (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body)) | |
1133 | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1134 (defmacro mm-with-multibyte-buffer (&rest forms) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1135 "Create a temporary buffer, and evaluate FORMS there like `progn'. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1136 Use multibyte mode for this." |
93728
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1137 `(with-temp-buffer |
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1138 (mm-enable-multibyte) |
c963dc42db06
(mm-with-unibyte-buffer, mm-with-multibyte-buffer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93106
diff
changeset
|
1139 ,@forms)) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1140 (put 'mm-with-multibyte-buffer 'lisp-indent-function 0) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1141 (put 'mm-with-multibyte-buffer 'edebug-form-spec '(body)) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1142 |
31717 | 1143 (defmacro mm-with-unibyte-current-buffer (&rest forms) |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
1144 "Evaluate FORMS with current buffer temporarily made unibyte. |
33378 | 1145 Also bind `default-enable-multibyte-characters' to nil. |
69247
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1146 Equivalent to `progn' in XEmacs |
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1147 |
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1148 NOTE: Use this macro with caution in multibyte buffers (it is not |
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1149 worth using this macro in unibyte buffers of course). Use of |
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1150 `(set-buffer-multibyte t)', which is run finally, is generally |
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1151 harmful since it is likely to modify existing data in the buffer. |
69304
55d8c694b9cf
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-139
Miles Bader <miles@gnu.org>
parents:
69247
diff
changeset
|
1152 For instance, it converts \"\\300\\255\" into \"\\255\" in |
55d8c694b9cf
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-139
Miles Bader <miles@gnu.org>
parents:
69247
diff
changeset
|
1153 Emacs 23 (unicode)." |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1154 (let ((multibyte (make-symbol "multibyte")) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1155 (buffer (make-symbol "buffer"))) |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47949
diff
changeset
|
1156 `(if mm-emacs-mule |
69247
6580c61aced7
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134
Miles Bader <miles@gnu.org>
parents:
69135
diff
changeset
|
1157 (let ((,multibyte enable-multibyte-characters) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1158 (,buffer (current-buffer))) |
33378 | 1159 (unwind-protect |
1160 (let (default-enable-multibyte-characters) | |
1161 (set-buffer-multibyte nil) | |
1162 ,@forms) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1163 (set-buffer ,buffer) |
33378 | 1164 (set-buffer-multibyte ,multibyte))) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1165 (let (default-enable-multibyte-characters) |
33378 | 1166 ,@forms)))) |
31717 | 1167 (put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0) |
1168 (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body)) | |
1169 | |
1170 (defun mm-find-charset-region (b e) | |
33378 | 1171 "Return a list of Emacs charsets in the region B to E." |
31717 | 1172 (cond |
1173 ((and (mm-multibyte-p) | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1174 (fboundp 'find-charset-region)) |
31717 | 1175 ;; Remove composition since the base charsets have been included. |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1176 ;; Remove eight-bit-*, treat them as ascii. |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1177 (let ((css (find-charset-region b e))) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1178 (dolist (cs |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1179 '(composition eight-bit-control eight-bit-graphic control-1) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1180 css) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1181 (setq css (delq cs css))))) |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1182 (t |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1183 ;; We are in a unibyte buffer or XEmacs non-mule, so we futz around a bit. |
31717 | 1184 (save-excursion |
1185 (save-restriction | |
1186 (narrow-to-region b e) | |
1187 (goto-char (point-min)) | |
1188 (skip-chars-forward "\0-\177") | |
1189 (if (eobp) | |
1190 '(ascii) | |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1191 (let (charset) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1192 (setq charset |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1193 (and (boundp 'current-language-environment) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1194 (car (last (assq 'charset |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1195 (assoc current-language-environment |
32976
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1196 language-info-alist)))))) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1197 (if (eq charset 'ascii) (setq charset nil)) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1198 (or charset |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1199 (setq charset |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1200 (car (last (assq mail-parse-charset |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1201 mm-mime-mule-charset-alist))))) |
aa9dc4e7c5ac
2000-10-27 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
32414
diff
changeset
|
1202 (list 'ascii (or charset 'latin-iso8859-1))))))))) |
31717 | 1203 |
1204 (defun mm-auto-mode-alist () | |
1205 "Return an `auto-mode-alist' with only the .gz (etc) thingies." | |
1206 (let ((alist auto-mode-alist) | |
1207 out) | |
1208 (while alist | |
1209 (when (listp (cdar alist)) | |
1210 (push (car alist) out)) | |
1211 (pop alist)) | |
1212 (nreverse out))) | |
1213 | |
1214 (defvar mm-inhibit-file-name-handlers | |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1215 '(jka-compr-handler image-file-handler epa-file-handler) |
31717 | 1216 "A list of handlers doing (un)compression (etc) thingies.") |
1217 | |
1218 (defun mm-insert-file-contents (filename &optional visit beg end replace | |
1219 inhibit) | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1220 "Like `insert-file-contents', but only reads in the file. |
31717 | 1221 A buffer may be modified in several ways after reading into the buffer due |
1222 to advanced Emacs features, such as file-name-handlers, format decoding, | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1223 `find-file-hooks', etc. |
47949
33e1238070a2
(mm-mime-mule-charset-alist): Require when compiling.
Dave Love <fx@gnu.org>
parents:
44075
diff
changeset
|
1224 If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'. |
31717 | 1225 This function ensures that none of these modifications will take place." |
62943
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1226 (let* ((format-alist nil) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1227 (auto-mode-alist (if inhibit nil (mm-auto-mode-alist))) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1228 (default-major-mode 'fundamental-mode) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1229 (enable-local-variables nil) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1230 (after-insert-file-functions nil) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1231 (enable-local-eval nil) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1232 (inhibit-file-name-operation (if inhibit |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1233 'insert-file-contents |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1234 inhibit-file-name-operation)) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1235 (inhibit-file-name-handlers |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1236 (if inhibit |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1237 (append mm-inhibit-file-name-handlers |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1238 inhibit-file-name-handlers) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1239 inhibit-file-name-handlers)) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1240 (ffh (if (boundp 'find-file-hook) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1241 'find-file-hook |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1242 'find-file-hooks)) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1243 (val (symbol-value ffh))) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1244 (set ffh nil) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1245 (unwind-protect |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1246 (insert-file-contents filename visit beg end replace) |
11d53dd5abd9
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-345
Miles Bader <miles@gnu.org>
parents:
61519
diff
changeset
|
1247 (set ffh val)))) |
31717 | 1248 |
1249 (defun mm-append-to-file (start end filename &optional codesys inhibit) | |
1250 "Append the contents of the region to the end of file FILENAME. | |
1251 When called from a function, expects three arguments, | |
1252 START, END and FILENAME. START and END are buffer positions | |
1253 saying what text to write. | |
1254 Optional fourth argument specifies the coding system to use when | |
1255 encoding the file. | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1256 If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'." |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1257 (let ((coding-system-for-write |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1258 (or codesys mm-text-coding-system-for-write |
31717 | 1259 mm-text-coding-system)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1260 (inhibit-file-name-operation (if inhibit |
31717 | 1261 'append-to-file |
1262 inhibit-file-name-operation)) | |
1263 (inhibit-file-name-handlers | |
1264 (if inhibit | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1265 (append mm-inhibit-file-name-handlers |
31717 | 1266 inhibit-file-name-handlers) |
1267 inhibit-file-name-handlers))) | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1268 (write-region start end filename t 'no-message) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1269 (message "Appended to %s" filename))) |
31717 | 1270 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1271 (defun mm-write-region (start end filename &optional append visit lockname |
31717 | 1272 coding-system inhibit) |
1273 | |
1274 "Like `write-region'. | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1275 If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'." |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1276 (let ((coding-system-for-write |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1277 (or coding-system mm-text-coding-system-for-write |
31717 | 1278 mm-text-coding-system)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1279 (inhibit-file-name-operation (if inhibit |
31717 | 1280 'write-region |
1281 inhibit-file-name-operation)) | |
1282 (inhibit-file-name-handlers | |
1283 (if inhibit | |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1284 (append mm-inhibit-file-name-handlers |
31717 | 1285 inhibit-file-name-handlers) |
1286 inhibit-file-name-handlers))) | |
1287 (write-region start end filename append visit lockname))) | |
1288 | |
87241
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1289 (autoload 'gmm-write-region "gmm-utils") |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1290 |
68940
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1291 ;; It is not a MIME function, but some MIME functions use it. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1292 (if (and (fboundp 'make-temp-file) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1293 (ignore-errors |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1294 (let ((def (symbol-function 'make-temp-file))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1295 (and (byte-code-function-p def) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1296 (setq def (if (fboundp 'compiled-function-arglist) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1297 ;; XEmacs |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1298 (eval (list 'compiled-function-arglist def)) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1299 (aref def 0))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1300 (>= (length def) 4) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1301 (eq (nth 3 def) 'suffix))))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1302 (defalias 'mm-make-temp-file 'make-temp-file) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1303 ;; Stolen (and modified for XEmacs) from Emacs 22. |
68940
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1304 (defun mm-make-temp-file (prefix &optional dir-flag suffix) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1305 "Create a temporary file. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1306 The returned file name (created by appending some random characters at the end |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1307 of PREFIX, and expanding against `temporary-file-directory' if necessary), |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1308 is guaranteed to point to a newly created empty file. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1309 You can then use `write-region' to write new data into the file. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1310 |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1311 If DIR-FLAG is non-nil, create a new empty directory instead of a file. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1312 |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1313 If SUFFIX is non-nil, add that at the end of the file name." |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1314 (let ((umask (default-file-modes)) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1315 file) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1316 (unwind-protect |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1317 (progn |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1318 ;; Create temp files with strict access rights. It's easy to |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1319 ;; loosen them later, whereas it's impossible to close the |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1320 ;; time-window of loose permissions otherwise. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1321 (set-default-file-modes 448) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1322 (while (condition-case err |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1323 (progn |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1324 (setq file |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1325 (make-temp-name |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1326 (expand-file-name |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1327 prefix |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1328 (if (fboundp 'temp-directory) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1329 ;; XEmacs |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1330 (temp-directory) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1331 temporary-file-directory)))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1332 (if suffix |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1333 (setq file (concat file suffix))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1334 (if dir-flag |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1335 (make-directory file) |
73370 | 1336 ;; NOTE: This is unsafe if Emacs 20 |
1337 ;; users and XEmacs users don't use | |
1338 ;; a secure temp directory. | |
1339 (gmm-write-region "" nil file nil 'silent | |
1340 nil 'excl)) | |
68940
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1341 nil) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1342 (file-already-exists t) |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1343 ;; The XEmacs version of `make-directory' issues |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1344 ;; `file-error'. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1345 (file-error (or (and (featurep 'xemacs) |
68940
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1346 (file-exists-p file)) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1347 (signal (car err) (cdr err))))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1348 ;; the file was somehow created by someone else between |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1349 ;; `make-temp-name' and `write-region', let's try again. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1350 nil) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1351 file) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1352 ;; Reset the umask. |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1353 (set-default-file-modes umask))))) |
808f636eb13e
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-93
Miles Bader <miles@gnu.org>
parents:
68633
diff
changeset
|
1354 |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1355 (defun mm-image-load-path (&optional package) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1356 (let (dir result) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1357 (dolist (path load-path (nreverse result)) |
57243
c5e16264557d
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
Miles Bader <miles@gnu.org>
parents:
57153
diff
changeset
|
1358 (when (and path |
c5e16264557d
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
Miles Bader <miles@gnu.org>
parents:
57153
diff
changeset
|
1359 (file-directory-p |
c5e16264557d
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
Miles Bader <miles@gnu.org>
parents:
57153
diff
changeset
|
1360 (setq dir (concat (file-name-directory |
c5e16264557d
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
Miles Bader <miles@gnu.org>
parents:
57153
diff
changeset
|
1361 (directory-file-name path)) |
60029
210af0ad3d35
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-96
Miles Bader <miles@gnu.org>
parents:
59089
diff
changeset
|
1362 "etc/images/" (or package "gnus/"))))) |
57243
c5e16264557d
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
Miles Bader <miles@gnu.org>
parents:
57153
diff
changeset
|
1363 (push dir result)) |
40542
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1364 (push path result)))) |
93f6c74a2f60
* mm-util.el, nnultimate.el, nnweb.el, nnslashdot.el: Sync with
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39339
diff
changeset
|
1365 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1366 ;; Fixme: This doesn't look useful where it's used. |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1367 (if (fboundp 'detect-coding-region) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1368 (defun mm-detect-coding-region (start end) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1369 "Like `detect-coding-region' except returning the best one." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1370 (let ((coding-systems |
61434
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
1371 (detect-coding-region start end))) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1372 (or (car-safe coding-systems) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1373 coding-systems))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1374 (defun mm-detect-coding-region (start end) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1375 (let ((point (point))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1376 (goto-char start) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1377 (skip-chars-forward "\0-\177" end) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1378 (prog1 |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1379 (if (eq (point) end) 'ascii (mm-guess-charset)) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1380 (goto-char point))))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1381 |
87241
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1382 (declare-function mm-detect-coding-region "mm-util" (start end)) |
4d24ed4358ae
Add declare-function compatibility definition.
Glenn Morris <rgm@gnu.org>
parents:
86154
diff
changeset
|
1383 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1384 (if (fboundp 'coding-system-get) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1385 (defun mm-detect-mime-charset-region (start end) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1386 "Detect MIME charset of the text in the region between START and END." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1387 (let ((cs (mm-detect-coding-region start end))) |
70052
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
1388 (or (coding-system-get cs :mime-charset) |
261c2dbe91d2
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
69304
diff
changeset
|
1389 (coding-system-get cs 'mime-charset)))) |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1390 (defun mm-detect-mime-charset-region (start end) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1391 "Detect MIME charset of the text in the region between START and END." |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1392 (let ((cs (mm-detect-coding-region start end))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1393 cs))) |
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
53617
diff
changeset
|
1394 |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1395 (eval-when-compile |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1396 (unless (fboundp 'coding-system-to-mime-charset) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1397 (defalias 'coding-system-to-mime-charset 'ignore))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1398 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1399 (defun mm-coding-system-to-mime-charset (coding-system) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1400 "Return the MIME charset corresponding to CODING-SYSTEM. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1401 To make this function work with XEmacs, the APEL package is required." |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1402 (when coding-system |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1403 (or (and (fboundp 'coding-system-get) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1404 (or (coding-system-get coding-system :mime-charset) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1405 (coding-system-get coding-system 'mime-charset))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1406 (and (featurep 'xemacs) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1407 (or (and (fboundp 'coding-system-to-mime-charset) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1408 (not (eq (symbol-function 'coding-system-to-mime-charset) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1409 'ignore))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1410 (and (condition-case nil |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1411 (require 'mcharset) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1412 (error nil)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1413 (fboundp 'coding-system-to-mime-charset))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1414 (coding-system-to-mime-charset coding-system))))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1415 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1416 (eval-when-compile |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1417 (require 'jka-compr)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1418 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1419 (defun mm-decompress-buffer (filename &optional inplace force) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1420 "Decompress buffer's contents, depending on jka-compr. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1421 Only when FORCE is t or `auto-compression-mode' is enabled and FILENAME |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1422 agrees with `jka-compr-compression-info-list', decompression is done. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1423 Signal an error if FORCE is neither nil nor t and compressed data are |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1424 not decompressed because `auto-compression-mode' is disabled. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1425 If INPLACE is nil, return decompressed data or nil without modifying |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1426 the buffer. Otherwise, replace the buffer's contents with the |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1427 decompressed data. The buffer's multibyteness must be turned off." |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1428 (when (and filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1429 (if force |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1430 (prog1 t (require 'jka-compr)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1431 (and (fboundp 'jka-compr-installed-p) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1432 (jka-compr-installed-p)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1433 (let ((info (jka-compr-get-compression-info filename))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1434 (when info |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1435 (unless (or (memq force (list nil t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1436 (jka-compr-installed-p)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1437 (error "")) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1438 (let ((prog (jka-compr-info-uncompress-program info)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1439 (args (jka-compr-info-uncompress-args info)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1440 (msg (format "%s %s..." |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1441 (jka-compr-info-uncompress-message info) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1442 filename)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1443 (err-file (jka-compr-make-temp-name)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1444 (cur (current-buffer)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1445 (coding-system-for-read mm-binary-coding-system) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1446 (coding-system-for-write mm-binary-coding-system) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1447 retval err-msg) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1448 (message "%s" msg) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1449 (mm-with-unibyte-buffer |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1450 (insert-buffer-substring cur) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1451 (condition-case err |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1452 (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1453 (unless (memq (apply 'call-process-region |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1454 (point-min) (point-max) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1455 prog t (list t err-file) nil args) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1456 jka-compr-acceptable-retval-list) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1457 (erase-buffer) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1458 (insert (mapconcat |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1459 'identity |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1460 (delete "" (split-string |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1461 (prog2 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1462 (insert-file-contents err-file) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1463 (buffer-string) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1464 (erase-buffer)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1465 " ") |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1466 "\n") |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1467 (setq err-msg |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1468 (format "Error while executing \"%s %s < %s\"" |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1469 prog (mapconcat 'identity args " ") |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1470 filename))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1471 (setq retval (buffer-string))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1472 (error |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1473 (setq err-msg (error-message-string err))))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1474 (when (file-exists-p err-file) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1475 (ignore-errors (jka-compr-delete-temp-file err-file))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1476 (when inplace |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1477 (unless err-msg |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1478 (delete-region (point-min) (point-max)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1479 (insert retval)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1480 (setq retval nil)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1481 (message "%s" (or err-msg (concat msg "done"))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1482 retval))))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1483 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1484 (eval-when-compile |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1485 (unless (fboundp 'coding-system-name) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1486 (defalias 'coding-system-name 'ignore)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1487 (unless (fboundp 'find-file-coding-system-for-read-from-filename) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1488 (defalias 'find-file-coding-system-for-read-from-filename 'ignore)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1489 (unless (fboundp 'find-operation-coding-system) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1490 (defalias 'find-operation-coding-system 'ignore))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1491 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1492 (defun mm-find-buffer-file-coding-system (&optional filename) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1493 "Find coding system used to decode the contents of the current buffer. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1494 This function looks for the coding system magic cookie or examines the |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1495 coding system specified by `file-coding-system-alist' being associated |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1496 with FILENAME which defaults to `buffer-file-name'. Data compressed by |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1497 gzip, bzip2, etc. are allowed." |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1498 (unless filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1499 (setq filename buffer-file-name)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1500 (save-excursion |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1501 (let ((decomp (unless ;; No worth to examine charset of tar files. |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1502 (and filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1503 (string-match |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1504 "\\.\\(?:tar\\.[^.]+\\|tbz\\|tgz\\)\\'" |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1505 filename)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1506 (mm-decompress-buffer filename nil t)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1507 (when decomp |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1508 (set-buffer (let (default-enable-multibyte-characters) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1509 (generate-new-buffer " *temp*"))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1510 (insert decomp) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1511 (setq filename (file-name-sans-extension filename))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1512 (goto-char (point-min)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1513 (prog1 |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1514 (cond |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1515 ((boundp 'set-auto-coding-function) ;; Emacs |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1516 (if filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1517 (or (funcall (symbol-value 'set-auto-coding-function) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1518 filename (- (point-max) (point-min))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1519 (car (find-operation-coding-system 'insert-file-contents |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1520 filename))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1521 (let (auto-coding-alist) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1522 (condition-case nil |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1523 (funcall (symbol-value 'set-auto-coding-function) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1524 nil (- (point-max) (point-min))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1525 (error nil))))) |
86154 | 1526 ((and (featurep 'xemacs) (featurep 'file-coding)) ;; XEmacs |
85712
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1527 (let ((case-fold-search t) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1528 (end (point-at-eol)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1529 codesys start) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1530 (or |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1531 (and (re-search-forward "-\\*-+[\t ]*" end t) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1532 (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1533 (setq start (match-end 0)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1534 (re-search-forward "[\t ]*-+\\*-" end t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1535 (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1536 (setq end (match-beginning 0)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1537 (goto-char start) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1538 (or (looking-at "coding:[\t ]*\\([^\t ;]+\\)") |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1539 (re-search-forward |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1540 "[\t ;]+coding:[\t ]*\\([^\t ;]+\\)" |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1541 end t))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1542 (find-coding-system (setq codesys |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1543 (intern (match-string 1)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1544 codesys) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1545 (and (re-search-forward "^[\t ]*;+[\t ]*Local[\t ]+Variables:" |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1546 nil t) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1547 (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1548 (setq start (match-end 0)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1549 (re-search-forward "^[\t ]*;+[\t ]*End:" nil t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1550 (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1551 (setq end (match-beginning 0)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1552 (goto-char start) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1553 (re-search-forward |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1554 "^[\t ]*;+[\t ]*coding:[\t ]*\\([^\t\n\r ]+\\)" |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1555 end t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1556 (find-coding-system (setq codesys |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1557 (intern (match-string 1)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1558 codesys) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1559 (and (progn |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1560 (goto-char (point-min)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1561 (setq case-fold-search nil) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1562 (re-search-forward "^;;;coding system: " |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1563 ;;(+ (point-min) 3000) t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1564 nil t)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1565 (looking-at "[^\t\n\r ]+") |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1566 (find-coding-system |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1567 (setq codesys (intern (match-string 0)))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1568 codesys) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1569 (and filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1570 (setq codesys |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1571 (find-file-coding-system-for-read-from-filename |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1572 filename)) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1573 (coding-system-name (coding-system-base codesys))))))) |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1574 (when decomp |
a3c27999decb
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Miles Bader <miles@gnu.org>
parents:
79022
diff
changeset
|
1575 (kill-buffer (current-buffer))))))) |
44075
7782e54757bb
* mail-source.el (make-source-make-complex-temp-name): Use
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
42500
diff
changeset
|
1576 |
31717 | 1577 (provide 'mm-util) |
1578 | |
61434
6d07c19816b9
(mm-string-to-multibyte): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61424
diff
changeset
|
1579 ;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238 |
31717 | 1580 ;;; mm-util.el ends here |