summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2008-05-17 20:20:55 +0000
committerGlenn Morris <rgm@gnu.org>2008-05-17 20:20:55 +0000
commit819d0ce9b56432ee1dd869cfe3f6101a0f01e530 (patch)
treee8567a24841762295eaf18cf20b4619717d12e1f
parent10bd156e17467bbb819001721d74b14be8adf55f (diff)
downloademacs-819d0ce9b56432ee1dd869cfe3f6101a0f01e530.tar.gz
(ezimage-use-images): Drop support for Emacs < 21 and simplify initial value.
(defezimage): Drop support for Emacs without defimage, use a featurep test rather than fboundp when defining, drop with-no-warnings. (ezimage-insert-over-text): Move featurep test inside add-text-properties.
-rw-r--r--lisp/ezimage.el152
1 files changed, 69 insertions, 83 deletions
diff --git a/lisp/ezimage.el b/lisp/ezimage.el
index 74310469463..2659bfdc564 100644
--- a/lisp/ezimage.el
+++ b/lisp/ezimage.el
@@ -1,7 +1,7 @@
;;; ezimage --- Generalized Image management
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;; 2008 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Keywords: file, tags, tools
@@ -33,20 +33,17 @@
;;
;; This file requires the `image' package if it is available.
-(condition-case nil
+(condition-case nil ; for older XEmacs
(require 'image)
(error nil))
;;; Code:
-(defcustom ezimage-use-images
- (and (or (fboundp 'defimage) ; emacs 21
- (fboundp 'make-image-specifier)) ; xemacs
- (if (fboundp 'display-graphic-p) ; emacs 21
- (display-graphic-p)
- window-system) ; old emacs & xemacs
- (or (not (fboundp 'image-type-available-p)) ; xemacs?
- (image-type-available-p 'xpm))) ; emacs 21
- "*Non-nil if ezimage should display icons."
+(defcustom ezimage-use-images (if (featurep 'xemacs)
+ (and (fboundp 'make-image-specifier)
+ window-system)
+ (and (display-images-p)
+ (image-type-available-p 'xpm)))
+ "Non-nil means ezimage should display icons."
:group 'ezimage
:version "21.1"
:type 'boolean)
@@ -54,18 +51,14 @@
;;; Create our own version of defimage
(eval-and-compile
-(if (fboundp 'defimage)
-
+(if (featurep 'emacs)
(progn
-
-(defmacro defezimage (variable imagespec docstring)
- "Define VARIABLE as an image if `defimage' is not available.
+ (defmacro defezimage (variable imagespec docstring)
+ "Define VARIABLE as an image if `defimage' is not available.
IMAGESPEC is the image data, and DOCSTRING is documentation for the image."
- `(progn
- (defimage ,variable ,imagespec ,docstring)
- (put (quote ,variable) 'ezimage t)))
-
-; (defalias 'defezimage 'defimage)
+ `(progn
+ (defimage ,variable ,imagespec ,docstring)
+ (put (quote ,variable) 'ezimage t)))
;; This hack is for the ezimage install which has an icons direcory for
;; the default icons to be used.
@@ -75,64 +68,61 @@ IMAGESPEC is the image data, and DOCSTRING is documentation for the image."
;; "icons"))
)
+
+ ;; XEmacs.
(if (not (fboundp 'make-glyph))
-(defmacro defezimage (variable imagespec docstring)
- "Don't bother loading up an image...
+ (defmacro defezimage (variable imagespec docstring)
+ "Don't bother loading up an image...
Argument VARIABLE is the variable to define.
Argument IMAGESPEC is the list defining the image to create.
Argument DOCSTRING is the documentation for VARIABLE."
- `(defvar ,variable nil ,docstring))
-
-;; ELSE
-(with-no-warnings
-(defun ezimage-find-image-on-load-path (image)
- "Find the image file IMAGE on the load path."
- (let ((l (cons
- ;; In XEmacs, try the data directory first (for an
- ;; install in XEmacs proper.) Search the load
- ;; path next (for user installs)
- (locate-data-directory "ezimage")
- load-path))
- (r nil))
- (while (and l (not r))
- (if (file-exists-p (concat (car l) "/" image))
- (setq r (concat (car l) "/" image))
- (if (file-exists-p (concat (car l) "/icons/" image))
- (setq r (concat (car l) "/icons/" image))
- ))
- (setq l (cdr l)))
- r))
-);with-no-warnings
-
-(with-no-warnings
-(defun ezimage-convert-emacs21-imagespec-to-xemacs (spec)
- "Convert the Emacs21 image SPEC into an XEmacs image spec.
+ `(defvar ,variable nil ,docstring))
+
+ (defun ezimage-find-image-on-load-path (image)
+ "Find the image file IMAGE on the load path."
+ (let ((l (cons
+ ;; In XEmacs, try the data directory first (for an
+ ;; install in XEmacs proper.) Search the load
+ ;; path next (for user installs)
+ (locate-data-directory "ezimage")
+ load-path))
+ (r nil))
+ (while (and l (not r))
+ (if (file-exists-p (concat (car l) "/" image))
+ (setq r (concat (car l) "/" image))
+ (if (file-exists-p (concat (car l) "/icons/" image))
+ (setq r (concat (car l) "/icons/" image))
+ ))
+ (setq l (cdr l)))
+ r))
+
+ (defun ezimage-convert-emacs21-imagespec-to-xemacs (spec)
+ "Convert the Emacs21 image SPEC into an XEmacs image spec.
The Emacs 21 spec is what I first learned, and is easy to convert."
- (let* ((sl (car spec))
- (itype (nth 1 sl))
- (ifile (nth 3 sl)))
- (vector itype ':file (ezimage-find-image-on-load-path ifile))))
-);with-no-warnings
-
-(defmacro defezimage (variable imagespec docstring)
- "Define VARIABLE as an image if `defimage' is not available.
+ (let* ((sl (car spec))
+ (itype (nth 1 sl))
+ (ifile (nth 3 sl)))
+ (vector itype ':file (ezimage-find-image-on-load-path ifile))))
+
+ (defmacro defezimage (variable imagespec docstring)
+ "Define VARIABLE as an image if `defimage' is not available.
IMAGESPEC is the image data, and DOCSTRING is documentation for the image."
- `(progn
- (defvar ,variable
- ;; The Emacs21 version of defimage looks just like the XEmacs image
- ;; specifier, except that it needs a :type keyword. If we line
- ;; stuff up right, we can use this cheat to support XEmacs specifiers.
- (condition-case nil
- (make-glyph
- (make-image-specifier
- (ezimage-convert-emacs21-imagespec-to-xemacs (quote ,imagespec)))
- 'buffer)
- (error nil))
- ,docstring)
- (put ',variable 'ezimage t)))
-
-)))
+ `(progn
+ (defvar ,variable
+ ;; The Emacs21 version of defimage looks just like the XEmacs image
+ ;; specifier, except that it needs a :type keyword. If we line
+ ;; stuff up right, we can use this cheat to support XEmacs specifiers.
+ (condition-case nil
+ (make-glyph
+ (make-image-specifier
+ (ezimage-convert-emacs21-imagespec-to-xemacs (quote ,imagespec)))
+ 'buffer)
+ (error nil))
+ ,docstring)
+ (put ',variable 'ezimage t)))
+
+ )))
(defezimage ezimage-directory
((:type xpm :file "ezimage/dir.xpm" :ascent center))
@@ -294,17 +284,15 @@ Return STRING with properties applied."
Assumes the image is part of a GUI and can be clicked on.
Optional argument STRING is a string upon which to add text properties."
(when ezimage-use-images
- (if (featurep 'xemacs)
- (add-text-properties start end
+ (add-text-properties start end
+ (if (featurep 'xemacs)
(list 'end-glyph image
'rear-nonsticky (list 'display)
'invisible t
'detachable t)
- string)
- (add-text-properties start end
(list 'display image
- 'rear-nonsticky (list 'display))
- string)))
+ 'rear-nonsticky (list 'display)))
+ string))
string)
(defun ezimage-image-association-dump ()
@@ -357,12 +345,10 @@ See `ezimage-expand-image-button-alist' for details."
"Return a list of all variables containing ez images."
(let ((ans nil))
(mapatoms (lambda (sym)
- (if (get sym 'ezimage) (setq ans (cons sym ans))))
- )
+ (if (get sym 'ezimage) (setq ans (cons sym ans)))))
(setq ans (sort ans (lambda (a b)
(string< (symbol-name a) (symbol-name b)))))
- ans)
- )
+ ans))
(provide 'ezimage)