diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2005-09-30 13:15:10 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2005-09-30 13:15:10 +0000 |
commit | 58bd8bf966c418bb9f4f1999209490ae377ad0bc (patch) | |
tree | b382c01e8fe11b4273803a99744251a0205cc573 /lisp/sb-image.el | |
parent | a0292bb5600b9cab73d8bd11637c506adfbd7a9b (diff) | |
download | emacs-58bd8bf966c418bb9f4f1999209490ae377ad0bc.tar.gz |
* speedbar.el: New version 1.0pre3.
* ezimage.el, sb-image.el: New files.
* sb-*.xpm: Files removed. New image files installed into
etc/images/ezimage.
Diffstat (limited to 'lisp/sb-image.el')
-rw-r--r-- | lisp/sb-image.el | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/lisp/sb-image.el b/lisp/sb-image.el new file mode 100644 index 00000000000..036112e4e2a --- /dev/null +++ b/lisp/sb-image.el @@ -0,0 +1,111 @@ +;;; sb-image --- Image management for speedbar + +;;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation + +;; Author: Eric M. Ludlam <zappo@gnu.org> +;; Keywords: file, tags, tools +;; X-RCS: $Id: sb-image.el,v 1.10 2003/08/25 17:23:39 zappo Exp $ + +;; This file is part of GNU Emacs. + +;; 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 2, 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 +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: +;; +;; Supporting Image display for Emacs 20 and less, Emacs 21, and XEmacs, +;; is a challenging task, which doesn't take kindly to being byte compiled. +;; When sharing speedbar.elc between these three applications, the Image +;; support can get lost. +;; +;; By splitting out that hard part into this file, and avoiding byte +;; compilation, one copy speedbar can support all these platforms together. +;; +;; This file requires the `image' package if it is available. + +(require 'ezimage) + +;;; Code: +(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) + +;;; sb-image.el ends here |