From: Richard Stallman <rms@gnu.org>
Cc: chunyu@hit.edu.cn, emacs-devel@gnu.org
Subject: Re: .eps in image mode
Date: Sun, 24 Dec 2006 12:09:36 -0500 [thread overview]
Message-ID: <E1GyWqu-0002WO-9W@fencepost.gnu.org> (raw)
In-Reply-To: <f7ccd24b0612231452l5ed1cd5fh88a50eed5908bc6c@mail.gmail.com> (lekktu@gmail.com)
and `image-file-name-extensions' does not contain `.ps'. So probably
we shouldn't try to identify .ps files as images by default.
Does this patch give the right results?
*** image.el 19 Dec 2006 11:57:52 -0500 1.64
--- image.el 23 Dec 2006 21:04:58 -0500
***************
*** 34,53 ****
(defconst image-type-header-regexps
! '(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
! ("\\`P[1-6][[:space:]]+\\(?:#.*[[:space:]]+\\)*[0-9]+[[:space:]]+[0-9]+" . pbm)
! ("\\`GIF8" . gif)
! ("\\`\x89PNG\r\n\x1a\n" . png)
! ("\\`[\t\n\r ]*#define" . xbm)
! ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff)
! ("\\`[\t\n\r ]*%!PS" . postscript)
! ("\\`\xff\xd8" . (image-jpeg-p . jpeg)))
! "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types.
When the first bytes of an image file match REGEXP, it is assumed to
! be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol. If not a symbol,
! IMAGE-TYPE must be a pair (PREDICATE . TYPE). PREDICATE is called
! with one argument, a string containing the image data. If PREDICATE returns
! a non-nil value, TYPE is the image's type.")
(defconst image-type-file-name-regexps
'(("\\.png\\'" . png)
--- 34,60 ----
(defconst image-type-header-regexps
! '(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" xpm)
! ("\\`P[1-6][[:space:]]+\\(?:#.*[[:space:]]+\\)*[0-9]+[[:space:]]+[0-9]+" pbm)
! ("\\`GIF8" gif)
! ("\\`\x89PNG\r\n\x1a\n" png)
! ("\\`[\t\n\r ]*#define" xbm)
! ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" tiff)
! ("\\`[\t\n\r ]*%!PS" postscript t)
! ("\\`\xff\xd8" (image-jpeg-p . jpeg)))
! "Alist of (REGEXP IMAGE-TYPE) pairs used to auto-detect image types.
When the first bytes of an image file match REGEXP, it is assumed to
! be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol.
!
! An element can also be (REGEXP IMAGE-TYPE NOT-ALWAYS). If
! NOT-ALWAYS is non-nil, that means that REGEXP identifies a
! file that _can_ be treated as an image of type IMAGE-TYPE,
! but such files should not be spontaneously treated as images.
!
! IMAGE-TYPE can be a pair (PREDICATE . TYPE) instead of a
! symbol. Then PREDICATE is called with one argument, a
! string containing the image data. If PREDICATE returns a
! non-nil value, TYPE is the image's type.")
(defconst image-type-file-name-regexps
'(("\\.png\\'" . png)
***************
*** 205,211 ****
type)
(while types
(let ((regexp (car (car types)))
! (image-type (cdr (car types))))
(if (or (and (symbolp image-type)
(string-match regexp data))
(and (consp image-type)
--- 212,218 ----
type)
(while types
(let ((regexp (car (car types)))
! (image-type (nth 1 (car types))))
(if (or (and (symbolp image-type)
(string-match regexp data))
(and (consp image-type)
***************
*** 218,234 ****
;;;###autoload
! (defun image-type-from-buffer ()
"Determine the image type from data in the current buffer.
! Value is a symbol specifying the image type or nil if type cannot
! be determined."
(let ((types image-type-header-regexps)
type
(opoint (point)))
(goto-char (point-min))
(while types
(let ((regexp (car (car types)))
! (image-type (cdr (car types)))
data)
(if (or (and (symbolp image-type)
(looking-at regexp))
--- 225,246 ----
;;;###autoload
! (defun image-type-from-buffer (&optional include-maybes)
"Determine the image type from data in the current buffer.
! Value is a symbol specifying the image type, or nil if none
! corresponds to the buffer contents.
!
! If INCLUDE-MAYBES is nil (the default), we return nil for
! file types that should not always be treated as images
! even though they can be so treated."
(let ((types image-type-header-regexps)
type
(opoint (point)))
(goto-char (point-min))
(while types
(let ((regexp (car (car types)))
! (image-type (nth 1 (car types)))
! (not-always (nth 2 (car types)))
data)
(if (or (and (symbolp image-type)
(looking-at regexp))
***************
*** 241,247 ****
(min (point-max)
(+ (point-min) 256))))))
(setq image-type (cdr image-type))))
! (setq type image-type
types nil)
(setq types (cdr types)))))
(goto-char opoint)
--- 253,259 ----
(min (point-max)
(+ (point-min) 256))))))
(setq image-type (cdr image-type))))
! (setq type (unless not-always image-type)
types nil)
(setq types (cdr types)))))
(goto-char opoint)
***************
*** 261,267 ****
(with-temp-buffer
(set-buffer-multibyte nil)
(insert-file-contents-literally file nil 0 256)
! (image-type-from-buffer))))
;;;###autoload
--- 273,279 ----
(with-temp-buffer
(set-buffer-multibyte nil)
(insert-file-contents-literally file nil 0 256)
! (image-type-from-buffer t))))
;;;###autoload
next prev parent reply other threads:[~2006-12-24 17:09 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87irg45jh6.fsf@chunyu.hit.edu.cn>
2006-12-23 20:14 ` .eps in image mode Richard Stallman
2006-12-23 22:52 ` Juanma Barranquero
2006-12-24 17:09 ` Richard Stallman [this message]
2006-12-25 3:15 ` Juanma Barranquero
2006-12-26 2:25 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1GyWqu-0002WO-9W@fencepost.gnu.org \
--to=rms@gnu.org \
--cc=chunyu@hit.edu.cn \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.