0
|
1 ;;!emacs
|
|
2 ;;
|
|
3 ;; FILE: hui-ep-but.el
|
|
4 ;; SUMMARY: Support for highlighting/flashing buttons under Epoch.
|
|
5 ;; USAGE: Epoch V4 Lisp Library
|
|
6 ;; KEYWORDS: faces, hypermedia
|
|
7 ;;
|
|
8 ;; AUTHOR: Bob Weiner
|
|
9 ;; ORG: Brown U.
|
|
10 ;;
|
|
11 ;; ORIG-DATE: 27-Apr-91 at 05:37:10
|
|
12 ;; LAST-MOD: 14-Apr-95 at 16:10:47 by Bob Weiner
|
|
13 ;;
|
|
14 ;; This file is part of Hyperbole.
|
|
15 ;; It is for use with Epoch, a modified version of GNU Emacs.
|
|
16 ;; Available for use and distribution under the same terms as GNU Emacs.
|
|
17 ;;
|
|
18 ;; Copyright (C) 1990-1995, Free Software Foundation, Inc.
|
|
19 ;; Developed with support from Motorola Inc.
|
|
20 ;;
|
|
21 ;; DESCRIPTION:
|
|
22 ;;
|
|
23 ;; This is truly prototype code.
|
|
24 ;;
|
|
25 ;; Can't use epoch read-only buttons here because then outline-mode
|
|
26 ;; becomes unusable; when it tries to do a 'subst-char-in-region'
|
|
27 ;; epoch triggers a read-only error.
|
|
28 ;;
|
|
29 ;; DESCRIP-END.
|
|
30
|
|
31 (if (and (boundp 'epoch::version) (stringp epoch::version)
|
|
32 (or noninteractive (string-lessp epoch::version "Epoch 4")))
|
|
33 nil
|
|
34 (error "(hui-ep-but.el): Load only under Epoch version 3 or lower."))
|
|
35
|
|
36 ;;; ************************************************************************
|
|
37 ;;; Other required Elisp libraries
|
|
38 ;;; ************************************************************************
|
|
39
|
|
40 (require 'hbut)
|
|
41
|
|
42 ;;; ************************************************************************
|
|
43 ;;; Public variables
|
|
44 ;;; ************************************************************************
|
|
45
|
|
46 ;;; ************************************************************************
|
|
47 ;;; Public functions
|
|
48 ;;; ************************************************************************
|
|
49
|
|
50 (fset 'hproperty:but-add 'epoch::add-button)
|
|
51
|
|
52 (defun hproperty:but-color ()
|
|
53 "Return current color of buffer's buttons."
|
|
54 (if hproperty:color-ptr
|
|
55 (car hproperty:color-ptr)
|
|
56 (epoch::foreground)))
|
|
57
|
|
58 (defun hproperty:but-create-all (&optional start-delim end-delim regexp-match)
|
|
59 "Mark all hyper-buttons in buffer as Epoch buttons, for later highlighting.
|
|
60 Will use optional strings START-DELIM and END-DELIM instead of default values.
|
|
61 If END-DELIM is a symbol, e.g. t, then START-DELIM is taken as a regular
|
|
62 expression which matches an entire button string.
|
|
63 If REGEXP-MATCH is non-nil, only buttons matching this argument are
|
|
64 highlighted."
|
|
65 (ebut:map (function (lambda (lbl start end)
|
|
66 (hproperty:but-add start end hproperty:but)))
|
|
67 start-delim end-delim regexp-match 'include-delims))
|
|
68
|
|
69 (defun hproperty:but-delete (&optional pos)
|
|
70 (epoch::delete-button-at (or pos (point))))
|
|
71
|
|
72 ;;; ************************************************************************
|
|
73 ;;; Private functions
|
|
74 ;;; ************************************************************************
|
|
75
|
|
76 (defmacro hproperty:list-cycle (list-ptr list)
|
|
77 "Move LIST-PTR to next element in LIST or when at end to first element."
|
|
78 (` (or (and (, list-ptr)
|
|
79 (setq (, list-ptr) (cdr (, list-ptr))))
|
|
80 (setq (, list-ptr) (, list)))))
|
|
81
|
|
82 ;;; ************************************************************************
|
|
83 ;;; Private variables
|
|
84 ;;; ************************************************************************
|
|
85
|
|
86 (defconst hproperty:color-list '( "red" "blue" "paleturquoise4" "mediumpurple2"
|
|
87 "lightskyblue3" "springgreen2" "salmon" "yellowgreen" "darkorchid2"
|
|
88 "aquamarine4" "slateblue4" "slateblue1" "olivedrab1" "goldenrod4"
|
|
89 "goldenrod3" "cadetblue2" "burlywood1" "slategrey" "mistyrose"
|
|
90 "limegreen" "lightcyan" "goldenrod" "gainsboro" "skyblue1" "honeydew"
|
|
91 "yellow2" "tomato3" "skyblue" "purple4" "orange3" "bisque3" "bisque2"
|
|
92 "grey34" "gray99" "gray63" "gray44" "gray37" "gray33" "gray26" "azure1"
|
|
93 "snow4" "peru" "red" "lightgoldenrod4" "mediumseagreen" "blush"
|
|
94 "mediumorchid2" "lightskyblue1" "darkslateblue" "midnightblue"
|
|
95 "lightsalmon1" "lemonchiffon" "yellow" "lightsalmon" "coral"
|
|
96 "dodgerblue3" "darkorange4" "blue" "royalblue4" "red" "green" "cyan"
|
|
97 "darkviolet" "darksalmon" "darkorange" "blue" "pink" "magenta2"
|
|
98 "sienna4" "khaki2" "grey75" "grey74" "grey73" "grey69" "grey68" "grey35"
|
|
99 "grey13" "gray90" "gray81" "gray55" "gray51" "gray31" "snow2" "pink3"
|
|
100 "grey7" "gray1" "red4" "red3" "tan" "red" "yellow" "mediumvioletred"
|
|
101 "lightslategrey" "lavenderblush4" "turquoise" "darkturquoise"
|
|
102 "darkslategrey" "lightskyblue" "lightsalmon4" "lightsalmon3"
|
|
103 "forestgreen" "dodgerblue4" "orchid" "rosybrown4" "brown" "peachpuff3"
|
|
104 "palegreen3" "orangered2" "rose" "lightcyan4" "indianred4" "indianred3"
|
|
105 "seagreen2" "indianred" "deeppink1" "navyblue" "lavender" "grey"
|
|
106 "deeppink" "salmon4" "salmon3" "oldlace" "grey78" "grey77" "grey54"
|
|
107 "grey45" "grey21" "gray97" "gray96" "gray95" "gray88" "gray87" "gray86"
|
|
108 "gray70" "gray57" "gray38" "gray12" "gray11" "plum3" "linen" "gray9"
|
|
109 "gray8" "blue4" "beige" "turquoise" "blue" "lemonchiffon4"
|
|
110 "darkseagreen1" "antiquewhite3" "mediumorchid" "springgreen"
|
|
111 "turquoise4" "steelblue3" "mistyrose2" "lightcyan2" "red" "firebrick2"
|
|
112 "royalblue" "cadetblue" "skyblue3" "yellow3" "salmon1" "orange4"
|
|
113 "hotpink" "grey90" "gray56" "gray39" "gray18" "gray14" "plum4" "grey6"
|
|
114 "gray6" "gold3" "gold1" "blue2" "tan2" "cyan" "mediumspringgreen"
|
|
115 "darkolivegreen2" "goldenrod" "lightsteelblue" "brown" "whip"
|
|
116 "chartreuse3" "violetred4" "royalblue2" "royalblue1" "papayawhip"
|
|
117 "mistyrose3" "lightcyan1" "aquamarine" "skyblue4" "hotpink4" "hotpink3"
|
|
118 "hotpink2" "dimgray" "tomato" "grey66" "grey65" "grey64" "grey33"
|
|
119 "grey27" "gray76" "gray69" "gray68" "grey0" "azure" "green"
|
|
120 "darkgoldenrod4" "darkgoldenrod3" "darkgoldenrod2" "darkgoldenrod"
|
|
121 "brown" "lightsalmon2" "deepskyblue4" "deepskyblue3" "deepskyblue2"
|
|
122 "deepskyblue" "darkorange1" "violetred3" "violetred2" "violetred1"
|
|
123 "slateblue3" "slateblue2" "drab" "indianred1" "firebrick1" "cadetblue4"
|
|
124 "violetred" "rosybrown" "blue" "firebrick" "grey100" "wheat4" "grey79"
|
|
125 "grey76" "grey61" "gray93" "gray84" "gray65" "gray36" "gray32" "gray13"
|
|
126 "gray10" "azure3" "snow1" "tan1" "gray" "darkolivegreen1" "blue"
|
|
127 "almond" "lavenderblush3" "lavenderblush2" "lavenderblush1"
|
|
128 "darkolivegreen" "lavenderblush" "aquamarine2" "red" "olivedrab2"
|
|
129 "mistyrose4" "mistyrose1" "lightcyan3" "lightcoral" "chartreuse"
|
|
130 "peachpuff" "palegreen" "mintcream" "skyblue2" "moccasin" "tomato1"
|
|
131 "orchid3" "maroon3" "salmon" "grey81" "grey62" "grey39" "grey38"
|
|
132 "grey37" "gray92" "gray83" "gray66" "gray54" "gray50" "gray30" "gray19"
|
|
133 "gray15" "azure4" "grey3" "tan3" "pink" "gray" "blue" "lightsteelblue2"
|
|
134 "lightsteelblue1" "green" "lightslategray" "lemonchiffon2"
|
|
135 "springgreen1" "greenyellow" "chartreuse2" "grey" "royalblue3"
|
|
136 "powderblue" "peachpuff2" "palegreen2" "cream" "slateblue" "seashell2"
|
|
137 "deeppink2" "darkkhaki" "maroon4" "sienna" "grey71" "grey67" "grey18"
|
|
138 "gray59" "gray43" "gray25" "bisque" "red1" "mediumslateblue"
|
|
139 "lightgoldenrod1" "goldenrod" "paleturquoise3" "lightskyblue4" "green"
|
|
140 "yellow" "smoke" "blue" "white" "steelblue4" "rosybrown3" "peachpuff1"
|
|
141 "palegreen1" "blueviolet" "seashell4" "sienna3" "grey40" "gray91"
|
|
142 "gray82" "gray5" "cyan2" "cyan1" "blue1" "snow" "lightgoldenrod2"
|
|
143 "lightslateblue" "mediumorchid3" "darkseagreen4" "springgreen3" "green"
|
|
144 "slategray4" "slategray3" "slategray2" "blue" "peachpuff4" "palegreen4"
|
|
145 "green" "orangered3" "goldenrod1" "ghostwhite" "firebrick4" "firebrick3"
|
|
146 "cadetblue3" "slategray" "seashell3" "honeydew3" "cornsilk4" "cornsilk2"
|
|
147 "purple1" "dimgrey" "khaki1" "ivory3" "grey70" "grey60" "grey32"
|
|
148 "grey22" "grey12" "gray98" "gray89" "gray71" "gray64" "gray60" "gray49"
|
|
149 "azure2" "gray3" "paleturquoise1" "mediumpurple1" "purple"
|
|
150 "lemonchiffon1" "blue" "navajowhite3" "darkorchid1" "orange"
|
|
151 "goldenrod2" "khaki" "chocolate2" "burlywood2" "honeydew1" "darkgreen"
|
|
152 "thistle3" "thistle2" "thistle1" "thistle" "maroon2" "maroon1" "grey53"
|
|
153 "grey44" "grey25" "gray74" "gray45" "gray41" "gray35" "gray27" "gray23"
|
|
154 "gray16" "brown4" "wheat" "coral" "tan4" "lightgoldenrodyellow" "blue"
|
|
155 "green" "gray" "palevioletred3" "mediumpurple4" "mediumpurple3"
|
|
156 "saddlebrown" "blue" "darkorchid4" "darkorchid3" "puff" "olivedrab4"
|
|
157 "lightblue4" "lightpink" "lightgray" "honeydew2" "cornsilk1" "lace"
|
|
158 "sienna1" "bisque4" "orchid" "khaki3" "grey84" "grey83" "grey82"
|
|
159 "grey72" "grey52" "grey43" "grey26" "grey14" "grey10" "gray75" "gray53"
|
|
160 "gray21" "gray20" "brown3" "grey8" "red2" "navy" "grey" "gold"
|
|
161 "mediumaquamarine" "lightgoldenrod" "darkslategray4" "darkseagreen3"
|
|
162 "darkseagreen2" "antiquewhite4" "white" "springgreen4" "lightyellow4"
|
|
163 "white" "aquamarine1" "turquoise3" "steelblue2" "rosybrown2" "pink"
|
|
164 "gray" "indianred2" "dodgerblue" "green" "seagreen1" "deeppink4"
|
|
165 "aliceblue" "magenta1" "pink" "sienna2" "orchid1" "gray100" "grey97"
|
|
166 "grey94" "grey87" "grey86" "grey51" "grey42" "grey19" "gray94" "gray85"
|
|
167 "gray61" "brown2" "khaki" "grey1" "gold4" "blue" "green" "grey"
|
|
168 "turquoise" "paleturquoise" "mediumorchid4" "antiquewhite2"
|
|
169 "lightyellow2" "violet" "salmon" "chartreuse1" "turquoise1" "sandybrown"
|
|
170 "orangered1" "lightpink1" "lightblue2" "lightblue1" "grey" "seagreen4"
|
|
171 "seagreen3" "lightblue" "deeppink3" "burlywood" "seashell" "hotpink1"
|
|
172 "gray" "yellow4" "yellow" "purple" "orange" "ivory4" "grey99" "grey89"
|
|
173 "grey63" "grey58" "grey49" "grey31" "grey24" "grey20" "green4" "green1"
|
|
174 "gray73" "gray67" "coral3" "coral2" "plum2" "pink4" "ivory" "gray4"
|
|
175 "gray2" "gold2" "aquamarine" "grey" "lightgoldenrod3" "darkolivegreen3"
|
|
176 "darkgoldenrod1" "goldenrod" "orchid" "chiffon" "navajowhite4"
|
|
177 "deepskyblue1" "lightyellow" "floralwhite" "blue" "mediumblue"
|
|
178 "chocolate4" "chocolate3" "burlywood4" "turquoise" "steelblue" "green"
|
|
179 "lawngreen" "honeydew4" "seagreen" "orchid4" "wheat1" "violet" "ivory1"
|
|
180 "grey88" "grey85" "grey57" "grey56" "grey55" "grey48" "grey47" "grey46"
|
|
181 "grey30" "grey17" "gray47" "gray29" "pink2" "grey5" "grey4" "green"
|
|
182 "gray0" "brown" "lightsteelblue4" "darkolivegreen4" "palevioletred4"
|
|
183 "blue" "darkslategray3" "darkslategray2" "darkslategray1"
|
|
184 "blanchedalmond" "palegoldenrod" "blue" "lightseagreen" "lemonchiffon3"
|
|
185 "darkslategray" "green" "darkseagreen" "antiquewhite" "darkorange2"
|
|
186 "chartreuse4" "blue" "rosybrown1" "olivedrab3" "lightpink2" "orangered"
|
|
187 "thistle4" "blue" "cornsilk" "salmon2" "orchid2" "ivory2" "grey93"
|
|
188 "grey92" "grey91" "grey36" "grey29" "grey28" "grey16" "gray79" "gray78"
|
|
189 "gray77" "gray48" "gray17" "coral4" "coral1" "plum1" "pink1" "grey9"
|
|
190 "grey2" "gray7" "cyan4" "blue3" "plum" "cornflowerblue" "lightskyblue2"
|
|
191 "antiquewhite1" "navajowhite2" "navajowhite1" "lightyellow3"
|
|
192 "navajowhite" "darkorange3" "whitesmoke" "turquoise2" "steelblue1"
|
|
193 "lightpink4" "lightblue3" "green" "chocolate1" "blue" "olivedrab"
|
|
194 "lightgrey" "chocolate" "magenta4" "magenta3" "yellow1" "purple3"
|
|
195 "purple2" "orange2" "orange1" "magenta" "bisque1" "wheat2" "maroon"
|
|
196 "khaki4" "grey96" "grey95" "grey80" "grey50" "grey41" "grey15" "grey11"
|
|
197 "gray80" "gray58" "gray40" "gray34" "gray22" "brown1" "snow3"
|
|
198 "mediumturquoise" "lightsteelblue3" "palevioletred2" "palevioletred1"
|
|
199 "paleturquoise2" "green" "palevioletred" "mediumorchid1" "white"
|
|
200 "mediumpurple" "lightyellow1" "dodgerblue2" "dodgerblue1" "violet"
|
|
201 "aquamarine3" "slategray1" "gray" "orangered4" "lightpink3" "blue"
|
|
202 "darkorchid" "cadetblue1" "burlywood3" "seashell1" "cornsilk3" "tomato4"
|
|
203 "tomato2" "wheat3" "grey98" "grey59" "grey23" "green3" "green2" "gray72"
|
|
204 "gray62" "gray52" "gray46" "gray42" "gray28" "gray24" "white" "cyan3"
|
|
205 "black" ))
|
|
206
|
|
207 (defvar hproperty:color-ptr nil
|
|
208 "Pointer to current color name table to use for Hyperbole buttons in Epoch.")
|
|
209
|
|
210 (defconst hproperty:good-colors
|
|
211 '(
|
|
212 "medium violet red" "indianred4" "firebrick1" "DarkGoldenrod" "NavyBlue"
|
|
213 "darkorchid" "tomato3" "mediumseagreen" "deeppink" "forestgreen"
|
|
214 "mistyrose4" "slategrey" "purple4" "dodgerblue3" "mediumvioletred"
|
|
215 "lightsalmon3" "orangered2" "turquoise4" "Gray55"
|
|
216 )
|
|
217 "Good colors for contrast against wheat background and black foreground.")
|
|
218
|
|
219 (provide 'hui-ep-but)
|
|
220
|