Mercurial > emacs
comparison lisp/gnus/mailcap.el @ 88155:d7ddb3e565de
sync with trunk
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Mon, 16 Jan 2006 00:03:54 +0000 |
parents | 0d8b17d428b5 |
children |
comparison
equal
deleted
inserted
replaced
88154:8ce476d3ba36 | 88155:d7ddb3e565de |
---|---|
1 ;;; mailcap.el --- MIME media types configuration | 1 ;;; mailcap.el --- MIME media types configuration |
2 ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. | 2 |
3 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, | |
4 ;; 2005 Free Software Foundation, Inc. | |
3 | 5 |
4 ;; Author: William M. Perry <wmperry@aventail.com> | 6 ;; Author: William M. Perry <wmperry@aventail.com> |
5 ;; Lars Magne Ingebrigtsen <larsi@gnus.org> | 7 ;; Lars Magne Ingebrigtsen <larsi@gnus.org> |
6 ;; Keywords: news, mail, multimedia | 8 ;; Keywords: news, mail, multimedia |
7 | 9 |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
18 ;; GNU General Public License for more details. | 20 ;; GNU General Public License for more details. |
19 | 21 |
20 ;; You should have received a copy of the GNU General Public License | 22 ;; You should have received a copy of the GNU General Public License |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the | 23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
23 ;; Boston, MA 02111-1307, USA. | 25 ;; Boston, MA 02110-1301, USA. |
24 | 26 |
25 ;;; Commentary: | 27 ;;; Commentary: |
26 | 28 |
27 ;; Provides configuration of MIME media types from directly from Lisp | 29 ;; Provides configuration of MIME media types from directly from Lisp |
28 ;; and via the usual mailcap mechanism (RFC 1524). Deals with | 30 ;; and via the usual mailcap mechanism (RFC 1524). Deals with |
44 (modify-syntax-entry ?' "\"" table) | 46 (modify-syntax-entry ?' "\"" table) |
45 (modify-syntax-entry ?` "\"" table) | 47 (modify-syntax-entry ?` "\"" table) |
46 (modify-syntax-entry ?{ "(" table) | 48 (modify-syntax-entry ?{ "(" table) |
47 (modify-syntax-entry ?} ")" table) | 49 (modify-syntax-entry ?} ")" table) |
48 table) | 50 table) |
49 "A syntax table for parsing sgml attributes.") | 51 "A syntax table for parsing SGML attributes.") |
52 | |
53 (eval-and-compile | |
54 (when (featurep 'xemacs) | |
55 (condition-case nil | |
56 (require 'lpr) | |
57 (error nil)))) | |
58 | |
59 (defvar mailcap-print-command | |
60 (mapconcat 'identity | |
61 (cons (if (boundp 'lpr-command) | |
62 lpr-command | |
63 "lpr") | |
64 (when (boundp 'lpr-switches) | |
65 (if (stringp lpr-switches) | |
66 (list lpr-switches) | |
67 lpr-switches))) | |
68 " ") | |
69 "Shell command (including switches) used to print Postscript files.") | |
50 | 70 |
51 ;; Postpone using defcustom for this as it's so big and we essentially | 71 ;; Postpone using defcustom for this as it's so big and we essentially |
52 ;; have to have two copies of the data around then. Perhaps just | 72 ;; have to have two copies of the data around then. Perhaps just |
53 ;; customize the Lisp viewers and rely on the normal configuration | 73 ;; customize the Lisp viewers and rely on the normal configuration |
54 ;; files for the rest? -- fx | 74 ;; files for the rest? -- fx |
55 (defvar mailcap-mime-data | 75 (defvar mailcap-mime-data |
56 '(("application" | 76 `(("application" |
77 ("vnd.ms-excel" | |
78 (viewer . "gnumeric %s") | |
79 (test . (getenv "DISPLAY")) | |
80 (type . "application/vnd.ms-excel")) | |
57 ("x-x509-ca-cert" | 81 ("x-x509-ca-cert" |
58 (viewer . ssl-view-site-cert) | 82 (viewer . ssl-view-site-cert) |
59 (test . (fboundp 'ssl-view-site-cert)) | 83 (test . (fboundp 'ssl-view-site-cert)) |
60 (type . "application/x-x509-ca-cert")) | 84 (type . "application/x-x509-ca-cert")) |
61 ("x-x509-user-cert" | 85 ("x-x509-user-cert" |
64 (type . "application/x-x509-user-cert")) | 88 (type . "application/x-x509-user-cert")) |
65 ("octet-stream" | 89 ("octet-stream" |
66 (viewer . mailcap-save-binary-file) | 90 (viewer . mailcap-save-binary-file) |
67 (non-viewer . t) | 91 (non-viewer . t) |
68 (type . "application/octet-stream")) | 92 (type . "application/octet-stream")) |
69 ;;; XEmacs says `ns' device-type not implemented. | |
70 ;; ("dvi" | |
71 ;; (viewer . "open %s") | |
72 ;; (type . "application/dvi") | |
73 ;; (test . (eq (mm-device-type) 'ns))) | |
74 ("dvi" | 93 ("dvi" |
75 (viewer . "xdvi %s") | 94 (viewer . "xdvi -safer %s") |
76 (test . (eq (mm-device-type) 'x)) | 95 (test . (eq window-system 'x)) |
77 ("needsx11") | 96 ("needsx11") |
78 (type . "application/dvi")) | 97 (type . "application/dvi") |
98 ("print" . "dvips -qRP %s")) | |
79 ("dvi" | 99 ("dvi" |
80 (viewer . "dvitty %s") | 100 (viewer . "dvitty %s") |
81 (test . (not (getenv "DISPLAY"))) | 101 (test . (not (getenv "DISPLAY"))) |
82 (type . "application/dvi")) | 102 (type . "application/dvi") |
103 ("print" . "dvips -qRP %s")) | |
83 ("emacs-lisp" | 104 ("emacs-lisp" |
84 (viewer . mailcap-maybe-eval) | 105 (viewer . mailcap-maybe-eval) |
85 (type . "application/emacs-lisp")) | 106 (type . "application/emacs-lisp")) |
107 ("x-emacs-lisp" | |
108 (viewer . mailcap-maybe-eval) | |
109 (type . "application/x-emacs-lisp")) | |
86 ("x-tar" | 110 ("x-tar" |
87 (viewer . mailcap-save-binary-file) | 111 (viewer . mailcap-save-binary-file) |
88 (non-viewer . t) | 112 (non-viewer . t) |
89 (type . "application/x-tar")) | 113 (type . "application/x-tar")) |
90 ("x-latex" | 114 ("x-latex" |
110 ("zip" | 134 ("zip" |
111 (viewer . mailcap-save-binary-file) | 135 (viewer . mailcap-save-binary-file) |
112 (non-viewer . t) | 136 (non-viewer . t) |
113 (type . "application/zip") | 137 (type . "application/zip") |
114 ("copiousoutput")) | 138 ("copiousoutput")) |
115 ;; Prefer free viewers. | |
116 ("pdf" | 139 ("pdf" |
117 (viewer . "gv %s") | 140 (viewer . "gv -safer %s") |
118 (type . "application/pdf") | 141 (type . "application/pdf") |
119 (test . window-system)) | 142 (test . window-system) |
143 ("print" . ,(concat "pdf2ps %s - | " mailcap-print-command))) | |
144 ("pdf" | |
145 (viewer . "gpdf %s") | |
146 (type . "application/pdf") | |
147 ("print" . ,(concat "pdftops %s - | " mailcap-print-command)) | |
148 (test . (eq window-system 'x))) | |
120 ("pdf" | 149 ("pdf" |
121 (viewer . "xpdf %s") | 150 (viewer . "xpdf %s") |
122 (type . "application/pdf") | 151 (type . "application/pdf") |
123 (test . (eq (mm-device-type) 'x))) | 152 ("print" . ,(concat "pdftops %s - | " mailcap-print-command)) |
153 (test . (eq window-system 'x))) | |
124 ("pdf" | 154 ("pdf" |
125 (viewer . "acroread %s") | 155 (viewer . ,(concat "pdftotext %s -")) |
126 (type . "application/pdf")) | 156 (type . "application/pdf") |
127 ;;; XEmacs says `ns' device-type not implemented. | 157 ("print" . ,(concat "pdftops %s - | " mailcap-print-command)) |
128 ;; ("postscript" | 158 ("copiousoutput")) |
129 ;; (viewer . "open %s") | |
130 ;; (type . "application/postscript") | |
131 ;; (test . (eq (mm-device-type) 'ns))) | |
132 ("postscript" | 159 ("postscript" |
133 (viewer . "gv -safer %s") | 160 (viewer . "gv -safer %s") |
134 (type . "application/postscript") | 161 (type . "application/postscript") |
135 (test . window-system) | 162 (test . window-system) |
163 ("print" . ,(concat mailcap-print-command " %s")) | |
136 ("needsx11")) | 164 ("needsx11")) |
137 ("postscript" | 165 ("postscript" |
138 (viewer . "ghostview -dSAFER %s") | 166 (viewer . "ghostview -dSAFER %s") |
139 (type . "application/postscript") | 167 (type . "application/postscript") |
140 (test . (eq (mm-device-type) 'x)) | 168 (test . (eq window-system 'x)) |
169 ("print" . ,(concat mailcap-print-command " %s")) | |
141 ("needsx11")) | 170 ("needsx11")) |
142 ("postscript" | 171 ("postscript" |
143 (viewer . "ps2ascii %s") | 172 (viewer . "ps2ascii %s") |
144 (type . "application/postscript") | 173 (type . "application/postscript") |
145 (test . (not (getenv "DISPLAY"))) | 174 (test . (not (getenv "DISPLAY"))) |
146 ("copiousoutput"))) | 175 ("print" . ,(concat mailcap-print-command " %s")) |
176 ("copiousoutput")) | |
177 ("sieve" | |
178 (viewer . sieve-mode) | |
179 (test . (fboundp 'sieve-mode)) | |
180 (type . "application/sieve")) | |
181 ("pgp-keys" | |
182 (viewer . "gpg --import --interactive --verbose") | |
183 (type . "application/pgp-keys") | |
184 ("needsterminal"))) | |
147 ("audio" | 185 ("audio" |
148 ("x-mpeg" | 186 ("x-mpeg" |
149 (viewer . "maplay %s") | 187 (viewer . "maplay %s") |
150 (type . "audio/x-mpeg")) | 188 (type . "audio/x-mpeg")) |
151 (".*" | 189 (".*" |
171 ("image" | 209 ("image" |
172 ("x-xwd" | 210 ("x-xwd" |
173 (viewer . "xwud -in %s") | 211 (viewer . "xwud -in %s") |
174 (type . "image/x-xwd") | 212 (type . "image/x-xwd") |
175 ("compose" . "xwd -frame > %s") | 213 ("compose" . "xwd -frame > %s") |
176 (test . (eq (mm-device-type) 'x)) | 214 (test . (eq window-system 'x)) |
177 ("needsx11")) | 215 ("needsx11")) |
178 ("x11-dump" | 216 ("x11-dump" |
179 (viewer . "xwud -in %s") | 217 (viewer . "xwud -in %s") |
180 (type . "image/x-xwd") | 218 (type . "image/x-xwd") |
181 ("compose" . "xwd -frame > %s") | 219 ("compose" . "xwd -frame > %s") |
182 (test . (eq (mm-device-type) 'x)) | 220 (test . (eq window-system 'x)) |
183 ("needsx11")) | 221 ("needsx11")) |
184 ("windowdump" | 222 ("windowdump" |
185 (viewer . "xwud -in %s") | 223 (viewer . "xwud -in %s") |
186 (type . "image/x-xwd") | 224 (type . "image/x-xwd") |
187 ("compose" . "xwd -frame > %s") | 225 ("compose" . "xwd -frame > %s") |
188 (test . (eq (mm-device-type) 'x)) | 226 (test . (eq window-system 'x)) |
189 ("needsx11")) | 227 ("needsx11")) |
190 ;;; XEmacs says `ns' device-type not implemented. | |
191 ;; (".*" | |
192 ;; (viewer . "aopen %s") | |
193 ;; (type . "image/*") | |
194 ;; (test . (eq (mm-device-type) 'ns))) | |
195 (".*" | 228 (".*" |
196 (viewer . "display %s") | 229 (viewer . "display %s") |
197 (type . "image/*") | 230 (type . "image/*") |
198 (test . (eq (mm-device-type) 'x)) | 231 (test . (eq window-system 'x)) |
199 ("needsx11")) | 232 ("needsx11")) |
200 (".*" | 233 (".*" |
201 (viewer . "ee %s") | 234 (viewer . "ee %s") |
202 (type . "image/*") | 235 (type . "image/*") |
203 (test . (eq (mm-device-type) 'x)) | 236 (test . (eq window-system 'x)) |
204 ("needsx11"))) | 237 ("needsx11"))) |
205 ("text" | 238 ("text" |
206 ("plain" | 239 ("plain" |
207 (viewer . w3-mode) | 240 (viewer . w3-mode) |
208 (test . (fboundp 'w3-mode)) | 241 (test . (fboundp 'w3-mode)) |
213 (type . "text/plain")) | 246 (type . "text/plain")) |
214 ("plain" | 247 ("plain" |
215 (viewer . fundamental-mode) | 248 (viewer . fundamental-mode) |
216 (type . "text/plain")) | 249 (type . "text/plain")) |
217 ("enriched" | 250 ("enriched" |
218 (viewer . enriched-decode-region) | 251 (viewer . enriched-decode) |
219 (test . (fboundp 'enriched-decode)) | 252 (test . (fboundp 'enriched-decode)) |
220 (type . "text/enriched")) | 253 (type . "text/enriched")) |
221 ("html" | 254 ("html" |
222 (viewer . mm-w3-prepare-buffer) | 255 (viewer . mm-w3-prepare-buffer) |
223 (test . (fboundp 'w3-prepare-buffer)) | 256 (test . (fboundp 'w3-prepare-buffer)) |
224 (type . "text/html"))) | 257 (type . "text/html"))) |
225 ("video" | 258 ("video" |
226 ("mpeg" | 259 ("mpeg" |
227 (viewer . "mpeg_play %s") | 260 (viewer . "mpeg_play %s") |
228 (type . "video/mpeg") | 261 (type . "video/mpeg") |
229 (test . (eq (mm-device-type) 'x)) | 262 (test . (eq window-system 'x)) |
230 ("needsx11"))) | 263 ("needsx11"))) |
231 ("x-world" | 264 ("x-world" |
232 ("x-vrml" | 265 ("x-vrml" |
233 (viewer . "webspace -remote %s -URL %u") | 266 (viewer . "webspace -remote %s -URL %u") |
234 (type . "x-world/x-vrml") | 267 (type . "x-world/x-vrml") |
269 Content-Type header as argument to return a boolean value for the | 302 Content-Type header as argument to return a boolean value for the |
270 validity. Otherwise, if it is a non-function Lisp symbol or list | 303 validity. Otherwise, if it is a non-function Lisp symbol or list |
271 whose car is a symbol, it is `eval'led to yield the validity. If it | 304 whose car is a symbol, it is `eval'led to yield the validity. If it |
272 is a string or list of strings, it represents a shell command to run | 305 is a string or list of strings, it represents a shell command to run |
273 to return a true or false shell value for the validity.") | 306 to return a true or false shell value for the validity.") |
307 (put 'mailcap-mime-data 'risky-local-variable t) | |
274 | 308 |
275 (defcustom mailcap-download-directory nil | 309 (defcustom mailcap-download-directory nil |
276 "*Directory to which `mailcap-save-binary-file' downloads files by default. | 310 "*Directory to which `mailcap-save-binary-file' downloads files by default. |
277 nil means your home directory." | 311 nil means your home directory." |
278 :type '(choice (const :tag "Home directory" nil) | 312 :type '(choice (const :tag "Home directory" nil) |
279 directory) | 313 directory) |
280 :group 'mailcap) | 314 :group 'mailcap) |
315 | |
316 (defvar mailcap-poor-system-types | |
317 '(ms-dos ms-windows windows-nt win32 w32 mswindows) | |
318 "Systems that don't have a Unix-like directory hierarchy.") | |
281 | 319 |
282 ;;; | 320 ;;; |
283 ;;; Utility functions | 321 ;;; Utility functions |
284 ;;; | 322 ;;; |
285 | 323 |
353 (when (or (not mailcap-parsed-p) | 391 (when (or (not mailcap-parsed-p) |
354 force) | 392 force) |
355 (cond | 393 (cond |
356 (path nil) | 394 (path nil) |
357 ((getenv "MAILCAPS") (setq path (getenv "MAILCAPS"))) | 395 ((getenv "MAILCAPS") (setq path (getenv "MAILCAPS"))) |
358 ((memq system-type '(ms-dos ms-windows windows-nt)) | 396 ((memq system-type mailcap-poor-system-types) |
359 (setq path '("~/.mailcap" "~/mail.cap" "~/etc/mail.cap"))) | 397 (setq path '("~/.mailcap" "~/mail.cap" "~/etc/mail.cap"))) |
360 (t (setq path | 398 (t (setq path |
361 ;; This is per RFC 1524, specifically | 399 ;; This is per RFC 1524, specifically |
362 ;; with /usr before /usr/local. | 400 ;; with /usr before /usr/local. |
363 '("~/.mailcap" "/etc/mailcap" "/usr/etc/mailcap" | 401 '("~/.mailcap" "/etc/mailcap" "/usr/etc/mailcap" |
530 (wildcard '())) | 568 (wildcard '())) |
531 (while major | 569 (while major |
532 (cond | 570 (cond |
533 ((equal (car (car major)) minor) | 571 ((equal (car (car major)) minor) |
534 (setq exact (cons (cdr (car major)) exact))) | 572 (setq exact (cons (cdr (car major)) exact))) |
535 ((and minor (string-match (car (car major)) minor)) | 573 ((and minor (string-match (concat "^" (car (car major)) "$") minor)) |
536 (setq wildcard (cons (cdr (car major)) wildcard)))) | 574 (setq wildcard (cons (cdr (car major)) wildcard)))) |
537 (setq major (cdr major))) | 575 (setq major (cdr major))) |
538 (nconc exact wildcard))) | 576 (nconc exact wildcard))) |
539 | 577 |
540 (defun mailcap-unescape-mime-test (test type-info) | 578 (defun mailcap-unescape-mime-test (test type-info) |
587 | 625 |
588 (defvar mailcap-viewer-test-cache nil) | 626 (defvar mailcap-viewer-test-cache nil) |
589 | 627 |
590 (defun mailcap-viewer-passes-test (viewer-info type-info) | 628 (defun mailcap-viewer-passes-test (viewer-info type-info) |
591 "Return non-nil iff viewer specified by VIEWER-INFO passes its test clause. | 629 "Return non-nil iff viewer specified by VIEWER-INFO passes its test clause. |
592 Also retun non-nil if it has no test clause. TYPE-INFO is an argument | 630 Also return non-nil if it has no test clause. TYPE-INFO is an argument |
593 to supply to the test." | 631 to supply to the test." |
594 (let* ((test-info (assq 'test viewer-info)) | 632 (let* ((test-info (assq 'test viewer-info)) |
595 (test (cdr test-info)) | 633 (test (cdr test-info)) |
596 (otest test) | 634 (otest test) |
597 (viewer (cdr (assoc 'viewer viewer-info))) | 635 (viewer (cdr (assoc 'viewer viewer-info))) |
616 (t | 654 (t |
617 (setq test (mailcap-unescape-mime-test test type-info) | 655 (setq test (mailcap-unescape-mime-test test type-info) |
618 test (list shell-file-name nil nil nil | 656 test (list shell-file-name nil nil nil |
619 shell-command-switch test) | 657 shell-command-switch test) |
620 status (apply 'call-process test)) | 658 status (apply 'call-process test)) |
621 (= 0 status)))) | 659 (eq 0 status)))) |
622 (push (list otest result) mailcap-viewer-test-cache) | 660 (push (list otest result) mailcap-viewer-test-cache) |
623 result))) | 661 result))) |
624 | 662 |
625 (defun mailcap-add-mailcap-entry (major minor info) | 663 (defun mailcap-add-mailcap-entry (major minor info) |
626 (let ((old-major (assoc major mailcap-mime-data))) | 664 (let ((old-major (assoc major mailcap-mime-data))) |
627 (if (null old-major) ; New major area | 665 (if (null old-major) ; New major area |
628 (setq mailcap-mime-data | 666 (setq mailcap-mime-data |
629 (cons (cons major (list (cons minor info))) | 667 (cons (cons major (list (cons minor info))) |
630 mailcap-mime-data)) | 668 mailcap-mime-data)) |
631 (let ((cur-minor (assoc minor old-major))) | 669 (let ((cur-minor (assoc minor old-major))) |
632 (cond | 670 (cond |
633 ((or (null cur-minor) ; New minor area, or | 671 ((or (null cur-minor) ; New minor area, or |
634 (assq 'test info)) ; Has a test, insert at beginning | 672 (assq 'test info)) ; Has a test, insert at beginning |
635 (setcdr old-major (cons (cons minor info) (cdr old-major)))) | 673 (setcdr old-major (cons (cons minor info) (cdr old-major)))) |
636 ((and (not (assq 'test info)) ; No test info, replace completely | 674 ((and (not (assq 'test info)) ; No test info, replace completely |
637 (not (assq 'test cur-minor)) | 675 (not (assq 'test cur-minor)) |
638 (equal (assq 'viewer info) ; Keep alternative viewer | 676 (equal (assq 'viewer info) ; Keep alternative viewer |
639 (assq 'viewer cur-minor))) | 677 (assq 'viewer cur-minor))) |
640 (setcdr cur-minor info)) | 678 (setcdr cur-minor info)) |
641 (t | 679 (t |
642 (setcdr old-major (cons (cons minor info) (cdr old-major)))))) | 680 (setcdr old-major (cons (cons minor info) (cdr old-major)))))) |
643 ))) | 681 ))) |
644 | 682 |
645 (defun mailcap-add (type viewer &optional test) | 683 (defun mailcap-add (type viewer &optional test) |
646 "Add VIEWER as a handler for TYPE. | 684 "Add VIEWER as a handler for TYPE. |
647 If TEST is not given, it defaults to t." | 685 If TEST is not given, it defaults to t." |
720 ((and (null viewer) (not (equal major "default")) request) | 758 ((and (null viewer) (not (equal major "default")) request) |
721 (mailcap-mime-info "default" request)) | 759 (mailcap-mime-info "default" request)) |
722 ((or (null request) (equal request "")) | 760 ((or (null request) (equal request "")) |
723 (mailcap-unescape-mime-test (cdr (assq 'viewer viewer)) info)) | 761 (mailcap-unescape-mime-test (cdr (assq 'viewer viewer)) info)) |
724 ((stringp request) | 762 ((stringp request) |
725 (if (or (eq request 'test) (eq request 'viewer)) | 763 (mailcap-unescape-mime-test |
726 (mailcap-unescape-mime-test | 764 (cdr-safe (assoc request viewer)) info)) |
727 (cdr-safe (assoc request viewer)) info))) | |
728 ((eq request 'all) | 765 ((eq request 'all) |
729 passed) | 766 passed) |
730 (t | 767 (t |
731 ;; MUST make a copy *sigh*, else we modify mailcap-mime-data | 768 ;; MUST make a copy *sigh*, else we modify mailcap-mime-data |
732 (setq viewer (copy-sequence viewer)) | 769 (setq viewer (copy-sequence viewer)) |
805 (".rgb" . "image/x-rgb") | 842 (".rgb" . "image/x-rgb") |
806 (".rtf" . "application/rtf") | 843 (".rtf" . "application/rtf") |
807 (".rtx" . "text/richtext") | 844 (".rtx" . "text/richtext") |
808 (".sh" . "application/x-sh") | 845 (".sh" . "application/x-sh") |
809 (".sit" . "application/x-stuffit") | 846 (".sit" . "application/x-stuffit") |
847 (".siv" . "application/sieve") | |
810 (".snd" . "audio/basic") | 848 (".snd" . "audio/basic") |
811 (".src" . "application/x-wais-source") | 849 (".src" . "application/x-wais-source") |
812 (".tar" . "archive/tar") | 850 (".tar" . "archive/tar") |
813 (".tcl" . "application/x-tcl") | 851 (".tcl" . "application/x-tcl") |
814 (".tex" . "application/x-tex") | 852 (".tex" . "application/x-tex") |
822 (".txt" . "text/plain") | 860 (".txt" . "text/plain") |
823 (".vbs" . "video/mpeg") | 861 (".vbs" . "video/mpeg") |
824 (".vox" . "audio/basic") | 862 (".vox" . "audio/basic") |
825 (".vrml" . "x-world/x-vrml") | 863 (".vrml" . "x-world/x-vrml") |
826 (".wav" . "audio/x-wav") | 864 (".wav" . "audio/x-wav") |
865 (".xls" . "application/vnd.ms-excel") | |
827 (".wrl" . "x-world/x-vrml") | 866 (".wrl" . "x-world/x-vrml") |
828 (".xbm" . "image/xbm") | 867 (".xbm" . "image/xbm") |
829 (".xpm" . "image/xpm") | 868 (".xpm" . "image/xpm") |
830 (".xwd" . "image/windowdump") | 869 (".xwd" . "image/windowdump") |
831 (".zip" . "application/zip") | 870 (".zip" . "application/zip") |
848 (when (or (not mailcap-mimetypes-parsed-p) | 887 (when (or (not mailcap-mimetypes-parsed-p) |
849 force) | 888 force) |
850 (cond | 889 (cond |
851 (path nil) | 890 (path nil) |
852 ((getenv "MIMETYPES") (setq path (getenv "MIMETYPES"))) | 891 ((getenv "MIMETYPES") (setq path (getenv "MIMETYPES"))) |
853 ((memq system-type '(ms-dos ms-windows windows-nt)) | 892 ((memq system-type mailcap-poor-system-types) |
854 (setq path '("~/mime.typ" "~/etc/mime.typ"))) | 893 (setq path '("~/mime.typ" "~/etc/mime.typ"))) |
855 (t (setq path | 894 (t (setq path |
856 ;; mime.types seems to be the normal name, definitely so | 895 ;; mime.types seems to be the normal name, definitely so |
857 ;; on current GNUish systems. The search order follows | 896 ;; on current GNUish systems. The search order follows |
858 ;; that for mailcap. | 897 ;; that for mailcap. |
944 (cdr l)))) | 983 (cdr l)))) |
945 mailcap-mime-data))))) | 984 mailcap-mime-data))))) |
946 | 985 |
947 (provide 'mailcap) | 986 (provide 'mailcap) |
948 | 987 |
988 ;;; arch-tag: 1fd4f9c9-c305-4d2e-9747-3a4d45baa0bd | |
949 ;;; mailcap.el ends here | 989 ;;; mailcap.el ends here |