Commit | Line | Data |
---|---|---|
58bd8bf9 CY |
1 | ;;; sb-image --- Image management for speedbar |
2 | ||
c90f2757 | 3 | ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, |
409cc4a3 | 4 | ;; 2006, 2007, 2008 Free Software Foundation, Inc. |
58bd8bf9 CY |
5 | |
6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | |
7 | ;; Keywords: file, tags, tools | |
58bd8bf9 CY |
8 | |
9 | ;; This file is part of GNU Emacs. | |
10 | ||
11 | ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 | ;; it under the terms of the GNU General Public License as published by | |
b4aa6026 | 13 | ;; the Free Software Foundation; either version 3, or (at your option) |
58bd8bf9 CY |
14 | ;; any later version. |
15 | ||
16 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | ;; GNU General Public License for more details. | |
20 | ||
21 | ;; You should have received a copy of the GNU General Public License | |
22 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24bbdbef CY |
23 | ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
24 | ;; Boston, MA 02110-1301, USA. | |
58bd8bf9 CY |
25 | |
26 | ;;; Commentary: | |
27 | ;; | |
28 | ;; Supporting Image display for Emacs 20 and less, Emacs 21, and XEmacs, | |
29 | ;; is a challenging task, which doesn't take kindly to being byte compiled. | |
30 | ;; When sharing speedbar.elc between these three applications, the Image | |
31 | ;; support can get lost. | |
32 | ;; | |
33 | ;; By splitting out that hard part into this file, and avoiding byte | |
34 | ;; compilation, one copy speedbar can support all these platforms together. | |
35 | ;; | |
36 | ;; This file requires the `image' package if it is available. | |
37 | ||
38 | (require 'ezimage) | |
39 | ||
40 | ;;; Code: | |
41 | (defcustom speedbar-use-images ezimage-use-images | |
42 | "*Non-nil if speedbar should display icons." | |
43 | :group 'speedbar | |
44 | :version "21.1" | |
45 | :type 'boolean) | |
46 | ||
47 | (defalias 'defimage-speedbar 'defezimage) | |
48 | ||
49 | (defvar speedbar-expand-image-button-alist | |
50 | '(("<+>" . ezimage-directory-plus) | |
51 | ("<->" . ezimage-directory-minus) | |
52 | ("< >" . ezimage-directory) | |
53 | ("[+]" . ezimage-page-plus) | |
54 | ("[-]" . ezimage-page-minus) | |
55 | ("[?]" . ezimage-page) | |
56 | ("[ ]" . ezimage-page) | |
57 | ("{+}" . ezimage-box-plus) | |
58 | ("{-}" . ezimage-box-minus) | |
59 | ("<M>" . ezimage-mail) | |
60 | ("<d>" . ezimage-document-tag) | |
61 | ("<i>" . ezimage-info-tag) | |
62 | (" =>" . ezimage-tag) | |
63 | (" +>" . ezimage-tag-gt) | |
64 | (" ->" . ezimage-tag-v) | |
65 | (">" . ezimage-tag) | |
66 | ("@" . ezimage-tag-type) | |
67 | (" @" . ezimage-tag-type) | |
68 | ("*" . ezimage-checkout) | |
69 | ("#" . ezimage-object) | |
70 | ("!" . ezimage-object-out-of-date) | |
71 | ("//" . ezimage-label) | |
72 | ("%" . ezimage-lock) | |
73 | ) | |
74 | "List of text and image associations.") | |
75 | ||
76 | (defun speedbar-insert-image-button-maybe (start length) | |
77 | "Insert an image button based on text starting at START for LENGTH chars. | |
78 | If buttontext is unknown, just insert that text. | |
79 | If we have an image associated with it, use that image." | |
80 | (when speedbar-use-images | |
81 | (let ((ezimage-expand-image-button-alist | |
82 | speedbar-expand-image-button-alist)) | |
83 | (ezimage-insert-image-button-maybe start length)))) | |
84 | ||
85 | (defun speedbar-image-dump () | |
86 | "Dump out the current state of the Speedbar image alist. | |
87 | See `speedbar-expand-image-button-alist' for details." | |
88 | (interactive) | |
89 | (with-output-to-temp-buffer "*Speedbar Images*" | |
90 | (save-excursion | |
91 | (set-buffer "*Speedbar Images*") | |
92 | (goto-char (point-max)) | |
93 | (insert "Speedbar image cache.\n\n") | |
94 | (let ((start (point)) (end nil)) | |
95 | (insert "Image\tText\tImage Name") | |
96 | (setq end (point)) | |
97 | (insert "\n") | |
98 | (put-text-property start end 'face 'underline)) | |
99 | (let ((ia speedbar-expand-image-button-alist)) | |
100 | (while ia | |
101 | (let ((start (point))) | |
102 | (insert (car (car ia))) | |
103 | (insert "\t") | |
104 | (speedbar-insert-image-button-maybe start | |
105 | (length (car (car ia)))) | |
106 | (insert (car (car ia)) "\t" (format "%s" (cdr (car ia))) "\n")) | |
107 | (setq ia (cdr ia))))))) | |
108 | ||
109 | (provide 'sb-image) | |
110 | ||
dceb5300 | 111 | ;; arch-tag: 6b05accd-e8b8-4290-8379-f063f3dacabb |
58bd8bf9 | 112 | ;;; sb-image.el ends here |