(require 'ezimage)
(defcustom speedbar-use-images ezimage-use-images
"*Non-nil if speedbar should display icons."
:group 'speedbar
:version "21.1"
:type 'boolean)
(defalias 'defimage-speedbar 'defezimage)
(defvar speedbar-expand-image-button-alist
'(("<+>" . ezimage-directory-plus)
("<->" . ezimage-directory-minus)
("< >" . ezimage-directory)
("[+]" . ezimage-page-plus)
("[-]" . ezimage-page-minus)
("[?]" . ezimage-page)
("[ ]" . ezimage-page)
("{+}" . ezimage-box-plus)
("{-}" . ezimage-box-minus)
("<M>" . ezimage-mail)
("<d>" . ezimage-document-tag)
("<i>" . ezimage-info-tag)
(" =>" . ezimage-tag)
(" +>" . ezimage-tag-gt)
(" ->" . ezimage-tag-v)
(">" . ezimage-tag)
("@" . ezimage-tag-type)
(" @" . ezimage-tag-type)
("*" . ezimage-checkout)
("#" . ezimage-object)
("!" . ezimage-object-out-of-date)
("//" . ezimage-label)
("%" . ezimage-lock)
)
"List of text and image associations.")
(defun speedbar-insert-image-button-maybe (start length)
"Insert an image button based on text starting at START for LENGTH chars.
If buttontext is unknown, just insert that text.
If we have an image associated with it, use that image."
(when speedbar-use-images
(let ((ezimage-expand-image-button-alist
speedbar-expand-image-button-alist))
(ezimage-insert-image-button-maybe start length))))
(defun speedbar-image-dump ()
"Dump out the current state of the Speedbar image alist.
See `speedbar-expand-image-button-alist' for details."
(interactive)
(with-output-to-temp-buffer "*Speedbar Images*"
(save-excursion
(set-buffer "*Speedbar Images*")
(goto-char (point-max))
(insert "Speedbar image cache.\n\n")
(let ((start (point)) (end nil))
(insert "Image\tText\tImage Name")
(setq end (point))
(insert "\n")
(put-text-property start end 'face 'underline))
(let ((ia speedbar-expand-image-button-alist))
(while ia
(let ((start (point)))
(insert (car (car ia)))
(insert "\t")
(speedbar-insert-image-button-maybe start
(length (car (car ia))))
(insert (car (car ia)) "\t" (format "%s" (cdr (car ia))) "\n"))
(setq ia (cdr ia)))))))
(provide 'sb-image)