;;; mh-xface.el --- MH-E X-Face and Face header field display
-;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <wohler@newt.com>
;; Maintainer: Bill Wohler <wohler@newt.com>
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
(autoload 'message-fetch-field "message")
(defvar mh-show-xface-function
- (cond ((and mh-xemacs-flag (locate-library "x-face") (not (featurep 'xface)))
+ (cond ((and (featurep 'xemacs) (locate-library "x-face") (not (featurep 'xface)))
(load "x-face" t t)
#'mh-face-display-function)
((>= emacs-major-version 21)
mh-clean-message-header-flag))
(funcall mh-show-xface-function)))
-;; Shush compiler.
-(defvar default-enable-multibyte-characters) ; XEmacs
-
(defun mh-face-display-function ()
"Display a Face, X-Face, or X-Image-URL header field.
If more than one of these are present, then the first one found
(re-search-forward "\n\n" (point-max) t)
(narrow-to-region (point-min) (point))
(let* ((case-fold-search t)
- (default-enable-multibyte-characters nil)
(face (message-fetch-field "face" t))
(x-face (message-fetch-field "x-face" t))
(url (message-fetch-field "x-image-url" t))
(x-face (setq raw (mh-uncompface x-face)
type 'pbm))
(url (setq type 'url))
- (t (multiple-value-setq (type raw) (mh-picon-get-image))))
+ (t (multiple-value-setq (type raw)
+ (values-list (mh-picon-get-image)))))
(when type
(goto-char (point-min))
(when (re-search-forward "^from:" (point-max) t)
(defun mh-face-to-png (data)
"Convert base64 encoded DATA to png image."
(with-temp-buffer
+ (if (fboundp 'set-buffer-multibyte)
+ (set-buffer-multibyte nil))
(insert data)
(ignore-errors (base64-decode-region (point-min) (point-max)))
(buffer-string)))
(defun mh-uncompface (data)
"Run DATA through `uncompface' to generate bitmap."
(with-temp-buffer
+ (if (fboundp 'set-buffer-multibyte)
+ (set-buffer-multibyte nil))
(insert data)
(when (and mh-uncompface-executable
(equal (call-process-region (point-min) (point-max)
(cond (cached-value (return-from mh-picon-get-image cached-value))
((not host-list) (return-from mh-picon-get-image nil)))
(setq match
- (block 'loop
+ (block loop
;; u@h search
(loop for dir in mh-picon-existing-directory-list
do (loop for type in mh-picon-image-types
for file1 = (format "%s/%s.%s"
dir canonical-address type)
when (file-exists-p file1)
- do (return-from 'loop file1)
+ do (return-from loop file1)
;; [path]user
for file2 = (format "%s/%s.%s" dir user type)
when (file-exists-p file2)
- do (return-from 'loop file2)
+ do (return-from loop file2)
;; [path]host
for file3 = (format "%s/%s.%s" dir host type)
when (file-exists-p file3)
- do (return-from 'loop file3)))
+ do (return-from loop file3)))
;; facedb search
;; Search order for user@foo.net:
;; [path]net/foo/user
do (loop for type in mh-picon-image-types
for z1 = (format "%s.%s" y type)
when (file-exists-p z1)
- do (return-from 'loop z1)
+ do (return-from loop z1)
for z2 = (format "%s/face.%s"
y type)
when (file-exists-p z2)
- do (return-from 'loop z2)))))))
+ do (return-from loop z2)))))))
(setf (gethash canonical-address mh-picon-cache)
(mh-picon-file-contents match)))))
elements of the list are nil."
(if (stringp file)
(with-temp-buffer
+ (if (fboundp 'set-buffer-multibyte)
+ (set-buffer-multibyte nil))
(let ((type (and (string-match ".*\\.\\(...\\)$" file)
(intern (match-string 1 file)))))
(insert-file-contents-literally file)
- (values type (buffer-string))))
- (values nil nil)))
+ (list type (buffer-string))))
+ (list nil nil)))
\f
"Canonicalize URL.
Replace the ?/ character with a ?! character and append .png.
Also replaces special characters with `mh-url-hexify-string'
-since not all characters, such as :, are legal within Windows
-filenames. In addition, replaces * with %2a. See URL
+since not all characters, such as :, are valid within Windows
+filenames. In addition, replaces * with %2a. See URL
`http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iitemnamelimits/GetValidCharacters.asp'."
(format "%s/%s.png" mh-x-image-cache-directory
(mh-replace-regexp-in-string
(defun mh-x-image-display (image marker)
"Display IMAGE at MARKER."
- (save-excursion
- (set-buffer (marker-buffer marker))
- (let ((buffer-read-only nil)
- (default-enable-multibyte-characters nil)
+ (with-current-buffer (marker-buffer marker)
+ (let ((inhibit-read-only t)
(buffer-modified-flag (buffer-modified-p)))
(unwind-protect
(when (and (file-readable-p image) (not (file-symlink-p image))
mh-temp-fetch-buffer)))
(filename (or (mh-funcall-if-exists make-temp-file "mhe-fetch")
(expand-file-name (make-temp-name "~/mhe-fetch")))))
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(set (make-local-variable 'mh-x-image-url-cache-file) cache-file)
(set (make-local-variable 'mh-x-image-marker) marker)
(set (make-local-variable 'mh-x-image-temp-file) filename))
The argument CHANGE is ignored."
(when (eq (process-status process) 'exit)
(let (marker temp-file cache-filename wget-buffer)
- (save-excursion
- (set-buffer (setq wget-buffer (process-buffer process)))
+ (with-current-buffer (setq wget-buffer (process-buffer process))
(setq marker mh-x-image-marker
cache-filename mh-x-image-url-cache-file
temp-file mh-x-image-temp-file))
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: a79dd33f-d0e5-4b19-a53a-be690f90229a
;;; mh-xface.el ends here