aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2004-05-18 19:12:15 +0000
committerKaroly Lorentey2004-05-18 19:12:15 +0000
commitc23670f81e059ebe645c88575f4ddfa67f26bf6b (patch)
tree71667a6ceaa877ccf3953abedfa7b0fd5f0f5369 /lisp
parentd9858e4f1889a61b216ae1f99053846362067ccc (diff)
parenta7f7f2540f02834ad128d0c9357a4dbd8222dff4 (diff)
downloademacs-c23670f81e059ebe645c88575f4ddfa67f26bf6b.tar.gz
emacs-c23670f81e059ebe645c88575f4ddfa67f26bf6b.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-301 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-302 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-303 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-304 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-305 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-306 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-307 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-308 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-309 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-310 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-311 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-312 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-313 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-314 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-315 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-316 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-317 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-318 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-319 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-320 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-321 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-322 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-323 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-324 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-163
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog316
-rw-r--r--lisp/calendar/appt.el9
-rw-r--r--lisp/custom.el8
-rw-r--r--lisp/descr-text.el434
-rw-r--r--lisp/emacs-lisp/cl-indent.el8
-rw-r--r--lisp/emacs-lisp/lisp-mode.el2
-rw-r--r--lisp/emacs-lisp/timer.el13
-rw-r--r--lisp/eshell/.gitignore13
-rw-r--r--lisp/eshell/esh-io.el46
-rw-r--r--lisp/eshell/esh-test.el8
-rw-r--r--lisp/faces.el5
-rw-r--r--lisp/files.el13
-rw-r--r--lisp/generic.el5
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/gnus-win.el4
-rw-r--r--lisp/help-fns.el57
-rw-r--r--lisp/ibuf-macs.el16
-rw-r--r--lisp/iimage.el134
-rw-r--r--lisp/international/quail.el147
-rw-r--r--lisp/iswitchb.el2
-rw-r--r--lisp/language/european.el13
-rw-r--r--lisp/mail/rfc2368.el3
-rw-r--r--lisp/mail/unrmail.el189
-rw-r--r--lisp/man.el6
-rw-r--r--lisp/net/telnet.el17
-rw-r--r--lisp/progmodes/compile.el44
-rw-r--r--lisp/progmodes/f90.el49
-rw-r--r--lisp/progmodes/gdb-ui.el1
-rw-r--r--lisp/progmodes/gud.el11
-rw-r--r--lisp/progmodes/python.el19
-rw-r--r--lisp/subr.el55
-rw-r--r--lisp/textmodes/ispell.el9
-rw-r--r--lisp/toolbar/close.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/close.xpm57
-rw-r--r--lisp/toolbar/copy.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/copy.xpm88
-rw-r--r--lisp/toolbar/cut.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/cut.xpm97
-rw-r--r--lisp/toolbar/help.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/help.xpm305
-rw-r--r--lisp/toolbar/home.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/home.xpm160
-rw-r--r--lisp/toolbar/index.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/index.xpm238
-rw-r--r--lisp/toolbar/jump_to.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/jump_to.xpm208
-rw-r--r--lisp/toolbar/left_arrow.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/left_arrow.xpm86
-rw-r--r--lisp/toolbar/new.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/new.xpm189
-rw-r--r--lisp/toolbar/open.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/open.xpm232
-rw-r--r--lisp/toolbar/paste.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/paste.xpm149
-rw-r--r--lisp/toolbar/preferences.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/preferences.xpm139
-rw-r--r--lisp/toolbar/print.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/print.xpm236
-rw-r--r--lisp/toolbar/right_arrow.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/right_arrow.xpm84
-rw-r--r--lisp/toolbar/save.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/save.xpm280
-rw-r--r--lisp/toolbar/saveas.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/saveas.xpm322
-rw-r--r--lisp/toolbar/search.pbmbin634 -> 81 bytes
-rw-r--r--lisp/toolbar/search.xpm270
-rw-r--r--lisp/toolbar/spell.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/spell.xpm97
-rw-r--r--lisp/toolbar/undo.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/undo.xpm91
-rw-r--r--lisp/toolbar/up_arrow.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/up_arrow.xpm108
-rw-r--r--lisp/tree-widget.el736
-rw-r--r--lisp/version.el2
-rw-r--r--lisp/wid-edit.el2
75 files changed, 4681 insertions, 1156 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7eb5e70b23a..8e2b74d5b60 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,222 @@
12004-05-18 Masatake YAMATO <jet@gyve.org>
2
3 * wid-edit.el (widget-radio-button-notify): Don't pass `widget'
4 to widget-apply. :action method assumes 2 arguments, not 3.
5
62004-05-17 Glenn Morris <gmorris@ast.cam.ac.uk>
7
8 * progmodes/f90.el (f90-end-block-re, f90-start-block-re): New
9 constants.
10 (hs-special-modes-alist): Add an f90-mode entry.
11
122004-05-17 Sam Steingold <sds@gnu.org>
13
14 * emacs-lisp/cl-indent.el (common-lisp-indent-function-1): Indent
15 "without-" forms just like "with-" and "do-". Use regexp-opt.
16
172004-05-16 Kim F. Storm <storm@cua.dk>
18
19 * emacs-lisp/timer.el (timer-event-handler): Fix last change.
20
212004-05-15 John Wiegley <johnw@newartisans.com>
22
23 * eshell/esh-io.el (eshell-get-target): whitespace changes.
24 (eshell-output-object-to-target): Improve output speed 20% by not
25 calling `eshell-stringify' if something is already known to be a
26 string.
27
282004-05-15 Alex Ott <ott@jet.msk.su>
29
30 * textmodes/ispell.el (ispell-local-dictionary-alist): Add
31 windows-1251 to the choice of coding systems.
32 (ispell-dictionary-alist-6): Add support for "russianw.aff",
33 encoded in cp1251.
34
352004-05-15 Dan Nicolaescu <dann@ics.uci.edu>
36
37 * progmodes/compile.el (compilation-warning-face)
38 (compilation-info-face): Use min-colors.
39
402004-05-15 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
41
42 * toolbar/close.pbm, toolbar/close.xpm
43 * toolbar/copy.pbm, toolbar/copy.xpm
44 * toolbar/cut.pbm, toolbar/cut.xpm
45 * toolbar/help.pbm, toolbar/help.xpm
46 * toolbar/home.pbm, toolbar/home.xpm
47 * toolbar/index.pbm, toolbar/index.xpm
48 * toolbar/jump_to.pbm, toolbar/jump_to.xpm
49 * toolbar/left_arrow.pbm, toolbar/left_arrow.xpm
50 * toolbar/new.pbm, toolbar/new.xpm
51 * toolbar/open.pbm, toolbar/open.xpm
52 * toolbar/paste.pbm, toolbar/paste.xpm
53 * toolbar/preferences.pbm, toolbar/preferences.xpm
54 * toolbar/print.pbm, toolbar/print.xpm
55 * toolbar/right_arrow.pbm, toolbar/right_arrow.xpm
56 * toolbar/save.pbm, toolbar/save.xpm
57 * toolbar/saveas.pbm, toolbar/saveas.xpm
58 * toolbar/search.pbm, toolbar/search.xpm
59 * toolbar/spell.pbm, toolbar/spell.xpm
60 * toolbar/undo.pbm, toolbar/undo.xpm
61 * toolbar/up_arrow.pbm, toolbar/up_arrow.xpm: New icons from
62 GTK+ version 2.
63
64
652004-05-15 Kim F. Storm <storm@cua.dk>
66
67 * emacs-lisp/timer.el (timer-activate): Add optional arg triggered-p.
68 Use it to set triggered-p element of timer.
69 (timer-event-handler): Set triggered-p element non-nil while running
70 the timer function.
71
722004-05-14 David Ponce <david@dponce.com>
73
74 * tree-widget.el: New file.
75
762004-05-13 Marcelo Toledo <marcelo@marcelotoledo.org>
77
78 * language/european.el ("Brazilian Portuguese"): Added support for
79 Brazilian Portuguese.
80
812004-05-13 John Wiegley <johnw@newartisans.com>
82
83 * iswitchb.el (iswitchb-use-virtual-buffers): Only turn on
84 `recentf-mode' if this variable has been customized to t.
85
86 * eshell/esh-test.el (eshell-test): Call the function
87 `emacs-version' rather than trying to build a custom version
88 string.
89
902004-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
91
92 * net/telnet.el (telnet-mode): Use define-derived-mode.
93 Don't modify the global value of comint-prompt-regexp.
94
952004-05-13 John Paul Wallington <jpw@gnu.org>
96
97 * version.el (emacs-version): Check for `gtk' feature before
98 `x-toolkit' feature.
99
1002004-05-13 Juanma Barranquero <lektu@terra.es>
101
102 * files.el (file-truename): Don't mention COUNTER and PREV-DIRS
103 arguments in the docstring, they're used only in recursive calls.
104
105 * help-fns.el (help-arg-highlighting-function)
106 (help-argument-name): Delete.
107 (help-default-arg-highlight): New function.
108 (help-do-arg-highlighting): Use it.
109
1102004-05-13 Glenn Morris <gmorris@ast.cam.ac.uk>
111
112 * calendar/appt.el (appt-disp-window):
113 Use `calendar-set-mode-line' for a centered mode-line.
114
1152004-05-13 Takaaki Ota <Takaaki.Ota@am.sony.com> (tiny change)
116
117 * calendar/appt.el (appt-disp-window): Do not split window
118 excessively when `split-height-threshold' is low.
119
1202004-05-12 Nick Roberts <nickrob@gnu.org>
121
122 * progmodes/gud.el (gud-mode): Add gud-kill-buffer-hook to
123 kill-buffer-hook here and make it local.
124 (gud-kill-buffer-hook): Use kill-process for a sure kill.
125
1262004-05-12 Daniel Pfeiffer <occitan@esperanto.org>
127
128 * progmodes/compile.el (compilation-set-window-height):
129 Use save-excursion to protect against misplaced marker.
130
1312004-05-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
132
133 * custom.el (defface): Document that type can have value gtk.
134
135 * faces.el (face-spec-set-match-display): Handle type gtk in display.
136
1372004-05-12 Kenichi Handa <handa@m17n.org>
138
139 * descr-text.el: Require quail at comile time.
140 (describe-char): If an input method is on and it supports the
141 character, show how to input it.
142
143 * international/quail.el (quail-install-decode-map): Accept a
144 char-table whose subtype is `quail-decode-map'.
145 (quail-store-decode-map-key, quail-gen-decode-map1)
146 (quail-gen-decode-map, quail-find-key1, quail-find-key)
147 (quail-show-key): New functions.
148
1492004-05-12 Juanma Barranquero <lektu@terra.es>
150
151 * generic.el (define-generic-mode): Remove redundant arglist info.
152
153 * help-fns.el (help-split-fundoc, help-add-fundoc-usage):
154 Make arguments match their use in docstring.
155 (help-arg-highlighting-function): New variable.
156 (help-argument-name): Mention it in the docstring.
157 (help-do-arg-highlight): Use it. Expand regexp to accept also
158 ARG-xxx and xxx-ARG references.
159
1602004-05-11 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change)
161
162 * mail/rfc2368.el (rfc2368-parse-mailto-url): Make the results of
163 parsing "mailto:addr1%2C%20addr2", "mailto:?to=addr1%2C%20addr2",
164 and "mailto:addr1?to=addr2" equal.
165
1662004-05-11 Alexander Pohoyda <alexander.pohoyda@gmx.net> (tiny change)
167
168 * man.el (Man-getpage-in-background): Use shell-file-name
169 and shell-command-switch variables instead of hard-coded values.
170
1712004-05-11 Eli Zaretskii <eliz@gnu.org>
172
173 * iimage.el: New file.
174
1752004-05-11 Juanma Barranquero <lektu@terra.es>
176
177 * custom.el (custom-initialize-default, defcustom): Typo in docstring.
178
179 * files.el (set-visited-file-name, file-expand-wildcards):
180 Fix docstring.
181
1822004-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
183
184 * emacs-lisp/lisp-mode.el (prin1-char): Use eventp.
185
186 * subr.el (eventp): Be more discriminating with integers.
187
1882004-05-10 Daniel Pfeiffer <occitan@esperanto.org>
189
190 * progmodes/compile.el (compile): Add universal prefix arg.
191 (compilation-error-regexp-alist-alist): Add edg patterns.
192
1932004-05-10 Sam Steingold <sds@gnu.org>
194
195 * textmodes/ispell.el (ispell-message):
196 Use `message-cite-prefix-regexp' instead of `message-yank-prefix'.
197
1982004-05-10 Dave Love <fx@gnu.org>
199
200 * progmodes/python.el (help-buffer): Autoload when compiling.
201 (python-after-info-look): Don't assume Info-goto-node returns non-nil.
202 (run-python): Prepend to any existing PYTHONPATH.
203
2042004-05-10 Nick Roberts <nick@nick.uklinux.net>
205
206 * progmodes/gdb-ui.el (gdb-annotation-rules): Add nquery annotation
207 for pending breakpoints.
208
2092004-05-10 Richard M. Stallman <rms@gnu.org>
210
211 * mail/unrmail.el (unrmail): Mostly rewritten. Parses the file
212 directly without calling any functions in Rmail.
213 (unrmail-unprune): Function deleted.
214
2152004-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
216
217 * progmodes/python.el (inferior-python-mode-map): Remove erroneous
218 C-c C-z binding.
219
12004-05-10 Kenichi Handa <handa@m17n.org> 2202004-05-10 Kenichi Handa <handa@m17n.org>
2 221
3 * descr-text.el (describe-char): Fix previous change. Don't make 222 * descr-text.el (describe-char): Fix previous change. Don't make
@@ -10,12 +229,21 @@
10 229
112004-05-10 Juanma Barranquero <lektu@terra.es> 2302004-05-10 Juanma Barranquero <lektu@terra.es>
12 231
13 * subr.el (remove-overlays, read-passwd): Fix docstring.
14
15 * help-fns.el (help-argument-name): Default to italic. 232 * help-fns.el (help-argument-name): Default to italic.
16 (help-highlight-arguments): Return always (usage . doc), even when 233 (help-highlight-arguments): Return always (usage . doc), even when
17 usage is nil. 234 usage is nil.
18 235
236 * ibuf-macs.el (define-ibuffer-column, define-ibuffer-sorter)
237 (define-ibuffer-filter): Add usage info.
238 (define-ibuffer-op): Add usage info (but CL-style defaults for
239 keyword args are not shown).
240
241 * subr.el (remove-overlays, read-passwd): Fix docstring.
242 (start-process-shell-command): Fix docstring. Put usage info in a
243 format usable by `describe-function'.
244 (open-network-stream, open-network-stream-nowait)
245 (open-network-stream-server): Fix docstring.
246
192004-05-09 Jason Rumney <jasonr@gnu.org> 2472004-05-09 Jason Rumney <jasonr@gnu.org>
20 248
21 * international/code-pages (cp932, cp936, cp949, c950): Remove. 249 * international/code-pages (cp932, cp936, cp949, c950): Remove.
@@ -29,24 +257,24 @@
29 257
30 * term/w32-win.el: Require code-pages. 258 * term/w32-win.el: Require code-pages.
31 259
32 * international/mule-cmds.el (set-locale-environment): On 260 * international/mule-cmds.el (set-locale-environment):
33 MS-Windows use ansi code-page for default coding-systems. 261 On MS-Windows use ansi code-page for default coding-systems.
34 Set up paper sizes for Windows 3 letter languages. 262 Set up paper sizes for Windows 3 letter languages.
35 263
36 * international/code-pages.el (cp932, cp936, cp949, cp950): Add 264 * international/code-pages.el (cp932, cp936, cp949, cp950):
37 aliases. Also add cp125* if not already defined. 265 Add aliases. Also add cp125* if not already defined.
38 266
392004-05-09 Juanma Barranquero <lektu@terra.es> 2672004-05-09 Juanma Barranquero <lektu@terra.es>
40 268
41 * net/quickurl.el (quickurl, quickurl-browse-url, quickurl-read): 269 * help-fns.el (help-highlight-arguments): Don't try to highlight
42 Don't use CL-style default args. 270 missing or autoloaded arglists. Accept structured arguments, like
271 the first ones of `do' and `flet'.
43 272
44 * pcvs.el (cvs-mode-run, cvs-is-within-p): Fix typo in docstring. 273 * pcvs.el (cvs-mode-run, cvs-is-within-p): Fix typo in docstring.
45 (cvs-get-marked): Remove redundant arglist info. 274 (cvs-get-marked): Remove redundant arglist info.
46 275
47 * help-fns.el (help-highlight-arguments): Don't try to highlight 276 * net/quickurl.el (quickurl, quickurl-browse-url, quickurl-read):
48 missing or autoloaded arglists. Accept structured arguments, like 277 Don't use CL-style default args.
49 the first ones of `do' and `flet'.
50 278
512004-05-08 Andreas Schwab <schwab@suse.de> 2792004-05-08 Andreas Schwab <schwab@suse.de>
52 280
@@ -62,17 +290,17 @@
62 290
632004-05-08 John Wiegley <johnw@newartisans.com> 2912004-05-08 John Wiegley <johnw@newartisans.com>
64 292
65 * iswitchb.el (iswitchb-use-virtual-buffers): Added support for 293 * iswitchb.el (iswitchb-use-virtual-buffers): Add support for
66 "virtual buffers" (off by default), which makes it possible to 294 "virtual buffers" (off by default), which makes it possible to
67 switch to the "virtual" buffers of recently visited files. When a 295 switch to the "virtual" buffers of recently visited files. When a
68 buffer name search fails, and this option is on, iswitchb will 296 buffer name search fails, and this option is on, iswitchb will
69 look at the list of recently visited files, and permit matching 297 look at the list of recently visited files, and permit matching
70 against those names. When the user hits RET on a match, it will 298 against those names. When the user hits RET on a match, it will
71 revisit that file. 299 revisit that file.
72 (iswitchb-read-buffer): Added two optional arguments, which makes 300 (iswitchb-read-buffer): Add two optional arguments, which makes
73 isearchb.el possible. 301 isearchb.el possible.
74 (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match, 302 (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match)
75 iswitchb-next-match): Added support for virtual buffers. 303 (iswitchb-next-match): Add support for virtual buffers.
76 304
77 * isearchb.el: This module extends iswitchb to provide "as you 305 * isearchb.el: This module extends iswitchb to provide "as you
78 type" buffer selection. 306 type" buffer selection.
@@ -108,8 +336,7 @@
108 336
109 * help-fns.el (help-do-arg-highlight): Temporarily set ?\- to be a 337 * help-fns.el (help-do-arg-highlight): Temporarily set ?\- to be a
110 word constituent so FOO-ARG is not recognized as an arg. 338 word constituent so FOO-ARG is not recognized as an arg.
111 (help-highlight-arguments): Don't skip lists in mandatory 339 (help-highlight-arguments): Don't skip lists in mandatory arguments.
112 arguments.
113 340
114 * simple.el (next-error): Fix typo in docstring. 341 * simple.el (next-error): Fix typo in docstring.
115 (open-line): Make argument names match their use in docstring. 342 (open-line): Make argument names match their use in docstring.
@@ -127,11 +354,11 @@
127 354
128 Version 2.0.40 of Tramp released. 355 Version 2.0.40 of Tramp released.
129 356
130 * net/tramp.el (tramp-completion-mode, tramp-md5-function): Use 357 * net/tramp.el (tramp-completion-mode, tramp-md5-function):
131 symbol-function to invoke functions only known on some Emacs 358 Use symbol-function to invoke functions only known on some Emacs
132 flavors. This avoids byte-compiler warnings. Reported by Kevin 359 flavors. This avoids byte-compiler warnings. Reported by Kevin
133 Scaldeferri <kevin@scaldeferri.com>. 360 Scaldeferri <kevin@scaldeferri.com>.
134 (tramp-do-copy-or-rename-file-via-buffer): Renamed from 361 (tramp-do-copy-or-rename-file-via-buffer): Rename from
135 tramp-do-copy-or-rename-via-buffer (without `file'), to make it 362 tramp-do-copy-or-rename-via-buffer (without `file'), to make it
136 consistent with the other tramp-do-* functions. 363 consistent with the other tramp-do-* functions.
137 (tramp-do-copy-or-rename-file): Calls adjusted. 364 (tramp-do-copy-or-rename-file): Calls adjusted.
@@ -145,8 +372,7 @@
145 (tramp-read-passwd): Construct the key for the password cache in a 372 (tramp-read-passwd): Construct the key for the password cache in a
146 way that works for multi methods, too. 373 way that works for multi methods, too.
147 (tramp-bug): Add backup-directory-alist and 374 (tramp-bug): Add backup-directory-alist and
148 bkup-backup-directory-info to bug reports, with Tramp 375 bkup-backup-directory-info to bug reports, with Tramp counterparts.
149 counterparts.
150 376
1512004-05-07 Michael Albinus <michael.albinus@gmx.de> 3772004-05-07 Michael Albinus <michael.albinus@gmx.de>
152 378
@@ -157,8 +383,8 @@
157 (tramp-do-copy-or-rename-file-out-of-band): Asynchronous process 383 (tramp-do-copy-or-rename-file-out-of-band): Asynchronous process
158 used instead of a synchronous one. Allows password entering. 384 used instead of a synchronous one. Allows password entering.
159 (tramp-action-out-of-band): New defun. 385 (tramp-action-out-of-band): New defun.
160 (tramp-open-connection-rsh, tramp-method-out-of-band-p): Remove 386 (tramp-open-connection-rsh, tramp-method-out-of-band-p):
161 restriction with password from doc string. 387 Remove restriction with password from doc string.
162 (tramp-bug): Add variables `tramp-terminal-prompt-regexp', 388 (tramp-bug): Add variables `tramp-terminal-prompt-regexp',
163 `tramp-out-of-band-prompt-regexp', 389 `tramp-out-of-band-prompt-regexp',
164 `tramp-actions-copy-out-of-band', `password-cache' and 390 `tramp-actions-copy-out-of-band', `password-cache' and
@@ -172,15 +398,14 @@
172 Schwab <schwab@suse.de>. 398 Schwab <schwab@suse.de>.
173 (tramp-do-copy-or-rename-file-via-buffer): Set permissions of the 399 (tramp-do-copy-or-rename-file-via-buffer): Set permissions of the
174 new file. 400 new file.
175 (tramp-handle-file-local-copy, tramp-handle-write-region): The 401 (tramp-handle-file-local-copy, tramp-handle-write-region):
176 permissions of the temporary file are set if filename exists. 402 The permissions of the temporary file are set if filename exists.
177 Reported by Ted Stern <stern@cray.com>. 403 Reported by Ted Stern <stern@cray.com>.
178 (tramp-backup-directory-alist) 404 (tramp-backup-directory-alist)
179 (tramp-bkup-backup-directory-info): New defcustoms. 405 (tramp-bkup-backup-directory-info): New defcustoms.
180 (tramp-file-name-handler-alist): Add entry for 406 (tramp-file-name-handler-alist): Add entry for `find-backup-file-name'.
181 `find-backup-file-name'. 407 (tramp-handle-find-backup-file-name): New function.
182 (tramp-handle-find-backup-file-name): New function. Implements 408 Implements Tramp's find-backup-file-name.
183 Tramp's find-backup-file-name.
184 409
185 * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry 410 * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry
186 for `find-backup-file-name'. 411 for `find-backup-file-name'.
@@ -197,8 +422,7 @@
197 * subr.el (lambda): Add arglist description to docstring. 422 * subr.el (lambda): Add arglist description to docstring.
198 (declare): Fix typo in docstring. 423 (declare): Fix typo in docstring.
199 (open-network-stream): Fix docstring. 424 (open-network-stream): Fix docstring.
200 (process-kill-without-query): Fix docstring and add obsolescence 425 (process-kill-without-query): Fix docstring and add obsolescence info.
201 info.
202 (last, butlast, nbutlast): Make arguments match their use in docstring. 426 (last, butlast, nbutlast): Make arguments match their use in docstring.
203 (insert-buffer-substring-no-properties): Likewise. 427 (insert-buffer-substring-no-properties): Likewise.
204 (insert-buffer-substring-as-yank): Likewise. 428 (insert-buffer-substring-as-yank): Likewise.
@@ -269,13 +493,13 @@
269 493
2702004-05-06 Juanma Barranquero <lektu@terra.es> 4942004-05-06 Juanma Barranquero <lektu@terra.es>
271 495
496 * ehelp.el (electric-help-command-loop): Check whether the last
497 character is visible, not (point-max).
498
272 * help-fns.el (help-argument-name): Default to bold; don't inherit 499 * help-fns.el (help-argument-name): Default to bold; don't inherit
273 from font-lock-variable-name-face. 500 from font-lock-variable-name-face.
274 (help-do-arg-highlight): Grok also ARGth occurrences in the docstring. 501 (help-do-arg-highlight): Grok also ARGth occurrences in the docstring.
275 502
276 * ehelp.el (electric-help-command-loop): Check whether the last
277 character is visible, not (point-max).
278
2792004-05-05 Kenichi Handa <handa@m17n.org> 5032004-05-05 Kenichi Handa <handa@m17n.org>
280 504
281 * descr-text.el (describe-char): Copy the character with text 505 * descr-text.el (describe-char): Copy the character with text
@@ -323,6 +547,9 @@
323 547
3242004-05-04 Juanma Barranquero <lektu@terra.es> 5482004-05-04 Juanma Barranquero <lektu@terra.es>
325 549
550 * ehelp.el (electric-help-command-loop, electric-help-undefined)
551 (electric-help-help): Check against unmapped commands.
552
326 * help-fns.el (help-argument-name): New face, inheriting from 553 * help-fns.el (help-argument-name): New face, inheriting from
327 font-lock-variable-name-face, to highlight function arguments in 554 font-lock-variable-name-face, to highlight function arguments in
328 `describe-function' and `describe-key'. 555 `describe-function' and `describe-key'.
@@ -333,12 +560,9 @@
333 (describe-function-1): Use it. Do docstring output via `insert', 560 (describe-function-1): Use it. Do docstring output via `insert',
334 not 'princ', so text attributes are preserved. 561 not 'princ', so text attributes are preserved.
335 562
336 * winner.el (winner-mode-map): Move winner-undo and winner-redo to 563 * winner.el (winner-mode-map): Move `winner-undo' and
337 C-c <left> and C-c <right>, respectively (the previous bindings 564 `winner-redo' to C-c <left> and C-c <right>, respectively (the
338 conflict with prev-buffer, next-buffer). 565 previous bindings conflict with `prev-buffer', `next-buffer').
339
340 * ehelp.el (electric-help-command-loop, electric-help-undefined)
341 (electric-help-help): Check against unmapped commands.
342 566
3432004-05-03 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> 5672004-05-03 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
344 568
@@ -617,7 +841,7 @@
617 `font-lock-add-keywords'. 841 `font-lock-add-keywords'.
618 (sql-send-string): Add function. 842 (sql-send-string): Add function.
619 843
6202004-04-29 Dave Love <fx@gnu.org> 8442004-04-29 Dave Love <fx@gnu.org>
621 845
622 * progmodes/cfengine.el (cfengine-beginning-of-defun) 846 * progmodes/cfengine.el (cfengine-beginning-of-defun)
623 (cfengine-end-of-defun): Ensure progress through buffer. 847 (cfengine-end-of-defun): Ensure progress through buffer.
@@ -1060,11 +1284,11 @@
1060 1284
10612004-04-21 Juanma Barranquero <lektu@terra.es> 12852004-04-21 Juanma Barranquero <lektu@terra.es>
1062 1286
1063 * makefile.w32-in (WINS): Add url/ directory.
1064
1065 * font-lock.el (font-lock-preprocessor-face): Remove spurious quote. 1287 * font-lock.el (font-lock-preprocessor-face): Remove spurious quote.
1066 (font-lock-warning-face): Fix spacing. 1288 (font-lock-warning-face): Fix spacing.
1067 1289
1290 * makefile.w32-in (WINS): Add url/ directory.
1291
10682004-04-21 Lars Hansen <larsh@math.ku.dk> 12922004-04-21 Lars Hansen <larsh@math.ku.dk>
1069 1293
1070 * desktop.el (desktop-buffer-mode-handlers): New variable. 1294 * desktop.el (desktop-buffer-mode-handlers): New variable.
@@ -1809,7 +2033,7 @@
1809 2033
18102004-04-05 Vinicius Jose Latorre <viniciusjl@ig.com.br> 20342004-04-05 Vinicius Jose Latorre <viniciusjl@ig.com.br>
1811 2035
1812 * printing.el: Dox fix. 2036 * printing.el: Doc fix.
1813 2037
18142004-04-05 Nick Roberts <nick@nick.uklinux.net> 20382004-04-05 Nick Roberts <nick@nick.uklinux.net>
1815 2039
@@ -6811,7 +7035,7 @@
68112003-07-10 Vinicius Jose Latorre <viniciusjl@ig.com.br> 70352003-07-10 Vinicius Jose Latorre <viniciusjl@ig.com.br>
6812 7036
6813 * ps-print.el: Print line number correctly in a region. Reported by 7037 * ps-print.el: Print line number correctly in a region. Reported by
6814 Tim Allen <timallen@ls83.fsnet.co.uk> 7038 Tim Allen <timallen@ls83.fsnet.co.uk>.
6815 (ps-print-version): New version number (6.6.2). 7039 (ps-print-version): New version number (6.6.2).
6816 (ps-printing-region): Code fix. 7040 (ps-printing-region): Code fix.
6817 7041
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 002aec878ca..0c911ca8b7d 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -449,11 +449,10 @@ NEW-TIME is a string giving the date."
449 (same-window-p (buffer-name appt-disp-buf))) 449 (same-window-p (buffer-name appt-disp-buf)))
450 ;; By default, split the bottom window and use the lower part. 450 ;; By default, split the bottom window and use the lower part.
451 (appt-select-lowest-window) 451 (appt-select-lowest-window)
452 (split-window)) 452 (select-window (split-window)))
453 (pop-to-buffer appt-disp-buf)) 453 (switch-to-buffer appt-disp-buf))
454 (setq mode-line-format 454 (calendar-set-mode-line
455 (concat "-------------------- Appointment in " 455 (format " Appointment in %s minutes. %s " min-to-app new-time))
456 min-to-app " minutes. " new-time " %-"))
457 (erase-buffer) 456 (erase-buffer)
458 (insert appt-msg) 457 (insert appt-msg)
459 (shrink-window-if-larger-than-buffer (get-buffer-window appt-disp-buf t)) 458 (shrink-window-if-larger-than-buffer (get-buffer-window appt-disp-buf t))
diff --git a/lisp/custom.el b/lisp/custom.el
index f5cfd55400a..ae9d86cab00 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -54,7 +54,7 @@ Users should not set it.")
54 "Initialize SYMBOL with VALUE. 54 "Initialize SYMBOL with VALUE.
55This will do nothing if symbol already has a default binding. 55This will do nothing if symbol already has a default binding.
56Otherwise, if symbol has a `saved-value' property, it will evaluate 56Otherwise, if symbol has a `saved-value' property, it will evaluate
57the car of that and used as the default binding for symbol. 57the car of that and use it as the default binding for symbol.
58Otherwise, VALUE will be evaluated and used as the default binding for 58Otherwise, VALUE will be evaluated and used as the default binding for
59symbol." 59symbol."
60 (unless (default-boundp symbol) 60 (unless (default-boundp symbol)
@@ -176,7 +176,7 @@ set to nil, as the value is no longer rogue."
176 "Declare SYMBOL as a customizable variable that defaults to VALUE. 176 "Declare SYMBOL as a customizable variable that defaults to VALUE.
177DOC is the variable documentation. 177DOC is the variable documentation.
178 178
179Neither SYMBOL nor VALUE needs to be quoted. 179Neither SYMBOL nor VALUE need to be quoted.
180If SYMBOL is not already bound, initialize it to VALUE. 180If SYMBOL is not already bound, initialize it to VALUE.
181The remaining arguments should have the form 181The remaining arguments should have the form
182 182
@@ -298,8 +298,8 @@ following REQ are defined:
298 298
299`type' (the value of `window-system') 299`type' (the value of `window-system')
300 Under X, in addition to the values `window-system' can take, 300 Under X, in addition to the values `window-system' can take,
301 `motif', `lucid' and `x-toolkit' are allowed, and match when 301 `motif', `lucid', `gtk' and `x-toolkit' are allowed, and match when
302 the Motif toolkit, Lucid toolkit, or any X toolkit is in use. 302 the Motif toolkit, Lucid toolkit, GTK toolkit or any X toolkit is in use.
303 303
304`class' (the frame's color support) 304`class' (the frame's color support)
305 Should be one of `color', `grayscale', or `mono'. 305 Should be one of `color', `grayscale', or `mono'.
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 6b4f18ff718..75ce294dad6 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -28,7 +28,7 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(eval-when-compile (require 'button)) 31(eval-when-compile (require 'button) (require 'quail))
32 32
33(defun describe-text-done () 33(defun describe-text-done ()
34 "Delete the current window or bury the current buffer." 34 "Delete the current window or bury the current buffer."
@@ -183,7 +183,6 @@ otherwise."
183(defun describe-text-properties-1 (pos output-buffer) 183(defun describe-text-properties-1 (pos output-buffer)
184 (let* ((properties (text-properties-at pos)) 184 (let* ((properties (text-properties-at pos))
185 (overlays (overlays-at pos)) 185 (overlays (overlays-at pos))
186 overlay
187 (wid-field (get-char-property pos 'field)) 186 (wid-field (get-char-property pos 'field))
188 (wid-button (get-char-property pos 'button)) 187 (wid-button (get-char-property pos 'button))
189 (wid-doc (get-char-property pos 'widget-doc)) 188 (wid-doc (get-char-property pos 'widget-doc))
@@ -225,221 +224,214 @@ otherwise."
225 (widget-insert "There are text properties here:\n") 224 (widget-insert "There are text properties here:\n")
226 (describe-property-list properties))))) 225 (describe-property-list properties)))))
227 226
228;;; We cannot use the UnicodeData.txt file as such; it is not free. 227(defcustom describe-char-unicodedata-file nil
229;;; We can turn that info a different format and release the result 228 "Location of Unicode data file.
230;;; as free data. When that is done, we could reinstate the code below. 229This is the UnicodeData.txt file from the Unicode consortium, used for
231;;; For the mean time, here is a dummy placeholder. 230diagnostics. If it is non-nil `describe-char-after' will print data
232;;; -- rms 231looked up from it. This facility is mostly of use to people doing
233(defun describe-char-unicode-data (char) nil) 232multilingual development.
234 233
235;;; (defcustom describe-char-unicodedata-file nil 234This is a fairly large file, not typically present on GNU systems. At
236;;; "Location of Unicode data file. 235the time of writing it is at
237;;; This is the UnicodeData.txt file from the Unicode consortium, used for 236<URL:http://www.unicode.org/Public/UNIDATA/UnicodeData.txt>."
238;;; diagnostics. If it is non-nil `describe-char-after' will print data 237 :group 'mule
239;;; looked up from it. This facility is mostly of use to people doing 238 :version "21.4"
240;;; multilingual development. 239 :type '(choice (const :tag "None" nil)
241 240 file))
242;;; This is a fairly large file, not typically present on GNU systems. At 241
243;;; the time of writing it is at 242;; We could convert the unidata file into a Lispy form once-for-all
244;;; <URL:ftp://www.unicode.org/Public/UNIDATA/UnicodeData.txt>." 243;; and distribute it for loading on demand. It might be made more
245;;; :group 'mule 244;; space-efficient by splitting strings word-wise and replacing them
246;;; :version "21.5" 245;; with lists of symbols interned in a private obarray, e.g.
247;;; :type '(choice (const :tag "None" nil) 246;; "LATIN SMALL LETTER A" => '(LATIN SMALL LETTER A).
248;;; file)) 247
249 248;; Fixme: Check whether this needs updating for Unicode 4.
250;;; ;; We could convert the unidata file into a Lispy form once-for-all 249(defun describe-char-unicode-data (char)
251;;; ;; and distribute it for loading on demand. It might be made more 250 "Return a list of Unicode data for unicode CHAR.
252;;; ;; space-efficient by splitting strings word-wise and replacing them 251Each element is a list of a property description and the property value.
253;;; ;; with lists of symbols interned in a private obarray, e.g. 252The list is null if CHAR isn't found in `describe-char-unicodedata-file'."
254;;; ;; "LATIN SMALL LETTER A" => '(LATIN SMALL LETTER A). 253 (when describe-char-unicodedata-file
255 254 (unless (file-exists-p describe-char-unicodedata-file)
256;;; ;; Fixme: Check whether this needs updating for Unicode 4. 255 (error "`unicodedata-file' %s not found" describe-char-unicodedata-file))
257;;; (defun describe-char-unicode-data (char) 256 (with-current-buffer
258;;; "Return a list of Unicode data for unicode CHAR. 257 ;; Find file in fundamental mode to avoid, e.g. flyspell turned
259;;; Each element is a list of a property description and the property value. 258 ;; on for .txt. Don't use RAWFILE arg in case of DOS line endings.
260;;; The list is null if CHAR isn't found in `describe-char-unicodedata-file'." 259 (let ((auto-mode-alist))
261;;; (when describe-char-unicodedata-file 260 (find-file-noselect describe-char-unicodedata-file))
262;;; (unless (file-exists-p describe-char-unicodedata-file) 261 (goto-char (point-min))
263;;; (error "`unicodedata-file' %s not found" describe-char-unicodedata-file)) 262 (let ((hex (format "%04X" char))
264;;; (save-excursion 263 found first last)
265;;; ;; Find file in fundamental mode to avoid, e.g. flyspell turned 264 (if (re-search-forward (concat "^" hex) nil t)
266;;; ;; on for .txt. Don't use RAWFILE arg in case of DOS line endings. 265 (setq found t)
267;;; (set-buffer (let ((auto-mode-alist)) 266 ;; It's not listed explicitly. Look for ranges, e.g. CJK
268;;; (find-file-noselect describe-char-unicodedata-file))) 267 ;; ideographs, and check whether it's in one of them.
269;;; (goto-char (point-min)) 268 (while (and (re-search-forward "^\\([^;]+\\);[^;]+First>;" nil t)
270;;; (let ((hex (format "%04X" char)) 269 (>= char (setq first
271;;; found first last) 270 (string-to-number (match-string 1) 16)))
272;;; (if (re-search-forward (concat "^" hex) nil t) 271 (progn
273;;; (setq found t) 272 (forward-line 1)
274;;; ;; It's not listed explicitly. Look for ranges, e.g. CJK 273 (looking-at "^\\([^;]+\\);[^;]+Last>;")
275;;; ;; ideographs, and check whether it's in one of them. 274 (> char
276;;; (while (and (re-search-forward "^\\([^;]+\\);[^;]+First>;" nil t) 275 (setq last
277;;; (>= char (setq first 276 (string-to-number (match-string 1) 16))))))
278;;; (string-to-number (match-string 1) 16))) 277 (if (and (>= char first)
279;;; (progn 278 (<= char last))
280;;; (forward-line 1) 279 (setq found t)))
281;;; (looking-at "^\\([^;]+\\);[^;]+Last>;") 280 (if found
282;;; (> char 281 (let ((fields (mapcar (lambda (elt)
283;;; (setq last 282 (if (> (length elt) 0)
284;;; (string-to-number (match-string 1) 16)))))) 283 elt))
285;;; (if (and (>= char first) 284 (cdr (split-string
286;;; (<= char last)) 285 (buffer-substring
287;;; (setq found t))) 286 (line-beginning-position)
288;;; (if found 287 (line-end-position))
289;;; (let ((fields (mapcar (lambda (elt) 288 ";")))))
290;;; (if (> (length elt) 0) 289 ;; The length depends on whether the last field was empty.
291;;; elt)) 290 (unless (or (= 13 (length fields))
292;;; (cdr (split-string 291 (= 14 (length fields)))
293;;; (buffer-substring 292 (error "Invalid contents in %s" describe-char-unicodedata-file))
294;;; (line-beginning-position) 293 ;; The field names and values lists are slightly
295;;; (line-end-position)) 294 ;; modified from Mule-UCS unidata.el.
296;;; ";"))))) 295 (list
297;;; ;; The length depends on whether the last field was empty. 296 (list "Name" (let ((name (nth 0 fields)))
298;;; (unless (or (= 13 (length fields)) 297 ;; Check for <..., First>, <..., Last>
299;;; (= 14 (length fields))) 298 (if (string-match "\\`\\(<[^,]+\\)," name)
300;;; (error "Invalid contents in %s" describe-char-unicodedata-file)) 299 (concat (match-string 1 name) ">")
301;;; ;; The field names and values lists are slightly 300 name)))
302;;; ;; modified from Mule-UCS unidata.el. 301 (list "Category"
303;;; (list 302 (cdr (assoc
304;;; (list "Name" (let ((name (nth 0 fields))) 303 (nth 1 fields)
305;;; ;; Check for <..., First>, <..., Last> 304 '(("Lu" . "uppercase letter")
306;;; (if (string-match "\\`\\(<[^,]+\\)," name) 305 ("Ll" . "lowercase letter")
307;;; (concat (match-string 1 name) ">") 306 ("Lt" . "titlecase letter")
308;;; name))) 307 ("Mn" . "non-spacing mark")
309;;; (list "Category" 308 ("Mc" . "spacing-combining mark")
310;;; (cdr (assoc 309 ("Me" . "enclosing mark")
311;;; (nth 1 fields) 310 ("Nd" . "decimal digit")
312;;; '(("Lu" . "uppercase letter") 311 ("Nl" . "letter number")
313;;; ("Ll" . "lowercase letter") 312 ("No" . "other number")
314;;; ("Lt" . "titlecase letter") 313 ("Zs" . "space separator")
315;;; ("Mn" . "non-spacing mark") 314 ("Zl" . "line separator")
316;;; ("Mc" . "spacing-combining mark") 315 ("Zp" . "paragraph separator")
317;;; ("Me" . "enclosing mark") 316 ("Cc" . "other control")
318;;; ("Nd" . "decimal digit") 317 ("Cf" . "other format")
319;;; ("Nl" . "letter number") 318 ("Cs" . "surrogate")
320;;; ("No" . "other number") 319 ("Co" . "private use")
321;;; ("Zs" . "space separator") 320 ("Cn" . "not assigned")
322;;; ("Zl" . "line separator") 321 ("Lm" . "modifier letter")
323;;; ("Zp" . "paragraph separator") 322 ("Lo" . "other letter")
324;;; ("Cc" . "other control") 323 ("Pc" . "connector punctuation")
325;;; ("Cf" . "other format") 324 ("Pd" . "dash punctuation")
326;;; ("Cs" . "surrogate") 325 ("Ps" . "open punctuation")
327;;; ("Co" . "private use") 326 ("Pe" . "close punctuation")
328;;; ("Cn" . "not assigned") 327 ("Pi" . "initial-quotation punctuation")
329;;; ("Lm" . "modifier letter") 328 ("Pf" . "final-quotation punctuation")
330;;; ("Lo" . "other letter") 329 ("Po" . "other punctuation")
331;;; ("Pc" . "connector punctuation") 330 ("Sm" . "math symbol")
332;;; ("Pd" . "dash punctuation") 331 ("Sc" . "currency symbol")
333;;; ("Ps" . "open punctuation") 332 ("Sk" . "modifier symbol")
334;;; ("Pe" . "close punctuation") 333 ("So" . "other symbol")))))
335;;; ("Pi" . "initial-quotation punctuation") 334 (list "Combining class"
336;;; ("Pf" . "final-quotation punctuation") 335 (cdr (assoc
337;;; ("Po" . "other punctuation") 336 (string-to-number (nth 2 fields))
338;;; ("Sm" . "math symbol") 337 '((0 . "Spacing")
339;;; ("Sc" . "currency symbol") 338 (1 . "Overlays and interior")
340;;; ("Sk" . "modifier symbol") 339 (7 . "Nuktas")
341;;; ("So" . "other symbol"))))) 340 (8 . "Hiragana/Katakana voicing marks")
342;;; (list "Combining class" 341 (9 . "Viramas")
343;;; (cdr (assoc 342 (10 . "Start of fixed position classes")
344;;; (string-to-number (nth 2 fields)) 343 (199 . "End of fixed position classes")
345;;; '((0 . "Spacing") 344 (200 . "Below left attached")
346;;; (1 . "Overlays and interior") 345 (202 . "Below attached")
347;;; (7 . "Nuktas") 346 (204 . "Below right attached")
348;;; (8 . "Hiragana/Katakana voicing marks") 347 (208 . "Left attached (reordrant around \
349;;; (9 . "Viramas") 348single base character)")
350;;; (10 . "Start of fixed position classes") 349 (210 . "Right attached")
351;;; (199 . "End of fixed position classes") 350 (212 . "Above left attached")
352;;; (200 . "Below left attached") 351 (214 . "Above attached")
353;;; (202 . "Below attached") 352 (216 . "Above right attached")
354;;; (204 . "Below right attached") 353 (218 . "Below left")
355;;; (208 . "Left attached (reordrant around \ 354 (220 . "Below")
356;;; single base character)") 355 (222 . "Below right")
357;;; (210 . "Right attached") 356 (224 . "Left (reordrant around single base \
358;;; (212 . "Above left attached") 357character)")
359;;; (214 . "Above attached") 358 (226 . "Right")
360;;; (216 . "Above right attached") 359 (228 . "Above left")
361;;; (218 . "Below left") 360 (230 . "Above")
362;;; (220 . "Below") 361 (232 . "Above right")
363;;; (222 . "Below right") 362 (233 . "Double below")
364;;; (224 . "Left (reordrant around single base \ 363 (234 . "Double above")
365;;; character)") 364 (240 . "Below (iota subscript)")))))
366;;; (226 . "Right") 365 (list "Bidi category"
367;;; (228 . "Above left") 366 (cdr (assoc
368;;; (230 . "Above") 367 (nth 3 fields)
369;;; (232 . "Above right") 368 '(("L" . "Left-to-Right")
370;;; (233 . "Double below") 369 ("LRE" . "Left-to-Right Embedding")
371;;; (234 . "Double above") 370 ("LRO" . "Left-to-Right Override")
372;;; (240 . "Below (iota subscript)"))))) 371 ("R" . "Right-to-Left")
373;;; (list "Bidi category" 372 ("AL" . "Right-to-Left Arabic")
374;;; (cdr (assoc 373 ("RLE" . "Right-to-Left Embedding")
375;;; (nth 3 fields) 374 ("RLO" . "Right-to-Left Override")
376;;; '(("L" . "Left-to-Right") 375 ("PDF" . "Pop Directional Format")
377;;; ("LRE" . "Left-to-Right Embedding") 376 ("EN" . "European Number")
378;;; ("LRO" . "Left-to-Right Override") 377 ("ES" . "European Number Separator")
379;;; ("R" . "Right-to-Left") 378 ("ET" . "European Number Terminator")
380;;; ("AL" . "Right-to-Left Arabic") 379 ("AN" . "Arabic Number")
381;;; ("RLE" . "Right-to-Left Embedding") 380 ("CS" . "Common Number Separator")
382;;; ("RLO" . "Right-to-Left Override") 381 ("NSM" . "Non-Spacing Mark")
383;;; ("PDF" . "Pop Directional Format") 382 ("BN" . "Boundary Neutral")
384;;; ("EN" . "European Number") 383 ("B" . "Paragraph Separator")
385;;; ("ES" . "European Number Separator") 384 ("S" . "Segment Separator")
386;;; ("ET" . "European Number Terminator") 385 ("WS" . "Whitespace")
387;;; ("AN" . "Arabic Number") 386 ("ON" . "Other Neutrals")))))
388;;; ("CS" . "Common Number Separator") 387 (list
389;;; ("NSM" . "Non-Spacing Mark") 388 "Decomposition"
390;;; ("BN" . "Boundary Neutral") 389 (if (nth 4 fields)
391;;; ("B" . "Paragraph Separator") 390 (let* ((parts (split-string (nth 4 fields)))
392;;; ("S" . "Segment Separator") 391 (info (car parts)))
393;;; ("WS" . "Whitespace") 392 (if (string-match "\\`<\\(.+\\)>\\'" info)
394;;; ("ON" . "Other Neutrals"))))) 393 (setq info (match-string 1 info))
395;;; (list 394 (setq info nil))
396;;; "Decomposition" 395 (if info (setq parts (cdr parts)))
397;;; (if (nth 4 fields) 396 ;; Maybe printing ? for unrepresentable unicodes
398;;; (let* ((parts (split-string (nth 4 fields))) 397 ;; here and below should be changed?
399;;; (info (car parts))) 398 (setq parts (mapconcat
400;;; (if (string-match "\\`<\\(.+\\)>\\'" info) 399 (lambda (arg)
401;;; (setq info (match-string 1 info)) 400 (string (or (decode-char
402;;; (setq info nil)) 401 'ucs
403;;; (if info (setq parts (cdr parts))) 402 (string-to-number arg 16))
404;;; ;; Maybe printing ? for unrepresentable unicodes 403 ??)))
405;;; ;; here and below should be changed? 404 parts " "))
406;;; (setq parts (mapconcat 405 (concat info parts))))
407;;; (lambda (arg) 406 (list "Decimal digit value"
408;;; (string (or (decode-char 407 (nth 5 fields))
409;;; 'ucs 408 (list "Digit value"
410;;; (string-to-number arg 16)) 409 (nth 6 fields))
411;;; ??))) 410 (list "Numeric value"
412;;; parts " ")) 411 (nth 7 fields))
413;;; (concat info parts)))) 412 (list "Mirrored"
414;;; (list "Decimal digit value" 413 (if (equal "Y" (nth 8 fields))
415;;; (nth 5 fields)) 414 "yes"))
416;;; (list "Digit value" 415 (list "Old name" (nth 9 fields))
417;;; (nth 6 fields)) 416 (list "ISO 10646 comment" (nth 10 fields))
418;;; (list "Numeric value" 417 (list "Uppercase" (and (nth 11 fields)
419;;; (nth 7 fields)) 418 (string (or (decode-char
420;;; (list "Mirrored" 419 'ucs
421;;; (if (equal "Y" (nth 8 fields)) 420 (string-to-number
422;;; "yes")) 421 (nth 11 fields) 16))
423;;; (list "Old name" (nth 9 fields)) 422 ??))))
424;;; (list "ISO 10646 comment" (nth 10 fields)) 423 (list "Lowercase" (and (nth 12 fields)
425;;; (list "Uppercase" (and (nth 11 fields) 424 (string (or (decode-char
426;;; (string (or (decode-char 425 'ucs
427;;; 'ucs 426 (string-to-number
428;;; (string-to-number 427 (nth 12 fields) 16))
429;;; (nth 11 fields) 16)) 428 ??))))
430;;; ??)))) 429 (list "Titlecase" (and (nth 13 fields)
431;;; (list "Lowercase" (and (nth 12 fields) 430 (string (or (decode-char
432;;; (string (or (decode-char 431 'ucs
433;;; 'ucs 432 (string-to-number
434;;; (string-to-number 433 (nth 13 fields) 16))
435;;; (nth 12 fields) 16)) 434 ??)))))))))))
436;;; ??))))
437;;; (list "Titlecase" (and (nth 13 fields)
438;;; (string (or (decode-char
439;;; 'ucs
440;;; (string-to-number
441;;; (nth 13 fields) 16))
442;;; ??)))))))))))
443 435
444;; Return information about how CHAR is displayed at the buffer 436;; Return information about how CHAR is displayed at the buffer
445;; position POS. If the selected frame is on a graphic display, 437;; position POS. If the selected frame is on a graphic display,
@@ -466,7 +458,6 @@ as well as widgets, buttons, overlays, and text properties."
466 (error "No character follows specified position")) 458 (error "No character follows specified position"))
467 (let* ((char (char-after pos)) 459 (let* ((char (char-after pos))
468 (charset (char-charset char)) 460 (charset (char-charset char))
469 (buffer (current-buffer))
470 (composition (find-composition pos nil nil t)) 461 (composition (find-composition pos nil nil t))
471 (component-chars nil) 462 (component-chars nil)
472 (display-table (or (window-display-table) 463 (display-table (or (window-display-table)
@@ -524,6 +515,13 @@ as well as widgets, buttons, overlays, and text properties."
524 (push (format "%s:" (pop props)) ps) 515 (push (format "%s:" (pop props)) ps)
525 (push (format "%s;" (pop props)) ps)) 516 (push (format "%s;" (pop props)) ps))
526 (list (cons "Properties" (nreverse ps))))) 517 (list (cons "Properties" (nreverse ps)))))
518 ("to input"
519 ,@(let ((key-list (and current-input-method
520 (quail-find-key char))))
521 (if (consp key-list)
522 (list "type"
523 (mapconcat #'(lambda (x) (concat "\"" x "\""))
524 key-list " or ")))))
527 ("buffer code" 525 ("buffer code"
528 ,(encoded-string-description 526 ,(encoded-string-description
529 (string-as-unibyte (char-to-string char)) nil)) 527 (string-as-unibyte (char-to-string char)) nil))
diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el
index 2e6265d4dfd..c5e13a4c00f 100644
--- a/lisp/emacs-lisp/cl-indent.el
+++ b/lisp/emacs-lisp/cl-indent.el
@@ -216,8 +216,12 @@ If nil, indent backquoted lists as data, i.e., like quoted lists."
216 (cond ((string-match "\\`def" 216 (cond ((string-match "\\`def"
217 function) 217 function)
218 (setq tentative-defun t)) 218 (setq tentative-defun t))
219 ((string-match "\\`\\(with\\|do\\)-" 219 ((string-match
220 function) 220 (eval-when-compile
221 (concat "\\`\\("
222 (regexp-opt '("with" "without" "do"))
223 "\\)-"))
224 function)
221 (setq method '(&lambda &body)))))) 225 (setq method '(&lambda &body))))))
222 ;; backwards compatibility. Bletch. 226 ;; backwards compatibility. Bletch.
223 ((eq method 'defun) 227 ((eq method 'defun)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 853498b0c8c..4057fe2968e 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -448,7 +448,7 @@ alternative printed representations that can be displayed."
448 "Return a string representing CHAR as a character rather than as an integer. 448 "Return a string representing CHAR as a character rather than as an integer.
449If CHAR is not a character, return nil." 449If CHAR is not a character, return nil."
450 (and (integerp char) 450 (and (integerp char)
451 (char-valid-p (event-basic-type char)) 451 (eventp char)
452 (let ((c (event-basic-type char))) 452 (let ((c (event-basic-type char)))
453 (concat 453 (concat
454 "?" 454 "?"
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 4ab2ac8e0d4..336a1ff82d0 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -161,7 +161,7 @@ fire repeatedly that many seconds apart."
161 (aset timer 6 args) 161 (aset timer 6 args)
162 timer) 162 timer)
163 163
164(defun timer-activate (timer) 164(defun timer-activate (timer &optional triggered-p)
165 "Put TIMER on the list of active timers." 165 "Put TIMER on the list of active timers."
166 (if (and (timerp timer) 166 (if (and (timerp timer)
167 (integerp (aref timer 1)) 167 (integerp (aref timer 1))
@@ -184,7 +184,7 @@ fire repeatedly that many seconds apart."
184 (if last 184 (if last
185 (setcdr last (cons timer timers)) 185 (setcdr last (cons timer timers))
186 (setq timer-list (cons timer timers))) 186 (setq timer-list (cons timer timers)))
187 (aset timer 0 nil) 187 (aset timer 0 triggered-p)
188 (aset timer 7 nil) 188 (aset timer 7 nil)
189 nil) 189 nil)
190 (error "Invalid or uninitialized timer"))) 190 (error "Invalid or uninitialized timer")))
@@ -270,7 +270,7 @@ This function is called, by name, directly by the C code."
270 (setq timer-event-last timer) 270 (setq timer-event-last timer)
271 (let ((inhibit-quit t)) 271 (let ((inhibit-quit t))
272 (if (timerp timer) 272 (if (timerp timer)
273 (progn 273 (let (retrigger)
274 ;; Delete from queue. 274 ;; Delete from queue.
275 (cancel-timer timer) 275 (cancel-timer timer)
276 ;; Re-schedule if requested. 276 ;; Re-schedule if requested.
@@ -287,13 +287,16 @@ This function is called, by name, directly by the C code."
287 (aref timer 4)))) 287 (aref timer 4))))
288 (if (> repeats timer-max-repeats) 288 (if (> repeats timer-max-repeats)
289 (timer-inc-time timer (* (aref timer 4) repeats))))) 289 (timer-inc-time timer (* (aref timer 4) repeats)))))
290 (timer-activate timer))) 290 (timer-activate timer t)
291 (setq retrigger t)))
291 ;; Run handler. 292 ;; Run handler.
292 ;; We do this after rescheduling so that the handler function 293 ;; We do this after rescheduling so that the handler function
293 ;; can cancel its own timer successfully with cancel-timer. 294 ;; can cancel its own timer successfully with cancel-timer.
294 (condition-case nil 295 (condition-case nil
295 (apply (aref timer 5) (aref timer 6)) 296 (apply (aref timer 5) (aref timer 6))
296 (error nil))) 297 (error nil))
298 (if retrigger
299 (aset timer 0 nil)))
297 (error "Bogus timer event")))) 300 (error "Bogus timer event"))))
298 301
299;; This function is incompatible with the one in levents.el. 302;; This function is incompatible with the one in levents.el.
diff --git a/lisp/eshell/.gitignore b/lisp/eshell/.gitignore
index 16ccfcc8c0c..e1d7683a723 100644
--- a/lisp/eshell/.gitignore
+++ b/lisp/eshell/.gitignore
@@ -1 +1,14 @@
1COPYING
2FEATURES
3INSTALL
4Makefile
5NEWS
6README
7_darcs
8_pkg.el
9auto-autoloads.el
1esh-groups.el 10esh-groups.el
11esh-toggle.el
12eshell-auto.el
13eshell.info
14eshell.texi
diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el
index 8d1036b736e..d832fa9cd03 100644
--- a/lisp/eshell/esh-io.el
+++ b/lisp/eshell/esh-io.el
@@ -333,22 +333,23 @@ it defaults to `insert'."
333 (cond 333 (cond
334 ((stringp target) 334 ((stringp target)
335 (let ((redir (assoc target eshell-virtual-targets))) 335 (let ((redir (assoc target eshell-virtual-targets)))
336 (if redir 336 (if redir
337 (if (nth 2 redir) 337 (if (nth 2 redir)
338 (funcall (nth 1 redir) mode) 338 (funcall (nth 1 redir) mode)
339 (nth 1 redir)) 339 (nth 1 redir))
340 (let* ((exists (get-file-buffer target)) 340 (let* ((exists (get-file-buffer target))
341 (buf (find-file-noselect target t))) 341 (buf (find-file-noselect target t)))
342 (with-current-buffer buf 342 (with-current-buffer buf
343 (if buffer-read-only 343 (if buffer-read-only
344 (error "Cannot write to read-only file `%s'" target)) 344 (error "Cannot write to read-only file `%s'" target))
345 (set (make-local-variable 'eshell-output-file-buffer) 345 (set (make-local-variable 'eshell-output-file-buffer)
346 (if (eq exists buf) 0 t)) 346 (if (eq exists buf) 0 t))
347 (cond ((eq mode 'overwrite) 347 (cond ((eq mode 'overwrite)
348 (erase-buffer)) 348 (erase-buffer))
349 ((eq mode 'append) 349 ((eq mode 'append)
350 (goto-char (point-max)))) 350 (goto-char (point-max))))
351 (point-marker)))))) 351 (point-marker))))))
352
352 ((or (bufferp target) 353 ((or (bufferp target)
353 (and (boundp 'eshell-buffer-shorthand) 354 (and (boundp 'eshell-buffer-shorthand)
354 (symbol-value 'eshell-buffer-shorthand) 355 (symbol-value 'eshell-buffer-shorthand)
@@ -363,15 +364,18 @@ it defaults to `insert'."
363 ((eq mode 'append) 364 ((eq mode 'append)
364 (goto-char (point-max)))) 365 (goto-char (point-max))))
365 (point-marker)))) 366 (point-marker))))
366 ((functionp target) 367
367 nil) 368 ((functionp target) nil)
369
368 ((symbolp target) 370 ((symbolp target)
369 (if (eq mode 'overwrite) 371 (if (eq mode 'overwrite)
370 (set target nil)) 372 (set target nil))
371 target) 373 target)
374
372 ((or (eshell-processp target) 375 ((or (eshell-processp target)
373 (markerp target)) 376 (markerp target))
374 target) 377 target)
378
375 (t 379 (t
376 (error "Illegal redirection target: %s" 380 (error "Illegal redirection target: %s"
377 (eshell-stringify target))))) 381 (eshell-stringify target)))))
@@ -481,7 +485,8 @@ Returns what was actually sent, or nil if nothing was sent."
481 (let ((moving (= (point) target))) 485 (let ((moving (= (point) target)))
482 (save-excursion 486 (save-excursion
483 (goto-char target) 487 (goto-char target)
484 (setq object (eshell-stringify object)) 488 (unless (stringp object)
489 (setq object (eshell-stringify object)))
485 (insert-and-inherit object) 490 (insert-and-inherit object)
486 (set-marker target (point-marker))) 491 (set-marker target (point-marker)))
487 (if moving 492 (if moving
@@ -489,7 +494,8 @@ Returns what was actually sent, or nil if nothing was sent."
489 494
490 ((eshell-processp target) 495 ((eshell-processp target)
491 (when (eq (process-status target) 'run) 496 (when (eq (process-status target) 'run)
492 (setq object (eshell-stringify object)) 497 (unless (stringp object)
498 (setq object (eshell-stringify object)))
493 (process-send-string target object))) 499 (process-send-string target object)))
494 500
495 ((consp target) 501 ((consp target)
diff --git a/lisp/eshell/esh-test.el b/lisp/eshell/esh-test.el
index 54edf5e35ab..076505da14e 100644
--- a/lisp/eshell/esh-test.el
+++ b/lisp/eshell/esh-test.el
@@ -167,13 +167,7 @@
167 (local-set-key [(control ?m)] 'eshell-test-goto-func) 167 (local-set-key [(control ?m)] 'eshell-test-goto-func)
168 (local-set-key [return] 'eshell-test-goto-func) 168 (local-set-key [return] 'eshell-test-goto-func)
169 169
170 (insert "Testing Eshell under " 170 (insert "Testing Eshell under " (emacs-version))
171 (format "GNU Emacs %s (%s%s)"
172 emacs-version
173 system-configuration
174 (cond ((featurep 'motif) ", Motif")
175 ((featurep 'x-toolkit) ", X toolkit")
176 (t ""))))
177 (switch-to-buffer test-buffer) 171 (switch-to-buffer test-buffer)
178 (delete-other-windows)) 172 (delete-other-windows))
179 (eshell-for funcname (sort (all-completions "eshell-test--" 173 (eshell-for funcname (sort (all-completions "eshell-test--"
diff --git a/lisp/faces.el b/lisp/faces.el
index 47dab153dba..7bcaf7b6f01 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1309,9 +1309,12 @@ If FRAME is nil, the current FRAME is used."
1309 (memq 'tty options)) 1309 (memq 'tty options))
1310 (and (memq 'motif options) 1310 (and (memq 'motif options)
1311 (featurep 'motif)) 1311 (featurep 'motif))
1312 (and (memq 'gtk options)
1313 (featurep 'gtk))
1312 (and (memq 'lucid options) 1314 (and (memq 'lucid options)
1313 (featurep 'x-toolkit) 1315 (featurep 'x-toolkit)
1314 (not (featurep 'motif))) 1316 (not (featurep 'motif))
1317 (not (featurep 'gtk)))
1315 (and (memq 'x-toolkit options) 1318 (and (memq 'x-toolkit options)
1316 (featurep 'x-toolkit)))) 1319 (featurep 'x-toolkit))))
1317 ((eq req 'min-colors) 1320 ((eq req 'min-colors)
diff --git a/lisp/files.el b/lisp/files.el
index ca24de2862d..91da8a4c2c7 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -663,13 +663,12 @@ The truename of a file name is found by chasing symbolic links
663both at the level of the file and at the level of the directories 663both at the level of the file and at the level of the directories
664containing it, until no links are left at any level. 664containing it, until no links are left at any level.
665 665
666The arguments COUNTER and PREV-DIRS are used only in recursive calls. 666\(fn FILENAME)"
667Do not specify them in other calls." 667 ;; COUNTER and PREV-DIRS are only used in recursive calls.
668 ;; COUNTER can be a cons cell whose car is the count of how many more links 668 ;; COUNTER can be a cons cell whose car is the count of how many
669 ;; to chase before getting an error. 669 ;; more links to chase before getting an error.
670 ;; PREV-DIRS can be a cons cell whose car is an alist 670 ;; PREV-DIRS can be a cons cell whose car is an alist
671 ;; of truenames we've just recently computed. 671 ;; of truenames we've just recently computed.
672
673 (cond ((or (string= filename "") (string= filename "~")) 672 (cond ((or (string= filename "") (string= filename "~"))
674 (setq filename (expand-file-name filename)) 673 (setq filename (expand-file-name filename))
675 (if (string= filename "") 674 (if (string= filename "")
@@ -2330,7 +2329,7 @@ However, the mode will not be changed if
2330(defun set-visited-file-name (filename &optional no-query along-with-file) 2329(defun set-visited-file-name (filename &optional no-query along-with-file)
2331 "Change name of file visited in current buffer to FILENAME. 2330 "Change name of file visited in current buffer to FILENAME.
2332The next time the buffer is saved it will go in the newly specified file. 2331The next time the buffer is saved it will go in the newly specified file.
2333nil or empty string as argument means make buffer not be visiting any file. 2332FILENAME nil or an empty string means make buffer not be visiting any file.
2334Remember to delete the initial contents of the minibuffer 2333Remember to delete the initial contents of the minibuffer
2335if you wish to pass an empty string as the argument. 2334if you wish to pass an empty string as the argument.
2336 2335
@@ -4024,7 +4023,7 @@ by `sh' are supported."
4024 "Expand wildcard pattern PATTERN. 4023 "Expand wildcard pattern PATTERN.
4025This returns a list of file names which match the pattern. 4024This returns a list of file names which match the pattern.
4026 4025
4027If PATTERN is written as an absolute relative file name, 4026If PATTERN is written as an absolute file name,
4028the values are absolute also. 4027the values are absolute also.
4029 4028
4030If PATTERN is written as a relative file name, it is interpreted 4029If PATTERN is written as a relative file name, it is interpreted
diff --git a/lisp/generic.el b/lisp/generic.el
index bd6fa0608aa..ca4b47ff4b1 100644
--- a/lisp/generic.el
+++ b/lisp/generic.el
@@ -1,6 +1,6 @@
1;;; generic.el --- defining simple major modes with comment and font-lock 1;;; generic.el --- defining simple major modes with comment and font-lock
2;; 2;;
3;; Copyright (C) 1997, 1999 Free Software Foundation, Inc. 3;; Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc.
4;; 4;;
5;; Author: Peter Breton <pbreton@cs.umb.edu> 5;; Author: Peter Breton <pbreton@cs.umb.edu>
6;; Created: Fri Sep 27 1996 6;; Created: Fri Sep 27 1996
@@ -188,9 +188,6 @@ regexp in `generic-find-file-regexp'. If the value is nil,
188 &optional description) 188 &optional description)
189 "Create a new generic mode with NAME. 189 "Create a new generic mode with NAME.
190 190
191Args: (NAME COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST AUTO-MODE-LIST
192 FUNCTION-LIST &optional DESCRIPTION)
193
194NAME should be a symbol; its string representation is used as the function 191NAME should be a symbol; its string representation is used as the function
195name. If DESCRIPTION is provided, it is used as the docstring for the new 192name. If DESCRIPTION is provided, it is used as the docstring for the new
196function. 193function.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index e2cea8301ec..00a2634ee8c 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
12004-05-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * gnus-win.el (gnus-all-windows-visible-p): Don't consider
4 non-visible windows.
5
12004-05-07 Stefan Monnier <monnier@iro.umontreal.ca> 62004-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
2 7
3 * rfc2047.el (rfc2047-encode-message-header): Don't encode non-address 8 * rfc2047.el (rfc2047-encode-message-header): Don't encode non-address
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index fa082e7c1d0..4d0c18a8daf 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -1,5 +1,5 @@
1;;; gnus-win.el --- window configuration functions for Gnus 1;;; gnus-win.el --- window configuration functions for Gnus
2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002 2;; Copyright (C) 1996, 97, 98, 1999, 2000, 02, 2004
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -516,7 +516,7 @@ should have point."
516 (unless buffer 516 (unless buffer
517 (error "Invalid buffer type: %s" type)) 517 (error "Invalid buffer type: %s" type))
518 (if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer))) 518 (if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer)))
519 (setq win (get-buffer-window buf t))) 519 (setq win (get-buffer-window buf 0)))
520 (if (memq 'point split) 520 (if (memq 'point split)
521 (setq all-visible win)) 521 (setq all-visible win))
522 (setq all-visible nil))) 522 (setq all-visible nil)))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index df8f9359853..e0692119a21 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -158,31 +158,31 @@ and the file name is displayed in the echo area."
158 ;; Return the text we displayed. 158 ;; Return the text we displayed.
159 (buffer-string)))))) 159 (buffer-string))))))
160 160
161(defun help-split-fundoc (doc def) 161(defun help-split-fundoc (docstring def)
162 "Split a function docstring DOC into the actual doc and the usage info. 162 "Split a function DOCSTRING into the actual doc and the usage info.
163Return (USAGE . DOC) or nil if there's no usage info. 163Return (USAGE . DOC) or nil if there's no usage info.
164DEF is the function whose usage we're looking for in DOC." 164DEF is the function whose usage we're looking for in DOCSTRING."
165 ;; Functions can get the calling sequence at the end of the doc string. 165 ;; Functions can get the calling sequence at the end of the doc string.
166 ;; In cases where `function' has been fset to a subr we can't search for 166 ;; In cases where `function' has been fset to a subr we can't search for
167 ;; function's name in the doc string so we use `fn' as the anonymous 167 ;; function's name in the doc string so we use `fn' as the anonymous
168 ;; function name instead. 168 ;; function name instead.
169 (when (and doc (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc)) 169 (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring))
170 (cons (format "(%s%s" 170 (cons (format "(%s%s"
171 ;; Replace `fn' with the actual function name. 171 ;; Replace `fn' with the actual function name.
172 (if (consp def) "anonymous" def) 172 (if (consp def) "anonymous" def)
173 (match-string 1 doc)) 173 (match-string 1 docstring))
174 (substring doc 0 (match-beginning 0))))) 174 (substring docstring 0 (match-beginning 0)))))
175 175
176(defun help-add-fundoc-usage (doc arglist) 176(defun help-add-fundoc-usage (docstring arglist)
177 "Add the usage info to the docstring DOC. 177 "Add the usage info to DOCSTRING.
178If DOC already has a usage info, then just return DOC unchanged. 178If DOCSTRING already has a usage info, then just return it unchanged.
179The usage info is built from ARGLIST. DOC can be nil. 179The usage info is built from ARGLIST. DOCSTRING can be nil.
180ARGLIST can also be t or a string of the form \"(fun ARG1 ARG2 ...)\"." 180ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
181 (unless (stringp doc) (setq doc "Not documented")) 181 (unless (stringp docstring) (setq docstring "Not documented"))
182 (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t)) 182 (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring) (eq arglist t))
183 doc 183 docstring
184 (format "%s%s%S" doc 184 (format "%s%s%S" docstring
185 (if (string-match "\n?\n\\'" doc) 185 (if (string-match "\n?\n\\'" docstring)
186 (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "") 186 (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
187 "\n\n") 187 "\n\n")
188 (if (and (stringp arglist) 188 (if (and (stringp arglist)
@@ -237,8 +237,14 @@ KIND should be `var' for a variable or `subr' for a subroutine."
237 (concat "src/" file) 237 (concat "src/" file)
238 file))))) 238 file)))))
239 239
240(defface help-argument-name '((t (:slant italic))) 240(defun help-default-arg-highlight (arg)
241 "Face to highlight function arguments in docstrings.") 241 "Default function to highlight arguments in *Help* buffers.
242It returns ARG in lowercase italics, if the display supports it;
243else ARG is returned in uppercase normal."
244 (let ((attrs '(:slant italic)))
245 (if (display-supports-face-attributes-p attrs)
246 (propertize (downcase arg) 'face attrs)
247 arg)))
242 248
243(defun help-do-arg-highlight (doc args) 249(defun help-do-arg-highlight (doc args)
244 (with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table) 250 (with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table)
@@ -246,8 +252,17 @@ KIND should be `var' for a variable or `subr' for a subroutine."
246 (while args 252 (while args
247 (let ((arg (prog1 (car args) (setq args (cdr args))))) 253 (let ((arg (prog1 (car args) (setq args (cdr args)))))
248 (setq doc (replace-regexp-in-string 254 (setq doc (replace-regexp-in-string
249 (concat "\\<\\(" arg "\\)\\(?:es\\|s\\|th\\)?\\>") 255 ;; This is heuristic, but covers all common cases
250 (propertize arg 'face 'help-argument-name) 256 ;; except ARG1-ARG2
257 (concat "\\<" ; beginning of word
258 "\\(?:[a-z-]+-\\)?" ; for xxx-ARG
259 "\\("
260 arg
261 "\\)"
262 "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
263 "\\(?:-[a-z-]+\\)?" ; for ARG-xxx
264 "\\>") ; end of word
265 (help-default-arg-highlight arg)
251 doc t t 1)))) 266 doc t t 1))))
252 doc)) 267 doc))
253 268
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index d6b4c2e1da8..effcafd9240 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -93,7 +93,9 @@ Note that this macro expands into a `defun' for a function named
93ibuffer-make-column-NAME. If INLINE is non-nil, then the form will be 93ibuffer-make-column-NAME. If INLINE is non-nil, then the form will be
94inlined into the compiled format versions. This means that if you 94inlined into the compiled format versions. This means that if you
95change its definition, you should explicitly call 95change its definition, you should explicitly call
96`ibuffer-recompile-formats'." 96`ibuffer-recompile-formats'.
97
98\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)"
97 (let* ((sym (intern (concat "ibuffer-make-column-" 99 (let* ((sym (intern (concat "ibuffer-make-column-"
98 (symbol-name symbol)))) 100 (symbol-name symbol))))
99 (bod-1 `(with-current-buffer buffer 101 (bod-1 `(with-current-buffer buffer
@@ -135,7 +137,9 @@ DESCRIPTION is a short string describing the sorting method.
135 137
136For sorting, the forms in BODY will be evaluated with `a' bound to one 138For sorting, the forms in BODY will be evaluated with `a' bound to one
137buffer object, and `b' bound to another. BODY should return a non-nil 139buffer object, and `b' bound to another. BODY should return a non-nil
138value if and only if `a' is \"less than\" `b'." 140value if and only if `a' is \"less than\" `b'.
141
142\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)"
139 `(progn 143 `(progn
140 (defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) () 144 (defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) ()
141 ,(or documentation "No :documentation specified for this sorting method.") 145 ,(or documentation "No :documentation specified for this sorting method.")
@@ -189,7 +193,9 @@ ACTIVE-OPSTRING is a string which will be displayed to the user in a
189confirmation message, in the form: 193confirmation message, in the form:
190 \"Really ACTIVE-OPSTRING x buffers?\" 194 \"Really ACTIVE-OPSTRING x buffers?\"
191COMPLEX means this function is special; see the source code of this 195COMPLEX means this function is special; see the source code of this
192macro for exactly what it does." 196macro for exactly what it does.
197
198\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)"
193 `(progn 199 `(progn
194 (defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op)) 200 (defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op))
195 "" "ibuffer-do-") (symbol-name op))) 201 "" "ibuffer-do-") (symbol-name op)))
@@ -265,7 +271,9 @@ DESCRIPTION is a short string describing the filter.
265BODY should contain forms which will be evaluated to test whether or 271BODY should contain forms which will be evaluated to test whether or
266not a particular buffer should be displayed or not. The forms in BODY 272not a particular buffer should be displayed or not. The forms in BODY
267will be evaluated with BUF bound to the buffer object, and QUALIFIER 273will be evaluated with BUF bound to the buffer object, and QUALIFIER
268bound to the current value of the filter." 274bound to the current value of the filter.
275
276\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)"
269 (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) 277 (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))))
270 `(progn 278 `(progn
271 (defun ,fn-name (qualifier) 279 (defun ,fn-name (qualifier)
diff --git a/lisp/iimage.el b/lisp/iimage.el
new file mode 100644
index 00000000000..d138498ca3a
--- /dev/null
+++ b/lisp/iimage.el
@@ -0,0 +1,134 @@
1;;; iimage.el --- Inline image minor mode.
2
3;; Copyright (C) 2004 Free Software Foundation
4
5;; Author: KOSEKI Yoshinori <kose@meadowy.org>
6;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org>
7;; Keywords: multimedia
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
13;; the Free Software Foundation; either version 2, or (at your option)
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
23;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24;; Boston, MA 02111-1307, USA.
25
26;;; Commentary:
27
28;; Iimage is a minor mode that display a images, when image-filename
29;; exists in buffer.
30;; http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
31;;
32;; Add to your `~/.emacs':
33;; (autoload 'iimage-mode "iimage" "SUpport Inline image minor mode." t)
34;;
35;; ** Display images in *Info* buffer.
36;;
37;; (add-hook 'info-mode-hook 'turn-on-iimage-mode)
38;;
39;; .texinfo: @file{file://foo.png}
40;; .info: `file://foo.png'
41;;
42;; ** Display images in Wiki buffer.
43;;
44;; (add-hook 'wiki-mode-hook 'turn-on-iimage-mode)
45;;
46;; wiki-file: [[foo.png]]
47
48;;; Code:
49
50(eval-when-compile
51 (require 'image-file))
52
53(defconst iimage-version "1.0")
54(defvar iimage-mode nil)
55(defvar iimage-mode-map nil)
56
57;; Set up key map.
58(unless iimage-mode-map
59 (setq iimage-mode-map (make-sparse-keymap))
60 (define-key iimage-mode-map "\C-l" 'iimage-recenter))
61
62(defun iimage-recenter (&optional arg)
63"Re-draw images and recenter."
64 (interactive "P")
65 (iimage-mode-buffer 0)
66 (iimage-mode-buffer 1)
67 (recenter arg))
68
69(defvar iimage-mode-image-filename-regex
70 (concat "[-+./_0-9a-zA-Z]+\\."
71 (regexp-opt (nconc (mapcar #'upcase
72 image-file-name-extensions)
73 image-file-name-extensions)
74 t)))
75
76(defvar iimage-mode-image-regex-alist
77 `((,(concat "\\(`?file://\\|\\[\\[\\|<\\|`\\)?"
78 "\\(" iimage-mode-image-filename-regex "\\)"
79 "\\(\\]\\]\\|>\\|'\\)?") . 2))
80"*Alist of filename REGEXP vs NUM.
81Each element looks like (REGEXP . NUM).
82NUM specifies which parenthesized expression in the regexp.
83
84image filename regex exsamples:
85 file://foo.png
86 `file://foo.png'
87 \\[\\[foo.gif]]
88 <foo.png>
89 foo.JPG
90")
91
92(defun turn-on-iimage-mode ()
93"Unconditionally turn on iimage mode."
94 (interactive)
95 (iimage-mode 1))
96
97(defun turn-off-iimage-mode ()
98"Unconditionally turn off iimage mode."
99 (interactive)
100 (iimage-mode 0))
101
102(defun iimage-mode-buffer (arg)
103"Display/Undisplay Images.
104With numeric ARG, display the images if and only if ARG is positive."
105 (interactive)
106 (let ((ing (if (numberp arg)
107 (> arg 0)
108 iimage-mode))
109 (modp (buffer-modified-p (current-buffer)))
110 file buffer-read-only)
111 (save-excursion
112 (goto-char (point-min))
113 (dolist (pair iimage-mode-image-regex-alist)
114 (while (re-search-forward (car pair) nil t)
115 (if (and (setq file (match-string (cdr pair)))
116 (setq file (expand-file-name file default-directory))
117 (file-exists-p file))
118 (if ing
119 (add-text-properties (match-beginning 0) (match-end 0)
120 (list 'display (create-image file)))
121 (remove-text-properties (match-beginning 0) (match-end 0)
122 '(display)))))))
123 (set-buffer-modified-p modp)))
124
125(define-minor-mode iimage-mode
126 "Toggle inline image minor mode."
127 nil " iImg" iimage-mode-map
128 (run-hooks 'iimage-mode-hook)
129 (iimage-mode-buffer iimage-mode))
130
131(provide 'iimage)
132
133;;; arch-tag: f6f8e29a-08f6-4a12-9496-51e67441ce65
134;;; iimage.el ends here
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 9e289c300d9..d10e215881b 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1043,9 +1043,13 @@ which to install MAP.
1043The installed decode map can be referred by the function `quail-decode-map'." 1043The installed decode map can be referred by the function `quail-decode-map'."
1044 (if (null quail-current-package) 1044 (if (null quail-current-package)
1045 (error "No current Quail package")) 1045 (error "No current Quail package"))
1046 (if (not (and (consp decode-map) (eq (car decode-map) 'decode-map))) 1046 (if (if (consp decode-map)
1047 (error "Invalid Quail decode map `%s'" decode-map)) 1047 (eq (car decode-map) 'decode-map)
1048 (setcar (nthcdr 10 quail-current-package) decode-map)) 1048 (if (char-table-p decode-map)
1049 (eq (char-table-subtype decode-map) 'quail-decode-map)))
1050 (setcar (nthcdr 10 quail-current-package) decode-map)
1051 (error "Invalid Quail decode map `%s'" decode-map)))
1052
1049 1053
1050;;;###autoload 1054;;;###autoload
1051(defun quail-defrule (key translation &optional name append) 1055(defun quail-defrule (key translation &optional name append)
@@ -2590,6 +2594,143 @@ KEY BINDINGS FOR CONVERSION
2590 (quail-update-guidance) 2594 (quail-update-guidance)
2591 )))) 2595 ))))
2592 2596
2597;; Add KEY (string) to the element of TABLE (char-table) for CHAR if
2598;; it is not yet stored. As a result, the element is a string or a
2599;; list of strings.
2600
2601(defsubst quail-store-decode-map-key (table char key)
2602 (let ((elt (aref table char)))
2603 (if elt
2604 (if (consp elt)
2605 (or (member key elt)
2606 (aset table char (cons key elt)))
2607 (or (string= key elt)
2608 (aset table char (list key elt))))
2609 (aset table char key))))
2610
2611;; Helper function for quail-gen-decode-map. Store key strings to
2612;; type each character under MAP in TABLE (char-table). MAP is an
2613;; element of the current Quail map reached by typing keys in KEY
2614;; (string).
2615
2616(defun quail-gen-decode-map1 (map key table)
2617 (when (and (consp map) (listp (cdr map)))
2618 (let ((trans (car map)))
2619 (cond ((integerp trans)
2620 (quail-store-decode-map-key table trans key))
2621 ((stringp trans)
2622 (dotimes (i (length trans))
2623 (quail-store-decode-map-key table (aref trans i) key)))
2624 ((or (vectorp trans)
2625 (and (consp trans)
2626 (setq trans (cdr trans))))
2627 (dotimes (i (length trans))
2628 (let ((elt (aref trans i)))
2629 (if (stringp elt)
2630 (if (= (length elt) 1)
2631 (quail-store-decode-map-key table (aref elt 0) key))
2632 (quail-store-decode-map-key table elt key)))))))
2633 (if (> (length key) 1)
2634 (dolist (elt (cdr map))
2635 (quail-gen-decode-map1 (cdr elt) key table))
2636 (dolist (elt (cdr map))
2637 (quail-gen-decode-map1 (cdr elt) (format "%s%c" key (car elt))
2638 table)))))
2639
2640(put 'quail-decode-map 'char-table-extra-slots 0)
2641
2642;; Generate a halfly-cooked decode map (char-table) for the current
2643;; Quail map. An element for a character C is a key string or a list
2644;; of a key strings to type to input C. The lenth of key string is at
2645;; most 2. If it is 2, more keys may be required to input C.
2646
2647(defun quail-gen-decode-map ()
2648 (let ((table (make-char-table 'quail-decode-map nil)))
2649 (dolist (elt (cdr (quail-map)))
2650 (quail-gen-decode-map1 (cdr elt) (string (car elt)) table))
2651 table))
2652
2653;; Helper function for quail-find-key. Prepend key strings to type
2654;; for inputting CHAR by the current input method to KEY-LIST and
2655;; return the result. MAP is an element of the current Quail map
2656;; reached by typing keys in KEY.
2657
2658(defun quail-find-key1 (map key char key-list)
2659 (let ((trans (car map))
2660 (found-here nil))
2661 (cond ((stringp trans)
2662 (setq found-here
2663 (and (= (length trans) 1) (= (aref trans 0) char))))
2664 ((or (vectorp trans) (consp trans))
2665 (if (consp trans)
2666 (setq trans (cdr trans)))
2667 (setq found-here
2668 (catch 'tag
2669 (dotimes (i (length trans))
2670 (let ((target (aref trans i)))
2671 (if (integerp target)
2672 (if (= target char)
2673 (throw 'tag t))
2674 (if (and (= (length target) 1)
2675 (= (aref target 0) char))
2676 (throw 'tag t))))))))
2677 ((integerp trans)
2678 (if (= trans char)
2679 (setq found-here t))))
2680 (if found-here
2681 (setq key-list (cons key key-list)))
2682 (if (> (length key) 1)
2683 (dolist (elt (cdr map))
2684 (setq key-list
2685 (quail-find-key1 (cdr elt) (format "%s%c" key (car elt))
2686 char key-list))))
2687 key-list))
2688
2689(defun quail-find-key (char)
2690 "Return a list of keys to type to input CHAR in the current input method.
2691If CHAR is an ASCII character and can be input by typing itself, return t."
2692 (let ((decode-map (or (quail-decode-map)
2693 (setcar (nthcdr 10 quail-current-package)
2694 (quail-gen-decode-map))))
2695 (key-list nil))
2696 (if (consp decode-map)
2697 (let ((str (string char)))
2698 (mapc #'(lambda (elt)
2699 (if (string= str (car elt))
2700 (setq key-list (cons (cdr elt) key-list))))
2701 (cdr decode-map)))
2702 (let ((key-head (aref decode-map char)))
2703 (if (stringp key-head)
2704 (setq key-list (quail-find-key1
2705 (quail-lookup-key key-head nil t)
2706 key-head char nil))
2707 (mapc #'(lambda (elt)
2708 (setq key-list
2709 (quail-find-key1
2710 (quail-lookup-key elt nil t) elt char key-list)))
2711 key-head))))
2712 (or key-list
2713 (and (< char 128)
2714 (not (quail-lookup-key (string char) 1))))))
2715
2716(defun quail-show-key ()
2717 "Show a list of key strings to type for inputting a character at point."
2718 (interactive)
2719 (or current-input-method
2720 (error "No input method is activated"))
2721 (let* ((char (following-char))
2722 (key-list (quail-find-key char)))
2723 (cond ((consp key-list)
2724 (message "To input `%c', type \"%s\""
2725 char
2726 (mapconcat 'identity key-list "\", \"")))
2727 ((eq key-list t)
2728 (message "To input `%s', just type it"
2729 (single-key-description char)))
2730 (t
2731 (message "%c can't be input by the current input method" char)))))
2732
2733
2593;; Quail map generator from state transition table. 2734;; Quail map generator from state transition table.
2594 2735
2595(defun quail-map-from-table (table) 2736(defun quail-map-from-table (table)
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index 9b124848b18..bda0ce4fddc 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -315,7 +315,7 @@ enabled if this variable is configured to a non-nil value."
315 :require 'recentf 315 :require 'recentf
316 :set (function 316 :set (function
317 (lambda (sym value) 317 (lambda (sym value)
318 (recentf-mode value) 318 (if value (recentf-mode 1))
319 (set sym value))) 319 (set sym value)))
320 :group 'iswitchb) 320 :group 'iswitchb)
321 321
diff --git a/lisp/language/european.el b/lisp/language/european.el
index 0719244b950..7c51ec4d556 100644
--- a/lisp/language/european.el
+++ b/lisp/language/european.el
@@ -451,6 +451,19 @@ and it selects the Spanish tutorial."))
451 (unibyte-display . iso-8859-2) 451 (unibyte-display . iso-8859-2)
452 (documentation . "Support for Croatian with Latin-2 encoding.")) 452 (documentation . "Support for Croatian with Latin-2 encoding."))
453 '("European")) 453 '("European"))
454
455(set-language-info-alist
456 "Brazilian Portuguese" '((tutorial . "TUTORIAL.pt_BR")
457 (charset ascii latin-iso8859-1)
458 (coding-system iso-latin-1 iso-latin-9)
459 (coding-priority iso-latin-1)
460 (nonascii-translation . latin-iso8859-1)
461 (unibyte-syntax . "latin-1")
462 (unibyte-display . iso-latin-1)
463 (input-method . "latin-1-prefix")
464 (sample-text . "Oi")
465 (documentation . "Support for Brazilian Portuguese."))
466 '("European"))
454 467
455;; Definitions for the Mac Roman character sets and coding system. 468;; Definitions for the Mac Roman character sets and coding system.
456;; The Mac Roman encoding uses all 128 code points in the range 128 to 469;; The Mac Roman encoding uses all 128 code points in the range 128 to
diff --git a/lisp/mail/rfc2368.el b/lisp/mail/rfc2368.el
index 07ea44cef04..5d603d7be26 100644
--- a/lisp/mail/rfc2368.el
+++ b/lisp/mail/rfc2368.el
@@ -120,12 +120,13 @@ calling this function."
120 ;; deal w/ multiple 'To' recipients 120 ;; deal w/ multiple 'To' recipients
121 (if prequery 121 (if prequery
122 (progn 122 (progn
123 (setq prequery (rfc2368-unhexify-string prequery))
123 (if (assoc "To" headers-alist) 124 (if (assoc "To" headers-alist)
124 (let* ((our-cons-cell 125 (let* ((our-cons-cell
125 (assoc "To" headers-alist)) 126 (assoc "To" headers-alist))
126 (our-cdr 127 (our-cdr
127 (cdr our-cons-cell))) 128 (cdr our-cons-cell)))
128 (setcdr our-cons-cell (concat our-cdr ", " prequery))) 129 (setcdr our-cons-cell (concat prequery ", " our-cdr)))
129 (setq headers-alist 130 (setq headers-alist
130 (cons (cons "To" prequery) headers-alist))))) 131 (cons (cons "To" prequery) headers-alist)))))
131 132
diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el
index 55f611b53ad..db6990d625b 100644
--- a/lisp/mail/unrmail.el
+++ b/lisp/mail/unrmail.el
@@ -51,43 +51,71 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
51(defun unrmail (file to-file) 51(defun unrmail (file to-file)
52 "Convert Rmail file FILE to system inbox format file TO-FILE." 52 "Convert Rmail file FILE to system inbox format file TO-FILE."
53 (interactive "fUnrmail (rmail file): \nFUnrmail into (new mailbox file): ") 53 (interactive "fUnrmail (rmail file): \nFUnrmail into (new mailbox file): ")
54 (let ((message-count 1) 54 (with-temp-buffer
55 ;; Prevent rmail from making, or switching to, a summary buffer. 55 ;; Read in the old Rmail file with no decoding.
56 (rmail-display-summary nil) 56 (let ((coding-system-for-read 'raw-text))
57 (rmail-delete-after-output nil) 57 (insert-file-contents file))
58 (temp-buffer (get-buffer-create " unrmail"))) 58 ;; But make it multibyte.
59 (rmail file) 59 (set-buffer-multibyte t)
60
61 (if (not (looking-at "BABYL OPTIONS"))
62 (error "This file is not in Babyl format"))
63
64 ;; Decode the file contents just as Rmail did.
65 (let ((modifiedp (buffer-modified-p))
66 (coding-system rmail-file-coding-system)
67 from to)
68 (goto-char (point-min))
69 (search-forward "\n\^_" nil t) ; Skip BABYL header.
70 (setq from (point))
71 (goto-char (point-max))
72 (search-backward "\n\^_" from 'mv)
73 (setq to (point))
74 (unless (and coding-system
75 (coding-system-p coding-system))
76 (setq coding-system
77 ;; Emacs 21.1 and later writes RMAIL files in emacs-mule, but
78 ;; earlier versions did that with the current buffer's encoding.
79 ;; So we want to favor detection of emacs-mule (whose normal
80 ;; priority is quite low), but still allow detection of other
81 ;; encodings if emacs-mule won't fit. The call to
82 ;; detect-coding-with-priority below achieves that.
83 (car (detect-coding-with-priority
84 from to
85 '((coding-category-emacs-mule . emacs-mule))))))
86 (unless (memq coding-system
87 '(undecided undecided-unix))
88 (set-buffer-modified-p t) ; avoid locking when decoding
89 (let ((buffer-undo-list t))
90 (decode-coding-region from to coding-system))
91 (setq coding-system last-coding-system-used))
92
93 (setq buffer-file-coding-system nil)
94
95 ;; We currently don't use this value, but maybe we should.
96 (setq save-buffer-coding-system
97 (or coding-system 'undecided)))
98
60 ;; Default the directory of TO-FILE based on where FILE is. 99 ;; Default the directory of TO-FILE based on where FILE is.
61 (setq to-file (expand-file-name to-file default-directory)) 100 (setq to-file (expand-file-name to-file default-directory))
62 (condition-case () 101 (condition-case ()
63 (delete-file to-file) 102 (delete-file to-file)
64 (file-error nil)) 103 (file-error nil))
65 (message "Writing messages to %s..." to-file) 104 (message "Writing messages to %s..." to-file)
66 (save-restriction 105 (goto-char (point-min))
67 (widen) 106
68 (while (<= message-count rmail-total-messages) 107 (let ((temp-buffer (get-buffer-create " unrmail"))
69 (let ((beg (rmail-msgbeg message-count)) 108 (from-buffer (current-buffer)))
70 (end (rmail-msgbeg (1+ message-count))) 109
71 (from-buffer (current-buffer)) 110 ;; Process the messages one by one.
72 (coding (or rmail-file-coding-system 'raw-text)) 111 (while (search-forward "\^_\^l" nil t)
112 (let ((beg (point))
113 (end (save-excursion
114 (if (search-forward "\^_" nil t)
115 (1- (point)) (point-max))))
116 (coding 'raw-text)
73 label-line attrs keywords 117 label-line attrs keywords
74 header-beginning mail-from) 118 mail-from reformatted)
75 (save-excursion
76 (goto-char (rmail-msgbeg message-count))
77 (setq header-beginning (point))
78 (search-forward "\n*** EOOH ***\n")
79 (forward-line -1)
80 (search-forward "\n\n")
81 (save-restriction
82 (narrow-to-region header-beginning (point))
83 (setq mail-from
84 (or (mail-fetch-field "Mail-From")
85 (concat "From "
86 (mail-strip-quoted-names (or (mail-fetch-field "from")
87 (mail-fetch-field "really-from")
88 (mail-fetch-field "sender")
89 "unknown"))
90 " " (current-time-string))))))
91 (with-current-buffer temp-buffer 119 (with-current-buffer temp-buffer
92 (setq buffer-undo-list t) 120 (setq buffer-undo-list t)
93 (erase-buffer) 121 (erase-buffer)
@@ -95,11 +123,15 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
95 (insert-buffer-substring from-buffer beg end) 123 (insert-buffer-substring from-buffer beg end)
96 (goto-char (point-min)) 124 (goto-char (point-min))
97 (forward-line 1) 125 (forward-line 1)
126 ;; Record whether the header is reformatted.
127 (setq reformatted (= (following-char) ?1))
128
129 ;; Collect the label line, then get the attributes
130 ;; and the keywords from it.
98 (setq label-line 131 (setq label-line
99 (buffer-substring (point) 132 (buffer-substring (point)
100 (progn (forward-line 1) 133 (save-excursion (forward-line 1)
101 (point)))) 134 (point))))
102 (forward-line -1)
103 (search-forward ",,") 135 (search-forward ",,")
104 (unless (eolp) 136 (unless (eolp)
105 (setq keywords 137 (setq keywords
@@ -118,9 +150,61 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
118 (if (string-match ", resent," label-line) ?R ?-) 150 (if (string-match ", resent," label-line) ?R ?-)
119 (if (string-match ", unseen," label-line) ?\ ?-) 151 (if (string-match ", unseen," label-line) ?\ ?-)
120 (if (string-match ", stored," label-line) ?S ?-))) 152 (if (string-match ", stored," label-line) ?S ?-)))
121 (unrmail-unprune) 153
154 ;; Delete the special Babyl lines at the start,
155 ;; and the ***EOOH*** line, and the reformatted header if any.
156 (goto-char (point-min))
157 (if reformatted
158 (progn
159 (forward-line 2)
160 ;; Delete Summary-Line headers.
161 (let ((case-fold-search t))
162 (while (looking-at "Summary-Line:")
163 (forward-line 1)))
164 (delete-region (point-min) (point))
165 ;; Delete the old reformatted header.
166 (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
167 (forward-line -1)
168 (let ((start (point)))
169 (search-forward "\n\n")
170 (delete-region start (point))))
171 ;; Not reformatted. Delete the special
172 ;; lines before the real header.
173 (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
174 (delete-region (point-min) (point)))
175
176 ;; Some operations on the message header itself.
122 (goto-char (point-min)) 177 (goto-char (point-min))
178 (save-restriction
179 (narrow-to-region
180 (point-min)
181 (save-excursion (search-forward "\n\n" nil 'move) (point)))
182
183 ;; Fetch or construct what we should use in the `From ' line.
184 (setq mail-from
185 (or (mail-fetch-field "Mail-From")
186 (concat "From "
187 (mail-strip-quoted-names (or (mail-fetch-field "from")
188 (mail-fetch-field "really-from")
189 (mail-fetch-field "sender")
190 "unknown"))
191 " " (current-time-string))))
192
193 ;; If the message specifies a coding system, use it.
194 (let ((maybe-coding (mail-fetch-field "X-Coding-System")))
195 (if maybe-coding
196 (setq coding (intern maybe-coding))))
197
198 ;; Delete the Mail-From: header field if any.
199 (when (re-search-forward "^Mail-from:" nil t)
200 (beginning-of-line)
201 (delete-region (point)
202 (progn (forward-line 1) (point)))))
203
204 (goto-char (point-min))
205 ;; Insert the `From ' line.
123 (insert mail-from "\n") 206 (insert mail-from "\n")
207 ;; Record the keywords and attributes in our special way.
124 (insert "X-BABYL-V6-ATTRIBUTES: " (apply 'string attrs) "\n") 208 (insert "X-BABYL-V6-ATTRIBUTES: " (apply 'string attrs) "\n")
125 (when keywords 209 (when keywords
126 (insert "X-BABYL-V6-KEYWORDS: " keywords "\n")) 210 (insert "X-BABYL-V6-KEYWORDS: " keywords "\n"))
@@ -132,43 +216,12 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
132 (while (search-forward "\nFrom " nil t) 216 (while (search-forward "\nFrom " nil t)
133 (forward-char -5) 217 (forward-char -5)
134 (insert ?>))) 218 (insert ?>)))
219 ;; Write it to the output file.
135 (write-region (point-min) (point-max) to-file t 220 (write-region (point-min) (point-max) to-file t
136 'nomsg))) 221 'nomsg))))
137 (setq message-count (1+ message-count)))) 222 (kill-buffer temp-buffer))
138 (message "Writing messages to %s...done" to-file))) 223 (message "Writing messages to %s...done" to-file)))
139 224
140(defun unrmail-unprune ()
141 (let* ((pruned
142 (save-excursion
143 (goto-char (point-min))
144 (forward-line 1)
145 (= (following-char) ?1))))
146 (if pruned
147 (progn
148 (goto-char (point-min))
149 (forward-line 2)
150 ;; Delete Summary-Line headers.
151 (let ((case-fold-search t))
152 (while (looking-at "Summary-Line:")
153 (forward-line 1)))
154 (delete-region (point-min) (point))
155 ;; Delete the old reformatted header.
156 (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
157 (forward-line -1)
158 (let ((start (point)))
159 (search-forward "\n\n")
160 (delete-region start (point))))
161 ;; Delete everything up to the real header.
162 (goto-char (point-min))
163 (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
164 (delete-region (point-min) (point)))
165 (goto-char (point-min))
166 (when (re-search-forward "^Mail-from:")
167 (beginning-of-line)
168 (delete-region (point)
169 (progn (forward-line 1) (point))))))
170
171
172(provide 'unrmail) 225(provide 'unrmail)
173 226
174;;; unrmail.el ends here 227;;; unrmail.el ends here
diff --git a/lisp/man.el b/lisp/man.el
index 7222c1bad15..983be4a91cc 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -732,11 +732,13 @@ all sections related to a subject, put something appropriate into the
732 (setenv "GROFF_NO_SGR" "1") 732 (setenv "GROFF_NO_SGR" "1")
733 (if (fboundp 'start-process) 733 (if (fboundp 'start-process)
734 (set-process-sentinel 734 (set-process-sentinel
735 (start-process manual-program buffer "sh" "-c" 735 (start-process manual-program buffer
736 shell-file-name shell-command-switch
736 (format (Man-build-man-command) man-args)) 737 (format (Man-build-man-command) man-args))
737 'Man-bgproc-sentinel) 738 'Man-bgproc-sentinel)
738 (let ((exit-status 739 (let ((exit-status
739 (call-process shell-file-name nil (list buffer nil) nil "-c" 740 (call-process shell-file-name nil (list buffer nil) nil
741 shell-command-switch
740 (format (Man-build-man-command) man-args))) 742 (format (Man-build-man-command) man-args)))
741 (msg "")) 743 (msg ""))
742 (or (and (numberp exit-status) 744 (or (and (numberp exit-status)
diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el
index d42c4335daa..40a28494774 100644
--- a/lisp/net/telnet.el
+++ b/lisp/net/telnet.el
@@ -1,6 +1,6 @@
1;;; telnet.el --- run a telnet session from within an Emacs buffer 1;;; telnet.el --- run a telnet session from within an Emacs buffer
2 2
3;; Copyright (C) 1985, 1988, 1992, 1994 Free Software Foundation, Inc. 3;; Copyright (C) 1985, 88, 1992, 94, 2004 Free Software Foundation, Inc.
4 4
5;; Author: William F. Schelter 5;; Author: William F. Schelter
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -240,22 +240,13 @@ Normally input is edited in Emacs and sent a line at a time."
240 240
241(put 'telnet-mode 'mode-class 'special) 241(put 'telnet-mode 'mode-class 'special)
242 242
243(defun telnet-mode () 243(define-derived-mode telnet-mode comint-mode "Telnet"
244 "This mode is for using telnet (or rsh) from a buffer to another host. 244 "This mode is for using telnet (or rsh) from a buffer to another host.
245It has most of the same commands as comint-mode. 245It has most of the same commands as comint-mode.
246There is a variable ``telnet-interrupt-string'' which is the character 246There is a variable ``telnet-interrupt-string'' which is the character
247sent to try to stop execution of a job on the remote host. 247sent to try to stop execution of a job on the remote host.
248Data is sent to the remote host when RET is typed. 248Data is sent to the remote host when RET is typed."
249 249 (set (make-local-variable 'comint-prompt-regexp) telnet-prompt-pattern))
250\\{telnet-mode-map}
251"
252 (interactive)
253 (comint-mode)
254 (setq major-mode 'telnet-mode
255 mode-name "Telnet"
256 comint-prompt-regexp telnet-prompt-pattern)
257 (use-local-map telnet-mode-map)
258 (run-hooks 'telnet-mode-hook))
259 250
260;;;###autoload (add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)") 251;;;###autoload (add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)")
261 252
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index ec381ad8a15..da43b7b7098 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -171,8 +171,15 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
171 "^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\ 171 "^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
172\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4)) 172\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4))
173 173
174 (edg-1
175 "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)"
176 1 2 nil (3 . 4))
177 (edg-2
178 "at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
179 2 1 nil 0)
180
174 (epc 181 (epc
175 "^Error [0-9]+ at (\\([0-9]*\\):\\([^)\n]+\\))" 2 1) 182 "^Error [0-9]+ at (\\([0-9]+\\):\\([^)\n]+\\))" 2 1)
176 183
177 (iar 184 (iar
178 "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:" 185 "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:"
@@ -265,10 +272,6 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
265 (sun-ada 272 (sun-ada
266 "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3) 273 "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
267 274
268 ;; Redundant with `mips'
269;; (ultrix
270;; "^\\(?:cfe\\|fort\\): \\(Warning\\)?[^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3 nil (1))
271
272 (4bsd 275 (4bsd
273 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\ 276 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
274\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))) 277\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3)))
@@ -445,17 +448,19 @@ starting the compilation process.")
445(defvar compile-history nil) 448(defvar compile-history nil)
446 449
447(defface compilation-warning-face 450(defface compilation-warning-face
448 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) 451 '((((class color) (min-colors 16)) (:foreground "Orange" :weight bold))
449 (((class color)) (:foreground "Orange" :weight bold)) 452 (((class color)) (:foreground "cyan" :weight bold))
450 (t (:weight bold))) 453 (t (:weight bold)))
451 "Face used to highlight compiler warnings." 454 "Face used to highlight compiler warnings."
452 :group 'font-lock-highlighting-faces 455 :group 'font-lock-highlighting-faces
453 :version "21.4") 456 :version "21.4")
454 457
455(defface compilation-info-face 458(defface compilation-info-face
456 '((((type tty) (class color)) (:foreground "green" :weight bold)) 459 '((((class color) (min-colors 16) (background light))
457 (((class color) (background light)) (:foreground "Green3" :weight bold)) 460 (:foreground "Green3" :weight bold))
458 (((class color) (background dark)) (:foreground "Green" :weight bold)) 461 (((class color) (min-colors 16) (background dark))
462 (:foreground "Green" :weight bold))
463 (((class color)) (:foreground "green" :weight bold))
459 (t (:weight bold))) 464 (t (:weight bold)))
460 "Face used to highlight compiler warnings." 465 "Face used to highlight compiler warnings."
461 :group 'font-lock-highlighting-faces 466 :group 'font-lock-highlighting-faces
@@ -749,6 +754,8 @@ and move to the source code that caused it.
749 754
750Interactively, prompts for the command if `compilation-read-command' is 755Interactively, prompts for the command if `compilation-read-command' is
751non-nil; otherwise uses `compile-command'. With prefix arg, always prompts. 756non-nil; otherwise uses `compile-command'. With prefix arg, always prompts.
757Additionally, with universal prefix arg, compilation buffer will be in
758comint mode, i.e. interactive.
752 759
753To run more than one compilation at once, start one and rename 760To run more than one compilation at once, start one and rename
754the \`*compilation*' buffer to some other name with 761the \`*compilation*' buffer to some other name with
@@ -760,11 +767,13 @@ The name used for the buffer is actually whatever is returned by
760the function in `compilation-buffer-name-function', so you can set that 767the function in `compilation-buffer-name-function', so you can set that
761to a function that generates a unique name." 768to a function that generates a unique name."
762 (interactive 769 (interactive
763 (if (or compilation-read-command current-prefix-arg) 770 (list
764 (list (read-from-minibuffer "Compile command: " 771 (if (or compilation-read-command current-prefix-arg)
765 (eval compile-command) nil nil 772 (read-from-minibuffer "Compile command: "
766 '(compile-history . 1))) 773 (eval compile-command) nil nil
767 (list (eval compile-command)))) 774 '(compile-history . 1))
775 (eval compile-command))
776 (consp current-prefix-arg)))
768 (unless (equal command (eval compile-command)) 777 (unless (equal command (eval compile-command))
769 (setq compile-command command)) 778 (setq compile-command command))
770 (save-some-buffers (not compilation-ask-about-save) nil) 779 (save-some-buffers (not compilation-ask-about-save) nil)
@@ -983,8 +992,9 @@ exited abnormally with code %d\n"
983 ;; buffer, which might not be the same as the selected window's buffer. 992 ;; buffer, which might not be the same as the selected window's buffer.
984 (save-current-buffer 993 (save-current-buffer
985 (save-selected-window 994 (save-selected-window
986 (select-window window) 995 (save-excursion
987 (enlarge-window (- height (window-height)))))))) 996 (select-window window)
997 (enlarge-window (- height (window-height)))))))))
988 998
989(defvar compilation-menu-map 999(defvar compilation-menu-map
990 (let ((map (make-sparse-keymap "Errors"))) 1000 (let ((map (make-sparse-keymap "Errors")))
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index aada9be16dc..53165fbecb7 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -153,7 +153,7 @@
153;;; Code: 153;;; Code:
154 154
155;; TODO 155;; TODO
156;; Support for hideshow, align. 156;; Support for align.
157;; OpenMP, preprocessor highlighting. 157;; OpenMP, preprocessor highlighting.
158 158
159(defvar comment-auto-fill-only-comments) 159(defvar comment-auto-fill-only-comments)
@@ -589,6 +589,53 @@ characters long.")
589(make-variable-buffer-local 'f90-cache-position) 589(make-variable-buffer-local 'f90-cache-position)
590 590
591 591
592;; Hideshow support.
593(defconst f90-end-block-re
594 (concat "^[ \t0-9]*\\<end\\>[ \t]*"
595 (regexp-opt '("do" "if" "forall" "function" "interface"
596 "module" "program" "select" "subroutine"
597 "type" "where" ) t)
598 "[ \t]*\\sw*")
599 "Regexp matching the end of a \"block\" of F90 code.
600Used in the F90 entry in `hs-special-modes-alist'.")
601
602;; Ignore the fact that FUNCTION, SUBROUTINE, WHERE, FORALL have a
603;; following "(". DO, CASE, IF can have labels; IF must be
604;; accompanied by THEN.
605;; A big problem is that many of these statements can be broken over
606;; lines, even with embedded comments. We only try to handle this for
607;; IF ... THEN statements, assuming and hoping it will be less common
608;; for other constructs. We match up to one new-line, provided ")
609;; THEN" appears on one line. Matching on just ") THEN" is no good,
610;; since that includes ELSE branches.
611;; For a fully accurate solution, hideshow would probably have to be
612;; modified to allow functions as well as regexps to be used to
613;; specify block start and end positions.
614(defconst f90-start-block-re
615 (concat
616 "^[ \t0-9]*" ; statement number
617 "\\(\\("
618 "\\(\\sw+[ \t]*:[ \t]*\\)?" ; structure label
619 "\\(do\\|select[ \t]*case\\|if[ \t]*(.*\n?.*)[ \t]*then\\|"
620 ;; Distinguish WHERE block from isolated WHERE.
621 "\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)\\)\\)"
622 "\\|"
623 "program\\|interface\\|module\\|type\\|function\\|subroutine"
624 ;; ") THEN" at line end. Problem - also does ELSE.
625;;; "\\|.*)[ \t]*then[ \t]*\\($\\|!\\)"
626 "\\)"
627 "[ \t]*")
628 "Regexp matching the start of a \"block\" of F90 code.
629A simple regexp cannot do this in fully correct fashion, so this
630tries to strike a compromise between complexity and flexibility.
631Used in the F90 entry in `hs-special-modes-alist'.")
632
633;; hs-special-modes-alist is autoloaded.
634(add-to-list 'hs-special-modes-alist
635 `(f90-mode ,f90-start-block-re ,f90-end-block-re
636 "!" f90-end-of-block nil))
637
638
592;; Imenu support. 639;; Imenu support.
593(defvar f90-imenu-generic-expression 640(defvar f90-imenu-generic-expression
594 (let ((good-char "[^!\"\&\n \t]") (not-e "[^e!\n\"\& \t]") 641 (let ((good-char "[^!\"\&\n \t]") (not-e "[^e!\n\"\& \t]")
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index fc3196cdb4f..19c57979130 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -664,6 +664,7 @@ This filter may simply queue output for a later time."
664 ("commands" gdb-subprompt) 664 ("commands" gdb-subprompt)
665 ("overload-choice" gdb-subprompt) 665 ("overload-choice" gdb-subprompt)
666 ("query" gdb-subprompt) 666 ("query" gdb-subprompt)
667 ("nquery" gdb-subprompt)
667 ("prompt-for-continue" gdb-subprompt) 668 ("prompt-for-continue" gdb-subprompt)
668 ("post-prompt" gdb-post-prompt) 669 ("post-prompt" gdb-post-prompt)
669 ("source" gdb-source) 670 ("source" gdb-source)
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 035b5da875a..84dec78d895 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2339,7 +2339,8 @@ comint mode, which see."
2339 ;; Don't put repeated commands in command history many times. 2339 ;; Don't put repeated commands in command history many times.
2340 (set (make-local-variable 'comint-input-ignoredups) t) 2340 (set (make-local-variable 'comint-input-ignoredups) t)
2341 (make-local-variable 'paragraph-start) 2341 (make-local-variable 'paragraph-start)
2342 (set (make-local-variable 'gud-delete-prompt-marker) (make-marker))) 2342 (set (make-local-variable 'gud-delete-prompt-marker) (make-marker))
2343 (add-hook 'kill-buffer-hook 'gud-kill-buffer-hook nil t))
2343 2344
2344;; Cause our buffers to be displayed, by default, 2345;; Cause our buffers to be displayed, by default,
2345;; in the selected window. 2346;; in the selected window.
@@ -2546,10 +2547,10 @@ It is saved for when this flag is not set.")
2546 (set-buffer obuf)))))) 2547 (set-buffer obuf))))))
2547 2548
2548(defun gud-kill-buffer-hook () 2549(defun gud-kill-buffer-hook ()
2549 (if gud-minor-mode 2550 (setq gud-minor-mode-type gud-minor-mode)
2550 (setq gud-minor-mode-type gud-minor-mode))) 2551 (condition-case nil
2551 2552 (kill-process (get-buffer-process gud-comint-buffer))
2552(add-hook 'kill-buffer-hook 'gud-kill-buffer-hook) 2553 (error nil)))
2553 2554
2554(defun gud-reset () 2555(defun gud-reset ()
2555 (dolist (buffer (buffer-list)) 2556 (dolist (buffer (buffer-list))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 214b6f0e24c..cee59a6e3e1 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -297,10 +297,9 @@ comments and strings, or that the bracket/paren nesting depth is nonzero."
297 (syntax-ppss (line-beginning-position))))))) 297 (syntax-ppss (line-beginning-position)))))))
298 298
299(defun python-comment-line-p () 299(defun python-comment-line-p ()
300 "Return non-nil if current line has only a comment or is blank." 300 "Return non-nil iff current line has only a comment."
301 (save-excursion 301 (save-excursion
302 (end-of-line) 302 (end-of-line)
303 ;; FIXME: This looks wrong because it returns nil for empty lines. --Stef
304 (when (eq 'comment (syntax-ppss-context (syntax-ppss))) 303 (when (eq 'comment (syntax-ppss-context (syntax-ppss)))
305 (back-to-indentation) 304 (back-to-indentation)
306 (looking-at (rx (or (syntax comment-start) line-end)))))) 305 (looking-at (rx (or (syntax comment-start) line-end))))))
@@ -1025,7 +1024,6 @@ et al.")
1025 (let ((map (make-sparse-keymap))) 1024 (let ((map (make-sparse-keymap)))
1026 ;; This will inherit from comint-mode-map. 1025 ;; This will inherit from comint-mode-map.
1027 (define-key map "\C-c\C-l" 'python-load-file) 1026 (define-key map "\C-c\C-l" 'python-load-file)
1028 (define-key map "\C-c\C-z" 'python-switch-to-python) ;What for? --Stef
1029 (define-key map "\C-c\C-v" 'python-check) 1027 (define-key map "\C-c\C-v" 'python-check)
1030 ;; Note that we _can_ still use these commands which send to the 1028 ;; Note that we _can_ still use these commands which send to the
1031 ;; Python process even at the prompt iff we have a normal prompt, 1029 ;; Python process even at the prompt iff we have a normal prompt,
@@ -1140,10 +1138,12 @@ to this as appropriate. Runs the hook `inferior-python-mode-hook'
1140 ;; (not a name) in Python buffers from which `run-python' &c is 1138 ;; (not a name) in Python buffers from which `run-python' &c is
1141 ;; invoked. Would support multiple processes better. 1139 ;; invoked. Would support multiple processes better.
1142 (unless (comint-check-proc python-buffer) 1140 (unless (comint-check-proc python-buffer)
1143 (let ((cmdlist (append (python-args-to-list cmd) '("-i"))) 1141 (let* ((cmdlist (append (python-args-to-list cmd) '("-i")))
1144 (process-environment ; to import emacs.py 1142 (path (getenv "PYTHONPATH"))
1145 (push (concat "PYTHONPATH=" data-directory) 1143 (process-environment ; to import emacs.py
1146 process-environment))) 1144 (push (concat "PYTHONPATH=" data-directory
1145 (if path (concat ":" path)))
1146 process-environment)))
1147 (set-buffer (apply 'make-comint "Python" (car cmdlist) nil 1147 (set-buffer (apply 'make-comint "Python" (car cmdlist) nil
1148 (cdr cmdlist))) 1148 (cdr cmdlist)))
1149 (setq python-buffer "*Python*")) 1149 (setq python-buffer "*Python*"))
@@ -1278,7 +1278,6 @@ module-qualified names."
1278 ;; Fixme: I'm not convinced by this logic from python-mode.el. 1278 ;; Fixme: I'm not convinced by this logic from python-mode.el.
1279 (python-send-command 1279 (python-send-command
1280 (if (string-match "\\.py\\'" file-name) 1280 (if (string-match "\\.py\\'" file-name)
1281 ;; Fixme: make sure the directory is in the path list
1282 (let ((module (file-name-sans-extension 1281 (let ((module (file-name-sans-extension
1283 (file-name-nondirectory file-name)))) 1282 (file-name-nondirectory file-name))))
1284 (format "emacs.eimport(%S,%S)" 1283 (format "emacs.eimport(%S,%S)"
@@ -1309,6 +1308,7 @@ See variable `python-buffer'. Starts a new process if necessary."
1309Otherwise inherits from `python-mode-syntax-table'.") 1308Otherwise inherits from `python-mode-syntax-table'.")
1310 1309
1311(defvar view-return-to-alist) 1310(defvar view-return-to-alist)
1311(eval-when-compile (autoload 'help-buffer "help-fns"))
1312 1312
1313;; Fixme: Should this actually be used instead of info-look, i.e. be 1313;; Fixme: Should this actually be used instead of info-look, i.e. be
1314;; bound to C-h S? Can we use other pydoc stuff before python 2.2? 1314;; bound to C-h S? Can we use other pydoc stuff before python 2.2?
@@ -1394,7 +1394,8 @@ Used with `eval-after-load'."
1394 ;; Don't use `info' because it would pop-up a *info* buffer. 1394 ;; Don't use `info' because it would pop-up a *info* buffer.
1395 (with-no-warnings 1395 (with-no-warnings
1396 (Info-goto-node (format "(python%s-lib)Miscellaneous Index" 1396 (Info-goto-node (format "(python%s-lib)Miscellaneous Index"
1397 version))) 1397 version))
1398 t)
1398 (error nil))))) 1399 (error nil)))))
1399 (info-lookup-maybe-add-help 1400 (info-lookup-maybe-add-help
1400 :mode 'python-mode 1401 :mode 'python-mode
diff --git a/lisp/subr.el b/lisp/subr.el
index 5453ee2e45b..5302558d834 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -629,7 +629,11 @@ The normal global definition of the character C-x indirects to this keymap.")
629 629
630(defsubst eventp (obj) 630(defsubst eventp (obj)
631 "True if the argument is an event object." 631 "True if the argument is an event object."
632 (or (integerp obj) 632 (or (and (integerp obj)
633 ;; Filter out integers too large to be events.
634 ;; M is the biggest modifier.
635 (zerop (logand obj (lognot (1- (lsh ?\M-\^@ 1)))))
636 (char-valid-p (event-basic-type obj)))
633 (and (symbolp obj) 637 (and (symbolp obj)
634 (get obj 'event-symbol-elements)) 638 (get obj 'event-symbol-elements))
635 (and (consp obj) 639 (and (consp obj)
@@ -1119,14 +1123,14 @@ Input and output work as for subprocesses; `delete-process' closes it.
1119 1123
1120Args are NAME BUFFER HOST SERVICE. 1124Args are NAME BUFFER HOST SERVICE.
1121NAME is name for process. It is modified if necessary to make it unique. 1125NAME is name for process. It is modified if necessary to make it unique.
1122BUFFER is the buffer (or buffer-name) to associate with the process. 1126BUFFER is the buffer (or buffer name) to associate with the process.
1123 Process output goes at end of that buffer, unless you specify 1127 Process output goes at end of that buffer, unless you specify
1124 an output stream or filter function to handle the output. 1128 an output stream or filter function to handle the output.
1125 BUFFER may be also nil, meaning that this process is not associated 1129 BUFFER may be also nil, meaning that this process is not associated
1126 with any buffer 1130 with any buffer.
1127Third arg is name of the host to connect to, or its IP address. 1131HOST is name of the host to connect to, or its IP address.
1128Fourth arg SERVICE is name of the service desired, or an integer 1132SERVICE is name of the service desired, or an integer specifying
1129specifying a port number to connect to." 1133 a port number to connect to."
1130 (make-network-process :name name :buffer buffer 1134 (make-network-process :name name :buffer buffer
1131 :host host :service service)) 1135 :host host :service service))
1132 1136
@@ -1135,14 +1139,14 @@ specifying a port number to connect to."
1135It returns nil if non-blocking connects are not supported; otherwise, 1139It returns nil if non-blocking connects are not supported; otherwise,
1136it returns a subprocess-object to represent the connection. 1140it returns a subprocess-object to represent the connection.
1137 1141
1138This function is similar to `open-network-stream', except that this 1142This function is similar to `open-network-stream', except that it
1139function returns before the connection is established. When the 1143returns before the connection is established. When the connection
1140connection is completed, the sentinel function will be called with 1144is completed, the sentinel function will be called with second arg
1141second arg matching `open' (if successful) or `failed' (on error). 1145matching `open' (if successful) or `failed' (on error).
1142 1146
1143Args are NAME BUFFER HOST SERVICE SENTINEL FILTER. 1147Args are NAME BUFFER HOST SERVICE SENTINEL FILTER.
1144NAME, BUFFER, HOST, and SERVICE are as for `open-network-stream'. 1148NAME, BUFFER, HOST, and SERVICE are as for `open-network-stream'.
1145Optional args, SENTINEL and FILTER specifies the sentinel and filter 1149Optional args SENTINEL and FILTER specify the sentinel and filter
1146functions to be used for this network stream." 1150functions to be used for this network stream."
1147 (if (featurep 'make-network-process '(:nowait t)) 1151 (if (featurep 'make-network-process '(:nowait t))
1148 (make-network-process :name name :buffer buffer :nowait t 1152 (make-network-process :name name :buffer buffer :nowait t
@@ -1160,17 +1164,17 @@ is called for the new process.
1160 1164
1161Args are NAME BUFFER SERVICE SENTINEL FILTER. 1165Args are NAME BUFFER SERVICE SENTINEL FILTER.
1162NAME is name for the server process. Client processes are named by 1166NAME is name for the server process. Client processes are named by
1163appending the ip-address and port number of the client to NAME. 1167 appending the ip-address and port number of the client to NAME.
1164BUFFER is the buffer (or buffer-name) to associate with the server 1168BUFFER is the buffer (or buffer name) to associate with the server
1165process. Client processes will not get a buffer if a process filter 1169 process. Client processes will not get a buffer if a process filter
1166is specified or BUFFER is nil; otherwise, a new buffer is created for 1170 is specified or BUFFER is nil; otherwise, a new buffer is created for
1167the client process. The name is similar to the process name. 1171 the client process. The name is similar to the process name.
1168Third arg SERVICE is name of the service desired, or an integer 1172Third arg SERVICE is name of the service desired, or an integer
1169specifying a port number to connect to. It may also be t to selected 1173 specifying a port number to connect to. It may also be t to select
1170an unused port number for the server. 1174 an unused port number for the server.
1171Optional args, SENTINEL and FILTER specifies the sentinel and filter 1175Optional args SENTINEL and FILTER specify the sentinel and filter
1172functions to be used for the client processes; the server process 1176 functions to be used for the client processes; the server process
1173does not use these function." 1177 does not use these function."
1174 (if (featurep 'make-network-process '(:server t)) 1178 (if (featurep 'make-network-process '(:server t))
1175 (make-network-process :name name :buffer buffer 1179 (make-network-process :name name :buffer buffer
1176 :service service :server t :noquery t 1180 :service service :server t :noquery t
@@ -1725,16 +1729,17 @@ Strip text properties from the inserted text according to
1725 1729
1726(defun start-process-shell-command (name buffer &rest args) 1730(defun start-process-shell-command (name buffer &rest args)
1727 "Start a program in a subprocess. Return the process object for it. 1731 "Start a program in a subprocess. Return the process object for it.
1728Args are NAME BUFFER COMMAND &rest COMMAND-ARGS.
1729NAME is name for process. It is modified if necessary to make it unique. 1732NAME is name for process. It is modified if necessary to make it unique.
1730BUFFER is the buffer or (buffer-name) to associate with the process. 1733BUFFER is the buffer (or buffer name) to associate with the process.
1731 Process output goes at end of that buffer, unless you specify 1734 Process output goes at end of that buffer, unless you specify
1732 an output stream or filter function to handle the output. 1735 an output stream or filter function to handle the output.
1733 BUFFER may be also nil, meaning that this process is not associated 1736 BUFFER may be also nil, meaning that this process is not associated
1734 with any buffer 1737 with any buffer
1735Third arg is command name, the name of a shell command. 1738COMMAND is the name of a shell command.
1736Remaining arguments are the arguments for the command. 1739Remaining arguments are the arguments for the command.
1737Wildcards and redirection are handled as usual in the shell." 1740Wildcards and redirection are handled as usual in the shell.
1741
1742\(fn NAME BUFFER COMMAND &rest COMMAND-ARGS)"
1738 (cond 1743 (cond
1739 ((eq system-type 'vax-vms) 1744 ((eq system-type 'vax-vms)
1740 (apply 'start-process name buffer args)) 1745 (apply 'start-process name buffer args))
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 39fe89bdaaa..77c63379e2b 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -501,7 +501,8 @@ and then re-start emacs."
501 (choice :tag "Coding system" 501 (choice :tag "Coding system"
502 (const iso-8859-1) 502 (const iso-8859-1)
503 (const iso-8859-2) 503 (const iso-8859-2)
504 (const koi8-r)))) 504 (const koi8-r)
505 (const windows-1251))))
505 :group 'ispell) 506 :group 'ispell)
506 507
507 508
@@ -630,6 +631,10 @@ and then re-start emacs."
630 "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]" 631 "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
631 "[^\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]" 632 "[^\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
632 "" nil nil nil koi8-r) 633 "" nil nil nil koi8-r)
634 ("russianw" ; russianw.aff (CP1251 charset)
635 "[\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]"
636 "[^\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]"
637 "" nil nil nil windows-1251)
633 ("slovak" ; Slovakian 638 ("slovak" ; Slovakian
634 "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" 639 "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]"
635 "[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" 640 "[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]"
@@ -3274,7 +3279,7 @@ You can bind this to the key C-c i in GNUS or mail by adding to
3274 (equal major-mode 'message-mode)) ;GNUS 5 3279 (equal major-mode 'message-mode)) ;GNUS 5
3275 (concat "In article <" "\\|" 3280 (concat "In article <" "\\|"
3276 "[^,;&+=\n]+ <[^,;&+=]+> writes:" "\\|" 3281 "[^,;&+=\n]+ <[^,;&+=]+> writes:" "\\|"
3277 message-yank-prefix "\\|" 3282 message-cite-prefix-regexp "\\|"
3278 default-prefix)) 3283 default-prefix))
3279 ((equal major-mode 'mh-letter-mode) ; mh mail message 3284 ((equal major-mode 'mh-letter-mode) ; mh mail message
3280 (concat "[^,;&+=\n]+ writes:" "\\|" 3285 (concat "[^,;&+=\n]+ writes:" "\\|"
diff --git a/lisp/toolbar/close.pbm b/lisp/toolbar/close.pbm
index 04633c9d1d6..d0eccb1b16d 100644
--- a/lisp/toolbar/close.pbm
+++ b/lisp/toolbar/close.pbm
Binary files differ
diff --git a/lisp/toolbar/close.xpm b/lisp/toolbar/close.xpm
index ff364d57044..498843be6e2 100644
--- a/lisp/toolbar/close.xpm
+++ b/lisp/toolbar/close.xpm
@@ -1,32 +1,29 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * close_xpm[] = {
3/* columns rows colors chars-per-pixel */
4"24 24 2 1", 3"24 24 2 1",
5" c Gray0", 4" c None",
6". c None", 5". c #000000",
7/* pixels */ 6" ",
8"........................", 7" ",
9"........................", 8" ",
10"........................", 9" ",
11"........................", 10" ",
12"........................", 11" ",
13"........................", 12" . . ",
14"....... .... ..........", 13" . ... ",
15"....... .. .........", 14" .. .... ",
16"........ . ..........", 15" .. ... ",
17"........ ...........", 16" ..... ",
18"......... ............", 17" ... ",
19"......... ...........", 18" ..... ",
20"........ ..........", 19" ....... ",
21"........ . .........", 20" ... .... ",
22"....... ... ........", 21" ... .... ",
23"....... ..... .........", 22" ... .. ",
24"........................", 23" ",
25"........................", 24" ",
26"........................", 25" ",
27"........................", 26" ",
28"........................", 27" ",
29"........................", 28" ",
30"........................", 29" "};
31"........................"
32};
diff --git a/lisp/toolbar/copy.pbm b/lisp/toolbar/copy.pbm
index 155be369266..7c19d5c2961 100644
--- a/lisp/toolbar/copy.pbm
+++ b/lisp/toolbar/copy.pbm
Binary files differ
diff --git a/lisp/toolbar/copy.xpm b/lisp/toolbar/copy.xpm
index 06efceae29d..6262a95bc39 100644
--- a/lisp/toolbar/copy.xpm
+++ b/lisp/toolbar/copy.xpm
@@ -1,37 +1,53 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * copy_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 26 1",
4"24 24 7 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #424242423a3a", 6"+ c #B4B4B4",
7"X c #68e968e96363", 7"@ c #F8F8F8",
8"o c #a8b1a8b1992b", 8"# c #F6F6F6",
9"O c #d3d3d3d3bdbd", 9"$ c #C3C3C3",
10"+ c #e419e419cd6b", 10"% c #E9E9E9",
11"@ c None", 11"& c #989898",
12/* pixels */ 12"* c #828282",
13"@@@@@@@@@@@@@@@@@@@@@@@@", 13"= c #8A8A8A",
14"@@@@@@@@@@@@@@@@@@@@@@@@", 14"- c #E8E8E8",
15"@@@@@@@@@@@@@@@@@@@@@@@@", 15"; c #636363",
16"@@@@@@@@@@@@@@@@@@@@@@@@", 16"> c #5A5A5A",
17"@@@@@@@@@@@@@@@@@@@@@@@@", 17", c #6B6B6B",
18"@@@@@@@@ @@@@@@@@@@@@@@", 18"' c #B3B3B3",
19"@@@@@@ Oo @@@@@@@@@@@@@", 19") c #FFFFFF",
20"@@@@ .ooOO @@@@ @@@@@@@", 20"! c #D6D6D6",
21"@@@@ +XoOOo @ Oo @@@@@@", 21"~ c #818181",
22"@@@@ +.oO++ .ooOO @@@@@@", 22"{ c #A7A7A7",
23"@@@@ XoO+++ +XoOOo @@@@@", 23"] c #8F8F8F",
24"@@@@ oOO+++ +.oO++ @@@@@", 24"^ c #C6C6C6",
25"@@@@ oO++++ XoOO++o @@@@", 25"/ c #808080",
26"@@@@@ +++++ oOO++++o @@@", 26"( c #E7E7E7",
27"@@@@@ o++++ oO++++++ @@@", 27"_ c #6D6D6D",
28"@@@@@@ ++o +++++++o @@", 28": c #767676",
29"@@@@@@ o @@ o++++o @@@", 29"< c #F5F5F5",
30"@@@@@@@ @@@@@ ++o @@@@@", 30" ",
31"@@@@@@@@@@ @@ o @@@@@@@", 31" ............. ",
32"@@@@@@@ @@ @@@@@@@@@", 32" .+@@@@@@@@@#$. ",
33"@@@@@@@ @@@@@@@@@@@@", 33" .@%%%%%%%%%%%. ",
34"@@@@@@@@@@ @@@@@@@@@@@@@", 34" .@&**=%+*%*+%. ",
35"@@@@@@@@@@@@@@@@@@@@@@@@", 35" .@%%%%%%%%---. ",
36"@@@@@@@@@@@@@@@@@@@@@@@@" 36" .@;>%,*+-............ ",
37}; 37" .@%%%%%%.'))))))))))!. ",
38" .@&**%*~.)))))))))))). ",
39" .@%%%%%-.){]]&)^])]^). ",
40" .@;>>%,/.)))))))))))). ",
41" .@%%%%%(.)_;):]^)^])). ",
42" .@&**%*~.)))))))))))). ",
43" .<%%%%%-.){]])]]^)&]). ",
44" .$%%%%%-.)))))))))))). ",
45" ........)_;;):]^)^]). ",
46" .)))))))))))). ",
47" .){]])]]^)&]). ",
48" .)))))))))))). ",
49" .!))))))))))!. ",
50" .............. ",
51" ",
52" ",
53" "};
diff --git a/lisp/toolbar/cut.pbm b/lisp/toolbar/cut.pbm
index 570260767cb..5a80e5b96c8 100644
--- a/lisp/toolbar/cut.pbm
+++ b/lisp/toolbar/cut.pbm
Binary files differ
diff --git a/lisp/toolbar/cut.xpm b/lisp/toolbar/cut.xpm
index 563d64ec343..3f8e71d22ce 100644
--- a/lisp/toolbar/cut.xpm
+++ b/lisp/toolbar/cut.xpm
@@ -1,32 +1,67 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * cut_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 40 1",
4"24 24 2 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c None", 6"+ c #C9C7C2",
7/* pixels */ 7"@ c #E6E4E0",
8"........................", 8"# c #EFEEED",
9"........................", 9"$ c #494946",
10"........................", 10"% c #73726E",
11"........................", 11"& c #F0EEED",
12"........................", 12"* c #7F7D75",
13".................. .....", 13"= c #F2F1EF",
14"................ ......", 14"- c #D2CFC8",
15"............... .......", 15"; c #E7E7E4",
16".............. ........", 16"> c #BAB5AB",
17"............. .........", 17", c #565653",
18".... .... ..... ..", 18"' c #EDECE9",
19"... ... .. ... ....", 19") c #A4A097",
20"... ... ......", 20"! c #817F7E",
21".... ... .........", 21"~ c #4E4C48",
22".......... ............", 22"{ c #F6F5F4",
23"......... ............", 23"] c #474541",
24"........ .. ............", 24"^ c #EFEEEC",
25"....... ... ............", 25"/ c #8C8B8A",
26"....... .. .............", 26"( c #F3F2F0",
27"....... ..............", 27"_ c #77746D",
28"........................", 28": c #323232",
29"........................", 29"< c #EBEBEA",
30"........................", 30"[ c #605D58",
31"........................" 31"} c #F5F4F3",
32}; 32"| c #CECCC7",
33"1 c #363634",
34"2 c #6F6E6D",
35"3 c #BEBDBB",
36"4 c #EAE7E4",
37"5 c #B8B5B1",
38"6 c #474747",
39"7 c #DAD8D4",
40"8 c #9B9996",
41"9 c #161615",
42"0 c #6D6B6A",
43"a c #3A3837",
44" ",
45" ",
46" . . ",
47" . . ",
48" .+. .@. ",
49" .#$ %@. ",
50" .&*. .=-. ",
51" .;>, %'). ",
52" !#*. .=-~ ",
53" .{>] ~^>. ",
54" /(_.:<-[ ",
55" .}|123>. ",
56" .456>. ",
57" .78.. ",
58" .90a. ",
59" ............. ",
60" . ... ... ... ",
61" .. .. .. .. ",
62" . . . . ",
63" .. .. .. .. ",
64" .... .. . ",
65" .... .... ",
66" ",
67" "};
diff --git a/lisp/toolbar/help.pbm b/lisp/toolbar/help.pbm
index 562cc6137b5..2abea9be95f 100644
--- a/lisp/toolbar/help.pbm
+++ b/lisp/toolbar/help.pbm
Binary files differ
diff --git a/lisp/toolbar/help.xpm b/lisp/toolbar/help.xpm
index bca0bf8e4fc..1d65ce03b53 100644
--- a/lisp/toolbar/help.xpm
+++ b/lisp/toolbar/help.xpm
@@ -1,36 +1,271 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * help_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 244 2",
4"24 24 6 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #65658b8b5e5e", 6"+ c #454442",
7"X c #934ab2448dfb", 7"@ c #1D1D1C",
8"o c #b35dc8c8afaf", 8"# c #040404",
9"O c #e0b2e944df83", 9"$ c #1B1B1B",
10"+ c None", 10"% c #3D3C3A",
11/* pixels */ 11"& c #4D4C4B",
12"++++++++++++++++++++++++", 12"* c #2F2F2D",
13"++++++++++++++++++++++++", 13"= c #C1BFBB",
14"++++++++++++++++++++++++", 14"- c #ECEAE7",
15"++++++++++++++++++++++++", 15"; c #F5F3F0",
16"+++++++++ ++++++++++", 16"> c #F2F0EC",
17"++++++++ oOOOO +++++++++", 17", c #E1DFDC",
18"+++++++ OOOOOOO ++++++++", 18"' c #AFADAA",
19"++++++ oOo oOo +++++++", 19") c #272726",
20"+++++++ O +++ OO +++++++", 20"! c #020202",
21"+++++++O ++++ Oo +++++++", 21"~ c #3F3E3E",
22"++++++++++++ OO. +++++++", 22"{ c #36302D",
23"+++++++++++ OOX ++++++++", 23"] c #181818",
24"++++++++++ OOX +++++++++", 24"^ c #FBF8F5",
25"+++++++++ XOX ++++++++++", 25"/ c #FEFCF8",
26"+++++++++ OX +++++++++++", 26"( c #FAF8F5",
27"+++++++++ +++++++++++", 27"_ c #F5F4F1",
28"++++++++++++++++++++++++", 28": c #F2F1ED",
29"++++++++++ ++++++++++++", 29"< c #F1EFEB",
30"+++++++++ Oo +++++++++++", 30"[ c #F1EEEB",
31"+++++++++ oX +++++++++++", 31"} c #EAE9E6",
32"++++++++++ ++++++++++++", 32"| c #DAD8D4",
33"++++++++++++++++++++++++", 33"1 c #100E0E",
34"++++++++++++++++++++++++", 34"2 c #1F100E",
35"++++++++++++++++++++++++" 35"3 c #AF3A1E",
36}; 36"4 c #FBAB93",
37"5 c #FAE9E3",
38"6 c #F0EFEB",
39"7 c #E9E8E5",
40"8 c #EAE8E6",
41"9 c #ECEAE8",
42"0 c #EDEBE9",
43"a c #EDEBE8",
44"b c #EACFC6",
45"c c #D5340A",
46"d c #751904",
47"e c #100806",
48"f c #34160D",
49"g c #AF3C20",
50"h c #FCCCBD",
51"i c #F7BEAD",
52"j c #E67554",
53"k c #DFDDDB",
54"l c #DBD9D6",
55"m c #D8D7D3",
56"n c #DBDAD6",
57"o c #E3E2DE",
58"p c #ECEBE8",
59"q c #E5572D",
60"r c #E33A0B",
61"s c #D4340A",
62"t c #691504",
63"u c #100504",
64"v c #582C22",
65"w c #0F0F0F",
66"x c #FDD4C8",
67"y c #F7BFAF",
68"z c #E87554",
69"A c #D5512B",
70"B c #C68270",
71"C c #BEBDBA",
72"D c #A5A3A0",
73"E c #9C9A95",
74"F c #B9B7B2",
75"G c #D7D6D2",
76"H c #E7E5E2",
77"I c #E79A85",
78"J c #E53C0B",
79"K c #E43C0B",
80"L c #E23A0B",
81"M c #C93009",
82"N c #010000",
83"O c #040100",
84"P c #FAB19C",
85"Q c #FACCBE",
86"R c #EB8264",
87"S c #D8532D",
88"T c #C0340F",
89"U c #932006",
90"V c #141412",
91"W c #857974",
92"X c #DA370B",
93"Y c #EC7C5B",
94"Z c #E95B32",
95"` c #DE380B",
96" . c #9D2306",
97".. c #626261",
98"+. c #FEF1ED",
99"@. c #F09479",
100"#. c #DC532B",
101"$. c #C0350F",
102"%. c #942006",
103"&. c #621404",
104"*. c #E2522B",
105"=. c #F2A690",
106"-. c #E74E21",
107";. c #E23B0B",
108">. c #C99181",
109",. c #454342",
110"'. c #E5E4E2",
111"). c #FCFBFA",
112"!. c #E2D8D3",
113"~. c #C34C2A",
114"{. c #B02B07",
115"]. c #9E2D12",
116"^. c #EF8D71",
117"/. c #F09B83",
118"(. c #EADDD7",
119"_. c #272724",
120":. c #F0EEEC",
121"<. c #F3F2EF",
122"[. c #D7D6D3",
123"}. c #BFBEBB",
124"|. c #9E6153",
125"1. c #3F0D02",
126"2. c #F0B9A9",
127"3. c #F6F5F4",
128"4. c #E8E7E4",
129"5. c #DAD8D5",
130"6. c #585652",
131"7. c #F6F4F0",
132"8. c #DAD8D6",
133"9. c #C2C1BE",
134"0. c #989691",
135"a. c #0A0A08",
136"b. c #F6F4F2",
137"c. c #F4F3F1",
138"d. c #E4E3E0",
139"e. c #D3D2CE",
140"f. c #63625D",
141"g. c #DCDAD8",
142"h. c #C7C6C2",
143"i. c #ABAAA5",
144"j. c #0A0A0A",
145"k. c #FAF8F6",
146"l. c #EFEDEA",
147"m. c #DDDCD8",
148"n. c #C6C4C2",
149"o. c #3E3E39",
150"p. c #1B1B19",
151"q. c #F0EEEA",
152"r. c #E0DFDD",
153"s. c #CCCBC9",
154"t. c #C0BFBB",
155"u. c #131311",
156"v. c #676663",
157"w. c #FCFAF8",
158"x. c #D6D4D2",
159"y. c #BCBAB7",
160"z. c #3C3C3A",
161"A. c #DEDCD9",
162"B. c #7E4B3E",
163"C. c #232323",
164"D. c #CC9385",
165"E. c #FAFAF7",
166"F. c #E6E6E2",
167"G. c #CDCCCA",
168"H. c #B0B0AC",
169"I. c #EDE3DF",
170"J. c #E78468",
171"K. c #DF5D3A",
172"L. c #631909",
173"M. c #282828",
174"N. c #B46E5E",
175"O. c #FCC3B2",
176"P. c #F1A691",
177"Q. c #DCD2CC",
178"R. c #C8C6C3",
179"S. c #7E7C78",
180"T. c #E8AD9C",
181"U. c #E96139",
182"V. c #EB7452",
183"W. c #EF8E72",
184"X. c #EA8063",
185"Y. c #9E2E13",
186"Z. c #3F1811",
187"`. c #121212",
188" + c #6B433B",
189".+ c #E0A191",
190"++ c #FDD3C7",
191"@+ c #F4AD98",
192"#+ c #DE532B",
193"$+ c #C83409",
194"%+ c #B48274",
195"&+ c #383534",
196"*+ c #D6340A",
197"=+ c #E43D0F",
198"-+ c #E8582E",
199";+ c #ED7957",
200">+ c #F4B6A4",
201",+ c #F4B09D",
202"'+ c #F0E5E0",
203")+ c #F4F3EF",
204"!+ c #FDF8F6",
205"~+ c #FBCEC1",
206"{+ c #F28B6E",
207"]+ c #E44E23",
208"^+ c #D3370A",
209"/+ c #BF2F09",
210"(+ c #260800",
211"_+ c #190F0B",
212":+ c #D5350A",
213"<+ c #E43D0C",
214"[+ c #E74C1F",
215"}+ c #EFBBAB",
216"|+ c #F5F4F3",
217"1+ c #F5F3F1",
218"2+ c #EAB1A0",
219"3+ c #DE4316",
220"4+ c #C5310A",
221"5+ c #591202",
222"6+ c #0E0504",
223"7+ c #C83009",
224"8+ c #E0532B",
225"9+ c #E7E6E3",
226"0+ c #E7E6E2",
227"a+ c #DDDCD9",
228"b+ c #CFCECA",
229"c+ c #C14724",
230"d+ c #AE2907",
231"e+ c #290800",
232"f+ c #0F0705",
233"g+ c #9B2205",
234"h+ c #C1A89F",
235"i+ c #D1D0CC",
236"j+ c #CFCDCA",
237"k+ c #C7C6C3",
238"l+ c #BBBAB7",
239"m+ c #B5B4B1",
240"n+ c #A7A6A2",
241"o+ c #66564F",
242"p+ c #0B0908",
243"q+ c #010100",
244"r+ c #222221",
245"s+ c #51504B",
246"t+ c #5D5C57",
247"u+ c #3B3B37",
248" . . + @ # # $ % ",
249" . . . . & # * = - ; > , ' ) ! ~ . . . . ",
250". . { ] ^ / ( _ : > < [ } | . 1 . . ",
251" . 2 3 4 5 6 - 7 8 9 0 0 a b c d e . ",
252" . f g h i j k l m n o } p a q r s t u . . ",
253" v w x y z A B C D E F G H I J K L M . N ",
254" O P Q R S T U . . . . V W X Y Z K ` .. ",
255" ..+.@.#.$.%.. . . &.*.=.-.;.>.! . ",
256",.'.).!.~.{.. . . ].^./.(.n _.. ",
257"@ :.<.[.}.|.. 1.2.3.4.5.6.. ",
258"# 7.6 8.9.0.. a.b.c.d.e.f.. ",
259"# > < g.h.i.. j.k.l.m.n.o.. ",
260"p., q.r.s.t.u. v.w.9 x.y.. . ",
261"z.' [ 7 A.[.B.. C.D.E.F.G.H.. . ",
262" ) } 0 I.J.K.L.. M.N.O.P.Q.R.S.. . ",
263" ! | T.U.V.W.X.Y.Z.a.`. +.+++@+#+$+%+. . ",
264" &+. *+=+-+;+>+,+'+)+k.!+~+{+]+^+/+(+. . ",
265" . _+d :+L <+[+}+|+l.1+|+2+3+^+4+5+. . . ",
266" . 6+t 7+` 8+9+0+o a+[.b+c+d+e+. . . ",
267" . f+. g+h+i+j+k+l+m+n+o+. . . . ",
268" . . . p+. q+r+s+t+u+. . . . . . . ",
269" . . . . . . . . . . . . ",
270" ",
271" "};
diff --git a/lisp/toolbar/home.pbm b/lisp/toolbar/home.pbm
index 117955f2a74..707f0ccce6b 100644
--- a/lisp/toolbar/home.pbm
+++ b/lisp/toolbar/home.pbm
Binary files differ
diff --git a/lisp/toolbar/home.xpm b/lisp/toolbar/home.xpm
index 33d02aaf387..57e8f9cc25a 100644
--- a/lisp/toolbar/home.xpm
+++ b/lisp/toolbar/home.xpm
@@ -1,36 +1,128 @@
1/* XPM */ 1/* XPM */
2static char * home_xpm[] = { 2static char * home_xpm[] = {
3"24 24 9 1", 3"24 24 101 2",
4" c None", 4" c None",
5". c #020202", 5". c #000000",
6"+ c #6C7962", 6"+ c #212121",
7"@ c #7A8A6E", 7"@ c #2C2C2C",
8"# c #FEFEFE", 8"# c #C1665A",
9"$ c #7E8E76", 9"$ c #924B37",
10"% c #82927A", 10"% c #2A2A2A",
11"& c #C8CEC4", 11"& c #333333",
12"* c #E3E7E1", 12"* c #343434",
13" ", 13"= c #242424",
14" ", 14"- c #944D3A",
15" ", 15"; c #A05443",
16" ", 16"> c #181818",
17" . ... ", 17", c #474747",
18" .#. .&. ", 18"' c #555555",
19" .#*%..&. ", 19") c #8D8D8D",
20" .##&&$.&. ", 20"! c #383838",
21" .##&&&&$&. ", 21"~ c #191919",
22" .*#&&&&&&@. ", 22"{ c #974F3C",
23" .##&&&&&&&&+. ", 23"] c #222222",
24" .###&&&&&&&&&+. ", 24"^ c #313131",
25" ...##&&&&&&&&+... ", 25"/ c #A1A1A1",
26" .##&&&&&&&&+. ", 26"( c #676767",
27" .##....&&&&+. ", 27"_ c #ACACAC",
28" .##.&&.&&&&+. ", 28": c #BCBCBC",
29" .##.&&.&&&&+. ", 29"< c #585858",
30" .#*.&&.&&&&+. ", 30"[ c #141414",
31" .&+.++.+++++. ", 31"} c #1C1C1C",
32" ............. ", 32"| c #464646",
33" ", 33"1 c #666666",
34" ", 34"2 c #BABABA",
35" ", 35"3 c #7E7E7E",
36" "}; 36"4 c #D2D2D2",
37"5 c #FFFFFF",
38"6 c #4F4F4F",
39"7 c #262626",
40"8 c #232323",
41"9 c #505050",
42"0 c #B2B2B2",
43"a c #909090",
44"b c #9A9A9A",
45"c c #838383",
46"d c #171717",
47"e c #202020",
48"f c #717171",
49"g c #A6A6A6",
50"h c #616161",
51"i c #1D1D1D",
52"j c #1F1F1F",
53"k c #C4C4C4",
54"l c #CACACA",
55"m c #AEAEAE",
56"n c #D1D1D1",
57"o c #7C7C7C",
58"p c #BFBFBF",
59"q c #6C6C6C",
60"r c #EEEEEE",
61"s c #949494",
62"t c #C7C7C7",
63"u c #EBEBEB",
64"v c #7D7D7D",
65"w c #6E6E6E",
66"x c #A9A9A9",
67"y c #E99E8F",
68"z c #DD806D",
69"A c #9B5343",
70"B c #CECECE",
71"C c #626262",
72"D c #858585",
73"E c #ECA292",
74"F c #D0533A",
75"G c #934F3E",
76"H c #6D6D6D",
77"I c #ECA291",
78"J c #CF543C",
79"K c #371D16",
80"L c #5D5D5D",
81"M c #868686",
82"N c #787878",
83"O c #ECA696",
84"P c #C95C49",
85"Q c #E17C66",
86"R c #924E3D",
87"S c #888888",
88"T c #A0A0A0",
89"U c #3D1208",
90"V c #D15137",
91"W c #919191",
92"X c #879981",
93"Y c #82947C",
94"Z c #8A9B85",
95"` c #6E8467",
96" . c #5D7555",
97".. c #4C6042",
98"+. c #3F4F37",
99"@. c #303D2A",
100"#. c #7F8F7A",
101"$. c #64785E",
102"%. c #44563E",
103"&. c #657460",
104"*. c #40503A",
105" ",
106" . . ",
107" . . . . . + @ . ",
108" . # $ . . % & * = . ",
109" . - ; . > , ' ) ! ~ . ",
110" . { . ] ^ / ( _ : < [ . ",
111" . . } | 1 2 3 4 : 5 6 7 . ",
112" . 8 9 0 a 4 b 5 : 5 : c d . ",
113" . e f g 4 b 5 : 5 : 5 : 5 h i . ",
114" . j k k l 5 m 5 2 5 2 5 : 5 n o } . ",
115" . 8 m p p p p p p p p . . . . . a q = . ",
116" . . . . r 5 5 5 5 5 5 5 . s t u . v . . . . ",
117" . 4 5 . . . . . 5 . : 5 5 . w . ",
118" . x 5 . y z A . 5 . B 5 5 . C . ",
119" . D 5 . E F G . 5 . . . . . H . ",
120" . . 5 . I J K . k s L L M N . . ",
121" . . r . O P G . 5 5 5 5 5 2 . ",
122" . 2 . Q # R . : : : : : S . ",
123" . T U V # A . 5 5 5 5 5 W . ",
124" . . . . . . . . . . . . . . . . . . . . . ",
125" } X Y Z X ` ...+.@.. Y #.$.%.&.*.. ",
126" . . . . . . . . . . . . . . . . . ",
127" . . . ",
128" "};
diff --git a/lisp/toolbar/index.pbm b/lisp/toolbar/index.pbm
index 5411d49f071..044c835c393 100644
--- a/lisp/toolbar/index.pbm
+++ b/lisp/toolbar/index.pbm
Binary files differ
diff --git a/lisp/toolbar/index.xpm b/lisp/toolbar/index.xpm
index 154e4286083..7e1de12121b 100644
--- a/lisp/toolbar/index.xpm
+++ b/lisp/toolbar/index.xpm
@@ -1,39 +1,201 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * index_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 174 2",
4"24 24 9 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #4646424233b4", 6"+ c #FDFDFD",
7"X c #6f4d67895151", 7"@ c #F5F5F5",
8"o c #911b871c69df", 8"# c #F6F6F6",
9"O c #b3d8a9b58836", 9"$ c #D0D0D0",
10"+ c #c280b9779c39", 10"% c #C1C1C1",
11"@ c #cd0cc646ae2e", 11"& c #C3C3C3",
12"# c #e0e0e4e4e0e0", 12"* c #C6C6C6",
13"$ c None", 13"= c #C8C8C8",
14/* pixels */ 14"- c #8D8D8D",
15"$$$$$$$$$$$$$$$$$$$$$$$$", 15"; c #CACACA",
16"$$$$$$$$$$$$$$$$$$$$$$$$", 16"> c #919191",
17"$$$$$$$$$$$$$$$$$$$$$$$$", 17", c #EFEFEF",
18"$$$$ $$", 18"' c #878787",
19"$$$$ ################ $$", 19") c #8A8A8A",
20"$$$$ ##### O######## $$", 20"! c #5C5C5C",
21"$$$$ #### oX O####### $$", 21"~ c #F8F8F8",
22"$$$$ @o $$", 22"{ c #EAEAEA",
23"$$$$ #### @o O####### $$", 23"] c #CCCCCC",
24"$$$$ #### @o O##### $$", 24"^ c #CECECE",
25"$$$$ #### @o X. O## $$", 25"/ c #979797",
26"$$$$ +o OX oX $$", 26"( c #CDCDCD",
27"$$$$ ## X +o Oo Oo oX $$", 27"_ c #A1A1A1",
28"$$$$ ## o +OoOOoOOOOo $$", 28": c #090600",
29"$$$$ ## O +++OOOOOOOX $$", 29"< c #A3A3A3",
30"$$$$ O O++O+OOOOOX $$", 30"[ c #C5C5C5",
31"$$$$ ## ooO+++O+OOOOX $$", 31"} c #C4C4C4",
32"$$$$ ### oO++++OOOOo. $$", 32"| c #D1D1D1",
33"$$$$ ### XOO++O+OOOo $$$", 33"1 c #D2D2D1",
34"$$$$ o++++OOOoX $$$", 34"2 c #D2D2D2",
35"$$$$$$$$$ XOO+++OOoX $$$", 35"3 c #9A9A9A",
36"$$$$$$$$$$ oO++OOOX $$$$", 36"4 c #E8E8E8",
37"$$$$$$$$$$$ OO++OOX $$$$", 37"5 c #949494",
38"$$$$$$$$$$$$$$$$$$$$$$$$" 38"6 c #939393",
39}; 39"7 c #574F4F",
40"8 c #FDFDFC",
41"9 c #777777",
42"0 c #7E7E7E",
43"a c #9D9D9D",
44"b c #6B6B6B",
45"c c #F1F1F1",
46"d c #ECECEC",
47"e c #CFCFCF",
48"f c #575050",
49"g c #FDFAF8",
50"h c #A5A5A5",
51"i c #B9B9B9",
52"j c #EEEEEE",
53"k c #EDEDED",
54"l c #D5D5D5",
55"m c #BABABA",
56"n c #6D6767",
57"o c #F9F1EA",
58"p c #9E9E9E",
59"q c #B5B5B5",
60"r c #D9D9D9",
61"s c #D7D7D7",
62"t c #BCBCBC",
63"u c #625C5B",
64"v c #F9EEE4",
65"w c #4F4D4A",
66"x c #646464",
67"y c #747474",
68"z c #D6D6D5",
69"A c #DFDFDF",
70"B c #A0A0A0",
71"C c #615C5B",
72"D c #F9F0E4",
73"E c #746C67",
74"F c #FEFDFC",
75"G c #FFFEFD",
76"H c #131210",
77"I c #636363",
78"J c #7C7C7C",
79"K c #F3F2F2",
80"L c #98948F",
81"M c #F9EFE3",
82"N c #A09489",
83"O c #FEFDFD",
84"P c #766D68",
85"Q c #736961",
86"R c #A3A3A2",
87"S c #A6A6A6",
88"T c #DBDBDB",
89"U c #C7C7C7",
90"V c #E8E5E2",
91"W c #97938E",
92"X c #F6E9D8",
93"Y c #84817A",
94"Z c #FBF3EA",
95"` c #908C86",
96" . c #F1EDE7",
97".. c #7B7975",
98"+. c #878786",
99"@. c #070000",
100"#. c #FAFAFA",
101"$. c #DDDDDD",
102"%. c #E2DFDC",
103"&. c #A8A199",
104"*. c #F0E0CE",
105"=. c #C8BFB4",
106"-. c #D5CCBF",
107";. c #DFD7CD",
108">. c #DAD3C9",
109",. c #DDCFC4",
110"'. c #928C84",
111"). c #A8A8A8",
112"!. c #959595",
113"~. c #040000",
114"{. c #D9D5D2",
115"]. c #D9CABB",
116"^. c #D7C8B8",
117"/. c #DECFBF",
118"(. c #D8C9B9",
119"_. c #E3D3C2",
120":. c #C9BBAC",
121"<. c #D9CEC2",
122"[. c #7F766D",
123"}. c #909090",
124"|. c #D3D3D3",
125"1. c #060100",
126"2. c #C0BDBA",
127"3. c #8C8782",
128"4. c #C2B5A7",
129"5. c #BFB4A6",
130"6. c #B8AB9D",
131"7. c #BAAD9E",
132"8. c #BEB0A2",
133"9. c #948A7F",
134"0. c #716860",
135"a. c #E2E2E2",
136"b. c #A9A9A8",
137"c. c #332C2B",
138"d. c #5D5954",
139"e. c #79736C",
140"f. c #958C80",
141"g. c #8D8379",
142"h. c #988D82",
143"i. c #706760",
144"j. c #787878",
145"k. c #E4E4E4",
146"l. c #C2C2C2",
147"m. c #201A1A",
148"n. c #57514F",
149"o. c #625C59",
150"p. c #625A53",
151"q. c #6B625A",
152"r. c #585251",
153"s. c #696764",
154"t. c #080000",
155"u. c #989898",
156"v. c #B0B0B0",
157"w. c #AFAFAF",
158"x. c #999999",
159"y. c #9D9897",
160"z. c #050000",
161"A. c #0C0303",
162"B. c #080100",
163"C. c #030000",
164"D. c #282523",
165"E. c #5A5A5A",
166"F. c #868686",
167"G. c #ECE4E2",
168"H. c #DED7D5",
169"I. c #D8D1D0",
170"J. c #E0DBD7",
171"K. c #E9E6E3",
172"L. c #FCFBFA",
173"M. c #030500",
174"N. c #0B0505",
175"O. c #14100F",
176"P. c #090806",
177"Q. c #000100",
178" ",
179" . . . . . . . . . . . . . . . . . . . . ",
180" . + @ @ @ @ @ @ @ # # # # # # # # # $ . ",
181" . @ % % % & & & & * * * * * = = = = - . ",
182" . # & & & * * * * = = = = = ; ; ; ; > . ",
183" . , ' ' ' ) ) ) ) - - - - - > > > > ! . ",
184" . ~ { { { { { { { { { { { { { { { { ; . ",
185" . # ; ; ; ] ] ] ] ] ^ ^ ^ ^ $ $ $ $ / . ",
186" . # ] ] ] ( ^ ^ ^ _ : < [ } | 1 | 2 3 . ",
187" . 4 5 5 5 / / / 6 7 8 . 9 0 - a a a b . ",
188" . ~ c d d d d d e f g . h i $ j j k * . ",
189" . ~ 2 2 2 2 l l m n o . > p q r r r < . ",
190" . ~ l l l l s s t u v w . x . y p z < . ",
191" . A B B B B < 9 . C D E F . G H . I J . ",
192" . ~ @ , , , j . K L M N O P F Q R . S . ",
193" . ~ T T T T U . V W X Y Z ` ...+.@.< . ",
194" . #.$.$.$.$.& . %.&.*.=.-.;.>.,.'.@.p . ",
195" . { ).).).).!.~.{.].^./.(._.:.<.[.@.}.. ",
196" . #.@ c c c |.1.2.3.4.5.6.7.8.9.0.@.] . ",
197" . #.a.a.a.a.l b.c.d.e.f.g.9.h.i.. j.q . ",
198" . #.a.a.a.a.k.l.j.m.n.o.p.q.r.s.t.u.q . ",
199" . a.v.v.v.v.v.w.x.y.z.A.t.B.C.D.E.F.m . ",
200" . . . . . . . . . ~.G.H.I.J.K.L.M.. . . ",
201" ~.N.z.O.C.P.. Q. "};
diff --git a/lisp/toolbar/jump_to.pbm b/lisp/toolbar/jump_to.pbm
index effcdcc8bfd..2939a6c4a66 100644
--- a/lisp/toolbar/jump_to.pbm
+++ b/lisp/toolbar/jump_to.pbm
Binary files differ
diff --git a/lisp/toolbar/jump_to.xpm b/lisp/toolbar/jump_to.xpm
index 2106d015285..8f9897974ab 100644
--- a/lisp/toolbar/jump_to.xpm
+++ b/lisp/toolbar/jump_to.xpm
@@ -1,39 +1,171 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * jump_to_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 144 2",
4"24 24 9 1", 4" c None",
5" c #011b011b011b", 5". c #000000",
6". c #5e0868be52d3", 6"+ c #9ABC82",
7"X c #7c7c8b8b6e6e", 7"@ c #C1E3AA",
8"o c #8d4d97577838", 8"# c #A0C487",
9"O c #ae51c17b9b26", 9"$ c #8F6508",
10"+ c #cedcabd6996e", 10"% c #AD671D",
11"@ c #d305cecebaba", 11"& c #D6AF41",
12"# c #e38de39ed709", 12"* c #E1B744",
13"$ c None", 13"= c #B86F20",
14/* pixels */ 14"- c #7E5907",
15"$$$$$$$$$$$$$$$$$$$$$$$$", 15"; c #D8E7CD",
16"$$$$$$$$$$$$$$$$$$$$$$$$", 16"> c #D9E7CF",
17"$$$$$$$$$$$$$$$$$$$$$$$$", 17", c #DDEAD2",
18"$$$$$$$$$$$$$$$$$$$$$$$$", 18"' c #E4EFDA",
19"$$$$$$$$$$$$$$$$$$$$$$$$", 19") c #EBF6DF",
20"$$$$$$$$$$$$$$$$$$$$$$$$", 20"! c #C8EBB0",
21"$$$$$$$$$$$$$ $$$$$$$$", 21"~ c #A2C688",
22"$$$$$$$$$$$ #@+ $$$$$$", 22"{ c #986F26",
23"$$$$$$$$$$$ ###@+ $$$$$$", 23"] c #E2B946",
24"$$$$$$$ #+++ $$$$$", 24"^ c #EFCD64",
25"$$$$$$$ o@##O ++++ $$$$$", 25"/ c #F4D268",
26"$$$$$$$$ .OO. +++o $$$$$", 26"( c #F6D469",
27"$$$$$$ #@O.. +++ $$$$$$", 27"_ c #E7C24A",
28"$$$$ #@@Oo.. ++ $$$$$$", 28": c #D5B044",
29"$$$ #@@OOo. . $$$$$$$$", 29"< c #BC8C31",
30"$$$$ #OOO. $ $$$$$$$$$$", 30"[ c #1A0700",
31"$$$$$ #OX. $$$$$$$$$$$$$", 31"} c #D7E6CD",
32"$$$$$$ O. $$$$$$$$$$$$$$", 32"| c #B2D29C",
33"$$$$$$$ . $$$$$$$$$$$$$$", 33"1 c #B6D69F",
34"$$$$$$$$ $$$$$$$$$$$$$$$", 34"2 c #BDDEA5",
35"$$$$$$$$$$$$$$$$$$$$$$$$", 35"3 c #C4E7AC",
36"$$$$$$$$$$$$$$$$$$$$$$$$", 36"4 c #CAEEB1",
37"$$$$$$$$$$$$$$$$$$$$$$$$", 37"5 c #A1C387",
38"$$$$$$$$$$$$$$$$$$$$$$$$" 38"6 c #CBB86E",
39}; 39"7 c #EDD97E",
40"8 c #FEE882",
41"9 c #FEE77E",
42"0 c #FDDF60",
43"a c #FBD14F",
44"b c #E4BF49",
45"c c #BB8C31",
46"d c #CFE2C3",
47"e c #B2D19C",
48"f c #B5D59F",
49"g c #BBDBA4",
50"h c #C1E3A9",
51"i c #C6E9AE",
52"j c #C3E6AB",
53"k c #A9CE8D",
54"l c #DCBA5C",
55"m c #FBE46B",
56"n c #FFEB64",
57"o c #FFE054",
58"p c #FED952",
59"q c #F8CF4E",
60"r c #C4A13E",
61"s c #8BA27B",
62"t c #618249",
63"u c #628349",
64"v c #64864B",
65"w c #66894D",
66"x c #688B4E",
67"y c #678B4D",
68"z c #6B9251",
69"A c #719755",
70"B c #55833A",
71"C c #ECC75E",
72"D c #FFED59",
73"E c #FFE757",
74"F c #FFDF54",
75"G c #FBD44F",
76"H c #E1BD48",
77"I c #B36C1F",
78"J c #608148",
79"K c #628449",
80"L c #63854A",
81"M c #65894C",
82"N c #6C9151",
83"O c #527E39",
84"P c #B39237",
85"Q c #F0C248",
86"R c #FFF25B",
87"S c #FFEB58",
88"T c #FFE155",
89"U c #FBD450",
90"V c #E3BD49",
91"W c #BC983B",
92"X c #618349",
93"Y c #628549",
94"Z c #65884B",
95"` c #4D7735",
96" . c #907934",
97".. c #DCB444",
98"+. c #FCDB52",
99"@. c #FFEF5A",
100"#. c #FFE957",
101"$. c #FEDF54",
102"%. c #F9D24F",
103"&. c #E0BA48",
104"*. c #B08F37",
105"=. c #52743B",
106"-. c #456A2F",
107";. c #608248",
108">. c #628448",
109",. c #476F31",
110"'. c #7F6B32",
111"). c #D0AF4B",
112"!. c #F5CF4E",
113"~. c #FFE255",
114"{. c #FEDA52",
115"]. c #EAC54B",
116"^. c #D0AC42",
117"/. c #9C5D1A",
118"(. c #5A7B42",
119"_. c #456C2F",
120":. c #6F5C23",
121"<. c #A78833",
122"[. c #F0C54A",
123"}. c #FFDA52",
124"|. c #FFDE53",
125"1. c #C39032",
126"2. c #886423",
127"3. c #BC9D3B",
128"4. c #F0C84E",
129"5. c #FFD551",
130"6. c #FED751",
131"7. c #FDD550",
132"8. c #EDC74C",
133"9. c #E5BF49",
134"0. c #CCA941",
135"a. c #AB7727",
136"b. c #B1822D",
137"c. c #DCB746",
138"d. c #DFBA47",
139"e. c #EDC64C",
140"f. c #E9C34B",
141"g. c #D6B144",
142"h. c #C19D3D",
143"i. c #AB7C2B",
144"j. c #BC7222",
145"k. c #BB983B",
146"l. c #B09638",
147"m. c #A2621B",
148" ",
149" ",
150" . ",
151" . . ",
152" . + . . . . . . . ",
153" . . . . . . @ # . . $ % & * = - . . ",
154" . ; > , ' ) ! ! ~ . { ] ^ / ( _ : < [ . ",
155" . } | 1 2 3 4 4 3 5 . 6 7 8 9 0 a b c . ",
156" . d e f g h i i h j k . l m n o p q r - . ",
157" . s t u v w x x y z A B . C D E F G H I . ",
158" . s J t K L v v M N O . P Q R S T U V W . ",
159" . s J J t X u Y Z ` . ...+.@.#.$.%.&.*.. ",
160" . =.-.-.-.-.;.>.,.. '.).!.E E ~.{.].^./.. ",
161" . . . . . . (._.. :.<.[.}.|.|.{.%.V 1.$ . ",
162" . -.. . 2.3.4.5.6.7.8.9.0.a.. ",
163" . . . . b.c.d.e.f.g.h.i.. . ",
164" . . $ j.k.l.m.$ . . ",
165" . . . . . . ",
166" ",
167" ",
168" ",
169" ",
170" ",
171" "};
diff --git a/lisp/toolbar/left_arrow.pbm b/lisp/toolbar/left_arrow.pbm
index 6d6f07f0983..044ec82a588 100644
--- a/lisp/toolbar/left_arrow.pbm
+++ b/lisp/toolbar/left_arrow.pbm
Binary files differ
diff --git a/lisp/toolbar/left_arrow.xpm b/lisp/toolbar/left_arrow.xpm
index b3f0ae4ab9a..586fe4489c0 100644
--- a/lisp/toolbar/left_arrow.xpm
+++ b/lisp/toolbar/left_arrow.xpm
@@ -1,35 +1,69 @@
1/* XPM */ 1/* XPM */
2static char * left_arrow_xpm[] = { 2static char * left_arrow_xpm[] = {
3"24 24 9 1", 3"24 24 43 1",
4" c None", 4" c None",
5". c #020202", 5". c #000000",
6"+ c #121A12", 6"+ c #B9D0B9",
7"@ c #78A16E", 7"@ c #CDDECB",
8"# c #86AD7D", 8"# c #B6C7B6",
9"$ c #B2C6AE", 9"$ c #B1C9B0",
10"% c #263222", 10"% c #B3C4B3",
11"& c #E7EDE6", 11"& c #B4CBB2",
12"* c #497241", 12"* c #B5CEB5",
13"= c #B7CCB5",
14"- c #B9CEB7",
15"; c #BAD1BA",
16"> c #BBCFBA",
17", c #BBD0B9",
18"' c #B2C9B0",
19") c #7EAB78",
20"! c #AAC7A8",
21"~ c #B3CAB1",
22"{ c #B0C9B0",
23"] c #B0C9AE",
24"^ c #AEC7AC",
25"/ c #AAC5A8",
26"( c #A9C4A7",
27"_ c #698267",
28": c #2D2D2D",
29"< c #CFDFCC",
30"[ c #ADC8AB",
31"} c #B0C7AE",
32"| c #ADC6AB",
33"1 c #678C63",
34"2 c #9BAD9A",
35"3 c #85AE81",
36"4 c #87AF84",
37"5 c #87B083",
38"6 c #88AF84",
39"7 c #88B085",
40"8 c #86AF82",
41"9 c #547150",
42"0 c #3C5235",
43"a c #5B7950",
44"b c #4A6342",
45"c c #3B5035",
46"d c #415639",
13" ", 47" ",
14" ", 48" ",
15" ", 49" ",
16" ", 50" . ",
17" ", 51" .. ",
18" .. ", 52" .+. ",
19" ..$. ", 53" .@#. ",
20" ..&&$. ", 54" .@$%........ ",
21" ..&&&&$. ", 55" .@&*=-;->,'). ",
22" ..&&&&&&$. ", 56" .@!~{]^///^(_. ",
23" .+&&&&&&&&$. ", 57" :<[}||[!^^}^[1. ",
24" ..$&&&&&&&&&$% ", 58" .23444445645789. ",
25" ..**@@@#####@. ", 59" .0aaaaaaaaaaab. ",
26" ..**@#@###@. ", 60" .0aaaaaaaaaab. ",
27" ..**@#@#@. ", 61" .0aabccccccd. ",
28" ..**@@@. ", 62" .0ab........ ",
29" ..*@*. ", 63" .0b. ",
30" ..*. ", 64" .b. ",
31" .. ", 65" .. ",
32" ", 66" . ",
33" ", 67" ",
34" ", 68" ",
35" ", 69" ",
diff --git a/lisp/toolbar/new.pbm b/lisp/toolbar/new.pbm
index 93415bf901e..2c2ee9de87c 100644
--- a/lisp/toolbar/new.pbm
+++ b/lisp/toolbar/new.pbm
Binary files differ
diff --git a/lisp/toolbar/new.xpm b/lisp/toolbar/new.xpm
index bd45e8962a8..2d4690edd3c 100644
--- a/lisp/toolbar/new.xpm
+++ b/lisp/toolbar/new.xpm
@@ -1,37 +1,154 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * new_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 127 2",
4"24 24 7 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #61b761b7600a", 6"+ c #D3D3D3",
7"X c #828282827474", 7"@ c #F6F6F6",
8"o c #a5d8a5d89550", 8"# c #FFFFFF",
9"O c #d305d305bc3c", 9"$ c #F9F9F9",
10"+ c #ea03ea03d271", 10"% c #DADADA",
11"@ c None", 11"& c #585858",
12/* pixels */ 12"* c #C7C7C7",
13"@@@@@@@@@@@@@@@@@@@@@@@@", 13"= c #D1D1D1",
14"@@@@@@@@@@@@@@@@@@@@@@@@", 14"- c #D6D6D6",
15"@@@@@@@@@@@@@ @@@@@@@@@@", 15"; c #FEFEFE",
16"@@@@@@@@@@@ o @@@@@@@@@", 16"> c #FDFDFD",
17"@@@@@@@@@ oO+ @@@@@@@@@", 17", c #C0C0C0",
18"@@@@@@@ oOOOO+ @@@@@@@@", 18"' c #E1E1E1",
19"@@@@@ oOOOOOO+o @@@@@@@", 19") c #F0F0F0",
20"@@@@ ..OOOOOO+++.@@@@@@@", 20"! c #9B9B9B",
21"@@@@ +.OOOOO+++++ @@@@@@", 21"~ c #FCFCFB",
22"@@@@ ++.OOO++++++o @@@@@", 22"{ c #FBFBFB",
23"@@@@ ++.oOO+++++++ @@@@@", 23"] c #AFAFAE",
24"@@@@ +.oOO+++++++++ @@@@", 24"^ c #E9E9E9",
25"@@@@ oOO++++++++++O @@@", 25"/ c #DFDFDF",
26"@@@@ .OOO+++++++++++O @@", 26"( c #8F8F8F",
27"@@@@ oOO++++++++++++X @@", 27"_ c #FAFAF9",
28"@@@@@ +++++++++++++ @@@", 28": c #F9F9F8",
29"@@@@@ O++++++++++O @@@@@", 29"< c #A4A4A3",
30"@@@@@@.+++++++++X @@@@@@", 30"[ c #F4F4F4",
31"@@@@@@ +++++++O @@@@@@@@", 31"} c #CFCFCF",
32"@@@@@@@ +++++o @@@@@@@@@", 32"| c #A2A2A2",
33"@@@@@@@ O++O. @@@@@@@@@@", 33"1 c #F8F8F7",
34"@@@@@@@@ +o @@@@@@@@@@@@", 34"2 c #F8F7F6",
35"@@@@@@@@@ @@@@@@@@@@@@@", 35"3 c #9E9E9E",
36"@@@@@@@@@@@@@@@@@@@@@@@@" 36"4 c #F7F6F5",
37}; 37"5 c #F6F6F4",
38"6 c #F4F3F2",
39"7 c #DEDDDC",
40"8 c #D3D2D0",
41"9 c #B7B7B5",
42"0 c #9F9E9D",
43"a c #706F6F",
44"b c #65625A",
45"c c #F5F4F3",
46"d c #F2F2F0",
47"e c #E4E4E2",
48"f c #DAD9D7",
49"g c #D8D8D6",
50"h c #CDCCCA",
51"i c #AFAEAC",
52"j c #88847B",
53"k c #F3F3F1",
54"l c #EFEFED",
55"m c #EEEDEB",
56"n c #EDECEA",
57"o c #E9E8E6",
58"p c #D5D4D3",
59"q c #C4C3C2",
60"r c #8F8A81",
61"s c #F6F5F4",
62"t c #F5F5F3",
63"u c #F1F1EF",
64"v c #F1F0EE",
65"w c #ECEBE9",
66"x c #EAE9E7",
67"y c #E5E4E2",
68"z c #E4E3E0",
69"A c #D2D1CE",
70"B c #8D887E",
71"C c #F3F2F1",
72"D c #F0F0EE",
73"E c #F0EFED",
74"F c #EFEEEC",
75"G c #E8E7E5",
76"H c #E5E4E1",
77"I c #E2E1DE",
78"J c #E1DFDC",
79"K c #979288",
80"L c #A49E93",
81"M c #E8E7E4",
82"N c #E7E6E3",
83"O c #E3E2DF",
84"P c #E2E0DD",
85"Q c #E1E0DC",
86"R c #E0DFDB",
87"S c #A19C90",
88"T c #EDEDEB",
89"U c #EBEAE8",
90"V c #E9E8E5",
91"W c #E6E4E1",
92"X c #E3E2DE",
93"Y c #DFDEDA",
94"Z c #DEDDD9",
95"` c #DDDCD8",
96" . c #A19B90",
97".. c #E7E5E2",
98"+. c #E4E3DF",
99"@. c #DCDBD7",
100"#. c #E6E5E2",
101"$. c #E5E4E0",
102"%. c #E2E1DD",
103"&. c #DBD9D5",
104"*. c #D9D7D3",
105"=. c #9F998D",
106"-. c #E4E2DF",
107";. c #DDDBD7",
108">. c #DCDAD6",
109",. c #D8D6D2",
110"'. c #9E988D",
111"). c #EDEDED",
112"!. c #E1E0DD",
113"~. c #E0DEDA",
114"{. c #D8D6D1",
115"]. c #D7D5D1",
116"^. c #9D978B",
117"/. c #E1DFDB",
118"(. c #DEDCD8",
119"_. c #D7D6D1",
120":. c #D5D3CE",
121"<. c #9B958A",
122"[. c #999891",
123"}. c #A39E92",
124"|. c #A39D92",
125"1. c #A39D91",
126"2. c #A29C90",
127"3. c #A19B8F",
128"4. c #9D978C",
129"5. c #9B968A",
130"6. c #676359",
131" ",
132" . . . . . . . . . . . . . ",
133" . + @ # # # # # # # # $ % & . ",
134" . @ # # # # # # # # # # * = - . ",
135" . # # # # # # # ; # ; > , ' ) ! . ",
136" . # # # # # ; > ~ > ~ { ] ^ # / ( . ",
137" . # # # ; > ~ { _ { _ : < ) # [ } | . ",
138" . # ; > ~ { _ : 1 : 1 2 3 . . . . . . . ",
139" . # ~ { _ : 1 2 4 2 4 5 6 7 8 9 0 a b . ",
140" . # _ : 1 2 4 5 c 5 c 6 d e f g h i j . ",
141" . # 1 2 4 5 c 6 k 6 k d l m n o p q r . ",
142" . # s t 6 6 k d u d u v m w x y z A B . ",
143" . # 6 C d D l v E v E F w G H z I J K . ",
144" . # 6 C d D l v E v E F w G H z I J L . ",
145" . # D l l F m n n n n w M N O P Q R S . ",
146" . # T n w w w U V U V V H W X Y Z ` .. ",
147" . # U o o G M M N M N ..+.X R Z ` @. .. ",
148" . # N #.#.#.H W $.W $.+.%.R Z @.&.*.=.. ",
149" . $ z O X -.+.%.X %.X Q Q Z ;.>.*.,.'.. ",
150" . ).!.J Q R %.R Q R Q Y ~.;.>.*.{.].^.. ",
151" . = /.~.Y Z R Z ~.Z ~.(.(.>.>.,._.:.<.. ",
152" . [.}.L |.1.|.S 2.S 2.3. .=.=.4.4.5.6.. ",
153" . . . . . . . . . . . . . . . . . . ",
154" "};
diff --git a/lisp/toolbar/open.pbm b/lisp/toolbar/open.pbm
index 3d2be258a67..d1ddfc51eab 100644
--- a/lisp/toolbar/open.pbm
+++ b/lisp/toolbar/open.pbm
Binary files differ
diff --git a/lisp/toolbar/open.xpm b/lisp/toolbar/open.xpm
index 62b70e7468b..6b95c7e476d 100644
--- a/lisp/toolbar/open.xpm
+++ b/lisp/toolbar/open.xpm
@@ -1,34 +1,200 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * open_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 173 2",
4"24 24 4 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #999990907b7b", 6"+ c #010100",
7"X c #fffffefef7f7", 7"@ c #B5B8A5",
8"o c None", 8"# c #E4E7D2",
9/* pixels */ 9"$ c #878A76",
10"oooooooooooooooooooooooo", 10"% c #33342B",
11"oooooooooooooooooooooooo", 11"& c #0B0B0B",
12"oooooooooooooooooooooooo", 12"* c #E2E5CF",
13"oooooooooooooooooooooooo", 13"= c #CFD4AF",
14"oooooooooooooooooooooooo", 14"- c #CED3AE",
15"oooooooooooooo oooooooo", 15"; c #B2B696",
16"ooooooooooo .. ooooooo", 16"> c #2D2D25",
17"oooo oo ....XXo ooo", 17", c #23241D",
18"ooo .. ....XXXX .. ooo", 18"' c #9D9F90",
19"ooo .....XXXXX .... ooo", 19") c #C6CAA6",
20"oooo ..XXXXX ...... ooo", 20"! c #C4C9A5",
21"oooo ..XXX ........ ooo", 21"~ c #C6CBA7",
22"ooooo .XX .......... ooo", 22"{ c #C7CCA8",
23"ooooo ..X .......... ooo", 23"] c #C9CEA9",
24"oooooo .X .......... ooo", 24"^ c #555847",
25"oooooo .. ........ oooo", 25"/ c #1A1B15",
26"ooooooo . ...... oooooo", 26"( c #20201A",
27"ooooooo . ..... oooooooo", 27"_ c #D4D6C2",
28"oooooooo ... ooooooooo", 28": c #BEC2A0",
29"oooooooo . ooooooooooo", 29"< c #B3B896",
30"ooooooooo ooooooooooooo", 30"[ c #B0B595",
31"oooooooooooooooooooooooo", 31"} c #B3B797",
32"oooooooooooooooooooooooo", 32"| c #B6BB99",
33"oooooooooooooooooooooooo" 33"1 c #BBC09E",
34}; 34"2 c #BCC19F",
35"3 c #81856C",
36"4 c #3E3F32",
37"5 c #010101",
38"6 c #DADDC8",
39"7 c #AFB494",
40"8 c #AAAF8F",
41"9 c #A3A789",
42"0 c #A6AA8B",
43"a c #A9AD8E",
44"b c #A7AB8D",
45"c c #A4A88A",
46"d c #A1A588",
47"e c #AAAD96",
48"f c #B3B5A5",
49"g c #B8BBAA",
50"h c #BABCAB",
51"i c #C1C3B2",
52"j c #C7CAB7",
53"k c #CACDBB",
54"l c #BABDA8",
55"m c #0C0C09",
56"n c #DDDFCB",
57"o c #969B7E",
58"p c #9DA286",
59"q c #95987C",
60"r c #96997E",
61"s c #9A9D81",
62"t c #999D80",
63"u c #9DA184",
64"v c #A5AA8B",
65"w c #A4A98A",
66"x c #A3A889",
67"y c #A2A588",
68"z c #A2A587",
69"A c #9FA386",
70"B c #9B9E83",
71"C c #898D74",
72"D c #D8DBC9",
73"E c #84866E",
74"F c #7D8169",
75"G c #151612",
76"H c #D7DAC9",
77"I c #797D67",
78"J c #3D3F34",
79"K c #E0E0D9",
80"L c #EBEDDD",
81"M c #E8EBD9",
82"N c #E7EAD8",
83"O c #E3E6D4",
84"P c #DEE1D0",
85"Q c #DADCCC",
86"R c #DADCD1",
87"S c #2B2C28",
88"T c #D7DAC6",
89"U c #6F735E",
90"V c #0D0D0D",
91"W c #F4F4EC",
92"X c #CACFAB",
93"Y c #C6CBA8",
94"Z c #C2C6A4",
95"` c #ABB091",
96" . c #23251E",
97".. c #494B3D",
98"+. c #DCDCD4",
99"@. c #EAECDD",
100"#. c #CDD2AD",
101"$. c #CCD1AC",
102"%. c #CACFAA",
103"&. c #BABF9D",
104"*. c #B5B999",
105"=. c #81836C",
106"-. c #070806",
107";. c #D5D8C4",
108">. c #161616",
109",. c #F2F2EA",
110"'. c #C9CEAA",
111"). c #C8CDA9",
112"!. c #C4C9A6",
113"~. c #C1C5A3",
114"{. c #BCC09F",
115"]. c #B6BB9A",
116"^. c #B0B494",
117"/. c #9DA185",
118"(. c #535445",
119"_. c #B6B8A7",
120":. c #747470",
121"<. c #ECECE2",
122"[. c #C3C8A5",
123"}. c #C2C7A4",
124"|. c #C0C5A2",
125"1. c #BFC4A1",
126"2. c #BDC2A0",
127"3. c #B9BD9C",
128"4. c #B9BE9D",
129"5. c #A9AD8F",
130"6. c #A3A78A",
131"7. c #80836D",
132"8. c #020201",
133"9. c #A6A998",
134"0. c #B8BC9B",
135"a. c #AFB394",
136"b. c #ACB091",
137"c. c #A8AC8E",
138"d. c #A6AA8C",
139"e. c #9FA286",
140"f. c #9B9F83",
141"g. c #9A9D82",
142"h. c #8A8D75",
143"i. c #4F5243",
144"j. c #070705",
145"k. c #9E9F91",
146"l. c #E5E6DA",
147"m. c #ADB192",
148"n. c #A5A98C",
149"o. c #9FA387",
150"p. c #999D81",
151"q. c #95987E",
152"r. c #92957B",
153"s. c #8C8F76",
154"t. c #8A8D74",
155"u. c #71735F",
156"v. c #080908",
157"w. c #E3E5D9",
158"x. c #C0C3AF",
159"y. c #94987C",
160"z. c #8F9379",
161"A. c #8B8F75",
162"B. c #8A8E74",
163"C. c #888C73",
164"D. c #858970",
165"E. c #868971",
166"F. c #82866E",
167"G. c #80836C",
168"H. c #7D8069",
169"I. c #797C66",
170"J. c #727560",
171"K. c #717460",
172"L. c #71745F",
173"M. c #6A6D59",
174"N. c #434538",
175"O. c #080907",
176"P. c #050504",
177" ",
178" ",
179" ",
180" . . . . . . . ",
181" + @ # # # # # $ % ",
182" & * = = = - - ; > ",
183", ' * ) ! ~ { ] ] ^ / ",
184"( _ : < [ } | 1 2 3 4 5 . . . . . . . ",
185", 6 7 8 9 0 8 a b c d e f g h i j k l . ",
186"m n o p q r s t r u v w x y 9 z A B C . ",
187". D E F G . . . . . . . . . . . . . . . 5 5 ",
188". H I J K L M M M M M M M M M M M N O P Q R S ",
189". T U V W = = = = = = = = = - - - X Y Z 1 ` . ",
190". T ..+.@.#.- - #.- #.#.#.#.#.$.%.Y Z &.*.=.-. ",
191". ;.>.,.X %.X %.'.%.'.{ ).).Y !.~.{.].^./.(.m ",
192". _.:.<.[.}.}.Z |.Z 1.2.|.2.3.4.} [ 5.6.7.8. ",
193". 9.+.0.0.*.} } [ [ a.a.a.b.c.d.e.f.g.h.i.j. ",
194". k.l.m.5.d.n.6.6.d o.e.f.p.q.r.s.t.t.u.v. ",
195". w.x.y.z.A.B.C.C.D.E.F.G.H.I.J.K.L.M.N.O. ",
196" . . . . . . . . . . . . . . . . . . P. ",
197" ",
198" ",
199" ",
200" "};
diff --git a/lisp/toolbar/paste.pbm b/lisp/toolbar/paste.pbm
index e51819c682a..e91a80b25d8 100644
--- a/lisp/toolbar/paste.pbm
+++ b/lisp/toolbar/paste.pbm
Binary files differ
diff --git a/lisp/toolbar/paste.xpm b/lisp/toolbar/paste.xpm
index bc4fc3b965e..cdd86366d66 100644
--- a/lisp/toolbar/paste.xpm
+++ b/lisp/toolbar/paste.xpm
@@ -1,35 +1,116 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * paste_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 89 1",
4"24 24 5 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #62ee62ee62ee", 6"+ c #B9B9B9",
7"X c Gray68", 7"@ c #FEFEFE",
8"o c Gray82", 8"# c #F9F9F9",
9"O c None", 9"$ c #757575",
10/* pixels */ 10"% c #F5F5E8",
11"OOOOOOOOOOOOOOOOOOOOOOOO", 11"& c #565651",
12"OOOOOOOOOOOOOOOOOOOOOOOO", 12"* c #FFFFFF",
13"OOOOOOOOOOOOOOOOOOOOOOOO", 13"= c #A0A0A0",
14"OOOOOOOOO OOOOOOOOOOOO", 14"- c #939393",
15"OOOOOOO ooo OOOOOO OOOO", 15"; c #7C7C7C",
16"OOOOO ooooo OOO OOO", 16"> c #C5C5BB",
17"OOO oo. .Xoo OO OOO", 17", c #CFC6A0",
18"OO ooo.oX..oo OOOOO OOOO", 18"' c #D7CEAA",
19"OO ooo.X..oooo OOOOOOOOO", 19") c #ADA689",
20"OOO oo..Xooooo O OOOOOO", 20"! c #4B483C",
21"OOO oooooooooo oX OOOOO", 21"~ c #6D6D6D",
22"OOOO ooooooo XXoo OOOOO", 22"{ c #6C6C6C",
23"OOOO ooooooo o.XooX OOOO", 23"] c #A9A9A9",
24"OOOOO oooooo o.Xooo OOOO", 24"^ c #3D3A30",
25"OOOOO oooooo .XooooX OOO", 25"/ c #979178",
26"OOOOOO ooooX XooooooX OO", 26"( c #C1B898",
27"OOOOOO XXOXX Xooooooo OO", 27"_ c #8A793D",
28"OOOOOOO XXXX oooooooX O", 28": c #C3BB9A",
29"OOOOOOO XX O XooooX OO", 29"< c #AFA78A",
30"OOOOOOOO OOOO ooX OOOO", 30"[ c #444236",
31"OOOOOOOOOOOOOO X OOOOOO", 31"} c #FAFAFA",
32"OOOOOOOOOOOOOOO OOOOOOOO", 32"| c #EFEFEF",
33"OOOOOOOOOOOOOOOOOOOOOOOO", 33"1 c #C7C7C7",
34"OOOOOOOOOOOOOOOOOOOOOOOO" 34"2 c #D8D8D8",
35}; 35"3 c #D2D2D2",
36"4 c #7B7B7B",
37"5 c #302E26",
38"6 c #89846C",
39"7 c #C4BC9A",
40"8 c #847235",
41"9 c #C5C5C5",
42"0 c #A7A7A7",
43"a c #ADADAD",
44"b c #9A9A9A",
45"c c #9B9B9B",
46"d c #868686",
47"e c #424242",
48"f c #847033",
49"g c #C9C09E",
50"h c #464337",
51"i c #35332A",
52"j c #2D2B23",
53"k c #C6BE9D",
54"l c #826F33",
55"m c #7F7964",
56"n c #4C493C",
57"o c #171612",
58"p c #13120F",
59"q c #3E3B31",
60"r c #282210",
61"s c #474438",
62"t c #B3B3B3",
63"u c #D6D6D6",
64"v c #B7AE90",
65"w c #B1AA8C",
66"x c #37352B",
67"y c #151410",
68"z c #8F8F8F",
69"A c #989898",
70"B c #C6C6C6",
71"C c #B9B293",
72"D c #11100D",
73"E c #434035",
74"F c #636363",
75"G c #767676",
76"H c #AAA48B",
77"I c #A5A086",
78"J c #A19A7F",
79"K c #312F26",
80"L c #AFA88C",
81"M c #050403",
82"N c #12110E",
83"O c #A9A489",
84"P c #A39E85",
85"Q c #EBE7D0",
86"R c #D2C9A5",
87"S c #A29053",
88"T c #8E7C3D",
89"U c #88793B",
90"V c #806C2F",
91"W c #78652B",
92"X c #251F0C",
93" .... ",
94" ......+@#$...... ",
95".%%%%%&*=-;&>%%%,. ",
96".%''')!*~{]^/(''_. ",
97".%::<[}|123456<78. ",
98".%''!900abcde!)'f. ",
99".%g:6hijjjjj56<kl. ",
100".%'''////////(''l. ",
101".%g::::mnopppp^qr.... ",
102".%'''''st***********u. ",
103".%vwwwwx*************. ",
104".%'''''y*0zzA**Bz*zB*. ",
105".%CwwwwD*************. ",
106".%'''''E*~F*GzzB*Bz**. ",
107".%HIJJJK*************. ",
108".%'''''E*0zz*zzzB*Az*. ",
109".%LIJJJM*************. ",
110".%'''''N*~F*GzzB*Bz**. ",
111".%OPJJJK*************. ",
112".Q'''''E*0zz*zzzB*Az*. ",
113".RSTUVWX*************. ",
114" .......u***********u. ",
115" ............. ",
116" "};
diff --git a/lisp/toolbar/preferences.pbm b/lisp/toolbar/preferences.pbm
index 08819766ec0..e266d368559 100644
--- a/lisp/toolbar/preferences.pbm
+++ b/lisp/toolbar/preferences.pbm
Binary files differ
diff --git a/lisp/toolbar/preferences.xpm b/lisp/toolbar/preferences.xpm
index e9a7656bcdc..3cdc884dd4d 100644
--- a/lisp/toolbar/preferences.xpm
+++ b/lisp/toolbar/preferences.xpm
@@ -1,35 +1,114 @@
1/* XPM */ 1/* XPM */
2static char * preferences_xpm[] = { 2static char * preferences_xpm[] = {
3"24 24 8 1", 3"24 24 87 1",
4" c None", 4" c None",
5". c #000000", 5". c #000000",
6"+ c #E1E0E0", 6"+ c #BAB5AB",
7"@ c #D7C99B", 7"@ c #D0CDC6",
8"# c #9A6C4E", 8"# c #88857D",
9"$ c #A4A199", 9"$ c #C9C6BE",
10"% c #858579", 10"% c #CCC8C1",
11"& c #AD8E30", 11"& c #E5E3E0",
12" ", 12"* c #FFFFFF",
13" ", 13"= c #757575",
14" ", 14"- c #2E2E2E",
15" .. ", 15"; c #F6F5F5",
16" ..++. . ", 16"> c #CCCCCC",
17" ..++++. .@. ", 17", c #AFAFAF",
18" ...+++++++. .@#. ", 18"' c #D3D1CB",
19" ..++++++++++. .@#. ", 19") c #C1C0BF",
20" .++++++#++++++.@#. ", 20"! c #F0EFED",
21" .+++++#++++++.@#. ", 21"~ c #797772",
22" .++#+#+++++.@#. ", 22"{ c #DCDCDC",
23" .++#$#++++.@#.+. ", 23"] c #A5A19C",
24" .++##+++.@#.++@. ", 24"^ c #EAE9E5",
25" .++++++.@#.+++@%. ", 25"/ c #F3F1F0",
26" .++++&+..@$$$$%. ", 26"( c #EDEDED",
27" .++++..$$$$$$@. ", 27"_ c #A19D96",
28" .+$%%$+++++.. ", 28": c #C1BDB4",
29" .+++++++++. ", 29"< c #DBD8D3",
30" .++++++.. ", 30"[ c #D9D6D1",
31" .++++@. ", 31"} c #89857E",
32" .++.. ", 32"| c #FCFCFC",
33" .. ", 33"1 c #EAE9E6",
34" ", 34"2 c #F5F4F3",
35"3 c #C6C2BA",
36"4 c #F0EFEE",
37"5 c #F4F4F3",
38"6 c #CBC7C0",
39"7 c #ECECEB",
40"8 c #676560",
41"9 c #54524D",
42"0 c #777676",
43"a c #797978",
44"b c #85827E",
45"c c #79756F",
46"d c #7590AE",
47"e c #A4BAD0",
48"f c #90A6BE",
49"g c #9F9F9E",
50"h c #BEBDBC",
51"i c #B8B4AD",
52"j c #87837C",
53"k c #D3DFEA",
54"l c #A2AEBC",
55"m c #9DB6CE",
56"n c #637B95",
57"o c #E2E2E2",
58"p c #EEEEED",
59"q c #849CB6",
60"r c #D7E2ED",
61"s c #8D98A5",
62"t c #9DB8D2",
63"u c #607791",
64"v c #EDEDEC",
65"w c #99ADC3",
66"x c #DFE7F0",
67"y c #8193A9",
68"z c #586D84",
69"A c #5B7189",
70"B c #F1F1F1",
71"C c #EEEDEB",
72"D c #A7A6A5",
73"E c #726F6A",
74"F c #A1B4C8",
75"G c #EEF3F6",
76"H c #60768F",
77"I c #DEDDDC",
78"J c #787776",
79"K c #4E4E4D",
80"L c #91A6BE",
81"M c #F0F4F7",
82"N c #97A5B6",
83"O c #BFBEBD",
84"P c #AAAAA9",
85"Q c #ACACAB",
86"R c #B0C6DB",
87"S c #EDF2F6",
88"T c #818A95",
89"U c #6C85A1",
90"V c #C0D1E2",
91" .. ",
92" .+@#. ",
93" .$%+. .. ",
94" .&$. .*=. ",
95" .. -;$. .*>,. ",
96" .' ..)!+~. .{,. ",
97" .]%%^/+++. .(.. ",
98" ._:%$<[+}. .|. ",
99" .....123}..>. ",
100" .456.,. ",
101" .7.,.. ",
102" .,.89. ",
103" ....,.0abc. ",
104" .def.. .ghij. ",
105" .dklmn. .op6}. ",
106" .qrsntu. .v/$}. ",
107" .wxyztdA. .BCDE..",
108" .FGyHtdA. .IJK,.",
109" .LMNHtdA. .OPQ.",
110" .RSTtdA.. ... ",
111" .UtVLA.. ",
112" .UUn.. ",
113" ... ",
35" "}; 114" "};
diff --git a/lisp/toolbar/print.pbm b/lisp/toolbar/print.pbm
index 63cea6d84d2..be20a9142cd 100644
--- a/lisp/toolbar/print.pbm
+++ b/lisp/toolbar/print.pbm
Binary files differ
diff --git a/lisp/toolbar/print.xpm b/lisp/toolbar/print.xpm
index 06dee7c26bf..95f2f400800 100644
--- a/lisp/toolbar/print.xpm
+++ b/lisp/toolbar/print.xpm
@@ -1,36 +1,202 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * print_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 175 2",
4"24 24 6 1", 4" c None",
5" c #043904390439", 5". c #000000",
6". c #40403f3f3f3f", 6"+ c #C7C7C7",
7"X c #5a1a5a0458f3", 7"@ c #FAFAFA",
8"o c #a74da686a5ec", 8"# c #FCFCFC",
9"O c #e88de7c9e66c", 9"$ c #FBFBFB",
10"+ c None", 10"% c #F8F8F8",
11/* pixels */ 11"& c #AFAFAF",
12"++++++++++++++++++++++++", 12"* c #F9F9F9",
13"++++++++++++++++++++++++", 13"= c #E5E5E5",
14"++++++++++++++++++++++++", 14"- c #E3E3E3",
15"++++++++++++ ++++++++++", 15"; c #E2E2E2",
16"+++++++++++ OOX +++++++", 16"> c #E0E0E0",
17"++++++++++ OOOOOO. +++", 17", c #DFDFDF",
18"+++++++++ OOOOOOOOOo +++", 18"' c #DCDCDC",
19"+++++++++.OOOOOOOOO ++++", 19") c #DBDBDB",
20"+++++++ oOOOOOOOOX+++++", 20"! c #B6B6B6",
21"+++++ OooXOOOOOOo ++++", 21"~ c #6B6B6B",
22"+++ OOOOOoXXooOO.XX ++", 22"{ c #676767",
23"++ ooOOOOOOOOoXXX.X.. ++", 23"] c #818181",
24"++ ooooOOOOOOOOOO.... ++", 24"^ c #E7E7E7",
25"++ ooooooOOOOOOO..... ++", 25"/ c #606060",
26"++ XooooooooOOO...... ++", 26"( c #A0A0A0",
27"++ X.XoooooooX....... ++", 27"_ c #DADADA",
28"++ XX...XooooX...... ++", 28": c #E1E1E1",
29"+++ XXXX...XX..... ++++", 29"< c #B7B7B7",
30"+++++ .XXXXX... +++++", 30"[ c #FDFDFD",
31"++++++++ .XX.. +++++++", 31"} c #EFEFEF",
32"+++++++++++ ++++++++", 32"| c #EEEEEE",
33"++++++++++++++++++++++++", 33"1 c #EDEDED",
34"++++++++++++++++++++++++", 34"2 c #ECECEC",
35"++++++++++++++++++++++++" 35"3 c #EBEBEB",
36}; 36"4 c #E9E9E9",
37"5 c #E8E8E8",
38"6 c #BFBFBF",
39"7 c #8A8A8A",
40"8 c #6A6A6A",
41"9 c #9E9E9E",
42"0 c #F6F6F6",
43"a c #909090",
44"b c #A2A2A2",
45"c c #AAAAAA",
46"d c #F4F4F4",
47"e c #CECECE",
48"f c #ADADAD",
49"g c #AEAEAE",
50"h c #BEBEBE",
51"i c #A6A6A6",
52"j c #CDCDCD",
53"k c #F5F5F5",
54"l c #DEDEDE",
55"m c #DDDDDD",
56"n c #C9C9C9",
57"o c #878787",
58"p c #888888",
59"q c #D0D0D0",
60"r c #6E6E6E",
61"s c #797979",
62"t c #D1D1D1",
63"u c #A1A1A1",
64"v c #B3B3B3",
65"w c #FFFFFF",
66"x c #CACACA",
67"y c #A7A7A7",
68"z c #A5A5A5",
69"A c #A4A4A4",
70"B c #A3A3A3",
71"C c #87847C",
72"D c #EAE8E3",
73"E c #8D8982",
74"F c #53524C",
75"G c #807D74",
76"H c #AAA9A5",
77"I c #BAB5AB",
78"J c #F3F3F3",
79"K c #C3C1BD",
80"L c #8B8B89",
81"M c #E6E5E1",
82"N c #F9F9F8",
83"O c #FAFAF9",
84"P c #F9F9F7",
85"Q c #F7F6F5",
86"R c #F7F7F4",
87"S c #F6F5F4",
88"T c #F2F1EE",
89"U c #F0EFEC",
90"V c #E5E5E4",
91"W c #9F9F9F",
92"X c #DFDED9",
93"Y c #A4A3A1",
94"Z c #6C6B6A",
95"` c #F5F4F3",
96" . c #D5D5D5",
97".. c #D3D3D3",
98"+. c #D4D4D3",
99"@. c #D4D4D4",
100"#. c #A9A9A9",
101"$. c #B5B5B5",
102"%. c #CDCDCB",
103"&. c #B5B5B4",
104"*. c #DCDAD3",
105"=. c #6B6B6A",
106"-. c #999896",
107";. c #918F87",
108">. c #999895",
109",. c #E6E4E1",
110"'. c #F0EEEC",
111"). c #FAF9F9",
112"!. c #F9F8F7",
113"~. c #F8F7F6",
114"{. c #F8F8F7",
115"]. c #F4F3F1",
116"^. c #F2F1EF",
117"/. c #565655",
118"(. c #858482",
119"_. c #9C9B99",
120":. c #6B6A68",
121"<. c #585858",
122"[. c #5E5C57",
123"}. c #524F4B",
124"|. c #4A4845",
125"1. c #4B4A46",
126"2. c #4B4946",
127"3. c #4A4844",
128"4. c #494743",
129"5. c #484642",
130"6. c #474541",
131"7. c #464440",
132"8. c #514F4B",
133"9. c #53514E",
134"0. c #7B7A77",
135"a. c #797771",
136"b. c #949391",
137"c. c #989694",
138"d. c #868480",
139"e. c #6E6C66",
140"f. c #706D67",
141"g. c #5C5955",
142"h. c #67645F",
143"i. c #5B5954",
144"j. c #585651",
145"k. c #5D5B56",
146"l. c #595652",
147"m. c #53504C",
148"n. c #575450",
149"o. c #595752",
150"p. c #5C5956",
151"q. c #5B5956",
152"r. c #61615E",
153"s. c #696861",
154"t. c #77756F",
155"u. c #7E7B77",
156"v. c #979690",
157"w. c #96938D",
158"x. c #807E77",
159"y. c #7D7A74",
160"z. c #787770",
161"A. c #716F6A",
162"B. c #6E6C67",
163"C. c #595753",
164"D. c #63615C",
165"E. c #686661",
166"F. c #6F6E68",
167"G. c #6D6C66",
168"H. c #72716B",
169"I. c #76746F",
170"J. c #6A6963",
171"K. c #8B8880",
172"L. c #B2AFA8",
173"M. c #B6B3AD",
174"N. c #BFBDB6",
175"O. c #BDBBB4",
176"P. c #B0AEA6",
177"Q. c #ABA8A2",
178"R. c #9C9991",
179" ",
180" . . . . . . . . . . . . ",
181" . + @ # # # # # # # $ % & . ",
182" . * = - - - ; > , , ' ) ! . ",
183" . # ~ { ] ^ / ( _ : > > < . ",
184" . [ } | 1 1 | 2 2 3 4 5 6 . ",
185" . [ 7 8 9 0 a b 4 c a d + . ",
186" . [ # # # # $ $ # # $ $ e . ",
187" . [ f g = h % h i j 3 # j . ",
188" . k l l l m l l , l 5 : n . ",
189" . . @ o ~ p q r s t p u q v . . ",
190" . w . x y z A z z i B b u u 9 . C . ",
191" . w D E F . . . . . . . . . . G C H I . ",
192" . w w J w w w w w w w w w w w w w w w w D . ",
193" . K L M N O N P Q R O O S T T U V D W X I . ",
194" . Y Z ` h .! ..! +.< @.#...$.%.&.*.=.-.;.. ",
195" . >.=.,.'.Q N @ ).N !.~.{.{.].].].^./.(.;.. ",
196" . _.:.<.[.}.|.1.2.2.2.3.4.5.6.4.7.8.9.0.a.. ",
197" . b.c.d.e.f.g.h.i.j.i.k.l.m.n.o.p.q.r.s.t.. ",
198" . u.v.w.;.x.y.z.t.A.t.A.B.C.D.E.F.G.H.I.J.. ",
199" . . . . . . . . . . . . . . . . . . . . ",
200" . K.L.M.N.N.N.N.N.O.P.L.Q.P.R.R.R.G G . ",
201" . . . . . . . . . . . . . . . . . . ",
202" "};
diff --git a/lisp/toolbar/right_arrow.pbm b/lisp/toolbar/right_arrow.pbm
index 583f2bd13fa..4be953e4b2e 100644
--- a/lisp/toolbar/right_arrow.pbm
+++ b/lisp/toolbar/right_arrow.pbm
Binary files differ
diff --git a/lisp/toolbar/right_arrow.xpm b/lisp/toolbar/right_arrow.xpm
index 9e0b14749a8..da8156879d6 100644
--- a/lisp/toolbar/right_arrow.xpm
+++ b/lisp/toolbar/right_arrow.xpm
@@ -1,35 +1,67 @@
1/* XPM */ 1/* XPM */
2static char * right_arrow_xpm[] = { 2static char * right_arrow_xpm[] = {
3"24 24 9 1", 3"24 24 41 1",
4" c None", 4" c None",
5". c #020202", 5". c #000000",
6"+ c #1A1A1A", 6"+ c #8CA782",
7"@ c #779D6D", 7"@ c #B1CDAE",
8"# c #88AE80", 8"# c #77A16E",
9"$ c #97B78B", 9"$ c #B4CEB1",
10"% c #9EBA92", 10"% c #ACC8A9",
11"& c #E9EFE8", 11"& c #709867",
12"* c #3C5936", 12"* c #C1D6BD",
13"= c #BDD3B8",
14"- c #BFD4BB",
15"; c #C2D7BE",
16"> c #B0CAAD",
17", c #B2CBB0",
18"' c #AAC7A8",
19") c #0F1308",
20"! c #AEC5A8",
21"~ c #AEC8AD",
22"{ c #ABC7A8",
23"] c #AAC6A7",
24"^ c #A8C6A5",
25"/ c #ADC8AD",
26"( c #A8C7A8",
27"_ c #A5C4A3",
28": c #7F9F76",
29"< c #A6BFA0",
30"[ c #ABC7AA",
31"} c #A7C5A4",
32"| c #A9C7A6",
33"1 c #AFC8AD",
34"2 c #A4C3A2",
35"3 c #6B9060",
36"4 c #778E6F",
37"5 c #698D60",
38"6 c #6B9063",
39"7 c #445B2C",
40"8 c #6B8661",
41"9 c #5B7950",
42"0 c #6C8562",
43"a c #65815C",
44"b c #506B46",
13" ", 45" ",
14" ", 46" ",
15" ", 47" ",
16" ", 48" . ",
17" ", 49" .. ",
18" .. ", 50" .+. ",
19" .&.. ", 51" .@#. ",
20" .&&&.. ", 52" ........$%&. ",
21" .&&&&&.. ", 53" .*=-;;;;>,'&) ",
22" .&&&&&&&.. ", 54" .!~{{{]^'/(_:. ",
23" .&&&&&&&&&+. ", 55" .<[^}^|{%'{123. ",
24" +&&&&&&&&&&%.. ", 56" .45666666666657. ",
25" .%#######@@*.. ", 57" .8999999999997. ",
26" .%#####@@*.. ", 58" .099999999997. ",
27" .%###@@*.. ", 59" .abbbbbb9997. ",
28" .$#@@*.. ", 60" ........b97. ",
29" .#@*.. ", 61" .b7. ",
30" .*.. ", 62" .7. ",
31" .. ", 63" .. ",
32" ", 64" . ",
33" ", 65" ",
34" ", 66" ",
35" ", 67" ",
diff --git a/lisp/toolbar/save.pbm b/lisp/toolbar/save.pbm
index e153a144432..7bbd296650c 100644
--- a/lisp/toolbar/save.pbm
+++ b/lisp/toolbar/save.pbm
Binary files differ
diff --git a/lisp/toolbar/save.xpm b/lisp/toolbar/save.xpm
index 8bdb36315be..cfa651dfaf3 100644
--- a/lisp/toolbar/save.xpm
+++ b/lisp/toolbar/save.xpm
@@ -1,35 +1,247 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * save_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 220 2",
4"24 24 5 1", 4" c None",
5" c #01be01be01be", 5". c #000000",
6". c #62dd62dd62dd", 6"+ c #C3D7F4",
7"X c Gray62", 7"@ c #A9CDE5",
8"o c #e625e625e625", 8"# c #75757A",
9"O c None", 9"$ c #EFC5BB",
10/* pixels */ 10"% c #F1C8BE",
11"OOOOOOOOOOOOOOOOOOOOOOOO", 11"& c #F0C6BC",
12"OOOOOOOOOOOOOOOOOOOOOOOO", 12"* c #EEBCB2",
13"OOOOOOOOOOOOOOOOOOOOOOOO", 13"= c #EEBEB5",
14"OOOOOOOOOOOOOOOOOOOOOOOO", 14"- c #EEC1B8",
15"OOOOOOOOOOOOO OOOOOOOOO", 15"; c #EDBFB6",
16"OOOOOOOOOOO X. OOOOOOOO", 16"> c #E9B7AD",
17"OOOOOOOOO oXoX OOOOOOOO", 17", c #E9B8AF",
18"OOOOOOO oXoooXX OOOOOOO", 18"' c #E9B9B1",
19"OOOOO oXoooooo. OOOOOOO", 19") c #E5BFBA",
20"OOO XoooooooooX OOOOOO", 20"! c #737277",
21"OO XooooooooooooX OOOOOO", 21"~ c #B3CDE3",
22"OO .XoooooooooooX. OOOOO", 22"{ c #A1BED6",
23"OOO XooooooooooXXX OOOOO", 23"] c #BBD6E8",
24"OOO .XoooooooXX..X. OOOO", 24"^ c #8AAAC5",
25"OOOO XoooooXX...X.X OOOO", 25"/ c #605F68",
26"OOOO .XooXX.Xoo.X.X. OOO", 26"( c #E08D7E",
27"OOOOO XXX.oooooX.X. OOO", 27"_ c #E0826E",
28"OOOOO .XXoo.ooooXX OOO", 28": c #E0806E",
29"OOOOOO XX.o XooX. OOOOO", 29"< c #DC7A68",
30"OOOOOO .XXooXoX OOOOOOO", 30"[ c #DC8171",
31"OOOOOOO .X.oX OOOOOOOOO", 31"} c #DA7868",
32"OOOOOOOO OOOOOOOOOOO", 32"| c #D48173",
33"OOOOOOOOOOOOOOOOOOOOOOOO", 33"1 c #D47D6E",
34"OOOOOOOOOOOOOOOOOOOOOOOO" 34"2 c #CE7265",
35}; 35"3 c #CF7264",
36"4 c #CE7567",
37"5 c #C4675B",
38"6 c #C36558",
39"7 c #626169",
40"8 c #87A3B7",
41"9 c #567187",
42"0 c #BAD5E9",
43"a c #88A7C3",
44"b c #686670",
45"c c #C8817B",
46"d c #CB7C74",
47"e c #CB7A73",
48"f c #CB7B73",
49"g c #CC7C72",
50"h c #CB7D73",
51"i c #BF6B64",
52"j c #CC7A70",
53"k c #C16A62",
54"l c #CC7C73",
55"m c #C2655B",
56"n c #C36459",
57"o c #BA6C6A",
58"p c #819EB6",
59"q c #547086",
60"r c #B6D3E7",
61"s c #87ABC1",
62"t c #737373",
63"u c #FFFFFF",
64"v c #83A0B8",
65"w c #526C80",
66"x c #B9D3E7",
67"y c #85A4BF",
68"z c #4F697C",
69"A c #B9D3E6",
70"B c #84A3BF",
71"C c #CECECE",
72"D c #CDCDCD",
73"E c #BFBFBF",
74"F c #88A4BB",
75"G c #486276",
76"H c #B7D2E7",
77"I c #82A0BB",
78"J c #636363",
79"K c #465E70",
80"L c #B5CAE5",
81"M c #7FA2B9",
82"N c #87A3BA",
83"O c #455C6D",
84"P c #AECCE5",
85"Q c #7DA0B6",
86"R c #C5C5C5",
87"S c #546069",
88"T c #B0D1E4",
89"U c #83A1B6",
90"V c #735B5B",
91"W c #515C64",
92"X c #AACEE3",
93"Y c #7B9BB2",
94"Z c #7A8E9A",
95"` c #7A7A7A",
96" . c #6B6F72",
97".. c #6F6F6F",
98"+. c #696969",
99"@. c #6F777E",
100"#. c #86A2B9",
101"$. c #3A515D",
102"%. c #A9C9E2",
103"&. c #7494AF",
104"*. c #829FB7",
105"=. c #7F9DB6",
106"-. c #7E9CB5",
107";. c #7998B2",
108">. c #85A1B8",
109",. c #8CA7BD",
110"'. c #8AA5BB",
111"). c #364A59",
112"!. c #ABC4E2",
113"~. c #7294AD",
114"{. c #6F90AC",
115"]. c #7192AE",
116"^. c #414A4E",
117"/. c #424A51",
118"(. c #525B63",
119"_. c #626F79",
120":. c #5F6C76",
121"<. c #5C6971",
122"[. c #5A666F",
123"}. c #58636B",
124"|. c #57636A",
125"1. c #3B5360",
126"2. c #39424B",
127"3. c #7897B3",
128"4. c #A4B9CB",
129"5. c #364853",
130"6. c #AAC9E2",
131"7. c #7091AA",
132"8. c #6F8FA7",
133"9. c #4A5359",
134"0. c #97938C",
135"a. c #DFDDDA",
136"b. c #E3E1DE",
137"c. c #EBEAE8",
138"d. c #EAE9E7",
139"e. c #CFCEC9",
140"f. c #C9C6C0",
141"g. c #9B968E",
142"h. c #566168",
143"i. c #4B657A",
144"j. c #54738C",
145"k. c #AAC6DD",
146"l. c #34464E",
147"m. c #AAC9E1",
148"n. c #6C8EA6",
149"o. c #6C8CA4",
150"p. c #40474D",
151"q. c #DAD8D3",
152"r. c #E7E6E2",
153"s. c #67655E",
154"t. c #524F47",
155"u. c #D9D7D4",
156"v. c #C7C5BF",
157"w. c #C0BCB5",
158"x. c #B8B3AB",
159"y. c #434C54",
160"z. c #4D697F",
161"A. c #4F6F84",
162"B. c #B3CADC",
163"C. c #313E49",
164"D. c #A8C8E1",
165"E. c #6B8DA6",
166"F. c #728FA4",
167"G. c #E2E1DD",
168"H. c #F0EFEC",
169"I. c #CDCAC6",
170"J. c #C2BFB9",
171"K. c #CAC6C0",
172"L. c #DCDAD7",
173"M. c #4B555D",
174"N. c #4E697F",
175"O. c #BACCDC",
176"P. c #A4C4DE",
177"Q. c #698BA3",
178"R. c #708AA1",
179"S. c #383E43",
180"T. c #E0DEDA",
181"U. c #514E46",
182"V. c #4F4C44",
183"W. c #C7C4BE",
184"X. c #CBC8C2",
185"Y. c #E1E0DC",
186"Z. c #E9E8E6",
187"`. c #475158",
188" + c #4E6879",
189".+ c #4D6C80",
190"++ c #A3C3DB",
191"@+ c #383F43",
192"#+ c #778999",
193"$+ c #6E899E",
194"%+ c #65859C",
195"&+ c #33383C",
196"*+ c #D7D4D0",
197"=+ c #D6D4D0",
198"-+ c #4E4A43",
199";+ c #4D4942",
200">+ c #D1CEC9",
201",+ c #E6E5E2",
202"'+ c #EDECEA",
203")+ c #454F55",
204"!+ c #486173",
205"~+ c #4D6678",
206"{+ c #A1C1DA",
207"]+ c #373C40",
208"^+ c #0C0D0F",
209"/+ c #4E5E6A",
210"(+ c #5B6E7C",
211"_+ c #4F5B62",
212":+ c #A4A099",
213"<+ c #CCC9C3",
214"[+ c #D7D5D1",
215"}+ c #E4E2E0",
216"|+ c #DDDBD7",
217"1+ c #B8B5B0",
218"2+ c #3E474D",
219"3+ c #4A6176",
220"4+ c #4A6070",
221"5+ c #9BC3D8",
222"6+ c #363C41",
223"7+ c #28323E",
224" ",
225" . . . . . . . . . . . . . . . . . . . ",
226" . + @ # $ % & * = - ; > , > , ' ) ! ~ { . ",
227" . ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 . ",
228" . 0 a b c d e f g h i j k l m n o b p q . ",
229" . r s t u u u u u u u u u u u u u t v w . ",
230" . x y t u u u u u u u u u u u u u t v z . ",
231" . A B t C D D D D D D D D D D D E t F G . ",
232" . H I J u u u u u u u u u u u u u t F K . ",
233" . L M t u u u u u u u u u u u u u t N O . ",
234" . P Q t C D D D D D D D D D D D R t N S . ",
235" . T U V u u u u u u u u u u u u u t v W . ",
236" . X Y Z ` t t t t t ...t t t t +.@.#.$.. ",
237" . %.&.p v #.*.=.-.*.;.#.>.>.N *.,.v '.).. ",
238" . !.~.{.].^./.(._.:.<.[.}.|.(.1.2.3.4.5.. ",
239" . 6.7.8.9.0.a.b.c.c.d.a.e.f.g.h.i.j.k.l.. ",
240" . m.n.o.p.q.r.s.t.t.u.v.w.x.e.y.z.A.B.C.. ",
241" . D.E.F.p.G.H.s.t.t.I.J.w.K.L.M.N.A.O.C.. ",
242" . P.Q.R.S.T.c.U.V.V.W.w.X.Y.Z.`. +.+++@+. ",
243" . #+$+%+&+*+=+-+;+;+w.>+,+'+,+)+!+~+{+]+. ",
244" ^+/+(+_+:+w.x.<+<+[+}+d.|+1+2+3+4+5+6+. ",
245" . . . . . . . . . . . . . . . . 7+. ",
246" ",
247" "};
diff --git a/lisp/toolbar/saveas.pbm b/lisp/toolbar/saveas.pbm
index 9a9022e058e..f888ea06f42 100644
--- a/lisp/toolbar/saveas.pbm
+++ b/lisp/toolbar/saveas.pbm
Binary files differ
diff --git a/lisp/toolbar/saveas.xpm b/lisp/toolbar/saveas.xpm
index 87d9174f67f..2830b06c928 100644
--- a/lisp/toolbar/saveas.xpm
+++ b/lisp/toolbar/saveas.xpm
@@ -1,35 +1,289 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * saveas_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 262 2",
4"24 24 5 1", 4" c None",
5" c #01be01be01be", 5". c #000000",
6". c #62dd62dd62dd", 6"+ c #FBE73B",
7"X c Gray62", 7"@ c #F2B64D",
8"o c #e625e625e625", 8"# c #FCEB3D",
9"O c None", 9"$ c #F7B544",
10/* pixels */ 10"% c #5D502C",
11"OOOOOOOOOOOOOOOOOOOOOOOO", 11"& c #C3D7F4",
12"OOOOOOOOOOOOOOOOOOOOOOOO", 12"* c #A9CDE5",
13"OOOOOOOOOOOOOOOOOOO OOOO", 13"= c #75757A",
14"OOOOOOOOOOOOOOOOOO X OOO", 14"- c #EFC5BB",
15"OOOOOOOOOOOOO OO X. OOO", 15"; c #F1C8BE",
16"OOOOOOOOOOO X. X. OOOO", 16"> c #F0C6BC",
17"OOOOOOOOO oXoX X. OOOOO", 17", c #EEBCB2",
18"OOOOOOO oXoOo X. OOOOOO", 18"' c #EEBEB5",
19"OOOOO oXoOoO X. OOOOOOO", 19") c #EEC1B8",
20"OOO XooOOoO X. OOOOOO", 20"! c #EDBFB6",
21"OO XooOoXoO X. oX OOOOOO", 21"~ c #E8B6AC",
22"OO .XooXoO X. OoX. OOOOO", 22"{ c #FCE93B",
23"OOO XooXOX. ooXXX OOOOO", 23"] c #F7B545",
24"OOO .XoOX ooXX..X. OOOO", 24"^ c #6C5F34",
25"OOOO XoOXooXX...X.X OOOO", 25"/ c #434345",
26"OOOO .XooXX.Xoo.X.X. OOO", 26"( c #92A7B9",
27"OOOOO XXX.oooooX.X. OOO", 27"_ c #96B1C7",
28"OOOOO .XXoo.ooooXX OOO", 28": c #BBD6E8",
29"OOOOOO XX.o XooX. OOOOO", 29"< c #8AAAC5",
30"OOOOOO .XXooXoX OOOOOOO", 30"[ c #605F68",
31"OOOOOOO .X.oX OOOOOOOOO", 31"} c #E08D7E",
32"OOOOOOOO OOOOOOOOOOO", 32"| c #E0826E",
33"OOOOOOOOOOOOOOOOOOOOOOOO", 33"1 c #E0806E",
34"OOOOOOOOOOOOOOOOOOOOOOOO" 34"2 c #DC7A68",
35}; 35"3 c #DC8171",
36"4 c #DA7868",
37"5 c #D38072",
38"6 c #FAE43A",
39"7 c #F4B244",
40"8 c #615030",
41"9 c #783E35",
42"0 c #4D4C52",
43"a c #7790A2",
44"b c #526D82",
45"c c #BAD5E9",
46"d c #88A7C3",
47"e c #686670",
48"f c #C8817B",
49"g c #CB7C74",
50"h c #CB7A73",
51"i c #CB7B73",
52"j c #CC7C72",
53"k c #CA7C72",
54"l c #F9DF39",
55"m c #F3AF42",
56"n c #614F2F",
57"o c #8F4941",
58"p c #945554",
59"q c #5B5A62",
60"r c #7B97AE",
61"s c #536F84",
62"t c #B6D3E7",
63"u c #87ABC1",
64"v c #737373",
65"w c #FFFFFF",
66"x c #FEFEFE",
67"y c #F9DC38",
68"z c #EFB44D",
69"A c #665A32",
70"B c #BBBBBB",
71"C c #CDCDCD",
72"D c #E4E4E4",
73"E c #6E6E6E",
74"F c #819EB6",
75"G c #526C80",
76"H c #B9D3E7",
77"I c #85A4BF",
78"J c #F8D837",
79"K c #F0A93F",
80"L c #655930",
81"M c #BABABA",
82"N c #CCCCCC",
83"O c #E5E5E5",
84"P c #F7F7F7",
85"Q c #727272",
86"R c #83A0B8",
87"S c #4F697C",
88"T c #B9D3E6",
89"U c #84A3BF",
90"V c #CECECE",
91"W c #F6D236",
92"X c #EDA43E",
93"Y c #5C5130",
94"Z c #949494",
95"` c #A3A3A3",
96" . c #B7B7B7",
97".. c #C6C6C6",
98"+. c #BDBDBD",
99"@. c #88A4BB",
100"#. c #486276",
101"$. c #B7D2E7",
102"%. c #82A0BB",
103"&. c #636363",
104"*. c #FDFDFD",
105"=. c #D7AE74",
106"-. c #61562F",
107";. c #465E70",
108">. c #B5CAE5",
109",. c #7FA2B9",
110"'. c #4F4115",
111"). c #87A3BA",
112"!. c #455C6D",
113"~. c #AECCE5",
114"{. c #7DA0B6",
115"]. c #CBCBCB",
116"^. c #9B9B9B",
117"/. c #9C9C9C",
118"(. c #A7A7A7",
119"_. c #B8B8B8",
120":. c #C5C5C5",
121"<. c #546069",
122"[. c #B0D1E4",
123"}. c #83A1B6",
124"|. c #735B5B",
125"1. c #F0F0F0",
126"2. c #D9D9D9",
127"3. c #D3D3D3",
128"4. c #E1E1E1",
129"5. c #EDEDED",
130"6. c #F8F8F8",
131"7. c #515C64",
132"8. c #AACEE3",
133"9. c #7B9BB2",
134"0. c #7A8E9A",
135"a. c #7A7A7A",
136"b. c #707070",
137"c. c #6C6C6C",
138"d. c #6F6F6F",
139"e. c #6A6E71",
140"f. c #696969",
141"g. c #6F777E",
142"h. c #86A2B9",
143"i. c #3A515D",
144"j. c #A9C9E2",
145"k. c #7494AF",
146"l. c #7E9BB4",
147"m. c #7D9AB3",
148"n. c #7998B2",
149"o. c #85A1B8",
150"p. c #829FB7",
151"q. c #8CA7BD",
152"r. c #8AA5BB",
153"s. c #364A59",
154"t. c #ABC4E2",
155"u. c #7294AD",
156"v. c #6F90AC",
157"w. c #7192AE",
158"x. c #414A4E",
159"y. c #424A51",
160"z. c #525B63",
161"A. c #626F79",
162"B. c #5F6C76",
163"C. c #5C6971",
164"D. c #5A666F",
165"E. c #58636B",
166"F. c #57636A",
167"G. c #3B5360",
168"H. c #39424B",
169"I. c #7897B3",
170"J. c #A4B9CB",
171"K. c #364853",
172"L. c #AAC9E2",
173"M. c #7091AA",
174"N. c #6F8FA7",
175"O. c #4A5359",
176"P. c #97938C",
177"Q. c #DFDDDA",
178"R. c #E3E1DE",
179"S. c #EBEAE8",
180"T. c #EAE9E7",
181"U. c #CFCEC9",
182"V. c #C9C6C0",
183"W. c #9B968E",
184"X. c #566168",
185"Y. c #4B657A",
186"Z. c #54738C",
187"`. c #AAC6DD",
188" + c #34464E",
189".+ c #AAC9E1",
190"++ c #6C8EA6",
191"@+ c #6C8CA4",
192"#+ c #40474D",
193"$+ c #DAD8D3",
194"%+ c #E7E6E2",
195"&+ c #67655E",
196"*+ c #524F47",
197"=+ c #D9D7D4",
198"-+ c #C7C5BF",
199";+ c #C0BCB5",
200">+ c #B8B3AB",
201",+ c #434C54",
202"'+ c #4D697F",
203")+ c #4F6F84",
204"!+ c #B3CADC",
205"~+ c #313E49",
206"{+ c #A8C8E1",
207"]+ c #6B8DA6",
208"^+ c #728FA4",
209"/+ c #E2E1DD",
210"(+ c #F0EFEC",
211"_+ c #CDCAC6",
212":+ c #C2BFB9",
213"<+ c #CAC6C0",
214"[+ c #DCDAD7",
215"}+ c #4B555D",
216"|+ c #4E697F",
217"1+ c #BACCDC",
218"2+ c #A4C4DE",
219"3+ c #698BA3",
220"4+ c #708AA1",
221"5+ c #383E43",
222"6+ c #E0DEDA",
223"7+ c #514E46",
224"8+ c #4F4C44",
225"9+ c #C7C4BE",
226"0+ c #CBC8C2",
227"a+ c #E1E0DC",
228"b+ c #E9E8E6",
229"c+ c #475158",
230"d+ c #4E6879",
231"e+ c #4D6C80",
232"f+ c #A3C3DB",
233"g+ c #383F43",
234"h+ c #778999",
235"i+ c #6E899E",
236"j+ c #65859C",
237"k+ c #33383C",
238"l+ c #D7D4D0",
239"m+ c #D6D4D0",
240"n+ c #4E4A43",
241"o+ c #4D4942",
242"p+ c #D1CEC9",
243"q+ c #E6E5E2",
244"r+ c #EDECEA",
245"s+ c #454F55",
246"t+ c #486173",
247"u+ c #4D6678",
248"v+ c #A1C1DA",
249"w+ c #373C40",
250"x+ c #0C0D0F",
251"y+ c #4E5E6A",
252"z+ c #5B6E7C",
253"A+ c #4F5B62",
254"B+ c #A4A099",
255"C+ c #CCC9C3",
256"D+ c #D7D5D1",
257"E+ c #E4E2E0",
258"F+ c #DDDBD7",
259"G+ c #B8B5B0",
260"H+ c #3E474D",
261"I+ c #4A6176",
262"J+ c #4A6070",
263"K+ c #9BC3D8",
264"L+ c #363C41",
265"M+ c #28323E",
266" . . ",
267" . + @ . ",
268" . . . . . . . . . . . . . # $ % . . . ",
269" . & * = - ; > , ' ) ! ~ . { ] ^ . / ( _ . ",
270" . : < [ } | 1 2 3 4 5 . 6 7 8 . 9 0 a b . ",
271" . c d e f g h i j k . l m n . o p q r s . ",
272" . t u v w w w w x . y z A . B C D E F G . ",
273" . H I v w w w x . J K L . M N O P Q R S . ",
274" . T U v V C N . W X Y . Z ` ...+.v @.#.. ",
275" . $.%.&.w w *.. =.-.. M N D P *.w v @.;.. ",
276" . >.,.v w x . '.. . M N D P *.w w v ).!.. ",
277" . ~.{.v V ].. . ^./.(._...].C C :.v ).<.. ",
278" . [.}.|.w *.1.2.3.4.5.6.x w w w w v R 7.. ",
279" . 8.9.0.a.Q b.c.c.d.e.E v v v v f.g.h.i.. ",
280" . j.k.F R h.F l.m.F n.h.o.o.).p.q.R r.s.. ",
281" . t.u.v.w.x.y.z.A.B.C.D.E.F.z.G.H.I.J.K.. ",
282" . L.M.N.O.P.Q.R.S.S.T.Q.U.V.W.X.Y.Z.`. +. ",
283" . .+++@+#+$+%+&+*+*+=+-+;+>+U.,+'+)+!+~+. ",
284" . {+]+^+#+/+(+&+*+*+_+:+;+<+[+}+|+)+1+~+. ",
285" . 2+3+4+5+6+S.7+8+8+9+;+0+a+b+c+d+e+f+g+. ",
286" . h+i+j+k+l+m+n+o+o+;+p+q+r+q+s+t+u+v+w+. ",
287" x+y+z+A+B+;+>+C+C+D+E+T.F+G+H+I+J+K+L+. ",
288" . . . . . . . . . . . . . . . . M+. ",
289" "};
diff --git a/lisp/toolbar/search.pbm b/lisp/toolbar/search.pbm
index 9336eea6874..9c1cf61a645 100644
--- a/lisp/toolbar/search.pbm
+++ b/lisp/toolbar/search.pbm
Binary files differ
diff --git a/lisp/toolbar/search.xpm b/lisp/toolbar/search.xpm
index ff8732201e4..ad6300528e9 100644
--- a/lisp/toolbar/search.xpm
+++ b/lisp/toolbar/search.xpm
@@ -1,38 +1,234 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * search_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 207 2",
4"24 24 8 1", 4" c None",
5" c #011801180102", 5". c #000000",
6". c #464646463e3e", 6"+ c #D3D3D3",
7"X c #5c5c5c5c57a0", 7"@ c #F6F6F6",
8"o c #878787877979", 8"# c #FFFFFF",
9"O c #a910a91097af", 9"$ c #F9F9F9",
10"+ c #ce5ace5ab851", 10"% c #DADADA",
11"@ c #e79de79dd134", 11"& c #585858",
12"# c None", 12"* c #C7C7C7",
13/* pixels */ 13"= c #D1D1D1",
14"########################", 14"- c #D6D6D6",
15"########################", 15"; c #FEFEFE",
16"############# ##########", 16"> c #FDFDFD",
17"########### O #########", 17", c #C0C0C0",
18"######### O@@.#########", 18"' c #E1E1E1",
19"####### O@@@@@ ########", 19") c #F0F0F0",
20"##### O+@@@@@@O #######", 20"! c #9B9B9B",
21"#### XX@++@@@@@@.#######", 21"~ c #FCFCFB",
22"#### @.O+@@@@@@@@ ######", 22"{ c #FBFBFB",
23"#### @@.++@@@@@@@O #####", 23"] c #AFAFAE",
24"#### @@.o+O. .+@@ #####", 24"^ c #E9E9E9",
25"#### @XO+O.O++o.+@@ ####", 25"/ c #DFDFDF",
26"#### O+@.O@@+Oo.@@+ ###", 26"( c #8F8F8F",
27"#### X@@@ +#+OOO @@@@ ##", 27"_ c #FAFAF9",
28"#### O@@@ +@OOOo @@@o ##", 28": c #F9F9F8",
29"##### @@@.oOOOoX.@@ ###", 29"< c #A4A4A3",
30"##### O@@O.oOOX @ #####", 30"[ c #F4F4F4",
31"######X@@@O. .X ######", 31"} c #CFCFCF",
32"###### @@@@@@@+ #####", 32"| c #A2A2A2",
33"####### @@@@@O ## ####", 33"1 c #B8B8B8",
34"####### O@@+. #### ###", 34"2 c #47473F",
35"######## @O ####### ###", 35"3 c #0A0A09",
36"######### #############", 36"4 c #4B4B43",
37"########################" 37"5 c #B4B4B3",
38}; 38"6 c #F7F6F5",
39"7 c #9E9E9E",
40"8 c #A9A9A8",
41"9 c #34342E",
42"0 c #9D9D8D",
43"a c #CFCFB9",
44"b c #C4C4AF",
45"c c #8D8D7F",
46"d c #353530",
47"e c #ACACAA",
48"f c #F1F0EF",
49"g c #DEDDDC",
50"h c #D3D2D0",
51"i c #B7B7B5",
52"j c #9F9E9D",
53"k c #706F6F",
54"l c #65625A",
55"m c #46463F",
56"n c #9C9C8C",
57"o c #E2E2D0",
58"p c #EDEDE7",
59"q c #C0C0AC",
60"r c #B2B29F",
61"s c #828274",
62"t c #4C4C44",
63"u c #E4E4E2",
64"v c #E1E1DF",
65"w c #DAD9D7",
66"x c #D8D8D6",
67"y c #CDCCCA",
68"z c #AFAEAC",
69"A c #88847B",
70"B c #F8F8F7",
71"C c #090908",
72"D c #D5D5BF",
73"E c #FBFBFA",
74"F c #C3C3AE",
75"G c #B5B5A2",
76"H c #A6A695",
77"I c #9C9C8F",
78"J c #080807",
79"K c #CFCFCD",
80"L c #E3E2E0",
81"M c #ECEBE9",
82"N c #E9E8E6",
83"O c #D5D4D3",
84"P c #C4C3C2",
85"Q c #8F8A81",
86"R c #F6F5F4",
87"S c #F3F3F1",
88"T c #090909",
89"U c #CACAB5",
90"V c #DDDDD0",
91"W c #B7B7A4",
92"X c #AAAA98",
93"Y c #9B9B8B",
94"Z c #AEAEA3",
95"` c #BBBAB9",
96" . c #E8E7E5",
97".. c #E5E4E2",
98"+. c #E4E3E0",
99"@. c #D2D1CE",
100"#. c #8D887E",
101"$. c #F4F3F2",
102"%. c #F0EFEE",
103"&. c #474740",
104"*. c #929283",
105"=. c #BABAA7",
106"-. c #ADAD9B",
107";. c #9F9F8E",
108">. c #ACACA1",
109",. c #CFCFCB",
110"'. c #4C4C45",
111"). c #B3B2B1",
112"!. c #E2E1DE",
113"~. c #E1DFDC",
114"{. c #979288",
115"]. c #949493",
116"^. c #34342F",
117"/. c #878779",
118"(. c #A0A090",
119"_. c #AEAEA2",
120":. c #C3C3BE",
121"<. c #010101",
122"[. c #B1B0AF",
123"}. c #D2D1CF",
124"|. c #A49E93",
125"1. c #F0F0EE",
126"2. c #EDEDEB",
127"3. c #DDDDDB",
128"4. c #898988",
129"5. c #414141",
130"6. c #737271",
131"7. c #A4A3A1",
132"8. c #DFDEDB",
133"9. c #E2E0DD",
134"0. c #E1E0DC",
135"a. c #E0DFDB",
136"b. c #A19C90",
137"c. c #E1E0DE",
138"d. c #CBCAC9",
139"e. c #B2B1B0",
140"f. c #A3A2A1",
141"g. c #9D9C9A",
142"h. c #9E9D9C",
143"i. c #9F9F9D",
144"j. c #ABAAA7",
145"k. c #DCDBD7",
146"l. c #DEDDD9",
147"m. c #DDDCD8",
148"n. c #A19B90",
149"o. c #EBEAE8",
150"p. c #E6E5E3",
151"q. c #C8C7C4",
152"r. c #B6B6B3",
153"s. c #B0AFAD",
154"t. c #B3B2B0",
155"u. c #747371",
156"v. c #9D9C99",
157"w. c #DAD9D5",
158"x. c #E7E6E3",
159"y. c #E6E5E2",
160"z. c #E3E2DF",
161"A. c #DBDAD7",
162"B. c #D4D3D0",
163"C. c #D0CFCB",
164"D. c #D1CFCC",
165"E. c #D1D0CC",
166"F. c #C9C8C4",
167"G. c #6B6B69",
168"H. c #CECDC9",
169"I. c #D6D4D0",
170"J. c #9F998D",
171"K. c #E3E2DE",
172"L. c #E4E2DF",
173"M. c #DFDEDA",
174"N. c #D5D4D0",
175"O. c #C0BFBC",
176"P. c #7B7A78",
177"Q. c #BCBAB6",
178"R. c #CECCC8",
179"S. c #9D978C",
180"T. c #EDEDED",
181"U. c #E1E0DD",
182"V. c #E2E1DD",
183"W. c #DBDAD6",
184"X. c #BBB9B6",
185"Y. c #A6A4A1",
186"Z. c #9E9C99",
187"`. c #ACABA7",
188" + c #C7C5C2",
189".+ c #9B9589",
190"++ c #E1DFDB",
191"@+ c #E0DEDA",
192"#+ c #DEDCD8",
193"$+ c #DAD8D4",
194"%+ c #BDBCB8",
195"&+ c #ACABA8",
196"*+ c #B2B1AD",
197"=+ c #C6C4C0",
198"-+ c #999388",
199";+ c #999891",
200">+ c #A39E92",
201",+ c #A39D92",
202"'+ c #A39D91",
203")+ c #A29C90",
204"!+ c #A19B8F",
205"~+ c #9D978B",
206"{+ c #989286",
207"]+ c #918C82",
208"^+ c #938D83",
209"/+ c #979286",
210"(+ c #666258",
211" ",
212" . . . . . . . . . . . . . ",
213" . + @ # # # # # # # # $ % & . ",
214" . @ # # # # # # # # # # * = - . ",
215" . # # # # # # # ; # ; > , ' ) ! . ",
216" . # # # # # ; > ~ > ~ { ] ^ # / ( . ",
217" . # # # ; > ~ { _ { _ : < ) # [ } | . ",
218" . # ; > ~ 1 2 3 3 4 5 6 7 . . . . . . . ",
219" . # ~ { 8 9 0 a b c d e f g h i j k l . ",
220" . # _ : m n o p q r s t u v w x y z A . ",
221" . # B 6 C D E F G H I J K L M N O P Q . ",
222" . # R S T U V W X Y Z 3 ` w ...+.@.#.. ",
223" . # $.%.&.*.=.-.;.>.,.'.).h !.+.!.~.{.. ",
224" . # $.%.].^./.(._.:.<.<.[.}.!.+.!.~.|.. ",
225" . # 1.2.3.4.4 3 3 5.6.<.<.7.8.9.0.a.b.. ",
226" . # 2.M c.d.e.f.g.h.i.<.<.<.j.k.l.m.n.. ",
227" . # o.N p.w q.r.z s.t.u.. <.<.v.w.k.n.. ",
228" . # x.y.y.z.A.B.C.D.E.F.G.<.<.<.H.I.J.. ",
229" . $ +.z.K.L.K.a.a.M.M.N.O.P.<.<.Q.R.S.. ",
230" . T.U.~.0.a.V.a.0.a.0.W.E.X.Y.Z.`. +.+. ",
231" . = ++@+M.l.a.l.@+l.@+#+$+R.%+&+*+=+-+. ",
232" . ;+>+|.,+'+,+b.)+b.)+!+n.~+{+]+^+/+(+. ",
233" . . . . . . . . . . . . . . . . . . ",
234" "};
diff --git a/lisp/toolbar/spell.pbm b/lisp/toolbar/spell.pbm
index c641babe8ed..6532f0176d4 100644
--- a/lisp/toolbar/spell.pbm
+++ b/lisp/toolbar/spell.pbm
Binary files differ
diff --git a/lisp/toolbar/spell.xpm b/lisp/toolbar/spell.xpm
index a2c2282b48b..b53f4510602 100644
--- a/lisp/toolbar/spell.xpm
+++ b/lisp/toolbar/spell.xpm
@@ -1,35 +1,64 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * spell_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 37 1",
4"24 24 5 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #41415b5b3939", 6"+ c #8BBB8C",
7"X c #4c2f6b4e42d1", 7"@ c #ABD0AC",
8"o c #5fe086865454", 8"# c #1A3B1A",
9"O c None", 9"$ c #8ABA88",
10/* pixels */ 10"% c #B4D5B4",
11"OOOOOOOOOOOOOOOOOOOOOOOO", 11"& c #70A770",
12"OOOOOOOOOOOOOOOOOOOOOOOO", 12"* c #132C13",
13"OOOOOOOOOOOOOOOOOOOOOOOO", 13"= c #77A676",
14"OOOOOOOOOOOOOOOOOOOOOOOO", 14"- c #2D2D2D",
15"OOOO OO OOO OOOOOOOO", 15"; c #CBDFCB",
16"OOO OO O OO O OO OOOOOOO", 16"> c #6FAE6E",
17"OOO O OO OOOOOOOOOO", 17", c #A8CBA6",
18"OOO OO O OO O OO OOOOOOO", 18"' c #6D9D6C",
19"OOO OO O OOO OOOO OO", 19") c #D0E4D0",
20"OOOOOOOOOOOOOOOOOOO OOO", 20"! c #6FAF6F",
21"OOOOOOOOOOO OOOOO OOOO", 21"~ c #587055",
22"OOOOOOOOOOO X OOO . OOOO", 22"{ c #B8D6B8",
23"OOOOOOOOOOOO X O X OOOOO", 23"] c #5B9159",
24"OOOOOOOOOOOO Xo o. OOOOO", 24"^ c #D4E4D4",
25"OOOOOOOOOOOOO XoX OOOOOO", 25"/ c #67AF67",
26"OOOOOOOOOOOOO Xo. OOOOOO", 26"( c #5D905B",
27"OOOOOOOOOOOOOO X OOOOOOO", 27"_ c #9FC59D",
28"OOOOOOOOOOOOOO X OOOOOOO", 28": c #93BE92",
29"OOOOOOOOOOOOOOO OOOOOOOO", 29"< c #B5D1B5",
30"OOOOOOOOOOOOOOOOOOOOOOOO", 30"[ c #67AF68",
31"OOOOOOOOOOOOOOOOOOOOOOOO", 31"} c #63A261",
32"OOOOOOOOOOOOOOOOOOOOOOOO", 32"| c #BBD6BA",
33"OOOOOOOOOOOOOOOOOOOOOOOO", 33"1 c #82B881",
34"OOOOOOOOOOOOOOOOOOOOOOOO" 34"2 c #75AF74",
35}; 35"3 c #6B8868",
36"4 c #9DC39D",
37"5 c #7DB17B",
38"6 c #6BA368",
39"7 c #485C46",
40"8 c #89BA88",
41" ",
42" ",
43" ",
44" ",
45" ... .... ... ",
46" .. . .. . .. . ",
47" .. . .... .. ",
48" ..... .. . .. ",
49" .. . .. . .. . . ",
50" .. . .... ... ... ",
51" .+. ",
52" .. .@# ",
53" .$. .%&. ",
54" *=. -;>. ",
55" .,'. .)!~. ",
56" .{].^/(. ",
57" ._:<[}~. ",
58" .|123. ",
59" .4567. ",
60" .83. ",
61" .37. ",
62" .. ",
63" ",
64" "};
diff --git a/lisp/toolbar/undo.pbm b/lisp/toolbar/undo.pbm
index 5bed67caa40..7a7f2709b48 100644
--- a/lisp/toolbar/undo.pbm
+++ b/lisp/toolbar/undo.pbm
Binary files differ
diff --git a/lisp/toolbar/undo.xpm b/lisp/toolbar/undo.xpm
index c48b0fdae6f..ca5bd760937 100644
--- a/lisp/toolbar/undo.xpm
+++ b/lisp/toolbar/undo.xpm
@@ -1,35 +1,58 @@
1/* XPM */ 1/* XPM */
2static char *magick[] = { 2static char * undo_xpm[] = {
3/* columns rows colors chars-per-pixel */ 3"24 24 31 1",
4"24 24 5 1", 4" c None",
5" c Gray0", 5". c #000000",
6". c #ae6e66e76a0a", 6"+ c #EFE5BA",
7"X c #c6c67d7d8181", 7"@ c #EFE7C1",
8"o c #e4e4e4e4dcdc", 8"# c #EED680",
9"O c None", 9"$ c #EFE4B6",
10/* pixels */ 10"% c #D5B75D",
11"OOOOOOOOOOOOOOOOOOOOOOOO", 11"& c #B29544",
12"OOOOOOOOOOOOOOOOOOOOOOOO", 12"* c #D1B051",
13"OOOOOOOOOOOOOOOOOOOOOOOO", 13"= c #C0AF73",
14"OOOOOOOOOOOOOOOOOOOOOOOO", 14"- c #C0A048",
15"OOOOOOOOOOOOOOOOOOOOOOOO", 15"; c #986B07",
16"OOOOOOOOOOOOOOOOOOOOOOOO", 16"> c #D1940C",
17"OOOOOOOOO OOOOOOOOOOOOOO", 17", c #E0B74C",
18"OOOOOOOO OOOOOOOOOOOOOO", 18"' c #D9C374",
19"OOOOOOO oX OOOOOOOOOOO", 19") c #8F6406",
20"OOOOOO ooooX. OOOOOOOOO", 20"! c #D59D1C",
21"OOOOOOO oo .. OOOOOOOO", 21"~ c #B1933F",
22"OOOOOOOO OOO . OOOOOOOO", 22"{ c #DFB74A",
23"OOOOOOOOO OOOO . OOOOOOO", 23"] c #CCB76D",
24"OOOOOOOOOOOOOOO OOOOOOO", 24"^ c #B8820A",
25"OOOOOOOOOOOOOOO OOOOOOO", 25"/ c #D9A72E",
26"OOOOOOOOOOOOOOO OOOOOOOO", 26"( c #D7A62C",
27"OOOOOOOOOOOOOO OOOOOOOOO", 27"_ c #C7B26A",
28"OOOOOOOOOOOOOOOOOOOOOOOO", 28": c #D4B150",
29"OOOOOOOOOOOOOOOOOOOOOOOO", 29"< c #A39256",
30"OOOOOOOOOOOOOOOOOOOOOOOO", 30"[ c #E2CB79",
31"OOOOOOOOOOOOOOOOOOOOOOOO", 31"} c #C9B46B",
32"OOOOOOOOOOOOOOOOOOOOOOOO", 32"| c #8D7E4A",
33"OOOOOOOOOOOOOOOOOOOOOOOO", 33"1 c #AE9C5C",
34"OOOOOOOOOOOOOOOOOOOOOOOO" 34"2 c #96864F",
35}; 35" ",
36" ",
37" ",
38" . ",
39" .. ",
40" .+. ",
41" .@#.... ",
42" .$####%&. ",
43" .+#######*. ",
44" .=#########-. ",
45" .;>>>>>>,#'.. ",
46" .)>>>>>>!#~. ",
47" .)>...;>{]. ",
48" .;. ..^/#. ",
49" .. ..>#. ",
50" . .(_. ",
51" .:<. ",
52" .[. ",
53" .}|. ",
54" .12. ",
55" .. ",
56" ",
57" ",
58" "};
diff --git a/lisp/toolbar/up_arrow.pbm b/lisp/toolbar/up_arrow.pbm
index ca7e04f7a50..8b63dd75c70 100644
--- a/lisp/toolbar/up_arrow.pbm
+++ b/lisp/toolbar/up_arrow.pbm
Binary files differ
diff --git a/lisp/toolbar/up_arrow.xpm b/lisp/toolbar/up_arrow.xpm
index 44243cfe7f6..09963557d1b 100644
--- a/lisp/toolbar/up_arrow.xpm
+++ b/lisp/toolbar/up_arrow.xpm
@@ -1,33 +1,91 @@
1/* XPM */ 1/* XPM */
2static char * up_arrow_xpm[] = { 2static char * up_arrow_xpm[] = {
3"24 24 9 1", 3"24 24 67 1",
4" c None", 4" c None",
5". c #020202", 5". c #000000",
6"+ c #121A12", 6"+ c #2F2F2F",
7"@ c #78A16E", 7"@ c #A5B4A4",
8"# c #86AD7D", 8"# c #E8F4E6",
9"$ c #B2C6AE", 9"$ c #96B892",
10"% c #263222", 10"% c #41533C",
11"& c #E7EDE6", 11"& c #F1FFF0",
12"* c #497241", 12"* c #B8D6B7",
13"= c #9FC49D",
14"- c #66815E",
15"; c #B6D4B5",
16"> c #B9D7B8",
17", c #A1C69F",
18"' c #68835F",
19") c #637D5B",
20"! c #3F5239",
21"~ c #B8D7B7",
22"{ c #A2C7A0",
23"] c #6A8561",
24"^ c #657F5C",
25"/ c #617959",
26"( c #3E4F39",
27"_ c #F0FEEF",
28": c #B7D5B6",
29"< c #657E5C",
30"[ c #5D7555",
31"} c #D6EAD6",
32"| c #BFD4BF",
33"1 c #C0D5C0",
34"2 c #637C5B",
35"3 c #4D6246",
36"4 c #4C6046",
37"5 c #C7E1C6",
38"6 c #A1C69E",
39"7 c #67815E",
40"8 c #627B59",
41"9 c #3D4E39",
42"0 c #D0E7D0",
43"a c #B5D3B4",
44"b c #A0C39D",
45"c c #607958",
46"d c #B5D2B4",
47"e c #9DC19B",
48"f c #647D5B",
49"g c #607858",
50"h c #C6E0C5",
51"i c #B4D2B3",
52"j c #9CBF99",
53"k c #C5DFC4",
54"l c #B1CEB0",
55"m c #99BC97",
56"n c #617A59",
57"o c #5E7756",
58"p c #C0D9BF",
59"q c #AFCCAE",
60"r c #AECBAD",
61"s c #93B690",
62"t c #607857",
63"u c #5E7656",
64"v c #8DB389",
65"w c #748A72",
66"x c #71916E",
67"y c #5A7257",
68"z c #4D6247",
69"A c #4D6146",
70"B c #43543D",
13" ", 71" ",
14" ", 72" ",
15" ", 73" . ",
16" ", 74" +@. ",
17" .. ", 75" .#$%. ",
18" .. ", 76" .&*=-%. ",
19" .$*. ", 77" .&;>,')!. ",
20" +&*. ", 78" .&~;>{]^/(. ",
21" .&&@*. ", 79" ._~>:>,]</[(. ",
22" .&&@*. ", 80" .}|1>~~,'23444. ",
23" .&&&@@*. ", 81" .....5;;6789..... ",
24" .&&&##*. ", 82" .0;ab^c9. ",
25" .&&&&#@@*. ", 83" .5;defg9. ",
26" .&&&&###*. ", 84" .haij2g9. ",
27" .&&&&&##@@*. ", 85" .kilmno9. ",
28" .&&&&&###@@. ", 86" .pqrstu9. ",
29" .$$$$$$@@@@**. ", 87" .vwxyzAB. ",
30" ......%....... ", 88" ......... ",
31" ", 89" ",
32" ", 90" ",
33" ", 91" ",
diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el
new file mode 100644
index 00000000000..54323e41dd3
--- /dev/null
+++ b/lisp/tree-widget.el
@@ -0,0 +1,736 @@
1;;; tree-widget.el --- Tree widget
2
3;; Copyright (C) 2004 Free Software Foundation, Inc.
4
5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com>
7;; Created: 16 Feb 2001
8;; Keywords: extensions
9
10;; This file is part of GNU Emacs
11
12;; This program is free software; you can redistribute it and/or
13;; modify it under the terms of the GNU General Public License as
14;; published by the Free Software Foundation; either version 2, or (at
15;; your option) any later version.
16
17;; This program is distributed in the hope that it will be useful, but
18;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20;; General Public License for more details.
21
22;; You should have received a copy of the GNU General Public License
23;; along with this program; see the file COPYING. If not, write to
24;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25;; Boston, MA 02111-1307, USA.
26
27;;; Commentary:
28;;
29;; This library provide a tree widget useful to display data
30;; structures organized in a hierarchical order.
31;;
32;; The following properties are specific to the tree widget:
33;;
34;; :open
35;; Set to non-nil to unfold the tree. By default the tree is
36;; folded.
37;;
38;; :node
39;; Specify the widget used to represent a tree node. By default
40;; this is an `item' widget which displays the tree-widget :tag
41;; property value if defined or a string representation of the
42;; tree-widget value.
43;;
44;; :keep
45;; Specify a list of properties to keep when the tree is
46;; folded so they can be recovered when the tree is unfolded.
47;; This property can be used in child widgets too.
48;;
49;; :dynargs
50;; Specify a function to be called when the tree is unfolded, to
51;; dynamically provide the tree children in response to an unfold
52;; request. This function will be passed the tree widget and
53;; must return a list of child widgets. That list will be stored
54;; as the :args property of the parent tree.
55
56;; To speed up successive unfold requests, the :dynargs function
57;; can directly return the :args value if non-nil. Refreshing
58;; child values can be achieved by giving the :args property the
59;; value nil, then redrawing the tree.
60;;
61;; :has-children
62;; Specify if this tree has children. This property has meaning
63;; only when used with the above :dynargs one. It indicates that
64;; child widgets exist but will be dynamically provided when
65;; unfolding the node.
66;;
67;; :open-control (default `tree-widget-open-control')
68;; :close-control (default `tree-widget-close-control')
69;; :empty-control (default `tree-widget-empty-control')
70;; :leaf-control (default `tree-widget-leaf-control')
71;; :guide (default `tree-widget-guide')
72;; :end-guide (default `tree-widget-end-guide')
73;; :no-guide (default `tree-widget-no-guide')
74;; :handle (default `tree-widget-handle')
75;; :no-handle (default `tree-widget-no-handle')
76;;
77;; The above nine properties define the widgets used to draw the tree.
78;; For example, using widgets that display this values:
79;;
80;; open-control "[-] "
81;; close-control "[+] "
82;; empty-control "[X] "
83;; leaf-control "[>] "
84;; guide " |"
85;; noguide " "
86;; end-guide " `"
87;; handle "-"
88;; no-handle " "
89;;
90;; A tree will look like this:
91;;
92;; [-] 1 open-control
93;; |-[+] 1.0 guide+handle+close-control
94;; |-[X] 1.1 guide+handle+empty-control
95;; `-[-] 1.2 end-guide+handle+open-control
96;; |-[>] 1.2.1 no-guide+no-handle+guide+handle+leaf-control
97;; `-[>] 1.2.2 no-guide+no-handle+end-guide+handle+leaf-control
98;;
99;; By default, the tree widget try to use images instead of strings to
100;; draw a nice-looking tree. See the `tree-widget-themes-directory'
101;; and `tree-widget-theme' options for more details.
102;;
103
104;;; History:
105;;
106
107;;; Code:
108(eval-when-compile (require 'cl))
109(require 'wid-edit)
110
111;;; Customization
112;;
113(defgroup tree-widget nil
114 "Customization support for the Tree Widget Library."
115 :version "21.4"
116 :group 'widgets)
117
118(defcustom tree-widget-image-enable
119 (not (or (featurep 'xemacs) (< emacs-major-version 21)))
120 "*non-nil means that tree-widget will try to use images."
121 :type 'boolean
122 :group 'tree-widget)
123
124(defcustom tree-widget-themes-directory "tree-widget"
125 "*Name of the directory where to lookup for image themes.
126When nil use the directory where the tree-widget library is located.
127When a relative name is specified, try to locate that sub-directory in
128`load-path', then in the data directory, and use the first one found.
129Default is to search for a \"tree-widget\" sub-directory.
130
131The data directory is the value of:
132 - the variable `data-directory' on GNU Emacs;
133 - `(locate-data-directory \"tree-widget\")' on XEmacs."
134 :type '(choice (const :tag "Default" "tree-widget")
135 (const :tag "With the library" nil)
136 (directory :format "%{%t%}:\n%v"))
137 :group 'tree-widget)
138
139(defcustom tree-widget-theme nil
140 "*Name of the theme to use to lookup for images.
141The theme name must be a subdirectory in `tree-widget-themes-directory'.
142If nil use the \"default\" theme.
143When a image is not found in the current theme, the \"default\" theme
144is searched too.
145A complete theme should contain images with these file names:
146
147Name Represents
148----------- ------------------------------------------------
149open opened node (for example an open folder)
150close closed node (for example a close folder)
151empty empty node (a node without children)
152leaf leaf node (for example a document)
153guide a vertical guide line
154no-guide an invisible guide line
155end-guide the end of a vertical guide line
156handle an horizontal line drawn before a node control
157no-handle an invisible handle
158----------- ------------------------------------------------"
159 :type '(choice (const :tag "Default" nil)
160 (string :tag "Name"))
161 :group 'tree-widget)
162
163(defcustom tree-widget-image-properties-emacs
164 '(:ascent center :mask (heuristic t))
165 "*Properties of GNU Emacs images."
166 :type 'plist
167 :group 'tree-widget)
168
169(defcustom tree-widget-image-properties-xemacs
170 nil
171 "*Properties of XEmacs images."
172 :type 'plist
173 :group 'tree-widget)
174
175;;; Image support
176;;
177(eval-when-compile ;; GNU Emacs/XEmacs compatibility stuff
178 (cond
179 ;; XEmacs
180 ((featurep 'xemacs)
181 (defsubst tree-widget-use-image-p ()
182 "Return non-nil if image support is currently enabled."
183 (and tree-widget-image-enable
184 widget-glyph-enable
185 (console-on-window-system-p)))
186 (defsubst tree-widget-create-image (type file &optional props)
187 "Create an image of type TYPE from FILE.
188Give the image the specified properties PROPS.
189Return the new image."
190 (apply 'make-glyph `([,type :file ,file ,@props])))
191 (defsubst tree-widget-image-formats ()
192 "Return the list of image formats, file name suffixes associations.
193See also the option `widget-image-file-name-suffixes'."
194 (delq nil
195 (mapcar
196 #'(lambda (fmt)
197 (and (valid-image-instantiator-format-p (car fmt)) fmt))
198 widget-image-file-name-suffixes)))
199 )
200 ;; GNU Emacs
201 (t
202 (defsubst tree-widget-use-image-p ()
203 "Return non-nil if image support is currently enabled."
204 (and tree-widget-image-enable
205 widget-image-enable
206 (display-images-p)))
207 (defsubst tree-widget-create-image (type file &optional props)
208 "Create an image of type TYPE from FILE.
209Give the image the specified properties PROPS.
210Return the new image."
211 (apply 'create-image `(,file ,type nil ,@props)))
212 (defsubst tree-widget-image-formats ()
213 "Return the list of image formats, file name suffixes associations.
214See also the option `widget-image-conversion'."
215 (delq nil
216 (mapcar
217 #'(lambda (fmt)
218 (and (image-type-available-p (car fmt)) fmt))
219 widget-image-conversion)))
220 ))
221 )
222
223;; Buffer local cache of theme data.
224(defvar tree-widget--theme nil)
225
226(defsubst tree-widget-theme-name ()
227 "Return the current theme name, or nil if no theme is active."
228 (and tree-widget--theme (aref tree-widget--theme 0)))
229
230(defsubst tree-widget-set-theme (&optional name)
231 "In the current buffer, set the theme to use for images.
232The current buffer should be where the tree widget is drawn.
233Optional argument NAME is the name of the theme to use, which defaults
234to the value of the variable `tree-widget-theme'.
235Does nothing if NAME is the name of the current theme."
236 (or name (setq name (or tree-widget-theme "default")))
237 (unless (equal name (tree-widget-theme-name))
238 (set (make-local-variable 'tree-widget--theme)
239 (make-vector 4 nil))
240 (aset tree-widget--theme 0 name)))
241
242(defun tree-widget-themes-directory ()
243 "Locate the directory where to search for a theme.
244It is defined in variable `tree-widget-themes-directory'.
245Return the absolute name of the directory found, or nil if the
246specified directory is not accessible."
247 (let ((found (aref tree-widget--theme 1)))
248 (if found
249 ;; The directory is available in the cache.
250 (unless (eq found 'void) found)
251 (cond
252 ;; Use the directory where tree-widget is located.
253 ((null tree-widget-themes-directory)
254 (setq found (locate-library "tree-widget"))
255 (when found
256 (setq found (file-name-directory found))
257 (or (file-accessible-directory-p found)
258 (setq found nil))))
259 ;; Check accessibility of absolute directory name.
260 ((file-name-absolute-p tree-widget-themes-directory)
261 (setq found (expand-file-name tree-widget-themes-directory))
262 (or (file-accessible-directory-p found)
263 (setq found nil)))
264 ;; Locate a sub-directory in `load-path' and data directory.
265 (t
266 (let ((path
267 (append load-path
268 ;; The data directory depends on which, GNU
269 ;; Emacs or XEmacs, is running.
270 (list (if (fboundp 'locate-data-directory)
271 (locate-data-directory "tree-widget")
272 data-directory)))))
273 (while (and path (not found))
274 (when (car path)
275 (setq found (expand-file-name
276 tree-widget-themes-directory (car path)))
277 (or (file-accessible-directory-p found)
278 (setq found nil)))
279 (setq path (cdr path))))))
280 ;; Store the result in the cache for later use.
281 (aset tree-widget--theme 1 (or found 'void))
282 found)))
283
284(defsubst tree-widget-set-image-properties (props)
285 "In current theme, set images properties to PROPS."
286 (aset tree-widget--theme 2 props))
287
288(defun tree-widget-image-properties (file)
289 "Return properties of images in current theme.
290If the \"tree-widget-theme-setup.el\" file exists in the directory
291where is located the image FILE, load it to setup theme images
292properties. Typically that file should contain something like this:
293
294 (tree-widget-set-image-properties
295 (if (featurep 'xemacs)
296 '(:ascent center)
297 '(:ascent center :mask (heuristic t))
298 ))
299
300By default, use the global properties provided in variables
301`tree-widget-image-properties-emacs' or
302`tree-widget-image-properties-xemacs'."
303 ;; If properties are in the cache, use them.
304 (or (aref tree-widget--theme 2)
305 (progn
306 ;; Load tree-widget-theme-setup if available.
307 (load (expand-file-name
308 "tree-widget-theme-setup"
309 (file-name-directory file)) t t)
310 ;; If properties have been setup, use them.
311 (or (aref tree-widget--theme 2)
312 ;; By default, use supplied global properties.
313 (tree-widget-set-image-properties
314 (if (featurep 'xemacs)
315 tree-widget-image-properties-xemacs
316 tree-widget-image-properties-emacs))))))
317
318(defun tree-widget-find-image (name)
319 "Find the image with NAME in current theme.
320NAME is an image file name sans extension.
321Search first in current theme, then in default theme.
322A theme is a sub-directory of the root theme directory specified in
323variable `tree-widget-themes-directory'.
324Return the first image found having a supported format in those
325returned by the function `tree-widget-image-formats', or nil if not
326found."
327 (when (tree-widget-use-image-p)
328 ;; Ensure there is an active theme.
329 (tree-widget-set-theme (tree-widget-theme-name))
330 ;; If the image is in the cache, return it.
331 (or (cdr (assoc name (aref tree-widget--theme 3)))
332 ;; Search the image in the current, then default themes.
333 (let ((default-directory (tree-widget-themes-directory)))
334 (when default-directory
335 (let* ((theme (tree-widget-theme-name))
336 (path (mapcar 'expand-file-name
337 (if (equal theme "default")
338 '("default")
339 (list theme "default"))))
340 (formats (tree-widget-image-formats))
341 (found
342 (catch 'found
343 (dolist (dir path)
344 (dolist (fmt formats)
345 (dolist (ext (cdr fmt))
346 (let ((file (expand-file-name
347 (concat name ext) dir)))
348 (and (file-readable-p file)
349 (file-regular-p file)
350 (throw 'found
351 (cons (car fmt) file)))))))
352 nil)))
353 (when found
354 (let ((image
355 (tree-widget-create-image
356 (car found) (cdr found)
357 (tree-widget-image-properties (cdr found)))))
358 ;; Store image in the cache for later use.
359 (push (cons name image) (aref tree-widget--theme 3))
360 image))))))))
361
362;;; Widgets
363;;
364(defvar tree-widget-button-keymap
365 (let (parent-keymap mouse-button1 keymap)
366 (if (featurep 'xemacs)
367 (setq parent-keymap widget-button-keymap
368 mouse-button1 [button1])
369 (setq parent-keymap widget-keymap
370 mouse-button1 [down-mouse-1]))
371 (setq keymap (copy-keymap parent-keymap))
372 (define-key keymap mouse-button1 'widget-button-click)
373 keymap)
374 "Keymap used inside node handle buttons.")
375
376(define-widget 'tree-widget-control 'push-button
377 "Base `tree-widget' control."
378 :format "%[%t%]"
379 :button-keymap tree-widget-button-keymap ; XEmacs
380 :keymap tree-widget-button-keymap ; Emacs
381 )
382
383(define-widget 'tree-widget-open-control 'tree-widget-control
384 "Control widget that represents a opened `tree-widget' node."
385 :tag "[-] "
386 ;;:tag-glyph (tree-widget-find-image "open")
387 :notify 'tree-widget-close-node
388 :help-echo "Hide node"
389 )
390
391(define-widget 'tree-widget-empty-control 'tree-widget-open-control
392 "Control widget that represents an empty opened `tree-widget' node."
393 :tag "[X] "
394 ;;:tag-glyph (tree-widget-find-image "empty")
395 )
396
397(define-widget 'tree-widget-close-control 'tree-widget-control
398 "Control widget that represents a closed `tree-widget' node."
399 :tag "[+] "
400 ;;:tag-glyph (tree-widget-find-image "close")
401 :notify 'tree-widget-open-node
402 :help-echo "Show node"
403 )
404
405(define-widget 'tree-widget-leaf-control 'item
406 "Control widget that represents a leaf node."
407 :tag " " ;; Need at least a char to display the image :-(
408 ;;:tag-glyph (tree-widget-find-image "leaf")
409 :format "%t"
410 )
411
412(define-widget 'tree-widget-guide 'item
413 "Widget that represents a guide line."
414 :tag " |"
415 ;;:tag-glyph (tree-widget-find-image "guide")
416 :format "%t"
417 )
418
419(define-widget 'tree-widget-end-guide 'item
420 "Widget that represents the end of a guide line."
421 :tag " `"
422 ;;:tag-glyph (tree-widget-find-image "end-guide")
423 :format "%t"
424 )
425
426(define-widget 'tree-widget-no-guide 'item
427 "Widget that represents an invisible guide line."
428 :tag " "
429 ;;:tag-glyph (tree-widget-find-image "no-guide")
430 :format "%t"
431 )
432
433(define-widget 'tree-widget-handle 'item
434 "Widget that represent a node handle."
435 :tag " "
436 ;;:tag-glyph (tree-widget-find-image "handle")
437 :format "%t"
438 )
439
440(define-widget 'tree-widget-no-handle 'item
441 "Widget that represent an invisible node handle."
442 :tag " "
443 ;;:tag-glyph (tree-widget-find-image "no-handle")
444 :format "%t"
445 )
446
447(define-widget 'tree-widget 'default
448 "Tree widget."
449 :format "%v"
450 :convert-widget 'widget-types-convert-widget
451 :value-get 'widget-value-value-get
452 :value-create 'tree-widget-value-create
453 :value-delete 'tree-widget-value-delete
454 )
455
456;;; Widget support functions
457;;
458(defun tree-widget-p (widget)
459 "Return non-nil if WIDGET is a `tree-widget' widget."
460 (let ((type (widget-type widget)))
461 (while (and type (not (eq type 'tree-widget)))
462 (setq type (widget-type (get type 'widget-type))))
463 (eq type 'tree-widget)))
464
465(defsubst tree-widget-get-super (widget property)
466 "Return WIDGET's inherited PROPERTY value."
467 (widget-get (get (widget-type (get (widget-type widget)
468 'widget-type))
469 'widget-type)
470 property))
471
472(defsubst tree-widget-super-format-handler (widget escape)
473 "Call WIDGET's inherited format handler to process ESCAPE character."
474 (let ((handler (tree-widget-get-super widget :format-handler)))
475 (and handler (funcall handler widget escape))))
476
477(defun tree-widget-format-handler (widget escape)
478 "For WIDGET, signal that the %p format template is obsolete.
479Call WIDGET's inherited format handler to process other ESCAPE
480characters."
481 (if (eq escape ?p)
482 (message "The %%p format template is obsolete and ignored")
483 (tree-widget-super-format-handler widget escape)))
484(make-obsolete 'tree-widget-format-handler
485 'tree-widget-super-format-handler)
486
487(defsubst tree-widget-node (widget)
488 "Return the tree WIDGET :node value.
489If not found setup a default 'item' widget."
490 (let ((node (widget-get widget :node)))
491 (unless node
492 (setq node `(item :tag ,(or (widget-get widget :tag)
493 (widget-princ-to-string
494 (widget-value widget)))))
495 (widget-put widget :node node))
496 node))
497
498(defsubst tree-widget-open-control (widget)
499 "Return the opened node control specified in WIDGET."
500 (or (widget-get widget :open-control)
501 'tree-widget-open-control))
502
503(defsubst tree-widget-close-control (widget)
504 "Return the closed node control specified in WIDGET."
505 (or (widget-get widget :close-control)
506 'tree-widget-close-control))
507
508(defsubst tree-widget-empty-control (widget)
509 "Return the empty node control specified in WIDGET."
510 (or (widget-get widget :empty-control)
511 'tree-widget-empty-control))
512
513(defsubst tree-widget-leaf-control (widget)
514 "Return the leaf node control specified in WIDGET."
515 (or (widget-get widget :leaf-control)
516 'tree-widget-leaf-control))
517
518(defsubst tree-widget-guide (widget)
519 "Return the guide line widget specified in WIDGET."
520 (or (widget-get widget :guide)
521 'tree-widget-guide))
522
523(defsubst tree-widget-end-guide (widget)
524 "Return the end of guide line widget specified in WIDGET."
525 (or (widget-get widget :end-guide)
526 'tree-widget-end-guide))
527
528(defsubst tree-widget-no-guide (widget)
529 "Return the invisible guide line widget specified in WIDGET."
530 (or (widget-get widget :no-guide)
531 'tree-widget-no-guide))
532
533(defsubst tree-widget-handle (widget)
534 "Return the node handle line widget specified in WIDGET."
535 (or (widget-get widget :handle)
536 'tree-widget-handle))
537
538(defsubst tree-widget-no-handle (widget)
539 "Return the node invisible handle line widget specified in WIDGET."
540 (or (widget-get widget :no-handle)
541 'tree-widget-no-handle))
542
543(defun tree-widget-keep (arg widget)
544 "Save in ARG the WIDGET properties specified by :keep."
545 (dolist (prop (widget-get widget :keep))
546 (widget-put arg prop (widget-get widget prop))))
547
548(defun tree-widget-children-value-save (widget &optional args node)
549 "Save WIDGET children values.
550Children properties and values are saved in ARGS if non-nil else in
551WIDGET :args property value. Data node properties and value are saved
552in NODE if non-nil else in WIDGET :node property value."
553 (let ((args (or args (widget-get widget :args)))
554 (node (or node (tree-widget-node widget)))
555 (children (widget-get widget :children))
556 (node-child (widget-get widget :tree-widget--node))
557 arg child)
558 (while (and args children)
559 (setq arg (car args)
560 args (cdr args)
561 child (car children)
562 children (cdr children))
563 (if (tree-widget-p child)
564;;;; The child is a tree node.
565 (progn
566 ;; Backtrack :args and :node properties.
567 (widget-put arg :args (widget-get child :args))
568 (widget-put arg :node (tree-widget-node child))
569 ;; Save :open property.
570 (widget-put arg :open (widget-get child :open))
571 ;; The node is open.
572 (when (widget-get child :open)
573 ;; Save the widget value.
574 (widget-put arg :value (widget-value child))
575 ;; Save properties specified in :keep.
576 (tree-widget-keep arg child)
577 ;; Save children.
578 (tree-widget-children-value-save
579 child (widget-get arg :args) (widget-get arg :node))))
580;;;; Another non tree node.
581 ;; Save the widget value
582 (widget-put arg :value (widget-value child))
583 ;; Save properties specified in :keep.
584 (tree-widget-keep arg child)))
585 (when (and node node-child)
586 ;; Assume that the node child widget is not a tree!
587 ;; Save the node child widget value.
588 (widget-put node :value (widget-value node-child))
589 ;; Save the node child properties specified in :keep.
590 (tree-widget-keep node node-child))
591 ))
592
593(defvar tree-widget-after-toggle-functions nil
594 "Hooks run after toggling a `tree-widget' folding.
595Each function will receive the `tree-widget' as its unique argument.
596This variable should be local to each buffer used to display
597widgets.")
598
599(defun tree-widget-close-node (widget &rest ignore)
600 "Close the `tree-widget' node associated to this control WIDGET.
601WIDGET's parent should be a `tree-widget'.
602IGNORE other arguments."
603 (let ((tree (widget-get widget :parent)))
604 ;; Before folding the node up, save children values so next open
605 ;; can recover them.
606 (tree-widget-children-value-save tree)
607 (widget-put tree :open nil)
608 (widget-value-set tree nil)
609 (run-hook-with-args 'tree-widget-after-toggle-functions tree)))
610
611(defun tree-widget-open-node (widget &rest ignore)
612 "Open the `tree-widget' node associated to this control WIDGET.
613WIDGET's parent should be a `tree-widget'.
614IGNORE other arguments."
615 (let ((tree (widget-get widget :parent)))
616 (widget-put tree :open t)
617 (widget-value-set tree t)
618 (run-hook-with-args 'tree-widget-after-toggle-functions tree)))
619
620(defun tree-widget-value-delete (widget)
621 "Delete tree WIDGET children."
622 ;; Delete children
623 (widget-children-value-delete widget)
624 ;; Delete node child
625 (widget-delete (widget-get widget :tree-widget--node))
626 (widget-put widget :tree-widget--node nil))
627
628(defun tree-widget-value-create (tree)
629 "Create the TREE widget."
630 (let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs
631 (widget-glyph-enable widget-image-enable) ; XEmacs
632 (node (tree-widget-node tree))
633 children buttons)
634 (if (widget-get tree :open)
635;;;; Unfolded node.
636 (let* ((args (widget-get tree :args))
637 (dynargs (widget-get tree :dynargs))
638 (flags (widget-get tree :tree-widget--guide-flags))
639 (rflags (reverse flags))
640 (guide (tree-widget-guide tree))
641 (noguide (tree-widget-no-guide tree))
642 (endguide (tree-widget-end-guide tree))
643 (handle (tree-widget-handle tree))
644 (nohandle (tree-widget-no-handle tree))
645 ;; Lookup for images and set widgets' tag-glyphs here,
646 ;; to allow to dynamically change the image theme.
647 (guidi (tree-widget-find-image "guide"))
648 (noguidi (tree-widget-find-image "no-guide"))
649 (endguidi (tree-widget-find-image "end-guide"))
650 (handli (tree-widget-find-image "handle"))
651 (nohandli (tree-widget-find-image "no-handle"))
652 child)
653 (when dynargs
654 ;; Request the definition of dynamic children
655 (setq dynargs (funcall dynargs tree))
656 ;; Unless children have changed, reuse the widgets
657 (unless (eq args dynargs)
658 (setq args (mapcar 'widget-convert dynargs))
659 (widget-put tree :args args)))
660 ;; Insert the node control
661 (push (widget-create-child-and-convert
662 tree (if args (tree-widget-open-control tree)
663 (tree-widget-empty-control tree))
664 :tag-glyph (tree-widget-find-image
665 (if args "open" "empty")))
666 buttons)
667 ;; Insert the node element
668 (widget-put tree :tree-widget--node
669 (widget-create-child-and-convert tree node))
670 ;; Insert children
671 (while args
672 (setq child (car args)
673 args (cdr args))
674 ;; Insert guide lines elements
675 (dolist (f rflags)
676 (widget-create-child-and-convert
677 tree (if f guide noguide)
678 :tag-glyph (if f guidi noguidi))
679 (widget-create-child-and-convert
680 tree nohandle :tag-glyph nohandli)
681 )
682 (widget-create-child-and-convert
683 tree (if args guide endguide)
684 :tag-glyph (if args guidi endguidi))
685 ;; Insert the node handle line
686 (widget-create-child-and-convert
687 tree handle :tag-glyph handli)
688 ;; If leaf node, insert a leaf node control
689 (unless (tree-widget-p child)
690 (push (widget-create-child-and-convert
691 tree (tree-widget-leaf-control tree)
692 :tag-glyph (tree-widget-find-image "leaf"))
693 buttons))
694 ;; Insert the child element
695 (push (widget-create-child-and-convert
696 tree child
697 :tree-widget--guide-flags (cons (if args t) flags))
698 children)))
699;;;; Folded node.
700 ;; Insert the closed node control
701 (push (widget-create-child-and-convert
702 tree (tree-widget-close-control tree)
703 :tag-glyph (tree-widget-find-image "close"))
704 buttons)
705 ;; Insert the node element
706 (widget-put tree :tree-widget--node
707 (widget-create-child-and-convert tree node)))
708 ;; Save widget children and buttons
709 (widget-put tree :children (nreverse children))
710 (widget-put tree :buttons buttons)
711 ))
712
713;;; Utilities
714;;
715(defun tree-widget-map (widget fun)
716 "For each WIDGET displayed child call function FUN.
717FUN is called with three arguments like this:
718
719 (FUN CHILD IS-NODE WIDGET)
720
721where:
722- - CHILD is the child widget.
723- - IS-NODE is non-nil if CHILD is WIDGET node widget."
724 (when (widget-get widget :tree-widget--node)
725 (funcall fun (widget-get widget :tree-widget--node) t widget)
726 (dolist (child (widget-get widget :children))
727 (if (tree-widget-p child)
728 ;; The child is a tree node.
729 (tree-widget-map child fun)
730 ;; Another non tree node.
731 (funcall fun child nil widget)))))
732
733(provide 'tree-widget)
734
735;;; arch-tag: c3a1ada2-1663-41dc-9d16-2479ed8320e8
736;;; tree-widget.el ends here
diff --git a/lisp/version.el b/lisp/version.el
index 6c99d8de1d6..9cae0d25702 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -61,9 +61,9 @@ to the system configuration; look at `system-configuration' instead."
61 system-configuration 61 system-configuration
62 (cond ((featurep 'motif) 62 (cond ((featurep 'motif)
63 (concat ", " (substring motif-version-string 4))) 63 (concat ", " (substring motif-version-string 4)))
64 ((featurep 'x-toolkit) ", X toolkit")
65 ((featurep 'gtk) 64 ((featurep 'gtk)
66 (concat ", GTK+ Version " gtk-version-string)) 65 (concat ", GTK+ Version " gtk-version-string))
66 ((featurep 'x-toolkit) ", X toolkit")
67 (t "")) 67 (t ""))
68 (if (and (boundp 'x-toolkit-scroll-bars) 68 (if (and (boundp 'x-toolkit-scroll-bars)
69 (memq x-toolkit-scroll-bars '(xaw xaw3d))) 69 (memq x-toolkit-scroll-bars '(xaw xaw3d)))
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 33f1f06ba9a..b1a89e4fbef 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -2294,7 +2294,7 @@ Return an alist of (TYPE MATCH)."
2294 2294
2295(defun widget-radio-button-notify (widget child &optional event) 2295(defun widget-radio-button-notify (widget child &optional event)
2296 ;; Tell daddy. 2296 ;; Tell daddy.
2297 (widget-apply (widget-get widget :parent) :action widget event)) 2297 (widget-apply (widget-get widget :parent) :action event))
2298 2298
2299;;; The `radio-button-choice' Widget. 2299;;; The `radio-button-choice' Widget.
2300 2300