summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS3
-rw-r--r--admin/notes/exit-value12
-rw-r--r--etc/ChangeLog19
-rw-r--r--etc/NEWS27
-rw-r--r--etc/PROBLEMS6
-rw-r--r--etc/TUTORIAL.pt_BR1089
-rw-r--r--etc/TUTORIAL.translators1
-rw-r--r--etc/compilation.txt18
-rw-r--r--etc/ru-refcard.ps2087
-rw-r--r--etc/ru-refcard.tex516
-rw-r--r--etc/tree-widget/default/close.pngbin0 -> 999 bytes
-rw-r--r--etc/tree-widget/default/close.xpm284
-rw-r--r--etc/tree-widget/default/empty.pngbin0 -> 999 bytes
-rw-r--r--etc/tree-widget/default/empty.xpm284
-rw-r--r--etc/tree-widget/default/end-guide.pngbin0 -> 913 bytes
-rw-r--r--etc/tree-widget/default/end-guide.xpm284
-rw-r--r--etc/tree-widget/default/guide.pngbin0 -> 911 bytes
-rw-r--r--etc/tree-widget/default/guide.xpm284
-rw-r--r--etc/tree-widget/default/handle.pngbin0 -> 916 bytes
-rw-r--r--etc/tree-widget/default/handle.xpm284
-rw-r--r--etc/tree-widget/default/leaf.pngbin0 -> 994 bytes
-rw-r--r--etc/tree-widget/default/leaf.xpm284
-rw-r--r--etc/tree-widget/default/no-guide.pngbin0 -> 914 bytes
-rw-r--r--etc/tree-widget/default/no-guide.xpm284
-rw-r--r--etc/tree-widget/default/no-handle.pngbin0 -> 914 bytes
-rw-r--r--etc/tree-widget/default/no-handle.xpm284
-rw-r--r--etc/tree-widget/default/open.pngbin0 -> 1006 bytes
-rw-r--r--etc/tree-widget/default/open.xpm284
-rw-r--r--etc/tree-widget/folder/close.pngbin0 -> 981 bytes
-rw-r--r--etc/tree-widget/folder/close.xpm285
-rw-r--r--etc/tree-widget/folder/empty.pngbin0 -> 1008 bytes
-rw-r--r--etc/tree-widget/folder/empty.xpm285
-rw-r--r--etc/tree-widget/folder/end-guide.pngbin0 -> 942 bytes
-rw-r--r--etc/tree-widget/folder/end-guide.xpm285
-rw-r--r--etc/tree-widget/folder/guide.pngbin0 -> 940 bytes
-rw-r--r--etc/tree-widget/folder/guide.xpm285
-rw-r--r--etc/tree-widget/folder/handle.pngbin0 -> 915 bytes
-rw-r--r--etc/tree-widget/folder/handle.xpm285
-rw-r--r--etc/tree-widget/folder/leaf.pngbin0 -> 980 bytes
-rw-r--r--etc/tree-widget/folder/leaf.xpm285
-rw-r--r--etc/tree-widget/folder/no-guide.pngbin0 -> 934 bytes
-rw-r--r--etc/tree-widget/folder/no-guide.xpm285
-rw-r--r--etc/tree-widget/folder/no-handle.pngbin0 -> 942 bytes
-rw-r--r--etc/tree-widget/folder/no-handle.xpm285
-rw-r--r--etc/tree-widget/folder/open.pngbin0 -> 1019 bytes
-rw-r--r--etc/tree-widget/folder/open.xpm285
-rw-r--r--leim/.gitignore4
-rw-r--r--leim/ChangeLog15
-rw-r--r--leim/Makefile.in21
-rw-r--r--leim/quail/sisheng.el292
-rw-r--r--lib-src/ChangeLog4
-rw-r--r--lib-src/test-distrib.c6
-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
-rw-r--r--lispref/ChangeLog6
-rw-r--r--lispref/modes.texi9
-rw-r--r--mac/Emacs.app/Contents/.gitignore1
-rw-r--r--man/ChangeLog11
-rw-r--r--man/building.texi103
-rw-r--r--man/emacs.texi6
-rw-r--r--man/help.texi6
-rw-r--r--msdos/ChangeLog6
-rw-r--r--msdos/sedleim.inp6
-rw-r--r--src/.gdbinit12
-rw-r--r--src/ChangeLog191
-rw-r--r--src/alloc.c32
-rw-r--r--src/blockinput.h3
-rw-r--r--src/buffer.h19
-rw-r--r--src/ccl.c4
-rw-r--r--src/charset.c26
-rw-r--r--src/data.c2
-rw-r--r--src/emacs.c1
-rw-r--r--src/image.c475
-rw-r--r--src/keyboard.c22
-rw-r--r--src/lisp.h52
-rw-r--r--src/macfns.c4
-rw-r--r--src/macmenu.c3
-rw-r--r--src/macterm.c24
-rw-r--r--src/macterm.h14
-rw-r--r--src/msdos.c33
-rw-r--r--src/print.c35
-rw-r--r--src/process.c15
-rw-r--r--src/regex.c2
-rw-r--r--src/textprop.c23
-rw-r--r--src/w32.c14
-rw-r--r--src/w32console.c26
-rw-r--r--src/w32fns.c156
-rw-r--r--src/w32heap.c3
-rw-r--r--src/w32inevt.c12
-rw-r--r--src/w32proc.c8
-rw-r--r--src/w32term.c16
-rw-r--r--src/window.c9
-rw-r--r--src/xdisp.c28
-rw-r--r--src/xfaces.c32
-rw-r--r--src/xfns.c5
168 files changed, 15020 insertions, 1513 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index d1340adc070..5b23f9af189 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -104,6 +104,9 @@ Miles Bader
src/editfns.c
lisp/textmodes/refill.el
+Thien-Thi Nguyen
+ VMS
+
==============================================================================
3.
==============================================================================
diff --git a/admin/notes/exit-value b/admin/notes/exit-value
index 2eb598bf495..e59bb614b9b 100644
--- a/admin/notes/exit-value
+++ b/admin/notes/exit-value
@@ -21,3 +21,15 @@ value requirements outlined in the first paragraph! That is the job of the
#endif
Values aside from EXIT_SUCCESS and EXIT_FAILURE are tricky.
+
+
+
+ttn 2004-05-12
+
+Values aside from EXIT_SUCCESS and EXIT_FAILURE can be used to indicate
+finer gradations of failure. If this is the only information available
+to the caller, clamping such values to EXIT_FAILURE loses information.
+If there are other ways to indicate the problem to the caller (such as
+a message to stderr) it may be ok to clamp. In all cases, it is the
+relationship between the program and its caller that must be examined.
+[Insert ZAMM quote here.]
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 6e2f2378536..faeb5f4f21c 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,22 @@
+2004-05-16 Juri Linkov <juri@jurta.org>
+
+ * TUTORIAL.pt_BR: Add coding: latin-1, sentence-end-double-space: nil.
+
+ * ru-refcard.tex: Add C-u and RET to `C-h t Russian'.
+
+2004-05-15 Alex Ott <ott@jet.msk.su>
+
+ * ru-refcard.tex, ru-refcard.ps: New files.
+
+2004-05-14 David Ponce <david@dponce.com>
+
+ * tree-widget: New directory containing tree-widget themes and
+ images.
+
+2004-04-13 Marcelo Toledo <marcelo@marcelotoledo.org>
+
+ * TUTORIAL.pt_BR: initial check-in.
+
2004-05-06 Dave Love <fx@gnu.org>
* emacs.py: New file for python-mode's internal use.
diff --git a/etc/NEWS b/etc/NEWS
index dd027945f3c..b451fd07efd 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -90,6 +90,12 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
* Changes in Emacs 21.4
+** New input method chinese-sisheng for inputting Chinese Pinyin
+characters.
+
+** New command quail-show-key shows what key (or key sequence) to type
+in the current input method to input a character at point.
+
** Convenient commands to switch buffers in a cyclic order are C-x <left>
(prev-buffer) and C-x <right> (next-buffer).
@@ -97,8 +103,8 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
C-c <left> and C-c <right>, respectively. This is an incompatible change.
** Help commands `describe-funcion' and `describe-key' now show function
-arguments in italics. To change the default highlighting customize the
-face `help-argument-name'.
+arguments in lowercase italics on displays that support it. To change the
+default, redefine the function `help-default-arg-highlight'.
---
** The comint prompt can now be made read-only, using the new user
@@ -795,9 +801,9 @@ to give it focus.
+++
** The new command `describe-char' (C-u C-x =) pops up a buffer with
description various information about a character, including its
-encodings and syntax, its text properties, overlays, and widgets at
-point. You can get more information about some of them, by clicking
-on mouse-sensitive areas or moving there and pressing RET.
+encodings and syntax, its text properties, how to input, overlays, and
+widgets at point. You can get more information about some of them, by
+clicking on mouse-sensitive areas or moving there and pressing RET.
+++
** The new command `multi-occur' is just like `occur', except it can
@@ -1644,6 +1650,10 @@ Lines that match are never indented, and are given distinctive font-locking.
** F90 mode has new navigation commands `f90-end-of-block',
`f90-beginning-of-block', `f90-next-block', `f90-previous-block'.
+** F90 mode now has support for hs-minor-mode (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
+
---
** Prolog mode has a new variable `prolog-font-lock-keywords'
to support use of font-lock.
@@ -1791,6 +1801,10 @@ to view diffs or log entries directly from vc-annotate-mode:
* New modes and packages in Emacs 21.4
+** The library tree-widget.el provides a new widget to display a set
+of hierarchical data as an outline. For example, the tree-widget is
+well suited to display a hierarchy of directories and files.
+
** The wdired.el package allows you to use normal editing commands on dired
buffers to change filenames, permissions, etc...
@@ -2019,6 +2033,9 @@ configuration files.
* Lisp Changes in Emacs 21.4
+** New function quail-find-key returns a list of keys to type in the
+current input method to input a character.
+
** New functions posn-at-point and posn-at-x-y returns
click-event-style position information for a given visible buffer
position or for a given window pixel coordinate.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 97c7e6cf67e..c3be7f83a7c 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -221,6 +221,12 @@ __MSVCRT__, like so:
configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__
+* Building the MS-Windows port fails with a CreateProcess failure.
+
+Some versions of mingw32 make on some versions of Windows do not seem
+to detect the shell correctly. Try "make SHELL=cmd.exe", or if that
+fails, try running make from Cygwin bash instead.
+
* Building the MS-Windows port with Leim fails in the `leim' directory.
The error message might be something like this:
diff --git a/etc/TUTORIAL.pt_BR b/etc/TUTORIAL.pt_BR
new file mode 100644
index 00000000000..58101c28edb
--- /dev/null
+++ b/etc/TUTORIAL.pt_BR
@@ -0,0 +1,1089 @@
+Copyright (c) 2004 Free Software Foundation, Inc; Veja no fim as
+condições.
+
+Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezes
+nomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ou
+ALT). Antes de escrever isso tudo toda vez, usaremos as seguintes
+abreviações:
+
+ C-<chr> Significa pressionar a tecla CONTROL enquanto digitar o
+ caracter <chr>
+ Assim, C-f seria: Pressionar a tecla CONTROL e digitar f.
+ M-<chr> Significa pressionar a tecla META, EDIT ou ALT enquanto
+ digitar <chr>.
+ Se não tiver META, EDIT ou ALT, no lugar digite ESC e depois
+ <chr>. Escrevemos <ESC> para tecla ESC.
+
+
+Nota importante: para terminar a seção do Emacs, digite C-x C-c. (Dois
+caracteres.) Os caracteres ">>" na margem esquerda indicam direções para
+você tentar usar um comando. Por exemplo:
+<<Linhas vazias inseridas ao redor da linha seguinte por
+ajuda-com-tutorial>>
+[Metade da página em branco para propósitos didáticos. O texto continua
+abaixo]
+>> Agora digite C-v (Ver próxima tela) para ir para próxima tela.
+ (vá em frente, faça isso pressionando a tecla CONTROL enquanto
+ digitar v).
+ De agora em diante, você deve fazer isso de novo sempre que você
+ terminar de ler a tela.
+
+Note que tem uma sobreposição de duas linhas quando você move de tela em
+tela; isso fornece uma continuidade para que você continue lendo o
+texto.
+
+A primeira coisa que você precisa saber é como se mover de um lugar a
+outro no texto. Você já sabe como se mover para próxima tela, com
+C-v. Para se mover para trás uma tela, digite M-v (pressione a tecla
+META enquanto digita v, ou digite <ESC>v se você não tiver a tecla META,
+EDIT ou ALT).
+
+>> Tente digitar M-v e depois C-v, algumas vezes.
+
+
+* SUMÁRIO
+---------
+
+Os comandos a seguir são úteis para visualizar telas inteiras
+
+ C-v Move para tela inteira posterior
+ M-x Move para tela inteira anterior
+ C-l Limpa a tela e re-mostra todo o texto, movendo o texto ao
+ redor do cursor para o centro da tela. (Isso é
+ control-L, não control-1.)
+
+>> Encontre o cursor, e note o texto que está perto dele.
+ Digite C-l.
+ Encontre o cursor novamente e perceba que o mesmo texto continua
+ perto do cursor.
+
+
+* CONTROLE BÁSICO DO CURSOR
+---------------------------
+
+Movendo de uma tela inteira para outra tela cheia é útil, mas como você
+move para um lugar especifico com o mesmo texto na tela?
+
+Existem diversas maneiras para você poder fazer isso. A maneira mais
+básica é utilizar os comandos C-p, C-b, C-f e C-n. Cada um desses
+comandos movem o cursor uma linha ou coluna na tela em uma direção
+particular. Aqui está uma tabela mostrando esses quatro comandos e as
+direções que eles movem:
+
+ Linha anterior, C-p
+ :
+ :
+ Traz, C-b .... Posição corrente do cursor .... Frente, C-f
+ :
+ :
+ Linha posterior, C-n
+
+>> Mova o cursor para a linha no meio do diagrama acima utilizando C-n
+ ou C-p. Digite C-l para ver o diagrama inteiro centralizado na tela.
+
+Você provavelmente achará isso fácil pensando neles pela letra: P para
+Previous (anterior), N para Next (Posterior), B para Backward (trás) e F
+para forward (frente). Estes são os comandos básicos de posicionamento
+de cursor e você estará utilizando eles a TODO tempo, então seria ótimo
+se você os aprendesse agora.
+
+>> Faça alguns C-n's para trazer o cursor abaixo desta linha.
+
+>> Mova para a linha com C-f's e depois para cima com C-p's.
+ Veja o que C-p faz quando o cursor está no meio da linha.
+
+Cada linha de texto termina com um caractere de nova linha, que serve
+para separar da próxima linha. No fim da ultima linha deve ter um
+caractere de nova linha (mas não é exigido pelo Emacs).
+
+>> Tente digitar C-b no começo da linha. O cursor deve mover para o fim
+ da linha anterior. Isso acontece por que ele se moveu para trás
+ através do caractere de nova linha.
+
+C-f pode mover o cursor através de uma Nova linha do mesmo jeito que
+ C-b.
+
+>> Faça mais alguns C-b's, assim você percebe onde o está o cursor.
+ Depois alguns C-f's para retornar para o fim da linha.
+ Depois mais um C-f para mover para linha seguinte.
+
+Quando você move o cursor passando o topo ou o rodapé da tela, o próximo
+texto além da borda desloca-se na tela. Isso é chamado rolagem. Isso
+ativa o Emacs para mover o cursor para o lugar especificado no texto sem
+move-lo fora da tela.
+
+>> Tente mover o cursor fora do rodapé da tela com C-n, e veja o que
+ acontece.
+
+Se mover por caracteres é muito lento, você pode se mover por
+palavras. M-f (Meta-f) move uma palavra para frente e M-b uma palavra
+para trás.
+
+>> Digite alguns M-f's e M-b's
+
+Quando você está no meio de uma palavra, M-f move o cursor para o fim da
+mesma. Quando você está em um espaço em branco no meio de duas palavras,
+M-f move o cursor para o fim da palavra seguinte. M-b funciona do mesmo
+jeito na direção contraria.
+
+>> Digite M-f e M-b algumas vezes, intercalado com C-f's e C-b's assim
+ você pode observar a ação do M-f e M-b de varias lugares dentro e no
+ meio de palavras.
+
+Observe o paralelismo entre C-f e C-b em uma mão, e M-f e M-b na
+outra. Muito freqüentemente os caracteres Meta são usados para operações
+relacionadas com as unidades definidas pela linguagem (palavras,
+sentenças, parágrafos), enquanto caracteres Control operam nas unidades
+básicas que são independente do que você está editando (caracteres,
+linhas, etc).
+
+Esse paralelismo aplica-se entre linhas e sentenças: C-a e C-e move o
+cursor para o começo ou fim da linha, e M-a e M-e move o cursor para o
+começo ou fim da sentença.
+
+>> Tente alguns C-a's, e depois alguns C-e's.
+ Tente alguns M-a's, e depois alguns M-e's.
+
+Veja como repetidos C-a's fazem nada, mas repetidos M-a's mantém movendo
+mais uma sentença. Embora estes não sejam completamente análogos, cada
+um parece natural.
+
+A posição do cursor no texto é também chamado "ponto" (point). Para
+parafrasear, o cursor mostra na tela onde o ponto é encontrado no texto.
+
+Aqui está um simples sumário das operações de movimento de cursor,
+incluindo comandos de movimento de palavra e sentença.
+
+ C-f Move o cursor um caractere para frente
+ C-b Move o cursor um caractere para trás
+
+ M-f Move o cursor uma palavra para frente
+ M-b Move o cursor uma palavra para trás
+
+ C-n Move o cursor para linha posterior
+ C-p Move o cursor para linha anterior
+
+ C-a Move o cursor para o começo da linha
+ C-e Move o cursor para o fim da linha
+
+ M-a Move o cursor para trás no começo da sentença
+ M-e Move o cursor para frente no fim da sentença
+
+>> Tente agora todos estes comandos algumas vezes para praticar.
+ Estes são os comandos mais utilizados.
+
+Outros dois comandos de movimento de cursor importantes são M-< (Meta
+Menor-que), o qual move o cursor para o começo de todo o texto, e M->
+(Meta Maior-que), o qual move para o fim de todo o texto.
+
+Na maioria dos terminais, o "<" é acima da vírgula, então você precisa
+utilizar a tecla shift para digita-la. Nestes terminais você precisa
+utilizar a tecla shift para digitar M-< também; sem a tecla shift, você
+estaria teclando M-virgula.
+
+>> Tente agora M-<, para mover o cursor ao começo do tutorial.
+ Use então C-v repetidamente para trazer o cursor novamente aqui.
+
+>> Tente agora M->, para mover o cursor ao fim do tutorial.
+ Use então M-v repetidamente para trazer o cursor novamente aqui.
+
+Você também pode mover o cursor com as setas, se o seu terminal tem
+teclas com setas. Nós recomendamos aprender C-b, C-f, C-n e C-p por três
+razões. Primeira, elas funcionam em todos os terminais. Segunda, uma vez
+que você ganhar prática usando o Emacs, você descobrirá que digitar
+nestes caracteres Control é mais rápido do que digitar nas setas (porque
+você não tem que mover suas mãos tão longe da posição de
+digitação). Terceira, uma vez que você tiver o hábito de utilizar estes
+comandos de caracteres Control, você pode facilmente aprender como usar
+outros comandos avançados de movimentação do cursor.
+
+A maioria dos comandos do Emacs aceitam argumentos numéricos; para
+maioria dos comandos, isso serve como um fator de repetição. A maneira
+que você da a um comando uma repetição teclando C-u e depois os dígitos
+antes de digitar o comando. Se você tem o META (EDIT ou ALT), tem outra
+alternativa para digitar um argumento numérico: digite os dígitos
+enquanto pressionando a tecla META. Nós recomendamos aprender o método
+C-u porque funciona em todos os terminais. O argumento numérico também é
+chamado de "argumento prefixo", porque você digita o argumento antes do
+comando que ele se aplica.
+
+Por exemplo, C-u 8 C-f move o cursor oito caracteres para frente
+
+>> Tente usar C-n ou C-p com um argumento numérico, para mover o
+ cursor para um linha perto dessa com um único comando.
+
+A maioria dos comandos usam o argumento numérico para um fator de
+repetição, mas alguns comandos usam isso de outra maneira. Diversos
+comandos (mas nenhum daqueles comandos que você tenha aprendido até
+agora) usam isso como uma marca -- a presença de um argumento prefixo,
+independente do seu valor, faz o comando fazer alguma coisa diferente.
+
+C-v e M-v são outro tipo de exceção. Quando você da um argumento, eles
+rolam a tela para cima ou para baixo por aquele número de linhas, de
+preferência com a tela cheia. Por exemplo, C-u 8 C-v rola a tela 8
+linhas.
+
+>> Tente agora digitar C-u 8 C-v.
+
+Isso deve ter rolado a tela para cima 8 linhas. Se você quiser rolar a
+tela para baixo novamente, você pode dar um argumento para o M-v.
+
+Se você está usando um display com janelas, como o X11 ou MS-Windows,
+deve ter uma área retangular alta chamada barra de rolagem na mão
+esquerda da janela do Emacs. Você pode rolar o texto clicando o mouse na
+barra de rolagem.
+
+>> Tente pressionar o botão do meio no topo da área destacada junto a
+ barra de rolagem. Isso deve rolar o texto para uma determinada
+ posição dependendo de quão alto ou baixo você clicar.
+
+>> Tente mover o mouse para cima e para baixo, enquanto pressionar o
+ botão do meio. Você verá que o texto rolará para cima e baixo assim
+ que você mover o mouse.
+
+
+* QUANDO O EMACS PARECE MORTO
+-----------------------------
+
+Se o Emacs parar de responder os seus comandos, você pode seguramente
+para-lo digitando C-g. Você pode utilizar C-g para parar um comando que
+está levando muito tempo para executar.
+
+Você também pode utilizar C-g para interromper um argumento numérico ou
+o inicio de um comando que você não quer terminar.
+
+>> Digite C-u 100 para fazer um argumento numérico de 100, e depois
+ digite C-g. Agora digite C-f. O Cursor deve mover apenas um
+ caractere, porque você cancelou o argumento com C-g.
+
+Se você digitou um <ESC> por engano, você pode sair dele com um c-g.
+
+
+* COMANDOS DESABILITADOS
+------------------------
+
+Alguns comandos do Emacs são "desabilitados" para que os usuários
+iniciantes não utilizem por acidente.
+
+Se você digita um dos comandos desabilitados, o Emacs mostrará uma
+mensagem dizendo qual comando foi, e pergunta se você quer seguir e
+executar o comando.
+
+Se você realmente quiser tentar o comando, digite Espaço na resposta da
+pergunta. Normalmente, se você não quer executar o comando desabilitado,
+responda a pergunta com "n".
+
+>> Digite C-x C-l (que é um comando desabilitado),
+ e então digite n para responder a pergunta.
+
+
+* JANELAS
+---------
+
+O Emacs pode ter diversas janelas, cada uma mostrando seu próprio
+texto. Nós vamos explicar mais tarde como utilizar estas múltiplas
+janelas. Neste momento nos queremos explicar como se livrar das janelas
+extras e voltar a edição básica em uma janela. É simples:
+
+ C-x 1 Uma janela (mate todas as outras janelas).
+
+Isto é Control-x seguido pelo digito 1. C-x 1 expande a janela que está
+com o cursor, para ocupar a tela inteira. Ela deleta todas as outras
+janelas.
+
+>> Mova o cursor para esta linha e digite C-u 0 C-l.
+>> Digite Control-h k Control-f.
+ Veja como esta janela diminui, enquanto uma nova aparece para mostrar
+ a documentação do comando Control-f.
+
+>> Digite C-x 1 e veja a listagem de documentação desaparecer.
+
+Este comando é diferente dos outros que você aprendeu por isso ele
+consiste em dois caracteres. Ele inicia com o caractere Control-x. Tem
+uma grande serie de comandos que iniciam com Control-x; a maioria deles
+tem a ver com janelas, arquivos, buffers, e coisas relacionadas. Estes
+comandos tem dois, três ou quatro caracteres de tamanho.
+
+
+* INSERINDO E DELETANDO
+-----------------------
+
+Se você quiser inserir um texto, apenas digite o texto. Os caracteres
+que você verá, como A, 7, *, etc. são vistos pelo Emacs como texto e são
+inseridos imediatamente. Digite <Return> para inserir um caractere de
+nova linha.
+
+Você pode deletar o último caractere que você inseriu digitando
+<Delete>. <Delete> é uma tecla no teclado, que está nomeado como
+"Del". Em algumas casos, a tecla "Backspace" serve como o <Delete>, mas
+nem sempre!
+
+Mas geralmente, <Delete> deleta o caractere imediatamente anterior a
+posição corrente do cursor.
+
+>> Faça isso agora - Digite alguns caracteres, então delete eles
+ digitando <Delete> algumas vezes. Não se preocupe em modificar este
+ arquivo; você não irá alterar o arquivo principal. Esta é a sua cópia
+ pessoal dele.
+
+Quando uma linha de texto fica muito grande na tela, a linha do texto é
+continuada na linha seguinte. Uma barra invertida ("\") na margem
+direita indica a linha que foi continuada.
+
+>> Insira texto até que você alcance a margem direita, e mantenha
+ inserindo. Você verá a linha de continuação aparecer.
+
+>> Utilize <Delete> para deletar o texto até a linha caber em uma linha
+ novamente. A linha de continuação irá embora.
+
+Você pode deletar o caractere de nova linha como qualquer outro
+caracter. Deletando o caractere de nova linha entre duas linhas você
+juntará as duas em uma única linha. Se o resultado for muito longo para
+acomodar na largura da tela, aparecerá um caractere de continuação.
+
+>> Mova o cursor para o inicio da linha e digite <Delete>. Isso juntará
+ esta linha com a anterior.
+
+>> Digite <Return> para re-inserir a nova linha que você deletou.
+
+Lembre-se que a maioria dos comandos do Emacs podem receber um número de
+repetição; isso inclui texto de caracteres. Repetir um texto de
+caractere o insere algumas vezes.
+
+>> Tente isso agora -- digite C-u 8 * para inserir ********.
+
+Você acabou de aprender o jeito mais simples de digitar alguma coisa no
+Emacs e corrigir os erros. Você pode deletar palavras ou linhas
+também. Aqui vai um sumário dos comandos de deleção:
+
+ <Delete> deleta o caractere imediatamente antes do cursor
+ M-d deleta o próximo caractere apos o cursor
+
+ M-<Delete> Mata a palavra imediatamente antes do cursor
+ M-d Mata a próxima palavra depois do cursor
+
+ C-k Mata a posição do cursor até o fim da linha
+ M-k Mata até o fim da sentença corrente
+
+Note que o <Delete> e o C-d vs M-<Delete> e M-d estende o paralelo
+iniciado por C-f e M-f (bem, <Delete> não é realmente um controle de
+caractere, mas não vamos nos preocupar com isso). C-k e M-k são como C-e
+e M-e, uma parte, nessas linhas são sentenças opostas.
+
+Você pode também matar parte de um buffer com um método uniforme. Mova
+para o fim dessa parte, e digite C-@ ou C-SPC (um ou outro). (SPC é a
+Barra de Espaço.) Mova para o outro fim dessa parte, e digite C-w. Isso
+ira matar todo o texto entre as duas posições.
+
+>> Mova o cursor para o V no inicio do parágrafo anterior.
+>> Digite C-SPC. Emacs vai mostrar a mensagem "Mark set" no rodapé da
+ tela.
+>> Mova o cursor para o . (ponto) no "fim", na segunda linha do
+ parágrafo.
+>> Digite C-w. Isso vai matar o texto iniciando no V, e terminando bem
+ antes do . (ponto).
+
+A diferença entra "matar" e "deletar" é que o texto "matado" pode ser
+re-inserido, onde os textos "deletados" não podem ser re-inseridos.
+Re-inserção de um texto matado chama-se colar (yanking). Geralmente, o
+comando que pode remover bastante texto mata o texto (eles fazem com que
+você possa colar (yank) o texto), enquanto os comandos que removem um
+caractere, ou apenas linhas brancas ou espaços, fazem deleção (para que
+você não possa colar esse texto).
+
+>> Mova o cursor para o inicio da linha que não esteja vazia.
+ Agora digite C-k para matar o texto nessa linha.
+>> Digite C-k pela segunda vez. Você verá que a nova linha que segue a
+ linha será matada.
+
+Note que um simples C-k mata o conteúdo de uma linha, é um segundo C-k
+mata a linha, e faz com que todas as outras linhas movam para cima. C-k
+trata um argumento numérico especialmente: ele mata tantas linhas E seus
+conteúdos. Isso não é uma simples repetição. C-u 2 C-k mata duas linhas
+e suas novas linhas; digitar C-k duas vezes não faria isso.
+
+Para trazer o texto matado novamente é chamado colar "yaking". (Pense
+nisso como colar, ou trazer de volta, algum texto que foi levado
+embora.) Você pode colar (yank) o texto matado no mesmo lugar onde ele
+foi matado, ou em qualquer outro lugar do buffer, ou ate em um arquivo
+diferente. Você pode colar o texto diversas vezes, o que fará diversas
+copias dele.
+
+O comando para colar é C-y. Ele re-insere o ultimo texto matado, na
+posição corrente do cursor.
+
+>> Tente; digite C-y para colar o texto novamente.
+
+Se você fizer diversos C-k's em uma linha, todo esse texto matado será
+salvo junto, então aquele C-y vai colar todas aquelas linhas de uma vez.
+
+>> Faca isso agora, digite C-k diversas vezes.
+
+Agora pegue o texto matado:
+
+Digite C-y. Então mova o cursor para baixo algumas linhas e digite C-y
+novamente. Agora você sabe como copiar determinado texto.
+
+O que você faria se você tivesse determinado texto que você gostaria de
+colar, e então você mata alguma outra coisa? C-y ira colar o kill mais
+recente. Mas o antigo texto ainda não foi perdido. Você pode tê-lo
+novamente usando o comando M-y. Depois que você der um C-y para pegar o
+kill mais recente, digitar M-y troca o que você colou pelo anterior a
+ele. Digitar M-y novamente e novamente traz kills anteriores e
+anteriores. Quando você tiver alcançado o texto que você que esta
+procurando, você não precisa fazer nada para mantê-lo. Apenas continue
+com a sua edição, deixando o texto onde ele esta.
+
+Se você digitar M-y o suficiente, você começará do inicio novamente (o
+kill mais recente).
+
+>> Mate uma linha, mova por ai, mate mais uma linha.
+ Agora digite C-y para colar a segunda linha matada.
+ Agora digite M-y e ele vai ser trocado pelo primeiro kill.
+ Faca mais alguns M-y's e veja o que você tem. Faca isso ate que o
+ segundo kill volte, e depois mais alguns.
+ Se você preferir, você pode tentar dar argumentos positivos e
+ negativos.
+
+
+* DESFAZENDO (UNDO)
+-------------------
+
+Se você fizer uma mudança no texto, e então decidir que isso foi um
+erro, você pode desfazer com o comando de desfazer (undo), C-x u.
+
+Normalmente, C-x u desfaz as mudanças feitas por um comando; se você
+repetir C-x u diversas vezes em uma linha, cada repetição irá desfazer
+um comando adicional.
+
+Mas tem duas exceções: comandos que não trocam o texto não contam (isso
+inclui o movimento do cursor e a barra de rolagem), e caracteres
+auto-inseridos são usualmente cuidados em grupos de mais de 20 (Isso e
+para reduzir o numero de C-x u's que você deve digitar para desfazer a
+inserção de um texto.).
+
+>> Mate essa linha com C-k, então digite C-x u e isso vai re-aparecer.
+
+C-_ é um comando alternativo para desfazer; ele funciona exatamente como
+o C-x u, mas é mais fácil de digitar diversas vezes em uma linha. A
+desvantagem de C-_ é que alguns teclados ele não é tão obvio para
+digitar. É exatamente por isso que o C-x u é fornecido. Em alguns
+terminais, você pode digitar C-_ digitando / enquanto segurando o
+CONTROL.
+
+Um argumento numérico para C-_ ou C-x u age como um contador de
+repetição.
+
+Você pode desfazer a deleção de texto da mesma maneira que você pode
+desfazer o kill de um texto. A distinção entre matar e deletar alguma
+coisa afeta se você pode colar com C-y; isso não faz diferença pro
+desfazer (undo).
+
+
+* ARQUIVOS
+----------
+
+Para poder fazer o texto que você edita permanente, você precisa
+coloca-lo em um arquivo. Ou então, isso será perdido quando o seu Emacs
+for fechado. Para colocar seu texto em um arquivo, você precisa
+"encontrar" o arquivo antes de digitar o texto (Isso também é chamado
+"visitar" um arquivo.).
+
+Encontrando um arquivo significa que você verá o conteúdo de um arquivo
+com o Emacs. De diversas maneiras, isso é como se você estivesse
+editando o arquivo. De qualquer maneira, as mudanças que você fizer
+utilizando o Emacs não se tornarão permanente ate que você "salve" o
+arquivo. Isso e para que você evite deixar um arquivo meio-modificado no
+sistema enquanto você não quer isso. Mesmo quando você salva, o Emacs
+deixa o arquivo original sobre um arquivo de nome alterado no caso que
+você mais tarde decida que aquelas mudanças foram um erro.
+
+Se você olhar no rodapé da tela você verá a linha que começa e termina
+com traços e inicia com "--:-- TUTORIAL.pt_BR" ou algo parecido com
+isso. Essa parte da tela normalmente mostra o nome do arquivo que você
+esta visitando. Agora mesmo, você esta visitando um arquivo chamado
+"TUTORIAL.pt_BR" que é sua própria copia do tutorial do Emacs. Quando
+você encontra um arquivo com o Emacs, o nome do arquivo aparecera nesse
+lugar especifico.
+
+Algo especial para se dizer sobre o comando de encontrar arquivo e que
+você tem que dizer qual nome do arquivo você quer. Dizemos que o comando
+"lê um argumento do terminal" (nesse caso, o argumento e o nome do
+arquivo). Depois que você digitar o comando
+
+ C-x C-f Encontrar um arquivo
+
+O Emacs pede para você digitar o nome do arquivo. O nome do arquivo
+aparece no rodapé da tela. A linha de rodapé é chamada de minibuffer
+quando é utilizada para esse tipo de introdução de dados. Você pode
+utilizar os comandos padrões do Emacs para editar o nome do arquivo.
+
+Enquanto você estiver digitando o nome do arquivo (ou qualquer outro
+tipo de dado para o minibuffer), você pode cancelar o comando com a
+tecla C-g.
+
+>> Digite C-x C-f, então digite C-g. Isso cancelara o minibuffer, e
+ também cancelara o comando C-x C-f que estava sendo utilizado no
+ minibuffer. Para que você não procure nenhum arquivo.
+
+Quando você terminar de digitar o nome do arquivo, digite <Return> para
+terminar. Então o comando C-x C-f ira trabalhar, e encontrar o arquivo
+que você escolheu. O minibuffer desaparece quando o comando C-x C-f e
+finalizado.
+
+Em pouco tempo o conteúdo do arquivo aparece na tela, e você poderá
+editar o conteúdo dele. Quando você terminar de fazer suas alterações
+permanentes digite o comando
+
+ C-x C-s Salve o arquivo
+
+Isso copia o texto do Emacs para o arquivo. A primeira vez que você
+fizer isso, o Emacs vai renomear o arquivo original para um novo nome
+para que você não o perca. O nome novo e feito adicionando "~" no fim do
+nome original do arquivo.
+
+Quando o salvamento for concluído, Emacs imprimira o nome do arquivo
+escrito. Você deve salvar o conteúdo do seu arquivo regularmente, para
+que você não perca muito trabalho caso o sistema caia por um algum
+motivo.
+
+>> Digite C-x C-s, salvara a copia do seu tutorial.
+ Isso ira imprimir "Wrote ...TUTORIAL.pt_BR" no fim da tela.
+
+NOTA: Em alguns sistemas, digitar C-x C-s ira travar a tela e você não
+verá saída do Emacs. Isso indica que um "recurso" do sistema operacional
+chamado "controle de fluxo" (flow control) esta interceptando o C-s e
+não deixando que passe pelo Emacs. Para destravar a tela, digite
+C-q. Então, leia na seção "Spontaneous Entry to Incremental Search" no
+manual do Emacs para uma dica de como lhe dar com esse "recurso".
+
+Você pode encontrar um arquivo já existente, para ver ou edita-lo. Você
+também pode encontrar um arquivo que ainda não existe. Essa é a maneira
+de criar um arquivo com o Emacs: encontre o arquivo, que ira iniciar
+vazio, então inicie inserindo o texto para o arquivo. Quando você pedir
+para "salvar" o arquivo, Emacs irá perguntar se você realmente quer
+criar o arquivo com o texto que você acabou de inserir. De agora em
+diante, você pode considerar que esta editando um arquivo já existente.
+
+
+* BUFFERS
+---------
+
+Se você encontrar um segundo arquivo com C-x C-f, o primeiro continuara
+dentro do Emacs. Você pode voltar para ele encontrando-o novamente com
+C-x C-f. Dessa maneira você pode ter um grande numero de arquivos dentro
+do Emacs.
+
+>> Crie um arquivo chamado "foo" digitando C-x C-f foo <Return>.
+ Depois digite algum texto, edite-o, e salve "foo" digitando C-x C-s.
+ Finalmente, digite C-x C-f TUTORIAL.pt_BR <Return> para voltar ao
+ tutorial.
+
+O Emacs guarda cada texto de um arquivo em um objeto chamado
+"buffer". Encontrar um arquivo cria um novo buffer dentro do Emacs. Para
+ver uma lista dos buffers que existem no serviço do seu Emacs, digite
+
+ C-x C-b Lista os buffers
+
+>> Tente C-x C-b agora.
+
+Veja como cada buffer tem um nome, e ele também pode ter um nome de
+arquivo para o conteúdo de arquivo que ele armazena. Alguns buffers não
+correspondem a arquivos. Por exemplo, o buffer chamado "*Buffer List*"
+não tem nenhum arquivo. Esse é o buffer que contem a lista de buffers
+que foi feito com C-x C-b. QUALQUER texto que você ver numa janela do
+Emacs e sempre parte de algum buffer.
+
+>> Digite C-x 1 para sair da lista dos buffers.
+
+Se você fizer mudanças no texto de um arquivo, então encontrar um novo
+arquivo, isso não salva o conteúdo do primeiro arquivo. As mudanças
+continuam dentro do Emacs, nos buffers de arquivo. A criação ou edição
+do buffer do segundo arquivo não tem nenhum efeito no buffer do primeiro
+arquivo. Isso é muito útil, mas também significa que você precisa de uma
+maneira conveniente de salvar o buffer do primeiro arquivo. Seria
+inconveniente ter que voltar para ele com C-x C-f para salva-lo com C-x
+C-s. Por isso temos
+
+ C-x s Salve alguns buffers
+
+C-x s pergunta a você sobre cada buffer que contem modificação e você
+não salvou. Ele te pergunta, para cada buffer, se você quer salvar.
+
+>> Insira uma linha de texto, então digite C-x s.
+ Isso deve te perguntar se você quer salvar o buffer chamado
+ TUTORIAL.pt_BR.
+ Responda sim para a pergunta digitando "y".
+
+
+* ESTENDENDO O COMANDO SET
+--------------------------
+
+Existem mais, muito mais comandos que o Emacs poderia possivelmente ser
+colocado em todos os control e caracteres meta. O Emacs faz isso com o
+comando X (estender). Que vem em duas versões:
+
+ C-x Extensor de caractere. Seguido por um caractere.
+ M-x Extensor de nome de comando. Seguido por um longo nome.
+
+Esses comandos que são geralmente úteis mas pouco usados que os comandos
+que você já aprendeu. Você já viu dois deles: os comandos de arquivos
+C-x C-f para Encontrar e C-x C-s para Salvar. Outro exemplo de um
+comando para finalizar a sessão do Emacs - esse é o comando C-x C-c (Não
+se preocupe em perder as mudanças que você fez; C-x C-c oferece salvar
+cada arquivo modificado antes de matar o Emacs.).
+
+C-z é o comando para sair do Emacs *temporariamente* - então você pode
+voltar para a mesma seção do Emacs depois.
+
+Em sistemas que permitem isso, C-z "suspende" o Emacs; isso e, retorna
+ao shell mas não destrói o Emacs. Nos shells mais comum, você pode
+resumir o Emacs com o comando 'fg' ou com '%emacs'.
+
+Nos sistemas que não implementam suspensão, C-z cria um subshell rodando
+sobre o Emacs para dar a você a chance de rodar outros programas e
+retornar ao Emacs depois; isso não "sai" verdadeiramente do Emacs. Nesse
+caso, o comando shell 'exit' é o comando usual para voltar ao Emacs do
+subshell.
+
+A hora de usar o C-x C-c é quando você esta prestes a sair do sistema
+operacional. É também a maneira correta de sair do Emacs quando chamado
+através de um cliente de e-mail ou outros utilitários, porque eles não
+controlam a suspensão do Emacs. Em outras circunstâncias, se você não
+estiver saindo do sistema operacional, é melhor suspender o Emacs com
+C-z ao invés de sair do Emacs.
+
+Existem diversos comando C-x. Aqui esta uma lista dos que você aprendeu:
+
+ C-x C-f Encontrar arquivo.
+ C-x C-s Salvar arquivo.
+ C-x C-b Listar buffers.
+ C-x C-c Sair do Emacs.
+ C-x 1 Deletar todas menos a janela atual.
+ C-x u Desfazer.
+
+O extensor de nome de comando é usado menos ainda, ou comandos que são
+usados apenas em alguns modos. Um exemplo é o comando replace-string,
+que globalmente troca uma string por outra. Quando você digita M-x, o
+Emacs te pergunta no rodapé da tela M-x e você deve digitar o nome do
+comando; nesse caso, "replace-string". Apenas digite "repl s<TAB>" e o
+Emacs ira completar o nome. (<TAB> é a tecla Tab, usualmente encontrando
+abaixo do CapsLock ou Shift bem na extremidade do teclado.). Termine o
+comando com <Return>.
+
+O comando replace-string requer dois argumentos - a string para ser
+trocada, e a string que ira substitui-la. Você precisa terminar cada
+argumento com <Return>.
+
+>> Mova o cursor para a linha branca duas linhas abaixo dessa.
+ Digite então M-x repl s<Return>mudou<Return>alterado<Return>.
+
+ Note como essa linha mudou: você substituiu a palavra m-u-d-o-u por
+ "alterado" quando ocorreu, apos a posição inicial do cursor.
+
+
+* SALVAMENTO AUTOMÁTICO
+-----------------------
+
+Quando você fizer mudanças em um arquivo, mas você ainda não tiver
+salvo, elas podem ser perdidas se o seu computador der pau. Para
+proteger você disso, o Emacs periodicamente escreve um arquivo "auto
+salvo" para cada arquivo que você estiver editando. O nome do arquivo
+auto salvo tem um # no inicio e no fim; por exemplo, se o seu arquivo
+tiver o nome "ola.c", o nome do arquivo auto salvo dele será
+"#ola.c#". Quando você salvar o arquivo da maneira normal, o Emacs
+deleta os arquivos auto salvos.
+
+Se o computador der pau, você pode recuperar suas modificações auto
+salvas abrindo o arquivo normalmente (o arquivo que você estava
+editando, não o arquivo auto-salvo) e então digitar M-x recover
+file<Return>. Quando isso perguntar por confirmação, digite yes<Return>
+para ir em frente e recuperar os dados auto salvos.
+
+
+* ÁREA DE SAÍDA (ECHO AREA)
+---------------------------
+
+Se o Emacs ver que você esta digitando comandos multi-caractere
+lentamente, ele os mostrara para você no fim da tela numa área chamada
+Área de Saída ou Echo Área. A área de saída contem a linha de rodapé da
+tela.
+
+
+* MODE LINE
+-----------
+
+A linha imediatamente acima da área de saída é chamada de "mode line". O
+mode line diz algo algo mais ou menos assim:
+
+--:** TUTORIAL.pt_BR (Fundamental)--L670--58%----------------
+
+Essa linha da informações úteis sobre o status do Emacs e o texto que
+você esta editando.
+
+Você já sabe o que o nome do arquivo significa -- é o arquivo que você
+encontrou. -NN%-- indica sua posição no arquivo texto; significa que NN
+percento do texto esta acima do topo da tela. Se o topo do arquivo
+estiver na tela, ele dirá --Top-- ao invés de --00%--. Se o rodapé do
+texto estiver na tela, ele mostrara --Bot--. Se você estiver olhando um
+texto muito pequeno que cabe na todo na tela, o mode line ira dizer
+--All--.
+
+O L são dígitos e indicam a posição de uma outra maneira: eles mostram a
+linha corrente do ponto.
+
+Os asteriscos próximo ao inicio significa que você fez mudanças ao
+texto. Logo após você visitar um arquivo ou salvar um arquivo, essa
+parte do mode line não mostrara asteriscos, apenas traços.
+
+A parte do mode line dentro do parênteses lhe diz quais modos você esta
+utilizando. O modo padrão é o Fundamental que é o que você esta
+utilizando agora. É um exemplo de um "modo majoritário".
+
+O Emacs tem diversos diferentes modos majoritários. Alguns deles são
+para edição de diferentes linguagens de programação e/ou tipos de texto,
+como modo Lisp, modo Texto, etc. Em qualquer momento um é apenas um modo
+majoritário e ativo, e seu nome pode ser encontrado no mode line
+exatamente onde o "Fundamental" esta agora.
+
+Cada modo majoritário faz com que alguns comandos operem de modo
+diferente. Por exemplo, existem comandos para criar comentários nos
+programas, e desde que cada linguagem de programação tem uma idéia
+diferente de como um comentário deve ser, cada modo majoritário tem que
+inserir seus comentários individualmente. Cada modo majoritário é o nome
+de um comando estendido, e é assim que você pode mudar para determinado
+modo. Por exemplo, M-x fundamental-mode é o comando para trocar para o
+modo Fundamental.
+
+Se você vai editar texto em Português, como neste arquivo, você pode
+utilizar o modo Texto.
+
+>> Digite M-x text mode<Return>.
+
+Não se preocupe, nenhum dos comandos do Emacs que você aprendeu
+mudarão. Mas você pode observar que o M-f e o M-b tratam os apóstrofos
+como parte das palavras. Anteriormente, no modo Fundamental, M-f e M-b
+trataram os apóstrofos como separadores de palavras.
+
+Modos majoritários fazem usualmente modificações como esta: a maioria
+dos comandos fazem "a mesma coisa" em cada modo majoritário, mas eles
+trabalham um pouquinho diferente.
+
+Para ver a documentação do seu modo majoritário, digite C-h m.
+
+>> Utilize C-u C-v uma ou mais para trazer essa linha próxima ao topo da
+ tela.
+>> Digite C-h m, para ver como o modo texto difere do modo Fundamental.
+>> Digite C-x 1 para remover a documentação da tela.
+
+Modos majoritários são chamados de majoritários porque também existem
+modos minoritários. Modos minoritários não são alternativos aos modos
+majoritários, apenas uma modificação minoritária deles. Cada modo
+minoritário pode ser ligado ou desligado por ele mesmo, independente de
+todos os outros modos minoritários, é independente do modo
+majoritário. Então você pode não utilizar modos minoritários, ou um modo
+minoritário, ou qualquer combinação de modos minoritários.
+
+Um modo minoritário que é bastante útil, especialmente para editar texto
+em Português, é o modo Auto Fill. Quando ele esta ligado, o Emacs quebra
+a linha entre as palavras automaticamente quando você inserir um texto e
+criar uma linha muito comprida.
+
+Você pode ligar o modo Auto Fill fazendo M-x auto fill
+mode<Return>. Quando o modo estiver ligado, você pode desliga-lo
+novamente fazendo M-x auto fill mode<Return>. Se o modo estiver
+desligado, esse comando o liga, e se ele estiver ligado, este comando o
+desligara. Nos dizemos que o comando inverte seu status.
+
+>> Digite M-x auto fill mode<Return> agora. Então insira uma linha de
+ "asdf " diversas vezes ate que você veja dividir em duas linhas. Você
+ precisa colocar espaços entre as palavras porque o modo Auto Fill
+ quebra apenas nos espaços.
+
+A margem é usualmente definida com 70 caracteres, mas você pode
+modifica-la com o comando C-x f. Você deve dar a margem que você quer
+como um argumento numérico.
+
+>> Digite C-x f com um argumento de 20. (C-u 20 C-x f).
+ Então digite algum texto e veja o Emacs encher linhas com ate 20
+ caracteres. Então, volte a definir a margem para 70 utilizando C-x f.
+
+Se você fizer uma mudança no meio de um parágrafo, o modo Auto Fill não
+ira re-preencher para você. Para re-preencher o parágrafo, digite M-q
+(Meta-q) com o cursor dentro do parágrafo.
+
+>> Mova o cursor dentro do parágrafo anterior e digite M-q.
+
+
+* PESQUISANDO
+-------------
+
+O Emacs pode fazer pesquisas por strings (esses sao grupos de caracteres
+ligados ou palavras) tanto para frente do texto ou para traz. Pesquisar
+por uma string e um comando de movimento do cursor; ele move o cursor
+para o próximo lugar onde a string aparece.
+
+O comando de pesquisa do Emacs é diferente dos comandos de pesquisa da
+maioria dos editores, porque é uma pesquisa "incremental". Isso
+significa que a pesquisa acontece enquanto você digita uma string para
+pesquisar.
+
+O comando para iniciar a pesquisa é C-s para pesquisa para frente ou C-r
+para pesquisa inversa. MAS ESPERE! Não tente fazer agora.
+
+Quando você digitar C-s você percebera que uma string "I-search"
+aparecera como prompt na área de saída. Isso diz para você que o Emacs
+esta no que chamamos de pesquisa incremental esperando que você digite o
+que você quer procurar. <Return> termina a pesquisa.
+
+>> Agora digite C-s para iniciar a pesquisa. DEVAGAR, uma letra por vez,
+ digite o caractere 'cursor', pausando cada vez que você digitar um
+ caractere, perceba o que acontece com o cursor. Agora que você
+ pesquisou por "cursor", uma vez.
+>> Digite C-s novamente, para pesquisa a próxima ocorrência de "cursor".
+>> Agora digite <Delete> quatro vezes e veja como o cursor move.
+>> Digite <Return> para terminar a pesquisa.
+
+Você viu o que aconteceu? O Emacs, em uma pesquisa incremental, tenta ir
+para a ocorrência que você digitou ate o momento. Para ir para próxima
+ocorrência de 'cursor' apenas digite C-s novamente. Se nenhuma
+ocorrência existir, o Emacs bipa e te diz que a pesquisa atual
+falhou. C-g também termina a pesquisa.
+
+NOTA: Em alguns sistemas, digitar C-s ira travar a tela e você não verá
+saída do Emacs. Isso indica que um "recurso" do sistema operacional
+chamado "controle de fluxo" (flow control) esta interceptando o C-s e
+não deixando que passe pelo Emacs. Para destravar a tela, digite
+C-q. Então, leia na seção "Spontaneous Entry to Incremental Search" no
+manual do Emacs para uma dica de como lhe dar com esse "recurso".
+
+Se você estiver no meio de uma pesquisa incremental e digitar <Delete>,
+você percebera que o ultimo caractere da pesquisa será apagado e a
+pesquisa voltara para o ultimo lugar da pesquisa. Por instancia, imagine
+que você tenha digitado "c", para pesquisar a primeira ocorrência de
+"c". Agora se você digitar "u", o cursor ira mover para a primeira
+ocorrência de "cu". Agora digite <Delete>. Isso ira apagar o "u" da
+string de pesquisa, e o cursor movera de volta para a primeira
+ocorrência de "c".
+
+Se você estiver no meio de uma pesquisa e digitar um caractere control
+ou meta (com algumas exceções--caracteres que são especiais em uma
+pesquisa, como C-s e C-r), a pesquisa é terminada.
+
+O C-s inicia uma pesquisa que procura por qualquer ocorrência da string
+de pesquisa APÓS a posição corrente do cursor. Se você quiser pesquisar
+por alguma coisa anterior no texto, digite C-r ao invés. Tudo que nos
+dissemos sobre C-s também implica para C-r, tirando a direção da
+pesquisa que é reversa.
+
+
+* MÚLTIPLAS JANELAS
+-------------------
+
+Um dos recursos mais interessantes do Emacs é que você pode mostrar mais
+de uma janela na tela ao mesmo tempo.
+
+>> Mova o cursor para essa linha e digite C-u 0 C-l (isso é control-L,
+ não control-1).
+
+>> Agora digite C-x 2 que vai dividir a tela em duas janelas.
+ As duas janelas vão mostrar esse tutorial. O cursor fica na janela
+ do topo.
+
+>> Digite C-M-v para rolar para o fim da janela.
+ (Se você não tiver uma tecla Meta de verdade, digite ESC C-v.).
+
+>> Digite C-x o ("o" para "outra") para mover o cursor para o rodapé
+ da janela.
+>> Use C-v e M-v no rodapé da janela para roda-la.
+ Continue lendo essas direções na janela do topo.
+
+>> Digite C-x o novamente para mover o cursor de volta para a janela
+ do topo.
+ O cursor na janela do topo esta exatamente como estava antes.
+
+Você pode continuar usando C-x o para alternar entre as janelas. Cada
+janela tem sua própria posição de cursor, mas apenas uma janela mostra o
+cursor. Todos os comandos mais comuns de edição aplicam para a janela
+que o cursor esta. Chamamos isso de "janela selecionada".
+
+O comando C-M-v é muito útil para quando você estiver editando o texto
+em uma janela e utilizando a outra janela para referencia. Você pode
+manter o cursor sempre na janela que você estiver editando, e avançar
+pela outra janela seqüencialmente utilizando C-M-v.
+
+C-M-v é um exemplo de um caractere CONTROL-META. Se você tiver uma tecla
+META real, você pode digitar C-M-v segurando ambos CONTROL e META
+enquanto digitar v. Não importa se CONTROL ou META "vem primeiro,"
+porque ambas as teclas agem modificando o caractere que você digita.
+
+Se você não tiver um tecla META real, você pode utilizar ESC ao invés, a
+ordem não importa: você precisa digitar ESC seguido por Control-v,
+porque Control-ESC v não ira funcionar. Isso porque ESC é um caractere
+com seu próprio direito, não é uma tecla de modificação.
+
+>> Digite C-x 1 (na janela do topo) para fugir da janela do rodapé.
+
+(Se você tivesse digitado C-x 1 na janela do rodapé, você fugiria da
+janela do topo. Pense neste comando como "Mantenha apenas uma janela--a
+janela que estou dentro.")
+
+Você não precisa mostrar o mesmo buffer nas duas janelas. Se você
+utilizar C-x C-f para encontrar um arquivo em outra janela, a outra
+janela não mudara. Você pode encontrar um arquivo em cada janela
+independentemente.
+
+Aqui esta uma maneira de utilizar duas janelas para mostrar coisas
+diferentes:
+
+>> Digite C-x 4 C-f seguido pelo nome de um dos seus arquivos.
+ Termine com <Return>. Veja o arquivo especificado aparece na janela
+ do rodapé. O cursor ira para lá, também.
+
+>> Digite C-x o para voltar a janela do topo, e C-x1 para deletar a
+ janela de rodapé.
+
+
+* NÍVEIS RECURSIVOS DE EDIÇÃO
+-----------------------------
+
+Algumas vezes você entrara no que chamamos de "nível de edição
+recursiva". Isso é indicado por colchetes no mode line, envolvendo os
+parênteses em volta do nome do modo majoritário. Por exemplo, você pode
+ver [(Fundamental)] ao invés de (Fundamental).
+
+Para sair desses níveis recorríveis de edição, digite ESC ESC ESC. Isso
+e um comando de todos os propósitos "saia". Você pode também utilizar
+para eliminar janelas extras, e sair de um minibuffer.
+
+>> Digite M-x para entrar no minibuffer; então digite ESC ESC ESC para
+ sair.
+
+Você não pode utilizar C-g para sair de um nível de edição
+recursiva. Isso porque o C-g é utilizado para cancelar comandos e
+argumentos COM o nível de edição recursiva.
+
+
+* CONSEGUINDO MAIS AJUDA
+------------------------
+
+Neste tutorial nos tentamos suprimir informações suficientes para que
+você comece a utilizar o Emacs. Existe tanto disponível sobre Emacs que
+seria impossível explicar tudo aqui. De qualquer maneira, você pode
+querer aprender mais sobre Emacs mesmo porque ele tem muitos outros
+recursos úteis. O Emacs proporciona comandos para leitura de
+documentação sobre comandos do Emacs. Esses comandos de "ajuda" iniciam
+com o caractere Control-h, que é chamado de "o caractere de ajuda".
+
+Para utilizar os recursos de ajuda, digite o caractere C-h, e então um
+caractere dizendo que tipo de ajuda você quer. Se você REALMENTE estiver
+perdido, digite C-h ? e o Emacs ira te dizer que tipo de ajuda ele pode
+te dar. Se você digitar C-h e decidir que você não quer nenhuma ajuda,
+apenas digite C-g para cancelar.
+
+(Alguns sistemas mudam o significado do caractere C-h. Eles não deveriam
+fazer isso para todos os usuários, então você tem muito a reclamar com o
+administrador do sistema. Enquanto isso, se C-h não mostrar a mensagem
+sobre ajuda no rodapé da tela, tente digitar a tecla F1 ou M-x help
+<Return> ao invés.)
+
+O recurso de ajuda mais básico é o C-h c. Digite C-h, e o caractere c, é
+um comando de caractere ou seqüência; então o Emacs mostrara uma breve
+descrição do comando.
+
+>> Digite C-h c C-p
+ A mensagem deve ser algo assim
+
+ C-p roda o comando linha-anterior
+
+Isso diz a você "o nome da função". Nome de funções são utilizados
+basicamente para personalizar o estender o Emacs. Mas desde que nomes de
+funções são utilizados para indicar que o que o comando faz, eles podem
+servir também como uma breve documentação--suficiente para lembrar você
+os comandos que você já aprendeu.
+
+Comandos multi-caractere como C-x C-s e (se você não tiver a tecla META
+ou EDIT ou ALT) <ESC>v é também permitido depois de C-h c.
+
+Para ter mais informação sobre um comando, utilize C-h k ao invés de C-h
+c.
+
+>> Digite C-h k C-p.
+
+Isso mostra a documentação da função, assim como seu nome, em uma janela
+do Emacs. Quando você terminar de ler a saída, digite C-x 1 para sair da
+saída do texto de ajuda. Você não precisa fazer isso imediatamente
+apos. Você pode fazer alguma edição enquanto utilizando como referencia
+o texto de ajuda, e então digite C-x 1.
+
+Aqui estão algumas outras opções úteis do comando C-h:
+
+ C-h f Descreve a função. Digite o nome da função.
+
+>> Tente digitar C-h f previous-line<Return>
+ Isso ira imprimir toda informação que o Emacs tem sobre a função que
+ implementa o comando C-p.
+
+ C-h a Comando Apropos. Digite uma palavra chave e o Emacs ira
+ listar todos os comandos que o nome contem essa
+ palavra. Esses comandos podem ser chamados com
+ Meta-x. Para alguns comandos, o comando Apropos ira
+ também listar um ou dois caracteres de seqüência que
+ roda o mesmo comando.
+
+>> Digite C-h a file<Return>.
+
+Isso mostra em uma outra janela a lista de todos os comandos M-x com
+"arquivo" em seus nomes. Você Vera comandos-caractere como C-x C-f
+listados ao lado do comando correspondente assim como o find-file.
+
+>> Digite C-M-v para rolar a janela de ajuda. Faca isso algumas vezes.
+
+>> Digite C-x 1 para deletar a janela de ajuda.
+
+
+* CONCLUSÃO
+-----------
+
+Lembre, para sair permanentemente do Emacs utilize C-x C-c. Para sair
+para um shell temporariamente, para que você possa voltar ao Emacs mais
+tarde, utilize C-z.
+
+Esse tutorial foi feito para ser entendível para todos os novos
+usuários, então se você encontrou algo que parece não estar claro, não
+sente e se culpe - reclame!
+
+
+* CÓPIA
+-------
+
+Esse tutorial descende de uma longa linha de tutoriais do Emacs
+iniciando com um escrito por Stuart Cracraft para o Emacs original.
+
+Essa versão do tutorial foi originalmente traduzida por Marcelo Toledo
+<marcelo@marcelotoledo.org> e como o GNU Emacs, tem um copyright, e vem
+com uma permissão de distribuição de cópias nas seguintes condições:
+
+Copyright (c) 1985, 1996 Free Software Foundation
+
+ Permissão é garantida a qualquer um para fazer ou distribuir copias
+ integrais deste documento como recebido, em qualquer meio, deixando
+ disponível e preservados o aviso de copyright e o aviso de permissão,
+ e o distribuidor garante que a permissão para distribuições
+ posteriores permitam o mesmo que esta nota.
+
+ Permissão garantida para distribuir versões modificadas deste
+ documento, ou partes dele, sobre as condições acima, sempre que elas
+ tenham uma nota visível de quem foi o ultimo a alterar-lo.
+
+As condições para copiar o Emacs especificamente são mais complexas, mas
+no mesmo espírito. Por favor, leia o arquivo COPYING e dê copias do GNU
+Emacs para seus amigos. Ajude a erradicar o obstrucionismo de software
+("proprietário") usando, escrevendo, e compartilhando software livre!
+
+;;; Local Variables:
+;;; coding: latin-1
+;;; sentence-end-double-space: nil
+;;; End:
+
+;;; arch-tag: 8ea256d6-2c4a-49ee-ac08-0ea6ef25bf8d
diff --git a/etc/TUTORIAL.translators b/etc/TUTORIAL.translators
index b4d26c85ca5..0e4f2d4e124 100644
--- a/etc/TUTORIAL.translators
+++ b/etc/TUTORIAL.translators
@@ -14,6 +14,7 @@ TUTORIAL.ko: Koaunghi Un <koaunghi@ling.cnu.ac.kr>
TUTORIAL.nl: Pieter Schoenmakers <tiggr@tiggr.net>
TUTORIAL.pl: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl>
+TUTORIAL.pt_BR: Marcelo Toledo <marcelo@marcelotoledo.org>
TUTORIAL.ro: Tudor Hulubei <tudor@gnu.org>
TUTORIAL.ru: Alex Ott <ottalex@narod.ru>
TUTORIAL.sk: Miroslav Vaško <vasko@debian.cz>
diff --git a/etc/compilation.txt b/etc/compilation.txt
index 3baebe6aaf3..9c8d06c9ccb 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -91,6 +91,16 @@ symbol: comma
"src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment.
+* EDG C/C++
+
+symbol: edg-1 edg-2
+
+build/intel/debug/../../../struct.cpp(42): error: identifier "foo" is undefined
+build/intel/debug/../../../struct.cpp(44): warning #1011: missing return statement at end of ...
+build/intel/debug/../../../iptr.h(302): remark #981: operands are evaluated in unspecified order
+ detected during ... at line 62 of "build/intel/debug/../../../trace.h"
+
+
* EPC F90 compiler
symbol: epc
@@ -299,14 +309,6 @@ symbol: sun-ada
/home3/xdhar/rcds_rc/main.a, line 361, char 6:syntax error: "," inserted
-* Ultrix 3.0 f77 & Some SGI cc version
-
-symbol: ultrix
-
-fort: Severe: addstf.f, line 82: Missing operator or delimiter symbol
-cfe: Warning 835: foo.c, line 2: something
-
-
* 4.3BSD grep, cc, lint
symbol: 4bsd
diff --git a/etc/ru-refcard.ps b/etc/ru-refcard.ps
new file mode 100644
index 00000000000..201708fda8a
--- /dev/null
+++ b/etc/ru-refcard.ps
@@ -0,0 +1,2087 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: ru-refcard.dvi
+%%Pages: 6
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMSY10 CMMI10 CMSY8
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips ru-refcard.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2004.05.16:0847
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: aae443f0.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
+%
+/TeXaae443f0Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
+/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
+/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
+/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
+/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
+/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
+/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
+/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
+/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
+/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
+/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
+/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
+/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueID 5000818 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
+5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
+80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
+1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
+DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
+9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
+CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
+F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B
+133F1E59A8222E5BFB551A83F4FA4E7575C4E9556A1CD08636CCD84A8CD68BC5
+B0B5FDB60A42D5268523571C380A40A2185DA33AFCEF07CF681C587F69335477
+0A535626330F01005AE0E22F4F056542904D0BC2735740435058364F3E7EAE12
+D6E8F8F33F9F6E5B5DC4B10CCE72C3A8B08746022ADDA3C1C47766E8BE936416
+3C4F26FA35AF5DA3F7D9F49E6A866FE2F2536512BF226E3CCD1C2B9ADF85B404
+6377DEB1E20508D3D0E69F244B91C1C736A1BE3815FDDAB369C55D99CDA5C82A
+7873D8B378A3ED6E0D6C518B5F741029D946B0356249E3A6BCD013B7C829C503
+BA9D46A1C3CBD3FEC92F0C2D2207B273DC24E300E83AB9EED3EBBA394BE52DBA
+35BA6B291F971A79BC60
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueID 5087385 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
+0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
+E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
+7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
+88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
+DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
+AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5000820 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD
+5F3D998C7A49AEF3CB6B1A9EB69F3CEA454AD2808F02492DD00C7050748656DA
+5A3A67850F65A778D67EBCC7040722819412C6225B3188DD2D94DDE572362C17
+4F50D814C4EBB50F501DE84522460B812765DDAABC6A311FFB429457E6767CDA
+983F330179AF9D598AEB9650568AD79307FB100555AB73B0929E428272550D22
+FBFA319BCE7F77420EFC9514634223E3BB29AD77E0B2A7D67B90AF5FEF8199FF
+0109AF4F39A23E7860EFC6F83A1BEE01DA2F5092363C2FA05251FAB8B291517B
+5806321FFA8B26906A5EECFE9CDD4949944E19B3504B268938BCAC03C2CE0CC5
+F4465CF1CF403B667113059AC5D340E30AE1825AA2829DA83196C33044E6023F
+C1654A0861D138AE84F16B962C0122AC9345ED069B0D66F1B775F1D5E3CD3B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 39158280 55380996 1000 600 600 (ru-refcard.dvi)
+@start /Fa 242[71 13[{ TeXbbad153fEncoding ReEncodeFont }1
+66.4176 /CMSY8 rf
+%DVIPSBitmapFont: Fb larm0800 8 56
+/Fb 56 241 df<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A
+5A126009157A8714>44 D<B512C0A412047F9018>I<123C127E12FFA4127E123C08087A
+8714>I<EB3FC0EBFFF03803E07C48487E48487E497E001EEB0780A2003E14C0A248EB03
+E0A500FC14F0B0007C14E0A3007E1307003E14C0A36CEB0F806C14006D5A3807C03E3803
+F0FC3800FFF0EB3FC01C2D7DAB23>48 D<130C133C137CEA03FC12FFEAFC7C1200B3B113
+FE387FFFFEA2172C7AAB23>I<EB7F803801FFF0380780FC380E003F48EB1F8048EB0FC0
+5A0060EB07E012F000FC14F07E1403A3007C1307C7FCA215E0140F15C0141F1580EC3F00
+147E147C5C495A495A495A495A011EC7FC5B5B4913305B485A4848136048C7FC000E14E0
+001FB5FC5A4814C0B6FCA21C2C7DAB23>I<EB3FC03801FFF03807C0FC380E007E487FEC
+1F80003F14C0A2EB800F1300A2000C131FC7FC1580A2EC3F00143E5C5CEB03F0EBFFC014
+F0EB00FC143FEC1F8015C0140F15E0A2EC07F0A21238127C12FEA3EC0FE012F8006014C0
+0070131F6C1480001EEB3F00380780FC3801FFF038007FC01C2D7DAB23>I<000CEB0180
+380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7FF8380DE07C380F80
+1F01001380000E130F000CEB07C0C713E0A2140315F0A4127812FCA448EB07E012E00060
+14C00070130F6C14806CEB1F006C133E380780F83801FFE038007F801C2D7DAB23>53
+D<1230123C003FB512F8A215F05A15E039700001C000601480140348EB0700140E140CC7
+121C5C143014705C495AA2495AA249C7FCA25B130E131EA2133EA3133C137CA413FCA913
+781D2E7CAC23>55 D<EB3F80EBFFF03803E0783807C03E48487E48487E003E1480140700
+7E14C0127C00FC14E01403A315F0A5007C1307127EA2003E130F7E6C131F3807803B3803
+E0F33800FFC390383F03E013001407A215C0A2140F001E1480003F14005C143E143C003E
+5B001C5B380E03E03807FF80D801FEC7FC1C2D7DAB23>57 D<EE01C0EE0780EE1E001678
+ED01E0ED0780031EC7FC1578EC01E0EC0780021EC8FC1478EB01E0EB0780011EC9FC1378
+EA01E0EA0780001ECAFC127812E01278121EEA0780EA01E0EA0078131EEB0780EB01E0EB
+0078141EEC0780EC01E0EC0078151EED0780ED01E0ED0078161EEE0780EE01C02A297AA4
+37>60 D<12E01278121EEA0780EA01E0EA0078131EEB0780EB01E0EB0078141EEC0780EC
+01E0EC0078151EED0780ED01E0ED0078161EEE0780EE01C0EE0780EE1E001678ED01E0ED
+0780031EC7FC1578EC01E0EC0780021EC8FC1478EB01E0EB0780011EC9FC1378EA01E0EA
+0780001ECAFC127812E02A297AA437>62 D<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC
+30FCA2EC70FEEC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3496D7EA2011F
+B57EA29038180001496D7EA349147EA201E0147F4980A20001ED1F801203000716C0D80F
+F0EC3FE0D8FFFC0103B5FCA2302F7EAE35>65 D<B612FCEDFF803A03F8000FC00001EC03
+F06F7E6F7E82167E167FA6167E16FE5E4B5A4B5AED0FE0ED7F8090B6C7FC16E09039F800
+03F0ED01FC6F7E167F821780161F17C0A61780163F17005E16FEED03FC0003EC0FF0B712
+C04BC7FC2A2D7DAC32>I<DA1FF013C09138FFFE01903903F00F8390390F8001E3013FC7
+1277017C143F4848141F4848140F48481407A248481403121F491401123F90C8FC481500
+A300FE1600AB127F17C0A27E7F001F15016D1580120F6C6C1403EE07006C6C14066C6C14
+0ED8007C5C013F147890390F8001E0903903F00FC0902600FFFEC7FCEC1FF02A2F7CAD33
+>I<B712FCA23903F800030001EC007C82161E160EA21606A31607821530A293C7FCA315
+70A2EC01F090B5FCA2EBF801EC0070A21530A217C0A39238000180A4160317005EA25E5E
+167F0003EC01FEB7FCA22A2D7DAC30>69 D<B712FCA23903F800030001EC007C163E161E
+160EA21606A3160716031518A21600A31538157815F890B5FCA2EBF800157815381518A5
+92C7FCAB487EB512F8A2282D7EAC2E>I<DA1FF013C09138FFFE01903903F00F8390390F
+8001E3013FC71277017C143F4848141F4848140F48481407A248481403121F491401123F
+90C8FC481500A300FE1600A992381FFFFEA2007F9138001FE0EE0FC0A27E7F121F7F120F
+6C7EA26C7E6C6C141FEA007C013F143FD90F8013F3903903F007C10100B51200DA1FF813
+002F2F7CAD37>I<B512F0A23803FC006C5AB3B3A3487EB512F0A2142D7EAC19>73
+D<90387FFFF0A201001300147EB3AD123812FEA314FE5C1278387001F86C485A381E07E0
+3807FF80D801FCC7FC1C2E7DAC24>I<D8FFF8923807FFC06D5D0003EFF00000015F01BE
+151BA2019F1533A3D98F801463A2D987C014C3A2D983E0EB0183A3D981F0EB0303A2D980
+F81306A3027C130CA26E1318A36E1330A291380F8060A2913807C0C0A3913803E180A291
+3801F300A3EC00FEA2157C487ED80FF04B7EB5D93801B512C0A23A2D7DAC41>77
+D<D8FFF8903803FFFC7F00019138003FC06DEC0F006D1406EBBF80A2EB9FC0EB8FE01387
+80EB83F8138180EB80FE147E147FEC3F80EC1FC0140F15E0EC07F0140315F8EC01FC1400
+15FE157FED3F86151F16C6ED0FE6150716F6ED03FE1501A21500167E163EA2486C141ED8
+0FF0140EB5FC16062E2D7DAC35>I<EC3FF0903801FFFE903907E01F8090391F8007E090
+393E0001F001FCEB00FC4848147E4848804848EC1F8049140F000F16C04848EC07E0A248
+C8EA03F0A24816F8A2007E1501A200FE16FCAA007FED03F8A36C16F06D1407001F16E0A2
+6C6CEC0FC06D141F000716806C6CEC3F006C6C147E6C6C5C017E495A90391F8007E09039
+07E01F80902601FFFEC7FC9038003FF02E2F7CAD37>I<B612F815FF3A03F8001FC00001
+EC07E0ED01F016F8ED00FC16FE167E167FA6167E16FE16FCED01F816F0ED07E0ED1FC090
+B6120015F801F8C8FCB2487EB512F0A2282D7DAC30>I<90383F80303901FFF0703807C0
+7C390F000EF0001E13074813034813011400127000F01470A315307EA26C1400127E127F
+EA3FE013FE381FFFE06C13FC6C13FF00011480D8003F13E013039038003FF0EC07F81401
+140015FC157C12C0153CA37EA215787E6C14706C14F06CEB01E039F78003C039E3F00F00
+38E07FFE38C00FF01E2F7CAD27>83 D<007FB712F8A29039000FC003007C150000701638
+A200601618A200E0161CA248160CA5C71500B3A94A7E011FB512E0A22E2D7EAC33>I<B5
+39F003FFFCA2D803FCC7EA3FC06C48EC0F001606B3AB160E0000150C7F161C017C141801
+7E14386D5C6D146090390F8001E0903907E00380902601F80FC7FC9038007FFCEC0FF02E
+2E7DAC35>I<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07
+FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007F
+EBEF8C391F83C7FC390FFF03F83901FC01E01F207D9E23>97 D<EA07C012FFA2120F1207
+AC14FE9038C7FF809038CF03E09038DC01F09038F8007C49137E49133E497F1680A2150F
+16C0A9ED1F80A216005D6D133E6D5B01B05B9038BC01F090380E07E0390607FF80260001
+FCC7FC222F7EAD27>I<EB1FE0EB7FFC3801F01E3803E0073907C01F80EA0F80EA1F005A
+003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C130101801380380FC0033907E0
+07003801F03E38007FF8EB1FC01A207E9E1F>I<15F8141FA214011400ACEB0FE0EB7FF8
+3801F81E3803E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E
+13017EEB8003000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27
+>I<EB1F80EBFFF03803E0783807C03E380F801E381F001FEC0F80123E007E130715C012
+7C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C1301390F80038001C013003803E0
+0F3801F03C38007FF8EB1FC01A207E9E1F>I<EB03F0EB0FFCEB3E1EEB7C3F13F8EA01F0
+A23803E00C1400AAB512E0A23803E000B3A6487E387FFF80A2182F7FAE16>I<013F13F8
+9038FFC3FE3903E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00
+071378380FE1F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0
+391E0007F848130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F
+803901FFFE0038003FF01F2D7E9D23>I<EA07C012FFA2120F1207AC14FE9038C3FF8090
+38C703E09038DE01F013F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2222E7EAD27>
+I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA07C012FFA2120F1207B3A5EA0FE0EA
+FFFCA20E2E7EAD14>I<EA07C012FFA2120F1207ADEC1FFEA2EC0FF0EC07C05D020EC7FC
+5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E143E80816E7E14076E7E81
+6E7E486C487E3AFFFE07FF80A2212E7EAD25>107 D<EA07C012FFA2120F1207B3B3A3EA
+0FE0EAFFFEA20F2E7EAD14>I<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0F
+CE01F8E01F803B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB2486C
+01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I<3807C0FE39FFC3FF809038C703E039
+0FDE01F0EA07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>I<EB1FE0
+EB7FF83801F03E3803C00F3907800780390F0003C04814E0003EEB01F0A248EB00F8A300
+FC14FCA9007C14F8A26CEB01F0A26CEB03E0A2390F8007C03907C00F803901F03E003800
+7FF8EB1FE01E207E9E23>I<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC
+49137E49133E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC
+01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>I<38
+0781F038FF87FCEB9E7EEA0F98EA07B813B0EBF03CEBE000A35BB1487EB5FCA2171E7E9D
+1B>114 D<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA
+7FF06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C13
+3CA26C137838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A212
+07121FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7F
+A81B>I<D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A
+01F81CFFC038007FF890391FE0F800221F7E9D27>I<3AFFFC01FFC0A23A0FE0007E0000
+07147C15380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB1F
+06A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25>I<3BFFFC3FFE07FFA2
+3B0FE003F001F801C09038E000F00007010114E0812603E00314C0A2913807F8012701F0
+06781380A29039F80E7C030000D90C3C1300A290397C181E06A2151F6D486C5AA2168C90
+391F600798A216D890390FC003F0A36D486C5AA36DC75A301E7F9C33>I<3AFFFC07FF80
+A23A0FF003FC000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0F
+B0EB07E013036D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F00
+076D7E391FE003FC3AFFF007FFC0A2221D7F9C25>I<3AFFFC01FFC0A23A0FE0007E0000
+07147C1538000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2
+EB1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC
+06A25B131CEA7838EA7070EA3FE0EA0F80222B7F9C25>I<B9FCA2D803F8C7EA1FC00001
+1680B3B3A3486CEC3FC0B5D8F00FB5FCA2302D7DAC37>207 D<B512F814FF390FC01F80
+0007EB07E0140315F0A4EC07E0EC0FC0EC3F809038FFFC00809038C00F80EC03E0EC01F0
+EC00F815FCA5EC01F8A2EC03F0000FEB0FE0B61280ECFE001E1D7E9C23>226
+D<90B612E0A290390E007E00157C13061304130CAA5BA35BA21370136013E0485A485A00
+0FC7127E007FB612E0A2007CC7120300781401007014000060156000E01570A2481530A5
+24287F9C27>228 D<EB1F80EBFFF03803E0783807C03E380F801E381F001FEC0F80123E
+007E130715C0127C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C1301390F800380
+01C013003803E00F3801F03C38007FF8EB1FC01A207E9E1F>I<EB1FE0EB7FF83801F03E
+3803C00F3907800780390F0003C04814E0003EEB01F0A248EB00F8A300FC14FCA9007C14
+F8A26CEB01F0A26CEB03E0A2390F8007C03907C00F803901F03E0038007FF8EB1FE01E20
+7E9E23>238 D<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49137E4913
+3E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01F09038CE
+07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>240
+D E
+%EndDVIPSBitmapFont
+/Fc 197[23 58[{ TeXaae443f0Encoding ReEncodeFont }1 83.022
+/CMMI10 rf /Fd 145[42 3[23 106[{ TeXbbad153fEncoding ReEncodeFont }2
+83.022 /CMSY10 rf
+%DVIPSBitmapFont: Fe lati1000 10 6
+/Fe 6 115 df<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A12
+0FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15
+831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901
+F000F0222677A42A>97 D<147F903803FFC090380FC1E090381F0070017E137849133839
+01F801F83803F003120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3
+153015381578007C14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C6
+90C7FC1D2677A426>99 D<EC07C0EC3FF09138FC38E0903901F01FF0EB03E0903807C00F
+EB0F80011F1307D93F0013E05B017E130F13FE4914C01201151F1203491480A2153F1207
+491400A25DA249137EA215FEA25D00031301140314076C6C485A0000131FEB787BEB3FF3
+90380FC3F0EB00031407A25DA2140F5D121C007E131F5D00FE49C7FC147E5C387801F838
+7C07E0381FFF80D803FEC8FC24367CA426>103 D<EB03F0EA01FFA3EA00075CA3130F5C
+A3131F5CA3133F91C8FCA35B90387E07F0EC1FFCEC783E9038FFE01F02C01380EC800F14
+00485A16C05B49EB1F8012035BA2153F000715005BA25D000F147E5B15FE5D121FD98001
+131C15F8163C003F01031338010013F0A216704814E0007E15F016E0EDE1C000FE903801
+E38048903800FF000038143C263B7BB92A>I<D801E013FE3A07F803FF803A0E3C0F07C0
+3A1E3E3C03E0261C1F787F39383FF00114E0007813C000708114804A485AEAF07FEAE07E
+A20000140701FE5C5BA2150F00015D5B151F5E12034990383F8380160316070007027F13
+0049137EA2160E000F147C49141E161C5E001FEC3C7849EB1FE00007C7EA0780292679A4
+2F>110 D<3903C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F
+800078150000701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3
+120F5BA3121F5BA3123F90C9FC120E212679A423>114 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff labx1000 10 36
+/Ff 36 256 df<B61280A819087F9620>45 D<EE7F80ED7FFFA4150381AF903801FF8101
+0F13F1013F13FD9038FFC07F0003EB001FD807FC1307000F8048487F5B123FA2485AA312
+FFAA127FA27F123FA26C6C5B000F5C6C6C5B6C6C4913C02701FF80FD13FE39007FFFF901
+1F13E1010113012F3A7DB935>100 D<903803FF80011F13F0017F13FC3901FF83FE3A03
+FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FC
+A301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE06C9038C0
+7FC06DB51200010F13FC010113E025257DA42C>I<EC1FF0903801FFFC010713FF90391F
+F87F8090383FE0FFD9FFC113C0A2481381A24813016E1380A2ED3E0092C7FCA8B6FCA400
+0390C8FCB3ABB512FEA4223A7DB91D>I<01FEEB7FC000FF903803FFF8020F13FE91381F
+03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430
+257DA435>110 D<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E0
+6CD9C03E13FF90387FFFFC011F13F00103138030257DA435>117
+D<EB3FFE0003B512E0000F14F8391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5A
+EA0380C8FCA2EC3FFF010FB5FC137F3901FFF87F00071380380FFE00EA3FF85B485A12FF
+5BA415FF6D5A127F263FF00713F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE003
+2A257DA42E>224 D<163EED03FEEC01FF147F0107B5FC011F5C137F48B65A485D4815C0
+4802F8C7FC02C0C8FCD81FFCC9FC13F0485A5B5B90CAFC127EA2127C903801FFC0010F13
+F8D8787F13FF26F8FF807F3AFBFE003FE0B4486D7E496D7E496D7EA28249130382A31780
+A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5
+C7FC011F13FC010113C0293A7DB930>I<B612FCEDFFC016F000039038001FF86F7E6F7E
+A26F7EA44B5AA2ED1FFCED7FF091B512C093C7FC16E09138000FF86F7E6F7E6F7E178017
+C0A617805D17004B5AED1FFCB75A16E093C7FC2A257EA430>I<B712E0A30003EB003F15
+0F15071503150116F0A21500A51600B3B512FEA324257EA429>I<010FB712C0A3903B00
+7C003FF0001478AB1470A214F0A35C1301A25C1303A2495AA249C7FC5B133E5B5B485A00
+7FB812E0A301E0C8127F90C9120F007E1607007C1603A248EE01F0A3481600A5343280A4
+35>I<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C000
+1FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678
+121F6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113
+E025257DA42C>I<D83FFF013FB5EB3FFFA3D803FE010001C0EB1FF0000019C0017F4D5A
+D91FC004FEC7FC6D6C4B5A6D6C4B5AD901FCED0FE06D6C4B5A023F4BC8FCDA1FC014FE6E
+6CEBC1FC6F13C303FC13CF4A6CEBDFFE4AB7FC4A82DAFFEF01FD7F4901E301F17F4901C1
+01E07F0380EBC07F49496E7E49486F7E49486F7E49486F7E017F844A8149486F7F48496F
+7F4849707E4890C76F7E4885B5D8E03FD9FF01B512C0A34A257EA44F>I<38701FFF007C
+B512F0007F14FE9038E00FFFD98001138090C713C0127E007CEC7FE0A21278A2C8EAFFC0
+5C4A1300EC0FFE90383FFFF815C015F89038000FFE913803FF80020013C0A2ED7FE016F0
+A412F07E007815E015FF007C15C06C01031380261FC00F13006CB512FC000314F0C66C90
+C7FC24257EA42A>I<B5D8FC3FB5FCA3000390C713C0A25D5DA25D5D5D151E5D157C1578
+5D4A5AA24A5A4A5AA24A5A141E143E143C5C14F85C5C5CA25C91C7FCA2B5D8FC3F13FFA3
+30257EA435>I<90390F8001F090391FE007F8496C487E017F80ECF81FA4ECF00F013F5C
+ECE0076D486C5A6DB55A010314C0010091C7FCEC1FF891C9FCA4B5D8FC3FB5FCA3000390
+C713C0A25D5DA25D5D5D151E5D157C15785D4A5AA24A5A4A5AA24A5A141E143E143C5C14
+F85C5C5CA25C91C7FCA2B5D8FC3F13FFA330397EB835>I<B500FCEBFFFCA3000390C7EA
+7FC0170016FEED03F84B5A4B5AED3F804BC7FC15FCEC03F84A5A140F143F4A7E4A7E81EC
+F7FF02C77F02837F14016E7F6F7E6F7E6F7E82150F6F7E6F13806F13C06F13E017F0B5D8
+FC0713FFA330257EA435>I<011FB71280A3903B00F8007FE0005CB3A3EA1E01123F387F
+81E0EAFFC113C3A2EBC7C0138F6CB45A6CD9001FB512806C5AEA0FF831257FA435>I<B5
+6C91387FFF806E91B5FC5E00036DEDE000A2EE03BFEBDFF0EE073FEBCFF8160EEBC7FC16
+1CA2EBC3FE1638EBC1FF167001C0138016E0EC7FC0EDC1C0A2EC3FE1EDE380EC1FF3EDF7
+006EB4FC5D1407A25D14035D3807E001B5D9F00FB51280140015E039257DA440>I<B5D8
+FC3FB5FCA3000390C713C0AC91B6FCA391C7FCB0B5D8FC3F13FFA330257EA435>I<9038
+01FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7EA2003F
+81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A
+6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<B9FCA3000390C7
+13C0B3ADB5D8FC3F13FFA330257EA435>I<9039FF01FF80B5000F13F0023F13FC9138FE
+07FFDAF00113800007496C13C06C0180EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17
+FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8
+020F13E0020390C7FC91C9FCACB512FCA42F357EA435>I<903801FFC0010F13FC017F13
+FFD9FF8013802603FE0013C048485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7
+FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E00
+6DB45A010F13F00101138023257DA42A>I<007FB612FEA301811381D87E01EB807E007C
+153E0078151EA200F8151FA200F0150FA500001500B348B61280A328257EA42D>I<B539
+F001FFF8A3000790C7EA3F806CED1F00161E6E133E6C153C6E137C6C15786E13F8017F5C
+ECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D131E15BE6D13
+BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E003F133E387F803C38FFC0
+7C147814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1FFCEA07F02D357EA432>I<
+ED01FEEC01FFA4EC000F1507AFDAFF87EB1FF0010F01E7EB7FFF013F90B712C09026FFE0
+7F9038E07FF00003D9801F9038801FFC48496C496C7E48486D486D7E4848701380498200
+3F19C04982007F19E0A34848EF7FF0A96C6CEFFFE0A3003F19C06D5E001F19806D5E6C6C
+496C4913006C6C4C5A6C6D486D485AC6D9E07F9038E07FF0013FB812C0010F9026E7FE7F
+90C7FC01000187EB1FF0DA000790C9FCAC4AB512F8A4444A7DB94B>I<B539F01FFFF0A3
+000790390003FE006C90388001F06C6D485A6C1407D97FE05B6D6C485A6E48C7FC90381F
+FC3E010F5B903807FEFC6D6C5A5D6D5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E3
+7FD907C17FEB0FC049486C7E4A6C7E013E80496D7E49130F00016E7ED807FC80B5013F13
+F8A32D257EA432>I<B5D8FC3FB5FCA3000390C713C0B3ADB91280A3C91201EE003F171F
+170FA2EF07C0A31703A532327EA435>I<B5D8FC3FB5FCA3000390C713C0AD6C6D5A6C14
+0F90387FC07F90383FFFFE010F13F00101138090C8FCAC033F13FFA330257EA435>I<B5
+D8FC3FB5000FB512C0A3000390C7903AC0003FF000B3ADBC12E0A3CD127F1A0F1A071A03
+A2F201F0A31A00A54C327EA44F>249 D<007FB512F0A301811380EA7E01127C1278A212
+F8A212F0A5000091B5FC17F017FC9238801FFEEE07FF7013807013C0A27013E0A64C13C0
+A24C13804C1300EE1FFE017F90B55A17F094C7FC33257EA439>I<B500FC023FB5FCA300
+0390C913C0ACECFFFEEDFFE016F89138003FFCED0FFE6F7E6F7FA26F7FA64B5BA24B5B4B
+5AED3FFCB7D8F83F13FF16E0EDFE0040257EA445>I<B512FCA3000390C9FCACECFFFEED
+FFE016F89138003FFCED0FFE6F7E6F1380A26F13C0A64B1380A24B13004B5AED3FFCB75A
+16E04BC7FC2A257EA430>I<B500FCECFFE0040713FC043FEBFF80000390C7397FC07FC0
+923A01FF001FF04B486D7E4B486D7E4B486D7EA2031F814C7F033F1680A3037F16C091B5
+FCA3EC007FA5033F1680A3031F1600705B030F5DA26F6C495A6F6C495A6F6C495A6F9038
+C07FE0B500FC013FB51280040F49C7FC040013E042257EA448>254
+D<49B612F8133F90B7FC00039039C007FE003807FE00120F5B121FA5120F6C7E6C7E6C13
+E06C6CB5FC131F13004913E715C74913875B491307EB1FFE14FC133FEB7FF8EBFFF04813
+E0A24813C0481380121FB500F1B512F8A32D257EA432>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fg latt1000 10 75
+/Fg 75 126 df<130EEB3F80497E3801FFF0487F000F13FE381FFBFFD87FF113C039FFC0
+7FE0EB803F38FE000F007CEB07C0007813031B0D77B42D>2 D<007FB512F0B612F8A36C
+14F01D0579942C>21 D<121FEA3F80EA7FC0EAFFE0B0EA7FC0AEEA1F00C7FCA7121FEA3F
+80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B3470B32C>33 D<003C131E007F137F481480
+A66C1400A6007E7FA6003E133EA3003C131E001C131C191977B32C>I<0107131C90380F
+803EA8011F137EEC007CA4003FB612E0B712F8A43A003E00F800A2EB7E01017C5BA8EBFC
+0301F85BA2B712F8A4003F15E03A01F007C000A30003130F01E05BA86C486CC7FC25337D
+B22C>I<EB01C0497EA6EB0FFC90387FFF8048B512E00007804880391FFBEFFC393FC3E1
+FE903803E07F007E80127C00FC158012F8157FA300FCEC3F00A2007E91C7FC127FEA3FC3
+13FBEA1FFF6C13FC6C13FF000114C06C6C7F011F13F801037F14E7ECE1FEECE07F810018
+80007E1580150F12FFA312FE151F1600007E5C007F143ED83F8313FE9038C3E1FC391FFB
+EFF86CB55A6C5C6C5CC691C7FCEB1FF8EB03E0A66D5A21417BB92C>I<D807801307D81F
+E0EB0F80151F487E486C133F1600007C5CD8FCFC137EEAF87C15FE5D14015DA21403D8FC
+FC5BEA7CF8007F13075D383FF00FD81FE05BA23807801FC75B143F92C7FCA25C147E14FE
+5CA213015CA213035C13075CA2130F5C131FEC800FED3FC0013FEB7FE0140049EBFFF001
+7E13F9A2D9FE0113F801FC13F0A2120113F8120313F015F90007010013F05B000F14FF49
+EB7FE0A20007EC3FC06C48EB0F0025417DB92C>I<EA0F80EA1FE0EA3FF0127F13F8A213
+FCA2123F121F120FEA007CA313FC13F8A2120113F01203EA07E0A2EA0FC0EA3F80127FEA
+FF005A12F812700E1D71B22C>39 D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB
+7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3
+127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB
+03FC130113001438164272B92C>I<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E
+137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC1300AC130114F8A313
+0314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A485A485AEA3FC0485A
+48C7FC5A5A1270164279B92C>I<EB0380497EA60020140800F8143E00FE14FE00FF13C1
+EBC7C7EBE7CF003FB512F8000F14E0000314806C140038007FFCA248B5FC481480000F14
+E0003F14F839FFE7CFFEEBC7C7EB07C100FE13C000F8143E0020140800001400A66D5A1F
+247AAA2C>I<147014F8AF003FB612E0B712F8A4C700F8C7FCB0147025267DAB2C>I<EA0F
+80EA1FE0EA3FF0EA7FF8A213FCA3123F121F120F120013F8A21201EA03F01207EA1FE0EA
+7FC0EAFF80130012FC12700E17718A2C>I<007FB512F0B612F8A36C14F01D0579942C>I<
+121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80A2151F
+16005D153E157E157CA215FC5D14015D14035D14075D140F5D141F92C7FC5C143EA2147E
+147C14FC5C13015C13035C13075C130F5C131F91C8FC5B133EA2137E137C13FC5B12015B
+12035B12075B120F5B121F90C9FCA25A123E127E127C12FC5AA2127021417BB92C>I<EB
+03F8EB0FFE90383FFF80497F90B57E3901FE0FF03903F803F848486C7EEBE0004848137E
+A248487FA248C7EA1F80A2003E140F007E15C0A3007C140700FC15E0AC6C140F007E15C0
+A46CEC1F80A36C6CEB3F00A26C6C137E6D13FE00075CEBF0016C6C485A3901FE0FF06CB5
+5A6D5B6D5BD90FFEC7FCEB03F823357CB32C>I<1307497EA2131FA2133F137F13FF5A12
+07127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E01C3477B32C>I<EB
+0FF890387FFF8048B512E00007804814FC391FF80FFE393FE001FF903880007F48C7EA3F
+80007E141F00FE15C0150F6C15E01507A3127E123CC8FCA2150F16C0151F1680153F1600
+5D15FE4A5A14034A5A4A5A4A5A4A5AECFF804948C7FC495A495A495AEB3FE0EB7F8049C8
+FC485A4848EB03C04848EB07E0EA1FE0485A48B6FCB7FCA36C15C023347CB32C>I<EB0F
+FC90387FFF8048B512E0000714F84880391FF807FEEBC0004848137F6D7F1680151FA26C
+5A6CC7FCC8FC153F16005D15FE14014A5AEC1FF890381FFFF0495BA215F86D7F90380007
+FEEC00FF81ED3F80ED1FC0150FA216E01507A2123C127EB4FC150F16C0A248141F007FEC
+3F806DEB7F006C6C5B391FF807FE6CB55A6C5C6C14E0C66C1380D90FFCC7FC23357CB32C
+>I<EC07F04A7E141F143FA2147EA214FCEB01F8A2EB03F0EB07E0A2EB0FC0EB1F80A2EB
+3F00137EA25B485AA2485A5B1207485AA2485A48C7FCA2127E5AB712FC16FEA36C15FCC8
+EAF800AA91387FFFF091B512F8A36E13F027347EB32C>I<000FB512FE4880A35D0180C8
+FCADEB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7
+121F6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F
+006C6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>I<
+121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5
+EA7FC0EA3F80EA1F000B2470A32C>58 D<1502ED0F80151F157F15FF913803FE00EC0FFC
+EC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA
+3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E9038
+00FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F150FED0200212A7BAD2C>60
+D<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800
+FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803FE00EC0FFCEC1FF0EC
+7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF
+8090C9FC12FC5A1220212A7BAD2C>62 D<EB3FFE0003B512C0000F14F04814FC4880397F
+E007FF90C7FC00FEEC3F806C141FA3153F007EEC7F00003C5CC7EA03FEEC0FFC4A5AEC3F
+E04A5A4AC7FC495A495A5C13075C130F5CA76D5A90C9FCA8EB0380EB0FE0A2497EA36D5A
+A2EB038021337BB22C>I<EC7F80903803FFE0010F7F013F7F497F9038FFC0FE3901FE00
+7FD803F87F4848EB1F809038E00FCF390FC03FFF48484813C091B5FCEA3F01393E03F87F
+903907F03FE0007EEBE01F397C0FC00FEC8007A2EAFC1F00F8EB0003A900FCEB8007D87C
+0F14C0A2ECC00F3A7E07E01F80003EEBF03F903903F87F00393F01FFFED81F805B6E5A6C
+6C6C5A3907E00FC09039F00007C06C6CEB0FE0D801FE131F3900FFC0FF6DB512C06D1480
+010FEBFE00010313F89038007FC023337CB22C>I<14FE497EA4497FA214EFA2130781A2
+14C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA348
+80A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC49
+7E27347EB32C>I<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2
+ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED
+07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016
+C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FF
+EBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC
+00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C1307
+16E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F0010013802535
+7DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0
+A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153F
+ED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712
+F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA516
+3C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7
+FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26
+337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC0149
+7E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8
+913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F
+6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB3
+2C>I<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025
+337DB22C>76 D<D87FE0EB0FFC486CEB1FFEA26D133F007F15FC000F15E001BC137BA401
+9E13F3A3EB9F01A2018F13E3A21483A2018713C314C7A201831383A214EFA201811303A2
+14FFEB80FEA3147C14381400ACD87FF0EB1FFC486CEB3FFEA36C48EB1FFC27337EB22C>
+I<007FB512C0B612F88115FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501
+A6150316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80
+B57EA36C5B25337EB22C>80 D<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F
+7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE
+1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB2
+2C>82 D<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC00
+7E147F00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC00
+03EBFFC06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A200
+78140712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0
+D8F83F13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078
+153CC71400B3AF90383FFFFCA2497F6D5BA227337EB22C>I<D87FF0EB07FF486C491380
+A36C486D1300001FC8127CA46C6C5CA76C6C495AA4143E147FA33A03E0FF83E0A214F7A2
+01E113C3A3000101E35BA201F113C701F313E7A314C1A200005DA201F713F71480A301FF
+13FF017F91C7FC4A7EA4013E133E29347FB22C>87 D<387FFFFCB512FEA314FC00FCC7FC
+B3B3B3B512FC14FEA36C13FC17416FB92C>91 D<127012F8A27E127C127E123E123F7EA2
+7F120F7F12077F12037F12017F12007F137C137E133EA2133F7F80130F80130780130380
+130180130080147C147E143EA2143F8081140F81140781140381140181140081157CA215
+7E153E153F811680150FA2ED070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3
+387FFFFEB5FCA36C13FC17417DB92C>I<007FB6FCB71280A46C150021067B7D2C>95
+D<1338137CEA01FC1203EA07F813F0EA0FC0EA1F80A2EA3F00123E127E127CA212FC5AA3
+EAFFC013E013F013F8A2127FA2123F13F0EA1FE0EA07C00E1D72B82C>I<3801FFF00007
+13FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE13
+1F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383F
+E01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>I<EA7FF0487EA3
+127F1201AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138801FE091380007F049
+EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138
+801FE09138E07FC091B51280160001FB5B01F813F83900F03FC027337FB22C>I<903803
+FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A12
+7EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C
+6C6C5B011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC003FAAEB07F8EB3FFE
+90B512BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC007E80A212FE5AA87E
+007E5CA2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CECBFFE6C143FEB3FFC90
+390FF01FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E48803907FE03FE390F
+F800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC
+7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B51280
+6C1500013F13FC010F13F00101138023247CA32C>I<EC0FF8EC3FFE91B5FC4914805B90
+3807FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C5C26000FC0C7FCB3A8
+003FB512F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90391FFE3FFE017FB6FC
+48B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C0001300001F8049137EA6
+6D13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99FFEC7FCEB87F80180C8
+FCA37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001FF848C7EA03FC007E14
+00007C157C00FC157E48153EA46C157E007E15FCD87F801303D83FE0EB0FF8D81FFCEB7F
+F06CB612E0000315806C1500D8003F13F8010713C028387EA42C>I<EA7FF0487EA3127F
+1201AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02807FEC000F5B5B
+A25BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<1307EB1FC0A2497EA3
+6D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14
+FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA748B512804814C0
+A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C5B5C001F5B0007
+90C7FC1A467CB32C>I<EA7FE0487EA3127F1201AA91381FFFF04A13F8A36E13F0913800
+FE004A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5FCA2EC9F80EC0F
+C001FE7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0FFFCB500E113FEA36C
+01C013FC27337EB22C>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C15
+8022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07
+FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F
+13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC90
+38F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5
+FCB500F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F13C048B512F0488039
+07FC07FC390FF001FE48486C7E0180133F003F158090C7121F007EEC0FC0A348EC07E0A7
+6C140F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C485A3907FC07FC6CB5
+5A6C5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE039FFF8FFF801FB13FE
+90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED01FC491300A216
+FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280
+160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I<903903FC
+078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF00148487E49137F484813
+3F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F6D13FF380FF0033807
+FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A1480A36E140029367D
+A32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138FC
+00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>I<9038
+7FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F140013F038
+3FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00FC143F
+151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC002024
+7AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC80
+0F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I<3A7FF0
+03FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15
+807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C15FC3A
+03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC013E5B
+A2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA26D5A14
+7C27247EA32C>I<D87FFFEB7FFF6EB5FCB515806C16004A7ED807C0EB01F0A66C6C495A
+A3143E147FA2D801F0495AECFF87A214F7A201F113C700005D9038F9E3CFA201FB13EFA3
+D97BC190C7FC017F13FFA21480A2013F5B90381F007C29247FA32C>I<3A3FFF03FFF048
+018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E090380FCFC0
+903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB0FC7EC
+83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514FE6C15
+FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0000F80
+6C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F815DA2
+EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E147CA214
+FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA07E027
+367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A003C495A
+C7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848EB01E0
+4848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15FF02071380141F
+147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7F
+C67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F14070200130021417BB92C
+>I<127812FCB3B3B3A9127806416DB92C>I<EA7FC0EAFFF813FE6D7E6C7FC67F131FEB07
+F01303B380EB01FEECFFC06D13FF6E1380141F147F91B512004913C04AC7FCEB03F85CB3
+1307EB1FE013FF007F5BB55A49C8FC13F8EA7FC021417BB92C>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh labx1440 14.4 69
+/Fh 69 256 df<151E153E15FCEC01F8EC03F0EC07E0140FEC1FC0EC3F80EC7F005C5C49
+5A1303495AA2495A131F5C133F5C137F5C13FFA24890C7FCA25A5B1207A25B120FA3485A
+A4123FA25BA2127FA65B12FFB3A3127F7FA6123FA27FA2121FA46C7EA312077FA212037F
+7EA26C7FA2137F80133F80131F80130F6D7EA26D7E13016D7E8080EC3F80EC1FC0EC0FE0
+1407EC03F0EC01F8EC00FC153E151E1F7974D933>40 D<12F07E127E7E6C7E6C7E7F6C7E
+6C7E6C7E7F1200137F806D7EA26D7E80130F80130780130380A26D7EA215807F15C0A214
+7F15E0A3EC3FF0A415F8A2141FA215FCA6140F15FEB3A315FC141FA615F8A2143FA215F0
+A4EC7FE0A315C014FFA215805B1500A2495AA25C13075C130F5C131F5C495AA2495A91C7
+FC13FE12015B485A485A485A5B485A48C8FC127E12F85A1F7979D933>I<EA07E0EA1FF0
+EA3FFC127F7FB5FCA31480A37EA27E7EEA07E7EA0007A3130F1400A35B131E133EA25BA2
+5BA2485A485A1207485A485A90C7FC121E120C1127768F25>44 D<913803FF80023F13F8
+49B6FC010715C04901017F903A3FFC007FF8D97FF0EB1FFC49486D7E48496D7E4A7F4817
+804890C76C13C0A248486E13E0A2001F17F0A3003F17F8A249157FA2007F17FCA600FF17
+FEB3A5007F17FCA6003F17F86D15FFA3001F17F0A3000F17E06D5C6C17C0A26C6D491380
+6C17006E5B6C6D495A6D6C495AD93FFCEB7FF8903A0FFF01FFE06D90B55A010192C7FCD9
+003F13F802031380374F7BCD42>48 D<151E153E15FE1403140F147FEB07FF0003B5FCB6
+FCA3EBF87FEAFC00C7FCB3B3B3A6007FB712FCA52E4E76CD42>I<EC1FFE49B512F0010F
+14FC013FECFF804915E02701FF803F7F2703FC000713FCD807F001017F48486D7FD81F80
+6E138048C87E7013C0D87FE016E001F8806D16F000FF817F7013F8A56C5AA26C5A6C5AEA
+0380C914F05EA218E05E18C05E18804C13005F4C5A4C5A5F4B5B4B5B4B5B94C7FCED0FFC
+4B5A4B5AED7FC04B5A4A90C8FCEC03FC4A5A4A4814F84A5A4A5A4AC8FC02FEEC01F0495A
+495A495A5CD90F80140349C8FC013E1507017FB7FC90B812E05A5A5A5A5A5A5AB9FC18C0
+A4354E7ACD42>I<913807FFC0027F13FC0103B67E010F15E090261FF80313F890267FC0
+007F01FEC7EA3FFE48488148486E138013FE486C6C6D13C0804817E080A66C5B18C06C5B
+6C90C75AD80038168090C8FC4C1300A24C5A5F4C5A4B5B4B13C0030F5BDB7FFEC7FC9138
+7FFFF816C016FCEEFF80DA000313E09238007FF8EE3FFE707E70138018C07013E018F070
+13F8A218FC82A218FEA3EA03C0EA0FF0EA3FFC487EA2B5FCA218FCA25E18F8A26C4816F0
+495C4916E0D83FE04A13C06C485CD80FF04A1380D807FE91387FFE003B03FFE003FFFC6C
+90B65A6C6C15E0010F92C7FC010114FCD9001F1380374F7BCD42>I<17FC1601A2160316
+07160FA2161F163F167FA216FF5D5DA25D5D5D167F153E157E15FC15F8EC01F01403EC07
+E015C0EC0F80141FEC3F00143E5C14FC495A5C495A1307495A5C49C7FC5B137E137C5B12
+01485A5B485A120F485A90C8FC123E127E5ABA1280A5C901FCC7FCAF021FB71280A5394F
+7CCE42>I<486C150601F0153E01FEEC01FED9FFF0133F91B65A5F5F5F5F5F94C7FC16FC
+5E16E093C8FC15FC01F0138091CAFCAC913807FF80023F13F891B512FE01F36E7E9026FF
+FC0113E09139E0007FF891C76C7E496E7E01F86E7E5B7013804916C0C9FC18E08218F0A4
+18F8A31203EA0FE0EA3FF8487EA212FF7FA218F0A25B5E6C4816E05B01C016C06CC85A18
+806C6C4A13007FD80FF04A5A6C6CECFFFCD803FE4913F02701FFE00F5B6C6CB612806D92
+C7FC010F14F8010114C09026003FFCC8FC354F7ACD42>I<ED07FE92B512C0020314F002
+1F14FC91397FFC01FE9139FFE0007F01030180EB3F804990C7121F4948EC7FC0494814FF
+4948010313E0495A49485B5A485BA2485BA2486F13C091C7FC4803001300177E94C7FC5A
+A25B127FA2ED3FF04AB5FC020714C000FF4914F091391F807FF891393E001FFE02786D7E
+4A6D13807013C06D5A4A6D13E018F05C7013F8A291C813FCA44916FEA3127FA6123FA37F
+6C17FCA36C17F85E7E6E15F06C17E06C6D5B6E15C06C4B13806D6C491300D93FFC495A6D
+B4EBFFFC010790B512F06D5D01001580021F01FCC7FC020313C0374F7BCD42>I<121F7F
+7FEBFF8091B8FCA45A18FE18FC18F818F0A218E018C018804817000180C8123E007EC912
+7E5F007C4B5A4C5A5F16074C5A484B5A4CC7FC167E167CC912FC4B5A4B5AA24B5A150F4B
+5AA24B5AA24BC8FC5DA25C5D1403A214075D140FA3141FA2143FA34A5AA414FFA65BAB6D
+5B6E5A6E5A6E5A385279D042>I<913803FFC0023F13FC49B67E010715E090260FFC0013
+F8D93FE0EB1FFCD97F80EB07FE49C76C7E496E1380484880000317C049157F120718E017
+3F120FA27FA27F7F6E147F02E015C08002FC14FF6C01FF15806F481300EDE0036C9138F8
+07FE6F485A6C9138FF1FF06CEDFFE017806D4AC7FC7F010F6E7E6D81010115F06D810103
+15FE010F81D93FF71580D97FC115C02701FF807F14E048EB001F48486D14F04848010314
+F848481300496E13FC003F151F491407007F6F13FE491400177F00FF163F49151F170F17
+07A21703A218FCA27F127F6DED07F8A26C6CED0FF07F6C6CED1FE06C6CED3FC06C6CEDFF
+806C01C0010313006C01FCEB3FFE6C6CB612F8011F15E001071580010002FCC7FC020F13
+C0374F7BCD42>I<913807FF80027F13F849B512FE01076E7E90261FFE0113E0903A7FF8
+003FF049486D7E48496D7E48496D7E484980486F138091C7FC486F13C05A18E0485A18F0
+A27013F812FFA318FCA618FEA35E127FA4003F5DA26C7E5E7E6C6D5B161E6C7F6C6D5B6C
+6C6C13F890393FFC03F06DB55A01074A13FC01001400EC1FF891C8FCA218F85EA301FC16
+F0487E2607FF8015E05E486D15C0A24C1380A24C13005F4A131F6C4B5A49C7485A494A5A
+6C48495B6D01075B2701FF803F90C7FC6C90B512FC013F5C6D14C0010791C8FC9038007F
+F0374F7BCD42>I<BB12FEA5D8000F01E0C700077FF0007F191F190785858586A2F23F80
+A21A1FA31A0FA4DD01F014C01A07A497C7FCA21703A31707170F171F17FF92B6FCA5EDE0
+00171F170F17071703A317011BF8A3F201F0A394C8FCA21A03A21BE0A21A07A31A0F1BC0
+1A1F1A3FA21A7F1AFF4F13801907191F197F060FB5FCBCFCA21B00A34D527CD156>69
+D<B8D88007B712FCA5D8000701F0C9003FEB8000B3AE92BAFCA503F0C9123FB3B1B8D880
+07B712FCA55E527CD167>72 D<B81280A5D8000701F0C7FCB3B3B3B2B81280A529527DD1
+30>I<B812E0A5D8000F01E0CAFCB3B3A91AF8A419011AF0A51903A31907A2190F1AE019
+1FA2193F197F19FF60180760187F0503B5FCBB12C0A545527CD14F>76
+D<EC3FFE0107B512E0011F14FC017F14FF2701FFC00F13C02703FE00037F486C01007F6E
+6D7E486D80707EA2707EA3707F6C5B6C90C7FC6C5AC9FCA60307B5FC0203B6FC147F0103
+B7FC011FEBF00F017F1300EBFFFC000313F04813C0485B4890C7FC5A5B485AF081F012FF
+5BA35EA26D5C127F6D5C003F03F713C36DD901E314E06CD9C00714FF00079026F01F8114
+C06C90B5C61480C602FC6D1300011F01F0EB3FFC01010180EB07F03C387CB642>97
+D<913803FFE0023F13FE91B67E010315E0010F9038003FF8D93FFCEB07FC4948497E4948
+131F4849497E485B485BA24890C7FC5A5B003F6F5A705A705A007F92C8FC5BA312FFAD12
+7F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D143E6C6D147E6C6D5C6D6C495A6D
+B4EB07F0010F9038C01FE06D90B5128001014AC7FCD9003F13F80203138031387CB63A>
+99 D<ED1FF8913803FFFE020FEBFF80023F14C09139FFF83FE001039038E0FFF0491380
+49010113F85BEB3FFEA2EB7FFCA26F13F0495AEE7FE0EE1F8093C7FCAEB712C0A5C601F8
+C8FCB3B3A7B612FEA52D547CD328>102 D<133FEBFFC0487F487FA2487FA66C5BA26C5B
+6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B612F0A51C547CD324>105
+D<D93FF0D91FF84AB47EB591B56C010F13F8030302E0013F13FE030F6E90B6FCDB3F8090
+27F803F80F7F922A7E007FFC07E0077F000302F890283FFE0F80037FC6D9F1F0011F4948
+7EDAF3E0DAFF3E814B153CDAF7805D92C76C496D7F14FF4A5EA24A5EA34A5EB3ADB6D8F8
+0FB66CB612F8A565367BB56E>109 D<D93FF0EB1FFCB591B57E030314E0030F14F89239
+1FC07FFC92397E003FFE000302F86D7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5C
+A25CA45CB3ACB6D8F807B612C0A542367CB549>I<913801FFC0023F13FE91B67E010315
+E0010F018013F8903A3FFC001FFED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F
+4883488349153F001F83A2003F8349151FA2007F83A400FF1880AC007F1800A3003F5F6D
+153FA2001F5FA26C6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB
+1FFE6DB46CB45A010790B512F0010115C0D9003F49C8FC020313E039387CB642>I<D93F
+F8EB7FF0B50107B5FC031F14C0037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F
+7FC602806D7F92C76C7F4A824A804A6E7F85187F85A2183F85A4721380AD4E1300A44E5A
+A26118FF616E5C616E4A5B6E4A5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8
+B65A033F14C0030749C8FC030013E093CAFCB1B612F8A5414D7DB549>I<903903FFC00E
+011FEBFC1E90B6127E000315FE3907FE003FD80FF0130F4848130348481301491300127F
+90C8127EA248153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C14FE6F7E6C15E0
+6C816C15FC6C81C681133F010F15801301D9000F14C0EC003F030713E0150100F880167F
+6C153FA2161F7EA217C07E6D143F17807F6DEC7F0001F85C6DEB03FE9039FF801FFC486C
+B512F0D8F81F14C0D8F00791C7FC39E0007FF02B387CB634>115
+D<BB12FCA5D8000F01C0C7000F7F1800193F190F1907190319011900A21A7FA286A386A4
+1B801A0FA497C7FCA684047FB512E092B712FE737E1AE01AF89326E0007F13FE03E0C700
+077F4B02011480726C13C07313E07313F07313F8851BFC851BFE85A37313FFA91BFE61A3
+4F13FCA24F13F8A24F13F04F13E04F13C04F13804EB51200060F5BBB12F8621A804FC7FC
+19C050527BD15D>193 D<B912FEF0FFF019FE737E1AE0D8000F01C0C7001F7F06037F72
+7F726C7E867313807313C0A27313E0A37313F0A94F13E0A34F13C01B80614F1300624F5A
+06035B4E13E0063F5B92B8C7FC19F8A2F1FF8003C0C7001F13E0060113F89538007FFE73
+7E070F13C01BE07313F0851BF87313FCA27313FEA31BFFA91BFEA2611BFCA2614F13F81B
+F0614F13E0077F13C04EB51280060FEBFE00BB5A1AF01AC04FC7FC19C050527BD15D>I<
+0038EC3FFF003C0107B512F8003F013FECFF806DB712E001E316F801F7D9C00713FED9FF
+FCC77F02E0023F7F02806E13E091C87E01FC6F7F496F7F496F7F5B717F5BA249838490CA
+FCA3123EA395B5FCCB5BA24D5BA24D5B614D5B4D5B4D5B4D48C7FCEFFFF8040713E0020F
+B612804A02FCC8FC5FEFFF8091C7001F13F0040013FE94381FFF80050713E0717F717F71
+13FE727E841A807213C0A21AE0841AF0A312F8A57E007C19E0A2007E5F1AC06C5F1A806C
+6C5E6D93B512006C6C4B5B6C6C4B5BD803FC4B5B6CB44B5B6C01E0027F13C06DB40103B5
+5A011F90B648C7FC010716F8010116C0D9003F4AC8FC0200148044547AD250>199
+D<B8D88007B712FCA5D8000701F0C9003FEB80006297B5FCA261A26161A261611ABFF13F
+3FA2197E19FE19FCF001F8A2F003F0F007E0A2F00FC0A2F01F80F03F00A2187EA2604D5A
+A24D5A1707604D5AA24D5A173F95C7FC177EA25F4C5AA24C5AA24C5A4C5AA24C5AA24CC8
+FC167EA25E15F15EEDF3F0A2EDF7E015FF5E5EA293C9FC5DA25DA25D5DB8D88007B712FC
+A55E527CD167>I<B86C0103B612E0A5D8000701F0C9000FEB8000E001FCC7FC505AF20F
+F0505A505A50C8FC1AFE4F5A4F5A4F5A4F5AF13FC04F5A4FC9FCF001FC4E5A4E5A4E5A4E
+5AF07F804ECAFC4D5AEF03F84D5A4D5A4D5A4D7E4D7EEE01FF4C7F4C7F4C7F5E4C7F4C80
+EEFE7FDBF3FC809226F7F83F7F9226FFF01F7FEEC00F0480804C6C7F4B7F4B814B6D7F4B
+6D808486727F8486727F727F8486727F8487737F737F8587737F8587737F737F8588747F
+97B57EB86C90B712F8A55D527CD167>202 D<B600F04EB612F06F606F60A3D800076D4E
+49C7FCA2DADFFFF01F7FA202CF6D173EA302C76D177CA202C36D17F8A202C16DEE01F0A2
+02C06DEE03E0A36F6CEE07C0A26F6CEE0F80A26F6CEE1F00A36F6D153EA26F6D5DA26F6D
+5DA36F6D4A5AA26F6D4A5AA2706C4A5AA3706C4A5AA2706C4AC7FCA2706D133EA3706D5B
+A2706D5BA2706D485AA2706D485AA3716C485AA2716C485AA2716C48C8FCA37113BEA271
+13FCA2715BA3715BA2715BA2D91FF06F5AB600FE050FB712F0A2725AA272C7FC74527CD1
+7D>204 D<B8D88007B712FCA5D8000701F0C9003FEB8000B3AE92BAFCA503F0C9123FB3
+B1B8D88007B712FCA55E527CD167>I<93381FFF800303B512FC033FECFFC092B712F002
+07D9F80113FE021F903A80001FFF804A48C700077FDAFFF8020113F049496E7F4901C0ED
+3FFC49496F7E4990C96C7E4948707F013F854948707F4948707F48864A8248864A177F48
+864849717EA3481B804A83481BC0A44890CB6C13E0A5B51AF0AF6C1BE06E5FA46C1BC0A2
+6E5F6C1B80A36C6D4D1300A26C6D4D5AA26C626C6D4C5B6E5E6C626D6C4C5B6E5E6D6D4B
+5B6D6D4B5B6D6D4B90C7FC6D6D4B5A01016D4A13F86D01FE02075B91263FFFC0013F13C0
+6ED9F801B55A020790B648C8FC020116F8DA003F15C003074AC9FCDB001F1380545479D2
+63>I<BE12FCA5D8000701F0C9003FEB8000B3B3B3B2B8D88007B712FCA55E527CD167>I<
+B912FCF0FFE019FE737E1AE0D8000F01E0C7003F7F060313FC06007F737E7313807313C0
+7313E0851BF0A21BF885A21BFCA91BF8A3611BF0A21BE04F13C0614F13804F13004F5A06
+0713F8063F5B92B812C097C7FC19F8198003E0CBFCB3AEB712FEA54E527CD15A>I<9326
+03FFF01407047F01FF140F0307B600E0131F033F03F8133F92B700FE137F02039126C003
+FF13FF020F01F8C7EA3FC1023F01C0EC0FE391B5C80003B5FC4901FC814949814901E082
+011F498249498292CA7E4948834948835A4A83485B4885A24849187FA2485B1B3FA2485B
+1B1FA25AA21B0091CDFCA2B5FCAE7EA280A36C1A1FA36C7FA21B3F6C7F1B3E6C7F1B7E6C
+6D187C6C1AFC6E18F86C19016D6CEF03F06D7E6FEE07E06D6DEE0FC001076DEE1F806D01
+F8EE3F006D6D16FE6D01FF4B5A023F01C0EC07F8020F01FCEC3FF00203903AFFC001FFC0
+020091B6C7FC033F15FC030715F0DB007F1480040301F0C8FC505479D25F>I<003FBB12
+FEA59126C0007FEB000101FCC7ED001FD87FF0F007FF49844984498490C883A2007E86A3
+007C86A500FC1B80481A0FA6C994C7FCB3B3AD49B912C0A551527BD15C>I<B700F8033F
+B512F0A5D8001F01F0CA383FF0006DF10FC06F606D6D171F7F6F95C7FC6D616D6D173E70
+167E806E6D167C7016FC6E607015016E7F6E607015036E6D5E6E1707826E606F6D140F71
+5D6F161F6F7F7192C8FC6F5E71143E6F6D147E8171147C6F6D14FC6F5EF08001827001C0
+5BF0E003705D70EBF00718F8705DF0FC0F7001FE5B70141F18FF70029FC9FC7113BF19FE
+83836183715BA283DA03805DDA0FF07FDA3FF86D5B4A7E6F6E5A02FF153F6F5D72CAFC60
+187EA24B5C4D5A6E48495A4B130FDA3FE0495A4BEBFFC091261FF80790CBFC6EB55A0203
+5C6E14F06E6C1380DB0FFCCCFC5C537DD163>I<92B812FCA592C701FCCAFCA74BB612FE
+92B812FC020FEFFFC0027F18F849B500E0D9FC1F13FE010FD9FC000200EBFFC04901E004
+1F7F017F0180040713F84948C703017F4849717F4849727E484972138048497213C0A248
+497213E0A248497213F0A2481CF8A291C882A2B51BFCAB6C1CF8A26E60A26C1CF0A26C6D
+4E13E0A26C6D4E13C0A26C6D4E13806C6D4E13006C6D4E5A6C6D4D5B6D6C6C04075B011F
+01E0041F13E06D01FC93B55A0101D9FFE0021F49C7FC6D6C90B812F8020F18C0020005FC
+C8FC03014BC9FC92C701FCCAFCAA92B812FCA55E5279D16D>I<EC3FFE0107B512E0011F
+14FC017F14FF2701FFC00F13C02703FE00037F486C01007F6E6D7E486D80707EA2707EA3
+707F6C5B6C90C7FC6C5AC9FCA60307B5FC0203B6FC147F0103B7FC011FEBF00F017F1300
+EBFFFC000313F04813C0485B4890C7FC5A5B485AF081F012FF5BA35EA26D5C127F6D5C00
+3F03F713C36DD901E314E06CD9C00714FF00079026F01F8114C06C90B5C61480C602FC6D
+1300011F01F0EB3FFC01010180EB07F03C387CB642>224 D<18FC170F17FF163F030FB5
+FC4AB6FC021F5D91B7FC01035E130F495E49168090B8C7FC17F04803E0C8FC4802C0C9FC
+4801F8CAFC14E048138049CBFC5B485A5B5B123F5B5BA23A7F0001FFC0023F13FE91B67E
+D87E0315E0010F018013F8903A3FFC001FFE267C7FF0EB07FF49486D7F00FD496D7FB548
+6D7F91C8127F848449153F84A28449151FA284A41980AC007F1800A3003F5F6D153FA200
+1F5FA26C6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB4
+6CB45A010790B512F0010115C0D9003F49C8FC020313E039547CD242>I<B712FEEEFFF0
+17FC17FFC69026F8001F7F040713E004017FA2707FA2717EA64D5AA24C5B4C5B4C5B041F
+90C7FC91B612FC17F05F17FC9139F80007FF040113C07013F0717E717E84171F84A21980
+A61900A25F604D5A17FF04035B040F5BB912C095C7FC17FC17C039357CB442>I<B9FCA4
+C69038F8001F160382707EA283A2EF1F80A4170FA694C7FCB3AAB612FEA431357CB439>
+I<91B912F8A4DA00FCC7EBF8005DAE5DA21401A55D1403A35D1407A34A5AA24AC8FCA25C
+143E5CA25C1301495A495A495AEB3F8049C9FC003FBA12FCA491CAFC01F8171FD87FE0EF
+07FE49170349170190CCFC1A7E127EA2007C193EA400FC193F48191FA5484880B449>I<
+913807FF80027F13F849B512FE01076E7E011F010313E0903A3FFC007FF0D97FF06D7E49
+486D7E4849130F48496D7E48824890C77E1880485A82003F17C0A3485A18E082A212FFA2
+90B8FCA401FCCAFCA6127FA37F123FA2EF03E06C7E17076C17C06C6D140F18806C6D141F
+6C6DEC3F006C6D147ED97FFC495AD91FFFEB07F86D9038E03FF0010390B512C001005D02
+3F01FCC7FC020113E033387CB63C>I<001FB50103B600E090387FFFFCA426007FFCD900
+0301E0C7001F90C7FCD90FF8F10FF8D903FCF11FE06D6C4F5A6D6C4F5ADA7FC04D48C8FC
+DA1FE0EF03FC6E6C4D5ADA07FCEF1FF0DA01FEEF3FC06E6C4D5ADB7F804CC9FCDB1FE0ED
+03FCDB0FF04B5ADB07F84B5ADB03FEED3FE004FF157F4B01834A7E4B01E301E37F4B01F3
+01E77F4B01FB01EF7F94B7FC4B834B486C023F7F4A496C496C7F4AD9F80FD9F80F7F4C6C
+497E4A6E01E0804A01E06F7F4A01C06F7F4A01806F7F0400167F4A854A48717F4949717F
+4949717F4949717FA24949717F4949717F4949717F4990C7717EA24948737F00036D4F13
+E0B6D8E003B6D8E003B61280A469357EB46E>I<0070EBFFFED87C0FEBFFF0D87E3F14FE
+007FB77EDA801F13E09026F800037F4901007F01C06E7E5B707E90C8FC007E6F7EA3127C
+A2C9FC4C5AA24C5A5F4B485A4B13C0030F5B49B500FCC7FC4914F0A216FE90C7381FFFC0
+03037F030013F8707E707E707EA2701380A218C0A412F8A36C1780007C5D007E17005E6C
+4B5A6C6C4A5A01E001035BD80FFE011F5B0003B712C0C693C7FC013F14F8010391C8FC32
+387DB63A>I<B6D8F807B612C0A4C601F8C70007EBC000A25F5FA25F5FA294B5FCEE01F7
+A2EE03E7EE07C7A2EE0F87EE1F07163F163E167C16FC16F8ED01F0150316E0ED07C0150F
+1680ED1F005D153E5D5DA2ECF9F0ECFBE0A2ECFFC05DA292C7FC5CA25C5CA2B6D8F807B6
+12C0A442357DB449>I<023E141FDAFF80EB7FC0496D497E496D487FA2496D487FA54B7E
+6D5E4B7E6D496D5AA26D90B65A023F92C8FC6E5C020714F8020114E09126001FFEC9FC92
+CBFCA4B6D8F807B612C0A4C601F8C70007EBC000A25F5FA25F5FA294B5FCEE01F7A2EE03
+E7EE07C7A2EE0F87EE1F07163F163E167C16FC16F8ED01F0150316E0ED07C0150F1680ED
+1F005D153E5D5DA2ECF9F0ECFBE0A2ECFFC05DA292C7FC5CA25C5CA2B6D8F807B612C0A4
+424E7DCD49>I<B600F8011FB5FCA4C601F8C7000713C07148C7FCEF07F84D5A4D5AEF7F
+C04DC8FC4C5AEE07FCEE0FF04C5AEE7FC04CC9FC4B5A4B5AED0FF8151F4B7EEDFFFE02F9
+7F02FB8091B6FC8303CF7F03877FDAFE037F4A7E02F8806F7F707E707F8284707F707F70
+7F707FA2707F717E717F717FA2717F4D13F8B600F890B612E0A443357DB449>I<0103B9
+12E0A490280003F00003EBE0005DB3A914075DA4EA0F80EA1FC0383FE00FEA7FF0D8FFF8
+5BA2141FA292C7FC5CEBF07E387FE0FED9FFFC0103B612E06C5B6C5B6C5B0003018090CA
+FCD80030CCFC43377EB449>I<B500FC93387FFFFE6E93B5FC8060C6F1FE0081F003DF01
+FB7FF0079F01F97FF00F1F01F87FA2181E6E7E183C6E7E18786E7E18F0A26E7EEF01E06E
+1380EF03C06E13C0EF07806E13E0EF0F00A26E13F0171EED7FF85FED3FFC5FED1FFEA25F
+ED0FFF5F815F815FA28194C7FCD807FF7FB500F849011FB512FE167E167C163C4F357CB4
+58>I<B6D8F807B612C0A4C601F8C70007EBC000B291B8FCA402F8C71207B3A5B6D8F807
+B612C0A442357DB449>I<913801FFC0023F13FE91B67E010315E0010F018013F8903A3F
+FC001FFED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F001F83
+A2003F8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C6C4B
+5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A010790
+B512F0010115C0D9003F49C8FC020313E039387CB642>I<BB12C0A4C601F8C70007EBC0
+00B3B3A9B6D8F807B612C0A442357DB449>I<D93FF8EB7FF0B50107B5FC031F14C0037F
+14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC602806D7F92C76C7F4A824A804A
+6E7F85187F85A2183F85A4721380AD4E1300A44E5AA26118FF616E5C616E4A5B6E4A5B6F
+495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A033F14C0030749C8FC030013E0
+93CAFCB1B612F8A5414D7DB549>I<913803FFE0023F13FE91B67E010315E0010F903800
+3FF8D93FFCEB07FC4948497E4948131F4849497E485B485BA24890C7FC5A5B003F6F5A70
+5A705A007F92C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D
+143E6C6D147E6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B5128001014AC7FCD9
+003F13F80203138031387CB63A>I<007FB812FCA4D9F807EBC03F01C015070180150301
+001501007E1600A2007C177C00FC177EA348173EA7C71600B3AA017FB612FCA437357DB4
+3E>I<B600E090381FFFFCA4000101F8C700011380943800FE006C177C6E15FC017F5E6E
+1401013F5E8017036D6D5C17076D5E6F130F6D5E6F131F6D93C7FC815F6D6D133E177E6D
+157C6F13FC027F5C811601DA3FFF5B16036E5C16876E5C16CF6E5C16EF16FF6E91C8FCA2
+6E5BA26E5BA26F5AA36F5AA26F5AA26F5AA35E151F93C9FC5D153E157ED81FC0137C487E
+486C13FC486C5B14015D4A5A14074A5A6C48485A4948CAFC495A383F81FC6CB45A6C5B00
+0313C0C648CBFC3E4D7DB445>I<EF3FF893B5FCA516031600B3A4912603FF80EC0FFE02
+3F01F091387FFFE091B500FC01F9B512F801036E01FB14FE010FD9C03F903AFFE01FFF80
+013FD9000FDA800713E0D97FFC6DDA00017F49486D496D7F48496D496E7E48496D496E7E
+4849727E481C804A84481CC091C882481CE0A248487313F0A448487313F8AD6C6C4F13F0
+A46C6C4F13E0A26C1CC06E606C1C806E606C1C006C6D496D4A5A6C6D4E5A6C6D496D4A5A
+6D6C496D495B6DB449DA80075B010FD9C07FDAF01F13800103D9FFFE01FBB548C7FC0100
+02F801F814F8023F496E13E002010180DA0FFCC8FC91C891CAFCB193B612F8A55D6A7CD2
+66>I<B6D8F001B512FCA4C649C7381FFE00017FED0FF06D6C5D6D6D495A606D6D49C7FC
+6D6D137E6D6D13FE6D6D485A4C5A6D01FC5B6E6C485A6E6C485A161F6EEBBF806E01FFC8
+FC6E5B5E6E5B806E7F6F7EA26F7E834B7F92B5FC83DA01FB7FDA03F17FDA07F07F4A5A4A
+486C7E4B6C7E4A486C7F147E02FE6D7F49486D7F49486D7F4A8149487F49486D7F011F6F
+7E013F6F7E48B47EB500FE0107B6FCA440357EB445>I<B6D8F807B612C0A4C601F8C700
+07EBC000B3B3A9BB12E0A4CB12071800F13FF0191F190F19071903A31901A41AF81900A5
+45487DB449>I<B6D8F807B612C0A4C601F8C70007EBC000B1137F80013F153F6E91B5FC
+6D6C130F010790B512F7010115876D6CEBFC07020713C091C8FCB30407B612C0A442357D
+B449>I<B6D8F81FB60003B612E0A4C601F8C7001F90C70003EBE000B3B3A9BF12E0A463
+357CB46C>I<B6D8F81FB60003B612E0A4C601F8C7001F90C70003EBE000B3B3A9BF12F0
+A4CF1203F4007FF51FF81D0F1D071D031D01A31D00A41EFC1E7CA566487CB46C>I<B600
+F8037FB512FCA4C601F8CA387FFC00B291B512F8EEFFF017FE717E9126F8001F13E00407
+7F04017F707F717EA2717EA2711380A74D1300A24D5AA24D5A4C5B04075B041F5BB9D8C0
+7FB512FC180017F8178056357CB45F>251 D<B612F8A4C601F8CAFCB291B512F8EEFFF0
+17FE717E9126F8001F13E004077F04017F707F717EA2717EA2711380A74D1300A24D5AA2
+4D5A4C5B04075B041F5BB95A95C7FC17F8178039357CB442>I<4AB712FE147F0103B8FC
+130F013F903AC0003FFE004948C7FCEBFFF8485B5A5C5AA67E807E807EEB7FFE90381FFF
+C0010790B6FC1301EB001F1401EEFC3F4A13F85C4A13F016E04A13C05C4A1380160091B5
+FC495B495B5D5B495B495BA2495B495B90B5C7FC5A1207B6D8F83FB512FEA43F357EB445
+>255 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi larm1000 10 86
+/Fi 86 256 df<486C1360000314E039070001C0000EEB038048EB070000181306003813
+0E0030130C0070131C00601318A200E01338481330A400CEEB338039FF803FE001C013F0
+A3007F131FA2393F800FE0390E0003801C1981B91C>16 D<001C1307007FEB1FC039FF80
+3FE0A201C013F0A3007F131F001CEB073000001300A400011470491360A2000314E090C7
+12C048130100061480000E130348EB070048130E485B006013181C1980B91C>I<B81280
+A2290280962A>21 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA2
+12075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F
+1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
+D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
+A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
+5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0
+A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44
+D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C0909798817>I<1506A2150E
+150CA2151C151815381530A215701560A215E015C0A214011580A2140315005C1406A214
+0E140CA2141C1418A214381430A21470146014E05CA213015CA2130391C7FCA25B1306A2
+130E130C131C1318A213381330A213701360A213E05BA212015B120390C8FCA25A1206A2
+120E120CA2121C1218A21238123012701260A212E05AA21F537BBD2A>I<EB01C0130313
+07131F13FFB5FCA2131F1200B3B3A7497E007FB512F0A31C3779B62A>49
+D<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0001E6D7E001C6D7E486D7E5A6E7E1260
+12FE6CEC7F807FA56CC7FC121CC8FCEDFF00A25D14015D14035D4A5A4A5A5D4A5A4AC7FC
+147E5C495A14E0495A495A49C8FC011EEB01805B5B49130348481400485A485A90C75A48
+B6FC5A5A485CB6FCA321377CB62A>I<EB07F8EB3FFF90B512C03901F80FF03903C007F8
+48486C7E390E0001FEEA0F80391FE000FF7FA56C5A6C5AC7485AA25D14035D4A5A5DEC0F
+80027FC7FCEB1FFCECFF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2
+121EEA7F80A2487EA316C0157F491480007EC7FC0070ECFF006C495A121E390F8003F839
+07F00FF00001B512C06C6C90C7FCEB0FF823397DB62A>I<1538A2157815F8A214011403
+1407A2140F141F141B14331473146314C313011483EB030313071306130C131C13181330
+1370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AA
+4A7E0103B512F8A325387EB72A>I<0006140CD80780133C9038F003F890B5FC5D5D1580
+92C7FC14FC38067FE090C9FCAAEB07F8EB1FFE9038780F809038E007E03907C003F0496C
+7E130000066D7E81C8FC8181A21680A4121C127F5A7FA390C713005D12FC00605C12704A
+5A6C5C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE021397CB62A
+>I<EC3FC0903801FFF0010713FC90380FE03E90383F800790387E001F49EB3F80484813
+7F485A12075B000FEC3F0049131E001F91C7FC5B123FA3127F90C9FCEB01FC903807FF80
+39FF1E07E090383801F0496C7E01607F01E0137E497F16805BED1FC0A390C713E0A57EA4
+7F123F16C0A2001FEC3F807F000F15006D5B000714FE6C6C5B6C6C485A3900FE07F09038
+7FFFC0011F90C7FCEB03FC23397DB62A>I<EB03F8EB1FFF017F13C03901FC07E048486C
+7E3907E001F8000F6D7E4848137E5B003F80A248C71380A25AED1FC0A516E0A56C143FA3
+6C7E157F121F6C6C13FF6C6C13DF000313013901F0039F3900FC0F1FD93FFC13C0EB07F0
+90C7FCA2153F1680A216005D120F486C137E486C5BA24A5A4A5A49485A381F000F001CEB
+1F80260F807FC7FC3807FFFE000113F838003FC023397DB62A>57
+D<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>
+I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF
+3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F
+80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>68
+D<B812FEA3000190388000076C90C8FC173F838383A383A31880170116C0A394C7FCA315
+01A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701A3EF03
+80A21707A2170F173F177F486D903807FF00B9FCA333397EB838>I<DBFF8013C0020FEB
+F001023F13FC9139FF803F03903A03FC000787D90FF0EB03CF4948EB00EF4948147F4948
+143F49C8121F485A4848150F48481507A248481503A2485A1701123F5B007F1600A44848
+1600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA26C7EA26C7EA26C7E6C7E6C6C
+157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783903A00FFC03F0191393FFFFC
+00020F01F0130002001380383D7CBA41>71 D<B648B512FEA30001902680000313006C90
+C76C5AB3A491B6FCA391C71201B3A6486D497EB648B512FEA337397DB83E>I<B612E0A3
+000101C0C8FC6C90C9FCB3AD1718A517381730A31770A317F0A216011603160FEE1FE048
+6D13FFB8FCA32D397DB834>76 D<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2
+D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406
+A36E6C130CA36E6C1318A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900
+FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C0
+0203B512F8A2ED018045397DB84C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DF
+F0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E81
+14036E7E168080ED7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE
+7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151E
+B500C0140EA2170637397DB83E>I<B6903807FFFEA3000101809038007FE06C90C8EA1F
+80EF0F001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A
+6D6CEB07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80373B7DB83E>85
+D<007FB590383FFFFCA3C601F801071380D97FE0D903FCC7FC013FEC01F06D6C5C5F6D6C
+5C6D6C13034CC8FC6D6C1306160E6D6C5B6DEB8018163891387FC0306E6C5A16E06E6C5A
+91380FF18015FB6EB4C9FC5D14036E7EA26E7F6F7EA24B7E15DF9138019FF09138038FF8
+150F91380607FC91380E03FE140C4A6C7EEC38000230804A6D7E14E04A6D7E49486D7E13
+0391C76C7E01066E7E130E010C6E7E011C1401013C8101FE822607FF80010713E0B500E0
+013FEBFF80A339397EB83E>88 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C
+6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0
+123F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE078
+1FF03A03FFF00FE03A007F8007C026277DA52A>97 D<EB03FC90381FFF8090387E03E039
+01F80070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A212
+7E12FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E0
+39007C07C090381FFF00EB07F81F277DA525>99 D<ED0FC0EC03FFA3EC003F150FB0EB03
+F8EB1FFF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7
+FC5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F8
+01CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C0FC0
+3901F803E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12
+FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801
+F013386C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E903803FF80
+90380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7
+FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039F81F
+707C3901F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA20007
+5C6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F8
+6C14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C14
+01007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF001
+0790C7FC26387EA52A>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA31207
+1203B3AA487EB512C0A312387EB717>105 D<EA03F012FFA3120F1203B3B3AD487EB512
+C0A3123A7EB917>108 D<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903B
+F1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3
+495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<EB03FE90380FFF8090
+383E03E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0A2
+007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F
+6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>111
+D<3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB
+03F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB
+0FE001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328
+357EA42E>I<D903F813C090381FFE0190387E07819038FC01C33903F000E30007147748
+48133749133F001F141F485A150F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C
+6C137F6C6C13EF3901F801CF39007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FC
+A328357DA42C>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE
+9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>I<EBFF03000313
+E7380F80FF381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C
+13F86C7F00037FC67F01071380EB007F141F00C0EB0FC01407A26C1303A37E15806C1307
+7EEC0F00B4131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A51338A31378A313
+F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E1300
+6D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407
+B3A4150FA3151F12016D133F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03
+FC07E00029267EA42E>I<B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E13
+1C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114
+CF903801C7E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E48
+6C80000FEC3FF0D8FFFE90B51280A329247FA32C>120 D<B538803FFEA33A0FF8000FF0
+6C48EB07C00003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070
+010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214
+701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357E
+A32C>I<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2707EA283
+A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE07F0707E
+707E83707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB7FF0B812
+C094C7FC16F832397DB83B>194 D<0103B812F8A3903C0003C0000FFC006E486D5AAD92
+C7FC5CA81406A55CA45CA35CA35CA25CA2495A130391C8FC1306130E5B5B137801F84B7E
+003FB912FCA301E0C9120790CBFC007C183E0078181EA20070180EA200601806A400E018
+07481803A4404980B841>196 D<B812FEA3000190388000076C90C8FC173F838383A383
+A31880170116C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860
+A318E093C712C0A41701A3EF0380A21707A2170F173F177F486D903807FF00B9FCA33339
+7EB838>I<0060EBFFC0D8700F13F8D8783F13FE3A7C7F00FF80D87FF0EB3FC001C06D7E
+496D7E90C76C7E007E81007C6E7E12781501007081A41260A3C85B15035E15075E4B5A4B
+5AED3F8003FEC7FC903807FFF85B90380001FF9138003FC0ED0FF06F7E6F7E6F7E6F7E17
+80EE7FC0A2EE3FE0A212C0A57E0060ED7FC0A2007016806C15FF4B13006C5D6C4A5A6C6C
+EB0FF8D803E0495AD801FEEBFFC0D8007FB5C7FC011F13FC010113C02B3D7CBA33>199
+D<B649B5FCA3000101809038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4C
+C8FC160E5E5E5E5E4B5AED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A
+6C7E14704A6C7E4A6C7E14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E707EA2
+707E707F8484486D497FB6011FEBFF80A339397DB841>202 D<B6013FB512C0A3000101
+809039007FE0006C90C86C5AB3A491B7FCA391C8123FB3A6486D4A7EB6013FB512C0A33A
+397DB841>205 D<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7E
+D93F80EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0
+A2001F17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F
+17F0A26C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F
+4A5A6D6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE00203
+90C8FC363D7BBA41>I<BA12C0A300010180C7387FE0006C90C86C5AB3B3AD486D4A7EB6
+013FB512C0A33A397DB841>I<913A01FF800180020FEBE003027F13F8903A01FF807E07
+903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848
+151F4848150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED01
+80A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5C
+D91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F0020113
+80313D7BBA3C>209 D<49B612E0A3D9000101E0C8FC9138007F80A491381FFFFE0103B6
+12F0903A1FFC7F8FFED97FC0903880FF802601FF00EC3FE0D803FCED0FF048486F7E4848
+6F7E48486F7EA248486F7EA2007F188049167FA200FF18C0A9007F1880A26D16FF003F18
+00A26C6C4B5AA26C6C4B5A6C6C4B5A6C6C4B5A6CB4ED3FE026007FC0ECFF80D91FFCD98F
+FEC7FC0103B612F0D9001F49C8FC9138007F80A6913801FFE049B612E0A33A397BB845>
+212 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A
+6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FE
+A31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F
+8007C026277DA52A>224 D<16C01507153FEC07FF027F13800103B51200010F13FC013F
+13F0D9FFFEC7FC4813C0D803FCC8FCEA07F0EA0FC05B48C9FC121E5AA212381278387003
+FE90380FFF8090383E03E03960F800F8D861F0137CD8E3E07FD8E7C07FD8EF80EB0F8000
+DF15C090C71207B415E0A248EC03F0A416F8A9007E15F0A2007F14076C15E0A26C6CEB0F
+C0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC
+253B7EB92A>I<B67E15F03907F801FC3903F0007E81ED1F8016C0A5ED3F80160015FEEC
+03F890B512C0A29038F000F8153E81ED0FC016E0150716F0A516E0150F16C0151FED7F80
+486CEBFE00B65A15E024247EA32A>I<B612FEA23807F8006C48131E150EA215061507A2
+1503A51500B3EA07FCB512F0A220247EA325>I<013FB612E0A2903A01E003FC006D486C
+5AAC14801301A5EB0300A31306A35B131C13185B13F0485A00074A7E007FB712F0A290C8
+1207007C15010070ED0070A20060163000E01638A3481618A52D3180A32E>I<EB07F8EB
+1FFF90387C0FC03901F803E03903F001F0D807E013F8380FC0004848137CA248C7127E15
+3E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007
+140E6D131CD801F013386C6C137090387E03E090381FFF80903803FC0020277EA525>I<
+D83FFF90B538C03FFFA2D807FE903A07F8001FF8D801FC6D48EB0FE0D8007C1780011E04
+1EC7FC6D5ED907805DD901C015E0D900E04A5A02704A5A023C020FC8FC020E141C020F14
+3CDA1F83137E91393FE3F1FFEDF3F3913A7F3BF73F80913AFE1FFE1FC049486C486C7EED
+03F0D903F86E7ED907F06E7ED90FE06E7EA2D91FC06E7ED93F80157FD97F006F7E017E16
+1F01FE834848707E000384000784000F4A6C80B590B539C03FFFC0A242247FA345>I<38
+C07FF000E3B5FC39FF803FC039FC000FE048EB03F04814F848130115FC5AA2C7FCA215F8
+EC03F0EC07E0EC0FC0EC3F00EB7FF8809038003F80EC0FE0EC03F0EC01F815FC140015FE
+A312C0A315FC6C1301006014F80070EB03F0003CEB0FE0000FEB3FC00003B51200C613F0
+1F277EA525>I<B500C1B51280A23B07F8000FF0006C486D5AA4150F151F153F157715E7
+15C71401EC0387EC0707140E140C14181438147014E0EBF1C0148013F3EBF70013FE5B5B
+5BA4486C497EB500C1B51280A229247EA32E>I<011E133C017F137F6E5A01FF80A46D48
+6CC7FC013E133E90381FFFFC010713F00100138091C9FCA4B500C1B51280A23B07F8000F
+F0006C486D5AA4150F151F153F157715E715C71401EC0387EC0707140E140C1418143814
+7014E0EBF1C0148013F3EBF70013FE5B5B5BA4486C497EB500C1B51280A229347EB32E>
+I<B538C03FFFA23A07F8001FF86C48EB0FE01680031EC7FC5D5D15E04A5A4A5A020FC8FC
+141C143C147EEBF1FF13F39038F73F809038FE1FC0496C7E13F06E7E6E7E6E7EA26E7E15
+7F6F7E151F826F7E8282486C80B539C03FFFC0A22A247EA32E>I<90B712C0A2903A03C0
+07F8006D486C5AAF13031400A65B13061238127C12FE130E130C131CD8F818497ED87038
+90B512C0EA3FF0D81FC090C8FC2A257FA32E>I<D8FFF0EC0FFF6D5C000716E0000316C0
+017C1437A26D1467A36D14C7A290390F800187A3903907C00307A2903803E006A3903801
+F00CA2903800F818A3EC7C30A2EC3E60A3EC1FC0A23907800F80EA0FC0D81FE0EC0FE027
+FFFC0701B5FCA230247DA337>I<B500C1B51280A23B07F8000FF0006C486D5AAC90B6FC
+A29038F00007B0486C497EB500C1B51280A229247EA32E>I<EB03FE90380FFF8090383E
+03E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0A2007E
+EC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6C
+EB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<B81280
+A23B07F8000FF0006C486D5AB3AC486C497EB500C1B51280A229247EA32E>I<3903F01F
+E000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB03F04914F8
+49130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614
+C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>
+I<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC003A2EA1F80
+123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F140E6D130C00
+0F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277DA525>I<00
+7FB612E0A2397E03FC07397801F8010070140000601560A200E01570A200C01530A50000
+1500B3EB07FE0003B512FCA224247EA329>I<B538803FFEA23A0FF8000FF86C48EB07E0
+0003EC03C016806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F13
+60A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460
+A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>
+I<153FEC0FFFA31400153FB0D903F8EB07F0D90FFEEB1FFC903B7F07BF783F80903BFC01
+FFE00FC048486C496C7ED807F090397F8003F848486F7E496DC7FC001F834848167FA248
+C7ED3F80A300FEEF1FC0AA007FEF3F80A36C6CEE7F00A26C6C16FE000F5F6D90387F8001
+6C6C496C485AD801F8ED07E06C6C486D485A903B7F07BF783F8090280FFE3F1FFCC7FCD9
+03F8EB07F090C790C9FCAB4B7E91380FFFFCA33A4A7DB941>I<B538807FFFA200079038
+003FF06C48EB1FC06C4891C7FC6C6C131E017E131C6D13186D6C5AECC070010F5B6D6C5A
+ECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F090380703F8
+EB0601496C7E011C137E49137F01787F496D7E000181000381D81FF8EB3FF8D8FFFE90B5
+1280A229247FA32C>I<B500C1B51280A23B07F8000FF0006C486D5AB3AC486C497EB812
+C0A2C9121F16071601A2160017E0A31760A52B317EA32E>I<B500C1B51280A23B07F800
+0FF0006C486D5AAC6C7E0000141F017E13FF90383FFFE70107130790C7FCAD4B7E4AB512
+80A229247EA32E>I<B500C3B5380FFFFCA23D07F8001FE0007F806C486D48EB3F00B3AC
+486C496CEB7F80BA12FCA23E247EA343>I<B500C3B5380FFFFCA23D07F8001FE0007F80
+6C486D48EB3F00B3AC486C496CEB7F80BA12FEA2CCFC193E190EA219061907A31903A540
+317EA343>I<007FB5FCA2387E03FC387801F812701260A212E0A212C0A5120091B512E0
+16FC9138F800FFEE3F80EE1FC0EE0FE0EE07F0A2EE03F8A5EE07F0A2EE0FE0EE1FC0EE3F
+80496CEBFF00017FB512FC16E02D247EA333>I<B500C00107B5FCA2D807F8C8EA3FC06C
+48151F1880AB90B512C015F89038F001FEEC007FED3F80ED1FC0ED0FE0A2ED07F0A5ED0F
+E0A2ED1FC0ED3F80DB7F0013C02707F801FE133FB6D8F807B5FC15C038247EA33C>I<B5
+12C0A2D807F8C8FC6C5AAC90B512C015F89038F001FEEC007FED3F80ED1FC0ED0FE0A2ED
+07F0A5ED0FE0A2ED1FC0ED3F80ED7F003907F801FEB612F815C024247EA32A>I<EB3F80
+38C1FFF038E7C0FC38FE003F48EB1F8048EB0FC048EB07E05AEC03F04814F8C7120115FC
+A3140015FEEA03FE380FFF8014FFEA003FEB0FFCEB03C090C7FCA315FC1401A200C014F8
+14036C14F000601307007014E06CEB0FC06CEB1F806CEB3F003807C07C3801FFF038003F
+C01F277EA525>I<EE1FE0EEFFFCB539C003F03F923907C00F803C07F8000F0003C06C48
+011E6D7E033E804B6D7E03FC804B147C0201157EA24A4880A302071680A290B5FCA2EBF0
+07A602031600A26F5C0201157EA26E6C5C037C5C037E1301033E5C6F495A486C903907C0
+0F80B527C003F03FC7FC923800FFFCC9EA1FE039277EA53E>I<49B61280131F903A7F00
+0FF00001FC6D5A485A485A1207A512037F1201EA00FEEB3F80010FB5FC1300ECFE0714FC
+EB01F8EB03F0130714E0EB0FC0EB1F80133FEB7F00137E13FE485A485A1207001F4A7EB5
+48B51280A229247FA32D>I E
+%EndDVIPSBitmapFont
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 1234 -45 a Fi
+(\321\357\360\340\342\356\367\355\340\377)26 b(\352)n(\340\360\362)n
+(\340)h(\357\356)g(GNU)i(Emacs)1583 55 y(\(\344\353\377)g
+(\342\345\360\361\350\350)e(21\))-128 330 y Fh(1)132
+b(\307\340\357\363)l(\361\352)45 b(Emacs)-128 511 y Fi(\304\353\377)28
+b(\347\340\357\363)n(\361\352)n(\340)e(GNU)i(Emacs)f(21,)g
+(\357\360\356\361\362\356)g(\355\340\341\345\360\350\362\345)h
+(\350\354\377)g(\357\360\356\343\360\340\354\354\373:)f
+Fg(emacs)-128 611 y Fi(\316)h(\362\356\354,)g(\352)n(\340\352)f
+(\356\362\352\360\373\342\340\362\374)g(\364\340\351\353\373,)g
+(\367\350\362)n(\340\351\362\345)h(\344\340\353\345\345)f(\342)g
+(\360\340\347\344\345\353\345)g(\324\340\351\353\373.)-128
+886 y Fh(2)132 b(\302\373\365)l(\356)l(\344)45 b(\350\347)f(Emacs)-78
+1065 y Fi(\317\360\350\356\361\362)n(\340\355\356\342\350\362\374)26
+b(\360\340\341\356\362\363)h(Emacs)g(\(\350\353\350)h
+(\361\342\345\360\355\363\362\374)f(\342)g(\350\352)n(\356\355\352\363)
+h(\357\360\350)g(\360\340\341\356\362\345)e(\342)h(X\))255
+b Fg(C-z)-78 1165 y Fi(\302\373\351\362\350)28 b(\350\347)g(Emacs)2307
+b Fg(C-x)42 b(C-c)-128 1410 y Fh(3)132 b(\324\340\351\353\373)-78
+1570 y Ff(\356\362\352\360\373\362\374)28 b Fi(\364\340\351\353)f(\342)
+g(\341\363\364\345\360\345)f(Emacs)1717 b Fg(C-x)42 b(C-f)-78
+1670 y Ff(\361\356)m(\365\360\340\355\350\362\374)29
+b Fi(\364\340\351\353)e(\356\341\360\340\362\355\356)g(\355\340)g
+(\344\350\361\352)1627 b Fg(C-x)42 b(C-s)-78 1770 y Fi(\361\356)n
+(\365\360\340\355\350\362\374)27 b Ff(\342\361\345)g
+Fi(\364\340\351\353\373)2104 b Fg(C-x)42 b(s)-78 1869
+y Ff(\342\361\362)m(\340\342\350\362\374)29 b Fi(\361\356)n
+(\344\345\360)n(\346\350\354\356\345)d(\344\360\363\343\356\343\356)h
+(\364\340\351\353\340)f(\342)h(\362\345\352\363\371\350\351)h
+(\341\363\364\345\360)809 b Fg(C-x)42 b(i)-78 1969 y
+Fi(\356\362\352\360\373\362\374)28 b(\355\363\346\355\373\351)g
+(\342\340\354)f(\364\340\351\353)g(\342\354\345\361\362\356)g
+(\362\345\352\363\371\345\343\356)1226 b Fg(C-x)42 b(C-v)-78
+2068 y Fi(\361\356)n(\365\360\340\355\350\362\374)27
+b(\341\363\364\345\360)f(\342)h(\363\352)n
+(\340\347\340\355\355\356\354)g(\364\340\351\353\345)1534
+b Fg(C-x)42 b(C-w)-78 2168 y Fi
+(\302\352\353\376\367\350\362\374/\342\373\352\353\376\367\350\362\374)
+28 b(\361\356\361\362\356)n(\377\355\350\345)f
+(\341\363\364\345\360\340)f(\020\362\356\353\374\352)n(\356)g
+(\344\353\377)i(\367\362\345\355\350\377\021)581 b Fg(C-x)42
+b(C-q)-128 2413 y Fh(4)132 b(\317\356\353\363\367\345\355\350\345)43
+b(\357\356\354\356\371\350)-128 2595 y Fi
+(\321\357\360\340\342\356\367\355\340\377)19 b
+(\361\350\361\362\345\354\340)i(\344\356\361\362)n
+(\340\362\356\367\355\356)e(\357\360\356\361\362)n(\340.)h
+(H\340\346\354\350\362\345)i Fg(C-h)d Fi(\(\350\353\350)i
+Fg(F1)p Fi(\))f(\350)h(\361\353\345\344\363\351\362\345)g
+(\350\355\361\362\360\363\352\366\350\377\354.)g(\305\361\353\350)h
+(\342\373)d(\342)i(\357\345\360\342\373\351)-128 2695
+y(\360\340\347)28 b(\360\340\341\356\362)n(\340\345\362\345)e(\361)h
+(Emacs,)h(\355\340\341\345\360\350\362\345)f Fg(C-u)43
+b(C-h)f(t)h(Russian)e(RET)26 b Fi(\344\353\377)i
+(\342\373\347\356\342\340)d Ff(\363\367\345\341\355\350\352)m(\340)p
+Fi(.)-78 2789 y(\307\340\352\360\373\362\374)i(\356\352\355\356)g
+(\361\357\360\340\342\352\350)2072 b Fg(C-x)42 b(1)-78
+2889 y Fi(\317\360\356\352\360\363\362\350\362\374)28
+b(\356\352\355\356)f(\361\357\360\340\342\352\350)1940
+b Fg(C-M-v)-78 2988 y Fi(aprop)r(os:)26 b(\357\356\352)n
+(\340\347\340\362\374)g(\352)n(\356\354\340\355\344\373,)h
+(\361\356\356\362\342\345\362\361\362\342\363\376\371\350\345)g
+(\361\362\360\356\352)n(\345)921 b Fg(C-h)42 b(a)-78
+3088 y Fi(\357\356\352)n(\340\347\340\362\374)26 b(\350\354\377)i
+(\364\363\355\352\366\350\350,)g(\352)n(\356\362\356\360\340\377)f
+(\347\340\357\363)n(\361\352)n(\340\345\362\361)n(\377)e
+(\352\353\340\342\350\370\345\351)835 b Fg(C-h)42 b(c)-78
+3187 y Fi(\356\357\350\361\340\362\374)27 b
+(\364\363\355\352\366\350\376)2257 b Fg(C-h)42 b(f)-78
+3287 y Fi(\357\356\353\363\367\350\362\374)28 b
+(\350\355\364\356\360\354\340\366\350\376)f(\356)g
+(\360\345\346\350\354\345)1672 b Fg(C-h)42 b(m)-128 3533
+y Fh(5)132 b(\310\361\357\360\340\342\353\345\355\350\345)43
+b(\356\370\350\341\356\352)-78 3717 y Ff
+(\357\360\345\360\342\340\362\374)28 b Fi
+(\367\340\361\362\350\367\355\356)f
+(\355\340\341\360\340\355\355\363\376)g(\350\353\350)h
+(\350\361\357\356\353\355\377\345\354\363\376)g(\352)n
+(\356\354\340\355\344\363)682 b Fg(C-g)-78 3816 y Ff
+(\342\356\361\361\362)m(\340\355\356\342\350\362\374)29
+b Fi(\364\340\351\353,)e(\357\356\362\345\360)n(\377\355\355\373\351)g
+(\357\360\350)h(\352\360\340\365)n(\345)f(\361\350\361\362\345\354\373)
+895 b Fg(M-x)2857 3916 y(recover-file)-78 4016 y Ff
+(\356\362\354\345\355\350\362\374)27 b Fi(\355\345\346)n
+(\345\353\340\362\345\353\374\355\373\345)g
+(\350\347\354\345\355\345\355\350\377)1502 b Fg(C-x)42
+b(u)h Fi(\350\353\350)h Fg(C-_)-78 4115 y Fi(\342\356\361\361\362)n
+(\340\355\356\342\350\362\374)26 b(\341\363\364\345\360)g(\342)h
+(\357\345\360\342\356\355\340)n(\367\340\353\374\355\356\345)e
+(\361\356\361\362\356)n(\377\355\350\345)1086 b Fg(M-x)2857
+4215 y(revert-buffer)-78 4315 y Fi
+(\357\345\360\345\360\350\361\356\342\340\362\374)27
+b(\347\340\357\356\353\355\345\355\355\373\351)g(\354\363)n
+(\361\356\360\356\354)f(\375\352\360\340\355)1321 b Fg(C-l)-128
+4560 y Fh(6)132 b(H\340\360\340\371\350\342\340\345\354\373\351)41
+b(\357\356\350\361\352)-78 4743 y Fi(\357\356\350\361\352)28
+b(\342\357\345\360\345\344)2436 b Fg(C-s)-78 4843 y Fi
+(\357\356\350\361\352)28 b(\355\340\347\340\344)2477
+b Fg(C-r)-78 4943 y Fi(\357\356\350\361\352)28 b(\357\356)f
+(\360\345\343\363)-5 b(\353\377\360\355\356\354\363)28
+b(\342\373\360\340\346)n(\345\355\350\376)1616 b Fg(C-M-s)-78
+5042 y Fi(\357\356\350\361\352)28 b(\357\356)f(\360\345\343\363)-5
+b(\353\377\360\355\356\354\363)28 b(\342\373\360\340\346)n
+(\345\355\350\376)f(\355\340\347\340\344)1376 b Fg(C-M-r)-78
+5142 y Fi(\342\373\341\360\340\362\374)26 b
+(\357\360\345\344\373\344\363\371\363\376)i(\361\362\360\356\352\363)g
+(\357\356\350\361\352)n(\340)1527 b Fg(M-p)-78 5241 y
+Fi(\342\373\341\360\340\362\374)26 b
+(\361\353\345\344\363\376\371\363\376)i(\361\362\360\356\352\363)g
+(\357\356\350\361\352)n(\340)1580 b Fg(M-n)-78 5341 y
+Fi(\357\360\345\352\360\340\362\350\362\374)28 b
+(\355\340\360\340\371\350\342\340\345\354\373\351)f
+(\357\356\350\361\352)1659 b Fg(RET)-78 5441 y Fi
+(\356\362\354\345\355\350\362\374)28 b(\375\364\364\345\352\362)g
+(\342\342\356)n(\344\340)d(\357\356\361\353\345\344\355\345\343\356)i
+(\361\350\354\342\356\353\340)1248 b Fg(DEL)-78 5540
+y Fi(\357\360\345\360\342\340\362\374)27 b
+(\362\345\352\363\371\350\351)h(\357\356\350\361\352)1994
+b Fg(C-g)-128 5636 y Fi(\304\353\377)26 b(\357\356\342\362\356\360\340)
+f(\357\356\350\361\352)n(\340)f(\342)i(\353\376\341\356\354)f
+(\355\340\357\360\340\342\353\345\355\350\350)h
+(\350\361\357\356\353\374\347\363\351\362\345)f
+(\352\353\340\342\350\370\350)g Fg(C-s)g Fi(\350\353\350)h
+Fg(C-r)p Fi(.)f(\305\361\353\350)h(Emacs)g(\342\361\345)f(\345\371\345)
+h(\357\360\356\350\347-)-128 5736 y(\342\356)n(\344\350\362)i
+(\357\356\350\361\352,)f Fg(C-g)f Fi(\356\362\354\345\355\350\362)j
+(\362\356\353\374\352)n(\356)e(\355\345\361)n
+(\344\345\353\340\355\355\363\376)g(\367\340\361\362\374.)1860
+6192 y(1)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop -128 -45 a Fh(7)132 b
+(\317\345\360\345\354\345\371\345\355\350\345)-78 139
+y Ff(\345\344\350\355\350\366\373)32 b
+(\357\345\360\345\354\345\371\345\355\350\377)1944 b
+(\355\340\347\340\344)450 b(\342\357\345\360\345\344)-78
+239 y Fi(\361\350\354\342\356\353)2667 b Fg(C-b)558 b(C-f)-78
+338 y Fi(\361\353\356\342\356)2726 b Fg(M-b)558 b(M-f)-78
+438 y Fi(\361\362\360\356\352)n(\340)2683 b Fg(C-p)558
+b(C-n)-78 537 y Fi(\355\340)n(\367\340\353\356)26 b(\(\350\353\350)j
+(\352)n(\356\355\345\366\))e(\361\362\360\356\352\350)1916
+b Fg(C-a)558 b(C-e)-78 637 y Fi(\357\360\345\344\353\356)n(\346)n
+(\345\355\350\345)2441 b Fg(M-a)558 b(M-e)-78 737 y Fi
+(\340\341\347\340\366)2726 b Fg(M-{)558 b(M-})-78 836
+y Fi(\361\362\360\340\355\350\366\340)2589 b Fg(C-x)42
+b([)472 b(C-x)42 b(])-78 936 y Fi(\342\373\360\340\346)n
+(\345\355\350\345)27 b(\(sexp\))2261 b Fg(C-M-b)470 b(C-M-f)-78
+1036 y Fi(\364\363\355\352\366\350\377)2597 b Fg(C-M-a)470
+b(C-M-e)-78 1135 y Fi(\357\345\360\345\365)n(\356)n(\344)27
+b(\342)g(\355\340)n(\367\340\353\356)f(\(\350\353\350)i(\352)n
+(\356\355\345\366\))g(\341\363\364\345\360\340)1508 b
+Fg(M-<)558 b(M->)-78 1243 y Fi(\357\360\356\352\360\363\362\352)n(\340)
+27 b(\375\352\360\340\355\340)g(\342\355\350\347)2054
+b Fg(C-v)-78 1343 y Fi(\357\360\356\352\360\363\362\352)n(\340)27
+b(\375\352\360\340\355\340)g(\342\342\345\360)n(\365)2016
+b Fg(M-v)-78 1442 y Fi(\357\360\356\352\360\363\362\352)n(\340)27
+b(\342\353\345\342\356)2302 b Fg(C-x)42 b(<)-78 1542
+y Fi(\357\360\356\352\360\363\362\352)n(\340)27 b
+(\342\357\360\340\342\356)2251 b Fg(C-x)42 b(>)-78 1642
+y Fi(\357\360\356\352\360\363\362\352)n(\340)27 b
+(\362\345\352\363\371\345\351)h(\361\362\360\356\352\350)g(\342)f
+(\366\345\355\362\360)i(\375\352\360\340\355\340)1306
+b Fg(C-u)42 b(C-l)-128 1887 y Fh(8)132 b(\323\355\350\367\362\356)l
+(\346)l(\345\355\350\345)44 b(\350)g(\363)-7 b
+(\344\340\353\345\355\350\345)-78 2070 y Ff(\363\355\350\367\362\356)m
+(\346)m(\340\345\354\373\351)33 b(\356\341\372\345\352\362)1956
+b(\355\340\347\340\344)450 b(\342\357\345\360\345\344)-78
+2170 y Fi(\361\350\354\342\356\353)27 b(\(\363)-5 b
+(\344\340\353\345\355\350\345,)28 b(\340)f(\355\345)h
+(\363\355\350\367\362\356)n(\346)n(\345\355\350\345\))1510
+b Fg(DEL)558 b(C-d)-78 2270 y Fi(\361\353\356\342\356)2726
+b Fg(M-DEL)470 b(M-d)-78 2369 y Fi(\361\362\360\356\352)n(\340)27
+b(\(\344\356)h(\352)n(\356\355\366\340)e(\361\362\360\356\352\350\))
+1972 b Fg(M-0)42 b(C-k)384 b(C-k)-78 2469 y Fi
+(\357\360\345\344\353\356)n(\346)n(\345\355\350\345)2441
+b Fg(C-x)42 b(DEL)384 b(M-k)-78 2569 y Fi(\342\373\360\340\346)n
+(\345\355\350\345)2512 b Fg(M\025)42 b(C-M-k)340 b(C-M-k)-78
+2676 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
+b Ff(\356\341\353\340\361\362\374)2116 b Fg(C-w)-78 2776
+y Fi(\361\352)n(\356\357\350\360\356\342\340\362\374)26
+b(\356\341\353\340\361\362\374)g(\342)h(\361\357\350\361\356\352)h
+(\363\355\350\367\362\356)n(\346)n(\345\355\350\351)1265
+b Fg(M-w)-78 2876 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
+b(\344\356)f(\361\353\345\344\363\376\371\345\343\356)g(\342\365)n
+(\356)n(\346\344\345\355\350\377)f(\361\350\354\342\356\353\340)h
+Fe(char)916 b Fg(M-z)42 b Fe(char)-78 2975 y Fi(\342\361\362)n
+(\340\342\350\362\374)27 b(\357\356\361\353\345\344\355\350\351)g
+(\363\355\350\367\362\356)n(\346)n(\345\355\355\373\351)h
+(\356\341\372\345\352\362)1306 b Fg(C-y)-78 3075 y Fi
+(\347\340\354\345\355\350\362\374)24 b(\362\356\353\374\352)n(\356)e
+(\367\362\356)i(\342\356\361\361\362)n
+(\340\355\356\342\353\345\355\355\373\351)d(\362\345\352)n(\361\362)k
+(\357\360\345\344\370\345\361\362\342\363\376\371\350\354)f
+(\363\355\350\367\362\356)n(\346)n(\345\355-)-78 3175
+y(\355\373\354)k(\362\345\352)n(\361\362\356\354)2857
+3075 y(M-y)-128 3420 y Fh(9)132 b(\317\356\354\345\362\352)l(\340)-78
+3580 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
+b(\357\356\354\345\362\352\350)2177 b Fg(C-@)42 b Fi(or)g
+Fg(C-SPC)-78 3680 y Fi(\356\341\354\345\355\377\362\374)27
+b(\354\345\361\362)n(\340\354\350)h(\352\363\360\361\356\360)f(\350)h
+(\357\356\354\345\362\352\363)1546 b Fg(C-x)42 b(C-x)-78
+3779 y Fi(\357\356\354\345\362\350\362\374)28 b Fe(ar)l(g)36
+b Ff(\361\353\356\342)2219 b Fg(M-@)-78 3879 y Fi
+(\357\356\354\345\362\350\362\374)28 b Ff
+(\357\340\360\340\343\360\340\364)2144 b Fg(M-h)-78 3979
+y Fi(\357\356\354\345\362\350\362\374)28 b Ff
+(\361\362\360\340\355\350\366\363)2162 b Fg(C-x)42 b(C-p)-78
+4078 y Fi(\357\356\354\345\362\350\362\374)28 b Ff
+(\342\373\360\340\346)m(\345\355\350\345)2071 b Fg(C-M-@)-78
+4178 y Fi(\357\356\354\345\362\350\362\374)28 b Ff
+(\364\363\355\352\366\350\376)2148 b Fg(C-M-h)-78 4277
+y Fi(\357\356\354\345\362\350\362\374)28 b(\342\345\361\374)f
+Ff(\341\363\364\345\360)2102 b Fg(C-x)42 b(h)-128 4523
+y Fh(10)131 b(\307\340\354\345\355\340)44 b(\361)g
+(\347\340\357\360\356\361\356\354)-78 4706 y Fi
+(\350\355\362\345\360\340\352\362\350\342\355\340\377)28
+b(\347\340\354\345\355\340)f(\362\345\352)n(\361\362\356\342\356\351)g
+(\361\362\360\356\352\350)1398 b Fg(M-\045)-78 4806 y
+Fi(\361)28 b(\350\361\357\356\353\374\347\356\342\340\355\350\345\354)e
+(\360\345\343\363)-5 b(\353\377\360\355\373\365)27 b
+(\342\373\360\340\346)n(\345\355\350\351)1333 b Fg(M-x)42
+b(query-replace-r)o(ege)o(xp)-128 4901 y Fi(\302)28 b
+(\360\345\346\350\354\345)g
+(\350\355\362\345\360\340\352\362\350\342\355\356\351)g
+(\347\340\354\345\355\373)f
+(\357\356\353\374\347\356\342\340\362\345\353\376)f
+(\344\356\361\362\363\357\355\373)i
+(\361\353\345\344\363\376\371\350\345)g(\356\362\342\345\362\373:)-78
+4995 y Ff(\347\340\354\345\355\350\362\374)g Fi
+(\344\340\355\355\356\345)f
+(\361\356\356\362\342\345\362\361\362\342\350\345,)g
+(\357\345\360\345\351\362\350)h(\352)g
+(\361\353\345\344\363\376\371\345\354\363)815 b Fg(SPC)-78
+5095 y Fi(\347\340\354\345\355\350\362\374)28 b(\375\362\356)f
+(\361\356\356\362\342\345\362\361\362\342\350\345,)g(\355\345)h
+(\357\345\360\345\354\345\371\340\362\374\361)n(\377)1238
+b Fg(,)-78 5194 y Ff(\357\360\356\357\363)m(\361\362\350\362\374)29
+b Fi(\361\356\356\362\342\345\362\361\362\342\350\345)e(\341\345\347)g
+(\347\340\354\345\355\373)1487 b Fg(DEL)-78 5294 y Fi
+(\347\340\354\345\355\350\362\374)28 b(\342\361\345)f(\356\361\362)n
+(\340\342\370\350\345\361)n(\377)e
+(\361\356\356\362\342\345\362\361\362\342\350\377)1468
+b Fg(!)-78 5393 y Ff(\342\345\360\355\363\362\374\361)m(\377)29
+b Fi(\352)f(\357\360\345\344\373\344\363\371\345\354\363)f
+(\361\356\356\362\342\345\362\361\362\342\350\376)1337
+b Fg(\002)-78 5493 y Ff(\342\373\351\362\350)28 b Fi(\350\347)g
+(\360\345\346\350\354\340)f(\347\340\354\345\355\340)g(\361)h
+(\347\340\357\360\356\361\356\354)1508 b Fg(RET)-78 5593
+y Fi(\342\356\351\362\350)38 b(\342)g(\360\345\346\350\354)h
+(\360\345\352\363\360\361\350\342\355\356\343\356)d
+(\360\345\344\340\352\362\350\360\356\342\340\355\350\377)i
+(\(\344\353\377)g(\342\373\365)n(\356)n(\344\340)e
+(\350\361\357\356\353\374\347\363)n(\345\362\361)n(\377)-78
+5692 y Fg(C-M-c)p Fi(\))2857 5593 y Fg(C-r)1860 6192
+y Fi(2)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop -128 -45 a Fh(11)131 b(\314\355\356)l(\346)l
+(\345\361\362\342\356)44 b(\356\352)l(\356\355)-128 137
+y Fi(\312\356\354\340\355\344\373,)27 b
+(\357\360\350\342\345\344\345\355\355\373\345)h(\342\356)e
+(\342\362\356\360\356\354)h(\361\362\356\353\341\366\345,)h
+(\357\360\350\354\345\355\377\376\362\361)n(\377)g(\352)g
+(\344\360\363\343\356\354\363)f
+(\(\355\345\340\352\362\350\342\355\356\354\363\))h(\356\352\355\363)-7
+b(.)-78 236 y(\363)i(\344\340\353\350\362\374)28 b(\342\361\345)f
+(\356\361\362)n(\340\353\374\355\373\345)f(\356\352\355\340)1869
+b Fg(C-x)42 b(1)-78 344 y Fi(\360\340\347\341\350\362\374)27
+b(\356\352\355\356)g(\357\356)g(\343\356\360\350\347\356\355\362)n
+(\340\353\350)1825 b Fg(C-x)42 b(2)472 b(C-x)42 b(5)h(2)-78
+444 y Fi(\363)-5 b(\344\340\353\350\362\374)28 b
+(\344\340\355\355\356\345)f(\356\352\355\356)2143 b Fg(C-x)42
+b(0)472 b(C-x)42 b(5)h(0)-78 543 y Fi(\360\340\347\341\350\362\374)27
+b(\356\352\355\356)g(\357\356)g(\342\345\360\362\350\352)n
+(\340\353\350)1904 b Fg(C-x)42 b(3)-78 643 y Fi
+(\342\373\357\356\353\355\350\362\374)27 b
+(\357\360\356\352\360\363\362\352\363)h(\342)f
+(\344\360\363\343\356\354)h(\356\352\355\345)1530 b Fg(C-M-v)-78
+751 y Fi(\357\345\360\345\354\345\361\362\350\362\374)29
+b(\352\363\360\361\356\360)e(\342)g(\344\360\363\343\356\345)g
+(\356\352\355\356)1629 b Fg(C-x)42 b(o)472 b(C-x)42 b(5)h(o)-78
+850 y Fi(\342\373\341\360\340\362\374)26 b(\341\363\364\345\360)h(\342)
+g(\344\360\363\343\356\354)h(\356\352\355\345)1795 b
+Fg(C-x)42 b(4)h(b)385 b(C-x)42 b(5)h(b)-78 950 y Fi(\357\356\352)n
+(\340\347\340\362\374)26 b(\341\363\364\345\360)h(\342)g
+(\344\360\363\343\356\354)g(\356\352\355\345)1775 b Fg(C-x)42
+b(4)h(C-o)297 b(C-x)42 b(5)h(C-o)-78 1050 y Fi
+(\347\340\343\360\363\347\350\362\374)27 b(\364\340\351\353)g(\342)g
+(\344\360\363\343\356\345)g(\356\352\355\356)1786 b Fg(C-x)42
+b(4)h(f)385 b(C-x)42 b(5)h(f)-78 1149 y Fi
+(\356\362\352\360\373\362\374)28 b(\364\340\351\353)f(\342)g
+(\360\345\346\350\354\345)h(\367\362\345\355\350\377)h(\342)e
+(\344\360\363\343\356\354)g(\356\352\355\345)1149 b Fg(C-x)42
+b(4)h(r)385 b(C-x)42 b(5)h(r)-78 1249 y Fi(\347\340\357\363)n
+(\361\362\350\362\374)27 b(Dired)h(\342)f(\344\360\363\343\356\354)h
+(\356\352\355\345)1766 b Fg(C-x)42 b(4)h(d)385 b(C-x)42
+b(5)h(d)-78 1349 y Fi(\355\340\351\362\350)28 b(\362)n(\340\343)g(\342)
+f(\344\360\363\343\356\354)g(\356\352\355\345)2003 b
+Fg(C-x)42 b(4)h(.)385 b(C-x)42 b(5)h(.)-78 1457 y Fi
+(\363\342\345\353\350\367\350\362\374)28 b(\342\373\361\356\362\363)e
+(\356\352\355\340)2049 b Fg(C-x)42 b(\002)-78 1556 y
+Fi(\361\363\347\350\362\374)28 b(\362\345\352\363\371\345\345)f
+(\356\352\355\356)2148 b Fg(C-x)42 b({)-78 1656 y Fi
+(\360\340\361\370\350\360\350\362\374)28 b
+(\362\345\352\363\371\345\345)f(\356\352\355\356)1982
+b Fg(C-x)42 b(})-128 1901 y Fh(12)131 b
+(\324\356\360\354\340\362\350\360\356\342\340\355\350\345)-78
+2085 y Fi(\361)n(\344\345\353\340\362\374)27 b
+(\356\362\361\362\363\357)h(\344\353\377)g
+(\362\345\352\363\371\345\351)g Ff(\361\362\360\356\352\350)g
+Fi(\(\342)f(\347\340\342\350\361\350\354\356\361\362\350)g(\356\362)h
+(\360\345\346\350\354\340\))470 b Fg(TAB)-78 2184 y Fi(\361)n
+(\344\345\353\340\362\374)27 b(\356\362\361\362\363\357)h(\344\353\377)
+g Ff(\356\341\353\340\361\362\350)g Fi(\(\342)g
+(\347\340\342\350\361\350\354\356\361\362\350)f(\356\362)g
+(\360\345\346\350\354\340\))775 b Fg(C-M-)p Fd(n)-78
+2284 y Fi(\361)n(\344\345\353\340\362\374)27 b
+(\356\362\361\362\363\357)h(\344\353\377)g Ff(\342\373\360\340\346)m
+(\345\355\350\377)h Fi(\(\342)e
+(\347\340\342\350\361\350\354\356\361\362\350)g(\356\362)h
+(\360\345\346\350\354\340\))617 b Fg(C-M-q)-78 2383 y
+Fi(\361)n(\344\345\353\340\362\374)27 b(\356\362\361\362\363\357)h
+(\352)g(\347\340\344\340\355\355\356\351)e Fe(ar)l(g)36
+b Fi(\352)n(\356\353\356\355\352)n(\345)1445 b Fg(C-x)42
+b(TAB)-78 2483 y Fi(\342\361\362)n(\340\342\350\362\374)27
+b(\355\356\342\363\376)f(\361\362\360\356\352\363)i
+(\357\356\361\353\345)f(\352\363\360\361\356\360\340)1493
+b Fg(C-o)-78 2583 y Fi(\361)n(\344\342\350\355\363\362\374)27
+b(\356\361\362)n(\340\362\356\352)g(\361\362\360\356\352\350)h
+(\342\345\360\362\350\352)n(\340\353\374\355\356)e(\342\355\350\347)
+1293 b Fg(C-M-o)-78 2682 y Fi(\363)-5 b(\344\340\353\350\362\374)28
+b(\357\363)n(\361\362\373\345)f(\361\362\360\356\352\350)h
+(\342\356\352\360\363\343)f(\352\363\360\361\356\360\340)1442
+b Fg(C-x)42 b(C-o)-78 2782 y Fi
+(\356\341\372\345\344\350\355\350\362\374)27 b
+(\361\362\360\356\352\363)h(\361)f
+(\357\360\345\344\373\344\363\371\345\351)h(\(\361\356)f
+(\361\353\345\344\363\376\371\350\354\350)h(arg\))817
+b Fg(M-\002)-78 2882 y Fi(\363)-5 b(\344\340\353\350\362\374)28
+b(\357\363)n(\361\362\356\345)f
+(\357\360\356\361\362\360\340\355\361\362\342\356)g
+(\342\356\352\360\363\343)g(\352\363\360\361\356\360\340)1211
+b Fg(M-)p Fd(n)-78 2981 y Fi(\357\356\354\345\361\362\350\362\374)28
+b(\362\356\353\374\352)n(\356)f(\356)n(\344\350\355)g
+(\357\360\356\341\345\353)g(\342)g(\357\356\347\350\366\350\350)h
+(\352\363\360\361\356\360\340)1036 b Fg(M-SPC)-78 3081
+y Fi(\347\340\357\356\353\355\350\362\374)27 b
+(\362\345\352\363\371\350\351)h(\357\340\360\340\343\360\340\364)1799
+b Fg(M-q)-78 3180 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)
+26 b(\361\362\356\353\341\345\366)h
+(\347\340\357\356\353\355\345\355\350\377)1739 b Fg(C-x)42
+b(f)-78 3280 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
+b(\357\360\345\364\350\352)n(\361)h
+(\347\340\357\356\353\355\345\355\350\377)g(\352)n
+(\340\346\344\356\351)g(\361\362\360\356\352\350)1108
+b Fg(C-x)42 b(.)-78 3380 y Fi(\363)n(\361\362)n
+(\340\355\356\342\350\362\374)26 b(\355\340)n(\367\345\360\362)n
+(\340\355\350\345)2065 b Fg(M-g)-128 3625 y Fh(13)131
+b(\310\347\354\345\355\345\355\350\345)44 b
+(\360\345\343\350\361\362\360\340)-78 3808 y Fi(\361)n
+(\344\345\353\340\362\374)27 b(\341\363\352\342\373)g
+(\361\353\356\342\340)f(\347\340\343)n(\353\340\342\355\373\354\350)
+1672 b Fg(M-u)-78 3908 y Fi(\361)n(\344\345\353\340\362\374)27
+b(\341\363\352\342\373)g(\361\353\356\342\340)f
+(\361\362\360\356\367\355\373\354\350)1704 b Fg(M-l)-78
+4008 y Fi(\361)n(\344\345\353\340\362\374)27 b
+(\357\345\360\342\363\376)g(\341\363\352\342\363)g
+(\361\353\356\342\340)f(\347\340\343)n(\353\340\342\355\356\351)1457
+b Fg(M-c)-78 4107 y Fi(\361)n(\344\345\353\340\362\374)27
+b(\341\363\352\342\373)g(\356\341\353\340\361\362\350)f(\347\340\343)n
+(\353\340\342\355\373\354\350)1585 b Fg(C-x)42 b(C-u)-78
+4207 y Fi(\361)n(\344\345\353\340\362\374)27 b(\341\363\352\342\373)g
+(\356\341\353\340\361\362\350)f(\361\362\360\356\367\355\373\354\350)
+1617 b Fg(C-x)42 b(C-l)-128 4453 y Fh(14)131 b
+(\314\350\355\350\341\363\364\345\360)-128 4635 y Fi
+(\321\353\345\344\363\376\371\350\345)28 b
+(\352\353\340\342\350\370\350)f(\(\352\353\376\367\350\))i
+(\356\357\360\345\344\345\353\345\355\373)e(\342)h
+(\354\350\355\350\341\363\364\345\360\345.)-78 4734 y
+(\344\356\357\356\353\355\350\362\374)f(\355\340\361\352)n
+(\356\353\374\352)n(\356)f(\342\356\347\354\356)n(\346\355\356)1727
+b Fg(TAB)-78 4833 y Fi(\344\356\357\356\353\355\350\362\374)27
+b(\344\356)h(\356)n(\344\355\356\343\356)e(\361\353\356\342\340)1907
+b Fg(SPC)-78 4933 y Fi(\344\356\357\356\353\355\350\362\374)27
+b(\350)h(\342\373\357\356\353\355\350\362\374)2026 b
+Fg(RET)-78 5033 y Fi(\357\356\352)n(\340\347\340\362\374)26
+b(\342\356\347\354\356)n(\346\355\373\345)g
+(\344\356\357\356\353\355\345\355\350\377)1677 b Fg(?)-78
+5132 y Fi(\342\373\341\360\340\362\374)26 b
+(\357\360\345\344\373\344\363\371\350\351)i(\342\342\356)n(\344)e(\342)
+h(\354\350\355\350\341\363\364\345\360)1390 b Fg(M-p)-78
+5232 y Fi(\342\373\341\360\340\362\374)26 b
+(\361\353\345\344\363\376\371\350\351)i(\342\342\356)n(\344)e(\342)h
+(\354\350\355\350\341\363\364\345\360)1443 b Fg(M-n)-78
+5332 y Fi(\357\356\350\361\352)28 b(\342)f
+(\350\361\362\356\360\350\350)h(\357\356)f(\360\345\343\363)-5
+b(\353\377\360\355\356\354\363)28 b(\342\373\360\340\346)n
+(\345\355\350\376)f(\342)g(\356\341\360\340\362\355\356\354)g
+(\355\340\357\360\342\353\345\355\350\350)293 b Fg(M-r)-78
+5431 y Fi(\357\356\350\361\352)28 b(\342)f
+(\350\361\362\356\360\350\350)h(\357\356)f(\360\345\343\363)-5
+b(\353\377\360\355\356\354\363)28 b(\342\373\360\340\346)n
+(\345\355\350\376)f(\342)g(\357\360)n(\377\354\356\354)h
+(\355\340\357\360\342\353\345\355\350\350)361 b Fg(M-s)-78
+5531 y Fi(\357\360\345\360\342\340\362\374)27 b(\352)n
+(\356\354\340\355\344\363)2247 b Fg(C-g)-128 5627 y Fi
+(\315\340\341\345\360\350\362\345)31 b Fg(C-x)42 b(ESC)g(ESC)30
+b Fi(\344\353\377)i
+(\360\345\344\340\352\362\350\360\356\342\340\355\350\377)e(\350)h
+(\357\356\342\362\356\360\345\355\350\377)g
+(\357\356\361\353\345\344\355\345\351)g(\352)n
+(\356\354\340\355\344\373)f(\355\340\341\360\340\355\355\356\351)g
+(\342)h(\354\350\355\350\341\363\364\345\360\345.)-128
+5726 y(\315\340\341\345\360\350\362\345)c Fg(F10)p Fi(,)g
+(\367\362\356\341\373)g(\360\340\341\356\362)n(\340\362\374)f(\361)h
+(\357\363\355\352\362)n(\340\354\350)h(\354\345\355\376)h(\357\360\350)
+f(\357\356\354\356\371\350)f(\352)n(\356\354\340\355\344)g
+(\354\350\355\350\341\363\364\345\360\340.)1860 6192
+y(3)p eop end
+%%Page: 4 4
+TeXDict begin 4 3 bop -128 -45 a Fh(15)131 b(\301\363\364\345\360\340)
+-78 139 y Fi(\342\373\341\360\340\362\374)26 b
+(\344\360\363\343\356\351)i(\341\363\364\345\360)2071
+b Fg(C-x)42 b(b)-78 239 y Fi(\342\373\344\340\362\374)27
+b(\361\357\350\361\356\352)g(\342\361\345\365)g
+(\341\363\364\345\360\356\342)1849 b Fg(C-x)42 b(C-b)-78
+338 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
+b(\341\363\364\345\360)2212 b Fg(C-x)42 b(k)-128 584
+y Fh(16)131 b(\316\341\354\345\355)43 b(\354\345\361\362)l
+(\340\354\350)-78 745 y Fi(\356\341\354\345\355\377\362\374)27
+b(\354\345\361\362)n(\340\354\350)h Ff(\361\350\354\342\356\353\373)
+1842 b Fg(C-t)-78 844 y Fi(\356\341\354\345\355\377\362\374)27
+b(\354\345\361\362)n(\340\354\350)h Ff(\361\353\356\342\340)1982
+b Fg(M-t)-78 944 y Fi(\356\341\354\345\355\377\362\374)27
+b(\354\345\361\362)n(\340\354\350)h Ff(\361\362\360\356\352\350)1925
+b Fg(C-x)42 b(C-t)-78 1044 y Fi(\356\341\354\345\355\377\362\374)27
+b(\354\345\361\362)n(\340\354\350)h Ff(\342\373\360\340\346)m
+(\345\355\350\377)1727 b Fg(C-M-t)-128 1289 y Fh(17)131
+b(\317\360\356\342\345\360\352)l(\340)44 b
+(\343\360\340\354\354\340\362\350\352\350)-78 1472 y
+Fi(\357\360\356\342\345\360\350\362\374)27 b
+(\362\345\352\363\371\345\345)h(\361\353\356\342\356)1974
+b Fg(M-$)-78 1572 y Fi(\357\360\356\342\345\360\350\362\374)27
+b(\342\361\345)g(\361\353\356\342\340)f(\342)i
+(\356\341\353\340\361\362\350)1776 b Fg(M-x)42 b(ispell-region)-78
+1672 y Fi(\342\373\357\356\353\355\350\362\374)27 b
+(\357\360\356\342\345\360\352\363)g(\342\361\345\343\356)f
+(\341\363\364\345\360\340)1624 b Fg(M-x)42 b(ispell-buffer)-128
+1917 y Fh(18)131 b(\322)-11 b(\345\343\350)-78 2077 y
+Fi(\355\340\351\362\350)28 b
+(\356\357\360\345\344\345\353\345\355\350\345)g(\362\345\343)n(\340)
+2037 b Fg(M-.)-78 2177 y Fi(\355\340\351\362\350)28 b
+(\361\353\345\344\363\376\371\345\345)g(\342\365)n(\356)n
+(\346\344\345\355\350\345)e(\362\345\343)n(\340)1659
+b Fg(C-u)42 b(M-.)-78 2276 y Fi(\363\352)n(\340\347\340\362\374)26
+b(\355\356\342\373\351)h(\364\340\351\353)g(\361)h(\362\345\343)n
+(\340\354\350)1807 b Fg(M-x)42 b(visit-tags-tabl)o(e)-78
+2376 y Fi(\357\356\350\361\352)28 b(\357\356)f
+(\370\340\341\353\356\355\363)f(\357\356)h(\342\361\345\351)g(\362)n
+(\340\341\353\350\366\345)g(\362\345\343\356\342)1392
+b Fg(M-x)42 b(tags-search)-78 2476 y Fi
+(\342\373\357\356\353\355\350\362\374)27 b(query-replace)f
+(\355\340\344)h(\342\361\345\354\350)g(\364\340\351\353\340\354\350)
+1237 b Fg(M-x)42 b(tags-query-repl)o(ace)-78 2575 y Fi(\357\360\356)n
+(\344\356\353\346\350\362\374)27 b(\357\356\350\361\352)h(\350\353\350)
+g(\357\356\350\361\352-\347\340\354\345\355\363)e(\362\345\343)n(\340)
+1346 b Fg(M-,)-128 2820 y Fh(19)131 b
+(\312\356\354\340\355\344\355\373\345)43 b
+(\357\360\356\366\345\361\361\356\360\373)-78 3004 y
+Fi(\302\373\357\356\353\355\350\362\374)28 b(\352)n
+(\356\354\340\355\344\363)e(\352)n
+(\356\354\340\355\344\355\356\343\356)g
+(\357\360\356\366\345\361\361\356\360\340)1245 b Fg(M-!)-78
+3104 y Fi(\342\373\357\356\353\355\350\362\374)27 b(\352)n
+(\356\354\340\355\344\363)g(\352)n
+(\356\354\340\355\344\355\356\343\356)f
+(\357\360\356\366\345\361\361\356\360\340)g(\355\340\344)i
+(\356\341\353\340\361\362\374\376)720 b Fg(M-|)-78 3203
+y Fi(\357\360\356\357\363)n(\361\362\350\362\374)28 b(\361\356)n
+(\344\345\360)n(\346\350\354\356\345)e(\356\341\353\340\361\362\350)h
+(\367\345\360\345\347)h(\352)n(\356\354\340\355\344\363)f(\352)n
+(\356\354\340\355\344\355\356\343\356)f
+(\357\360\356\366\345\361\361\356\360\340)210 b Fg(C-u)42
+b(M-|)-78 3303 y Fi(\347\340\357\363)n(\361\362\350\362\374)27
+b(\352)n(\356\354\340\355\344\355\373\351)h
+(\357\360\356\366\345\361\361\356\360)e(\342)i(\356\352\355\345)f
+Fg(*shell*)1098 b(M-x)42 b(shell)-128 3549 y Fh(20)131
+b(\317\360)l(\377\354\356\363\343\356\353\374\355\373\345)44
+b(\356\341\353\340\361\362\350)-78 3733 y Fi(\361\352)n
+(\356\357\350\360\356\342\340\362\374)26 b(\357\360)n
+(\377\354\356\363\343\356\353\374\355\363\376)g
+(\356\341\353\340\361\362\374)g(\342)i(\360\345\343\350\361\362\360)
+1140 b Fg(C-x)42 b(r)h(r)-78 3832 y Fi(\363)-5 b
+(\344\340\353\350\362\374)28 b(\357\360)n
+(\377\354\356\363\343\356\353\374\355\363\376)e
+(\356\341\353\340\361\362\374)1692 b Fg(C-x)42 b(r)h(k)-78
+3932 y Fi(\342\361\362)n(\340\342\350\362\374)27 b
+(\357\356\361\353\345\344\355\363\376)g(\363\355\350\367\362\356)n
+(\346)n(\345\355\355\363\376)h(\357\360)n
+(\377\354\356\363\343\356\353\374\355\363\376)e
+(\356\341\353\340\361\362\374)638 b Fg(C-x)42 b(r)h(y)-78
+4031 y Fi(\356\362\352\360\373\362\374)28 b(\357\360)n
+(\377\354\356\363\343\356\353\374\355\363\376)e
+(\356\341\353\340\361\362\374,)h(\361)n(\344\342\350\343)n(\340\377)f
+(\362\345\352)n(\361\362)i(\342\357\360\340\342\356)821
+b Fg(C-x)42 b(r)h(o)-78 4131 y Fi(\356\367\350\361\362\350\362\374)28
+b(\357\360)n(\377\354\356\363\343\356\353\374\355\363\376)f
+(\356\341\353\340\361\362\374)1652 b Fg(C-x)42 b(r)h(c)-78
+4231 y Fi(\357\360\345\344\342\340\360\350\362\374)27
+b(\352)n(\340\346\344\363\376)h(\361\362\360\356\352\363)f
+(\361\362\360\356\352)n(\356\351)g(\362\345\352)n(\361\362)n(\340)1291
+b Fg(C-x)42 b(r)h(t)-128 4476 y Fh(21)131 b
+(\321\356\352\360\340\371\345\355\350\377)-78 4659 y
+Fi(\344\356\341\340\342\350\362\374)26 b(\343)n
+(\353\356\341\340\353\374\355\356\345)f
+(\361\356\352\360\340\371\345\355\350\345)1675 b Fg(C-x)42
+b(a)h(g)-78 4759 y Fi(\344\356\341\340\342\350\362\374)26
+b(\353\356\352)n(\340\353\374\355\356\345)g(\344\353\377)i
+(\360\345\346\350\354\340)f(\361\356\352\360\340\371\345\355\350\345)
+1220 b Fg(C-x)42 b(a)h(l)-78 4859 y Fi
+(\344\356\341\340\342\350\362\374)26 b(\343)n
+(\353\356\341\340\353\374\355\356\345)f(\347\355\340)n
+(\367\345\355\350\345)i(\344\353\377)h(\344\340\355\355\356\343\356)e
+(\361\356\352\360\340\371\345\355\350\377)813 b Fg(C-x)42
+b(a)h(i)g(g)-78 4958 y Fi(\344\356\341\340\342\350\362\374)26
+b(\361\357\345\366\350\364\350\367\345\361\352)n(\356\345)h
+(\344\353\377)h(\360\345\346\350\354\340)f(\347\355\340)n
+(\367\345\355\350\345)g(\344\340\355\355\356\343\356)g
+(\361\356\352\360\340\371\345\355\350\377)342 b Fg(C-x)42
+b(a)h(i)g(l)-78 5058 y Fi(\377\342\355\356)27 b(\342\361\362)n
+(\340\342\350\362\374)f(\347\355\340)n(\367\345\355\350\345)h
+(\344\353\377)h(\361\356\352\360\340\371\345\355\350\377)1395
+b Fg(C-x)42 b(a)h(e)-78 5158 y Fi
+(\344\350\355\340\354\350\367\345\361\352\350)28 b
+(\344\356\357\356\353\355\350\362\374)g
+(\357\360\345\344\373\344\363\371\345\345)f(\361\353\356\342\356)1287
+b Fg(M-/)1860 6192 y Fi(4)p eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop -128 -45 a Fh(22)131 b(\320)l(\345\343\363)-7
+b(\353\377\360\355\373\345)44 b(\342\373\360\340\346)l
+(\345\355\350\377)-78 139 y Fi(\353\376\341\356\351)27
+b(\356)n(\344\350\355\356\367\355\373\351)g(\361\350\354\342\356\353)g
+(\(\347\340)h(\350\361\352\353\376\367\345\355\350\345\354)g
+(\361\350\354\342\356\353\340)f(\355\356\342\356\351)f
+(\361\362\360\356\352\350\))388 b Fg(.)43 b Fi(\(dot\))-78
+239 y(\355\356\353\374)27 b(\350\353\350)h(\341\356\353\345\345)f
+(\357\356\342\362\356\360\345\355\350\351)1901 b Fg(*)-78
+338 y Fi(\356)n(\344\355\356)27 b(\350\353\350)h(\341\356\353\345\345)e
+(\357\356\342\362\356\360\345\355\350\351)1904 b Fg(+)-78
+438 y Fi(\355\356\353\374)27 b(\350\353\350)h(\356)n(\344\355\356)f
+(\357\356\342\362\356\360\345\355\350\345)1940 b Fg(?)-78
+537 y Fi(\375\352\360\340\355\350\360\356\342\340\362\374)26
+b(\361\357\345\366\350\340\353\374\355\373\351)h
+(\361\350\354\342\356\353)h Fe(c)1536 b Fd(n)p Fe(c)-78
+637 y Fi(\342\373\341\356\360)26 b(\354\345\346\344\363)i(\340\353\374)
+n(\362\345\360\355\340\362\350\342\340\354\350)f
+(\(\020\350\353\350\021\))1501 b Fd(nj)-78 737 y Fi
+(\343\360\363\357\357\350\360\356\342\352)n(\340)2454
+b Fd(n)p Fg(\()42 b Fc(:)14 b(:)g(:)44 b Fd(n)p Fg(\))-78
+836 y Fi(\362\345\352)n(\361\362)29 b(\342)e Fe(n)6 b
+Fi(-\351)27 b(\343\360\363\357\357\345)2227 b Fd(n)p
+Fe(n)-78 936 y Fi(\343\360\340\355\350\366\340)27 b
+(\361\353\356\342\340)2394 b Fd(n)p Fg(b)-78 1036 y Fi(\355\345)28
+b(\343\360\340\355\350\366\340)f(\361\353\356\342\340)2283
+b Fd(n)p Fg(B)-78 1144 y Ff(\356\341\372\345\352\362)2640
+b(\355\340)m(\367\340\353\356)79 b(\361\356\356\362-)2857
+1243 y(\342\345\362\361\362\342\350\377)3547 1144 y(\352)m
+(\356\355\345\366)127 b(\361\356\356\362-)3547 1243 y
+(\342\345\362\361\362\342\350\377)-78 1343 y Fi(\361\362\360\356\352)n
+(\340)2683 b Fg(\002)645 b($)-78 1442 y Fi(\361\353\356\342\356)2726
+b Fd(n)p Fg(<)604 b Fd(n)p Fg(>)-78 1542 y Fi(\341\363\364\345\360)2701
+b Fd(n)p Fg(`)604 b Fd(n)p Fg(')-78 1650 y Ff(\352\353\340\361\361)33
+b(\361\350\354\342\356\353\356\342)2262 b
+(\361\356\356\362\342\345\362-)2857 1750 y(\361\362\342\363)m(\345\362)
+32 b(\350\354)3547 1650 y(\361\356\356\362\342\345\362-)3547
+1750 y(\361\362\342\363)m(\345\362)131 b(\344\360\363-)3547
+1849 y(\343\350\354)-78 1949 y Fi(\377\342\355\373\351)28
+b(\355\340\341\356\360)2450 b Fg([)43 b Fc(:)14 b(:)g(:)43
+b Fg(])419 b([\002)p Fc(:)14 b(:)g(:)41 b Fg(])-78 2048
+y Fi(\361\350\354\342\356\353-\341\363\352\342\340)2423
+b Fd(n)p Fg(w)604 b Fd(n)p Fg(W)-78 2148 y Fi(\361\350\354\342\356\353)
+27 b(\361)h(\361\350\355\362)n(\340\352)n(\361\350\361\356\354)f
+Fe(c)2039 b Fd(n)p Fg(s)p Fe(c)566 b Fd(n)p Fg(S)p Fe(c)-128
+2394 y Fh(23)131 b(\314\345\346\344\363\355\340\360\356)l
+(\344\355\373\345)43 b(\355\340\341\356\360\373)g
+(\361\350\354\342\356\353\356\342)-78 2578 y Fi
+(\342\373\341\360\340\362\374)26 b(\377\347\373\352)2406
+b Fg(M-x)42 b(set-language-en)o(vir)o(on)o(me)o(nt)-78
+2677 y Fi(\357\356\352)n(\340\347\340\362\374)26 b(\342\361\345)h
+(\342\356\347\354\356)n(\346\355\373\345)f(\354\345\362\356)n(\344\373)
+i(\342\342\356)n(\344\340)1457 b Fg(M-x)42 b(list-input-meth)o(ods)-78
+2777 y Fi(\360\340\347\360\345\370\350\362\374)27 b(\350\353\350)h
+(\347\340\357\360\345\362\350\362\374)g(\354\345\362\356)n(\344)g
+(\342\342\356)n(\344\340)1473 b Fg(C-)p Fd(n)-78 2877
+y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
+b(\361\350\361\362\345\354\363)i(\352)n(\356)n
+(\344\350\360\356\342\340\355\350\377)e(\344\353\377)i
+(\361\353\345\344\363\376\371\345\351)f(\352)n
+(\356\354\340\355\344\373)705 b Fg(C-x)42 b(RET)g(c)-78
+2976 y Fi(\357\356\352)n(\340\347\340\362\374)26 b
+(\361\357\350\361\356\352)i(\342\361\345\365)e
+(\361\350\361\362\345\354)j(\352)n(\356)n
+(\344\350\360\356\342\340\355\350\377)1338 b Fg(M-x)42
+b(list-coding-sys)o(tem)o(s)-78 3076 y Fi(\342\373\341\360\340\362\374)
+26 b(\357\360\345\344\357\356\367\362\350\362\345\353\374\355\363\376)j
+(\361\350\361\362\345\354\363)f(\352)n(\356)n
+(\344\350\360\356\342\340\355\350\377)1041 b Fg(M-x)42
+b(prefer-coding-s)o(yst)o(em)-128 3329 y Fh(24)131 b
+(\310\355\364\356\360\354\340\366\350\377)44 b
+(\(\361\350\361\362\345\354\340)g(Info\))-78 3519 y Fi
+(\347\340\357\363)n(\361\362\350\362\374)27 b
+(\361\350\361\362\345\354\363)i(\344\356\361\362\363\357\340)e(\352)g
+(\344\356\352\363\354\345\355\362)n(\340\366\350\350)1275
+b Fg(C-h)42 b(i)-78 3619 y Fi(\355\340\351\362\350)28
+b(\363\352)n(\340\347\340\355\355\363\376)f
+(\364\363\355\352\366\350\376)g(\350\353\350)h
+(\357\345\360\345\354\345\355\355\363\376)h(\342)e
+(\344\356\352\363\354\345\355\362)n(\340\366\350\350)615
+b Fg(C-h)42 b(C-i)-128 3719 y Fi
+(\317\345\360\345\354\345\371\345\355\350\345)28 b
+(\342\355\363\362\360\350)f(\363\347\353\340)g(\(\355\356)n
+(\344\340\354\350\):)-78 3818 y(\357\360\356\352\360\363\362\352)n
+(\340)g(\342\357\345\360\345\344)2257 b Fg(SPC)-78 3917
+y Fi(\357\360\356\352\360\363\362\352)n(\340)27 b(\355\340\347\340\344)
+2298 b Fg(DEL)-78 4017 y Fi(\357\345\360\345\351\362\350)29
+b(\352)e(\355\340)n(\367\340\353\363)g(\363\347\353\340)2074
+b Fg(.)43 b Fi(\(dot\))-128 4112 y
+(\317\345\360\345\354\345\371\345\355\350\345)28 b
+(\354\345\346\344\363)g(\363\347\353\340\354\350:)-78
+4206 y Ff(\361\353\345\344\363\376\371\350\351)f Fi(\363\347\345\353)
+2245 b Fg(n)-78 4306 y Ff(\357\360\345\344\373\344\363\371\350\351)27
+b Fi(\363\347\345\353)2184 b Fg(p)-78 4405 y Fi
+(\357\345\360\345\351\362\350)29 b(\352)e Ff(\342\345\360)m
+(\365\355\345\354\363)h Fi(\363\347\353\363)1932 b Fg(u)-78
+4505 y Fi(\342\373\341\360\340\362\374)26 b(\354\345\355\376)j
+(\357\356)e(\350\354\345\355\350)2020 b Fg(m)-78 4605
+y Fi(\342\373\341\360\340\362\374)26 b Fe(n)6 b Fi(-\351)28
+b(\357\363\355\352\362)g(\354\345\355\376)h(\357\356)e
+(\355\356\354\345\360\363)g(\(1\0259\))1357 b Fe(n)-78
+4704 y Fi(\357\345\360\345\351\362\350)29 b(\357\356)e
+(\361\361\373\353\352)n(\345)g(\(\342\356\347\342\360\340\362)g(\361)g
+(\357\356\354\356\371\374\376)g Fg(l)p Fi(\))1330 b Fg(f)-78
+4804 y Fi(\342\356\347\342\360\340\362\350\362\361)n(\377)27
+b(\352)g(\357\356\361\353\345\344\355\345\354\363)h
+(\357\360\356\361\354\356\362\360\345\355\355\356\354\363)f
+(\363\347\353\363)1089 b Fg(l)-78 4904 y Fi
+(\342\356\347\342\360\340\362\350\362\361)n(\377)27 b(\352)g
+(\363\347\353\363-\352)n(\340\362)n(\340\353\356\343\363)1841
+b Fg(d)-78 5003 y Fi(\357\345\360\345\351\362\350)29
+b(\352)e(\363\347\353\363)-7 b(,)28 b
+(\347\340\344\340\355\355\356\354\363)e(\350\354\345\355\345\354)1617
+b Fg(g)-128 5098 y Fi(\304\360\363\343\350\345)27 b(\352)n
+(\356\354\340\355\344\373:)-78 5192 y(\347\340\357\363)n
+(\361\362\350\362\374)g Ff(\363\367\345\341\355\350\352)h
+Fi(\357\356)f(\361\350\361\362\345\354\345)i
+(\344\356\352\363\354\345\355\362)n(\340\366\350\350)1183
+b Fg(h)-78 5292 y Ff(\357\360\345\352\360\340\362\350\362\374)32
+b(\360\340\341\356\362\363)d Fi(\361)e
+(\344\356\352\363\354\345\355\362)n(\340\366\350\345\351)1455
+b Fg(q)-78 5392 y Fi(\357\356\350\361\352)28 b(\342)f
+(\363\347\353\340\365)g(\361)g(\357\356\354\356\371\374\376)g
+(\360\345\343\363)-5 b(\353\377\360\355\373\365)28 b
+(\342\373\360\340\346)n(\345\355\350\351)1028 b Fg(M-s)1860
+6192 y Fi(5)p eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop -128 -45 a Fh(25)131 b(\320)l
+(\345\343\350\361\362\360\373)-78 139 y Fi(\361\356)n
+(\365\360\340\355\350\362\374)27 b(\356\341\353\340\361\362\374)f(\342)
+h(\360\345\343\350\361\362\360\345)1810 b Fg(C-x)42 b(r)h(s)-78
+239 y Fi(\342\361\362)n(\340\342\350\362\374)27 b(\361\356)n
+(\344\345\360)n(\346\350\354\356\345)f
+(\360\345\343\350\361\362\360\340)i(\342)f(\341\363\364\345\360)1435
+b Fg(C-x)42 b(r)h(i)-78 338 y Fi(\361\356)n
+(\365\360\340\355\350\362\374)27 b(\357\356\353\356)n(\346)n
+(\345\355\350\345)f(\352\363\360\361\356\360\340)h(\342)g
+(\360\345\343\350\361\362\360\345)1365 b Fg(C-x)42 b(r)h(SPC)-78
+438 y Fi(\357\345\360\345\351\362\350)29 b(\352)e(\357\356\353\356)n
+(\346)n(\345\355\350\376)g(\352\363\360\361\356\360\340,)g(\361\356)n
+(\365\360\340\355\345\355\355\356\354\363)f(\342)h
+(\360\345\343\350\361\362\360\345)775 b Fg(C-x)42 b(r)h(j)-128
+683 y Fh(26)131 b(\312\353\340\342\350\340\362\363\360\355\373\345)44
+b(\354\340\352\360\356\361\373)-78 867 y Ff(\355\340)m
+(\367\340\362\374)29 b Fi(\356\357\360\345\344\345\353\345\355\350\345)
+e(\352\353\340\342\350\340\362\363\360\355\356\343\356)f
+(\354\340\352\360\356\361\340)1227 b Fg(C-x)42 b(\()-78
+966 y Ff(\347\340\352)m(\356\355\367\350\362\374)29 b
+Fi(\356\357\360\345\344\345\353\345\355\350\345)e
+(\352\353\340\342\350\340\362\363\360\355\356\343\356)f
+(\354\340\352\360\356\361\340)1077 b Fg(C-x)42 b(\))-78
+1066 y Ff(\342\373\357\356\353\355\350\362\374)27 b Fi
+(\357\356\361\353\345\344\355\350\351)h
+(\356\357\360\345\344\345\353\345\355\355\373\351)g
+(\354\340\352\360\356\361)1187 b Fg(C-x)42 b(e)-78 1165
+y Fi(\344\356\357\356\353\355\350\362\374)27 b
+(\357\356\361\353\345\344\355\350\351)h
+(\356\357\360\345\344\345\353\345\355\355\373\351)g
+(\354\340\352\360\356\361)1260 b Fg(C-u)42 b(C-x)g(\()-78
+1265 y Fi(\347\340\344\340\362\374)27 b(\350\354\377)h(\344\353\377)g
+(\357\356\361\353\345\344\355\345\343\356)f
+(\356\357\360\345\344\345\353\345\355\355\356\343\356)f
+(\354\340\352\360\356\361\340)990 b Fg(M-x)42 b(name-last-kbd-m)o(acr)o
+(o)-78 1365 y Fi(\342\361\362)n(\340\342\350\362\374)27
+b(\342)g(\341\363\364\345\360)f
+(\356\357\360\345\344\345\353\345\355\350\345)i
+(\354\340\352\360\356\361\340)e(\355\340)i(\377\347\373\352)n(\345)f
+(Lisp)898 b Fg(M-x)42 b(insert-kbd-macr)o(o)-128 1611
+y Fh(27)131 b(\312\356\354\340\355\344\373,)43 b
+(\361\342\377\347\340\355\355\373\345)h(\361)h(Emacs)e(Lisp)-78
+1794 y Fi(\342\373\367\350\361\353\350\362\374)28 b Ff
+(\342\373\360\340\346)m(\345\355\350\345)g Fi(\357\345\360\345\344)g
+(\352\363\360\361\356\360\356\354)1389 b Fg(C-x)42 b(C-e)-78
+1894 y Fi(\342\373\367\350\361\353\350\362\374)28 b
+(\362\345\352\363\371\363\376)g(\364\363\355\352\366\350\376)f
+Ff(defun)1518 b Fg(C-M-x)-78 1994 y Fi
+(\342\373\367\350\361\353\350\362\374)28 b Ff
+(\356\341\353\340\361\362\374)g Fi(\352)n(\340\352)f
+(\342\373\360\340\346)n(\345\355\350\345)1561 b Fg(M-x)42
+b(eval-region)-78 2093 y Fi(\361\367\350\362)n(\340\362\374)28
+b(\350)g(\342\373\367\350\361\353\350\362\374)f(\342\373\360\340\346)n
+(\345\355\350\345)g(\350\347)g
+(\354\350\355\350\341\363\364\345\360\340)1078 b Fg(M-:)-78
+2193 y Fi(\347\340\343\360\363\347\350\362\374)27 b(\350\347)h
+(\361\362)n(\340\355\344\340\360\362\355\356\343\356)e
+(\361\350\361\362\345\354\355\356\343\356)i(\352)n(\340\362)n
+(\340\353\356\343)n(\340)1113 b Fg(M-x)42 b(load-library)-128
+2438 y Fh(28)131 b(\317\360\356\361\362)l(\340\377)45
+b(\355\340\361\362\360\356\351\352)l(\340)-78 2619 y
+Fi(\355\340\361\362\360\356\350\362\374)28 b
+(\357\345\360\345\354\345\355\355\373\345)g(\350)f
+(\356\364\356\360\354\353\345\355\350\345)g(\(faces\))1249
+b Fg(M-x)42 b(customize)-128 2720 y Fi(\321\356\347\344\340\362\374)27
+b(\343)n(\353\356\341\340\353\374\355\356\345)e(\355\340\347\355\340)n
+(\367\345\355\350\345)i(\352\353\376\367\345\351)h(\355\340)f(Emacs)h
+(Lisp)f(\(\357\360\350\354\345\360\):)-128 2902 y Fg(\(global-set-key)
+38 b("\\C-cg")i('goto-line\))-128 3002 y(\(global-set-key)e("\\M-#")j
+('query-replace-)o(re)o(gex)o(p\))-128 3276 y Fh(29)131
+b(\315\340\357\350\361\340\355\350\345)44 b(\352)l
+(\356\354\340\355\344)-128 3458 y Fg(\(defun)d(<command-name>)d
+(\(<args>\))-40 3558 y("<documentation)o(>")f(\(interactive)h
+("<template>"\))-40 3658 y(<body>\))-128 3840 y Fi
+(\317\360\350\354\345\360:)-128 4023 y Fg(\(defun)j(this-line-to-top-)o
+(of)o(-wi)o(nd)o(ow)c(\(line\))-40 4122 y("Reposition)i(line)i(point)h
+(is)h(on)f(to)h(top)f(of)h(window.)-128 4222 y(With)f(ARG,)g(put)h
+(point)e(on)i(line)f(ARG.")-40 4322 y(\(interactive)c("P"\))-40
+4421 y(\(recenter)h(\(if)k(\(null)e(line\))570 4521 y(0)483
+4621 y(\(prefix-numeric)o(-v)o(al)o(ue)c(line\)\)\)\))-128
+4803 y Fi(\321\357\345\366\350\364\350\352)n(\340\366\350\377)30
+b Fg(interactive)25 b Fi(\361\356\356\341\371\340\345\362)j(\356)h
+(\362\356\354,)h(\367\362\356)g(\340\360\343\363\354\345\355\362)g
+(\355\340\344\356)e(\361\367\350\362\373\342\340\362\374)i
+(\350\355\362\345\360\340\352\362\350\342\355\356.)g(\304\353\377)f
+(\344\356\357\356\353\355\350-)-128 4903 y
+(\362\345\353\374\355\356\351)f
+(\350\355\364\356\360\354\340\366\350\350)f
+(\355\340\341\345\360\350\362\345)g Fg(C-h)43 b(f)g(interactive)p
+Fi(.)1110 5391 y Fb(Cop)n(yrigh)n(t)1461 5389 y(c)1441
+5391 y Fa(\015)23 b Fb(1997)i(F)-6 b(ree)25 b(Soft)n(w)n(are)g(F)-6
+b(oundation,)25 b(Inc.)1214 5470 y(v2.2)f(for)g(GNU)g(Emacs)e(v)n
+(ersion)j(21,)f(June)g(1997)1453 5549 y(designed)g(b)n(y)g(Stephen)i
+(Gildea)1239 5628 y(\317\345\360\345\342\356)n(\344)f(Alex)e(Ott)h
+(<ottalex)h(at)g(naro)r(d.ru>)-128 5707 y(P)n(ermission)31
+b(is)h(gran)n(ted)i(to)f(mak)n(e)e(and)i(distribute)g(copies)g(of)e
+(this)h(card)i(pro)n(vided)f(the)g(cop)n(yrigh)n(t)h(notice)f(and)g
+(this)f(p)r(ermission)f(notice)i(are)-128 5786 y(preserv)n(ed)27
+b(on)c(all)g(copies.)-128 5864 y(F)-6 b(or)33 b(copies)f(of)g(the)h
+(GNU)e(Emacs)g(man)n(ual,)g(write)h(to)h(the)f(F)-6 b(ree)34
+b(Soft)n(w)n(are)f(F)-6 b(oundation,)33 b(Inc.,)f(59)g(T)-6
+b(emple)31 b(Place,)h(Suite)g(330,)g(Boston,)h(MA)-128
+5943 y(02111-1307)26 b(USA)1860 6192 y Fi(6)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/etc/ru-refcard.tex b/etc/ru-refcard.tex
new file mode 100644
index 00000000000..608eff79967
--- /dev/null
+++ b/etc/ru-refcard.tex
@@ -0,0 +1,516 @@
+\documentclass[10pt]{article}
+\usepackage{multicol,tabularx}
+\usepackage[a4paper,hmargin={2cm,2cm},vmargin={2cm,2cm},nohead,twoside]{geometry}
+\usepackage[T2A]{fontenc}
+\usepackage[koi8-r]{inputenc}
+\usepackage[english,russian]{babel}
+\usepackage{verbatim}
+%\usepackage{enumerate,calc}
+%\usepackage{indentfirst,amsmath,graphicx,citehack,floatflt}
+%
+%\usepackage{pscyr}
+%\renewcommand{\rmdefault}{fha}
+
+\newlength{\ColWidth}
+\setlength{\ColWidth}{120mm}
+\newlength{\ColThreeWidth}
+\setlength{\ColThreeWidth}{25mm}
+
+\newcommand{\versionnumber}[0]{2.2}
+\newcommand{\nyear}[0]{1997}
+
+\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
+ \centerline{\footnotesize \copyright\ \nyear\ Free Software Foundation, Inc.
+ Permissions on back. v\versionnumber}}
+
+\newcommand\copyrightnotice[0]{
+\vskip 1ex plus 2 fill\begingroup\footnotesize
+\centerline{Copyright \copyright\ \nyear\ Free Software Foundation, Inc.}
+\centerline{v\versionnumber{} for GNU Emacs version 21, June \nyear}
+\centerline{designed by Stephen Gildea}
+\centerline{ðÅÒÅ×ÏÄ Alex Ott <ottalex at narod.ru>}
+
+Permission is granted to make and distribute copies of
+this card provided the copyright notice and this permission notice
+are preserved on all copies.
+
+For copies of the GNU Emacs manual, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\endgroup}
+
+\hyphenation{mini-buf-fer}
+
+\parindent 0pt
+%\parskip 0.5ex plus .2ex minus .2ex
+
+\newcommand{\kbd}[1]{\texttt{#1}}
+
+\begin{document}
+
+%\begin{multicols}{3}
+
+\centerline{óÐÒÁ×ÏÞÎÁÑ ËÁÒÔÁ ÐÏ GNU Emacs}
+\centerline{(ÄÌÑ ×ÅÒÓÉÉ 21)}
+
+\section{úÁÐÕÓË Emacs}
+
+äÌÑ ÚÁÐÕÓËÁ GNU Emacs 21, ÐÒÏÓÔÏ ÎÁÂÅÒÉÔÅ ÉÍÑ ÐÒÏÇÒÁÍÍÙ: \kbd{emacs}
+
+ï ÔÏÍ, ËÁË ÏÔËÒÙ×ÁÔØ ÆÁÊÌÙ, ÞÉÔÁÊÔÅ ÄÁÌÅÅ × ÒÁÚÄÅÌÅ æÁÊÌÙ.
+
+\section{÷ÙÈÏÄ ÉÚ Emacs}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+ðÒÉÏÓÔÁÎÏ×ÉÔØ ÒÁÂÏÔÕ Emacs (ÉÌÉ Ó×ÅÒÎÕÔØ × ÉËÏÎËÕ ÐÒÉ ÒÁÂÏÔÅ × X) & \kbd{C-z} \\
+÷ÙÊÔÉ ÉÚ Emacs & \kbd{C-x C-c} \\
+\end{tabular}
+
+\section{æÁÊÌÙ}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ÏÔËÒÙÔØ} ÆÁÊÌ × ÂÕÆÅÒÅ Emacs & \kbd{C-x C-f} \\
+{\bf ÓÏÈÒÁÎÉÔØ} ÆÁÊÌ ÏÂÒÁÔÎÏ ÎÁ ÄÉÓË & \kbd{C-x C-s} \\
+ÓÏÈÒÁÎÉÔØ {\bf ×ÓÅ} ÆÁÊÌÙ & \kbd{C-x s} \\
+{\bf ×ÓÔÁ×ÉÔØ} ÓÏÄÅÒÖÉÍÏÅ ÄÒÕÇÏÇÏ ÆÁÊÌÁ × ÔÅËÕÝÉÊ ÂÕÆÅÒ & \kbd{C-x i} \\
+ÏÔËÒÙÔØ ÎÕÖÎÙÊ ×ÁÍ ÆÁÊÌ ×ÍÅÓÔÏ ÔÅËÕÝÅÇÏ & \kbd{C-x C-v} \\
+ÓÏÈÒÁÎÉÔØ ÂÕÆÅÒ × ÕËÁÚÁÎÎÏÍ ÆÁÊÌÅ & \kbd{C-x C-w} \\
+÷ËÌÀÞÉÔØ/×ÙËÌÀÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÂÕÆÅÒÁ ``ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ'' & \kbd{C-x C-q} \\
+\end{tabular}
+
+\section{ðÏÌÕÞÅÎÉÅ ÐÏÍÏÝÉ}
+
+óÐÒÁ×ÏÞÎÁÑ ÓÉÓÔÅÍÁ ÄÏÓÔÁÔÏÞÎÏ ÐÒÏÓÔÁ. HÁÖÍÉÔÅ \kbd{C-h} (ÉÌÉ \kbd{F1}) É
+ÓÌÅÄÕÊÔÅ ÉÎÓÔÒÕËÃÉÑÍ. åÓÌÉ ×Ù × ÐÅÒ×ÙÊ ÒÁÚ ÒÁÂÏÔÁÅÔÅ Ó Emacs, ÎÁÂÅÒÉÔÅ
+\kbd{C-u C-h t Russian RET} ÄÌÑ ×ÙÚÏ×Á {\bf ÕÞÅÂÎÉËÁ}.
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+úÁËÒÙÔØ ÏËÎÏ ÓÐÒÁ×ËÉ & \kbd{C-x 1} \\
+ðÒÏËÒÕÔÉÔØ ÏËÎÏ ÓÐÒÁ×ËÉ & \kbd{C-M-v} \\
+
+apropos: ÐÏËÁÚÁÔØ ËÏÍÁÎÄÙ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÓÔÒÏËÅ & \kbd{C-h a} \\
+ÐÏËÁÚÁÔØ ÉÍÑ ÆÕÎËÃÉÉ, ËÏÔÏÒÁÑ ÚÁÐÕÓËÁÅÔÓÑ ËÌÁ×ÉÛÅÊ & \kbd{C-h c} \\
+ÏÐÉÓÁÔØ ÆÕÎËÃÉÀ & \kbd{C-h f} \\
+ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÒÅÖÉÍÅ & \kbd{C-h m} \\
+\end{tabular}
+
+\section{éÓÐÒÁ×ÌÅÎÉÅ ÏÛÉÂÏË}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ÐÒÅÒ×ÁÔØ} ÞÁÓÔÉÞÎÏ ÎÁÂÒÁÎÎÕÀ ÉÌÉ ÉÓÐÏÌÎÑÅÍÕÀ ËÏÍÁÎÄÕ & \kbd{C-g} \\
+{\bf ×ÏÓÓÔÁÎÏ×ÉÔØ} ÆÁÊÌ, ÐÏÔÅÒÑÎÎÙÊ ÐÒÉ ËÒÁÈÅ ÓÉÓÔÅÍÙ & \kbd{M-x recover-file} \\
+{\bf ÏÔÍÅÎÉÔØ} ÎÅÖÅÌÁÔÅÌØÎÙÅ ÉÚÍÅÎÅÎÉÑ & \kbd{C-x u {\rm ÉÌÉ} C-\_} \\
+×ÏÓÓÔÁÎÏ×ÉÔØ ÂÕÆÅÒ × ÐÅÒ×ÏÎÁÞÁÌØÎÏÅ ÓÏÓÔÏÑÎÉÅ & \kbd{M-x revert-buffer} \\
+ÐÅÒÅÒÉÓÏ×ÁÔØ ÚÁÐÏÌÎÅÎÎÙÊ ÍÕÓÏÒÏÍ ÜËÒÁÎ & \kbd{C-l} \\
+\end{tabular}
+
+\section{HÁÒÁÝÉ×ÁÅÍÙÊ ÐÏÉÓË}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+ÐÏÉÓË ×ÐÅÒÅÄ & \kbd{C-s} \\
+ÐÏÉÓË ÎÁÚÁÄ & \kbd{C-r} \\
+ÐÏÉÓË ÐÏ ÒÅÇÕÌÑÒÎÏÍÕ ×ÙÒÁÖÅÎÉÀ & \kbd{C-M-s} \\
+ÐÏÉÓË ÐÏ ÒÅÇÕÌÑÒÎÏÍÕ ×ÙÒÁÖÅÎÉÀ ÎÁÚÁÄ & \kbd{C-M-r} \\
+
+×ÙÂÒÁÔØ ÐÒÅÄÙÄÕÝÕÀ ÓÔÒÏËÕ ÐÏÉÓËÁ & \kbd{M-p} \\
+×ÙÂÒÁÔØ ÓÌÅÄÕÀÝÕÀ ÓÔÒÏËÕ ÐÏÉÓËÁ & \kbd{M-n} \\
+ÐÒÅËÒÁÔÉÔØ ÎÁÒÁÝÉ×ÁÅÍÙÊ ÐÏÉÓË & \kbd{RET} \\
+ÏÔÍÅÎÉÔØ ÜÆÆÅËÔ ××ÏÄÁ ÐÏÓÌÅÄÎÅÇÏ ÓÉÍ×ÏÌÁ & \kbd{DEL} \\
+ÐÒÅÒ×ÁÔØ ÔÅËÕÝÉÊ ÐÏÉÓË & \kbd{C-g} \\
+\end{tabular}
+
+äÌÑ ÐÏ×ÔÏÒÁ ÐÏÉÓËÁ × ÌÀÂÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ ÉÓÐÏÌØÚÕÊÔÅ ËÌÁ×ÉÛÉ \kbd{C-s} ÉÌÉ
+\kbd{C-r}. åÓÌÉ Emacs ×ÓÅ ÅÝÅ ÐÒÏÉÚ×ÏÄÉÔ ÐÏÉÓË, \kbd{C-g} ÏÔÍÅÎÉÔ ÔÏÌØËÏ
+ÎÅÓÄÅÌÁÎÎÕÀ ÞÁÓÔØ.
+
+\section{ðÅÒÅÍÅÝÅÎÉÅ}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ÅÄÉÎÉÃÙ ÐÅÒÅÍÅÝÅÎÉÑ} & {\bf ÎÁÚÁÄ} & {\bf ×ÐÅÒÅÄ} \\
+ÓÉÍ×ÏÌ & \kbd{C-b} & \kbd{C-f} \\
+ÓÌÏ×Ï & \kbd{M-b} & \kbd{M-f} \\
+ÓÔÒÏËÁ & \kbd{C-p} & \kbd{C-n} \\
+ÎÁÞÁÌÏ (ÉÌÉ ËÏÎÅÃ) ÓÔÒÏËÉ & \kbd{C-a} & \kbd{C-e} \\
+ÐÒÅÄÌÏÖÅÎÉÅ & \kbd{M-a} & \kbd{M-e} \\
+ÁÂÚÁÃ & \kbd{M-\{} & \kbd{M-\}} \\
+ÓÔÒÁÎÉÃÁ & \kbd{C-x [} & \kbd{C-x ]} \\
+×ÙÒÁÖÅÎÉÅ (sexp) & \kbd{C-M-b} & \kbd{C-M-f} \\
+ÆÕÎËÃÉÑ & \kbd{C-M-a} & \kbd{C-M-e} \\
+ÐÅÒÅÈÏÄ × ÎÁÞÁÌÏ (ÉÌÉ ËÏÎÅÃ) ÂÕÆÅÒÁ & \kbd{M-<} & \kbd{M->} \\
+
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}l}
+ÐÒÏËÒÕÔËÁ ÜËÒÁÎÁ ×ÎÉÚ & \kbd{C-v} \\
+ÐÒÏËÒÕÔËÁ ÜËÒÁÎÁ ××ÅÒÈ & \kbd{M-v} \\
+ÐÒÏËÒÕÔËÁ ×ÌÅ×Ï & \kbd{C-x <} \\
+ÐÒÏËÒÕÔËÁ ×ÐÒÁ×Ï & \kbd{C-x >} \\
+ÐÒÏËÒÕÔËÁ ÔÅËÕÝÅÊ ÓÔÒÏËÉ × ÃÅÎÔÒ ÜËÒÁÎÁ & \kbd{C-u C-l} \\
+\end{tabular}
+
+\section{õÎÉÞÔÏÖÅÎÉÅ É ÕÄÁÌÅÎÉÅ}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ÕÎÉÞÔÏÖÁÅÍÙÊ ÏÂßÅËÔ} & {\bf ÎÁÚÁÄ} & {\bf ×ÐÅÒÅÄ} \\
+ÓÉÍ×ÏÌ (ÕÄÁÌÅÎÉÅ, Á ÎÅ ÕÎÉÞÔÏÖÅÎÉÅ) & \kbd{DEL} & \kbd{C-d} \\
+ÓÌÏ×Ï & \kbd{M-DEL} & \kbd{M-d} \\
+ÓÔÒÏËÁ (ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ) & \kbd{M-0 C-k} & \kbd{C-k} \\
+ÐÒÅÄÌÏÖÅÎÉÅ & \kbd{C-x DEL} & \kbd{M-k} \\
+×ÙÒÁÖÅÎÉÅ & \kbd{M-- C-M-k} & \kbd{C-M-k} \\
+\end{tabular}
+
+
+\begin{tabular}{p{\ColWidth}l}
+ÕÎÉÞÔÏÖÉÔØ {\bf ÏÂÌÁÓÔØ} & \kbd{C-w} \\
+ÓËÏÐÉÒÏ×ÁÔØ ÏÂÌÁÓÔØ × ÓÐÉÓÏË ÕÎÉÞÔÏÖÅÎÉÊ & \kbd{M-w} \\
+ÕÎÉÞÔÏÖÉÔØ ÄÏ ÓÌÅÄÕÀÝÅÇÏ ×ÈÏÖÄÅÎÉÑ ÓÉÍ×ÏÌÁ {\it char} & \kbd{M-z {\it char}} \\
+
+×ÓÔÁ×ÉÔØ ÐÏÓÌÅÄÎÉÊ ÕÎÉÞÔÏÖÅÎÎÙÊ ÏÂßÅËÔ & \kbd{C-y} \\
+ÚÁÍÅÎÉÔØ ÔÏÌØËÏ ÞÔÏ ×ÏÓÓÔÁÎÏ×ÌÅÎÎÙÊ ÔÅËÓÔ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÍ ÕÎÉÞÔÏÖÅÎÎÙÍ ÔÅËÓÔÏÍ & M-y \\
+\end{tabular}
+
+\section{ðÏÍÅÔËÁ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÕÓÔÁÎÏ×ÉÔØ ÐÏÍÅÔËÉ & \kbd{C-@ {\rm or} C-SPC} \\
+ÏÂÍÅÎÑÔØ ÍÅÓÔÁÍÉ ËÕÒÓÏÒ É ÐÏÍÅÔËÕ & \kbd{C-x C-x} \\
+
+ÐÏÍÅÔÉÔØ {\it arg\/} {\bf ÓÌÏ×} & \kbd{M-@} \\
+ÐÏÍÅÔÉÔØ {\bf ÐÁÒÁÇÒÁÆ} & \kbd{M-h} \\
+ÐÏÍÅÔÉÔØ {\bf ÓÔÒÁÎÉÃÕ} & \kbd{C-x C-p} \\
+ÐÏÍÅÔÉÔØ {\bf ×ÙÒÁÖÅÎÉÅ} & \kbd{C-M-@} \\
+ÐÏÍÅÔÉÔØ {\bf ÆÕÎËÃÉÀ} & \kbd{C-M-h} \\
+ÐÏÍÅÔÉÔØ ×ÅÓØ {\bf ÂÕÆÅÒ} & \kbd{C-x h} \\
+\end{tabular}
+
+\section{úÁÍÅÎÁ Ó ÚÁÐÒÏÓÏÍ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÉÎÔÅÒÁËÔÉ×ÎÁÑ ÚÁÍÅÎÁ ÔÅËÓÔÏ×ÏÊ ÓÔÒÏËÉ & \kbd{M-\%} \\
+Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ & \kbd{M-x query-replace-regexp} \\
+\end{tabular}
+
+÷ ÒÅÖÉÍÅ ÉÎÔÅÒÁËÔÉ×ÎÏÊ ÚÁÍÅÎÙ ÐÏÌØÚÏ×ÁÔÅÌÀ ÄÏÓÔÕÐÎÙ ÓÌÅÄÕÀÝÉÅ ÏÔ×ÅÔÙ:
+
+\begin{tabular}{p{\ColWidth}l}
+{\bf ÚÁÍÅÎÉÔØ} ÄÁÎÎÏÅ ÓÏÏÔ×ÅÔÓÔ×ÉÅ, ÐÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ & \kbd{SPC} \\
+ÚÁÍÅÎÉÔØ ÜÔÏ ÓÏÏÔ×ÅÔÓÔ×ÉÅ, ÎÅ ÐÅÒÅÍÅÝÁÔØÓÑ & \kbd{,} \\
+{\bf ÐÒÏÐÕÓÔÉÔØ} ÓÏÏÔ×ÅÔÓÔ×ÉÅ ÂÅÚ ÚÁÍÅÎÙ & \kbd{DEL} \\
+ÚÁÍÅÎÉÔØ ×ÓÅ ÏÓÔÁ×ÛÉÅÓÑ ÓÏÏÔ×ÅÔÓÔ×ÉÑ & \kbd{!} \\
+{\bf ×ÅÒÎÕÔØÓÑ} Ë ÐÒÅÄÙÄÕÝÅÍÕ ÓÏÏÔ×ÅÔÓÔ×ÉÀ & \kbd{\^} \\
+{\bf ×ÙÊÔÉ} ÉÚ ÒÅÖÉÍÁ ÚÁÍÅÎÁ Ó ÚÁÐÒÏÓÏÍ & \kbd{RET} \\
+×ÏÊÔÉ × ÒÅÖÉÍ ÒÅËÕÒÓÉ×ÎÏÇÏ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ (ÄÌÑ ×ÙÈÏÄÁ ÉÓÐÏÌØÚÕÅÔÓÑ \kbd{C-M-c}) & \kbd{C-r} \\
+\end{tabular}
+
+\section{íÎÏÖÅÓÔ×Ï ÏËÏÎ}
+
+ëÏÍÁÎÄÙ, ÐÒÉ×ÅÄÅÎÎÙÅ ×Ï ×ÔÏÒÏÍ ÓÔÏÌÂÃÅ, ÐÒÉÍÅÎÑÀÔÓÑ Ë ÄÒÕÇÏÍÕ
+(ÎÅÁËÔÉ×ÎÏÍÕ) ÏËÎÕ.
+
+\begin{tabular}{p{\ColWidth}l}
+ÕÄÁÌÉÔØ ×ÓÅ ÏÓÔÁÌØÎÙÅ ÏËÎÁ & \kbd{C-x 1} \\
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+ÒÁÚÂÉÔØ ÏËÎÏ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ & \kbd{C-x 2\ \ \ \ } & \kbd{C-x 5 2} \\
+ÕÄÁÌÉÔØ ÄÁÎÎÏÅ ÏËÎÏ & \kbd{C-x 0\ \ \ \ } & \kbd{C-x 5 0} \\
+
+ÒÁÚÂÉÔØ ÏËÎÏ ÐÏ ×ÅÒÔÉËÁÌÉ & \kbd{C-x 3} \\
+
+×ÙÐÏÌÎÉÔØ ÐÒÏËÒÕÔËÕ × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-M-v} \\
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+ÐÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ × ÄÒÕÇÏÅ ÏËÎÏ & \kbd{C-x o} & \kbd{C-x 5 o} \\
+
+×ÙÂÒÁÔØ ÂÕÆÅÒ × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-x 4 b} & \kbd{C-x 5 b} \\
+ÐÏËÁÚÁÔØ ÂÕÆÅÒ × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-x 4 C-o} & \kbd{C-x 5 C-o} \\
+ÚÁÇÒÕÚÉÔØ ÆÁÊÌ × ÄÒÕÇÏÅ ÏËÎÏ & \kbd{C-x 4 f} & \kbd{C-x 5 f} \\
+ÏÔËÒÙÔØ ÆÁÊÌ × ÒÅÖÉÍÅ ÞÔÅÎÉÑ × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-x 4 r} & \kbd{C-x 5 r} \\
+ÚÁÐÕÓÔÉÔØ Dired × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-x 4 d} & \kbd{C-x 5 d} \\
+ÎÁÊÔÉ ÔÁÇ × ÄÒÕÇÏÍ ÏËÎÅ & \kbd{C-x 4 .} & \kbd{C-x 5 .} \\
+
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}l}
+Õ×ÅÌÉÞÉÔØ ×ÙÓÏÔÕ ÏËÎÁ & \kbd{C-x \^} \\
+ÓÕÚÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ & \kbd{C-x \{} \\
+ÒÁÓÛÉÒÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ & \kbd{C-x \}} \\
+\end{tabular}
+
+\section{æÏÒÍÁÔÉÒÏ×ÁÎÉÅ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÓÄÅÌÁÔØ ÏÔÓÔÕÐ ÄÌÑ ÔÅËÕÝÅÊ {\bf ÓÔÒÏËÉ} (× ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÒÅÖÉÍÁ) & \kbd{TAB} \\
+ÓÄÅÌÁÔØ ÏÔÓÔÕÐ ÄÌÑ {\bf ÏÂÌÁÓÔÉ} (× ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÒÅÖÉÍÁ) & \kbd{C-M-$\backslash$} \\
+ÓÄÅÌÁÔØ ÏÔÓÔÕÐ ÄÌÑ {\bf ×ÙÒÁÖÅÎÉÑ} (× ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÒÅÖÉÍÁ) & \kbd{C-M-q} \\
+ÓÄÅÌÁÔØ ÏÔÓÔÕÐ Ë ÚÁÄÁÎÎÏÊ {\it arg\/} ËÏÌÏÎËÅ & \kbd{C-x TAB} \\
+
+×ÓÔÁ×ÉÔØ ÎÏ×ÕÀ ÓÔÒÏËÕ ÐÏÓÌÅ ËÕÒÓÏÒÁ & \kbd{C-o} \\
+ÓÄ×ÉÎÕÔØ ÏÓÔÁÔÏË ÓÔÒÏËÉ ×ÅÒÔÉËÁÌØÎÏ ×ÎÉÚ & \kbd{C-M-o} \\
+ÕÄÁÌÉÔØ ÐÕÓÔÙÅ ÓÔÒÏËÉ ×ÏËÒÕÇ ËÕÒÓÏÒÁ & \kbd{C-x C-o} \\
+ÏÂßÅÄÉÎÉÔØ ÓÔÒÏËÕ Ó ÐÒÅÄÙÄÕÝÅÊ (ÓÏ ÓÌÅÄÕÀÝÉÍÉ arg) & \kbd{M-\^} \\
+ÕÄÁÌÉÔØ ÐÕÓÔÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ×ÏËÒÕÇ ËÕÒÓÏÒÁ & \kbd{M-$\backslash$} \\
+ÐÏÍÅÓÔÉÔØ ÔÏÌØËÏ ÏÄÉÎ ÐÒÏÂÅÌ × ÐÏÚÉÃÉÉ ËÕÒÓÏÒÁ & \kbd{M-SPC} \\
+
+ÚÁÐÏÌÎÉÔØ ÔÅËÕÝÉÊ ÐÁÒÁÇÒÁÆ & \kbd{M-q} \\
+ÕÓÔÁÎÏ×ÉÔØ ÓÔÏÌÂÅà ÚÁÐÏÌÎÅÎÉÑ & \kbd{C-x f} \\
+ÕÓÔÁÎÏ×ÉÔØ ÐÒÅÆÉËÓ ÚÁÐÏÌÎÅÎÉÑ ËÁÖÄÏÊ ÓÔÒÏËÉ & \kbd{C-x .} \\
+
+ÕÓÔÁÎÏ×ÉÔØ ÎÁÞÅÒÔÁÎÉÅ & \kbd{M-g} \\
+\end{tabular}
+
+\section{éÚÍÅÎÅÎÉÅ ÒÅÇÉÓÔÒÁ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÓÄÅÌÁÔØ ÂÕË×Ù ÓÌÏ×Á ÚÁÇÌÁ×ÎÙÍÉ & \kbd{M-u} \\
+ÓÄÅÌÁÔØ ÂÕË×Ù ÓÌÏ×Á ÓÔÒÏÞÎÙÍÉ & \kbd{M-l} \\
+ÓÄÅÌÁÔØ ÐÅÒ×ÕÀ ÂÕË×Õ ÓÌÏ×Á ÚÁÇÌÁ×ÎÏÊ & \kbd{M-c} \\
+
+ÓÄÅÌÁÔØ ÂÕË×Ù ÏÂÌÁÓÔÉ ÚÁÇÌÁ×ÎÙÍÉ & \kbd{C-x C-u} \\
+ÓÄÅÌÁÔØ ÂÕË×Ù ÏÂÌÁÓÔÉ ÓÔÒÏÞÎÙÍÉ & \kbd{C-x C-l} \\
+\end{tabular}
+
+\section{íÉÎÉÂÕÆÅÒ}
+
+óÌÅÄÕÀÝÉÅ ËÌÁ×ÉÛÉ (ËÌÀÞÉ) ÏÐÒÅÄÅÌÅÎÙ × ÍÉÎÉÂÕÆÅÒÅ.
+
+\begin{tabular}{p{\ColWidth}l}
+ÄÏÐÏÌÎÉÔØ ÎÁÓËÏÌØËÏ ×ÏÚÍÏÖÎÏ & \kbd{TAB} \\
+ÄÏÐÏÌÎÉÔØ ÄÏ ÏÄÎÏÇÏ ÓÌÏ×Á & \kbd{SPC} \\
+ÄÏÐÏÌÎÉÔØ É ×ÙÐÏÌÎÉÔØ & \kbd{RET} \\
+ÐÏËÁÚÁÔØ ×ÏÚÍÏÖÎÙÅ ÄÏÐÏÌÎÅÎÉÑ & \kbd{?} \\
+×ÙÂÒÁÔØ ÐÒÅÄÙÄÕÝÉÊ ××ÏÄ × ÍÉÎÉÂÕÆÅÒ & \kbd{M-p} \\
+×ÙÂÒÁÔØ ÓÌÅÄÕÀÝÉÊ ××ÏÄ × ÍÉÎÉÂÕÆÅÒ & \kbd{M-n} \\
+ÐÏÉÓË × ÉÓÔÏÒÉÉ ÐÏ ÒÅÇÕÌÑÒÎÏÍÕ ×ÙÒÁÖÅÎÉÀ × ÏÂÒÁÔÎÏÍ ÎÁÐÒ×ÌÅÎÉÉ & \kbd{M-r} \\
+ÐÏÉÓË × ÉÓÔÏÒÉÉ ÐÏ ÒÅÇÕÌÑÒÎÏÍÕ ×ÙÒÁÖÅÎÉÀ × ÐÒÑÍÏÍ ÎÁÐÒ×ÌÅÎÉÉ & \kbd{M-s} \\
+ÐÒÅÒ×ÁÔØ ËÏÍÁÎÄÕ & \kbd{C-g} \\
+\end{tabular}
+
+îÁÂÅÒÉÔÅ \kbd{C-x ESC ESC} ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ É ÐÏ×ÔÏÒÅÎÉÑ ÐÏÓÌÅÄÎÅÊ
+ËÏÍÁÎÄÙ ÎÁÂÒÁÎÎÏÊ × ÍÉÎÉÂÕÆÅÒÅ. îÁÂÅÒÉÔÅ \kbd{F10}, ÞÔÏÂÙ ÒÁÂÏÔÁÔØ Ó
+ÐÕÎËÔÁÍÉ ÍÅÎÀ ÐÒÉ ÐÏÍÏÝÉ ËÏÍÁÎÄ ÍÉÎÉÂÕÆÅÒÁ.
+
+\section{âÕÆÅÒÁ}
+
+\begin{tabular}{p{\ColWidth}l}
+×ÙÂÒÁÔØ ÄÒÕÇÏÊ ÂÕÆÅÒ & \kbd{C-x b} \\
+×ÙÄÁÔØ ÓÐÉÓÏË ×ÓÅÈ ÂÕÆÅÒÏ× & \kbd{C-x C-b} \\
+ÕÎÉÞÔÏÖÉÔØ ÂÕÆÅÒ & \kbd{C-x k} \\
+\end{tabular}
+
+\section{ïÂÍÅÎ ÍÅÓÔÁÍÉ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÏÂÍÅÎÑÔØ ÍÅÓÔÁÍÉ {\bf ÓÉÍ×ÏÌÙ} & \kbd{C-t} \\
+ÏÂÍÅÎÑÔØ ÍÅÓÔÁÍÉ {\bf ÓÌÏ×Á} & \kbd{M-t} \\
+ÏÂÍÅÎÑÔØ ÍÅÓÔÁÍÉ {\bf ÓÔÒÏËÉ} & \kbd{C-x C-t} \\
+ÏÂÍÅÎÑÔØ ÍÅÓÔÁÍÉ {\bf ×ÙÒÁÖÅÎÉÑ} & \kbd{C-M-t} \\
+\end{tabular}
+
+\section{ðÒÏ×ÅÒËÁ ÇÒÁÍÍÁÔÉËÉ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÐÒÏ×ÅÒÉÔØ ÔÅËÕÝÅÅ ÓÌÏ×Ï & \kbd{M-\$} \\
+ÐÒÏ×ÅÒÉÔØ ×ÓÅ ÓÌÏ×Á × ÏÂÌÁÓÔÉ & \kbd{M-x ispell-region} \\
+×ÙÐÏÌÎÉÔØ ÐÒÏ×ÅÒËÕ ×ÓÅÇÏ ÂÕÆÅÒÁ & \kbd{M-x ispell-buffer} \\
+\end{tabular}
+
+\section{ôÅÇÉ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÎÁÊÔÉ ÏÐÒÅÄÅÌÅÎÉÅ ÔÅÇÁ & \kbd{M-.} \\
+ÎÁÊÔÉ ÓÌÅÄÕÀÝÅÅ ×ÈÏÖÄÅÎÉÅ ÔÅÇÁ & \kbd{C-u M-.} \\
+ÕËÁÚÁÔØ ÎÏ×ÙÊ ÆÁÊÌ Ó ÔÅÇÁÍÉ & \kbd{M-x visit-tags-table} \\
+
+ÐÏÉÓË ÐÏ ÛÁÂÌÏÎÕ ÐÏ ×ÓÅÊ ÔÁÂÌÉÃÅ ÔÅÇÏ× & \kbd{M-x tags-search} \\
+×ÙÐÏÌÎÉÔØ query-replace ÎÁÄ ×ÓÅÍÉ ÆÁÊÌÁÍÉ & \kbd{M-x tags-query-replace} \\
+ÐÒÏÄÏÌÖÉÔØ ÐÏÉÓË ÉÌÉ ÐÏÉÓË-ÚÁÍÅÎÕ ÔÅÇÁ & \kbd{M-,} \\
+\end{tabular}
+
+\section{ëÏÍÁÎÄÎÙÅ ÐÒÏÃÅÓÓÏÒÙ}
+
+\begin{tabular}{p{\ColWidth}l}
+÷ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ & \kbd{M-!} \\
+×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ ÎÁÄ ÏÂÌÁÓÔØÀ & \kbd{M-|} \\
+ÐÒÏÐÕÓÔÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÂÌÁÓÔÉ ÞÅÒÅÚ ËÏÍÁÎÄÕ ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ & \kbd{C-u M-|} \\
+ÚÁÐÕÓÔÉÔØ ËÏÍÁÎÄÎÙÊ ÐÒÏÃÅÓÓÏÒ × ÏËÎÅ \kbd{*shell*} & \kbd{M-x shell} \\
+\end{tabular}
+
+\section{ðÒÑÍÏÕÇÏÌØÎÙÅ ÏÂÌÁÓÔÉ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÓËÏÐÉÒÏ×ÁÔØ ÐÒÑÍÏÕÇÏÌØÎÕÀ ÏÂÌÁÓÔØ × ÒÅÇÉÓÔÒ & \kbd{C-x r r} \\
+ÕÄÁÌÉÔØ ÐÒÑÍÏÕÇÏÌØÎÕÀ ÏÂÌÁÓÔØ & \kbd{C-x r k} \\
+×ÓÔÁ×ÉÔØ ÐÏÓÌÅÄÎÕÀ ÕÎÉÞÔÏÖÅÎÎÕÀ ÐÒÑÍÏÕÇÏÌØÎÕÀ ÏÂÌÁÓÔØ & \kbd{C-x r y} \\
+ÏÔËÒÙÔØ ÐÒÑÍÏÕÇÏÌØÎÕÀ ÏÂÌÁÓÔØ, ÓÄ×ÉÇÁÑ ÔÅËÓÔ ×ÐÒÁ×Ï & \kbd{C-x r o} \\
+ÏÞÉÓÔÉÔØ ÐÒÑÍÏÕÇÏÌØÎÕÀ ÏÂÌÁÓÔØ & \kbd{C-x r c} \\
+ÐÒÅÄ×ÁÒÉÔØ ËÁÖÄÕÀ ÓÔÒÏËÕ ÓÔÒÏËÏÊ ÔÅËÓÔÁ & \kbd{C-x r t} \\
+\end{tabular}
+
+\section{óÏËÒÁÝÅÎÉÑ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÄÏÂÁ×ÉÔØ ÇÌÏÂÁÌØÎÏÅ ÓÏËÒÁÝÅÎÉÅ & \kbd{C-x a g} \\
+ÄÏÂÁ×ÉÔØ ÌÏËÁÌØÎÏÅ ÄÌÑ ÒÅÖÉÍÁ ÓÏËÒÁÝÅÎÉÅ & \kbd{C-x a l} \\
+ÄÏÂÁ×ÉÔØ ÇÌÏÂÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ÄÁÎÎÏÇÏ ÓÏËÒÁÝÅÎÉÑ & \kbd{C-x a i g} \\
+ÄÏÂÁ×ÉÔØ ÓÐÅÃÉÆÉÞÅÓËÏÅ ÄÌÑ ÒÅÖÉÍÁ ÚÎÁÞÅÎÉÅ ÄÁÎÎÏÇÏ ÓÏËÒÁÝÅÎÉÑ & \kbd{C-x a i l} \\
+Ñ×ÎÏ ×ÓÔÁ×ÉÔØ ÚÎÁÞÅÎÉÅ ÄÌÑ ÓÏËÒÁÝÅÎÉÑ & \kbd{C-x a e} \\
+
+ÄÉÎÁÍÉÞÅÓËÉ ÄÏÐÏÌÎÉÔØ ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï & \kbd{M-/} \\
+\end{tabular}
+
+\section{òÅÇÕÌÑÒÎÙÅ ×ÙÒÁÖÅÎÉÑ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÌÀÂÏÊ ÏÄÉÎÏÞÎÙÊ ÓÉÍ×ÏÌ (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÓÉÍ×ÏÌÁ ÎÏ×ÏÊ ÓÔÒÏËÉ) & \kbd{. {\rm(dot)}} \\
+ÎÏÌØ ÉÌÉ ÂÏÌÅÅ ÐÏ×ÔÏÒÅÎÉÊ & \kbd{*} \\
+ÏÄÎÏ ÉÌÉ ÂÏÌÅÅ ÐÏ×ÔÏÒÅÎÉÊ & \kbd{+} \\
+ÎÏÌØ ÉÌÉ ÏÄÎÏ ÐÏ×ÔÏÒÅÎÉÅ & \kbd{?} \\
+ÜËÒÁÎÉÒÏ×ÁÔØ ÓÐÅÃÉÁÌØÎÙÊ ÓÉÍ×ÏÌ {\it c\/} & \kbd{$\backslash${\it c}} \\
+×ÙÂÏÒ ÍÅÖÄÕ ÁÌØÔÅÒÎÁÔÉ×ÁÍÉ (``ÉÌÉ'') & \kbd{$\backslash|$} \\
+ÇÒÕÐÐÉÒÏ×ËÁ & \kbd{$\backslash$( {\rm$\ldots$} $\backslash$)} \\
+ÔÅËÓÔ × {\it n\/}-Ê ÇÒÕÐÐÅ & \kbd{$\backslash${\it n}} \\
+ÇÒÁÎÉÃÁ ÓÌÏ×Á & \kbd{$\backslash$b} \\
+ÎÅ ÇÒÁÎÉÃÁ ÓÌÏ×Á & \kbd{$\backslash$B} \\
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ÏÂßÅËÔ} & {\bf ÎÁÞÁÌÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ} & {\bf ËÏÎÅà ÓÏÏÔ×ÅÔÓÔ×ÉÑ} \\
+ÓÔÒÏËÁ & \kbd{\^} & \kbd{\$} \\
+ÓÌÏ×Ï & \kbd{$\backslash$<} & \kbd{$\backslash$>} \\
+ÂÕÆÅÒ & \kbd{$\backslash$`} & \kbd{$\backslash$'} \\
+\end{tabular}
+
+\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
+{\bf ËÌÁÓÓ ÓÉÍ×ÏÌÏ×} & {\bf ÓÏÏÔ×ÅÔ\-ÓÔ×ÕÅÔ ÉÍ} & {\bf ÓÏÏÔ×ÅÔ\-ÓÔ×ÕÅÔ ÄÒÕÇÉÍ} \\
+Ñ×ÎÙÊ ÎÁÂÏÒ & \kbd{[ {\rm$\ldots$} ]} & \kbd{[\^ {\rm$\ldots$} ]} \\
+ÓÉÍ×ÏÌ-ÂÕË×Á & \kbd{$\backslash$w} & \kbd{$\backslash$W} \\
+ÓÉÍ×ÏÌ Ó ÓÉÎÔÁËÓÉÓÏÍ {\it c} & \kbd{$\backslash$s{\it c}} & \kbd{$\backslash$S{\it c}} \\
+\end{tabular}
+
+\section{íÅÖÄÕÎÁÒÏÄÎÙÅ ÎÁÂÏÒÙ ÓÉÍ×ÏÌÏ×}
+
+\begin{tabular}{p{\ColWidth}l}
+×ÙÂÒÁÔØ ÑÚÙË & \kbd{M-x set-language-environment} \\
+ÐÏËÁÚÁÔØ ×ÓÅ ×ÏÚÍÏÖÎÙÅ ÍÅÔÏÄÙ ××ÏÄÁ & \kbd{M-x list-input-methods} \\
+ÒÁÚÒÅÛÉÔØ ÉÌÉ ÚÁÐÒÅÔÉÔØ ÍÅÔÏÄ ××ÏÄÁ & \kbd{C-$\backslash$} \\
+ÕÓÔÁÎÏ×ÉÔØ ÓÉÓÔÅÍÕ ËÏÄÉÒÏ×ÁÎÉÑ ÄÌÑ ÓÌÅÄÕÀÝÅÊ ËÏÍÁÎÄÙ & \kbd{C-x RET c} \\
+ÐÏËÁÚÁÔØ ÓÐÉÓÏË ×ÓÅÈ ÓÉÓÔÅÍ ËÏÄÉÒÏ×ÁÎÉÑ & \kbd{M-x list-coding-systems} \\
+×ÙÂÒÁÔØ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÕÀ ÓÉÓÔÅÍÕ ËÏÄÉÒÏ×ÁÎÉÑ & \kbd{M-x prefer-coding-system} \\
+\end{tabular}
+
+\section{éÎÆÏÒÍÁÃÉÑ (ÓÉÓÔÅÍÁ Info)}
+
+\begin{tabular}{p{\ColWidth}l}
+ÚÁÐÕÓÔÉÔØ ÓÉÓÔÅÍÕ ÄÏÓÔÕÐÁ Ë ÄÏËÕÍÅÎÔÁÃÉÉ & \kbd{C-h i} \\
+ÎÁÊÔÉ ÕËÁÚÁÎÎÕÀ ÆÕÎËÃÉÀ ÉÌÉ ÐÅÒÅÍÅÎÎÕÀ × ÄÏËÕÍÅÎÔÁÃÉÉ & \kbd{C-h C-i} \\
+\end{tabular}
+
+ðÅÒÅÍÅÝÅÎÉÅ ×ÎÕÔÒÉ ÕÚÌÁ (ÎÏÄÁÍÉ):
+
+\begin{tabular}{p{\ColWidth}l}
+ÐÒÏËÒÕÔËÁ ×ÐÅÒÅÄ & \kbd{SPC} \\
+ÐÒÏËÒÕÔËÁ ÎÁÚÁÄ & \kbd{DEL} \\
+ÐÅÒÅÊÔÉ Ë ÎÁÞÁÌÕ ÕÚÌÁ & \kbd{. {\rm (dot)}} \\
+\end{tabular}
+
+ðÅÒÅÍÅÝÅÎÉÅ ÍÅÖÄÕ ÕÚÌÁÍÉ:
+
+\begin{tabular}{p{\ColWidth}l}
+{\bf ÓÌÅÄÕÀÝÉÊ} ÕÚÅÌ & \kbd{n} \\
+{\bf ÐÒÅÄÙÄÕÝÉÊ} ÕÚÅÌ & \kbd{p} \\
+ÐÅÒÅÊÔÉ Ë {\bf ×ÅÒÈÎÅÍÕ} ÕÚÌÕ & \kbd{u} \\
+×ÙÂÒÁÔØ ÍÅÎÀ ÐÏ ÉÍÅÎÉ & \kbd{m} \\
+×ÙÂÒÁÔØ {\it n\/}-Ê ÐÕÎËÔ ÍÅÎÀ ÐÏ ÎÏÍÅÒÕ (1--9) & \kbd{{\it n}} \\
+ÐÅÒÅÊÔÉ ÐÏ ÓÓÙÌËÅ (×ÏÚ×ÒÁÔ Ó ÐÏÍÏÝØÀ \kbd{l}) & \kbd{f} \\
+×ÏÚ×ÒÁÔÉÔÓÑ Ë ÐÏÓÌÅÄÎÅÍÕ ÐÒÏÓÍÏÔÒÅÎÎÏÍÕ ÕÚÌÕ & \kbd{l} \\
+×ÏÚ×ÒÁÔÉÔÓÑ Ë ÕÚÌÕ-ËÁÔÁÌÏÇÕ & \kbd{d} \\
+ÐÅÒÅÊÔÉ Ë ÕÚÌÕ, ÚÁÄÁÎÎÏÍÕ ÉÍÅÎÅÍ & \kbd{g} \\
+\end{tabular}
+
+äÒÕÇÉÅ ËÏÍÁÎÄÙ:
+
+\begin{tabular}{p{\ColWidth}l}
+ÚÁÐÕÓÔÉÔØ {\bf ÕÞÅÂÎÉË} ÐÏ ÓÉÓÔÅÍÅ ÄÏËÕÍÅÎÔÁÃÉÉ & \kbd{h} \\
+{\bf ÐÒÅËÒÁÔÉÔØ ÒÁÂÏÔÕ} Ó ÄÏËÕÍÅÎÔÁÃÉÅÊ & \kbd{q} \\
+ÐÏÉÓË × ÕÚÌÁÈ Ó ÐÏÍÏÝØÀ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ & \kbd{M-s} \\
+\end{tabular}
+
+\section{òÅÇÉÓÔÒÙ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÓÏÈÒÁÎÉÔØ ÏÂÌÁÓÔØ × ÒÅÇÉÓÔÒÅ & \kbd{C-x r s} \\
+×ÓÔÁ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÒÅÇÉÓÔÒÁ × ÂÕÆÅÒ & \kbd{C-x r i} \\
+
+ÓÏÈÒÁÎÉÔØ ÐÏÌÏÖÅÎÉÅ ËÕÒÓÏÒÁ × ÒÅÇÉÓÔÒÅ & \kbd{C-x r SPC} \\
+ÐÅÒÅÊÔÉ Ë ÐÏÌÏÖÅÎÉÀ ËÕÒÓÏÒÁ, ÓÏÈÒÁÎÅÎÎÏÍÕ × ÒÅÇÉÓÔÒÅ & \kbd{C-x r j} \\
+\end{tabular}
+
+\section{ëÌÁ×ÉÁÔÕÒÎÙÅ ÍÁËÒÏÓÙ}
+
+\begin{tabular}{p{\ColWidth}l}
+{\bf ÎÁÞÁÔØ} ÏÐÒÅÄÅÌÅÎÉÅ ËÌÁ×ÉÁÔÕÒÎÏÇÏ ÍÁËÒÏÓÁ & \kbd{C-x (} \\
+{\bf ÚÁËÏÎÞÉÔØ} ÏÐÒÅÄÅÌÅÎÉÅ ËÌÁ×ÉÁÔÕÒÎÏÇÏ ÍÁËÒÏÓÁ & \kbd{C-x )} \\
+{\bf ×ÙÐÏÌÎÉÔØ} ÐÏÓÌÅÄÎÉÊ ÏÐÒÅÄÅÌÅÎÎÙÊ ÍÁËÒÏÓ & \kbd{C-x e} \\
+ÄÏÐÏÌÎÉÔØ ÐÏÓÌÅÄÎÉÊ ÏÐÒÅÄÅÌÅÎÎÙÊ ÍÁËÒÏÓ & \kbd{C-u C-x (} \\
+ÚÁÄÁÔØ ÉÍÑ ÄÌÑ ÐÏÓÌÅÄÎÅÇÏ ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÍÁËÒÏÓÁ & \kbd{M-x name-last-kbd-macro} \\
+×ÓÔÁ×ÉÔØ × ÂÕÆÅÒ ÏÐÒÅÄÅÌÅÎÉÅ ÍÁËÒÏÓÁ ÎÁ ÑÚÙËÅ Lisp & \kbd{M-x insert-kbd-macro} \\
+\end{tabular}
+
+\section{ëÏÍÁÎÄÙ, Ó×ÑÚÁÎÎÙÅ Ó Emacs Lisp}
+
+\begin{tabular}{p{\ColWidth}l}
+×ÙÞÉÓÌÉÔØ {\bf ×ÙÒÁÖÅÎÉÅ} ÐÅÒÅÄ ËÕÒÓÏÒÏÍ & \kbd{C-x C-e} \\
+×ÙÞÉÓÌÉÔØ ÔÅËÕÝÕÀ ÆÕÎËÃÉÀ {\bf defun} & \kbd{C-M-x} \\
+×ÙÞÉÓÌÉÔØ {\bf ÏÂÌÁÓÔØ} ËÁË ×ÙÒÁÖÅÎÉÅ & \kbd{M-x eval-region} \\
+ÓÞÉÔÁÔØ É ×ÙÞÉÓÌÉÔØ ×ÙÒÁÖÅÎÉÅ ÉÚ ÍÉÎÉÂÕÆÅÒÁ & \kbd{M-:} \\
+ÚÁÇÒÕÚÉÔØ ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ÓÉÓÔÅÍÎÏÇÏ ËÁÔÁÌÏÇÁ & \kbd{M-x load-library} \\
+\end{tabular}
+
+\section{ðÒÏÓÔÁÑ ÎÁÓÔÒÏÊËÁ}
+
+\begin{tabular}{p{\ColWidth}l}
+ÎÁÓÔÒÏÉÔØ ÐÅÒÅÍÅÎÎÙÅ É ÏÆÏÒÍÌÅÎÉÅ (faces) & \kbd{M-x customize} \\
+\end{tabular}
+
+% The intended audience here is the person who wants to make simple
+% customizations and knows Lisp syntax.
+
+óÏÚÄÁÔØ ÇÌÏÂÁÌØÎÏÅ ÎÁÚÎÁÞÅÎÉÅ ËÌÀÞÅÊ ÎÁ Emacs Lisp (ÐÒÉÍÅÒ):
+
+\begin{verbatim}
+(global-set-key "\C-cg" 'goto-line)
+(global-set-key "\M-#" 'query-replace-regexp)
+\end{verbatim}
+
+\section{îÁÐÉÓÁÎÉÅ ËÏÍÁÎÄ}
+
+\begin{verbatim}
+(defun <command-name> (<args>)
+ "<documentation>" (interactive "<template>")
+ <body>)
+\end{verbatim}
+
+ðÒÉÍÅÒ:
+
+\begin{verbatim}
+(defun this-line-to-top-of-window (line)
+ "Reposition line point is on to top of window.
+With ARG, put point on line ARG."
+ (interactive "P")
+ (recenter (if (null line)
+ 0
+ (prefix-numeric-value line))))
+\end{verbatim}
+
+óÐÅÃÉÆÉËÁÃÉÑ \kbd{interactive} ÓÏÏÂÝÁÅÔ Ï ÔÏÍ, ÞÔÏ ÁÒÇÕÍÅÎÔ ÎÁÄÏ ÓÞÉÔÙ×ÁÔØ
+ÉÎÔÅÒÁËÔÉ×ÎÏ. äÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÎÁÂÅÒÉÔÅ \kbd{C-h f interactive}.
+
+\copyrightnotice
+
+%\end{multicols}
+
+\end{document}
+
+% arch-tag: 868a12f6-4339-4a14-a56e-4a3937277a9e
diff --git a/etc/tree-widget/default/close.png b/etc/tree-widget/default/close.png
new file mode 100644
index 00000000000..0725def3dee
--- /dev/null
+++ b/etc/tree-widget/default/close.png
Binary files differ
diff --git a/etc/tree-widget/default/close.xpm b/etc/tree-widget/default/close.xpm
new file mode 100644
index 00000000000..63a7930fe34
--- /dev/null
+++ b/etc/tree-widget/default/close.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *close[] = {
+/* width height num_colors chars_per_pixel */
+" 16 21 256 2",
+/* colors */
+"`` c #840000",
+"`. c #942929",
+"`# c #9c3131",
+"`a c #9c3939",
+"`b c #a54242",
+"`c c #a54a4a",
+"`d c #ad4a4a",
+"`e c #ad5252",
+"`f c #ad5a5a",
+"`g c None",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
+"`g`g`g`````.`````g`g`g`g`g`g`g`g",
+"`g`g`````.`#`a`````g`g`g`g`g`g`g",
+"`g`````.`#`a`a`b`````g`g`g`g`g`g",
+"`````.`#`a`a`b`c`e`````g`g`g`g`g",
+"```.`#`a`a`b`c`e`e`f```g`g`g`g`g",
+"`````a`a`b`c`e`e`f`````g`g`g`g`g",
+"`g`````b`c`e`e`f`````g`g`g`g`g`g",
+"`g`g`````e`e`f`````g`g`g`g`g`g`g",
+"`g`g`g`````f`````g`g`g`g`g`g`g`g",
+"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
+};
diff --git a/etc/tree-widget/default/empty.png b/etc/tree-widget/default/empty.png
new file mode 100644
index 00000000000..45f464836cc
--- /dev/null
+++ b/etc/tree-widget/default/empty.png
Binary files differ
diff --git a/etc/tree-widget/default/empty.xpm b/etc/tree-widget/default/empty.xpm
new file mode 100644
index 00000000000..6bb0a285dd8
--- /dev/null
+++ b/etc/tree-widget/default/empty.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *empty[] = {
+/* width height num_colors chars_per_pixel */
+" 16 21 256 2",
+/* colors */
+"`` c #848400",
+"`. c #949429",
+"`# c #9c9c31",
+"`a c #9c9c39",
+"`b c #a5a542",
+"`c c #a5a54a",
+"`d c #adad4a",
+"`e c #adad52",
+"`f c #adad5a",
+"`g c None",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
+"`g`g`g`````.`````g`g`g`g`g`g`g`g",
+"`g`g`````.`#`a`````g`g`g`g`g`g`g",
+"`g`````.`#`a`a`b`````g`g`g`g`g`g",
+"`````.`#`a`a`b`c`c`````g`g`g`g`g",
+"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
+"`````a`a`b`c`c`e`f`````g`g`g`g`g",
+"`g`````b`c`c`e`f`````g`g`g`g`g`g",
+"`g`g`````c`e`f`````g`g`g`g`g`g`g",
+"`g`g`g`````f`````g`g`g`g`g`g`g`g",
+"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
+};
diff --git a/etc/tree-widget/default/end-guide.png b/etc/tree-widget/default/end-guide.png
new file mode 100644
index 00000000000..908048c4293
--- /dev/null
+++ b/etc/tree-widget/default/end-guide.png
Binary files differ
diff --git a/etc/tree-widget/default/end-guide.xpm b/etc/tree-widget/default/end-guide.xpm
new file mode 100644
index 00000000000..8e5d727b440
--- /dev/null
+++ b/etc/tree-widget/default/end-guide.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *end-guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 21 256 2",
+/* colors */
+"`` c #000000",
+"`. c #a5a5c6",
+"`# c #ada5c6",
+"`a c #cecee7",
+"`b c #ceceff",
+"`c c None",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #808000",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c",
+"`c`c`c`c`c`c"
+};
diff --git a/etc/tree-widget/default/guide.png b/etc/tree-widget/default/guide.png
new file mode 100644
index 00000000000..c93b71ef073
--- /dev/null
+++ b/etc/tree-widget/default/guide.png
Binary files differ
diff --git a/etc/tree-widget/default/guide.xpm b/etc/tree-widget/default/guide.xpm
new file mode 100644
index 00000000000..56006ee48e0
--- /dev/null
+++ b/etc/tree-widget/default/guide.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 21 256 2",
+/* colors */
+"`` c #000000",
+"`. c #a5a5c6",
+"`# c #ada5c6",
+"`a c #cecee7",
+"`b c #ceceff",
+"`c c None",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #808000",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#",
+"`c`c`c`c`c`#"
+};
diff --git a/etc/tree-widget/default/handle.png b/etc/tree-widget/default/handle.png
new file mode 100644
index 00000000000..8411624adaa
--- /dev/null
+++ b/etc/tree-widget/default/handle.png
Binary files differ
diff --git a/etc/tree-widget/default/handle.xpm b/etc/tree-widget/default/handle.xpm
new file mode 100644
index 00000000000..11f618b4b25
--- /dev/null
+++ b/etc/tree-widget/default/handle.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *handle[] = {
+/* width height num_colors chars_per_pixel */
+" 10 21 256 2",
+/* colors */
+"`` c #000000",
+"`. c #a5a5c6",
+"`# c #ada5c6",
+"`a c #cecee7",
+"`b c #ceceff",
+"`c c None",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #808000",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`#`#`#`#`#`#`#`#`#`#",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c"
+};
diff --git a/etc/tree-widget/default/leaf.png b/etc/tree-widget/default/leaf.png
new file mode 100644
index 00000000000..0408f38bd5e
--- /dev/null
+++ b/etc/tree-widget/default/leaf.png
Binary files differ
diff --git a/etc/tree-widget/default/leaf.xpm b/etc/tree-widget/default/leaf.xpm
new file mode 100644
index 00000000000..8b5db38784a
--- /dev/null
+++ b/etc/tree-widget/default/leaf.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *leaf[] = {
+/* width height num_colors chars_per_pixel */
+" 16 21 256 2",
+/* colors */
+"`` c #424242",
+"`. c #737373",
+"`# c #7b7b7b",
+"`a c #848484",
+"`b c #8c8c8c",
+"`c c #949494",
+"`d c #9c9c9c",
+"`e c #a5a5a5",
+"`f c None",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f```````````f`f`f`f`f`f`f`f",
+"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
+"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
+"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
+"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
+"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
+"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
+"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
+"`f`f`f```````````f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
+"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
+};
diff --git a/etc/tree-widget/default/no-guide.png b/etc/tree-widget/default/no-guide.png
new file mode 100644
index 00000000000..dc4292ea98f
--- /dev/null
+++ b/etc/tree-widget/default/no-guide.png
Binary files differ
diff --git a/etc/tree-widget/default/no-guide.xpm b/etc/tree-widget/default/no-guide.xpm
new file mode 100644
index 00000000000..82729cf59b0
--- /dev/null
+++ b/etc/tree-widget/default/no-guide.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *no-guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 21 256 2",
+/* colors */
+"`` c #000000",
+"`. c #84849c",
+"`# c #8c8ca5",
+"`a c #a5a5c6",
+"`b c #ada5c6",
+"`c c #b5b5ce",
+"`d c #cecee7",
+"`e c #ceceff",
+"`f c #e7e7ff",
+"`g c None",
+"`h c #808000",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g",
+"`g`g`g`g`g`g"
+};
diff --git a/etc/tree-widget/default/no-handle.png b/etc/tree-widget/default/no-handle.png
new file mode 100644
index 00000000000..00de3c09c26
--- /dev/null
+++ b/etc/tree-widget/default/no-handle.png
Binary files differ
diff --git a/etc/tree-widget/default/no-handle.xpm b/etc/tree-widget/default/no-handle.xpm
new file mode 100644
index 00000000000..7ce048c91ea
--- /dev/null
+++ b/etc/tree-widget/default/no-handle.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *no-handle[] = {
+/* width height num_colors chars_per_pixel */
+" 10 21 256 2",
+/* colors */
+"`` c #000000",
+"`. c #84849c",
+"`# c #8c8ca5",
+"`a c #a5a5c6",
+"`b c #ada5c6",
+"`c c #b5b5ce",
+"`d c #cecee7",
+"`e c #ceceff",
+"`f c #e7e7ff",
+"`g c None",
+"`h c #808000",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g",
+"`g`g`g`g`g`g`g`g`g`g"
+};
diff --git a/etc/tree-widget/default/open.png b/etc/tree-widget/default/open.png
new file mode 100644
index 00000000000..d234ecadf39
--- /dev/null
+++ b/etc/tree-widget/default/open.png
Binary files differ
diff --git a/etc/tree-widget/default/open.xpm b/etc/tree-widget/default/open.xpm
new file mode 100644
index 00000000000..4c5c7b065b8
--- /dev/null
+++ b/etc/tree-widget/default/open.xpm
@@ -0,0 +1,284 @@
+/* XPM */
+static char *open[] = {
+/* width height num_colors chars_per_pixel */
+" 16 21 256 2",
+/* colors */
+"`` c #004200",
+"`. c #296329",
+"`# c #316331",
+"`a c #316b31",
+"`b c #396b39",
+"`c c #427342",
+"`d c #4a734a",
+"`e c #4a7b4a",
+"`f c #528452",
+"`g c #5a845a",
+"`h c #a5a5c6",
+"`i c None",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i```````i`i`i`i`i`i`i`i`i",
+"`i`i`i`````.`````i`i`i`i`i`i`i`i",
+"`i`i`````.`#`b`````i`i`i`i`i`i`i",
+"`i`````.`#`b`b`c`````i`i`i`i`i`i",
+"`````.`#`b`b`c`d`e`````i`i`i`i`i",
+"```.`#`b`b`c`d`e`f`g```i`i`i`i`i",
+"`````b`b`c`d`e`f`g`````i`i`i`i`i",
+"`i`````c`d`e`f`g`````i`i`i`i`i`i",
+"`i`i`````e`f`g`````i`i`i`i`i`i`i",
+"`i`i`i`````g`````i`i`i`i`i`i`i`i",
+"`i`i`i`i```````i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`h`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`h`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`h`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`h`i`i`i`i`i`i`i`i`i`i",
+"`i`i`i`i`i`h`i`i`i`i`i`i`i`i`i`i"
+};
diff --git a/etc/tree-widget/folder/close.png b/etc/tree-widget/folder/close.png
new file mode 100644
index 00000000000..f840ba89a4e
--- /dev/null
+++ b/etc/tree-widget/folder/close.png
Binary files differ
diff --git a/etc/tree-widget/folder/close.xpm b/etc/tree-widget/folder/close.xpm
new file mode 100644
index 00000000000..1bd40ae6e94
--- /dev/null
+++ b/etc/tree-widget/folder/close.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *close[] = {
+/* width height num_colors chars_per_pixel */
+" 16 22 256 2",
+/* colors */
+"`` c #848400",
+"`. c #9c9c29",
+"`# c #a5a531",
+"`a c #adad39",
+"`b c #adad42",
+"`c c #b5b54a",
+"`d c #b5b552",
+"`e c #bdbd52",
+"`f c #bdbd5a",
+"`g c #c6c663",
+"`h c #c6c66b",
+"`i c #cece6b",
+"`j c #cece73",
+"`k c #dede8c",
+"`l c #e7e794",
+"`m c #e7e79c",
+"`n c #efef9c",
+"`o c None",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`````````o`o`o`o`o`o`o`o`o`o`o",
+"```m`l`l`k```````````````o`o`o`o",
+"```````````a`b`b`c`c`d`f```o`o`o",
+"```.`#`#`a`b`b`c`c`d`f`f```o`o`o",
+"```#`#`a`b`b`c`c`d`f`f`f```o`o`o",
+"```#`a`b`b`c`c`d`f`f`f`g```o`o`o",
+"```a`b`b`c`c`d`f`f`f`g`h```o`o`o",
+"```b`b`c`c`d`f`f`f`g`h`h```o`o`o",
+"```b`c`c`d`f`f`f`g`h`h`j```o`o`o",
+"```````````````````````````o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o",
+"`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o"
+};
diff --git a/etc/tree-widget/folder/empty.png b/etc/tree-widget/folder/empty.png
new file mode 100644
index 00000000000..712af9747c6
--- /dev/null
+++ b/etc/tree-widget/folder/empty.png
Binary files differ
diff --git a/etc/tree-widget/folder/empty.xpm b/etc/tree-widget/folder/empty.xpm
new file mode 100644
index 00000000000..df92fd22008
--- /dev/null
+++ b/etc/tree-widget/folder/empty.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *empty[] = {
+/* width height num_colors chars_per_pixel */
+" 16 22 256 2",
+/* colors */
+"`` c #424242",
+"`. c #6b6b6b",
+"`# c #737373",
+"`a c #7b7b7b",
+"`b c #848484",
+"`c c #8c8c8c",
+"`d c #949494",
+"`e c #9c9c9c",
+"`f c #a5a5a5",
+"`g c #adadad",
+"`h c None",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`````````h`h`h`h`h`h`h`h`h`h`h",
+"```f`f`f`e```````````h`h`h`h`h`h",
+"```f`f`e`e`e`d`d`c`c```h`h`h`h`h",
+"```f`e`````````````````````h`h`h",
+"```e```.`.`.`#`#`#`a`a`b`b```h`h",
+"```e```.`.`#`#`#`a`a`b`b```h`h`h",
+"`````.`.`#`#`#`a`a`b`b`b```h`h`h",
+"`````.`#`#`#`a`a`b`b`b```h`h`h`h",
+"```.`#`#`#`a`a`b`b`b`c```h`h`h`h",
+"```````````````````````h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h"
+};
diff --git a/etc/tree-widget/folder/end-guide.png b/etc/tree-widget/folder/end-guide.png
new file mode 100644
index 00000000000..994c8bbf10a
--- /dev/null
+++ b/etc/tree-widget/folder/end-guide.png
Binary files differ
diff --git a/etc/tree-widget/folder/end-guide.xpm b/etc/tree-widget/folder/end-guide.xpm
new file mode 100644
index 00000000000..3cdb2332c55
--- /dev/null
+++ b/etc/tree-widget/folder/end-guide.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *end-guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 22 256 2",
+/* colors */
+"`` c #ada5c6",
+"`. c None",
+"`# c #ffffff",
+"`a c #ffffff",
+"`b c #ffffff",
+"`c c #ffffff",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.`."
+};
diff --git a/etc/tree-widget/folder/guide.png b/etc/tree-widget/folder/guide.png
new file mode 100644
index 00000000000..5a4d4f0b751
--- /dev/null
+++ b/etc/tree-widget/folder/guide.png
Binary files differ
diff --git a/etc/tree-widget/folder/guide.xpm b/etc/tree-widget/folder/guide.xpm
new file mode 100644
index 00000000000..5d23ef64eeb
--- /dev/null
+++ b/etc/tree-widget/folder/guide.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 22 256 2",
+/* colors */
+"`` c #ada5c6",
+"`. c None",
+"`# c #ffffff",
+"`a c #ffffff",
+"`b c #ffffff",
+"`c c #ffffff",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``",
+"`.`.`.`.`.`.",
+"`.`.`.`.`.``"
+};
diff --git a/etc/tree-widget/folder/handle.png b/etc/tree-widget/folder/handle.png
new file mode 100644
index 00000000000..87058b7cc4d
--- /dev/null
+++ b/etc/tree-widget/folder/handle.png
Binary files differ
diff --git a/etc/tree-widget/folder/handle.xpm b/etc/tree-widget/folder/handle.xpm
new file mode 100644
index 00000000000..40d0ca417e9
--- /dev/null
+++ b/etc/tree-widget/folder/handle.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *handle[] = {
+/* width height num_colors chars_per_pixel */
+" 10 22 256 2",
+/* colors */
+"`` c #000000",
+"`. c #a5a5c6",
+"`# c #ada5c6",
+"`a c #cecee7",
+"`b c #ceceff",
+"`c c None",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #808000",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`#`c`#`c`#`c`#`c`#",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c"
+};
diff --git a/etc/tree-widget/folder/leaf.png b/etc/tree-widget/folder/leaf.png
new file mode 100644
index 00000000000..6abb6036f52
--- /dev/null
+++ b/etc/tree-widget/folder/leaf.png
Binary files differ
diff --git a/etc/tree-widget/folder/leaf.xpm b/etc/tree-widget/folder/leaf.xpm
new file mode 100644
index 00000000000..c353cb2cdf8
--- /dev/null
+++ b/etc/tree-widget/folder/leaf.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *leaf[] = {
+/* width height num_colors chars_per_pixel */
+" 16 22 256 2",
+/* colors */
+"`` c #000000",
+"`. c #424242",
+"`# c #848484",
+"`a c #949494",
+"`b c #9c9c9c",
+"`c c #a5a5a5",
+"`d c #adadad",
+"`e c #b5b5b5",
+"`f c #bdbdbd",
+"`g c #c6c6c6",
+"`h c None",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h",
+"`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h",
+"`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h",
+"`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h",
+"`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h",
+"`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h",
+"`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h",
+"`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h",
+"`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h",
+"`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h",
+"`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h",
+"`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h",
+"`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h"
+};
diff --git a/etc/tree-widget/folder/no-guide.png b/etc/tree-widget/folder/no-guide.png
new file mode 100644
index 00000000000..5705cc83cf4
--- /dev/null
+++ b/etc/tree-widget/folder/no-guide.png
Binary files differ
diff --git a/etc/tree-widget/folder/no-guide.xpm b/etc/tree-widget/folder/no-guide.xpm
new file mode 100644
index 00000000000..2d3e1e7c099
--- /dev/null
+++ b/etc/tree-widget/folder/no-guide.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *no-guide[] = {
+/* width height num_colors chars_per_pixel */
+" 6 22 256 2",
+/* colors */
+"`` c None",
+"`. c #ffffff",
+"`# c #ffffff",
+"`a c #ffffff",
+"`b c #ffffff",
+"`c c #ffffff",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````",
+"````````````"
+};
diff --git a/etc/tree-widget/folder/no-handle.png b/etc/tree-widget/folder/no-handle.png
new file mode 100644
index 00000000000..c335dd938ac
--- /dev/null
+++ b/etc/tree-widget/folder/no-handle.png
Binary files differ
diff --git a/etc/tree-widget/folder/no-handle.xpm b/etc/tree-widget/folder/no-handle.xpm
new file mode 100644
index 00000000000..fa3e4c5874b
--- /dev/null
+++ b/etc/tree-widget/folder/no-handle.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *no-handle[] = {
+/* width height num_colors chars_per_pixel */
+" 10 22 256 2",
+/* colors */
+"`` c #000000",
+"`. c #a5a5c6",
+"`# c #ada5c6",
+"`a c #cecee7",
+"`b c #ceceff",
+"`c c None",
+"`d c #ffffff",
+"`e c #ffffff",
+"`f c #ffffff",
+"`g c #ffffff",
+"`h c #ffffff",
+"`i c #ffffff",
+"`j c #ffffff",
+"`k c #ffffff",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #808000",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c",
+"`c`c`c`c`c`c`c`c`c`c"
+};
diff --git a/etc/tree-widget/folder/open.png b/etc/tree-widget/folder/open.png
new file mode 100644
index 00000000000..4237d3aa648
--- /dev/null
+++ b/etc/tree-widget/folder/open.png
Binary files differ
diff --git a/etc/tree-widget/folder/open.xpm b/etc/tree-widget/folder/open.xpm
new file mode 100644
index 00000000000..720f79fa94b
--- /dev/null
+++ b/etc/tree-widget/folder/open.xpm
@@ -0,0 +1,285 @@
+/* XPM */
+static char *open[] = {
+/* width height num_colors chars_per_pixel */
+" 16 22 256 2",
+/* colors */
+"`` c #848400",
+"`. c #a5a5c6",
+"`# c #adad39",
+"`a c #adad42",
+"`b c #b5b54a",
+"`c c #bdbd52",
+"`d c #bdbd5a",
+"`e c #c6c663",
+"`f c #c6c66b",
+"`g c #cece6b",
+"`h c #cece73",
+"`i c #cece7b",
+"`j c #d6d67b",
+"`k c None",
+"`l c #ffffff",
+"`m c #ffffff",
+"`n c #ffffff",
+"`o c #ffffff",
+"`p c #ffffff",
+"`q c #ffffff",
+"`r c #ffffff",
+"`s c #ffffff",
+"`t c #ffffff",
+"`u c #ffffff",
+"`v c #ffffff",
+"`w c #ffffff",
+"`x c #ffffff",
+"`y c #ffffff",
+"`z c #ffffff",
+"`A c #ffffff",
+"`B c #ffffff",
+"`C c #ffffff",
+"`D c #ffffff",
+"`E c #ffffff",
+"`F c #ffffff",
+"`G c #ffffff",
+"`H c #ffffff",
+"`I c #ffffff",
+"`J c #ffffff",
+"`K c #ffffff",
+"`L c #ffffff",
+"`M c #ffffff",
+"`N c #ffffff",
+"`O c #ffffff",
+"`P c #ffffff",
+"`Q c #ffffff",
+"`R c #ffffff",
+"`S c #ffffff",
+"`T c #ffffff",
+"`U c #ffffff",
+"`V c #ffffff",
+"`W c #ffffff",
+"`X c #ffffff",
+"`Y c #ffffff",
+"`Z c #ffffff",
+"`0 c #ffffff",
+"`1 c #ffffff",
+"`2 c #ffffff",
+"`3 c #ffffff",
+"`4 c #ffffff",
+"`5 c #ffffff",
+"`6 c #ffffff",
+"`7 c #ffffff",
+"`8 c #ffffff",
+".` c #ffffff",
+".. c #ffffff",
+".# c #ffffff",
+".a c #ffffff",
+".b c #ffffff",
+".c c #ffffff",
+".d c #ffffff",
+".e c #ffffff",
+".f c #ffffff",
+".g c #ffffff",
+".h c #ffffff",
+".i c #ffffff",
+".j c #ffffff",
+".k c #ffffff",
+".l c #ffffff",
+".m c #ffffff",
+".n c #ffffff",
+".o c #ffffff",
+".p c #ffffff",
+".q c #ffffff",
+".r c #ffffff",
+".s c #ffffff",
+".t c #ffffff",
+".u c #ffffff",
+".v c #ffffff",
+".w c #ffffff",
+".x c #ffffff",
+".y c #ffffff",
+".z c #ffffff",
+".A c #ffffff",
+".B c #ffffff",
+".C c #ffffff",
+".D c #ffffff",
+".E c #ffffff",
+".F c #ffffff",
+".G c #ffffff",
+".H c #ffffff",
+".I c #ffffff",
+".J c #ffffff",
+".K c #ffffff",
+".L c #ffffff",
+".M c #ffffff",
+".N c #ffffff",
+".O c #ffffff",
+".P c #ffffff",
+".Q c #ffffff",
+".R c #ffffff",
+".S c #ffffff",
+".T c #ffffff",
+".U c #ffffff",
+".V c #ffffff",
+".W c #ffffff",
+".X c #ffffff",
+".Y c #ffffff",
+".Z c #ffffff",
+".0 c #ffffff",
+".1 c #ffffff",
+".2 c #ffffff",
+".3 c #ffffff",
+".4 c #ffffff",
+".5 c #ffffff",
+".6 c #ffffff",
+".7 c #ffffff",
+".8 c #ffffff",
+"#` c #ffffff",
+"#. c #ffffff",
+"## c #ffffff",
+"#a c #ffffff",
+"#b c #ffffff",
+"#c c #ffffff",
+"#d c #ffffff",
+"#e c #ffffff",
+"#f c #ffffff",
+"#g c #ffffff",
+"#h c #ffffff",
+"#i c #ffffff",
+"#j c #ffffff",
+"#k c #ffffff",
+"#l c #ffffff",
+"#m c #ffffff",
+"#n c #ffffff",
+"#o c #ffffff",
+"#p c #ffffff",
+"#q c #ffffff",
+"#r c #ffffff",
+"#s c #ffffff",
+"#t c #ffffff",
+"#u c #ffffff",
+"#v c #ffffff",
+"#w c #ffffff",
+"#x c #ffffff",
+"#y c #ffffff",
+"#z c #ffffff",
+"#A c #ffffff",
+"#B c #ffffff",
+"#C c #ffffff",
+"#D c #ffffff",
+"#E c #ffffff",
+"#F c #ffffff",
+"#G c #ffffff",
+"#H c #ffffff",
+"#I c #ffffff",
+"#J c #ffffff",
+"#K c #ffffff",
+"#L c #ffffff",
+"#M c #ffffff",
+"#N c #ffffff",
+"#O c #ffffff",
+"#P c #ffffff",
+"#Q c #ffffff",
+"#R c #ffffff",
+"#S c #ffffff",
+"#T c #ffffff",
+"#U c #ffffff",
+"#V c #ffffff",
+"#W c #ffffff",
+"#X c #ffffff",
+"#Y c #ffffff",
+"#Z c #ffffff",
+"#0 c #ffffff",
+"#1 c #ffffff",
+"#2 c #ffffff",
+"#3 c #ffffff",
+"#4 c #ffffff",
+"#5 c #ffffff",
+"#6 c #ffffff",
+"#7 c #ffffff",
+"#8 c #ffffff",
+"a` c #ffffff",
+"a. c #ffffff",
+"a# c #ffffff",
+"aa c #ffffff",
+"ab c #ffffff",
+"ac c #ffffff",
+"ad c #ffffff",
+"ae c #ffffff",
+"af c #ffffff",
+"ag c #ffffff",
+"ah c #ffffff",
+"ai c #ffffff",
+"aj c #ffffff",
+"ak c #ffffff",
+"al c #ffffff",
+"am c #ffffff",
+"an c #ffffff",
+"ao c #ffffff",
+"ap c #ffffff",
+"aq c #ffffff",
+"ar c #ffffff",
+"as c #ffffff",
+"at c #ffffff",
+"au c #ffffff",
+"av c #ffffff",
+"aw c #ffffff",
+"ax c #ffffff",
+"ay c #ffffff",
+"az c #ffffff",
+"aA c #ffffff",
+"aB c #ffffff",
+"aC c #ffffff",
+"aD c #ffffff",
+"aE c #ffffff",
+"aF c #ffffff",
+"aG c #ffffff",
+"aH c #ffffff",
+"aI c #ffffff",
+"aJ c #ffffff",
+"aK c #ffffff",
+"aL c #ffffff",
+"aM c #ffffff",
+"aN c #ffffff",
+"aO c #ffffff",
+"aP c #ffffff",
+"aQ c #ffffff",
+"aR c #ffffff",
+"aS c #ffffff",
+"aT c #ffffff",
+"aU c #ffffff",
+"aV c #ffffff",
+"aW c #ffffff",
+"aX c #ffffff",
+"aY c #ffffff",
+"aZ c #ffffff",
+"a0 c #ffffff",
+"a1 c #ffffff",
+"a2 c #ffffff",
+"a3 c #ffffff",
+"a4 c #ffffff",
+"a5 c #ffffff",
+"a6 c #ffffff",
+"a7 c #ffffff",
+"a8 c #ffffff",
+/* pixels */
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`````````k`k`k`k`k`k`k`k`k`k`k",
+"```j`i`i`h```````````k`k`k`k`k`k",
+"```i`i`h`h`f`f`d`d`c```k`k`k`k`k",
+"```i`h`````````````````````k`k`k",
+"```h```#`a`a`b`b`c`d`d`e`e```k`k",
+"```h```a`a`b`b`c`d`d`e`e```k`k`k",
+"`````a`a`b`b`c`d`d`e`e`f```k`k`k",
+"`````a`b`b`c`d`d`e`e`f```k`k`k`k",
+"```a`b`b`c`d`d`e`e`f`g```k`k`k`k",
+"```````````````````````k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k",
+"`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k"
+};
diff --git a/leim/.gitignore b/leim/.gitignore
index aea98a23838..7c52fa3961a 100644
--- a/leim/.gitignore
+++ b/leim/.gitignore
@@ -1,2 +1,4 @@
-leim-list.el
Makefile
+changed.misc
+changed.tit
+leim-list.el
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 4e76bdcdb6d..1db2b9dcb0a 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,18 @@
+2004-05-17 Werner Lemberg <wl@gnu.org>
+
+ * quail/sisheng.el: New file.
+
+2004-05-17 Kenichi Handa <handa@m17n.org>
+
+ * Makefile.in (OTHERS): Add ${srcdir}/quail/sisheng.elc.
+
+2004-05-11 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.in (leim-list.el): Move commands to convert TIT and
+ MISC dictionaries from here...
+ (changed.tit, changed.misc): ...to here. Remove the (now
+ unneeded) test of the contents of changed.* files.
+
2004-05-10 Andreas Schwab <schwab@suse.de>
* Makefile.in (all): Readd dependency on ${WORLD} so that lisp
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 3f5e61b98a3..ec4497c0497 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -121,7 +121,8 @@ OTHERS= \
${srcdir}/quail/ethiopic.elc \
${srcdir}/quail/ipa.elc \
${srcdir}/quail/hebrew.elc \
- ${srcdir}/quail/georgian.elc
+ ${srcdir}/quail/georgian.elc \
+ ${srcdir}/quail/sisheng.elc
MISC= \
quail/tsang-b5.elc \
@@ -174,7 +175,9 @@ TIT-SOURCES= \
${srcdir}/CXTERM-DIC/ZOZY.tit
changed.tit: ${TIT-SOURCES}
- echo "0" > $@
+ ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
+ -f batch-titdic-convert -dir quail ${srcdir}/CXTERM-DIC; \
+ echo "changed" > $@
MISC-SOURCES= \
${srcdir}/MISC-DIC/CTLau-b5.html \
@@ -185,19 +188,11 @@ MISC-SOURCES= \
${srcdir}/MISC-DIC/ziranma.cin
changed.misc: ${MISC-SOURCES}
- echo "0" > $@
+ ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
+ -f batch-miscdic-convert -dir quail ${srcdir}/MISC-DIC; \
+ echo "changed" > $@
leim-list.el: ${SUBDIRS} ${NON-TIT-MISC} changed.tit changed.misc
- if [ `(cat changed.tit)` = 0 ] ; then \
- ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
- -f batch-titdic-convert -dir quail ${srcdir}/CXTERM-DIC; \
- echo "1" > changed.tit; \
- else true; fi
- if [ `(cat changed.misc)` = 0 ] ; then \
- ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
- -f batch-miscdic-convert -dir quail ${srcdir}/MISC-DIC; \
- echo "1" > changed.misc; \
- else true; fi
${RUN-EMACS} -l ${buildlisppath}/international/quail \
-f batch-byte-compile-if-not-done ${TIT-MISC:.elc=.el}
if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \
diff --git a/leim/quail/sisheng.el b/leim/quail/sisheng.el
new file mode 100644
index 00000000000..ea65646e078
--- /dev/null
+++ b/leim/quail/sisheng.el
@@ -0,0 +1,292 @@
+;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration
+
+;; Copyright (C) 2004 Free Software Foundation, Inc.
+
+;; Author: Werner LEMBERG <wl@gnu.org>
+
+;; Keywords: multilingual, input method, Chinese, pinyin, sisheng
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'quail)
+
+(defconst sisheng-regexp
+ "[ÄÄ“Ä«ÅÅ«Ç–]\\|üē")
+
+;; First element is the key,
+;; second element is the vowel used for the input sequence,
+;; last four elements are the resulting tones.
+;;
+(defconst sisheng-vowel-table
+ '(("Ä" "a" "Ä" "á" "ÇŽ" "à")
+ ("ē" "e" "ē" "é" "ě" "è")
+ ("Ä«" "i" "Ä«" "í" "Ç" "ì")
+ ("Å" "o" "Å" "ó" "Ç’" "ò")
+ ("ū" "u" "ū" "ú" "ǔ" "ù")
+ ("ǖ" "v" "ǖ" "ǘ" "ǚ" "ǜ")
+ ("üē" "ve" "üē" "üé" "üě" "üè")))
+
+
+;; All possible syllables in Mandarin Chinese, presented in the first
+;; tone. Note that make-sisheng-rules always constructs rules for all
+;; four tones even if some of those tones aren't used in Mandarin.
+;;
+(defconst sisheng-syllable-table
+ '("Ä" "Äi" "Än" "Äng" "Äo"
+
+ "bÄ" "bÄi" "bÄn" "bÄng" "bÄo"
+ "bēi" "bēn" "bēng"
+ "bÄ«" "biÄn" "biÄo" "biÄ“" "bÄ«n" "bÄ«ng"
+ "bÅ"
+ "bū"
+
+ "cÄ" "cÄi" "cÄn" "cÄng" "cÄo"
+ "cē" "cēn" "cēng"
+ "cī"
+ "cÅng" "cÅu"
+ "cÅ«" "cuÄn" "cuÄ«" "cÅ«n" "cuÅ"
+
+ "chÄ" "chÄi" "chÄn" "chÄng" "chÄo"
+ "chē" "chēn" "chēng"
+ "chī"
+ "chÅng" "chÅu"
+ "chÅ«" "chuÄ" "chuÄi" "chuÄn" "chuÄng" "chuÄ«" "chÅ«n" "chuÅ"
+
+ "dÄ" "dÄi" "dÄn" "dÄng" "dÄo"
+ "dē" "dēi" "dēn" "dēng"
+ "dÄ«" "diÄn" "diÄo" "diÄ“" "dÄ«ng" "diÅ«"
+ "dÅng" "dÅu"
+ "dÅ«" "duÄn" "duÄ«" "dÅ«n" "duÅ"
+
+ "Ä“" "Ä“i" "Ä“n" "Ä“ng" "Ä“r"
+
+ "fÄ" "fÄn" "fÄng"
+ "fēi" "fēn" "fēng"
+ "fiÄo"
+ "fÅ" "fÅu"
+ "fū"
+
+ "gÄ" "gÄi" "gÄn" "gÄng" "gÄo"
+ "gē" "gēi" "gēn" "gēng"
+ "gÅng" "gÅu"
+ "gÅ«" "guÄ" "guÄi" "guÄn" "guÄng" "guÄ«" "gÅ«n" "guÅ"
+
+ "hÄ" "hÄi" "hÄn" "hÄng" "hÄo"
+ "hē" "hēi" "hēn" "hēng"
+ "hÅng" "hÅu"
+ "hÅ«" "huÄ" "huÄi" "huÄn" "huÄng" "huÄ«" "hÅ«n" "huÅ"
+
+ "jÄ«" "jiÄ" "jiÄn" "jiÄng" "jiÄo" "jiÄ“" "jÄ«n" "jÄ«ng" "jiÅng" "jiÅ«"
+ "jÅ«" "juÄn" "juÄ“" "jÅ«n"
+
+ "kÄ" "kÄi" "kÄn" "kÄng" "kÄo"
+ "kē" "kēi" "kēn" "kēng"
+ "kÅng" "kÅu"
+ "kÅ«" "kuÄ" "kuÄi" "kuÄn" "kuÄng" "kuÄ«" "kÅ«n" "kuÅ"
+
+ "lÄ" "lÄi" "lÄn" "lÄng" "lÄo"
+ "lē" "lēi" "lēng"
+ "lÄ«" "liÄ" "liÄn" "liÄng" "liÄo" "liÄ“" "lÄ«n" "lÄ«ng" "liÅ«"
+ "lÅng" "lÅu"
+ "lÅ«" "luÄn" "lÅ«n" "luÅ"
+ "lǖ" "lüē"
+
+ "mÄ" "mÄi" "mÄn" "mÄng" "mÄo"
+ "mē" "mēi" "mēn" "mēng"
+ "mÄ«" "miÄn" "miÄo" "miÄ“" "mÄ«n" "mÄ«ng" "miÅ«"
+ "mÅ" "mÅu"
+ "mū"
+
+ "nÄ" "nÄi" "nÄn" "nÄng" "nÄo"
+ "nē" "nēi" "nēn" "nēng"
+ "nÄ«" "niÄn" "niÄng" "niÄo" "niÄ“" "nÄ«n" "nÄ«ng" "niÅ«"
+ "nÅng" "nÅu"
+ "nÅ«" "nuÄn" "nuÅ"
+ "nǖ" "nüē"
+
+ "Å" "Åu"
+
+ "pÄ" "pÄi" "pÄn" "pÄng" "pÄo"
+ "pēi" "pēn" "pēng"
+ "pÄ«" "piÄn" "piÄo" "piÄ“" "pÄ«n" "pÄ«ng"
+ "pÅ" "pÅu"
+ "pū"
+
+ "qÄ«" "qiÄ" "qiÄn" "qiÄng" "qiÄo" "qiÄ“" "qÄ«n" "qÄ«ng" "qiÅng" "qiÅ«"
+ "qÅ«" "quÄn" "quÄ“" "qÅ«n"
+
+ "rÄn" "rÄng" "rÄo"
+ "rē" "rēn" "rēng"
+ "rī"
+ "rÅng" "rÅu"
+ "rÅ«" "ruÄ" "ruÄn" "ruÄ«" "rÅ«n" "ruÅ"
+
+ "sÄ" "sÄi" "sÄn" "sÄng" "sÄo"
+ "sē" "sēn" "sēng"
+ "sī"
+ "sÅng" "sÅu"
+ "sÅ«" "suÄn" "suÄ«" "sÅ«n" "suÅ"
+
+ "shÄ" "shÄi" "shÄn" "shÄng" "shÄo"
+ "shē" "shēi" "shēn" "shēng"
+ "shī"
+ "shÅu"
+ "shÅ«" "shuÄ" "shuÄi" "shuÄn" "shuÄng" "shuÄ«" "shÅ«n" "shuÅ"
+
+ "tÄ" "tÄi" "tÄn" "tÄng" "tÄo"
+ "tē" "tēi" "tēng"
+ "tÄ«" "tiÄn" "tiÄo" "tiÄ“" "tÄ«ng"
+ "tÅng" "tÅu"
+ "tÅ«" "tuÄn" "tuÄ«" "tÅ«n" "tuÅ"
+
+ "wÄ" "wÄi" "wÄn" "wÄng"
+ "wēi" "wēn" "wēng"
+ "wÅ"
+ "wū"
+
+ "xÄ«" "xiÄ" "xiÄn" "xiÄng" "xiÄo" "xiÄ“" "xÄ«n" "xÄ«ng" "xiÅng" "xiÅ«"
+ "xÅ«" "xuÄn" "xuÄ“" "xÅ«n"
+
+ "yÄ" "yÄn" "yÄng" "yÄo"
+ "yē"
+ "yī" "yīn" "yīng"
+ "yÅ" "yÅng" "yÅu"
+ "yÅ«" "yuÄn" "yuÄ“" "yÅ«n"
+
+ "zÄ" "zÄi" "zÄn" "zÄng" "zÄo"
+ "zē" "zēi" "zēn" "zēng"
+ "zī"
+ "zÅng" "zÅu"
+ "zÅ«" "zuÄn" "zuÄ«" "zÅ«n" "zuÅ"
+
+ "zhÄ" "zhÄi" "zhÄn" "zhÄng" "zhÄo"
+ "zhē" "zhēi" "zhēn" "zhēng"
+ "zhī"
+ "zhÅng" "zhÅu"
+ "zhÅ«" "zhuÄ" "zhuÄi" "zhuÄn" "zhuÄng" "zhuÄ«" "zhÅ«n" "zhuÅ"))
+
+;; This function converts e.g.
+;;
+;; "zhuÅ"
+;;
+;; into
+;;
+;; (("zhuo4" ["zhuò"])
+;; ("zhuo3" ["zhuÇ’"])
+;; ("zhuo2" ["zhuó"])
+;; ("zhuo1" ["zhuÅ"]))
+;;
+(defun quail-make-sisheng-rules (syllable)
+ (let ((case-fold-search t)
+ vowel-match
+ vowel-list
+ input-vowel
+ base-key
+ key
+ value
+ key-value-list
+ (i 1))
+ (string-match sisheng-regexp syllable)
+ (setq vowel-match (downcase (match-string 0 syllable)))
+ (setq vowel-list
+ (cdr (assoc-string vowel-match sisheng-vowel-table)))
+ (setq input-vowel (car vowel-list))
+ (setq base-key (replace-match input-vowel nil nil syllable))
+ (while (<= i 4)
+ (setq key (concat base-key (number-to-string i)))
+ (setq value (vector (replace-match (nth i vowel-list) nil nil syllable)))
+ (push (list key value) key-value-list)
+ (setq i (1+ i)))
+ key-value-list))
+
+;; Set up sisheng input method.
+;;
+(quail-define-package
+ "chinese-sisheng" ; name
+ "Chinese" ; language
+ "Çš" ; title
+ t ; guidance
+ "Sìshēng input method for pīnyīn transliteration of Chinese.
+
+Examples: shuang1 -> shuÄng
+ Lv3 -> LÇš
+ AN4 -> ÀN
+
+Use the fifth (unstressed) tone for syllables containing `ü'
+without a tone mark.
+
+Example: nve5 -> nüe
+" ; docstring
+ nil ; translation-keys
+ t ; forget-last-selection
+ nil ; deterministic
+ nil ; kbd-translate
+ nil ; show-layout
+ nil ; create-decode-map
+ nil ; maximum-shortest
+ nil ; overlay-plist
+ nil ; update-translation-function
+ nil ; conversion-keys
+ t ; simple
+ )
+
+;; Call quail-make-sisheng-rules for all syllables in sisheng-syllable-table.
+;;
+(let ((case-table-save (current-case-table))
+ sisheng-list)
+ (set-case-table (standard-case-table))
+ (dolist (syllable sisheng-syllable-table)
+ (setq sisheng-list
+ (append (quail-make-sisheng-rules syllable)
+ sisheng-list)))
+
+ (dolist (syllable sisheng-syllable-table)
+ (setq sisheng-list
+ (append (quail-make-sisheng-rules (upcase-initials syllable))
+ sisheng-list)))
+
+ (dolist (syllable sisheng-syllable-table)
+ (setq sisheng-list
+ (append (quail-make-sisheng-rules (upcase syllable))
+ sisheng-list)))
+
+ (eval `(quail-define-rules
+ ,@sisheng-list
+
+ ("lv5" ["lü"])
+ ("lve5" ["lüe"])
+ ("nv5" ["nü"])
+ ("nve5" ["nüe"])
+
+ ("Lv5" ["Lü"])
+ ("Lve5" ["Lüe"])
+ ("Nv5" ["Nü"])
+ ("Nve5" ["Nüe"])
+
+ ("LV5" ["LÜ"])
+ ("LVE5" ["LÃœE"])
+ ("NV5" ["NÜ"])
+ ("NVE5" ["NÃœE"])))
+ (set-case-table case-table-save))
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
+;;; arch-tag: 1fa6ba5f-6747-44bc-bf12-30628ad3e8ad
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index c841df23097..ac789eb3181 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
+2004-05-10 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * test-distrib.c (main): For failing cases, exit with `EXIT_FAILURE'.
+
2004-05-08 Jason Rumney <jasonr@gnu.org>
* makefile.w32-in (lisp1, lisp2): Split lisp to avoid long
diff --git a/lib-src/test-distrib.c b/lib-src/test-distrib.c
index 97e87695c7c..0333bd7d710 100644
--- a/lib-src/test-distrib.c
+++ b/lib-src/test-distrib.c
@@ -80,13 +80,13 @@ main (argc, argv)
if (argc != 2)
{
fprintf (stderr, "Usage: %s testfile\n", argv[0]);
- exit (2);
+ exit (EXIT_FAILURE);
}
fd = open (argv[1], O_RDONLY);
if (fd < 0)
{
perror (argv[1]);
- exit (2);
+ exit (EXIT_FAILURE);
}
if (cool_read (fd, buf, sizeof string1) != sizeof string1 ||
strcmp (buf, string1) ||
@@ -97,7 +97,7 @@ main (argc, argv)
Most likely this means that many nonprinting characters\n\
have been corrupted in the files of Emacs, and it will not work.\n",
argv[1]);
- exit (2);
+ exit (EXIT_FAILURE);
}
close (fd);
return EXIT_SUCCESS;
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7eb5e70b23a..8e2b74d5b60 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,222 @@
+2004-05-18 Masatake YAMATO <jet@gyve.org>
+
+ * wid-edit.el (widget-radio-button-notify): Don't pass `widget'
+ to widget-apply. :action method assumes 2 arguments, not 3.
+
+2004-05-17 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * progmodes/f90.el (f90-end-block-re, f90-start-block-re): New
+ constants.
+ (hs-special-modes-alist): Add an f90-mode entry.
+
+2004-05-17 Sam Steingold <sds@gnu.org>
+
+ * emacs-lisp/cl-indent.el (common-lisp-indent-function-1): Indent
+ "without-" forms just like "with-" and "do-". Use regexp-opt.
+
+2004-05-16 Kim F. Storm <storm@cua.dk>
+
+ * emacs-lisp/timer.el (timer-event-handler): Fix last change.
+
+2004-05-15 John Wiegley <johnw@newartisans.com>
+
+ * eshell/esh-io.el (eshell-get-target): whitespace changes.
+ (eshell-output-object-to-target): Improve output speed 20% by not
+ calling `eshell-stringify' if something is already known to be a
+ string.
+
+2004-05-15 Alex Ott <ott@jet.msk.su>
+
+ * textmodes/ispell.el (ispell-local-dictionary-alist): Add
+ windows-1251 to the choice of coding systems.
+ (ispell-dictionary-alist-6): Add support for "russianw.aff",
+ encoded in cp1251.
+
+2004-05-15 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * progmodes/compile.el (compilation-warning-face)
+ (compilation-info-face): Use min-colors.
+
+2004-05-15 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * toolbar/close.pbm, toolbar/close.xpm
+ * toolbar/copy.pbm, toolbar/copy.xpm
+ * toolbar/cut.pbm, toolbar/cut.xpm
+ * toolbar/help.pbm, toolbar/help.xpm
+ * toolbar/home.pbm, toolbar/home.xpm
+ * toolbar/index.pbm, toolbar/index.xpm
+ * toolbar/jump_to.pbm, toolbar/jump_to.xpm
+ * toolbar/left_arrow.pbm, toolbar/left_arrow.xpm
+ * toolbar/new.pbm, toolbar/new.xpm
+ * toolbar/open.pbm, toolbar/open.xpm
+ * toolbar/paste.pbm, toolbar/paste.xpm
+ * toolbar/preferences.pbm, toolbar/preferences.xpm
+ * toolbar/print.pbm, toolbar/print.xpm
+ * toolbar/right_arrow.pbm, toolbar/right_arrow.xpm
+ * toolbar/save.pbm, toolbar/save.xpm
+ * toolbar/saveas.pbm, toolbar/saveas.xpm
+ * toolbar/search.pbm, toolbar/search.xpm
+ * toolbar/spell.pbm, toolbar/spell.xpm
+ * toolbar/undo.pbm, toolbar/undo.xpm
+ * toolbar/up_arrow.pbm, toolbar/up_arrow.xpm: New icons from
+ GTK+ version 2.
+
+
+2004-05-15 Kim F. Storm <storm@cua.dk>
+
+ * emacs-lisp/timer.el (timer-activate): Add optional arg triggered-p.
+ Use it to set triggered-p element of timer.
+ (timer-event-handler): Set triggered-p element non-nil while running
+ the timer function.
+
+2004-05-14 David Ponce <david@dponce.com>
+
+ * tree-widget.el: New file.
+
+2004-05-13 Marcelo Toledo <marcelo@marcelotoledo.org>
+
+ * language/european.el ("Brazilian Portuguese"): Added support for
+ Brazilian Portuguese.
+
+2004-05-13 John Wiegley <johnw@newartisans.com>
+
+ * iswitchb.el (iswitchb-use-virtual-buffers): Only turn on
+ `recentf-mode' if this variable has been customized to t.
+
+ * eshell/esh-test.el (eshell-test): Call the function
+ `emacs-version' rather than trying to build a custom version
+ string.
+
+2004-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * net/telnet.el (telnet-mode): Use define-derived-mode.
+ Don't modify the global value of comint-prompt-regexp.
+
+2004-05-13 John Paul Wallington <jpw@gnu.org>
+
+ * version.el (emacs-version): Check for `gtk' feature before
+ `x-toolkit' feature.
+
+2004-05-13 Juanma Barranquero <lektu@terra.es>
+
+ * files.el (file-truename): Don't mention COUNTER and PREV-DIRS
+ arguments in the docstring, they're used only in recursive calls.
+
+ * help-fns.el (help-arg-highlighting-function)
+ (help-argument-name): Delete.
+ (help-default-arg-highlight): New function.
+ (help-do-arg-highlighting): Use it.
+
+2004-05-13 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * calendar/appt.el (appt-disp-window):
+ Use `calendar-set-mode-line' for a centered mode-line.
+
+2004-05-13 Takaaki Ota <Takaaki.Ota@am.sony.com> (tiny change)
+
+ * calendar/appt.el (appt-disp-window): Do not split window
+ excessively when `split-height-threshold' is low.
+
+2004-05-12 Nick Roberts <nickrob@gnu.org>
+
+ * progmodes/gud.el (gud-mode): Add gud-kill-buffer-hook to
+ kill-buffer-hook here and make it local.
+ (gud-kill-buffer-hook): Use kill-process for a sure kill.
+
+2004-05-12 Daniel Pfeiffer <occitan@esperanto.org>
+
+ * progmodes/compile.el (compilation-set-window-height):
+ Use save-excursion to protect against misplaced marker.
+
+2004-05-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * custom.el (defface): Document that type can have value gtk.
+
+ * faces.el (face-spec-set-match-display): Handle type gtk in display.
+
+2004-05-12 Kenichi Handa <handa@m17n.org>
+
+ * descr-text.el: Require quail at comile time.
+ (describe-char): If an input method is on and it supports the
+ character, show how to input it.
+
+ * international/quail.el (quail-install-decode-map): Accept a
+ char-table whose subtype is `quail-decode-map'.
+ (quail-store-decode-map-key, quail-gen-decode-map1)
+ (quail-gen-decode-map, quail-find-key1, quail-find-key)
+ (quail-show-key): New functions.
+
+2004-05-12 Juanma Barranquero <lektu@terra.es>
+
+ * generic.el (define-generic-mode): Remove redundant arglist info.
+
+ * help-fns.el (help-split-fundoc, help-add-fundoc-usage):
+ Make arguments match their use in docstring.
+ (help-arg-highlighting-function): New variable.
+ (help-argument-name): Mention it in the docstring.
+ (help-do-arg-highlight): Use it. Expand regexp to accept also
+ ARG-xxx and xxx-ARG references.
+
+2004-05-11 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change)
+
+ * mail/rfc2368.el (rfc2368-parse-mailto-url): Make the results of
+ parsing "mailto:addr1%2C%20addr2", "mailto:?to=addr1%2C%20addr2",
+ and "mailto:addr1?to=addr2" equal.
+
+2004-05-11 Alexander Pohoyda <alexander.pohoyda@gmx.net> (tiny change)
+
+ * man.el (Man-getpage-in-background): Use shell-file-name
+ and shell-command-switch variables instead of hard-coded values.
+
+2004-05-11 Eli Zaretskii <eliz@gnu.org>
+
+ * iimage.el: New file.
+
+2004-05-11 Juanma Barranquero <lektu@terra.es>
+
+ * custom.el (custom-initialize-default, defcustom): Typo in docstring.
+
+ * files.el (set-visited-file-name, file-expand-wildcards):
+ Fix docstring.
+
+2004-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp-mode.el (prin1-char): Use eventp.
+
+ * subr.el (eventp): Be more discriminating with integers.
+
+2004-05-10 Daniel Pfeiffer <occitan@esperanto.org>
+
+ * progmodes/compile.el (compile): Add universal prefix arg.
+ (compilation-error-regexp-alist-alist): Add edg patterns.
+
+2004-05-10 Sam Steingold <sds@gnu.org>
+
+ * textmodes/ispell.el (ispell-message):
+ Use `message-cite-prefix-regexp' instead of `message-yank-prefix'.
+
+2004-05-10 Dave Love <fx@gnu.org>
+
+ * progmodes/python.el (help-buffer): Autoload when compiling.
+ (python-after-info-look): Don't assume Info-goto-node returns non-nil.
+ (run-python): Prepend to any existing PYTHONPATH.
+
+2004-05-10 Nick Roberts <nick@nick.uklinux.net>
+
+ * progmodes/gdb-ui.el (gdb-annotation-rules): Add nquery annotation
+ for pending breakpoints.
+
+2004-05-10 Richard M. Stallman <rms@gnu.org>
+
+ * mail/unrmail.el (unrmail): Mostly rewritten. Parses the file
+ directly without calling any functions in Rmail.
+ (unrmail-unprune): Function deleted.
+
+2004-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/python.el (inferior-python-mode-map): Remove erroneous
+ C-c C-z binding.
+
2004-05-10 Kenichi Handa <handa@m17n.org>
* descr-text.el (describe-char): Fix previous change. Don't make
@@ -10,12 +229,21 @@
2004-05-10 Juanma Barranquero <lektu@terra.es>
- * subr.el (remove-overlays, read-passwd): Fix docstring.
-
* help-fns.el (help-argument-name): Default to italic.
(help-highlight-arguments): Return always (usage . doc), even when
usage is nil.
+ * ibuf-macs.el (define-ibuffer-column, define-ibuffer-sorter)
+ (define-ibuffer-filter): Add usage info.
+ (define-ibuffer-op): Add usage info (but CL-style defaults for
+ keyword args are not shown).
+
+ * subr.el (remove-overlays, read-passwd): Fix docstring.
+ (start-process-shell-command): Fix docstring. Put usage info in a
+ format usable by `describe-function'.
+ (open-network-stream, open-network-stream-nowait)
+ (open-network-stream-server): Fix docstring.
+
2004-05-09 Jason Rumney <jasonr@gnu.org>
* international/code-pages (cp932, cp936, cp949, c950): Remove.
@@ -29,24 +257,24 @@
* term/w32-win.el: Require code-pages.
- * international/mule-cmds.el (set-locale-environment): On
- MS-Windows use ansi code-page for default coding-systems.
+ * international/mule-cmds.el (set-locale-environment):
+ On MS-Windows use ansi code-page for default coding-systems.
Set up paper sizes for Windows 3 letter languages.
- * international/code-pages.el (cp932, cp936, cp949, cp950): Add
- aliases. Also add cp125* if not already defined.
+ * international/code-pages.el (cp932, cp936, cp949, cp950):
+ Add aliases. Also add cp125* if not already defined.
2004-05-09 Juanma Barranquero <lektu@terra.es>
- * net/quickurl.el (quickurl, quickurl-browse-url, quickurl-read):
- Don't use CL-style default args.
+ * help-fns.el (help-highlight-arguments): Don't try to highlight
+ missing or autoloaded arglists. Accept structured arguments, like
+ the first ones of `do' and `flet'.
* pcvs.el (cvs-mode-run, cvs-is-within-p): Fix typo in docstring.
(cvs-get-marked): Remove redundant arglist info.
- * help-fns.el (help-highlight-arguments): Don't try to highlight
- missing or autoloaded arglists. Accept structured arguments, like
- the first ones of `do' and `flet'.
+ * net/quickurl.el (quickurl, quickurl-browse-url, quickurl-read):
+ Don't use CL-style default args.
2004-05-08 Andreas Schwab <schwab@suse.de>
@@ -62,17 +290,17 @@
2004-05-08 John Wiegley <johnw@newartisans.com>
- * iswitchb.el (iswitchb-use-virtual-buffers): Added support for
+ * iswitchb.el (iswitchb-use-virtual-buffers): Add support for
"virtual buffers" (off by default), which makes it possible to
switch to the "virtual" buffers of recently visited files. When a
buffer name search fails, and this option is on, iswitchb will
look at the list of recently visited files, and permit matching
against those names. When the user hits RET on a match, it will
revisit that file.
- (iswitchb-read-buffer): Added two optional arguments, which makes
+ (iswitchb-read-buffer): Add two optional arguments, which makes
isearchb.el possible.
- (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match,
- iswitchb-next-match): Added support for virtual buffers.
+ (iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match)
+ (iswitchb-next-match): Add support for virtual buffers.
* isearchb.el: This module extends iswitchb to provide "as you
type" buffer selection.
@@ -108,8 +336,7 @@
* help-fns.el (help-do-arg-highlight): Temporarily set ?\- to be a
word constituent so FOO-ARG is not recognized as an arg.
- (help-highlight-arguments): Don't skip lists in mandatory
- arguments.
+ (help-highlight-arguments): Don't skip lists in mandatory arguments.
* simple.el (next-error): Fix typo in docstring.
(open-line): Make argument names match their use in docstring.
@@ -127,11 +354,11 @@
Version 2.0.40 of Tramp released.
- * net/tramp.el (tramp-completion-mode, tramp-md5-function): Use
- symbol-function to invoke functions only known on some Emacs
+ * net/tramp.el (tramp-completion-mode, tramp-md5-function):
+ Use symbol-function to invoke functions only known on some Emacs
flavors. This avoids byte-compiler warnings. Reported by Kevin
Scaldeferri <kevin@scaldeferri.com>.
- (tramp-do-copy-or-rename-file-via-buffer): Renamed from
+ (tramp-do-copy-or-rename-file-via-buffer): Rename from
tramp-do-copy-or-rename-via-buffer (without `file'), to make it
consistent with the other tramp-do-* functions.
(tramp-do-copy-or-rename-file): Calls adjusted.
@@ -145,8 +372,7 @@
(tramp-read-passwd): Construct the key for the password cache in a
way that works for multi methods, too.
(tramp-bug): Add backup-directory-alist and
- bkup-backup-directory-info to bug reports, with Tramp
- counterparts.
+ bkup-backup-directory-info to bug reports, with Tramp counterparts.
2004-05-07 Michael Albinus <michael.albinus@gmx.de>
@@ -157,8 +383,8 @@
(tramp-do-copy-or-rename-file-out-of-band): Asynchronous process
used instead of a synchronous one. Allows password entering.
(tramp-action-out-of-band): New defun.
- (tramp-open-connection-rsh, tramp-method-out-of-band-p): Remove
- restriction with password from doc string.
+ (tramp-open-connection-rsh, tramp-method-out-of-band-p):
+ Remove restriction with password from doc string.
(tramp-bug): Add variables `tramp-terminal-prompt-regexp',
`tramp-out-of-band-prompt-regexp',
`tramp-actions-copy-out-of-band', `password-cache' and
@@ -172,15 +398,14 @@
Schwab <schwab@suse.de>.
(tramp-do-copy-or-rename-file-via-buffer): Set permissions of the
new file.
- (tramp-handle-file-local-copy, tramp-handle-write-region): The
- permissions of the temporary file are set if filename exists.
+ (tramp-handle-file-local-copy, tramp-handle-write-region):
+ The permissions of the temporary file are set if filename exists.
Reported by Ted Stern <stern@cray.com>.
(tramp-backup-directory-alist)
(tramp-bkup-backup-directory-info): New defcustoms.
- (tramp-file-name-handler-alist): Add entry for
- `find-backup-file-name'.
- (tramp-handle-find-backup-file-name): New function. Implements
- Tramp's find-backup-file-name.
+ (tramp-file-name-handler-alist): Add entry for `find-backup-file-name'.
+ (tramp-handle-find-backup-file-name): New function.
+ Implements Tramp's find-backup-file-name.
* net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry
for `find-backup-file-name'.
@@ -197,8 +422,7 @@
* subr.el (lambda): Add arglist description to docstring.
(declare): Fix typo in docstring.
(open-network-stream): Fix docstring.
- (process-kill-without-query): Fix docstring and add obsolescence
- info.
+ (process-kill-without-query): Fix docstring and add obsolescence info.
(last, butlast, nbutlast): Make arguments match their use in docstring.
(insert-buffer-substring-no-properties): Likewise.
(insert-buffer-substring-as-yank): Likewise.
@@ -269,13 +493,13 @@
2004-05-06 Juanma Barranquero <lektu@terra.es>
+ * ehelp.el (electric-help-command-loop): Check whether the last
+ character is visible, not (point-max).
+
* help-fns.el (help-argument-name): Default to bold; don't inherit
from font-lock-variable-name-face.
(help-do-arg-highlight): Grok also ARGth occurrences in the docstring.
- * ehelp.el (electric-help-command-loop): Check whether the last
- character is visible, not (point-max).
-
2004-05-05 Kenichi Handa <handa@m17n.org>
* descr-text.el (describe-char): Copy the character with text
@@ -323,6 +547,9 @@
2004-05-04 Juanma Barranquero <lektu@terra.es>
+ * ehelp.el (electric-help-command-loop, electric-help-undefined)
+ (electric-help-help): Check against unmapped commands.
+
* help-fns.el (help-argument-name): New face, inheriting from
font-lock-variable-name-face, to highlight function arguments in
`describe-function' and `describe-key'.
@@ -333,12 +560,9 @@
(describe-function-1): Use it. Do docstring output via `insert',
not 'princ', so text attributes are preserved.
- * winner.el (winner-mode-map): Move winner-undo and winner-redo to
- C-c <left> and C-c <right>, respectively (the previous bindings
- conflict with prev-buffer, next-buffer).
-
- * ehelp.el (electric-help-command-loop, electric-help-undefined)
- (electric-help-help): Check against unmapped commands.
+ * winner.el (winner-mode-map): Move `winner-undo' and
+ `winner-redo' to C-c <left> and C-c <right>, respectively (the
+ previous bindings conflict with `prev-buffer', `next-buffer').
2004-05-03 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
@@ -617,7 +841,7 @@
`font-lock-add-keywords'.
(sql-send-string): Add function.
-2004-04-29 Dave Love <fx@gnu.org>
+2004-04-29 Dave Love <fx@gnu.org>
* progmodes/cfengine.el (cfengine-beginning-of-defun)
(cfengine-end-of-defun): Ensure progress through buffer.
@@ -1060,11 +1284,11 @@
2004-04-21 Juanma Barranquero <lektu@terra.es>
- * makefile.w32-in (WINS): Add url/ directory.
-
* font-lock.el (font-lock-preprocessor-face): Remove spurious quote.
(font-lock-warning-face): Fix spacing.
+ * makefile.w32-in (WINS): Add url/ directory.
+
2004-04-21 Lars Hansen <larsh@math.ku.dk>
* desktop.el (desktop-buffer-mode-handlers): New variable.
@@ -1809,7 +2033,7 @@
2004-04-05 Vinicius Jose Latorre <viniciusjl@ig.com.br>
- * printing.el: Dox fix.
+ * printing.el: Doc fix.
2004-04-05 Nick Roberts <nick@nick.uklinux.net>
@@ -6811,7 +7035,7 @@
2003-07-10 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* ps-print.el: Print line number correctly in a region. Reported by
- Tim Allen <timallen@ls83.fsnet.co.uk>
+ Tim Allen <timallen@ls83.fsnet.co.uk>.
(ps-print-version): New version number (6.6.2).
(ps-printing-region): Code fix.
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."
(same-window-p (buffer-name appt-disp-buf)))
;; By default, split the bottom window and use the lower part.
(appt-select-lowest-window)
- (split-window))
- (pop-to-buffer appt-disp-buf))
- (setq mode-line-format
- (concat "-------------------- Appointment in "
- min-to-app " minutes. " new-time " %-"))
+ (select-window (split-window)))
+ (switch-to-buffer appt-disp-buf))
+ (calendar-set-mode-line
+ (format " Appointment in %s minutes. %s " min-to-app new-time))
(erase-buffer)
(insert appt-msg)
(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.")
"Initialize SYMBOL with VALUE.
This will do nothing if symbol already has a default binding.
Otherwise, if symbol has a `saved-value' property, it will evaluate
-the car of that and used as the default binding for symbol.
+the car of that and use it as the default binding for symbol.
Otherwise, VALUE will be evaluated and used as the default binding for
symbol."
(unless (default-boundp symbol)
@@ -176,7 +176,7 @@ set to nil, as the value is no longer rogue."
"Declare SYMBOL as a customizable variable that defaults to VALUE.
DOC is the variable documentation.
-Neither SYMBOL nor VALUE needs to be quoted.
+Neither SYMBOL nor VALUE need to be quoted.
If SYMBOL is not already bound, initialize it to VALUE.
The remaining arguments should have the form
@@ -298,8 +298,8 @@ following REQ are defined:
`type' (the value of `window-system')
Under X, in addition to the values `window-system' can take,
- `motif', `lucid' and `x-toolkit' are allowed, and match when
- the Motif toolkit, Lucid toolkit, or any X toolkit is in use.
+ `motif', `lucid', `gtk' and `x-toolkit' are allowed, and match when
+ the Motif toolkit, Lucid toolkit, GTK toolkit or any X toolkit is in use.
`class' (the frame's color support)
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 @@
;;; Code:
-(eval-when-compile (require 'button))
+(eval-when-compile (require 'button) (require 'quail))
(defun describe-text-done ()
"Delete the current window or bury the current buffer."
@@ -183,7 +183,6 @@ otherwise."
(defun describe-text-properties-1 (pos output-buffer)
(let* ((properties (text-properties-at pos))
(overlays (overlays-at pos))
- overlay
(wid-field (get-char-property pos 'field))
(wid-button (get-char-property pos 'button))
(wid-doc (get-char-property pos 'widget-doc))
@@ -225,221 +224,214 @@ otherwise."
(widget-insert "There are text properties here:\n")
(describe-property-list properties)))))
-;;; We cannot use the UnicodeData.txt file as such; it is not free.
-;;; We can turn that info a different format and release the result
-;;; as free data. When that is done, we could reinstate the code below.
-;;; For the mean time, here is a dummy placeholder.
-;;; -- rms
-(defun describe-char-unicode-data (char) nil)
-
-;;; (defcustom describe-char-unicodedata-file nil
-;;; "Location of Unicode data file.
-;;; This is the UnicodeData.txt file from the Unicode consortium, used for
-;;; diagnostics. If it is non-nil `describe-char-after' will print data
-;;; looked up from it. This facility is mostly of use to people doing
-;;; multilingual development.
-
-;;; This is a fairly large file, not typically present on GNU systems. At
-;;; the time of writing it is at
-;;; <URL:ftp://www.unicode.org/Public/UNIDATA/UnicodeData.txt>."
-;;; :group 'mule
-;;; :version "21.5"
-;;; :type '(choice (const :tag "None" nil)
-;;; file))
-
-;;; ;; We could convert the unidata file into a Lispy form once-for-all
-;;; ;; and distribute it for loading on demand. It might be made more
-;;; ;; space-efficient by splitting strings word-wise and replacing them
-;;; ;; with lists of symbols interned in a private obarray, e.g.
-;;; ;; "LATIN SMALL LETTER A" => '(LATIN SMALL LETTER A).
-
-;;; ;; Fixme: Check whether this needs updating for Unicode 4.
-;;; (defun describe-char-unicode-data (char)
-;;; "Return a list of Unicode data for unicode CHAR.
-;;; Each element is a list of a property description and the property value.
-;;; The list is null if CHAR isn't found in `describe-char-unicodedata-file'."
-;;; (when describe-char-unicodedata-file
-;;; (unless (file-exists-p describe-char-unicodedata-file)
-;;; (error "`unicodedata-file' %s not found" describe-char-unicodedata-file))
-;;; (save-excursion
-;;; ;; Find file in fundamental mode to avoid, e.g. flyspell turned
-;;; ;; on for .txt. Don't use RAWFILE arg in case of DOS line endings.
-;;; (set-buffer (let ((auto-mode-alist))
-;;; (find-file-noselect describe-char-unicodedata-file)))
-;;; (goto-char (point-min))
-;;; (let ((hex (format "%04X" char))
-;;; found first last)
-;;; (if (re-search-forward (concat "^" hex) nil t)
-;;; (setq found t)
-;;; ;; It's not listed explicitly. Look for ranges, e.g. CJK
-;;; ;; ideographs, and check whether it's in one of them.
-;;; (while (and (re-search-forward "^\\([^;]+\\);[^;]+First>;" nil t)
-;;; (>= char (setq first
-;;; (string-to-number (match-string 1) 16)))
-;;; (progn
-;;; (forward-line 1)
-;;; (looking-at "^\\([^;]+\\);[^;]+Last>;")
-;;; (> char
-;;; (setq last
-;;; (string-to-number (match-string 1) 16))))))
-;;; (if (and (>= char first)
-;;; (<= char last))
-;;; (setq found t)))
-;;; (if found
-;;; (let ((fields (mapcar (lambda (elt)
-;;; (if (> (length elt) 0)
-;;; elt))
-;;; (cdr (split-string
-;;; (buffer-substring
-;;; (line-beginning-position)
-;;; (line-end-position))
-;;; ";")))))
-;;; ;; The length depends on whether the last field was empty.
-;;; (unless (or (= 13 (length fields))
-;;; (= 14 (length fields)))
-;;; (error "Invalid contents in %s" describe-char-unicodedata-file))
-;;; ;; The field names and values lists are slightly
-;;; ;; modified from Mule-UCS unidata.el.
-;;; (list
-;;; (list "Name" (let ((name (nth 0 fields)))
-;;; ;; Check for <..., First>, <..., Last>
-;;; (if (string-match "\\`\\(<[^,]+\\)," name)
-;;; (concat (match-string 1 name) ">")
-;;; name)))
-;;; (list "Category"
-;;; (cdr (assoc
-;;; (nth 1 fields)
-;;; '(("Lu" . "uppercase letter")
-;;; ("Ll" . "lowercase letter")
-;;; ("Lt" . "titlecase letter")
-;;; ("Mn" . "non-spacing mark")
-;;; ("Mc" . "spacing-combining mark")
-;;; ("Me" . "enclosing mark")
-;;; ("Nd" . "decimal digit")
-;;; ("Nl" . "letter number")
-;;; ("No" . "other number")
-;;; ("Zs" . "space separator")
-;;; ("Zl" . "line separator")
-;;; ("Zp" . "paragraph separator")
-;;; ("Cc" . "other control")
-;;; ("Cf" . "other format")
-;;; ("Cs" . "surrogate")
-;;; ("Co" . "private use")
-;;; ("Cn" . "not assigned")
-;;; ("Lm" . "modifier letter")
-;;; ("Lo" . "other letter")
-;;; ("Pc" . "connector punctuation")
-;;; ("Pd" . "dash punctuation")
-;;; ("Ps" . "open punctuation")
-;;; ("Pe" . "close punctuation")
-;;; ("Pi" . "initial-quotation punctuation")
-;;; ("Pf" . "final-quotation punctuation")
-;;; ("Po" . "other punctuation")
-;;; ("Sm" . "math symbol")
-;;; ("Sc" . "currency symbol")
-;;; ("Sk" . "modifier symbol")
-;;; ("So" . "other symbol")))))
-;;; (list "Combining class"
-;;; (cdr (assoc
-;;; (string-to-number (nth 2 fields))
-;;; '((0 . "Spacing")
-;;; (1 . "Overlays and interior")
-;;; (7 . "Nuktas")
-;;; (8 . "Hiragana/Katakana voicing marks")
-;;; (9 . "Viramas")
-;;; (10 . "Start of fixed position classes")
-;;; (199 . "End of fixed position classes")
-;;; (200 . "Below left attached")
-;;; (202 . "Below attached")
-;;; (204 . "Below right attached")
-;;; (208 . "Left attached (reordrant around \
-;;; single base character)")
-;;; (210 . "Right attached")
-;;; (212 . "Above left attached")
-;;; (214 . "Above attached")
-;;; (216 . "Above right attached")
-;;; (218 . "Below left")
-;;; (220 . "Below")
-;;; (222 . "Below right")
-;;; (224 . "Left (reordrant around single base \
-;;; character)")
-;;; (226 . "Right")
-;;; (228 . "Above left")
-;;; (230 . "Above")
-;;; (232 . "Above right")
-;;; (233 . "Double below")
-;;; (234 . "Double above")
-;;; (240 . "Below (iota subscript)")))))
-;;; (list "Bidi category"
-;;; (cdr (assoc
-;;; (nth 3 fields)
-;;; '(("L" . "Left-to-Right")
-;;; ("LRE" . "Left-to-Right Embedding")
-;;; ("LRO" . "Left-to-Right Override")
-;;; ("R" . "Right-to-Left")
-;;; ("AL" . "Right-to-Left Arabic")
-;;; ("RLE" . "Right-to-Left Embedding")
-;;; ("RLO" . "Right-to-Left Override")
-;;; ("PDF" . "Pop Directional Format")
-;;; ("EN" . "European Number")
-;;; ("ES" . "European Number Separator")
-;;; ("ET" . "European Number Terminator")
-;;; ("AN" . "Arabic Number")
-;;; ("CS" . "Common Number Separator")
-;;; ("NSM" . "Non-Spacing Mark")
-;;; ("BN" . "Boundary Neutral")
-;;; ("B" . "Paragraph Separator")
-;;; ("S" . "Segment Separator")
-;;; ("WS" . "Whitespace")
-;;; ("ON" . "Other Neutrals")))))
-;;; (list
-;;; "Decomposition"
-;;; (if (nth 4 fields)
-;;; (let* ((parts (split-string (nth 4 fields)))
-;;; (info (car parts)))
-;;; (if (string-match "\\`<\\(.+\\)>\\'" info)
-;;; (setq info (match-string 1 info))
-;;; (setq info nil))
-;;; (if info (setq parts (cdr parts)))
-;;; ;; Maybe printing ? for unrepresentable unicodes
-;;; ;; here and below should be changed?
-;;; (setq parts (mapconcat
-;;; (lambda (arg)
-;;; (string (or (decode-char
-;;; 'ucs
-;;; (string-to-number arg 16))
-;;; ??)))
-;;; parts " "))
-;;; (concat info parts))))
-;;; (list "Decimal digit value"
-;;; (nth 5 fields))
-;;; (list "Digit value"
-;;; (nth 6 fields))
-;;; (list "Numeric value"
-;;; (nth 7 fields))
-;;; (list "Mirrored"
-;;; (if (equal "Y" (nth 8 fields))
-;;; "yes"))
-;;; (list "Old name" (nth 9 fields))
-;;; (list "ISO 10646 comment" (nth 10 fields))
-;;; (list "Uppercase" (and (nth 11 fields)
-;;; (string (or (decode-char
-;;; 'ucs
-;;; (string-to-number
-;;; (nth 11 fields) 16))
-;;; ??))))
-;;; (list "Lowercase" (and (nth 12 fields)
-;;; (string (or (decode-char
-;;; 'ucs
-;;; (string-to-number
-;;; (nth 12 fields) 16))
-;;; ??))))
-;;; (list "Titlecase" (and (nth 13 fields)
-;;; (string (or (decode-char
-;;; 'ucs
-;;; (string-to-number
-;;; (nth 13 fields) 16))
-;;; ??)))))))))))
+(defcustom describe-char-unicodedata-file nil
+ "Location of Unicode data file.
+This is the UnicodeData.txt file from the Unicode consortium, used for
+diagnostics. If it is non-nil `describe-char-after' will print data
+looked up from it. This facility is mostly of use to people doing
+multilingual development.
+
+This is a fairly large file, not typically present on GNU systems. At
+the time of writing it is at
+<URL:http://www.unicode.org/Public/UNIDATA/UnicodeData.txt>."
+ :group 'mule
+ :version "21.4"
+ :type '(choice (const :tag "None" nil)
+ file))
+
+;; We could convert the unidata file into a Lispy form once-for-all
+;; and distribute it for loading on demand. It might be made more
+;; space-efficient by splitting strings word-wise and replacing them
+;; with lists of symbols interned in a private obarray, e.g.
+;; "LATIN SMALL LETTER A" => '(LATIN SMALL LETTER A).
+
+;; Fixme: Check whether this needs updating for Unicode 4.
+(defun describe-char-unicode-data (char)
+ "Return a list of Unicode data for unicode CHAR.
+Each element is a list of a property description and the property value.
+The list is null if CHAR isn't found in `describe-char-unicodedata-file'."
+ (when describe-char-unicodedata-file
+ (unless (file-exists-p describe-char-unicodedata-file)
+ (error "`unicodedata-file' %s not found" describe-char-unicodedata-file))
+ (with-current-buffer
+ ;; Find file in fundamental mode to avoid, e.g. flyspell turned
+ ;; on for .txt. Don't use RAWFILE arg in case of DOS line endings.
+ (let ((auto-mode-alist))
+ (find-file-noselect describe-char-unicodedata-file))
+ (goto-char (point-min))
+ (let ((hex (format "%04X" char))
+ found first last)
+ (if (re-search-forward (concat "^" hex) nil t)
+ (setq found t)
+ ;; It's not listed explicitly. Look for ranges, e.g. CJK
+ ;; ideographs, and check whether it's in one of them.
+ (while (and (re-search-forward "^\\([^;]+\\);[^;]+First>;" nil t)
+ (>= char (setq first
+ (string-to-number (match-string 1) 16)))
+ (progn
+ (forward-line 1)
+ (looking-at "^\\([^;]+\\);[^;]+Last>;")
+ (> char
+ (setq last
+ (string-to-number (match-string 1) 16))))))
+ (if (and (>= char first)
+ (<= char last))
+ (setq found t)))
+ (if found
+ (let ((fields (mapcar (lambda (elt)
+ (if (> (length elt) 0)
+ elt))
+ (cdr (split-string
+ (buffer-substring
+ (line-beginning-position)
+ (line-end-position))
+ ";")))))
+ ;; The length depends on whether the last field was empty.
+ (unless (or (= 13 (length fields))
+ (= 14 (length fields)))
+ (error "Invalid contents in %s" describe-char-unicodedata-file))
+ ;; The field names and values lists are slightly
+ ;; modified from Mule-UCS unidata.el.
+ (list
+ (list "Name" (let ((name (nth 0 fields)))
+ ;; Check for <..., First>, <..., Last>
+ (if (string-match "\\`\\(<[^,]+\\)," name)
+ (concat (match-string 1 name) ">")
+ name)))
+ (list "Category"
+ (cdr (assoc
+ (nth 1 fields)
+ '(("Lu" . "uppercase letter")
+ ("Ll" . "lowercase letter")
+ ("Lt" . "titlecase letter")
+ ("Mn" . "non-spacing mark")
+ ("Mc" . "spacing-combining mark")
+ ("Me" . "enclosing mark")
+ ("Nd" . "decimal digit")
+ ("Nl" . "letter number")
+ ("No" . "other number")
+ ("Zs" . "space separator")
+ ("Zl" . "line separator")
+ ("Zp" . "paragraph separator")
+ ("Cc" . "other control")
+ ("Cf" . "other format")
+ ("Cs" . "surrogate")
+ ("Co" . "private use")
+ ("Cn" . "not assigned")
+ ("Lm" . "modifier letter")
+ ("Lo" . "other letter")
+ ("Pc" . "connector punctuation")
+ ("Pd" . "dash punctuation")
+ ("Ps" . "open punctuation")
+ ("Pe" . "close punctuation")
+ ("Pi" . "initial-quotation punctuation")
+ ("Pf" . "final-quotation punctuation")
+ ("Po" . "other punctuation")
+ ("Sm" . "math symbol")
+ ("Sc" . "currency symbol")
+ ("Sk" . "modifier symbol")
+ ("So" . "other symbol")))))
+ (list "Combining class"
+ (cdr (assoc
+ (string-to-number (nth 2 fields))
+ '((0 . "Spacing")
+ (1 . "Overlays and interior")
+ (7 . "Nuktas")
+ (8 . "Hiragana/Katakana voicing marks")
+ (9 . "Viramas")
+ (10 . "Start of fixed position classes")
+ (199 . "End of fixed position classes")
+ (200 . "Below left attached")
+ (202 . "Below attached")
+ (204 . "Below right attached")
+ (208 . "Left attached (reordrant around \
+single base character)")
+ (210 . "Right attached")
+ (212 . "Above left attached")
+ (214 . "Above attached")
+ (216 . "Above right attached")
+ (218 . "Below left")
+ (220 . "Below")
+ (222 . "Below right")
+ (224 . "Left (reordrant around single base \
+character)")
+ (226 . "Right")
+ (228 . "Above left")
+ (230 . "Above")
+ (232 . "Above right")
+ (233 . "Double below")
+ (234 . "Double above")
+ (240 . "Below (iota subscript)")))))
+ (list "Bidi category"
+ (cdr (assoc
+ (nth 3 fields)
+ '(("L" . "Left-to-Right")
+ ("LRE" . "Left-to-Right Embedding")
+ ("LRO" . "Left-to-Right Override")
+ ("R" . "Right-to-Left")
+ ("AL" . "Right-to-Left Arabic")
+ ("RLE" . "Right-to-Left Embedding")
+ ("RLO" . "Right-to-Left Override")
+ ("PDF" . "Pop Directional Format")
+ ("EN" . "European Number")
+ ("ES" . "European Number Separator")
+ ("ET" . "European Number Terminator")
+ ("AN" . "Arabic Number")
+ ("CS" . "Common Number Separator")
+ ("NSM" . "Non-Spacing Mark")
+ ("BN" . "Boundary Neutral")
+ ("B" . "Paragraph Separator")
+ ("S" . "Segment Separator")
+ ("WS" . "Whitespace")
+ ("ON" . "Other Neutrals")))))
+ (list
+ "Decomposition"
+ (if (nth 4 fields)
+ (let* ((parts (split-string (nth 4 fields)))
+ (info (car parts)))
+ (if (string-match "\\`<\\(.+\\)>\\'" info)
+ (setq info (match-string 1 info))
+ (setq info nil))
+ (if info (setq parts (cdr parts)))
+ ;; Maybe printing ? for unrepresentable unicodes
+ ;; here and below should be changed?
+ (setq parts (mapconcat
+ (lambda (arg)
+ (string (or (decode-char
+ 'ucs
+ (string-to-number arg 16))
+ ??)))
+ parts " "))
+ (concat info parts))))
+ (list "Decimal digit value"
+ (nth 5 fields))
+ (list "Digit value"
+ (nth 6 fields))
+ (list "Numeric value"
+ (nth 7 fields))
+ (list "Mirrored"
+ (if (equal "Y" (nth 8 fields))
+ "yes"))
+ (list "Old name" (nth 9 fields))
+ (list "ISO 10646 comment" (nth 10 fields))
+ (list "Uppercase" (and (nth 11 fields)
+ (string (or (decode-char
+ 'ucs
+ (string-to-number
+ (nth 11 fields) 16))
+ ??))))
+ (list "Lowercase" (and (nth 12 fields)
+ (string (or (decode-char
+ 'ucs
+ (string-to-number
+ (nth 12 fields) 16))
+ ??))))
+ (list "Titlecase" (and (nth 13 fields)
+ (string (or (decode-char
+ 'ucs
+ (string-to-number
+ (nth 13 fields) 16))
+ ??)))))))))))
;; Return information about how CHAR is displayed at the buffer
;; position POS. If the selected frame is on a graphic display,
@@ -466,7 +458,6 @@ as well as widgets, buttons, overlays, and text properties."
(error "No character follows specified position"))
(let* ((char (char-after pos))
(charset (char-charset char))
- (buffer (current-buffer))
(composition (find-composition pos nil nil t))
(component-chars nil)
(display-table (or (window-display-table)
@@ -524,6 +515,13 @@ as well as widgets, buttons, overlays, and text properties."
(push (format "%s:" (pop props)) ps)
(push (format "%s;" (pop props)) ps))
(list (cons "Properties" (nreverse ps)))))
+ ("to input"
+ ,@(let ((key-list (and current-input-method
+ (quail-find-key char))))
+ (if (consp key-list)
+ (list "type"
+ (mapconcat #'(lambda (x) (concat "\"" x "\""))
+ key-list " or ")))))
("buffer code"
,(encoded-string-description
(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."
(cond ((string-match "\\`def"
function)
(setq tentative-defun t))
- ((string-match "\\`\\(with\\|do\\)-"
- function)
+ ((string-match
+ (eval-when-compile
+ (concat "\\`\\("
+ (regexp-opt '("with" "without" "do"))
+ "\\)-"))
+ function)
(setq method '(&lambda &body))))))
;; backwards compatibility. Bletch.
((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."
"Return a string representing CHAR as a character rather than as an integer.
If CHAR is not a character, return nil."
(and (integerp char)
- (char-valid-p (event-basic-type char))
+ (eventp char)
(let ((c (event-basic-type char)))
(concat
"?"
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."
(aset timer 6 args)
timer)
-(defun timer-activate (timer)
+(defun timer-activate (timer &optional triggered-p)
"Put TIMER on the list of active timers."
(if (and (timerp timer)
(integerp (aref timer 1))
@@ -184,7 +184,7 @@ fire repeatedly that many seconds apart."
(if last
(setcdr last (cons timer timers))
(setq timer-list (cons timer timers)))
- (aset timer 0 nil)
+ (aset timer 0 triggered-p)
(aset timer 7 nil)
nil)
(error "Invalid or uninitialized timer")))
@@ -270,7 +270,7 @@ This function is called, by name, directly by the C code."
(setq timer-event-last timer)
(let ((inhibit-quit t))
(if (timerp timer)
- (progn
+ (let (retrigger)
;; Delete from queue.
(cancel-timer timer)
;; Re-schedule if requested.
@@ -287,13 +287,16 @@ This function is called, by name, directly by the C code."
(aref timer 4))))
(if (> repeats timer-max-repeats)
(timer-inc-time timer (* (aref timer 4) repeats)))))
- (timer-activate timer)))
+ (timer-activate timer t)
+ (setq retrigger t)))
;; Run handler.
;; We do this after rescheduling so that the handler function
;; can cancel its own timer successfully with cancel-timer.
(condition-case nil
(apply (aref timer 5) (aref timer 6))
- (error nil)))
+ (error nil))
+ (if retrigger
+ (aset timer 0 nil)))
(error "Bogus timer event"))))
;; 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 @@
+COPYING
+FEATURES
+INSTALL
+Makefile
+NEWS
+README
+_darcs
+_pkg.el
+auto-autoloads.el
esh-groups.el
+esh-toggle.el
+eshell-auto.el
+eshell.info
+eshell.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'."
(cond
((stringp target)
(let ((redir (assoc target eshell-virtual-targets)))
- (if redir
- (if (nth 2 redir)
- (funcall (nth 1 redir) mode)
- (nth 1 redir))
- (let* ((exists (get-file-buffer target))
- (buf (find-file-noselect target t)))
- (with-current-buffer buf
- (if buffer-read-only
- (error "Cannot write to read-only file `%s'" target))
- (set (make-local-variable 'eshell-output-file-buffer)
- (if (eq exists buf) 0 t))
- (cond ((eq mode 'overwrite)
- (erase-buffer))
- ((eq mode 'append)
- (goto-char (point-max))))
- (point-marker))))))
+ (if redir
+ (if (nth 2 redir)
+ (funcall (nth 1 redir) mode)
+ (nth 1 redir))
+ (let* ((exists (get-file-buffer target))
+ (buf (find-file-noselect target t)))
+ (with-current-buffer buf
+ (if buffer-read-only
+ (error "Cannot write to read-only file `%s'" target))
+ (set (make-local-variable 'eshell-output-file-buffer)
+ (if (eq exists buf) 0 t))
+ (cond ((eq mode 'overwrite)
+ (erase-buffer))
+ ((eq mode 'append)
+ (goto-char (point-max))))
+ (point-marker))))))
+
((or (bufferp target)
(and (boundp 'eshell-buffer-shorthand)
(symbol-value 'eshell-buffer-shorthand)
@@ -363,15 +364,18 @@ it defaults to `insert'."
((eq mode 'append)
(goto-char (point-max))))
(point-marker))))
- ((functionp target)
- nil)
+
+ ((functionp target) nil)
+
((symbolp target)
(if (eq mode 'overwrite)
(set target nil))
target)
+
((or (eshell-processp target)
(markerp target))
target)
+
(t
(error "Illegal redirection target: %s"
(eshell-stringify target)))))
@@ -481,7 +485,8 @@ Returns what was actually sent, or nil if nothing was sent."
(let ((moving (= (point) target)))
(save-excursion
(goto-char target)
- (setq object (eshell-stringify object))
+ (unless (stringp object)
+ (setq object (eshell-stringify object)))
(insert-and-inherit object)
(set-marker target (point-marker)))
(if moving
@@ -489,7 +494,8 @@ Returns what was actually sent, or nil if nothing was sent."
((eshell-processp target)
(when (eq (process-status target) 'run)
- (setq object (eshell-stringify object))
+ (unless (stringp object)
+ (setq object (eshell-stringify object)))
(process-send-string target object)))
((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 @@
(local-set-key [(control ?m)] 'eshell-test-goto-func)
(local-set-key [return] 'eshell-test-goto-func)
- (insert "Testing Eshell under "
- (format "GNU Emacs %s (%s%s)"
- emacs-version
- system-configuration
- (cond ((featurep 'motif) ", Motif")
- ((featurep 'x-toolkit) ", X toolkit")
- (t ""))))
+ (insert "Testing Eshell under " (emacs-version))
(switch-to-buffer test-buffer)
(delete-other-windows))
(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."
(memq 'tty options))
(and (memq 'motif options)
(featurep 'motif))
+ (and (memq 'gtk options)
+ (featurep 'gtk))
(and (memq 'lucid options)
(featurep 'x-toolkit)
- (not (featurep 'motif)))
+ (not (featurep 'motif))
+ (not (featurep 'gtk)))
(and (memq 'x-toolkit options)
(featurep 'x-toolkit))))
((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
both at the level of the file and at the level of the directories
containing it, until no links are left at any level.
-The arguments COUNTER and PREV-DIRS are used only in recursive calls.
-Do not specify them in other calls."
- ;; COUNTER can be a cons cell whose car is the count of how many more links
- ;; to chase before getting an error.
+\(fn FILENAME)"
+ ;; COUNTER and PREV-DIRS are only used in recursive calls.
+ ;; COUNTER can be a cons cell whose car is the count of how many
+ ;; more links to chase before getting an error.
;; PREV-DIRS can be a cons cell whose car is an alist
;; of truenames we've just recently computed.
-
(cond ((or (string= filename "") (string= filename "~"))
(setq filename (expand-file-name filename))
(if (string= filename "")
@@ -2330,7 +2329,7 @@ However, the mode will not be changed if
(defun set-visited-file-name (filename &optional no-query along-with-file)
"Change name of file visited in current buffer to FILENAME.
The next time the buffer is saved it will go in the newly specified file.
-nil or empty string as argument means make buffer not be visiting any file.
+FILENAME nil or an empty string means make buffer not be visiting any file.
Remember to delete the initial contents of the minibuffer
if you wish to pass an empty string as the argument.
@@ -4024,7 +4023,7 @@ by `sh' are supported."
"Expand wildcard pattern PATTERN.
This returns a list of file names which match the pattern.
-If PATTERN is written as an absolute relative file name,
+If PATTERN is written as an absolute file name,
the values are absolute also.
If 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 @@
;;; generic.el --- defining simple major modes with comment and font-lock
;;
-;; Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc.
;;
;; Author: Peter Breton <pbreton@cs.umb.edu>
;; Created: Fri Sep 27 1996
@@ -188,9 +188,6 @@ regexp in `generic-find-file-regexp'. If the value is nil,
&optional description)
"Create a new generic mode with NAME.
-Args: (NAME COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST AUTO-MODE-LIST
- FUNCTION-LIST &optional DESCRIPTION)
-
NAME should be a symbol; its string representation is used as the function
name. If DESCRIPTION is provided, it is used as the docstring for the new
function.
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 @@
+2004-05-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * gnus-win.el (gnus-all-windows-visible-p): Don't consider
+ non-visible windows.
+
2004-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
* 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 @@
;;; gnus-win.el --- window configuration functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002
+;; Copyright (C) 1996, 97, 98, 1999, 2000, 02, 2004
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -516,7 +516,7 @@ should have point."
(unless buffer
(error "Invalid buffer type: %s" type))
(if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer)))
- (setq win (get-buffer-window buf t)))
+ (setq win (get-buffer-window buf 0)))
(if (memq 'point split)
(setq all-visible win))
(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."
;; Return the text we displayed.
(buffer-string))))))
-(defun help-split-fundoc (doc def)
- "Split a function docstring DOC into the actual doc and the usage info.
+(defun help-split-fundoc (docstring def)
+ "Split a function DOCSTRING into the actual doc and the usage info.
Return (USAGE . DOC) or nil if there's no usage info.
-DEF is the function whose usage we're looking for in DOC."
+DEF is the function whose usage we're looking for in DOCSTRING."
;; Functions can get the calling sequence at the end of the doc string.
;; In cases where `function' has been fset to a subr we can't search for
;; function's name in the doc string so we use `fn' as the anonymous
;; function name instead.
- (when (and doc (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc))
+ (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring))
(cons (format "(%s%s"
;; Replace `fn' with the actual function name.
(if (consp def) "anonymous" def)
- (match-string 1 doc))
- (substring doc 0 (match-beginning 0)))))
-
-(defun help-add-fundoc-usage (doc arglist)
- "Add the usage info to the docstring DOC.
-If DOC already has a usage info, then just return DOC unchanged.
-The usage info is built from ARGLIST. DOC can be nil.
-ARGLIST can also be t or a string of the form \"(fun ARG1 ARG2 ...)\"."
- (unless (stringp doc) (setq doc "Not documented"))
- (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t))
- doc
- (format "%s%s%S" doc
- (if (string-match "\n?\n\\'" doc)
+ (match-string 1 docstring))
+ (substring docstring 0 (match-beginning 0)))))
+
+(defun help-add-fundoc-usage (docstring arglist)
+ "Add the usage info to DOCSTRING.
+If DOCSTRING already has a usage info, then just return it unchanged.
+The usage info is built from ARGLIST. DOCSTRING can be nil.
+ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
+ (unless (stringp docstring) (setq docstring "Not documented"))
+ (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring) (eq arglist t))
+ docstring
+ (format "%s%s%S" docstring
+ (if (string-match "\n?\n\\'" docstring)
(if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
"\n\n")
(if (and (stringp arglist)
@@ -237,8 +237,14 @@ KIND should be `var' for a variable or `subr' for a subroutine."
(concat "src/" file)
file)))))
-(defface help-argument-name '((t (:slant italic)))
- "Face to highlight function arguments in docstrings.")
+(defun help-default-arg-highlight (arg)
+ "Default function to highlight arguments in *Help* buffers.
+It returns ARG in lowercase italics, if the display supports it;
+else ARG is returned in uppercase normal."
+ (let ((attrs '(:slant italic)))
+ (if (display-supports-face-attributes-p attrs)
+ (propertize (downcase arg) 'face attrs)
+ arg)))
(defun help-do-arg-highlight (doc args)
(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."
(while args
(let ((arg (prog1 (car args) (setq args (cdr args)))))
(setq doc (replace-regexp-in-string
- (concat "\\<\\(" arg "\\)\\(?:es\\|s\\|th\\)?\\>")
- (propertize arg 'face 'help-argument-name)
+ ;; This is heuristic, but covers all common cases
+ ;; except ARG1-ARG2
+ (concat "\\<" ; beginning of word
+ "\\(?:[a-z-]+-\\)?" ; for xxx-ARG
+ "\\("
+ arg
+ "\\)"
+ "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
+ "\\(?:-[a-z-]+\\)?" ; for ARG-xxx
+ "\\>") ; end of word
+ (help-default-arg-highlight arg)
doc t t 1))))
doc))
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
ibuffer-make-column-NAME. If INLINE is non-nil, then the form will be
inlined into the compiled format versions. This means that if you
change its definition, you should explicitly call
-`ibuffer-recompile-formats'."
+`ibuffer-recompile-formats'.
+
+\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)"
(let* ((sym (intern (concat "ibuffer-make-column-"
(symbol-name symbol))))
(bod-1 `(with-current-buffer buffer
@@ -135,7 +137,9 @@ DESCRIPTION is a short string describing the sorting method.
For sorting, the forms in BODY will be evaluated with `a' bound to one
buffer object, and `b' bound to another. BODY should return a non-nil
-value if and only if `a' is \"less than\" `b'."
+value if and only if `a' is \"less than\" `b'.
+
+\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)"
`(progn
(defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) ()
,(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
confirmation message, in the form:
\"Really ACTIVE-OPSTRING x buffers?\"
COMPLEX means this function is special; see the source code of this
-macro for exactly what it does."
+macro for exactly what it does.
+
+\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)"
`(progn
(defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op))
"" "ibuffer-do-") (symbol-name op)))
@@ -265,7 +271,9 @@ DESCRIPTION is a short string describing the filter.
BODY should contain forms which will be evaluated to test whether or
not a particular buffer should be displayed or not. The forms in BODY
will be evaluated with BUF bound to the buffer object, and QUALIFIER
-bound to the current value of the filter."
+bound to the current value of the filter.
+
+\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)"
(let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))))
`(progn
(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 @@
+;;; iimage.el --- Inline image minor mode.
+
+;; Copyright (C) 2004 Free Software Foundation
+
+;; Author: KOSEKI Yoshinori <kose@meadowy.org>
+;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org>
+;; Keywords: multimedia
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Iimage is a minor mode that display a images, when image-filename
+;; exists in buffer.
+;; http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
+;;
+;; Add to your `~/.emacs':
+;; (autoload 'iimage-mode "iimage" "SUpport Inline image minor mode." t)
+;;
+;; ** Display images in *Info* buffer.
+;;
+;; (add-hook 'info-mode-hook 'turn-on-iimage-mode)
+;;
+;; .texinfo: @file{file://foo.png}
+;; .info: `file://foo.png'
+;;
+;; ** Display images in Wiki buffer.
+;;
+;; (add-hook 'wiki-mode-hook 'turn-on-iimage-mode)
+;;
+;; wiki-file: [[foo.png]]
+
+;;; Code:
+
+(eval-when-compile
+ (require 'image-file))
+
+(defconst iimage-version "1.0")
+(defvar iimage-mode nil)
+(defvar iimage-mode-map nil)
+
+;; Set up key map.
+(unless iimage-mode-map
+ (setq iimage-mode-map (make-sparse-keymap))
+ (define-key iimage-mode-map "\C-l" 'iimage-recenter))
+
+(defun iimage-recenter (&optional arg)
+"Re-draw images and recenter."
+ (interactive "P")
+ (iimage-mode-buffer 0)
+ (iimage-mode-buffer 1)
+ (recenter arg))
+
+(defvar iimage-mode-image-filename-regex
+ (concat "[-+./_0-9a-zA-Z]+\\."
+ (regexp-opt (nconc (mapcar #'upcase
+ image-file-name-extensions)
+ image-file-name-extensions)
+ t)))
+
+(defvar iimage-mode-image-regex-alist
+ `((,(concat "\\(`?file://\\|\\[\\[\\|<\\|`\\)?"
+ "\\(" iimage-mode-image-filename-regex "\\)"
+ "\\(\\]\\]\\|>\\|'\\)?") . 2))
+"*Alist of filename REGEXP vs NUM.
+Each element looks like (REGEXP . NUM).
+NUM specifies which parenthesized expression in the regexp.
+
+image filename regex exsamples:
+ file://foo.png
+ `file://foo.png'
+ \\[\\[foo.gif]]
+ <foo.png>
+ foo.JPG
+")
+
+(defun turn-on-iimage-mode ()
+"Unconditionally turn on iimage mode."
+ (interactive)
+ (iimage-mode 1))
+
+(defun turn-off-iimage-mode ()
+"Unconditionally turn off iimage mode."
+ (interactive)
+ (iimage-mode 0))
+
+(defun iimage-mode-buffer (arg)
+"Display/Undisplay Images.
+With numeric ARG, display the images if and only if ARG is positive."
+ (interactive)
+ (let ((ing (if (numberp arg)
+ (> arg 0)
+ iimage-mode))
+ (modp (buffer-modified-p (current-buffer)))
+ file buffer-read-only)
+ (save-excursion
+ (goto-char (point-min))
+ (dolist (pair iimage-mode-image-regex-alist)
+ (while (re-search-forward (car pair) nil t)
+ (if (and (setq file (match-string (cdr pair)))
+ (setq file (expand-file-name file default-directory))
+ (file-exists-p file))
+ (if ing
+ (add-text-properties (match-beginning 0) (match-end 0)
+ (list 'display (create-image file)))
+ (remove-text-properties (match-beginning 0) (match-end 0)
+ '(display)))))))
+ (set-buffer-modified-p modp)))
+
+(define-minor-mode iimage-mode
+ "Toggle inline image minor mode."
+ nil " iImg" iimage-mode-map
+ (run-hooks 'iimage-mode-hook)
+ (iimage-mode-buffer iimage-mode))
+
+(provide 'iimage)
+
+;;; arch-tag: f6f8e29a-08f6-4a12-9496-51e67441ce65
+;;; 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.
The installed decode map can be referred by the function `quail-decode-map'."
(if (null quail-current-package)
(error "No current Quail package"))
- (if (not (and (consp decode-map) (eq (car decode-map) 'decode-map)))
- (error "Invalid Quail decode map `%s'" decode-map))
- (setcar (nthcdr 10 quail-current-package) decode-map))
+ (if (if (consp decode-map)
+ (eq (car decode-map) 'decode-map)
+ (if (char-table-p decode-map)
+ (eq (char-table-subtype decode-map) 'quail-decode-map)))
+ (setcar (nthcdr 10 quail-current-package) decode-map)
+ (error "Invalid Quail decode map `%s'" decode-map)))
+
;;;###autoload
(defun quail-defrule (key translation &optional name append)
@@ -2590,6 +2594,143 @@ KEY BINDINGS FOR CONVERSION
(quail-update-guidance)
))))
+;; Add KEY (string) to the element of TABLE (char-table) for CHAR if
+;; it is not yet stored. As a result, the element is a string or a
+;; list of strings.
+
+(defsubst quail-store-decode-map-key (table char key)
+ (let ((elt (aref table char)))
+ (if elt
+ (if (consp elt)
+ (or (member key elt)
+ (aset table char (cons key elt)))
+ (or (string= key elt)
+ (aset table char (list key elt))))
+ (aset table char key))))
+
+;; Helper function for quail-gen-decode-map. Store key strings to
+;; type each character under MAP in TABLE (char-table). MAP is an
+;; element of the current Quail map reached by typing keys in KEY
+;; (string).
+
+(defun quail-gen-decode-map1 (map key table)
+ (when (and (consp map) (listp (cdr map)))
+ (let ((trans (car map)))
+ (cond ((integerp trans)
+ (quail-store-decode-map-key table trans key))
+ ((stringp trans)
+ (dotimes (i (length trans))
+ (quail-store-decode-map-key table (aref trans i) key)))
+ ((or (vectorp trans)
+ (and (consp trans)
+ (setq trans (cdr trans))))
+ (dotimes (i (length trans))
+ (let ((elt (aref trans i)))
+ (if (stringp elt)
+ (if (= (length elt) 1)
+ (quail-store-decode-map-key table (aref elt 0) key))
+ (quail-store-decode-map-key table elt key)))))))
+ (if (> (length key) 1)
+ (dolist (elt (cdr map))
+ (quail-gen-decode-map1 (cdr elt) key table))
+ (dolist (elt (cdr map))
+ (quail-gen-decode-map1 (cdr elt) (format "%s%c" key (car elt))
+ table)))))
+
+(put 'quail-decode-map 'char-table-extra-slots 0)
+
+;; Generate a halfly-cooked decode map (char-table) for the current
+;; Quail map. An element for a character C is a key string or a list
+;; of a key strings to type to input C. The lenth of key string is at
+;; most 2. If it is 2, more keys may be required to input C.
+
+(defun quail-gen-decode-map ()
+ (let ((table (make-char-table 'quail-decode-map nil)))
+ (dolist (elt (cdr (quail-map)))
+ (quail-gen-decode-map1 (cdr elt) (string (car elt)) table))
+ table))
+
+;; Helper function for quail-find-key. Prepend key strings to type
+;; for inputting CHAR by the current input method to KEY-LIST and
+;; return the result. MAP is an element of the current Quail map
+;; reached by typing keys in KEY.
+
+(defun quail-find-key1 (map key char key-list)
+ (let ((trans (car map))
+ (found-here nil))
+ (cond ((stringp trans)
+ (setq found-here
+ (and (= (length trans) 1) (= (aref trans 0) char))))
+ ((or (vectorp trans) (consp trans))
+ (if (consp trans)
+ (setq trans (cdr trans)))
+ (setq found-here
+ (catch 'tag
+ (dotimes (i (length trans))
+ (let ((target (aref trans i)))
+ (if (integerp target)
+ (if (= target char)
+ (throw 'tag t))
+ (if (and (= (length target) 1)
+ (= (aref target 0) char))
+ (throw 'tag t))))))))
+ ((integerp trans)
+ (if (= trans char)
+ (setq found-here t))))
+ (if found-here
+ (setq key-list (cons key key-list)))
+ (if (> (length key) 1)
+ (dolist (elt (cdr map))
+ (setq key-list
+ (quail-find-key1 (cdr elt) (format "%s%c" key (car elt))
+ char key-list))))
+ key-list))
+
+(defun quail-find-key (char)
+ "Return a list of keys to type to input CHAR in the current input method.
+If CHAR is an ASCII character and can be input by typing itself, return t."
+ (let ((decode-map (or (quail-decode-map)
+ (setcar (nthcdr 10 quail-current-package)
+ (quail-gen-decode-map))))
+ (key-list nil))
+ (if (consp decode-map)
+ (let ((str (string char)))
+ (mapc #'(lambda (elt)
+ (if (string= str (car elt))
+ (setq key-list (cons (cdr elt) key-list))))
+ (cdr decode-map)))
+ (let ((key-head (aref decode-map char)))
+ (if (stringp key-head)
+ (setq key-list (quail-find-key1
+ (quail-lookup-key key-head nil t)
+ key-head char nil))
+ (mapc #'(lambda (elt)
+ (setq key-list
+ (quail-find-key1
+ (quail-lookup-key elt nil t) elt char key-list)))
+ key-head))))
+ (or key-list
+ (and (< char 128)
+ (not (quail-lookup-key (string char) 1))))))
+
+(defun quail-show-key ()
+ "Show a list of key strings to type for inputting a character at point."
+ (interactive)
+ (or current-input-method
+ (error "No input method is activated"))
+ (let* ((char (following-char))
+ (key-list (quail-find-key char)))
+ (cond ((consp key-list)
+ (message "To input `%c', type \"%s\""
+ char
+ (mapconcat 'identity key-list "\", \"")))
+ ((eq key-list t)
+ (message "To input `%s', just type it"
+ (single-key-description char)))
+ (t
+ (message "%c can't be input by the current input method" char)))))
+
+
;; Quail map generator from state transition table.
(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."
:require 'recentf
:set (function
(lambda (sym value)
- (recentf-mode value)
+ (if value (recentf-mode 1))
(set sym value)))
:group 'iswitchb)
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."))
(unibyte-display . iso-8859-2)
(documentation . "Support for Croatian with Latin-2 encoding."))
'("European"))
+
+(set-language-info-alist
+ "Brazilian Portuguese" '((tutorial . "TUTORIAL.pt_BR")
+ (charset ascii latin-iso8859-1)
+ (coding-system iso-latin-1 iso-latin-9)
+ (coding-priority iso-latin-1)
+ (nonascii-translation . latin-iso8859-1)
+ (unibyte-syntax . "latin-1")
+ (unibyte-display . iso-latin-1)
+ (input-method . "latin-1-prefix")
+ (sample-text . "Oi")
+ (documentation . "Support for Brazilian Portuguese."))
+ '("European"))
;; Definitions for the Mac Roman character sets and coding system.
;; 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."
;; deal w/ multiple 'To' recipients
(if prequery
(progn
+ (setq prequery (rfc2368-unhexify-string prequery))
(if (assoc "To" headers-alist)
(let* ((our-cons-cell
(assoc "To" headers-alist))
(our-cdr
(cdr our-cons-cell)))
- (setcdr our-cons-cell (concat our-cdr ", " prequery)))
+ (setcdr our-cons-cell (concat prequery ", " our-cdr)))
(setq headers-alist
(cons (cons "To" prequery) headers-alist)))))
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'."
(defun unrmail (file to-file)
"Convert Rmail file FILE to system inbox format file TO-FILE."
(interactive "fUnrmail (rmail file): \nFUnrmail into (new mailbox file): ")
- (let ((message-count 1)
- ;; Prevent rmail from making, or switching to, a summary buffer.
- (rmail-display-summary nil)
- (rmail-delete-after-output nil)
- (temp-buffer (get-buffer-create " unrmail")))
- (rmail file)
+ (with-temp-buffer
+ ;; Read in the old Rmail file with no decoding.
+ (let ((coding-system-for-read 'raw-text))
+ (insert-file-contents file))
+ ;; But make it multibyte.
+ (set-buffer-multibyte t)
+
+ (if (not (looking-at "BABYL OPTIONS"))
+ (error "This file is not in Babyl format"))
+
+ ;; Decode the file contents just as Rmail did.
+ (let ((modifiedp (buffer-modified-p))
+ (coding-system rmail-file-coding-system)
+ from to)
+ (goto-char (point-min))
+ (search-forward "\n\^_" nil t) ; Skip BABYL header.
+ (setq from (point))
+ (goto-char (point-max))
+ (search-backward "\n\^_" from 'mv)
+ (setq to (point))
+ (unless (and coding-system
+ (coding-system-p coding-system))
+ (setq coding-system
+ ;; Emacs 21.1 and later writes RMAIL files in emacs-mule, but
+ ;; earlier versions did that with the current buffer's encoding.
+ ;; So we want to favor detection of emacs-mule (whose normal
+ ;; priority is quite low), but still allow detection of other
+ ;; encodings if emacs-mule won't fit. The call to
+ ;; detect-coding-with-priority below achieves that.
+ (car (detect-coding-with-priority
+ from to
+ '((coding-category-emacs-mule . emacs-mule))))))
+ (unless (memq coding-system
+ '(undecided undecided-unix))
+ (set-buffer-modified-p t) ; avoid locking when decoding
+ (let ((buffer-undo-list t))
+ (decode-coding-region from to coding-system))
+ (setq coding-system last-coding-system-used))
+
+ (setq buffer-file-coding-system nil)
+
+ ;; We currently don't use this value, but maybe we should.
+ (setq save-buffer-coding-system
+ (or coding-system 'undecided)))
+
;; Default the directory of TO-FILE based on where FILE is.
(setq to-file (expand-file-name to-file default-directory))
(condition-case ()
(delete-file to-file)
(file-error nil))
(message "Writing messages to %s..." to-file)
- (save-restriction
- (widen)
- (while (<= message-count rmail-total-messages)
- (let ((beg (rmail-msgbeg message-count))
- (end (rmail-msgbeg (1+ message-count)))
- (from-buffer (current-buffer))
- (coding (or rmail-file-coding-system 'raw-text))
+ (goto-char (point-min))
+
+ (let ((temp-buffer (get-buffer-create " unrmail"))
+ (from-buffer (current-buffer)))
+
+ ;; Process the messages one by one.
+ (while (search-forward "\^_\^l" nil t)
+ (let ((beg (point))
+ (end (save-excursion
+ (if (search-forward "\^_" nil t)
+ (1- (point)) (point-max))))
+ (coding 'raw-text)
label-line attrs keywords
- header-beginning mail-from)
- (save-excursion
- (goto-char (rmail-msgbeg message-count))
- (setq header-beginning (point))
- (search-forward "\n*** EOOH ***\n")
- (forward-line -1)
- (search-forward "\n\n")
- (save-restriction
- (narrow-to-region header-beginning (point))
- (setq mail-from
- (or (mail-fetch-field "Mail-From")
- (concat "From "
- (mail-strip-quoted-names (or (mail-fetch-field "from")
- (mail-fetch-field "really-from")
- (mail-fetch-field "sender")
- "unknown"))
- " " (current-time-string))))))
+ mail-from reformatted)
(with-current-buffer temp-buffer
(setq buffer-undo-list t)
(erase-buffer)
@@ -95,11 +123,15 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(insert-buffer-substring from-buffer beg end)
(goto-char (point-min))
(forward-line 1)
+ ;; Record whether the header is reformatted.
+ (setq reformatted (= (following-char) ?1))
+
+ ;; Collect the label line, then get the attributes
+ ;; and the keywords from it.
(setq label-line
(buffer-substring (point)
- (progn (forward-line 1)
- (point))))
- (forward-line -1)
+ (save-excursion (forward-line 1)
+ (point))))
(search-forward ",,")
(unless (eolp)
(setq keywords
@@ -118,9 +150,61 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(if (string-match ", resent," label-line) ?R ?-)
(if (string-match ", unseen," label-line) ?\ ?-)
(if (string-match ", stored," label-line) ?S ?-)))
- (unrmail-unprune)
+
+ ;; Delete the special Babyl lines at the start,
+ ;; and the ***EOOH*** line, and the reformatted header if any.
+ (goto-char (point-min))
+ (if reformatted
+ (progn
+ (forward-line 2)
+ ;; Delete Summary-Line headers.
+ (let ((case-fold-search t))
+ (while (looking-at "Summary-Line:")
+ (forward-line 1)))
+ (delete-region (point-min) (point))
+ ;; Delete the old reformatted header.
+ (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
+ (forward-line -1)
+ (let ((start (point)))
+ (search-forward "\n\n")
+ (delete-region start (point))))
+ ;; Not reformatted. Delete the special
+ ;; lines before the real header.
+ (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
+ (delete-region (point-min) (point)))
+
+ ;; Some operations on the message header itself.
(goto-char (point-min))
+ (save-restriction
+ (narrow-to-region
+ (point-min)
+ (save-excursion (search-forward "\n\n" nil 'move) (point)))
+
+ ;; Fetch or construct what we should use in the `From ' line.
+ (setq mail-from
+ (or (mail-fetch-field "Mail-From")
+ (concat "From "
+ (mail-strip-quoted-names (or (mail-fetch-field "from")
+ (mail-fetch-field "really-from")
+ (mail-fetch-field "sender")
+ "unknown"))
+ " " (current-time-string))))
+
+ ;; If the message specifies a coding system, use it.
+ (let ((maybe-coding (mail-fetch-field "X-Coding-System")))
+ (if maybe-coding
+ (setq coding (intern maybe-coding))))
+
+ ;; Delete the Mail-From: header field if any.
+ (when (re-search-forward "^Mail-from:" nil t)
+ (beginning-of-line)
+ (delete-region (point)
+ (progn (forward-line 1) (point)))))
+
+ (goto-char (point-min))
+ ;; Insert the `From ' line.
(insert mail-from "\n")
+ ;; Record the keywords and attributes in our special way.
(insert "X-BABYL-V6-ATTRIBUTES: " (apply 'string attrs) "\n")
(when keywords
(insert "X-BABYL-V6-KEYWORDS: " keywords "\n"))
@@ -132,43 +216,12 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(while (search-forward "\nFrom " nil t)
(forward-char -5)
(insert ?>)))
+ ;; Write it to the output file.
(write-region (point-min) (point-max) to-file t
- 'nomsg)))
- (setq message-count (1+ message-count))))
+ 'nomsg))))
+ (kill-buffer temp-buffer))
(message "Writing messages to %s...done" to-file)))
-(defun unrmail-unprune ()
- (let* ((pruned
- (save-excursion
- (goto-char (point-min))
- (forward-line 1)
- (= (following-char) ?1))))
- (if pruned
- (progn
- (goto-char (point-min))
- (forward-line 2)
- ;; Delete Summary-Line headers.
- (let ((case-fold-search t))
- (while (looking-at "Summary-Line:")
- (forward-line 1)))
- (delete-region (point-min) (point))
- ;; Delete the old reformatted header.
- (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
- (forward-line -1)
- (let ((start (point)))
- (search-forward "\n\n")
- (delete-region start (point))))
- ;; Delete everything up to the real header.
- (goto-char (point-min))
- (re-search-forward "^[*][*][*] EOOH [*][*][*]\n")
- (delete-region (point-min) (point)))
- (goto-char (point-min))
- (when (re-search-forward "^Mail-from:")
- (beginning-of-line)
- (delete-region (point)
- (progn (forward-line 1) (point))))))
-
-
(provide 'unrmail)
;;; 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
(setenv "GROFF_NO_SGR" "1")
(if (fboundp 'start-process)
(set-process-sentinel
- (start-process manual-program buffer "sh" "-c"
+ (start-process manual-program buffer
+ shell-file-name shell-command-switch
(format (Man-build-man-command) man-args))
'Man-bgproc-sentinel)
(let ((exit-status
- (call-process shell-file-name nil (list buffer nil) nil "-c"
+ (call-process shell-file-name nil (list buffer nil) nil
+ shell-command-switch
(format (Man-build-man-command) man-args)))
(msg ""))
(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 @@
;;; telnet.el --- run a telnet session from within an Emacs buffer
-;; Copyright (C) 1985, 1988, 1992, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 88, 1992, 94, 2004 Free Software Foundation, Inc.
;; Author: William F. Schelter
;; Maintainer: FSF
@@ -240,22 +240,13 @@ Normally input is edited in Emacs and sent a line at a time."
(put 'telnet-mode 'mode-class 'special)
-(defun telnet-mode ()
+(define-derived-mode telnet-mode comint-mode "Telnet"
"This mode is for using telnet (or rsh) from a buffer to another host.
It has most of the same commands as comint-mode.
There is a variable ``telnet-interrupt-string'' which is the character
sent to try to stop execution of a job on the remote host.
-Data is sent to the remote host when RET is typed.
-
-\\{telnet-mode-map}
-"
- (interactive)
- (comint-mode)
- (setq major-mode 'telnet-mode
- mode-name "Telnet"
- comint-prompt-regexp telnet-prompt-pattern)
- (use-local-map telnet-mode-map)
- (run-hooks 'telnet-mode-hook))
+Data is sent to the remote host when RET is typed."
+ (set (make-local-variable 'comint-prompt-regexp) telnet-prompt-pattern))
;;;###autoload (add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)")
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))
"^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4))
+ (edg-1
+ "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)"
+ 1 2 nil (3 . 4))
+ (edg-2
+ "at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
+ 2 1 nil 0)
+
(epc
- "^Error [0-9]+ at (\\([0-9]*\\):\\([^)\n]+\\))" 2 1)
+ "^Error [0-9]+ at (\\([0-9]+\\):\\([^)\n]+\\))" 2 1)
(iar
"^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:"
@@ -265,10 +272,6 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
(sun-ada
"^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
- ;; Redundant with `mips'
-;; (ultrix
-;; "^\\(?:cfe\\|fort\\): \\(Warning\\)?[^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3 nil (1))
-
(4bsd
"\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3)))
@@ -445,17 +448,19 @@ starting the compilation process.")
(defvar compile-history nil)
(defface compilation-warning-face
- '((((type tty) (class color)) (:foreground "cyan" :weight bold))
- (((class color)) (:foreground "Orange" :weight bold))
+ '((((class color) (min-colors 16)) (:foreground "Orange" :weight bold))
+ (((class color)) (:foreground "cyan" :weight bold))
(t (:weight bold)))
"Face used to highlight compiler warnings."
:group 'font-lock-highlighting-faces
:version "21.4")
(defface compilation-info-face
- '((((type tty) (class color)) (:foreground "green" :weight bold))
- (((class color) (background light)) (:foreground "Green3" :weight bold))
- (((class color) (background dark)) (:foreground "Green" :weight bold))
+ '((((class color) (min-colors 16) (background light))
+ (:foreground "Green3" :weight bold))
+ (((class color) (min-colors 16) (background dark))
+ (:foreground "Green" :weight bold))
+ (((class color)) (:foreground "green" :weight bold))
(t (:weight bold)))
"Face used to highlight compiler warnings."
:group 'font-lock-highlighting-faces
@@ -749,6 +754,8 @@ and move to the source code that caused it.
Interactively, prompts for the command if `compilation-read-command' is
non-nil; otherwise uses `compile-command'. With prefix arg, always prompts.
+Additionally, with universal prefix arg, compilation buffer will be in
+comint mode, i.e. interactive.
To run more than one compilation at once, start one and rename
the \`*compilation*' buffer to some other name with
@@ -760,11 +767,13 @@ The name used for the buffer is actually whatever is returned by
the function in `compilation-buffer-name-function', so you can set that
to a function that generates a unique name."
(interactive
- (if (or compilation-read-command current-prefix-arg)
- (list (read-from-minibuffer "Compile command: "
- (eval compile-command) nil nil
- '(compile-history . 1)))
- (list (eval compile-command))))
+ (list
+ (if (or compilation-read-command current-prefix-arg)
+ (read-from-minibuffer "Compile command: "
+ (eval compile-command) nil nil
+ '(compile-history . 1))
+ (eval compile-command))
+ (consp current-prefix-arg)))
(unless (equal command (eval compile-command))
(setq compile-command command))
(save-some-buffers (not compilation-ask-about-save) nil)
@@ -983,8 +992,9 @@ exited abnormally with code %d\n"
;; buffer, which might not be the same as the selected window's buffer.
(save-current-buffer
(save-selected-window
- (select-window window)
- (enlarge-window (- height (window-height))))))))
+ (save-excursion
+ (select-window window)
+ (enlarge-window (- height (window-height)))))))))
(defvar compilation-menu-map
(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 @@
;;; Code:
;; TODO
-;; Support for hideshow, align.
+;; Support for align.
;; OpenMP, preprocessor highlighting.
(defvar comment-auto-fill-only-comments)
@@ -589,6 +589,53 @@ characters long.")
(make-variable-buffer-local 'f90-cache-position)
+;; Hideshow support.
+(defconst f90-end-block-re
+ (concat "^[ \t0-9]*\\<end\\>[ \t]*"
+ (regexp-opt '("do" "if" "forall" "function" "interface"
+ "module" "program" "select" "subroutine"
+ "type" "where" ) t)
+ "[ \t]*\\sw*")
+ "Regexp matching the end of a \"block\" of F90 code.
+Used in the F90 entry in `hs-special-modes-alist'.")
+
+;; Ignore the fact that FUNCTION, SUBROUTINE, WHERE, FORALL have a
+;; following "(". DO, CASE, IF can have labels; IF must be
+;; accompanied by THEN.
+;; A big problem is that many of these statements can be broken over
+;; lines, even with embedded comments. We only try to handle this for
+;; IF ... THEN statements, assuming and hoping it will be less common
+;; for other constructs. We match up to one new-line, provided ")
+;; THEN" appears on one line. Matching on just ") THEN" is no good,
+;; since that includes ELSE branches.
+;; For a fully accurate solution, hideshow would probably have to be
+;; modified to allow functions as well as regexps to be used to
+;; specify block start and end positions.
+(defconst f90-start-block-re
+ (concat
+ "^[ \t0-9]*" ; statement number
+ "\\(\\("
+ "\\(\\sw+[ \t]*:[ \t]*\\)?" ; structure label
+ "\\(do\\|select[ \t]*case\\|if[ \t]*(.*\n?.*)[ \t]*then\\|"
+ ;; Distinguish WHERE block from isolated WHERE.
+ "\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)\\)\\)"
+ "\\|"
+ "program\\|interface\\|module\\|type\\|function\\|subroutine"
+ ;; ") THEN" at line end. Problem - also does ELSE.
+;;; "\\|.*)[ \t]*then[ \t]*\\($\\|!\\)"
+ "\\)"
+ "[ \t]*")
+ "Regexp matching the start of a \"block\" of F90 code.
+A simple regexp cannot do this in fully correct fashion, so this
+tries to strike a compromise between complexity and flexibility.
+Used in the F90 entry in `hs-special-modes-alist'.")
+
+;; hs-special-modes-alist is autoloaded.
+(add-to-list 'hs-special-modes-alist
+ `(f90-mode ,f90-start-block-re ,f90-end-block-re
+ "!" f90-end-of-block nil))
+
+
;; Imenu support.
(defvar f90-imenu-generic-expression
(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."
("commands" gdb-subprompt)
("overload-choice" gdb-subprompt)
("query" gdb-subprompt)
+ ("nquery" gdb-subprompt)
("prompt-for-continue" gdb-subprompt)
("post-prompt" gdb-post-prompt)
("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."
;; Don't put repeated commands in command history many times.
(set (make-local-variable 'comint-input-ignoredups) t)
(make-local-variable 'paragraph-start)
- (set (make-local-variable 'gud-delete-prompt-marker) (make-marker)))
+ (set (make-local-variable 'gud-delete-prompt-marker) (make-marker))
+ (add-hook 'kill-buffer-hook 'gud-kill-buffer-hook nil t))
;; Cause our buffers to be displayed, by default,
;; in the selected window.
@@ -2546,10 +2547,10 @@ It is saved for when this flag is not set.")
(set-buffer obuf))))))
(defun gud-kill-buffer-hook ()
- (if gud-minor-mode
- (setq gud-minor-mode-type gud-minor-mode)))
-
-(add-hook 'kill-buffer-hook 'gud-kill-buffer-hook)
+ (setq gud-minor-mode-type gud-minor-mode)
+ (condition-case nil
+ (kill-process (get-buffer-process gud-comint-buffer))
+ (error nil)))
(defun gud-reset ()
(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."
(syntax-ppss (line-beginning-position)))))))
(defun python-comment-line-p ()
- "Return non-nil if current line has only a comment or is blank."
+ "Return non-nil iff current line has only a comment."
(save-excursion
(end-of-line)
- ;; FIXME: This looks wrong because it returns nil for empty lines. --Stef
(when (eq 'comment (syntax-ppss-context (syntax-ppss)))
(back-to-indentation)
(looking-at (rx (or (syntax comment-start) line-end))))))
@@ -1025,7 +1024,6 @@ et al.")
(let ((map (make-sparse-keymap)))
;; This will inherit from comint-mode-map.
(define-key map "\C-c\C-l" 'python-load-file)
- (define-key map "\C-c\C-z" 'python-switch-to-python) ;What for? --Stef
(define-key map "\C-c\C-v" 'python-check)
;; Note that we _can_ still use these commands which send to the
;; 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'
;; (not a name) in Python buffers from which `run-python' &c is
;; invoked. Would support multiple processes better.
(unless (comint-check-proc python-buffer)
- (let ((cmdlist (append (python-args-to-list cmd) '("-i")))
- (process-environment ; to import emacs.py
- (push (concat "PYTHONPATH=" data-directory)
- process-environment)))
+ (let* ((cmdlist (append (python-args-to-list cmd) '("-i")))
+ (path (getenv "PYTHONPATH"))
+ (process-environment ; to import emacs.py
+ (push (concat "PYTHONPATH=" data-directory
+ (if path (concat ":" path)))
+ process-environment)))
(set-buffer (apply 'make-comint "Python" (car cmdlist) nil
(cdr cmdlist)))
(setq python-buffer "*Python*"))
@@ -1278,7 +1278,6 @@ module-qualified names."
;; Fixme: I'm not convinced by this logic from python-mode.el.
(python-send-command
(if (string-match "\\.py\\'" file-name)
- ;; Fixme: make sure the directory is in the path list
(let ((module (file-name-sans-extension
(file-name-nondirectory file-name))))
(format "emacs.eimport(%S,%S)"
@@ -1309,6 +1308,7 @@ See variable `python-buffer'. Starts a new process if necessary."
Otherwise inherits from `python-mode-syntax-table'.")
(defvar view-return-to-alist)
+(eval-when-compile (autoload 'help-buffer "help-fns"))
;; Fixme: Should this actually be used instead of info-look, i.e. be
;; bound to C-h S? Can we use other pydoc stuff before python 2.2?
@@ -1394,7 +1394,8 @@ Used with `eval-after-load'."
;; Don't use `info' because it would pop-up a *info* buffer.
(with-no-warnings
(Info-goto-node (format "(python%s-lib)Miscellaneous Index"
- version)))
+ version))
+ t)
(error nil)))))
(info-lookup-maybe-add-help
: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.")
(defsubst eventp (obj)
"True if the argument is an event object."
- (or (integerp obj)
+ (or (and (integerp obj)
+ ;; Filter out integers too large to be events.
+ ;; M is the biggest modifier.
+ (zerop (logand obj (lognot (1- (lsh ?\M-\^@ 1)))))
+ (char-valid-p (event-basic-type obj)))
(and (symbolp obj)
(get obj 'event-symbol-elements))
(and (consp obj)
@@ -1119,14 +1123,14 @@ Input and output work as for subprocesses; `delete-process' closes it.
Args are NAME BUFFER HOST SERVICE.
NAME is name for process. It is modified if necessary to make it unique.
-BUFFER is the buffer (or buffer-name) to associate with the process.
+BUFFER is the buffer (or buffer name) to associate with the process.
Process output goes at end of that buffer, unless you specify
an output stream or filter function to handle the output.
BUFFER may be also nil, meaning that this process is not associated
- with any buffer
-Third arg is name of the host to connect to, or its IP address.
-Fourth arg SERVICE is name of the service desired, or an integer
-specifying a port number to connect to."
+ with any buffer.
+HOST is name of the host to connect to, or its IP address.
+SERVICE is name of the service desired, or an integer specifying
+ a port number to connect to."
(make-network-process :name name :buffer buffer
:host host :service service))
@@ -1135,14 +1139,14 @@ specifying a port number to connect to."
It returns nil if non-blocking connects are not supported; otherwise,
it returns a subprocess-object to represent the connection.
-This function is similar to `open-network-stream', except that this
-function returns before the connection is established. When the
-connection is completed, the sentinel function will be called with
-second arg matching `open' (if successful) or `failed' (on error).
+This function is similar to `open-network-stream', except that it
+returns before the connection is established. When the connection
+is completed, the sentinel function will be called with second arg
+matching `open' (if successful) or `failed' (on error).
Args are NAME BUFFER HOST SERVICE SENTINEL FILTER.
NAME, BUFFER, HOST, and SERVICE are as for `open-network-stream'.
-Optional args, SENTINEL and FILTER specifies the sentinel and filter
+Optional args SENTINEL and FILTER specify the sentinel and filter
functions to be used for this network stream."
(if (featurep 'make-network-process '(:nowait t))
(make-network-process :name name :buffer buffer :nowait t
@@ -1160,17 +1164,17 @@ is called for the new process.
Args are NAME BUFFER SERVICE SENTINEL FILTER.
NAME is name for the server process. Client processes are named by
-appending the ip-address and port number of the client to NAME.
-BUFFER is the buffer (or buffer-name) to associate with the server
-process. Client processes will not get a buffer if a process filter
-is specified or BUFFER is nil; otherwise, a new buffer is created for
-the client process. The name is similar to the process name.
+ appending the ip-address and port number of the client to NAME.
+BUFFER is the buffer (or buffer name) to associate with the server
+ process. Client processes will not get a buffer if a process filter
+ is specified or BUFFER is nil; otherwise, a new buffer is created for
+ the client process. The name is similar to the process name.
Third arg SERVICE is name of the service desired, or an integer
-specifying a port number to connect to. It may also be t to selected
-an unused port number for the server.
-Optional args, SENTINEL and FILTER specifies the sentinel and filter
-functions to be used for the client processes; the server process
-does not use these function."
+ specifying a port number to connect to. It may also be t to select
+ an unused port number for the server.
+Optional args SENTINEL and FILTER specify the sentinel and filter
+ functions to be used for the client processes; the server process
+ does not use these function."
(if (featurep 'make-network-process '(:server t))
(make-network-process :name name :buffer buffer
:service service :server t :noquery t
@@ -1725,16 +1729,17 @@ Strip text properties from the inserted text according to
(defun start-process-shell-command (name buffer &rest args)
"Start a program in a subprocess. Return the process object for it.
-Args are NAME BUFFER COMMAND &rest COMMAND-ARGS.
NAME is name for process. It is modified if necessary to make it unique.
-BUFFER is the buffer or (buffer-name) to associate with the process.
+BUFFER is the buffer (or buffer name) to associate with the process.
Process output goes at end of that buffer, unless you specify
an output stream or filter function to handle the output.
BUFFER may be also nil, meaning that this process is not associated
with any buffer
-Third arg is command name, the name of a shell command.
+COMMAND is the name of a shell command.
Remaining arguments are the arguments for the command.
-Wildcards and redirection are handled as usual in the shell."
+Wildcards and redirection are handled as usual in the shell.
+
+\(fn NAME BUFFER COMMAND &rest COMMAND-ARGS)"
(cond
((eq system-type 'vax-vms)
(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."
(choice :tag "Coding system"
(const iso-8859-1)
(const iso-8859-2)
- (const koi8-r))))
+ (const koi8-r)
+ (const windows-1251))))
:group 'ispell)
@@ -630,6 +631,10 @@ and then re-start emacs."
"[\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]"
"[^\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]"
"" nil nil nil koi8-r)
+ ("russianw" ; russianw.aff (CP1251 charset)
+ "[\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]"
+ "[^\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]"
+ "" nil nil nil windows-1251)
("slovak" ; Slovakian
"[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]"
"[^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
(equal major-mode 'message-mode)) ;GNUS 5
(concat "In article <" "\\|"
"[^,;&+=\n]+ <[^,;&+=]+> writes:" "\\|"
- message-yank-prefix "\\|"
+ message-cite-prefix-regexp "\\|"
default-prefix))
((equal major-mode 'mh-letter-mode) ; mh mail message
(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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
+static char * close_xpm[] = {
"24 24 2 1",
-" c Gray0",
-". c None",
-/* pixels */
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-"....... .... ..........",
-"....... .. .........",
-"........ . ..........",
-"........ ...........",
-"......... ............",
-"......... ...........",
-"........ ..........",
-"........ . .........",
-"....... ... ........",
-"....... ..... .........",
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-"........................"
-};
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . ",
+" . ... ",
+" .. .... ",
+" .. ... ",
+" ..... ",
+" ... ",
+" ..... ",
+" ....... ",
+" ... .... ",
+" ... .... ",
+" ... .. ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 7 1",
-" c Gray0",
-". c #424242423a3a",
-"X c #68e968e96363",
-"o c #a8b1a8b1992b",
-"O c #d3d3d3d3bdbd",
-"+ c #e419e419cd6b",
-"@ c None",
-/* pixels */
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@ @@@@@@@@@@@@@@",
-"@@@@@@ Oo @@@@@@@@@@@@@",
-"@@@@ .ooOO @@@@ @@@@@@@",
-"@@@@ +XoOOo @ Oo @@@@@@",
-"@@@@ +.oO++ .ooOO @@@@@@",
-"@@@@ XoO+++ +XoOOo @@@@@",
-"@@@@ oOO+++ +.oO++ @@@@@",
-"@@@@ oO++++ XoOO++o @@@@",
-"@@@@@ +++++ oOO++++o @@@",
-"@@@@@ o++++ oO++++++ @@@",
-"@@@@@@ ++o +++++++o @@",
-"@@@@@@ o @@ o++++o @@@",
-"@@@@@@@ @@@@@ ++o @@@@@",
-"@@@@@@@@@@ @@ o @@@@@@@",
-"@@@@@@@ @@ @@@@@@@@@",
-"@@@@@@@ @@@@@@@@@@@@",
-"@@@@@@@@@@ @@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@"
-};
+static char * copy_xpm[] = {
+"24 24 26 1",
+" c None",
+". c #000000",
+"+ c #B4B4B4",
+"@ c #F8F8F8",
+"# c #F6F6F6",
+"$ c #C3C3C3",
+"% c #E9E9E9",
+"& c #989898",
+"* c #828282",
+"= c #8A8A8A",
+"- c #E8E8E8",
+"; c #636363",
+"> c #5A5A5A",
+", c #6B6B6B",
+"' c #B3B3B3",
+") c #FFFFFF",
+"! c #D6D6D6",
+"~ c #818181",
+"{ c #A7A7A7",
+"] c #8F8F8F",
+"^ c #C6C6C6",
+"/ c #808080",
+"( c #E7E7E7",
+"_ c #6D6D6D",
+": c #767676",
+"< c #F5F5F5",
+" ",
+" ............. ",
+" .+@@@@@@@@@#$. ",
+" .@%%%%%%%%%%%. ",
+" .@&**=%+*%*+%. ",
+" .@%%%%%%%%---. ",
+" .@;>%,*+-............ ",
+" .@%%%%%%.'))))))))))!. ",
+" .@&**%*~.)))))))))))). ",
+" .@%%%%%-.){]]&)^])]^). ",
+" .@;>>%,/.)))))))))))). ",
+" .@%%%%%(.)_;):]^)^])). ",
+" .@&**%*~.)))))))))))). ",
+" .<%%%%%-.){]])]]^)&]). ",
+" .$%%%%%-.)))))))))))). ",
+" ........)_;;):]^)^]). ",
+" .)))))))))))). ",
+" .){]])]]^)&]). ",
+" .)))))))))))). ",
+" .!))))))))))!. ",
+" .............. ",
+" ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 2 1",
-" c Gray0",
-". c None",
-/* pixels */
-"........................",
-"........................",
-"........................",
-"........................",
-"........................",
-".................. .....",
-"................ ......",
-"............... .......",
-".............. ........",
-"............. .........",
-".... .... ..... ..",
-"... ... .. ... ....",
-"... ... ......",
-".... ... .........",
-".......... ............",
-"......... ............",
-"........ .. ............",
-"....... ... ............",
-"....... .. .............",
-"....... ..............",
-"........................",
-"........................",
-"........................",
-"........................"
-};
+static char * cut_xpm[] = {
+"24 24 40 1",
+" c None",
+". c #000000",
+"+ c #C9C7C2",
+"@ c #E6E4E0",
+"# c #EFEEED",
+"$ c #494946",
+"% c #73726E",
+"& c #F0EEED",
+"* c #7F7D75",
+"= c #F2F1EF",
+"- c #D2CFC8",
+"; c #E7E7E4",
+"> c #BAB5AB",
+", c #565653",
+"' c #EDECE9",
+") c #A4A097",
+"! c #817F7E",
+"~ c #4E4C48",
+"{ c #F6F5F4",
+"] c #474541",
+"^ c #EFEEEC",
+"/ c #8C8B8A",
+"( c #F3F2F0",
+"_ c #77746D",
+": c #323232",
+"< c #EBEBEA",
+"[ c #605D58",
+"} c #F5F4F3",
+"| c #CECCC7",
+"1 c #363634",
+"2 c #6F6E6D",
+"3 c #BEBDBB",
+"4 c #EAE7E4",
+"5 c #B8B5B1",
+"6 c #474747",
+"7 c #DAD8D4",
+"8 c #9B9996",
+"9 c #161615",
+"0 c #6D6B6A",
+"a c #3A3837",
+" ",
+" ",
+" . . ",
+" . . ",
+" .+. .@. ",
+" .#$ %@. ",
+" .&*. .=-. ",
+" .;>, %'). ",
+" !#*. .=-~ ",
+" .{>] ~^>. ",
+" /(_.:<-[ ",
+" .}|123>. ",
+" .456>. ",
+" .78.. ",
+" .90a. ",
+" ............. ",
+" . ... ... ... ",
+" .. .. .. .. ",
+" . . . . ",
+" .. .. .. .. ",
+" .... .. . ",
+" .... .... ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 6 1",
-" c Gray0",
-". c #65658b8b5e5e",
-"X c #934ab2448dfb",
-"o c #b35dc8c8afaf",
-"O c #e0b2e944df83",
-"+ c None",
-/* pixels */
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"+++++++++ ++++++++++",
-"++++++++ oOOOO +++++++++",
-"+++++++ OOOOOOO ++++++++",
-"++++++ oOo oOo +++++++",
-"+++++++ O +++ OO +++++++",
-"+++++++O ++++ Oo +++++++",
-"++++++++++++ OO. +++++++",
-"+++++++++++ OOX ++++++++",
-"++++++++++ OOX +++++++++",
-"+++++++++ XOX ++++++++++",
-"+++++++++ OX +++++++++++",
-"+++++++++ +++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++ ++++++++++++",
-"+++++++++ Oo +++++++++++",
-"+++++++++ oX +++++++++++",
-"++++++++++ ++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++"
-};
+static char * help_xpm[] = {
+"24 24 244 2",
+" c None",
+". c #000000",
+"+ c #454442",
+"@ c #1D1D1C",
+"# c #040404",
+"$ c #1B1B1B",
+"% c #3D3C3A",
+"& c #4D4C4B",
+"* c #2F2F2D",
+"= c #C1BFBB",
+"- c #ECEAE7",
+"; c #F5F3F0",
+"> c #F2F0EC",
+", c #E1DFDC",
+"' c #AFADAA",
+") c #272726",
+"! c #020202",
+"~ c #3F3E3E",
+"{ c #36302D",
+"] c #181818",
+"^ c #FBF8F5",
+"/ c #FEFCF8",
+"( c #FAF8F5",
+"_ c #F5F4F1",
+": c #F2F1ED",
+"< c #F1EFEB",
+"[ c #F1EEEB",
+"} c #EAE9E6",
+"| c #DAD8D4",
+"1 c #100E0E",
+"2 c #1F100E",
+"3 c #AF3A1E",
+"4 c #FBAB93",
+"5 c #FAE9E3",
+"6 c #F0EFEB",
+"7 c #E9E8E5",
+"8 c #EAE8E6",
+"9 c #ECEAE8",
+"0 c #EDEBE9",
+"a c #EDEBE8",
+"b c #EACFC6",
+"c c #D5340A",
+"d c #751904",
+"e c #100806",
+"f c #34160D",
+"g c #AF3C20",
+"h c #FCCCBD",
+"i c #F7BEAD",
+"j c #E67554",
+"k c #DFDDDB",
+"l c #DBD9D6",
+"m c #D8D7D3",
+"n c #DBDAD6",
+"o c #E3E2DE",
+"p c #ECEBE8",
+"q c #E5572D",
+"r c #E33A0B",
+"s c #D4340A",
+"t c #691504",
+"u c #100504",
+"v c #582C22",
+"w c #0F0F0F",
+"x c #FDD4C8",
+"y c #F7BFAF",
+"z c #E87554",
+"A c #D5512B",
+"B c #C68270",
+"C c #BEBDBA",
+"D c #A5A3A0",
+"E c #9C9A95",
+"F c #B9B7B2",
+"G c #D7D6D2",
+"H c #E7E5E2",
+"I c #E79A85",
+"J c #E53C0B",
+"K c #E43C0B",
+"L c #E23A0B",
+"M c #C93009",
+"N c #010000",
+"O c #040100",
+"P c #FAB19C",
+"Q c #FACCBE",
+"R c #EB8264",
+"S c #D8532D",
+"T c #C0340F",
+"U c #932006",
+"V c #141412",
+"W c #857974",
+"X c #DA370B",
+"Y c #EC7C5B",
+"Z c #E95B32",
+"` c #DE380B",
+" . c #9D2306",
+".. c #626261",
+"+. c #FEF1ED",
+"@. c #F09479",
+"#. c #DC532B",
+"$. c #C0350F",
+"%. c #942006",
+"&. c #621404",
+"*. c #E2522B",
+"=. c #F2A690",
+"-. c #E74E21",
+";. c #E23B0B",
+">. c #C99181",
+",. c #454342",
+"'. c #E5E4E2",
+"). c #FCFBFA",
+"!. c #E2D8D3",
+"~. c #C34C2A",
+"{. c #B02B07",
+"]. c #9E2D12",
+"^. c #EF8D71",
+"/. c #F09B83",
+"(. c #EADDD7",
+"_. c #272724",
+":. c #F0EEEC",
+"<. c #F3F2EF",
+"[. c #D7D6D3",
+"}. c #BFBEBB",
+"|. c #9E6153",
+"1. c #3F0D02",
+"2. c #F0B9A9",
+"3. c #F6F5F4",
+"4. c #E8E7E4",
+"5. c #DAD8D5",
+"6. c #585652",
+"7. c #F6F4F0",
+"8. c #DAD8D6",
+"9. c #C2C1BE",
+"0. c #989691",
+"a. c #0A0A08",
+"b. c #F6F4F2",
+"c. c #F4F3F1",
+"d. c #E4E3E0",
+"e. c #D3D2CE",
+"f. c #63625D",
+"g. c #DCDAD8",
+"h. c #C7C6C2",
+"i. c #ABAAA5",
+"j. c #0A0A0A",
+"k. c #FAF8F6",
+"l. c #EFEDEA",
+"m. c #DDDCD8",
+"n. c #C6C4C2",
+"o. c #3E3E39",
+"p. c #1B1B19",
+"q. c #F0EEEA",
+"r. c #E0DFDD",
+"s. c #CCCBC9",
+"t. c #C0BFBB",
+"u. c #131311",
+"v. c #676663",
+"w. c #FCFAF8",
+"x. c #D6D4D2",
+"y. c #BCBAB7",
+"z. c #3C3C3A",
+"A. c #DEDCD9",
+"B. c #7E4B3E",
+"C. c #232323",
+"D. c #CC9385",
+"E. c #FAFAF7",
+"F. c #E6E6E2",
+"G. c #CDCCCA",
+"H. c #B0B0AC",
+"I. c #EDE3DF",
+"J. c #E78468",
+"K. c #DF5D3A",
+"L. c #631909",
+"M. c #282828",
+"N. c #B46E5E",
+"O. c #FCC3B2",
+"P. c #F1A691",
+"Q. c #DCD2CC",
+"R. c #C8C6C3",
+"S. c #7E7C78",
+"T. c #E8AD9C",
+"U. c #E96139",
+"V. c #EB7452",
+"W. c #EF8E72",
+"X. c #EA8063",
+"Y. c #9E2E13",
+"Z. c #3F1811",
+"`. c #121212",
+" + c #6B433B",
+".+ c #E0A191",
+"++ c #FDD3C7",
+"@+ c #F4AD98",
+"#+ c #DE532B",
+"$+ c #C83409",
+"%+ c #B48274",
+"&+ c #383534",
+"*+ c #D6340A",
+"=+ c #E43D0F",
+"-+ c #E8582E",
+";+ c #ED7957",
+">+ c #F4B6A4",
+",+ c #F4B09D",
+"'+ c #F0E5E0",
+")+ c #F4F3EF",
+"!+ c #FDF8F6",
+"~+ c #FBCEC1",
+"{+ c #F28B6E",
+"]+ c #E44E23",
+"^+ c #D3370A",
+"/+ c #BF2F09",
+"(+ c #260800",
+"_+ c #190F0B",
+":+ c #D5350A",
+"<+ c #E43D0C",
+"[+ c #E74C1F",
+"}+ c #EFBBAB",
+"|+ c #F5F4F3",
+"1+ c #F5F3F1",
+"2+ c #EAB1A0",
+"3+ c #DE4316",
+"4+ c #C5310A",
+"5+ c #591202",
+"6+ c #0E0504",
+"7+ c #C83009",
+"8+ c #E0532B",
+"9+ c #E7E6E3",
+"0+ c #E7E6E2",
+"a+ c #DDDCD9",
+"b+ c #CFCECA",
+"c+ c #C14724",
+"d+ c #AE2907",
+"e+ c #290800",
+"f+ c #0F0705",
+"g+ c #9B2205",
+"h+ c #C1A89F",
+"i+ c #D1D0CC",
+"j+ c #CFCDCA",
+"k+ c #C7C6C3",
+"l+ c #BBBAB7",
+"m+ c #B5B4B1",
+"n+ c #A7A6A2",
+"o+ c #66564F",
+"p+ c #0B0908",
+"q+ c #010100",
+"r+ c #222221",
+"s+ c #51504B",
+"t+ c #5D5C57",
+"u+ c #3B3B37",
+" . . + @ # # $ % ",
+" . . . . & # * = - ; > , ' ) ! ~ . . . . ",
+". . { ] ^ / ( _ : > < [ } | . 1 . . ",
+" . 2 3 4 5 6 - 7 8 9 0 0 a b c d e . ",
+" . f g h i j k l m n o } p a q r s t u . . ",
+" v w x y z A B C D E F G H I J K L M . N ",
+" O P Q R S T U . . . . V W X Y Z K ` .. ",
+" ..+.@.#.$.%.. . . &.*.=.-.;.>.! . ",
+",.'.).!.~.{.. . . ].^./.(.n _.. ",
+"@ :.<.[.}.|.. 1.2.3.4.5.6.. ",
+"# 7.6 8.9.0.. a.b.c.d.e.f.. ",
+"# > < g.h.i.. j.k.l.m.n.o.. ",
+"p., q.r.s.t.u. v.w.9 x.y.. . ",
+"z.' [ 7 A.[.B.. C.D.E.F.G.H.. . ",
+" ) } 0 I.J.K.L.. M.N.O.P.Q.R.S.. . ",
+" ! | T.U.V.W.X.Y.Z.a.`. +.+++@+#+$+%+. . ",
+" &+. *+=+-+;+>+,+'+)+k.!+~+{+]+^+/+(+. . ",
+" . _+d :+L <+[+}+|+l.1+|+2+3+^+4+5+. . . ",
+" . 6+t 7+` 8+9+0+o a+[.b+c+d+e+. . . ",
+" . f+. g+h+i+j+k+l+m+n+o+. . . . ",
+" . . . p+. q+r+s+t+u+. . . . . . . ",
+" . . . . . . . . . . . . ",
+" ",
+" "};
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 @@
/* XPM */
static char * home_xpm[] = {
-"24 24 9 1",
-" c None",
-". c #020202",
-"+ c #6C7962",
-"@ c #7A8A6E",
-"# c #FEFEFE",
-"$ c #7E8E76",
-"% c #82927A",
-"& c #C8CEC4",
-"* c #E3E7E1",
-" ",
-" ",
-" ",
-" ",
-" . ... ",
-" .#. .&. ",
-" .#*%..&. ",
-" .##&&$.&. ",
-" .##&&&&$&. ",
-" .*#&&&&&&@. ",
-" .##&&&&&&&&+. ",
-" .###&&&&&&&&&+. ",
-" ...##&&&&&&&&+... ",
-" .##&&&&&&&&+. ",
-" .##....&&&&+. ",
-" .##.&&.&&&&+. ",
-" .##.&&.&&&&+. ",
-" .#*.&&.&&&&+. ",
-" .&+.++.+++++. ",
-" ............. ",
-" ",
-" ",
-" ",
-" "};
+"24 24 101 2",
+" c None",
+". c #000000",
+"+ c #212121",
+"@ c #2C2C2C",
+"# c #C1665A",
+"$ c #924B37",
+"% c #2A2A2A",
+"& c #333333",
+"* c #343434",
+"= c #242424",
+"- c #944D3A",
+"; c #A05443",
+"> c #181818",
+", c #474747",
+"' c #555555",
+") c #8D8D8D",
+"! c #383838",
+"~ c #191919",
+"{ c #974F3C",
+"] c #222222",
+"^ c #313131",
+"/ c #A1A1A1",
+"( c #676767",
+"_ c #ACACAC",
+": c #BCBCBC",
+"< c #585858",
+"[ c #141414",
+"} c #1C1C1C",
+"| c #464646",
+"1 c #666666",
+"2 c #BABABA",
+"3 c #7E7E7E",
+"4 c #D2D2D2",
+"5 c #FFFFFF",
+"6 c #4F4F4F",
+"7 c #262626",
+"8 c #232323",
+"9 c #505050",
+"0 c #B2B2B2",
+"a c #909090",
+"b c #9A9A9A",
+"c c #838383",
+"d c #171717",
+"e c #202020",
+"f c #717171",
+"g c #A6A6A6",
+"h c #616161",
+"i c #1D1D1D",
+"j c #1F1F1F",
+"k c #C4C4C4",
+"l c #CACACA",
+"m c #AEAEAE",
+"n c #D1D1D1",
+"o c #7C7C7C",
+"p c #BFBFBF",
+"q c #6C6C6C",
+"r c #EEEEEE",
+"s c #949494",
+"t c #C7C7C7",
+"u c #EBEBEB",
+"v c #7D7D7D",
+"w c #6E6E6E",
+"x c #A9A9A9",
+"y c #E99E8F",
+"z c #DD806D",
+"A c #9B5343",
+"B c #CECECE",
+"C c #626262",
+"D c #858585",
+"E c #ECA292",
+"F c #D0533A",
+"G c #934F3E",
+"H c #6D6D6D",
+"I c #ECA291",
+"J c #CF543C",
+"K c #371D16",
+"L c #5D5D5D",
+"M c #868686",
+"N c #787878",
+"O c #ECA696",
+"P c #C95C49",
+"Q c #E17C66",
+"R c #924E3D",
+"S c #888888",
+"T c #A0A0A0",
+"U c #3D1208",
+"V c #D15137",
+"W c #919191",
+"X c #879981",
+"Y c #82947C",
+"Z c #8A9B85",
+"` c #6E8467",
+" . c #5D7555",
+".. c #4C6042",
+"+. c #3F4F37",
+"@. c #303D2A",
+"#. c #7F8F7A",
+"$. c #64785E",
+"%. c #44563E",
+"&. c #657460",
+"*. c #40503A",
+" ",
+" . . ",
+" . . . . . + @ . ",
+" . # $ . . % & * = . ",
+" . - ; . > , ' ) ! ~ . ",
+" . { . ] ^ / ( _ : < [ . ",
+" . . } | 1 2 3 4 : 5 6 7 . ",
+" . 8 9 0 a 4 b 5 : 5 : c d . ",
+" . e f g 4 b 5 : 5 : 5 : 5 h i . ",
+" . j k k l 5 m 5 2 5 2 5 : 5 n o } . ",
+" . 8 m p p p p p p p p . . . . . a q = . ",
+" . . . . r 5 5 5 5 5 5 5 . s t u . v . . . . ",
+" . 4 5 . . . . . 5 . : 5 5 . w . ",
+" . x 5 . y z A . 5 . B 5 5 . C . ",
+" . D 5 . E F G . 5 . . . . . H . ",
+" . . 5 . I J K . k s L L M N . . ",
+" . . r . O P G . 5 5 5 5 5 2 . ",
+" . 2 . Q # R . : : : : : S . ",
+" . T U V # A . 5 5 5 5 5 W . ",
+" . . . . . . . . . . . . . . . . . . . . . ",
+" } X Y Z X ` ...+.@.. Y #.$.%.&.*.. ",
+" . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 9 1",
-" c Gray0",
-". c #4646424233b4",
-"X c #6f4d67895151",
-"o c #911b871c69df",
-"O c #b3d8a9b58836",
-"+ c #c280b9779c39",
-"@ c #cd0cc646ae2e",
-"# c #e0e0e4e4e0e0",
-"$ c None",
-/* pixels */
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$ $$",
-"$$$$ ################ $$",
-"$$$$ ##### O######## $$",
-"$$$$ #### oX O####### $$",
-"$$$$ @o $$",
-"$$$$ #### @o O####### $$",
-"$$$$ #### @o O##### $$",
-"$$$$ #### @o X. O## $$",
-"$$$$ +o OX oX $$",
-"$$$$ ## X +o Oo Oo oX $$",
-"$$$$ ## o +OoOOoOOOOo $$",
-"$$$$ ## O +++OOOOOOOX $$",
-"$$$$ O O++O+OOOOOX $$",
-"$$$$ ## ooO+++O+OOOOX $$",
-"$$$$ ### oO++++OOOOo. $$",
-"$$$$ ### XOO++O+OOOo $$$",
-"$$$$ o++++OOOoX $$$",
-"$$$$$$$$$ XOO+++OOoX $$$",
-"$$$$$$$$$$ oO++OOOX $$$$",
-"$$$$$$$$$$$ OO++OOX $$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$"
-};
+static char * index_xpm[] = {
+"24 24 174 2",
+" c None",
+". c #000000",
+"+ c #FDFDFD",
+"@ c #F5F5F5",
+"# c #F6F6F6",
+"$ c #D0D0D0",
+"% c #C1C1C1",
+"& c #C3C3C3",
+"* c #C6C6C6",
+"= c #C8C8C8",
+"- c #8D8D8D",
+"; c #CACACA",
+"> c #919191",
+", c #EFEFEF",
+"' c #878787",
+") c #8A8A8A",
+"! c #5C5C5C",
+"~ c #F8F8F8",
+"{ c #EAEAEA",
+"] c #CCCCCC",
+"^ c #CECECE",
+"/ c #979797",
+"( c #CDCDCD",
+"_ c #A1A1A1",
+": c #090600",
+"< c #A3A3A3",
+"[ c #C5C5C5",
+"} c #C4C4C4",
+"| c #D1D1D1",
+"1 c #D2D2D1",
+"2 c #D2D2D2",
+"3 c #9A9A9A",
+"4 c #E8E8E8",
+"5 c #949494",
+"6 c #939393",
+"7 c #574F4F",
+"8 c #FDFDFC",
+"9 c #777777",
+"0 c #7E7E7E",
+"a c #9D9D9D",
+"b c #6B6B6B",
+"c c #F1F1F1",
+"d c #ECECEC",
+"e c #CFCFCF",
+"f c #575050",
+"g c #FDFAF8",
+"h c #A5A5A5",
+"i c #B9B9B9",
+"j c #EEEEEE",
+"k c #EDEDED",
+"l c #D5D5D5",
+"m c #BABABA",
+"n c #6D6767",
+"o c #F9F1EA",
+"p c #9E9E9E",
+"q c #B5B5B5",
+"r c #D9D9D9",
+"s c #D7D7D7",
+"t c #BCBCBC",
+"u c #625C5B",
+"v c #F9EEE4",
+"w c #4F4D4A",
+"x c #646464",
+"y c #747474",
+"z c #D6D6D5",
+"A c #DFDFDF",
+"B c #A0A0A0",
+"C c #615C5B",
+"D c #F9F0E4",
+"E c #746C67",
+"F c #FEFDFC",
+"G c #FFFEFD",
+"H c #131210",
+"I c #636363",
+"J c #7C7C7C",
+"K c #F3F2F2",
+"L c #98948F",
+"M c #F9EFE3",
+"N c #A09489",
+"O c #FEFDFD",
+"P c #766D68",
+"Q c #736961",
+"R c #A3A3A2",
+"S c #A6A6A6",
+"T c #DBDBDB",
+"U c #C7C7C7",
+"V c #E8E5E2",
+"W c #97938E",
+"X c #F6E9D8",
+"Y c #84817A",
+"Z c #FBF3EA",
+"` c #908C86",
+" . c #F1EDE7",
+".. c #7B7975",
+"+. c #878786",
+"@. c #070000",
+"#. c #FAFAFA",
+"$. c #DDDDDD",
+"%. c #E2DFDC",
+"&. c #A8A199",
+"*. c #F0E0CE",
+"=. c #C8BFB4",
+"-. c #D5CCBF",
+";. c #DFD7CD",
+">. c #DAD3C9",
+",. c #DDCFC4",
+"'. c #928C84",
+"). c #A8A8A8",
+"!. c #959595",
+"~. c #040000",
+"{. c #D9D5D2",
+"]. c #D9CABB",
+"^. c #D7C8B8",
+"/. c #DECFBF",
+"(. c #D8C9B9",
+"_. c #E3D3C2",
+":. c #C9BBAC",
+"<. c #D9CEC2",
+"[. c #7F766D",
+"}. c #909090",
+"|. c #D3D3D3",
+"1. c #060100",
+"2. c #C0BDBA",
+"3. c #8C8782",
+"4. c #C2B5A7",
+"5. c #BFB4A6",
+"6. c #B8AB9D",
+"7. c #BAAD9E",
+"8. c #BEB0A2",
+"9. c #948A7F",
+"0. c #716860",
+"a. c #E2E2E2",
+"b. c #A9A9A8",
+"c. c #332C2B",
+"d. c #5D5954",
+"e. c #79736C",
+"f. c #958C80",
+"g. c #8D8379",
+"h. c #988D82",
+"i. c #706760",
+"j. c #787878",
+"k. c #E4E4E4",
+"l. c #C2C2C2",
+"m. c #201A1A",
+"n. c #57514F",
+"o. c #625C59",
+"p. c #625A53",
+"q. c #6B625A",
+"r. c #585251",
+"s. c #696764",
+"t. c #080000",
+"u. c #989898",
+"v. c #B0B0B0",
+"w. c #AFAFAF",
+"x. c #999999",
+"y. c #9D9897",
+"z. c #050000",
+"A. c #0C0303",
+"B. c #080100",
+"C. c #030000",
+"D. c #282523",
+"E. c #5A5A5A",
+"F. c #868686",
+"G. c #ECE4E2",
+"H. c #DED7D5",
+"I. c #D8D1D0",
+"J. c #E0DBD7",
+"K. c #E9E6E3",
+"L. c #FCFBFA",
+"M. c #030500",
+"N. c #0B0505",
+"O. c #14100F",
+"P. c #090806",
+"Q. c #000100",
+" ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . + @ @ @ @ @ @ @ # # # # # # # # # $ . ",
+" . @ % % % & & & & * * * * * = = = = - . ",
+" . # & & & * * * * = = = = = ; ; ; ; > . ",
+" . , ' ' ' ) ) ) ) - - - - - > > > > ! . ",
+" . ~ { { { { { { { { { { { { { { { { ; . ",
+" . # ; ; ; ] ] ] ] ] ^ ^ ^ ^ $ $ $ $ / . ",
+" . # ] ] ] ( ^ ^ ^ _ : < [ } | 1 | 2 3 . ",
+" . 4 5 5 5 / / / 6 7 8 . 9 0 - a a a b . ",
+" . ~ c d d d d d e f g . h i $ j j k * . ",
+" . ~ 2 2 2 2 l l m n o . > p q r r r < . ",
+" . ~ l l l l s s t u v w . x . y p z < . ",
+" . A B B B B < 9 . C D E F . G H . I J . ",
+" . ~ @ , , , j . K L M N O P F Q R . S . ",
+" . ~ T T T T U . V W X Y Z ` ...+.@.< . ",
+" . #.$.$.$.$.& . %.&.*.=.-.;.>.,.'.@.p . ",
+" . { ).).).).!.~.{.].^./.(._.:.<.[.@.}.. ",
+" . #.@ c c c |.1.2.3.4.5.6.7.8.9.0.@.] . ",
+" . #.a.a.a.a.l b.c.d.e.f.g.9.h.i.. j.q . ",
+" . #.a.a.a.a.k.l.j.m.n.o.p.q.r.s.t.u.q . ",
+" . a.v.v.v.v.v.w.x.y.z.A.t.B.C.D.E.F.m . ",
+" . . . . . . . . . ~.G.H.I.J.K.L.M.. . . ",
+" ~.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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 9 1",
-" c #011b011b011b",
-". c #5e0868be52d3",
-"X c #7c7c8b8b6e6e",
-"o c #8d4d97577838",
-"O c #ae51c17b9b26",
-"+ c #cedcabd6996e",
-"@ c #d305cecebaba",
-"# c #e38de39ed709",
-"$ c None",
-/* pixels */
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$ $$$$$$$$",
-"$$$$$$$$$$$ #@+ $$$$$$",
-"$$$$$$$$$$$ ###@+ $$$$$$",
-"$$$$$$$ #+++ $$$$$",
-"$$$$$$$ o@##O ++++ $$$$$",
-"$$$$$$$$ .OO. +++o $$$$$",
-"$$$$$$ #@O.. +++ $$$$$$",
-"$$$$ #@@Oo.. ++ $$$$$$",
-"$$$ #@@OOo. . $$$$$$$$",
-"$$$$ #OOO. $ $$$$$$$$$$",
-"$$$$$ #OX. $$$$$$$$$$$$$",
-"$$$$$$ O. $$$$$$$$$$$$$$",
-"$$$$$$$ . $$$$$$$$$$$$$$",
-"$$$$$$$$ $$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$",
-"$$$$$$$$$$$$$$$$$$$$$$$$"
-};
+static char * jump_to_xpm[] = {
+"24 24 144 2",
+" c None",
+". c #000000",
+"+ c #9ABC82",
+"@ c #C1E3AA",
+"# c #A0C487",
+"$ c #8F6508",
+"% c #AD671D",
+"& c #D6AF41",
+"* c #E1B744",
+"= c #B86F20",
+"- c #7E5907",
+"; c #D8E7CD",
+"> c #D9E7CF",
+", c #DDEAD2",
+"' c #E4EFDA",
+") c #EBF6DF",
+"! c #C8EBB0",
+"~ c #A2C688",
+"{ c #986F26",
+"] c #E2B946",
+"^ c #EFCD64",
+"/ c #F4D268",
+"( c #F6D469",
+"_ c #E7C24A",
+": c #D5B044",
+"< c #BC8C31",
+"[ c #1A0700",
+"} c #D7E6CD",
+"| c #B2D29C",
+"1 c #B6D69F",
+"2 c #BDDEA5",
+"3 c #C4E7AC",
+"4 c #CAEEB1",
+"5 c #A1C387",
+"6 c #CBB86E",
+"7 c #EDD97E",
+"8 c #FEE882",
+"9 c #FEE77E",
+"0 c #FDDF60",
+"a c #FBD14F",
+"b c #E4BF49",
+"c c #BB8C31",
+"d c #CFE2C3",
+"e c #B2D19C",
+"f c #B5D59F",
+"g c #BBDBA4",
+"h c #C1E3A9",
+"i c #C6E9AE",
+"j c #C3E6AB",
+"k c #A9CE8D",
+"l c #DCBA5C",
+"m c #FBE46B",
+"n c #FFEB64",
+"o c #FFE054",
+"p c #FED952",
+"q c #F8CF4E",
+"r c #C4A13E",
+"s c #8BA27B",
+"t c #618249",
+"u c #628349",
+"v c #64864B",
+"w c #66894D",
+"x c #688B4E",
+"y c #678B4D",
+"z c #6B9251",
+"A c #719755",
+"B c #55833A",
+"C c #ECC75E",
+"D c #FFED59",
+"E c #FFE757",
+"F c #FFDF54",
+"G c #FBD44F",
+"H c #E1BD48",
+"I c #B36C1F",
+"J c #608148",
+"K c #628449",
+"L c #63854A",
+"M c #65894C",
+"N c #6C9151",
+"O c #527E39",
+"P c #B39237",
+"Q c #F0C248",
+"R c #FFF25B",
+"S c #FFEB58",
+"T c #FFE155",
+"U c #FBD450",
+"V c #E3BD49",
+"W c #BC983B",
+"X c #618349",
+"Y c #628549",
+"Z c #65884B",
+"` c #4D7735",
+" . c #907934",
+".. c #DCB444",
+"+. c #FCDB52",
+"@. c #FFEF5A",
+"#. c #FFE957",
+"$. c #FEDF54",
+"%. c #F9D24F",
+"&. c #E0BA48",
+"*. c #B08F37",
+"=. c #52743B",
+"-. c #456A2F",
+";. c #608248",
+">. c #628448",
+",. c #476F31",
+"'. c #7F6B32",
+"). c #D0AF4B",
+"!. c #F5CF4E",
+"~. c #FFE255",
+"{. c #FEDA52",
+"]. c #EAC54B",
+"^. c #D0AC42",
+"/. c #9C5D1A",
+"(. c #5A7B42",
+"_. c #456C2F",
+":. c #6F5C23",
+"<. c #A78833",
+"[. c #F0C54A",
+"}. c #FFDA52",
+"|. c #FFDE53",
+"1. c #C39032",
+"2. c #886423",
+"3. c #BC9D3B",
+"4. c #F0C84E",
+"5. c #FFD551",
+"6. c #FED751",
+"7. c #FDD550",
+"8. c #EDC74C",
+"9. c #E5BF49",
+"0. c #CCA941",
+"a. c #AB7727",
+"b. c #B1822D",
+"c. c #DCB746",
+"d. c #DFBA47",
+"e. c #EDC64C",
+"f. c #E9C34B",
+"g. c #D6B144",
+"h. c #C19D3D",
+"i. c #AB7C2B",
+"j. c #BC7222",
+"k. c #BB983B",
+"l. c #B09638",
+"m. c #A2621B",
+" ",
+" ",
+" . ",
+" . . ",
+" . + . . . . . . . ",
+" . . . . . . @ # . . $ % & * = - . . ",
+" . ; > , ' ) ! ! ~ . { ] ^ / ( _ : < [ . ",
+" . } | 1 2 3 4 4 3 5 . 6 7 8 9 0 a b c . ",
+" . d e f g h i i h j k . l m n o p q r - . ",
+" . s t u v w x x y z A B . C D E F G H I . ",
+" . s J t K L v v M N O . P Q R S T U V W . ",
+" . s J J t X u Y Z ` . ...+.@.#.$.%.&.*.. ",
+" . =.-.-.-.-.;.>.,.. '.).!.E E ~.{.].^./.. ",
+" . . . . . . (._.. :.<.[.}.|.|.{.%.V 1.$ . ",
+" . -.. . 2.3.4.5.6.7.8.9.0.a.. ",
+" . . . . b.c.d.e.f.g.h.i.. . ",
+" . . $ j.k.l.m.$ . . ",
+" . . . . . . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
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 @@
/* XPM */
static char * left_arrow_xpm[] = {
-"24 24 9 1",
+"24 24 43 1",
" c None",
-". c #020202",
-"+ c #121A12",
-"@ c #78A16E",
-"# c #86AD7D",
-"$ c #B2C6AE",
-"% c #263222",
-"& c #E7EDE6",
-"* c #497241",
+". c #000000",
+"+ c #B9D0B9",
+"@ c #CDDECB",
+"# c #B6C7B6",
+"$ c #B1C9B0",
+"% c #B3C4B3",
+"& c #B4CBB2",
+"* c #B5CEB5",
+"= c #B7CCB5",
+"- c #B9CEB7",
+"; c #BAD1BA",
+"> c #BBCFBA",
+", c #BBD0B9",
+"' c #B2C9B0",
+") c #7EAB78",
+"! c #AAC7A8",
+"~ c #B3CAB1",
+"{ c #B0C9B0",
+"] c #B0C9AE",
+"^ c #AEC7AC",
+"/ c #AAC5A8",
+"( c #A9C4A7",
+"_ c #698267",
+": c #2D2D2D",
+"< c #CFDFCC",
+"[ c #ADC8AB",
+"} c #B0C7AE",
+"| c #ADC6AB",
+"1 c #678C63",
+"2 c #9BAD9A",
+"3 c #85AE81",
+"4 c #87AF84",
+"5 c #87B083",
+"6 c #88AF84",
+"7 c #88B085",
+"8 c #86AF82",
+"9 c #547150",
+"0 c #3C5235",
+"a c #5B7950",
+"b c #4A6342",
+"c c #3B5035",
+"d c #415639",
" ",
" ",
" ",
-" ",
-" ",
-" .. ",
-" ..$. ",
-" ..&&$. ",
-" ..&&&&$. ",
-" ..&&&&&&$. ",
-" .+&&&&&&&&$. ",
-" ..$&&&&&&&&&$% ",
-" ..**@@@#####@. ",
-" ..**@#@###@. ",
-" ..**@#@#@. ",
-" ..**@@@. ",
-" ..*@*. ",
-" ..*. ",
-" .. ",
-" ",
+" . ",
+" .. ",
+" .+. ",
+" .@#. ",
+" .@$%........ ",
+" .@&*=-;->,'). ",
+" .@!~{]^///^(_. ",
+" :<[}||[!^^}^[1. ",
+" .23444445645789. ",
+" .0aaaaaaaaaaab. ",
+" .0aaaaaaaaaab. ",
+" .0aabccccccd. ",
+" .0ab........ ",
+" .0b. ",
+" .b. ",
+" .. ",
+" . ",
" ",
" ",
" ",
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 7 1",
-" c Gray0",
-". c #61b761b7600a",
-"X c #828282827474",
-"o c #a5d8a5d89550",
-"O c #d305d305bc3c",
-"+ c #ea03ea03d271",
-"@ c None",
-/* pixels */
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@",
-"@@@@@@@@@@@@@ @@@@@@@@@@",
-"@@@@@@@@@@@ o @@@@@@@@@",
-"@@@@@@@@@ oO+ @@@@@@@@@",
-"@@@@@@@ oOOOO+ @@@@@@@@",
-"@@@@@ oOOOOOO+o @@@@@@@",
-"@@@@ ..OOOOOO+++.@@@@@@@",
-"@@@@ +.OOOOO+++++ @@@@@@",
-"@@@@ ++.OOO++++++o @@@@@",
-"@@@@ ++.oOO+++++++ @@@@@",
-"@@@@ +.oOO+++++++++ @@@@",
-"@@@@ oOO++++++++++O @@@",
-"@@@@ .OOO+++++++++++O @@",
-"@@@@ oOO++++++++++++X @@",
-"@@@@@ +++++++++++++ @@@",
-"@@@@@ O++++++++++O @@@@@",
-"@@@@@@.+++++++++X @@@@@@",
-"@@@@@@ +++++++O @@@@@@@@",
-"@@@@@@@ +++++o @@@@@@@@@",
-"@@@@@@@ O++O. @@@@@@@@@@",
-"@@@@@@@@ +o @@@@@@@@@@@@",
-"@@@@@@@@@ @@@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@@@@@@@@@"
-};
+static char * new_xpm[] = {
+"24 24 127 2",
+" c None",
+". c #000000",
+"+ c #D3D3D3",
+"@ c #F6F6F6",
+"# c #FFFFFF",
+"$ c #F9F9F9",
+"% c #DADADA",
+"& c #585858",
+"* c #C7C7C7",
+"= c #D1D1D1",
+"- c #D6D6D6",
+"; c #FEFEFE",
+"> c #FDFDFD",
+", c #C0C0C0",
+"' c #E1E1E1",
+") c #F0F0F0",
+"! c #9B9B9B",
+"~ c #FCFCFB",
+"{ c #FBFBFB",
+"] c #AFAFAE",
+"^ c #E9E9E9",
+"/ c #DFDFDF",
+"( c #8F8F8F",
+"_ c #FAFAF9",
+": c #F9F9F8",
+"< c #A4A4A3",
+"[ c #F4F4F4",
+"} c #CFCFCF",
+"| c #A2A2A2",
+"1 c #F8F8F7",
+"2 c #F8F7F6",
+"3 c #9E9E9E",
+"4 c #F7F6F5",
+"5 c #F6F6F4",
+"6 c #F4F3F2",
+"7 c #DEDDDC",
+"8 c #D3D2D0",
+"9 c #B7B7B5",
+"0 c #9F9E9D",
+"a c #706F6F",
+"b c #65625A",
+"c c #F5F4F3",
+"d c #F2F2F0",
+"e c #E4E4E2",
+"f c #DAD9D7",
+"g c #D8D8D6",
+"h c #CDCCCA",
+"i c #AFAEAC",
+"j c #88847B",
+"k c #F3F3F1",
+"l c #EFEFED",
+"m c #EEEDEB",
+"n c #EDECEA",
+"o c #E9E8E6",
+"p c #D5D4D3",
+"q c #C4C3C2",
+"r c #8F8A81",
+"s c #F6F5F4",
+"t c #F5F5F3",
+"u c #F1F1EF",
+"v c #F1F0EE",
+"w c #ECEBE9",
+"x c #EAE9E7",
+"y c #E5E4E2",
+"z c #E4E3E0",
+"A c #D2D1CE",
+"B c #8D887E",
+"C c #F3F2F1",
+"D c #F0F0EE",
+"E c #F0EFED",
+"F c #EFEEEC",
+"G c #E8E7E5",
+"H c #E5E4E1",
+"I c #E2E1DE",
+"J c #E1DFDC",
+"K c #979288",
+"L c #A49E93",
+"M c #E8E7E4",
+"N c #E7E6E3",
+"O c #E3E2DF",
+"P c #E2E0DD",
+"Q c #E1E0DC",
+"R c #E0DFDB",
+"S c #A19C90",
+"T c #EDEDEB",
+"U c #EBEAE8",
+"V c #E9E8E5",
+"W c #E6E4E1",
+"X c #E3E2DE",
+"Y c #DFDEDA",
+"Z c #DEDDD9",
+"` c #DDDCD8",
+" . c #A19B90",
+".. c #E7E5E2",
+"+. c #E4E3DF",
+"@. c #DCDBD7",
+"#. c #E6E5E2",
+"$. c #E5E4E0",
+"%. c #E2E1DD",
+"&. c #DBD9D5",
+"*. c #D9D7D3",
+"=. c #9F998D",
+"-. c #E4E2DF",
+";. c #DDDBD7",
+">. c #DCDAD6",
+",. c #D8D6D2",
+"'. c #9E988D",
+"). c #EDEDED",
+"!. c #E1E0DD",
+"~. c #E0DEDA",
+"{. c #D8D6D1",
+"]. c #D7D5D1",
+"^. c #9D978B",
+"/. c #E1DFDB",
+"(. c #DEDCD8",
+"_. c #D7D6D1",
+":. c #D5D3CE",
+"<. c #9B958A",
+"[. c #999891",
+"}. c #A39E92",
+"|. c #A39D92",
+"1. c #A39D91",
+"2. c #A29C90",
+"3. c #A19B8F",
+"4. c #9D978C",
+"5. c #9B968A",
+"6. c #676359",
+" ",
+" . . . . . . . . . . . . . ",
+" . + @ # # # # # # # # $ % & . ",
+" . @ # # # # # # # # # # * = - . ",
+" . # # # # # # # ; # ; > , ' ) ! . ",
+" . # # # # # ; > ~ > ~ { ] ^ # / ( . ",
+" . # # # ; > ~ { _ { _ : < ) # [ } | . ",
+" . # ; > ~ { _ : 1 : 1 2 3 . . . . . . . ",
+" . # ~ { _ : 1 2 4 2 4 5 6 7 8 9 0 a b . ",
+" . # _ : 1 2 4 5 c 5 c 6 d e f g h i j . ",
+" . # 1 2 4 5 c 6 k 6 k d l m n o p q r . ",
+" . # s t 6 6 k d u d u v m w x y z A B . ",
+" . # 6 C d D l v E v E F w G H z I J K . ",
+" . # 6 C d D l v E v E F w G H z I J L . ",
+" . # D l l F m n n n n w M N O P Q R S . ",
+" . # T n w w w U V U V V H W X Y Z ` .. ",
+" . # U o o G M M N M N ..+.X R Z ` @. .. ",
+" . # N #.#.#.H W $.W $.+.%.R Z @.&.*.=.. ",
+" . $ z O X -.+.%.X %.X Q Q Z ;.>.*.,.'.. ",
+" . ).!.J Q R %.R Q R Q Y ~.;.>.*.{.].^.. ",
+" . = /.~.Y Z R Z ~.Z ~.(.(.>.>.,._.:.<.. ",
+" . [.}.L |.1.|.S 2.S 2.3. .=.=.4.4.5.6.. ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 4 1",
-" c Gray0",
-". c #999990907b7b",
-"X c #fffffefef7f7",
-"o c None",
-/* pixels */
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooo oooooooo",
-"ooooooooooo .. ooooooo",
-"oooo oo ....XXo ooo",
-"ooo .. ....XXXX .. ooo",
-"ooo .....XXXXX .... ooo",
-"oooo ..XXXXX ...... ooo",
-"oooo ..XXX ........ ooo",
-"ooooo .XX .......... ooo",
-"ooooo ..X .......... ooo",
-"oooooo .X .......... ooo",
-"oooooo .. ........ oooo",
-"ooooooo . ...... oooooo",
-"ooooooo . ..... oooooooo",
-"oooooooo ... ooooooooo",
-"oooooooo . ooooooooooo",
-"ooooooooo ooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo",
-"oooooooooooooooooooooooo"
-};
+static char * open_xpm[] = {
+"24 24 173 2",
+" c None",
+". c #000000",
+"+ c #010100",
+"@ c #B5B8A5",
+"# c #E4E7D2",
+"$ c #878A76",
+"% c #33342B",
+"& c #0B0B0B",
+"* c #E2E5CF",
+"= c #CFD4AF",
+"- c #CED3AE",
+"; c #B2B696",
+"> c #2D2D25",
+", c #23241D",
+"' c #9D9F90",
+") c #C6CAA6",
+"! c #C4C9A5",
+"~ c #C6CBA7",
+"{ c #C7CCA8",
+"] c #C9CEA9",
+"^ c #555847",
+"/ c #1A1B15",
+"( c #20201A",
+"_ c #D4D6C2",
+": c #BEC2A0",
+"< c #B3B896",
+"[ c #B0B595",
+"} c #B3B797",
+"| c #B6BB99",
+"1 c #BBC09E",
+"2 c #BCC19F",
+"3 c #81856C",
+"4 c #3E3F32",
+"5 c #010101",
+"6 c #DADDC8",
+"7 c #AFB494",
+"8 c #AAAF8F",
+"9 c #A3A789",
+"0 c #A6AA8B",
+"a c #A9AD8E",
+"b c #A7AB8D",
+"c c #A4A88A",
+"d c #A1A588",
+"e c #AAAD96",
+"f c #B3B5A5",
+"g c #B8BBAA",
+"h c #BABCAB",
+"i c #C1C3B2",
+"j c #C7CAB7",
+"k c #CACDBB",
+"l c #BABDA8",
+"m c #0C0C09",
+"n c #DDDFCB",
+"o c #969B7E",
+"p c #9DA286",
+"q c #95987C",
+"r c #96997E",
+"s c #9A9D81",
+"t c #999D80",
+"u c #9DA184",
+"v c #A5AA8B",
+"w c #A4A98A",
+"x c #A3A889",
+"y c #A2A588",
+"z c #A2A587",
+"A c #9FA386",
+"B c #9B9E83",
+"C c #898D74",
+"D c #D8DBC9",
+"E c #84866E",
+"F c #7D8169",
+"G c #151612",
+"H c #D7DAC9",
+"I c #797D67",
+"J c #3D3F34",
+"K c #E0E0D9",
+"L c #EBEDDD",
+"M c #E8EBD9",
+"N c #E7EAD8",
+"O c #E3E6D4",
+"P c #DEE1D0",
+"Q c #DADCCC",
+"R c #DADCD1",
+"S c #2B2C28",
+"T c #D7DAC6",
+"U c #6F735E",
+"V c #0D0D0D",
+"W c #F4F4EC",
+"X c #CACFAB",
+"Y c #C6CBA8",
+"Z c #C2C6A4",
+"` c #ABB091",
+" . c #23251E",
+".. c #494B3D",
+"+. c #DCDCD4",
+"@. c #EAECDD",
+"#. c #CDD2AD",
+"$. c #CCD1AC",
+"%. c #CACFAA",
+"&. c #BABF9D",
+"*. c #B5B999",
+"=. c #81836C",
+"-. c #070806",
+";. c #D5D8C4",
+">. c #161616",
+",. c #F2F2EA",
+"'. c #C9CEAA",
+"). c #C8CDA9",
+"!. c #C4C9A6",
+"~. c #C1C5A3",
+"{. c #BCC09F",
+"]. c #B6BB9A",
+"^. c #B0B494",
+"/. c #9DA185",
+"(. c #535445",
+"_. c #B6B8A7",
+":. c #747470",
+"<. c #ECECE2",
+"[. c #C3C8A5",
+"}. c #C2C7A4",
+"|. c #C0C5A2",
+"1. c #BFC4A1",
+"2. c #BDC2A0",
+"3. c #B9BD9C",
+"4. c #B9BE9D",
+"5. c #A9AD8F",
+"6. c #A3A78A",
+"7. c #80836D",
+"8. c #020201",
+"9. c #A6A998",
+"0. c #B8BC9B",
+"a. c #AFB394",
+"b. c #ACB091",
+"c. c #A8AC8E",
+"d. c #A6AA8C",
+"e. c #9FA286",
+"f. c #9B9F83",
+"g. c #9A9D82",
+"h. c #8A8D75",
+"i. c #4F5243",
+"j. c #070705",
+"k. c #9E9F91",
+"l. c #E5E6DA",
+"m. c #ADB192",
+"n. c #A5A98C",
+"o. c #9FA387",
+"p. c #999D81",
+"q. c #95987E",
+"r. c #92957B",
+"s. c #8C8F76",
+"t. c #8A8D74",
+"u. c #71735F",
+"v. c #080908",
+"w. c #E3E5D9",
+"x. c #C0C3AF",
+"y. c #94987C",
+"z. c #8F9379",
+"A. c #8B8F75",
+"B. c #8A8E74",
+"C. c #888C73",
+"D. c #858970",
+"E. c #868971",
+"F. c #82866E",
+"G. c #80836C",
+"H. c #7D8069",
+"I. c #797C66",
+"J. c #727560",
+"K. c #717460",
+"L. c #71745F",
+"M. c #6A6D59",
+"N. c #434538",
+"O. c #080907",
+"P. c #050504",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" + @ # # # # # $ % ",
+" & * = = = - - ; > ",
+", ' * ) ! ~ { ] ] ^ / ",
+"( _ : < [ } | 1 2 3 4 5 . . . . . . . ",
+", 6 7 8 9 0 8 a b c d e f g h i j k l . ",
+"m n o p q r s t r u v w x y 9 z A B C . ",
+". D E F G . . . . . . . . . . . . . . . 5 5 ",
+". H I J K L M M M M M M M M M M M N O P Q R S ",
+". T U V W = = = = = = = = = - - - X Y Z 1 ` . ",
+". T ..+.@.#.- - #.- #.#.#.#.#.$.%.Y Z &.*.=.-. ",
+". ;.>.,.X %.X %.'.%.'.{ ).).Y !.~.{.].^./.(.m ",
+". _.:.<.[.}.}.Z |.Z 1.2.|.2.3.4.} [ 5.6.7.8. ",
+". 9.+.0.0.*.} } [ [ a.a.a.b.c.d.e.f.g.h.i.j. ",
+". k.l.m.5.d.n.6.6.d o.e.f.p.q.r.s.t.t.u.v. ",
+". w.x.y.z.A.B.C.C.D.E.F.G.H.I.J.K.L.M.N.O. ",
+" . . . . . . . . . . . . . . . . . . P. ",
+" ",
+" ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 5 1",
-" c Gray0",
-". c #62ee62ee62ee",
-"X c Gray68",
-"o c Gray82",
-"O c None",
-/* pixels */
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOO OOOOOOOOOOOO",
-"OOOOOOO ooo OOOOOO OOOO",
-"OOOOO ooooo OOO OOO",
-"OOO oo. .Xoo OO OOO",
-"OO ooo.oX..oo OOOOO OOOO",
-"OO ooo.X..oooo OOOOOOOOO",
-"OOO oo..Xooooo O OOOOOO",
-"OOO oooooooooo oX OOOOO",
-"OOOO ooooooo XXoo OOOOO",
-"OOOO ooooooo o.XooX OOOO",
-"OOOOO oooooo o.Xooo OOOO",
-"OOOOO oooooo .XooooX OOO",
-"OOOOOO ooooX XooooooX OO",
-"OOOOOO XXOXX Xooooooo OO",
-"OOOOOOO XXXX oooooooX O",
-"OOOOOOO XX O XooooX OO",
-"OOOOOOOO OOOO ooX OOOO",
-"OOOOOOOOOOOOOO X OOOOOO",
-"OOOOOOOOOOOOOOO OOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO"
-};
+static char * paste_xpm[] = {
+"24 24 89 1",
+" c None",
+". c #000000",
+"+ c #B9B9B9",
+"@ c #FEFEFE",
+"# c #F9F9F9",
+"$ c #757575",
+"% c #F5F5E8",
+"& c #565651",
+"* c #FFFFFF",
+"= c #A0A0A0",
+"- c #939393",
+"; c #7C7C7C",
+"> c #C5C5BB",
+", c #CFC6A0",
+"' c #D7CEAA",
+") c #ADA689",
+"! c #4B483C",
+"~ c #6D6D6D",
+"{ c #6C6C6C",
+"] c #A9A9A9",
+"^ c #3D3A30",
+"/ c #979178",
+"( c #C1B898",
+"_ c #8A793D",
+": c #C3BB9A",
+"< c #AFA78A",
+"[ c #444236",
+"} c #FAFAFA",
+"| c #EFEFEF",
+"1 c #C7C7C7",
+"2 c #D8D8D8",
+"3 c #D2D2D2",
+"4 c #7B7B7B",
+"5 c #302E26",
+"6 c #89846C",
+"7 c #C4BC9A",
+"8 c #847235",
+"9 c #C5C5C5",
+"0 c #A7A7A7",
+"a c #ADADAD",
+"b c #9A9A9A",
+"c c #9B9B9B",
+"d c #868686",
+"e c #424242",
+"f c #847033",
+"g c #C9C09E",
+"h c #464337",
+"i c #35332A",
+"j c #2D2B23",
+"k c #C6BE9D",
+"l c #826F33",
+"m c #7F7964",
+"n c #4C493C",
+"o c #171612",
+"p c #13120F",
+"q c #3E3B31",
+"r c #282210",
+"s c #474438",
+"t c #B3B3B3",
+"u c #D6D6D6",
+"v c #B7AE90",
+"w c #B1AA8C",
+"x c #37352B",
+"y c #151410",
+"z c #8F8F8F",
+"A c #989898",
+"B c #C6C6C6",
+"C c #B9B293",
+"D c #11100D",
+"E c #434035",
+"F c #636363",
+"G c #767676",
+"H c #AAA48B",
+"I c #A5A086",
+"J c #A19A7F",
+"K c #312F26",
+"L c #AFA88C",
+"M c #050403",
+"N c #12110E",
+"O c #A9A489",
+"P c #A39E85",
+"Q c #EBE7D0",
+"R c #D2C9A5",
+"S c #A29053",
+"T c #8E7C3D",
+"U c #88793B",
+"V c #806C2F",
+"W c #78652B",
+"X c #251F0C",
+" .... ",
+" ......+@#$...... ",
+".%%%%%&*=-;&>%%%,. ",
+".%''')!*~{]^/(''_. ",
+".%::<[}|123456<78. ",
+".%''!900abcde!)'f. ",
+".%g:6hijjjjj56<kl. ",
+".%'''////////(''l. ",
+".%g::::mnopppp^qr.... ",
+".%'''''st***********u. ",
+".%vwwwwx*************. ",
+".%'''''y*0zzA**Bz*zB*. ",
+".%CwwwwD*************. ",
+".%'''''E*~F*GzzB*Bz**. ",
+".%HIJJJK*************. ",
+".%'''''E*0zz*zzzB*Az*. ",
+".%LIJJJM*************. ",
+".%'''''N*~F*GzzB*Bz**. ",
+".%OPJJJK*************. ",
+".Q'''''E*0zz*zzzB*Az*. ",
+".RSTUVWX*************. ",
+" .......u***********u. ",
+" ............. ",
+" "};
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 @@
/* XPM */
static char * preferences_xpm[] = {
-"24 24 8 1",
+"24 24 87 1",
" c None",
". c #000000",
-"+ c #E1E0E0",
-"@ c #D7C99B",
-"# c #9A6C4E",
-"$ c #A4A199",
-"% c #858579",
-"& c #AD8E30",
-" ",
-" ",
-" ",
-" .. ",
-" ..++. . ",
-" ..++++. .@. ",
-" ...+++++++. .@#. ",
-" ..++++++++++. .@#. ",
-" .++++++#++++++.@#. ",
-" .+++++#++++++.@#. ",
-" .++#+#+++++.@#. ",
-" .++#$#++++.@#.+. ",
-" .++##+++.@#.++@. ",
-" .++++++.@#.+++@%. ",
-" .++++&+..@$$$$%. ",
-" .++++..$$$$$$@. ",
-" .+$%%$+++++.. ",
-" .+++++++++. ",
-" .++++++.. ",
-" .++++@. ",
-" .++.. ",
-" .. ",
-" ",
+"+ c #BAB5AB",
+"@ c #D0CDC6",
+"# c #88857D",
+"$ c #C9C6BE",
+"% c #CCC8C1",
+"& c #E5E3E0",
+"* c #FFFFFF",
+"= c #757575",
+"- c #2E2E2E",
+"; c #F6F5F5",
+"> c #CCCCCC",
+", c #AFAFAF",
+"' c #D3D1CB",
+") c #C1C0BF",
+"! c #F0EFED",
+"~ c #797772",
+"{ c #DCDCDC",
+"] c #A5A19C",
+"^ c #EAE9E5",
+"/ c #F3F1F0",
+"( c #EDEDED",
+"_ c #A19D96",
+": c #C1BDB4",
+"< c #DBD8D3",
+"[ c #D9D6D1",
+"} c #89857E",
+"| c #FCFCFC",
+"1 c #EAE9E6",
+"2 c #F5F4F3",
+"3 c #C6C2BA",
+"4 c #F0EFEE",
+"5 c #F4F4F3",
+"6 c #CBC7C0",
+"7 c #ECECEB",
+"8 c #676560",
+"9 c #54524D",
+"0 c #777676",
+"a c #797978",
+"b c #85827E",
+"c c #79756F",
+"d c #7590AE",
+"e c #A4BAD0",
+"f c #90A6BE",
+"g c #9F9F9E",
+"h c #BEBDBC",
+"i c #B8B4AD",
+"j c #87837C",
+"k c #D3DFEA",
+"l c #A2AEBC",
+"m c #9DB6CE",
+"n c #637B95",
+"o c #E2E2E2",
+"p c #EEEEED",
+"q c #849CB6",
+"r c #D7E2ED",
+"s c #8D98A5",
+"t c #9DB8D2",
+"u c #607791",
+"v c #EDEDEC",
+"w c #99ADC3",
+"x c #DFE7F0",
+"y c #8193A9",
+"z c #586D84",
+"A c #5B7189",
+"B c #F1F1F1",
+"C c #EEEDEB",
+"D c #A7A6A5",
+"E c #726F6A",
+"F c #A1B4C8",
+"G c #EEF3F6",
+"H c #60768F",
+"I c #DEDDDC",
+"J c #787776",
+"K c #4E4E4D",
+"L c #91A6BE",
+"M c #F0F4F7",
+"N c #97A5B6",
+"O c #BFBEBD",
+"P c #AAAAA9",
+"Q c #ACACAB",
+"R c #B0C6DB",
+"S c #EDF2F6",
+"T c #818A95",
+"U c #6C85A1",
+"V c #C0D1E2",
+" .. ",
+" .+@#. ",
+" .$%+. .. ",
+" .&$. .*=. ",
+" .. -;$. .*>,. ",
+" .' ..)!+~. .{,. ",
+" .]%%^/+++. .(.. ",
+" ._:%$<[+}. .|. ",
+" .....123}..>. ",
+" .456.,. ",
+" .7.,.. ",
+" .,.89. ",
+" ....,.0abc. ",
+" .def.. .ghij. ",
+" .dklmn. .op6}. ",
+" .qrsntu. .v/$}. ",
+" .wxyztdA. .BCDE..",
+" .FGyHtdA. .IJK,.",
+" .LMNHtdA. .OPQ.",
+" .RSTtdA.. ... ",
+" .UtVLA.. ",
+" .UUn.. ",
+" ... ",
" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 6 1",
-" c #043904390439",
-". c #40403f3f3f3f",
-"X c #5a1a5a0458f3",
-"o c #a74da686a5ec",
-"O c #e88de7c9e66c",
-"+ c None",
-/* pixels */
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++ ++++++++++",
-"+++++++++++ OOX +++++++",
-"++++++++++ OOOOOO. +++",
-"+++++++++ OOOOOOOOOo +++",
-"+++++++++.OOOOOOOOO ++++",
-"+++++++ oOOOOOOOOX+++++",
-"+++++ OooXOOOOOOo ++++",
-"+++ OOOOOoXXooOO.XX ++",
-"++ ooOOOOOOOOoXXX.X.. ++",
-"++ ooooOOOOOOOOOO.... ++",
-"++ ooooooOOOOOOO..... ++",
-"++ XooooooooOOO...... ++",
-"++ X.XoooooooX....... ++",
-"++ XX...XooooX...... ++",
-"+++ XXXX...XX..... ++++",
-"+++++ .XXXXX... +++++",
-"++++++++ .XX.. +++++++",
-"+++++++++++ ++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++",
-"++++++++++++++++++++++++"
-};
+static char * print_xpm[] = {
+"24 24 175 2",
+" c None",
+". c #000000",
+"+ c #C7C7C7",
+"@ c #FAFAFA",
+"# c #FCFCFC",
+"$ c #FBFBFB",
+"% c #F8F8F8",
+"& c #AFAFAF",
+"* c #F9F9F9",
+"= c #E5E5E5",
+"- c #E3E3E3",
+"; c #E2E2E2",
+"> c #E0E0E0",
+", c #DFDFDF",
+"' c #DCDCDC",
+") c #DBDBDB",
+"! c #B6B6B6",
+"~ c #6B6B6B",
+"{ c #676767",
+"] c #818181",
+"^ c #E7E7E7",
+"/ c #606060",
+"( c #A0A0A0",
+"_ c #DADADA",
+": c #E1E1E1",
+"< c #B7B7B7",
+"[ c #FDFDFD",
+"} c #EFEFEF",
+"| c #EEEEEE",
+"1 c #EDEDED",
+"2 c #ECECEC",
+"3 c #EBEBEB",
+"4 c #E9E9E9",
+"5 c #E8E8E8",
+"6 c #BFBFBF",
+"7 c #8A8A8A",
+"8 c #6A6A6A",
+"9 c #9E9E9E",
+"0 c #F6F6F6",
+"a c #909090",
+"b c #A2A2A2",
+"c c #AAAAAA",
+"d c #F4F4F4",
+"e c #CECECE",
+"f c #ADADAD",
+"g c #AEAEAE",
+"h c #BEBEBE",
+"i c #A6A6A6",
+"j c #CDCDCD",
+"k c #F5F5F5",
+"l c #DEDEDE",
+"m c #DDDDDD",
+"n c #C9C9C9",
+"o c #878787",
+"p c #888888",
+"q c #D0D0D0",
+"r c #6E6E6E",
+"s c #797979",
+"t c #D1D1D1",
+"u c #A1A1A1",
+"v c #B3B3B3",
+"w c #FFFFFF",
+"x c #CACACA",
+"y c #A7A7A7",
+"z c #A5A5A5",
+"A c #A4A4A4",
+"B c #A3A3A3",
+"C c #87847C",
+"D c #EAE8E3",
+"E c #8D8982",
+"F c #53524C",
+"G c #807D74",
+"H c #AAA9A5",
+"I c #BAB5AB",
+"J c #F3F3F3",
+"K c #C3C1BD",
+"L c #8B8B89",
+"M c #E6E5E1",
+"N c #F9F9F8",
+"O c #FAFAF9",
+"P c #F9F9F7",
+"Q c #F7F6F5",
+"R c #F7F7F4",
+"S c #F6F5F4",
+"T c #F2F1EE",
+"U c #F0EFEC",
+"V c #E5E5E4",
+"W c #9F9F9F",
+"X c #DFDED9",
+"Y c #A4A3A1",
+"Z c #6C6B6A",
+"` c #F5F4F3",
+" . c #D5D5D5",
+".. c #D3D3D3",
+"+. c #D4D4D3",
+"@. c #D4D4D4",
+"#. c #A9A9A9",
+"$. c #B5B5B5",
+"%. c #CDCDCB",
+"&. c #B5B5B4",
+"*. c #DCDAD3",
+"=. c #6B6B6A",
+"-. c #999896",
+";. c #918F87",
+">. c #999895",
+",. c #E6E4E1",
+"'. c #F0EEEC",
+"). c #FAF9F9",
+"!. c #F9F8F7",
+"~. c #F8F7F6",
+"{. c #F8F8F7",
+"]. c #F4F3F1",
+"^. c #F2F1EF",
+"/. c #565655",
+"(. c #858482",
+"_. c #9C9B99",
+":. c #6B6A68",
+"<. c #585858",
+"[. c #5E5C57",
+"}. c #524F4B",
+"|. c #4A4845",
+"1. c #4B4A46",
+"2. c #4B4946",
+"3. c #4A4844",
+"4. c #494743",
+"5. c #484642",
+"6. c #474541",
+"7. c #464440",
+"8. c #514F4B",
+"9. c #53514E",
+"0. c #7B7A77",
+"a. c #797771",
+"b. c #949391",
+"c. c #989694",
+"d. c #868480",
+"e. c #6E6C66",
+"f. c #706D67",
+"g. c #5C5955",
+"h. c #67645F",
+"i. c #5B5954",
+"j. c #585651",
+"k. c #5D5B56",
+"l. c #595652",
+"m. c #53504C",
+"n. c #575450",
+"o. c #595752",
+"p. c #5C5956",
+"q. c #5B5956",
+"r. c #61615E",
+"s. c #696861",
+"t. c #77756F",
+"u. c #7E7B77",
+"v. c #979690",
+"w. c #96938D",
+"x. c #807E77",
+"y. c #7D7A74",
+"z. c #787770",
+"A. c #716F6A",
+"B. c #6E6C67",
+"C. c #595753",
+"D. c #63615C",
+"E. c #686661",
+"F. c #6F6E68",
+"G. c #6D6C66",
+"H. c #72716B",
+"I. c #76746F",
+"J. c #6A6963",
+"K. c #8B8880",
+"L. c #B2AFA8",
+"M. c #B6B3AD",
+"N. c #BFBDB6",
+"O. c #BDBBB4",
+"P. c #B0AEA6",
+"Q. c #ABA8A2",
+"R. c #9C9991",
+" ",
+" . . . . . . . . . . . . ",
+" . + @ # # # # # # # $ % & . ",
+" . * = - - - ; > , , ' ) ! . ",
+" . # ~ { ] ^ / ( _ : > > < . ",
+" . [ } | 1 1 | 2 2 3 4 5 6 . ",
+" . [ 7 8 9 0 a b 4 c a d + . ",
+" . [ # # # # $ $ # # $ $ e . ",
+" . [ f g = h % h i j 3 # j . ",
+" . k l l l m l l , l 5 : n . ",
+" . . @ o ~ p q r s t p u q v . . ",
+" . w . x y z A z z i B b u u 9 . C . ",
+" . w D E F . . . . . . . . . . G C H I . ",
+" . w w J w w w w w w w w w w w w w w w w D . ",
+" . K L M N O N P Q R O O S T T U V D W X I . ",
+" . Y Z ` h .! ..! +.< @.#...$.%.&.*.=.-.;.. ",
+" . >.=.,.'.Q N @ ).N !.~.{.{.].].].^./.(.;.. ",
+" . _.:.<.[.}.|.1.2.2.2.3.4.5.6.4.7.8.9.0.a.. ",
+" . b.c.d.e.f.g.h.i.j.i.k.l.m.n.o.p.q.r.s.t.. ",
+" . u.v.w.;.x.y.z.t.A.t.A.B.C.D.E.F.G.H.I.J.. ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . K.L.M.N.N.N.N.N.O.P.L.Q.P.R.R.R.G G . ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
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 @@
/* XPM */
static char * right_arrow_xpm[] = {
-"24 24 9 1",
+"24 24 41 1",
" c None",
-". c #020202",
-"+ c #1A1A1A",
-"@ c #779D6D",
-"# c #88AE80",
-"$ c #97B78B",
-"% c #9EBA92",
-"& c #E9EFE8",
-"* c #3C5936",
+". c #000000",
+"+ c #8CA782",
+"@ c #B1CDAE",
+"# c #77A16E",
+"$ c #B4CEB1",
+"% c #ACC8A9",
+"& c #709867",
+"* c #C1D6BD",
+"= c #BDD3B8",
+"- c #BFD4BB",
+"; c #C2D7BE",
+"> c #B0CAAD",
+", c #B2CBB0",
+"' c #AAC7A8",
+") c #0F1308",
+"! c #AEC5A8",
+"~ c #AEC8AD",
+"{ c #ABC7A8",
+"] c #AAC6A7",
+"^ c #A8C6A5",
+"/ c #ADC8AD",
+"( c #A8C7A8",
+"_ c #A5C4A3",
+": c #7F9F76",
+"< c #A6BFA0",
+"[ c #ABC7AA",
+"} c #A7C5A4",
+"| c #A9C7A6",
+"1 c #AFC8AD",
+"2 c #A4C3A2",
+"3 c #6B9060",
+"4 c #778E6F",
+"5 c #698D60",
+"6 c #6B9063",
+"7 c #445B2C",
+"8 c #6B8661",
+"9 c #5B7950",
+"0 c #6C8562",
+"a c #65815C",
+"b c #506B46",
" ",
" ",
" ",
-" ",
-" ",
-" .. ",
-" .&.. ",
-" .&&&.. ",
-" .&&&&&.. ",
-" .&&&&&&&.. ",
-" .&&&&&&&&&+. ",
-" +&&&&&&&&&&%.. ",
-" .%#######@@*.. ",
-" .%#####@@*.. ",
-" .%###@@*.. ",
-" .$#@@*.. ",
-" .#@*.. ",
-" .*.. ",
-" .. ",
-" ",
+" . ",
+" .. ",
+" .+. ",
+" .@#. ",
+" ........$%&. ",
+" .*=-;;;;>,'&) ",
+" .!~{{{]^'/(_:. ",
+" .<[^}^|{%'{123. ",
+" .45666666666657. ",
+" .8999999999997. ",
+" .099999999997. ",
+" .abbbbbb9997. ",
+" ........b97. ",
+" .b7. ",
+" .7. ",
+" .. ",
+" . ",
" ",
" ",
" ",
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 5 1",
-" c #01be01be01be",
-". c #62dd62dd62dd",
-"X c Gray62",
-"o c #e625e625e625",
-"O c None",
-/* pixels */
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOO OOOOOOOOO",
-"OOOOOOOOOOO X. OOOOOOOO",
-"OOOOOOOOO oXoX OOOOOOOO",
-"OOOOOOO oXoooXX OOOOOOO",
-"OOOOO oXoooooo. OOOOOOO",
-"OOO XoooooooooX OOOOOO",
-"OO XooooooooooooX OOOOOO",
-"OO .XoooooooooooX. OOOOO",
-"OOO XooooooooooXXX OOOOO",
-"OOO .XoooooooXX..X. OOOO",
-"OOOO XoooooXX...X.X OOOO",
-"OOOO .XooXX.Xoo.X.X. OOO",
-"OOOOO XXX.oooooX.X. OOO",
-"OOOOO .XXoo.ooooXX OOO",
-"OOOOOO XX.o XooX. OOOOO",
-"OOOOOO .XXooXoX OOOOOOO",
-"OOOOOOO .X.oX OOOOOOOOO",
-"OOOOOOOO OOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO"
-};
+static char * save_xpm[] = {
+"24 24 220 2",
+" c None",
+". c #000000",
+"+ c #C3D7F4",
+"@ c #A9CDE5",
+"# c #75757A",
+"$ c #EFC5BB",
+"% c #F1C8BE",
+"& c #F0C6BC",
+"* c #EEBCB2",
+"= c #EEBEB5",
+"- c #EEC1B8",
+"; c #EDBFB6",
+"> c #E9B7AD",
+", c #E9B8AF",
+"' c #E9B9B1",
+") c #E5BFBA",
+"! c #737277",
+"~ c #B3CDE3",
+"{ c #A1BED6",
+"] c #BBD6E8",
+"^ c #8AAAC5",
+"/ c #605F68",
+"( c #E08D7E",
+"_ c #E0826E",
+": c #E0806E",
+"< c #DC7A68",
+"[ c #DC8171",
+"} c #DA7868",
+"| c #D48173",
+"1 c #D47D6E",
+"2 c #CE7265",
+"3 c #CF7264",
+"4 c #CE7567",
+"5 c #C4675B",
+"6 c #C36558",
+"7 c #626169",
+"8 c #87A3B7",
+"9 c #567187",
+"0 c #BAD5E9",
+"a c #88A7C3",
+"b c #686670",
+"c c #C8817B",
+"d c #CB7C74",
+"e c #CB7A73",
+"f c #CB7B73",
+"g c #CC7C72",
+"h c #CB7D73",
+"i c #BF6B64",
+"j c #CC7A70",
+"k c #C16A62",
+"l c #CC7C73",
+"m c #C2655B",
+"n c #C36459",
+"o c #BA6C6A",
+"p c #819EB6",
+"q c #547086",
+"r c #B6D3E7",
+"s c #87ABC1",
+"t c #737373",
+"u c #FFFFFF",
+"v c #83A0B8",
+"w c #526C80",
+"x c #B9D3E7",
+"y c #85A4BF",
+"z c #4F697C",
+"A c #B9D3E6",
+"B c #84A3BF",
+"C c #CECECE",
+"D c #CDCDCD",
+"E c #BFBFBF",
+"F c #88A4BB",
+"G c #486276",
+"H c #B7D2E7",
+"I c #82A0BB",
+"J c #636363",
+"K c #465E70",
+"L c #B5CAE5",
+"M c #7FA2B9",
+"N c #87A3BA",
+"O c #455C6D",
+"P c #AECCE5",
+"Q c #7DA0B6",
+"R c #C5C5C5",
+"S c #546069",
+"T c #B0D1E4",
+"U c #83A1B6",
+"V c #735B5B",
+"W c #515C64",
+"X c #AACEE3",
+"Y c #7B9BB2",
+"Z c #7A8E9A",
+"` c #7A7A7A",
+" . c #6B6F72",
+".. c #6F6F6F",
+"+. c #696969",
+"@. c #6F777E",
+"#. c #86A2B9",
+"$. c #3A515D",
+"%. c #A9C9E2",
+"&. c #7494AF",
+"*. c #829FB7",
+"=. c #7F9DB6",
+"-. c #7E9CB5",
+";. c #7998B2",
+">. c #85A1B8",
+",. c #8CA7BD",
+"'. c #8AA5BB",
+"). c #364A59",
+"!. c #ABC4E2",
+"~. c #7294AD",
+"{. c #6F90AC",
+"]. c #7192AE",
+"^. c #414A4E",
+"/. c #424A51",
+"(. c #525B63",
+"_. c #626F79",
+":. c #5F6C76",
+"<. c #5C6971",
+"[. c #5A666F",
+"}. c #58636B",
+"|. c #57636A",
+"1. c #3B5360",
+"2. c #39424B",
+"3. c #7897B3",
+"4. c #A4B9CB",
+"5. c #364853",
+"6. c #AAC9E2",
+"7. c #7091AA",
+"8. c #6F8FA7",
+"9. c #4A5359",
+"0. c #97938C",
+"a. c #DFDDDA",
+"b. c #E3E1DE",
+"c. c #EBEAE8",
+"d. c #EAE9E7",
+"e. c #CFCEC9",
+"f. c #C9C6C0",
+"g. c #9B968E",
+"h. c #566168",
+"i. c #4B657A",
+"j. c #54738C",
+"k. c #AAC6DD",
+"l. c #34464E",
+"m. c #AAC9E1",
+"n. c #6C8EA6",
+"o. c #6C8CA4",
+"p. c #40474D",
+"q. c #DAD8D3",
+"r. c #E7E6E2",
+"s. c #67655E",
+"t. c #524F47",
+"u. c #D9D7D4",
+"v. c #C7C5BF",
+"w. c #C0BCB5",
+"x. c #B8B3AB",
+"y. c #434C54",
+"z. c #4D697F",
+"A. c #4F6F84",
+"B. c #B3CADC",
+"C. c #313E49",
+"D. c #A8C8E1",
+"E. c #6B8DA6",
+"F. c #728FA4",
+"G. c #E2E1DD",
+"H. c #F0EFEC",
+"I. c #CDCAC6",
+"J. c #C2BFB9",
+"K. c #CAC6C0",
+"L. c #DCDAD7",
+"M. c #4B555D",
+"N. c #4E697F",
+"O. c #BACCDC",
+"P. c #A4C4DE",
+"Q. c #698BA3",
+"R. c #708AA1",
+"S. c #383E43",
+"T. c #E0DEDA",
+"U. c #514E46",
+"V. c #4F4C44",
+"W. c #C7C4BE",
+"X. c #CBC8C2",
+"Y. c #E1E0DC",
+"Z. c #E9E8E6",
+"`. c #475158",
+" + c #4E6879",
+".+ c #4D6C80",
+"++ c #A3C3DB",
+"@+ c #383F43",
+"#+ c #778999",
+"$+ c #6E899E",
+"%+ c #65859C",
+"&+ c #33383C",
+"*+ c #D7D4D0",
+"=+ c #D6D4D0",
+"-+ c #4E4A43",
+";+ c #4D4942",
+">+ c #D1CEC9",
+",+ c #E6E5E2",
+"'+ c #EDECEA",
+")+ c #454F55",
+"!+ c #486173",
+"~+ c #4D6678",
+"{+ c #A1C1DA",
+"]+ c #373C40",
+"^+ c #0C0D0F",
+"/+ c #4E5E6A",
+"(+ c #5B6E7C",
+"_+ c #4F5B62",
+":+ c #A4A099",
+"<+ c #CCC9C3",
+"[+ c #D7D5D1",
+"}+ c #E4E2E0",
+"|+ c #DDDBD7",
+"1+ c #B8B5B0",
+"2+ c #3E474D",
+"3+ c #4A6176",
+"4+ c #4A6070",
+"5+ c #9BC3D8",
+"6+ c #363C41",
+"7+ c #28323E",
+" ",
+" . . . . . . . . . . . . . . . . . . . ",
+" . + @ # $ % & * = - ; > , > , ' ) ! ~ { . ",
+" . ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 . ",
+" . 0 a b c d e f g h i j k l m n o b p q . ",
+" . r s t u u u u u u u u u u u u u t v w . ",
+" . x y t u u u u u u u u u u u u u t v z . ",
+" . A B t C D D D D D D D D D D D E t F G . ",
+" . H I J u u u u u u u u u u u u u t F K . ",
+" . L M t u u u u u u u u u u u u u t N O . ",
+" . P Q t C D D D D D D D D D D D R t N S . ",
+" . T U V u u u u u u u u u u u u u t v W . ",
+" . X Y Z ` t t t t t ...t t t t +.@.#.$.. ",
+" . %.&.p v #.*.=.-.*.;.#.>.>.N *.,.v '.).. ",
+" . !.~.{.].^./.(._.:.<.[.}.|.(.1.2.3.4.5.. ",
+" . 6.7.8.9.0.a.b.c.c.d.a.e.f.g.h.i.j.k.l.. ",
+" . m.n.o.p.q.r.s.t.t.u.v.w.x.e.y.z.A.B.C.. ",
+" . D.E.F.p.G.H.s.t.t.I.J.w.K.L.M.N.A.O.C.. ",
+" . P.Q.R.S.T.c.U.V.V.W.w.X.Y.Z.`. +.+++@+. ",
+" . #+$+%+&+*+=+-+;+;+w.>+,+'+,+)+!+~+{+]+. ",
+" ^+/+(+_+:+w.x.<+<+[+}+d.|+1+2+3+4+5+6+. ",
+" . . . . . . . . . . . . . . . . 7+. ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 5 1",
-" c #01be01be01be",
-". c #62dd62dd62dd",
-"X c Gray62",
-"o c #e625e625e625",
-"O c None",
-/* pixels */
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOO OOOO",
-"OOOOOOOOOOOOOOOOOO X OOO",
-"OOOOOOOOOOOOO OO X. OOO",
-"OOOOOOOOOOO X. X. OOOO",
-"OOOOOOOOO oXoX X. OOOOO",
-"OOOOOOO oXoOo X. OOOOOO",
-"OOOOO oXoOoO X. OOOOOOO",
-"OOO XooOOoO X. OOOOOO",
-"OO XooOoXoO X. oX OOOOOO",
-"OO .XooXoO X. OoX. OOOOO",
-"OOO XooXOX. ooXXX OOOOO",
-"OOO .XoOX ooXX..X. OOOO",
-"OOOO XoOXooXX...X.X OOOO",
-"OOOO .XooXX.Xoo.X.X. OOO",
-"OOOOO XXX.oooooX.X. OOO",
-"OOOOO .XXoo.ooooXX OOO",
-"OOOOOO XX.o XooX. OOOOO",
-"OOOOOO .XXooXoX OOOOOOO",
-"OOOOOOO .X.oX OOOOOOOOO",
-"OOOOOOOO OOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO"
-};
+static char * saveas_xpm[] = {
+"24 24 262 2",
+" c None",
+". c #000000",
+"+ c #FBE73B",
+"@ c #F2B64D",
+"# c #FCEB3D",
+"$ c #F7B544",
+"% c #5D502C",
+"& c #C3D7F4",
+"* c #A9CDE5",
+"= c #75757A",
+"- c #EFC5BB",
+"; c #F1C8BE",
+"> c #F0C6BC",
+", c #EEBCB2",
+"' c #EEBEB5",
+") c #EEC1B8",
+"! c #EDBFB6",
+"~ c #E8B6AC",
+"{ c #FCE93B",
+"] c #F7B545",
+"^ c #6C5F34",
+"/ c #434345",
+"( c #92A7B9",
+"_ c #96B1C7",
+": c #BBD6E8",
+"< c #8AAAC5",
+"[ c #605F68",
+"} c #E08D7E",
+"| c #E0826E",
+"1 c #E0806E",
+"2 c #DC7A68",
+"3 c #DC8171",
+"4 c #DA7868",
+"5 c #D38072",
+"6 c #FAE43A",
+"7 c #F4B244",
+"8 c #615030",
+"9 c #783E35",
+"0 c #4D4C52",
+"a c #7790A2",
+"b c #526D82",
+"c c #BAD5E9",
+"d c #88A7C3",
+"e c #686670",
+"f c #C8817B",
+"g c #CB7C74",
+"h c #CB7A73",
+"i c #CB7B73",
+"j c #CC7C72",
+"k c #CA7C72",
+"l c #F9DF39",
+"m c #F3AF42",
+"n c #614F2F",
+"o c #8F4941",
+"p c #945554",
+"q c #5B5A62",
+"r c #7B97AE",
+"s c #536F84",
+"t c #B6D3E7",
+"u c #87ABC1",
+"v c #737373",
+"w c #FFFFFF",
+"x c #FEFEFE",
+"y c #F9DC38",
+"z c #EFB44D",
+"A c #665A32",
+"B c #BBBBBB",
+"C c #CDCDCD",
+"D c #E4E4E4",
+"E c #6E6E6E",
+"F c #819EB6",
+"G c #526C80",
+"H c #B9D3E7",
+"I c #85A4BF",
+"J c #F8D837",
+"K c #F0A93F",
+"L c #655930",
+"M c #BABABA",
+"N c #CCCCCC",
+"O c #E5E5E5",
+"P c #F7F7F7",
+"Q c #727272",
+"R c #83A0B8",
+"S c #4F697C",
+"T c #B9D3E6",
+"U c #84A3BF",
+"V c #CECECE",
+"W c #F6D236",
+"X c #EDA43E",
+"Y c #5C5130",
+"Z c #949494",
+"` c #A3A3A3",
+" . c #B7B7B7",
+".. c #C6C6C6",
+"+. c #BDBDBD",
+"@. c #88A4BB",
+"#. c #486276",
+"$. c #B7D2E7",
+"%. c #82A0BB",
+"&. c #636363",
+"*. c #FDFDFD",
+"=. c #D7AE74",
+"-. c #61562F",
+";. c #465E70",
+">. c #B5CAE5",
+",. c #7FA2B9",
+"'. c #4F4115",
+"). c #87A3BA",
+"!. c #455C6D",
+"~. c #AECCE5",
+"{. c #7DA0B6",
+"]. c #CBCBCB",
+"^. c #9B9B9B",
+"/. c #9C9C9C",
+"(. c #A7A7A7",
+"_. c #B8B8B8",
+":. c #C5C5C5",
+"<. c #546069",
+"[. c #B0D1E4",
+"}. c #83A1B6",
+"|. c #735B5B",
+"1. c #F0F0F0",
+"2. c #D9D9D9",
+"3. c #D3D3D3",
+"4. c #E1E1E1",
+"5. c #EDEDED",
+"6. c #F8F8F8",
+"7. c #515C64",
+"8. c #AACEE3",
+"9. c #7B9BB2",
+"0. c #7A8E9A",
+"a. c #7A7A7A",
+"b. c #707070",
+"c. c #6C6C6C",
+"d. c #6F6F6F",
+"e. c #6A6E71",
+"f. c #696969",
+"g. c #6F777E",
+"h. c #86A2B9",
+"i. c #3A515D",
+"j. c #A9C9E2",
+"k. c #7494AF",
+"l. c #7E9BB4",
+"m. c #7D9AB3",
+"n. c #7998B2",
+"o. c #85A1B8",
+"p. c #829FB7",
+"q. c #8CA7BD",
+"r. c #8AA5BB",
+"s. c #364A59",
+"t. c #ABC4E2",
+"u. c #7294AD",
+"v. c #6F90AC",
+"w. c #7192AE",
+"x. c #414A4E",
+"y. c #424A51",
+"z. c #525B63",
+"A. c #626F79",
+"B. c #5F6C76",
+"C. c #5C6971",
+"D. c #5A666F",
+"E. c #58636B",
+"F. c #57636A",
+"G. c #3B5360",
+"H. c #39424B",
+"I. c #7897B3",
+"J. c #A4B9CB",
+"K. c #364853",
+"L. c #AAC9E2",
+"M. c #7091AA",
+"N. c #6F8FA7",
+"O. c #4A5359",
+"P. c #97938C",
+"Q. c #DFDDDA",
+"R. c #E3E1DE",
+"S. c #EBEAE8",
+"T. c #EAE9E7",
+"U. c #CFCEC9",
+"V. c #C9C6C0",
+"W. c #9B968E",
+"X. c #566168",
+"Y. c #4B657A",
+"Z. c #54738C",
+"`. c #AAC6DD",
+" + c #34464E",
+".+ c #AAC9E1",
+"++ c #6C8EA6",
+"@+ c #6C8CA4",
+"#+ c #40474D",
+"$+ c #DAD8D3",
+"%+ c #E7E6E2",
+"&+ c #67655E",
+"*+ c #524F47",
+"=+ c #D9D7D4",
+"-+ c #C7C5BF",
+";+ c #C0BCB5",
+">+ c #B8B3AB",
+",+ c #434C54",
+"'+ c #4D697F",
+")+ c #4F6F84",
+"!+ c #B3CADC",
+"~+ c #313E49",
+"{+ c #A8C8E1",
+"]+ c #6B8DA6",
+"^+ c #728FA4",
+"/+ c #E2E1DD",
+"(+ c #F0EFEC",
+"_+ c #CDCAC6",
+":+ c #C2BFB9",
+"<+ c #CAC6C0",
+"[+ c #DCDAD7",
+"}+ c #4B555D",
+"|+ c #4E697F",
+"1+ c #BACCDC",
+"2+ c #A4C4DE",
+"3+ c #698BA3",
+"4+ c #708AA1",
+"5+ c #383E43",
+"6+ c #E0DEDA",
+"7+ c #514E46",
+"8+ c #4F4C44",
+"9+ c #C7C4BE",
+"0+ c #CBC8C2",
+"a+ c #E1E0DC",
+"b+ c #E9E8E6",
+"c+ c #475158",
+"d+ c #4E6879",
+"e+ c #4D6C80",
+"f+ c #A3C3DB",
+"g+ c #383F43",
+"h+ c #778999",
+"i+ c #6E899E",
+"j+ c #65859C",
+"k+ c #33383C",
+"l+ c #D7D4D0",
+"m+ c #D6D4D0",
+"n+ c #4E4A43",
+"o+ c #4D4942",
+"p+ c #D1CEC9",
+"q+ c #E6E5E2",
+"r+ c #EDECEA",
+"s+ c #454F55",
+"t+ c #486173",
+"u+ c #4D6678",
+"v+ c #A1C1DA",
+"w+ c #373C40",
+"x+ c #0C0D0F",
+"y+ c #4E5E6A",
+"z+ c #5B6E7C",
+"A+ c #4F5B62",
+"B+ c #A4A099",
+"C+ c #CCC9C3",
+"D+ c #D7D5D1",
+"E+ c #E4E2E0",
+"F+ c #DDDBD7",
+"G+ c #B8B5B0",
+"H+ c #3E474D",
+"I+ c #4A6176",
+"J+ c #4A6070",
+"K+ c #9BC3D8",
+"L+ c #363C41",
+"M+ c #28323E",
+" . . ",
+" . + @ . ",
+" . . . . . . . . . . . . . # $ % . . . ",
+" . & * = - ; > , ' ) ! ~ . { ] ^ . / ( _ . ",
+" . : < [ } | 1 2 3 4 5 . 6 7 8 . 9 0 a b . ",
+" . c d e f g h i j k . l m n . o p q r s . ",
+" . t u v w w w w x . y z A . B C D E F G . ",
+" . H I v w w w x . J K L . M N O P Q R S . ",
+" . T U v V C N . W X Y . Z ` ...+.v @.#.. ",
+" . $.%.&.w w *.. =.-.. M N D P *.w v @.;.. ",
+" . >.,.v w x . '.. . M N D P *.w w v ).!.. ",
+" . ~.{.v V ].. . ^./.(._...].C C :.v ).<.. ",
+" . [.}.|.w *.1.2.3.4.5.6.x w w w w v R 7.. ",
+" . 8.9.0.a.Q b.c.c.d.e.E v v v v f.g.h.i.. ",
+" . j.k.F R h.F l.m.F n.h.o.o.).p.q.R r.s.. ",
+" . t.u.v.w.x.y.z.A.B.C.D.E.F.z.G.H.I.J.K.. ",
+" . L.M.N.O.P.Q.R.S.S.T.Q.U.V.W.X.Y.Z.`. +. ",
+" . .+++@+#+$+%+&+*+*+=+-+;+>+U.,+'+)+!+~+. ",
+" . {+]+^+#+/+(+&+*+*+_+:+;+<+[+}+|+)+1+~+. ",
+" . 2+3+4+5+6+S.7+8+8+9+;+0+a+b+c+d+e+f+g+. ",
+" . h+i+j+k+l+m+n+o+o+;+p+q+r+q+s+t+u+v+w+. ",
+" x+y+z+A+B+;+>+C+C+D+E+T.F+G+H+I+J+K+L+. ",
+" . . . . . . . . . . . . . . . . M+. ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 8 1",
-" c #011801180102",
-". c #464646463e3e",
-"X c #5c5c5c5c57a0",
-"o c #878787877979",
-"O c #a910a91097af",
-"+ c #ce5ace5ab851",
-"@ c #e79de79dd134",
-"# c None",
-/* pixels */
-"########################",
-"########################",
-"############# ##########",
-"########### O #########",
-"######### O@@.#########",
-"####### O@@@@@ ########",
-"##### O+@@@@@@O #######",
-"#### XX@++@@@@@@.#######",
-"#### @.O+@@@@@@@@ ######",
-"#### @@.++@@@@@@@O #####",
-"#### @@.o+O. .+@@ #####",
-"#### @XO+O.O++o.+@@ ####",
-"#### O+@.O@@+Oo.@@+ ###",
-"#### X@@@ +#+OOO @@@@ ##",
-"#### O@@@ +@OOOo @@@o ##",
-"##### @@@.oOOOoX.@@ ###",
-"##### O@@O.oOOX @ #####",
-"######X@@@O. .X ######",
-"###### @@@@@@@+ #####",
-"####### @@@@@O ## ####",
-"####### O@@+. #### ###",
-"######## @O ####### ###",
-"######### #############",
-"########################"
-};
+static char * search_xpm[] = {
+"24 24 207 2",
+" c None",
+". c #000000",
+"+ c #D3D3D3",
+"@ c #F6F6F6",
+"# c #FFFFFF",
+"$ c #F9F9F9",
+"% c #DADADA",
+"& c #585858",
+"* c #C7C7C7",
+"= c #D1D1D1",
+"- c #D6D6D6",
+"; c #FEFEFE",
+"> c #FDFDFD",
+", c #C0C0C0",
+"' c #E1E1E1",
+") c #F0F0F0",
+"! c #9B9B9B",
+"~ c #FCFCFB",
+"{ c #FBFBFB",
+"] c #AFAFAE",
+"^ c #E9E9E9",
+"/ c #DFDFDF",
+"( c #8F8F8F",
+"_ c #FAFAF9",
+": c #F9F9F8",
+"< c #A4A4A3",
+"[ c #F4F4F4",
+"} c #CFCFCF",
+"| c #A2A2A2",
+"1 c #B8B8B8",
+"2 c #47473F",
+"3 c #0A0A09",
+"4 c #4B4B43",
+"5 c #B4B4B3",
+"6 c #F7F6F5",
+"7 c #9E9E9E",
+"8 c #A9A9A8",
+"9 c #34342E",
+"0 c #9D9D8D",
+"a c #CFCFB9",
+"b c #C4C4AF",
+"c c #8D8D7F",
+"d c #353530",
+"e c #ACACAA",
+"f c #F1F0EF",
+"g c #DEDDDC",
+"h c #D3D2D0",
+"i c #B7B7B5",
+"j c #9F9E9D",
+"k c #706F6F",
+"l c #65625A",
+"m c #46463F",
+"n c #9C9C8C",
+"o c #E2E2D0",
+"p c #EDEDE7",
+"q c #C0C0AC",
+"r c #B2B29F",
+"s c #828274",
+"t c #4C4C44",
+"u c #E4E4E2",
+"v c #E1E1DF",
+"w c #DAD9D7",
+"x c #D8D8D6",
+"y c #CDCCCA",
+"z c #AFAEAC",
+"A c #88847B",
+"B c #F8F8F7",
+"C c #090908",
+"D c #D5D5BF",
+"E c #FBFBFA",
+"F c #C3C3AE",
+"G c #B5B5A2",
+"H c #A6A695",
+"I c #9C9C8F",
+"J c #080807",
+"K c #CFCFCD",
+"L c #E3E2E0",
+"M c #ECEBE9",
+"N c #E9E8E6",
+"O c #D5D4D3",
+"P c #C4C3C2",
+"Q c #8F8A81",
+"R c #F6F5F4",
+"S c #F3F3F1",
+"T c #090909",
+"U c #CACAB5",
+"V c #DDDDD0",
+"W c #B7B7A4",
+"X c #AAAA98",
+"Y c #9B9B8B",
+"Z c #AEAEA3",
+"` c #BBBAB9",
+" . c #E8E7E5",
+".. c #E5E4E2",
+"+. c #E4E3E0",
+"@. c #D2D1CE",
+"#. c #8D887E",
+"$. c #F4F3F2",
+"%. c #F0EFEE",
+"&. c #474740",
+"*. c #929283",
+"=. c #BABAA7",
+"-. c #ADAD9B",
+";. c #9F9F8E",
+">. c #ACACA1",
+",. c #CFCFCB",
+"'. c #4C4C45",
+"). c #B3B2B1",
+"!. c #E2E1DE",
+"~. c #E1DFDC",
+"{. c #979288",
+"]. c #949493",
+"^. c #34342F",
+"/. c #878779",
+"(. c #A0A090",
+"_. c #AEAEA2",
+":. c #C3C3BE",
+"<. c #010101",
+"[. c #B1B0AF",
+"}. c #D2D1CF",
+"|. c #A49E93",
+"1. c #F0F0EE",
+"2. c #EDEDEB",
+"3. c #DDDDDB",
+"4. c #898988",
+"5. c #414141",
+"6. c #737271",
+"7. c #A4A3A1",
+"8. c #DFDEDB",
+"9. c #E2E0DD",
+"0. c #E1E0DC",
+"a. c #E0DFDB",
+"b. c #A19C90",
+"c. c #E1E0DE",
+"d. c #CBCAC9",
+"e. c #B2B1B0",
+"f. c #A3A2A1",
+"g. c #9D9C9A",
+"h. c #9E9D9C",
+"i. c #9F9F9D",
+"j. c #ABAAA7",
+"k. c #DCDBD7",
+"l. c #DEDDD9",
+"m. c #DDDCD8",
+"n. c #A19B90",
+"o. c #EBEAE8",
+"p. c #E6E5E3",
+"q. c #C8C7C4",
+"r. c #B6B6B3",
+"s. c #B0AFAD",
+"t. c #B3B2B0",
+"u. c #747371",
+"v. c #9D9C99",
+"w. c #DAD9D5",
+"x. c #E7E6E3",
+"y. c #E6E5E2",
+"z. c #E3E2DF",
+"A. c #DBDAD7",
+"B. c #D4D3D0",
+"C. c #D0CFCB",
+"D. c #D1CFCC",
+"E. c #D1D0CC",
+"F. c #C9C8C4",
+"G. c #6B6B69",
+"H. c #CECDC9",
+"I. c #D6D4D0",
+"J. c #9F998D",
+"K. c #E3E2DE",
+"L. c #E4E2DF",
+"M. c #DFDEDA",
+"N. c #D5D4D0",
+"O. c #C0BFBC",
+"P. c #7B7A78",
+"Q. c #BCBAB6",
+"R. c #CECCC8",
+"S. c #9D978C",
+"T. c #EDEDED",
+"U. c #E1E0DD",
+"V. c #E2E1DD",
+"W. c #DBDAD6",
+"X. c #BBB9B6",
+"Y. c #A6A4A1",
+"Z. c #9E9C99",
+"`. c #ACABA7",
+" + c #C7C5C2",
+".+ c #9B9589",
+"++ c #E1DFDB",
+"@+ c #E0DEDA",
+"#+ c #DEDCD8",
+"$+ c #DAD8D4",
+"%+ c #BDBCB8",
+"&+ c #ACABA8",
+"*+ c #B2B1AD",
+"=+ c #C6C4C0",
+"-+ c #999388",
+";+ c #999891",
+">+ c #A39E92",
+",+ c #A39D92",
+"'+ c #A39D91",
+")+ c #A29C90",
+"!+ c #A19B8F",
+"~+ c #9D978B",
+"{+ c #989286",
+"]+ c #918C82",
+"^+ c #938D83",
+"/+ c #979286",
+"(+ c #666258",
+" ",
+" . . . . . . . . . . . . . ",
+" . + @ # # # # # # # # $ % & . ",
+" . @ # # # # # # # # # # * = - . ",
+" . # # # # # # # ; # ; > , ' ) ! . ",
+" . # # # # # ; > ~ > ~ { ] ^ # / ( . ",
+" . # # # ; > ~ { _ { _ : < ) # [ } | . ",
+" . # ; > ~ 1 2 3 3 4 5 6 7 . . . . . . . ",
+" . # ~ { 8 9 0 a b c d e f g h i j k l . ",
+" . # _ : m n o p q r s t u v w x y z A . ",
+" . # B 6 C D E F G H I J K L M N O P Q . ",
+" . # R S T U V W X Y Z 3 ` w ...+.@.#.. ",
+" . # $.%.&.*.=.-.;.>.,.'.).h !.+.!.~.{.. ",
+" . # $.%.].^./.(._.:.<.<.[.}.!.+.!.~.|.. ",
+" . # 1.2.3.4.4 3 3 5.6.<.<.7.8.9.0.a.b.. ",
+" . # 2.M c.d.e.f.g.h.i.<.<.<.j.k.l.m.n.. ",
+" . # o.N p.w q.r.z s.t.u.. <.<.v.w.k.n.. ",
+" . # x.y.y.z.A.B.C.D.E.F.G.<.<.<.H.I.J.. ",
+" . $ +.z.K.L.K.a.a.M.M.N.O.P.<.<.Q.R.S.. ",
+" . T.U.~.0.a.V.a.0.a.0.W.E.X.Y.Z.`. +.+. ",
+" . = ++@+M.l.a.l.@+l.@+#+$+R.%+&+*+=+-+. ",
+" . ;+>+|.,+'+,+b.)+b.)+!+n.~+{+]+^+/+(+. ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 5 1",
-" c Gray0",
-". c #41415b5b3939",
-"X c #4c2f6b4e42d1",
-"o c #5fe086865454",
-"O c None",
-/* pixels */
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOO OO OOO OOOOOOOO",
-"OOO OO O OO O OO OOOOOOO",
-"OOO O OO OOOOOOOOOO",
-"OOO OO O OO O OO OOOOOOO",
-"OOO OO O OOO OOOO OO",
-"OOOOOOOOOOOOOOOOOOO OOO",
-"OOOOOOOOOOO OOOOO OOOO",
-"OOOOOOOOOOO X OOO . OOOO",
-"OOOOOOOOOOOO X O X OOOOO",
-"OOOOOOOOOOOO Xo o. OOOOO",
-"OOOOOOOOOOOOO XoX OOOOOO",
-"OOOOOOOOOOOOO Xo. OOOOOO",
-"OOOOOOOOOOOOOO X OOOOOOO",
-"OOOOOOOOOOOOOO X OOOOOOO",
-"OOOOOOOOOOOOOOO OOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO"
-};
+static char * spell_xpm[] = {
+"24 24 37 1",
+" c None",
+". c #000000",
+"+ c #8BBB8C",
+"@ c #ABD0AC",
+"# c #1A3B1A",
+"$ c #8ABA88",
+"% c #B4D5B4",
+"& c #70A770",
+"* c #132C13",
+"= c #77A676",
+"- c #2D2D2D",
+"; c #CBDFCB",
+"> c #6FAE6E",
+", c #A8CBA6",
+"' c #6D9D6C",
+") c #D0E4D0",
+"! c #6FAF6F",
+"~ c #587055",
+"{ c #B8D6B8",
+"] c #5B9159",
+"^ c #D4E4D4",
+"/ c #67AF67",
+"( c #5D905B",
+"_ c #9FC59D",
+": c #93BE92",
+"< c #B5D1B5",
+"[ c #67AF68",
+"} c #63A261",
+"| c #BBD6BA",
+"1 c #82B881",
+"2 c #75AF74",
+"3 c #6B8868",
+"4 c #9DC39D",
+"5 c #7DB17B",
+"6 c #6BA368",
+"7 c #485C46",
+"8 c #89BA88",
+" ",
+" ",
+" ",
+" ",
+" ... .... ... ",
+" .. . .. . .. . ",
+" .. . .... .. ",
+" ..... .. . .. ",
+" .. . .. . .. . . ",
+" .. . .... ... ... ",
+" .+. ",
+" .. .@# ",
+" .$. .%&. ",
+" *=. -;>. ",
+" .,'. .)!~. ",
+" .{].^/(. ",
+" ._:<[}~. ",
+" .|123. ",
+" .4567. ",
+" .83. ",
+" .37. ",
+" .. ",
+" ",
+" "};
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 @@
/* XPM */
-static char *magick[] = {
-/* columns rows colors chars-per-pixel */
-"24 24 5 1",
-" c Gray0",
-". c #ae6e66e76a0a",
-"X c #c6c67d7d8181",
-"o c #e4e4e4e4dcdc",
-"O c None",
-/* pixels */
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOO OOOOOOOOOOOOOO",
-"OOOOOOOO OOOOOOOOOOOOOO",
-"OOOOOOO oX OOOOOOOOOOO",
-"OOOOOO ooooX. OOOOOOOOO",
-"OOOOOOO oo .. OOOOOOOO",
-"OOOOOOOO OOO . OOOOOOOO",
-"OOOOOOOOO OOOO . OOOOOOO",
-"OOOOOOOOOOOOOOO OOOOOOO",
-"OOOOOOOOOOOOOOO OOOOOOO",
-"OOOOOOOOOOOOOOO OOOOOOOO",
-"OOOOOOOOOOOOOO OOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO",
-"OOOOOOOOOOOOOOOOOOOOOOOO"
-};
+static char * undo_xpm[] = {
+"24 24 31 1",
+" c None",
+". c #000000",
+"+ c #EFE5BA",
+"@ c #EFE7C1",
+"# c #EED680",
+"$ c #EFE4B6",
+"% c #D5B75D",
+"& c #B29544",
+"* c #D1B051",
+"= c #C0AF73",
+"- c #C0A048",
+"; c #986B07",
+"> c #D1940C",
+", c #E0B74C",
+"' c #D9C374",
+") c #8F6406",
+"! c #D59D1C",
+"~ c #B1933F",
+"{ c #DFB74A",
+"] c #CCB76D",
+"^ c #B8820A",
+"/ c #D9A72E",
+"( c #D7A62C",
+"_ c #C7B26A",
+": c #D4B150",
+"< c #A39256",
+"[ c #E2CB79",
+"} c #C9B46B",
+"| c #8D7E4A",
+"1 c #AE9C5C",
+"2 c #96864F",
+" ",
+" ",
+" ",
+" . ",
+" .. ",
+" .+. ",
+" .@#.... ",
+" .$####%&. ",
+" .+#######*. ",
+" .=#########-. ",
+" .;>>>>>>,#'.. ",
+" .)>>>>>>!#~. ",
+" .)>...;>{]. ",
+" .;. ..^/#. ",
+" .. ..>#. ",
+" . .(_. ",
+" .:<. ",
+" .[. ",
+" .}|. ",
+" .12. ",
+" .. ",
+" ",
+" ",
+" "};
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 @@
/* XPM */
static char * up_arrow_xpm[] = {
-"24 24 9 1",
+"24 24 67 1",
" c None",
-". c #020202",
-"+ c #121A12",
-"@ c #78A16E",
-"# c #86AD7D",
-"$ c #B2C6AE",
-"% c #263222",
-"& c #E7EDE6",
-"* c #497241",
+". c #000000",
+"+ c #2F2F2F",
+"@ c #A5B4A4",
+"# c #E8F4E6",
+"$ c #96B892",
+"% c #41533C",
+"& c #F1FFF0",
+"* c #B8D6B7",
+"= c #9FC49D",
+"- c #66815E",
+"; c #B6D4B5",
+"> c #B9D7B8",
+", c #A1C69F",
+"' c #68835F",
+") c #637D5B",
+"! c #3F5239",
+"~ c #B8D7B7",
+"{ c #A2C7A0",
+"] c #6A8561",
+"^ c #657F5C",
+"/ c #617959",
+"( c #3E4F39",
+"_ c #F0FEEF",
+": c #B7D5B6",
+"< c #657E5C",
+"[ c #5D7555",
+"} c #D6EAD6",
+"| c #BFD4BF",
+"1 c #C0D5C0",
+"2 c #637C5B",
+"3 c #4D6246",
+"4 c #4C6046",
+"5 c #C7E1C6",
+"6 c #A1C69E",
+"7 c #67815E",
+"8 c #627B59",
+"9 c #3D4E39",
+"0 c #D0E7D0",
+"a c #B5D3B4",
+"b c #A0C39D",
+"c c #607958",
+"d c #B5D2B4",
+"e c #9DC19B",
+"f c #647D5B",
+"g c #607858",
+"h c #C6E0C5",
+"i c #B4D2B3",
+"j c #9CBF99",
+"k c #C5DFC4",
+"l c #B1CEB0",
+"m c #99BC97",
+"n c #617A59",
+"o c #5E7756",
+"p c #C0D9BF",
+"q c #AFCCAE",
+"r c #AECBAD",
+"s c #93B690",
+"t c #607857",
+"u c #5E7656",
+"v c #8DB389",
+"w c #748A72",
+"x c #71916E",
+"y c #5A7257",
+"z c #4D6247",
+"A c #4D6146",
+"B c #43543D",
" ",
" ",
-" ",
-" ",
-" .. ",
-" .. ",
-" .$*. ",
-" +&*. ",
-" .&&@*. ",
-" .&&@*. ",
-" .&&&@@*. ",
-" .&&&##*. ",
-" .&&&&#@@*. ",
-" .&&&&###*. ",
-" .&&&&&##@@*. ",
-" .&&&&&###@@. ",
-" .$$$$$$@@@@**. ",
-" ......%....... ",
+" . ",
+" +@. ",
+" .#$%. ",
+" .&*=-%. ",
+" .&;>,')!. ",
+" .&~;>{]^/(. ",
+" ._~>:>,]</[(. ",
+" .}|1>~~,'23444. ",
+" .....5;;6789..... ",
+" .0;ab^c9. ",
+" .5;defg9. ",
+" .haij2g9. ",
+" .kilmno9. ",
+" .pqrstu9. ",
+" .vwxyzAB. ",
+" ......... ",
" ",
" ",
" ",
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 @@
+;;; tree-widget.el --- Tree widget
+
+;; Copyright (C) 2004 Free Software Foundation, Inc.
+
+;; Author: David Ponce <david@dponce.com>
+;; Maintainer: David Ponce <david@dponce.com>
+;; Created: 16 Feb 2001
+;; Keywords: extensions
+
+;; This file is part of GNU Emacs
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING. If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; This library provide a tree widget useful to display data
+;; structures organized in a hierarchical order.
+;;
+;; The following properties are specific to the tree widget:
+;;
+;; :open
+;; Set to non-nil to unfold the tree. By default the tree is
+;; folded.
+;;
+;; :node
+;; Specify the widget used to represent a tree node. By default
+;; this is an `item' widget which displays the tree-widget :tag
+;; property value if defined or a string representation of the
+;; tree-widget value.
+;;
+;; :keep
+;; Specify a list of properties to keep when the tree is
+;; folded so they can be recovered when the tree is unfolded.
+;; This property can be used in child widgets too.
+;;
+;; :dynargs
+;; Specify a function to be called when the tree is unfolded, to
+;; dynamically provide the tree children in response to an unfold
+;; request. This function will be passed the tree widget and
+;; must return a list of child widgets. That list will be stored
+;; as the :args property of the parent tree.
+
+;; To speed up successive unfold requests, the :dynargs function
+;; can directly return the :args value if non-nil. Refreshing
+;; child values can be achieved by giving the :args property the
+;; value nil, then redrawing the tree.
+;;
+;; :has-children
+;; Specify if this tree has children. This property has meaning
+;; only when used with the above :dynargs one. It indicates that
+;; child widgets exist but will be dynamically provided when
+;; unfolding the node.
+;;
+;; :open-control (default `tree-widget-open-control')
+;; :close-control (default `tree-widget-close-control')
+;; :empty-control (default `tree-widget-empty-control')
+;; :leaf-control (default `tree-widget-leaf-control')
+;; :guide (default `tree-widget-guide')
+;; :end-guide (default `tree-widget-end-guide')
+;; :no-guide (default `tree-widget-no-guide')
+;; :handle (default `tree-widget-handle')
+;; :no-handle (default `tree-widget-no-handle')
+;;
+;; The above nine properties define the widgets used to draw the tree.
+;; For example, using widgets that display this values:
+;;
+;; open-control "[-] "
+;; close-control "[+] "
+;; empty-control "[X] "
+;; leaf-control "[>] "
+;; guide " |"
+;; noguide " "
+;; end-guide " `"
+;; handle "-"
+;; no-handle " "
+;;
+;; A tree will look like this:
+;;
+;; [-] 1 open-control
+;; |-[+] 1.0 guide+handle+close-control
+;; |-[X] 1.1 guide+handle+empty-control
+;; `-[-] 1.2 end-guide+handle+open-control
+;; |-[>] 1.2.1 no-guide+no-handle+guide+handle+leaf-control
+;; `-[>] 1.2.2 no-guide+no-handle+end-guide+handle+leaf-control
+;;
+;; By default, the tree widget try to use images instead of strings to
+;; draw a nice-looking tree. See the `tree-widget-themes-directory'
+;; and `tree-widget-theme' options for more details.
+;;
+
+;;; History:
+;;
+
+;;; Code:
+(eval-when-compile (require 'cl))
+(require 'wid-edit)
+
+;;; Customization
+;;
+(defgroup tree-widget nil
+ "Customization support for the Tree Widget Library."
+ :version "21.4"
+ :group 'widgets)
+
+(defcustom tree-widget-image-enable
+ (not (or (featurep 'xemacs) (< emacs-major-version 21)))
+ "*non-nil means that tree-widget will try to use images."
+ :type 'boolean
+ :group 'tree-widget)
+
+(defcustom tree-widget-themes-directory "tree-widget"
+ "*Name of the directory where to lookup for image themes.
+When nil use the directory where the tree-widget library is located.
+When a relative name is specified, try to locate that sub-directory in
+`load-path', then in the data directory, and use the first one found.
+Default is to search for a \"tree-widget\" sub-directory.
+
+The data directory is the value of:
+ - the variable `data-directory' on GNU Emacs;
+ - `(locate-data-directory \"tree-widget\")' on XEmacs."
+ :type '(choice (const :tag "Default" "tree-widget")
+ (const :tag "With the library" nil)
+ (directory :format "%{%t%}:\n%v"))
+ :group 'tree-widget)
+
+(defcustom tree-widget-theme nil
+ "*Name of the theme to use to lookup for images.
+The theme name must be a subdirectory in `tree-widget-themes-directory'.
+If nil use the \"default\" theme.
+When a image is not found in the current theme, the \"default\" theme
+is searched too.
+A complete theme should contain images with these file names:
+
+Name Represents
+----------- ------------------------------------------------
+open opened node (for example an open folder)
+close closed node (for example a close folder)
+empty empty node (a node without children)
+leaf leaf node (for example a document)
+guide a vertical guide line
+no-guide an invisible guide line
+end-guide the end of a vertical guide line
+handle an horizontal line drawn before a node control
+no-handle an invisible handle
+----------- ------------------------------------------------"
+ :type '(choice (const :tag "Default" nil)
+ (string :tag "Name"))
+ :group 'tree-widget)
+
+(defcustom tree-widget-image-properties-emacs
+ '(:ascent center :mask (heuristic t))
+ "*Properties of GNU Emacs images."
+ :type 'plist
+ :group 'tree-widget)
+
+(defcustom tree-widget-image-properties-xemacs
+ nil
+ "*Properties of XEmacs images."
+ :type 'plist
+ :group 'tree-widget)
+
+;;; Image support
+;;
+(eval-when-compile ;; GNU Emacs/XEmacs compatibility stuff
+ (cond
+ ;; XEmacs
+ ((featurep 'xemacs)
+ (defsubst tree-widget-use-image-p ()
+ "Return non-nil if image support is currently enabled."
+ (and tree-widget-image-enable
+ widget-glyph-enable
+ (console-on-window-system-p)))
+ (defsubst tree-widget-create-image (type file &optional props)
+ "Create an image of type TYPE from FILE.
+Give the image the specified properties PROPS.
+Return the new image."
+ (apply 'make-glyph `([,type :file ,file ,@props])))
+ (defsubst tree-widget-image-formats ()
+ "Return the list of image formats, file name suffixes associations.
+See also the option `widget-image-file-name-suffixes'."
+ (delq nil
+ (mapcar
+ #'(lambda (fmt)
+ (and (valid-image-instantiator-format-p (car fmt)) fmt))
+ widget-image-file-name-suffixes)))
+ )
+ ;; GNU Emacs
+ (t
+ (defsubst tree-widget-use-image-p ()
+ "Return non-nil if image support is currently enabled."
+ (and tree-widget-image-enable
+ widget-image-enable
+ (display-images-p)))
+ (defsubst tree-widget-create-image (type file &optional props)
+ "Create an image of type TYPE from FILE.
+Give the image the specified properties PROPS.
+Return the new image."
+ (apply 'create-image `(,file ,type nil ,@props)))
+ (defsubst tree-widget-image-formats ()
+ "Return the list of image formats, file name suffixes associations.
+See also the option `widget-image-conversion'."
+ (delq nil
+ (mapcar
+ #'(lambda (fmt)
+ (and (image-type-available-p (car fmt)) fmt))
+ widget-image-conversion)))
+ ))
+ )
+
+;; Buffer local cache of theme data.
+(defvar tree-widget--theme nil)
+
+(defsubst tree-widget-theme-name ()
+ "Return the current theme name, or nil if no theme is active."
+ (and tree-widget--theme (aref tree-widget--theme 0)))
+
+(defsubst tree-widget-set-theme (&optional name)
+ "In the current buffer, set the theme to use for images.
+The current buffer should be where the tree widget is drawn.
+Optional argument NAME is the name of the theme to use, which defaults
+to the value of the variable `tree-widget-theme'.
+Does nothing if NAME is the name of the current theme."
+ (or name (setq name (or tree-widget-theme "default")))
+ (unless (equal name (tree-widget-theme-name))
+ (set (make-local-variable 'tree-widget--theme)
+ (make-vector 4 nil))
+ (aset tree-widget--theme 0 name)))
+
+(defun tree-widget-themes-directory ()
+ "Locate the directory where to search for a theme.
+It is defined in variable `tree-widget-themes-directory'.
+Return the absolute name of the directory found, or nil if the
+specified directory is not accessible."
+ (let ((found (aref tree-widget--theme 1)))
+ (if found
+ ;; The directory is available in the cache.
+ (unless (eq found 'void) found)
+ (cond
+ ;; Use the directory where tree-widget is located.
+ ((null tree-widget-themes-directory)
+ (setq found (locate-library "tree-widget"))
+ (when found
+ (setq found (file-name-directory found))
+ (or (file-accessible-directory-p found)
+ (setq found nil))))
+ ;; Check accessibility of absolute directory name.
+ ((file-name-absolute-p tree-widget-themes-directory)
+ (setq found (expand-file-name tree-widget-themes-directory))
+ (or (file-accessible-directory-p found)
+ (setq found nil)))
+ ;; Locate a sub-directory in `load-path' and data directory.
+ (t
+ (let ((path
+ (append load-path
+ ;; The data directory depends on which, GNU
+ ;; Emacs or XEmacs, is running.
+ (list (if (fboundp 'locate-data-directory)
+ (locate-data-directory "tree-widget")
+ data-directory)))))
+ (while (and path (not found))
+ (when (car path)
+ (setq found (expand-file-name
+ tree-widget-themes-directory (car path)))
+ (or (file-accessible-directory-p found)
+ (setq found nil)))
+ (setq path (cdr path))))))
+ ;; Store the result in the cache for later use.
+ (aset tree-widget--theme 1 (or found 'void))
+ found)))
+
+(defsubst tree-widget-set-image-properties (props)
+ "In current theme, set images properties to PROPS."
+ (aset tree-widget--theme 2 props))
+
+(defun tree-widget-image-properties (file)
+ "Return properties of images in current theme.
+If the \"tree-widget-theme-setup.el\" file exists in the directory
+where is located the image FILE, load it to setup theme images
+properties. Typically that file should contain something like this:
+
+ (tree-widget-set-image-properties
+ (if (featurep 'xemacs)
+ '(:ascent center)
+ '(:ascent center :mask (heuristic t))
+ ))
+
+By default, use the global properties provided in variables
+`tree-widget-image-properties-emacs' or
+`tree-widget-image-properties-xemacs'."
+ ;; If properties are in the cache, use them.
+ (or (aref tree-widget--theme 2)
+ (progn
+ ;; Load tree-widget-theme-setup if available.
+ (load (expand-file-name
+ "tree-widget-theme-setup"
+ (file-name-directory file)) t t)
+ ;; If properties have been setup, use them.
+ (or (aref tree-widget--theme 2)
+ ;; By default, use supplied global properties.
+ (tree-widget-set-image-properties
+ (if (featurep 'xemacs)
+ tree-widget-image-properties-xemacs
+ tree-widget-image-properties-emacs))))))
+
+(defun tree-widget-find-image (name)
+ "Find the image with NAME in current theme.
+NAME is an image file name sans extension.
+Search first in current theme, then in default theme.
+A theme is a sub-directory of the root theme directory specified in
+variable `tree-widget-themes-directory'.
+Return the first image found having a supported format in those
+returned by the function `tree-widget-image-formats', or nil if not
+found."
+ (when (tree-widget-use-image-p)
+ ;; Ensure there is an active theme.
+ (tree-widget-set-theme (tree-widget-theme-name))
+ ;; If the image is in the cache, return it.
+ (or (cdr (assoc name (aref tree-widget--theme 3)))
+ ;; Search the image in the current, then default themes.
+ (let ((default-directory (tree-widget-themes-directory)))
+ (when default-directory
+ (let* ((theme (tree-widget-theme-name))
+ (path (mapcar 'expand-file-name
+ (if (equal theme "default")
+ '("default")
+ (list theme "default"))))
+ (formats (tree-widget-image-formats))
+ (found
+ (catch 'found
+ (dolist (dir path)
+ (dolist (fmt formats)
+ (dolist (ext (cdr fmt))
+ (let ((file (expand-file-name
+ (concat name ext) dir)))
+ (and (file-readable-p file)
+ (file-regular-p file)
+ (throw 'found
+ (cons (car fmt) file)))))))
+ nil)))
+ (when found
+ (let ((image
+ (tree-widget-create-image
+ (car found) (cdr found)
+ (tree-widget-image-properties (cdr found)))))
+ ;; Store image in the cache for later use.
+ (push (cons name image) (aref tree-widget--theme 3))
+ image))))))))
+
+;;; Widgets
+;;
+(defvar tree-widget-button-keymap
+ (let (parent-keymap mouse-button1 keymap)
+ (if (featurep 'xemacs)
+ (setq parent-keymap widget-button-keymap
+ mouse-button1 [button1])
+ (setq parent-keymap widget-keymap
+ mouse-button1 [down-mouse-1]))
+ (setq keymap (copy-keymap parent-keymap))
+ (define-key keymap mouse-button1 'widget-button-click)
+ keymap)
+ "Keymap used inside node handle buttons.")
+
+(define-widget 'tree-widget-control 'push-button
+ "Base `tree-widget' control."
+ :format "%[%t%]"
+ :button-keymap tree-widget-button-keymap ; XEmacs
+ :keymap tree-widget-button-keymap ; Emacs
+ )
+
+(define-widget 'tree-widget-open-control 'tree-widget-control
+ "Control widget that represents a opened `tree-widget' node."
+ :tag "[-] "
+ ;;:tag-glyph (tree-widget-find-image "open")
+ :notify 'tree-widget-close-node
+ :help-echo "Hide node"
+ )
+
+(define-widget 'tree-widget-empty-control 'tree-widget-open-control
+ "Control widget that represents an empty opened `tree-widget' node."
+ :tag "[X] "
+ ;;:tag-glyph (tree-widget-find-image "empty")
+ )
+
+(define-widget 'tree-widget-close-control 'tree-widget-control
+ "Control widget that represents a closed `tree-widget' node."
+ :tag "[+] "
+ ;;:tag-glyph (tree-widget-find-image "close")
+ :notify 'tree-widget-open-node
+ :help-echo "Show node"
+ )
+
+(define-widget 'tree-widget-leaf-control 'item
+ "Control widget that represents a leaf node."
+ :tag " " ;; Need at least a char to display the image :-(
+ ;;:tag-glyph (tree-widget-find-image "leaf")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget-guide 'item
+ "Widget that represents a guide line."
+ :tag " |"
+ ;;:tag-glyph (tree-widget-find-image "guide")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget-end-guide 'item
+ "Widget that represents the end of a guide line."
+ :tag " `"
+ ;;:tag-glyph (tree-widget-find-image "end-guide")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget-no-guide 'item
+ "Widget that represents an invisible guide line."
+ :tag " "
+ ;;:tag-glyph (tree-widget-find-image "no-guide")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget-handle 'item
+ "Widget that represent a node handle."
+ :tag " "
+ ;;:tag-glyph (tree-widget-find-image "handle")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget-no-handle 'item
+ "Widget that represent an invisible node handle."
+ :tag " "
+ ;;:tag-glyph (tree-widget-find-image "no-handle")
+ :format "%t"
+ )
+
+(define-widget 'tree-widget 'default
+ "Tree widget."
+ :format "%v"
+ :convert-widget 'widget-types-convert-widget
+ :value-get 'widget-value-value-get
+ :value-create 'tree-widget-value-create
+ :value-delete 'tree-widget-value-delete
+ )
+
+;;; Widget support functions
+;;
+(defun tree-widget-p (widget)
+ "Return non-nil if WIDGET is a `tree-widget' widget."
+ (let ((type (widget-type widget)))
+ (while (and type (not (eq type 'tree-widget)))
+ (setq type (widget-type (get type 'widget-type))))
+ (eq type 'tree-widget)))
+
+(defsubst tree-widget-get-super (widget property)
+ "Return WIDGET's inherited PROPERTY value."
+ (widget-get (get (widget-type (get (widget-type widget)
+ 'widget-type))
+ 'widget-type)
+ property))
+
+(defsubst tree-widget-super-format-handler (widget escape)
+ "Call WIDGET's inherited format handler to process ESCAPE character."
+ (let ((handler (tree-widget-get-super widget :format-handler)))
+ (and handler (funcall handler widget escape))))
+
+(defun tree-widget-format-handler (widget escape)
+ "For WIDGET, signal that the %p format template is obsolete.
+Call WIDGET's inherited format handler to process other ESCAPE
+characters."
+ (if (eq escape ?p)
+ (message "The %%p format template is obsolete and ignored")
+ (tree-widget-super-format-handler widget escape)))
+(make-obsolete 'tree-widget-format-handler
+ 'tree-widget-super-format-handler)
+
+(defsubst tree-widget-node (widget)
+ "Return the tree WIDGET :node value.
+If not found setup a default 'item' widget."
+ (let ((node (widget-get widget :node)))
+ (unless node
+ (setq node `(item :tag ,(or (widget-get widget :tag)
+ (widget-princ-to-string
+ (widget-value widget)))))
+ (widget-put widget :node node))
+ node))
+
+(defsubst tree-widget-open-control (widget)
+ "Return the opened node control specified in WIDGET."
+ (or (widget-get widget :open-control)
+ 'tree-widget-open-control))
+
+(defsubst tree-widget-close-control (widget)
+ "Return the closed node control specified in WIDGET."
+ (or (widget-get widget :close-control)
+ 'tree-widget-close-control))
+
+(defsubst tree-widget-empty-control (widget)
+ "Return the empty node control specified in WIDGET."
+ (or (widget-get widget :empty-control)
+ 'tree-widget-empty-control))
+
+(defsubst tree-widget-leaf-control (widget)
+ "Return the leaf node control specified in WIDGET."
+ (or (widget-get widget :leaf-control)
+ 'tree-widget-leaf-control))
+
+(defsubst tree-widget-guide (widget)
+ "Return the guide line widget specified in WIDGET."
+ (or (widget-get widget :guide)
+ 'tree-widget-guide))
+
+(defsubst tree-widget-end-guide (widget)
+ "Return the end of guide line widget specified in WIDGET."
+ (or (widget-get widget :end-guide)
+ 'tree-widget-end-guide))
+
+(defsubst tree-widget-no-guide (widget)
+ "Return the invisible guide line widget specified in WIDGET."
+ (or (widget-get widget :no-guide)
+ 'tree-widget-no-guide))
+
+(defsubst tree-widget-handle (widget)
+ "Return the node handle line widget specified in WIDGET."
+ (or (widget-get widget :handle)
+ 'tree-widget-handle))
+
+(defsubst tree-widget-no-handle (widget)
+ "Return the node invisible handle line widget specified in WIDGET."
+ (or (widget-get widget :no-handle)
+ 'tree-widget-no-handle))
+
+(defun tree-widget-keep (arg widget)
+ "Save in ARG the WIDGET properties specified by :keep."
+ (dolist (prop (widget-get widget :keep))
+ (widget-put arg prop (widget-get widget prop))))
+
+(defun tree-widget-children-value-save (widget &optional args node)
+ "Save WIDGET children values.
+Children properties and values are saved in ARGS if non-nil else in
+WIDGET :args property value. Data node properties and value are saved
+in NODE if non-nil else in WIDGET :node property value."
+ (let ((args (or args (widget-get widget :args)))
+ (node (or node (tree-widget-node widget)))
+ (children (widget-get widget :children))
+ (node-child (widget-get widget :tree-widget--node))
+ arg child)
+ (while (and args children)
+ (setq arg (car args)
+ args (cdr args)
+ child (car children)
+ children (cdr children))
+ (if (tree-widget-p child)
+;;;; The child is a tree node.
+ (progn
+ ;; Backtrack :args and :node properties.
+ (widget-put arg :args (widget-get child :args))
+ (widget-put arg :node (tree-widget-node child))
+ ;; Save :open property.
+ (widget-put arg :open (widget-get child :open))
+ ;; The node is open.
+ (when (widget-get child :open)
+ ;; Save the widget value.
+ (widget-put arg :value (widget-value child))
+ ;; Save properties specified in :keep.
+ (tree-widget-keep arg child)
+ ;; Save children.
+ (tree-widget-children-value-save
+ child (widget-get arg :args) (widget-get arg :node))))
+;;;; Another non tree node.
+ ;; Save the widget value
+ (widget-put arg :value (widget-value child))
+ ;; Save properties specified in :keep.
+ (tree-widget-keep arg child)))
+ (when (and node node-child)
+ ;; Assume that the node child widget is not a tree!
+ ;; Save the node child widget value.
+ (widget-put node :value (widget-value node-child))
+ ;; Save the node child properties specified in :keep.
+ (tree-widget-keep node node-child))
+ ))
+
+(defvar tree-widget-after-toggle-functions nil
+ "Hooks run after toggling a `tree-widget' folding.
+Each function will receive the `tree-widget' as its unique argument.
+This variable should be local to each buffer used to display
+widgets.")
+
+(defun tree-widget-close-node (widget &rest ignore)
+ "Close the `tree-widget' node associated to this control WIDGET.
+WIDGET's parent should be a `tree-widget'.
+IGNORE other arguments."
+ (let ((tree (widget-get widget :parent)))
+ ;; Before folding the node up, save children values so next open
+ ;; can recover them.
+ (tree-widget-children-value-save tree)
+ (widget-put tree :open nil)
+ (widget-value-set tree nil)
+ (run-hook-with-args 'tree-widget-after-toggle-functions tree)))
+
+(defun tree-widget-open-node (widget &rest ignore)
+ "Open the `tree-widget' node associated to this control WIDGET.
+WIDGET's parent should be a `tree-widget'.
+IGNORE other arguments."
+ (let ((tree (widget-get widget :parent)))
+ (widget-put tree :open t)
+ (widget-value-set tree t)
+ (run-hook-with-args 'tree-widget-after-toggle-functions tree)))
+
+(defun tree-widget-value-delete (widget)
+ "Delete tree WIDGET children."
+ ;; Delete children
+ (widget-children-value-delete widget)
+ ;; Delete node child
+ (widget-delete (widget-get widget :tree-widget--node))
+ (widget-put widget :tree-widget--node nil))
+
+(defun tree-widget-value-create (tree)
+ "Create the TREE widget."
+ (let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs
+ (widget-glyph-enable widget-image-enable) ; XEmacs
+ (node (tree-widget-node tree))
+ children buttons)
+ (if (widget-get tree :open)
+;;;; Unfolded node.
+ (let* ((args (widget-get tree :args))
+ (dynargs (widget-get tree :dynargs))
+ (flags (widget-get tree :tree-widget--guide-flags))
+ (rflags (reverse flags))
+ (guide (tree-widget-guide tree))
+ (noguide (tree-widget-no-guide tree))
+ (endguide (tree-widget-end-guide tree))
+ (handle (tree-widget-handle tree))
+ (nohandle (tree-widget-no-handle tree))
+ ;; Lookup for images and set widgets' tag-glyphs here,
+ ;; to allow to dynamically change the image theme.
+ (guidi (tree-widget-find-image "guide"))
+ (noguidi (tree-widget-find-image "no-guide"))
+ (endguidi (tree-widget-find-image "end-guide"))
+ (handli (tree-widget-find-image "handle"))
+ (nohandli (tree-widget-find-image "no-handle"))
+ child)
+ (when dynargs
+ ;; Request the definition of dynamic children
+ (setq dynargs (funcall dynargs tree))
+ ;; Unless children have changed, reuse the widgets
+ (unless (eq args dynargs)
+ (setq args (mapcar 'widget-convert dynargs))
+ (widget-put tree :args args)))
+ ;; Insert the node control
+ (push (widget-create-child-and-convert
+ tree (if args (tree-widget-open-control tree)
+ (tree-widget-empty-control tree))
+ :tag-glyph (tree-widget-find-image
+ (if args "open" "empty")))
+ buttons)
+ ;; Insert the node element
+ (widget-put tree :tree-widget--node
+ (widget-create-child-and-convert tree node))
+ ;; Insert children
+ (while args
+ (setq child (car args)
+ args (cdr args))
+ ;; Insert guide lines elements
+ (dolist (f rflags)
+ (widget-create-child-and-convert
+ tree (if f guide noguide)
+ :tag-glyph (if f guidi noguidi))
+ (widget-create-child-and-convert
+ tree nohandle :tag-glyph nohandli)
+ )
+ (widget-create-child-and-convert
+ tree (if args guide endguide)
+ :tag-glyph (if args guidi endguidi))
+ ;; Insert the node handle line
+ (widget-create-child-and-convert
+ tree handle :tag-glyph handli)
+ ;; If leaf node, insert a leaf node control
+ (unless (tree-widget-p child)
+ (push (widget-create-child-and-convert
+ tree (tree-widget-leaf-control tree)
+ :tag-glyph (tree-widget-find-image "leaf"))
+ buttons))
+ ;; Insert the child element
+ (push (widget-create-child-and-convert
+ tree child
+ :tree-widget--guide-flags (cons (if args t) flags))
+ children)))
+;;;; Folded node.
+ ;; Insert the closed node control
+ (push (widget-create-child-and-convert
+ tree (tree-widget-close-control tree)
+ :tag-glyph (tree-widget-find-image "close"))
+ buttons)
+ ;; Insert the node element
+ (widget-put tree :tree-widget--node
+ (widget-create-child-and-convert tree node)))
+ ;; Save widget children and buttons
+ (widget-put tree :children (nreverse children))
+ (widget-put tree :buttons buttons)
+ ))
+
+;;; Utilities
+;;
+(defun tree-widget-map (widget fun)
+ "For each WIDGET displayed child call function FUN.
+FUN is called with three arguments like this:
+
+ (FUN CHILD IS-NODE WIDGET)
+
+where:
+- - CHILD is the child widget.
+- - IS-NODE is non-nil if CHILD is WIDGET node widget."
+ (when (widget-get widget :tree-widget--node)
+ (funcall fun (widget-get widget :tree-widget--node) t widget)
+ (dolist (child (widget-get widget :children))
+ (if (tree-widget-p child)
+ ;; The child is a tree node.
+ (tree-widget-map child fun)
+ ;; Another non tree node.
+ (funcall fun child nil widget)))))
+
+(provide 'tree-widget)
+
+;;; arch-tag: c3a1ada2-1663-41dc-9d16-2479ed8320e8
+;;; 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."
system-configuration
(cond ((featurep 'motif)
(concat ", " (substring motif-version-string 4)))
- ((featurep 'x-toolkit) ", X toolkit")
((featurep 'gtk)
(concat ", GTK+ Version " gtk-version-string))
+ ((featurep 'x-toolkit) ", X toolkit")
(t ""))
(if (and (boundp 'x-toolkit-scroll-bars)
(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)."
(defun widget-radio-button-notify (widget child &optional event)
;; Tell daddy.
- (widget-apply (widget-get widget :parent) :action widget event))
+ (widget-apply (widget-get widget :parent) :action event))
;;; The `radio-button-choice' Widget.
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 1cbb8b2f987..c46f718b5c7 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-10 Juanma Barranquero <lektu@terra.es>
+
+ * modes.texi (Mode Line Variables): Fix description of
+ global-mode-string, which is now after which-func-mode, not the
+ buffer name.
+
2004-05-07 Lars Hansen <larsh@math.ku.dk>
* modes.texi (Desktop Save Mode): Add.
diff --git a/lispref/modes.texi b/lispref/modes.texi
index 12a597484df..4a8d83ecfa0 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -1454,11 +1454,12 @@ enabled separately in each buffer.
@end defvar
@defvar global-mode-string
-This variable holds a mode-line spec that appears in the mode line by
-default, just after the buffer name. The command @code{display-time}
+This variable holds a mode-line spec that, by default, appears in the
+mode line just after the @code{which-func-mode} minor mode if set,
+else after @code{mode-line-modes}. The command @code{display-time}
sets @code{global-mode-string} to refer to the variable
-@code{display-time-string}, which holds a string containing the time and
-load information.
+@code{display-time-string}, which holds a string containing the time
+and load information.
The @samp{%M} construct substitutes the value of
@code{global-mode-string}, but that is obsolete, since the variable is
diff --git a/mac/Emacs.app/Contents/.gitignore b/mac/Emacs.app/Contents/.gitignore
index 0d7f092d290..a502976befb 100644
--- a/mac/Emacs.app/Contents/.gitignore
+++ b/mac/Emacs.app/Contents/.gitignore
@@ -1 +1,2 @@
MacOS
+Resources Disabled
diff --git a/man/ChangeLog b/man/ChangeLog
index 92211707081..30247e10435 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,14 @@
+2004-05-16 Karl Berry <karl@gnu.org>
+
+ * emacs.texi (ack.texi) [@ifnottex]: Change condition; with @ifinfo,
+ makeinfo --html fails.
+ * help.texi (Help Summary) [@ifnottex]: Likewise.
+
+2004-05-13 Nick Roberts <nickrob@gnu.org>
+
+ * building.texi (GDB Graphical Interface): Update and describe
+ layout first.
+
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Version 2.0.40 of Tramp released.
diff --git a/man/building.texi b/man/building.texi
index 2985a04895c..994e3be3f59 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -286,7 +286,7 @@ Emacs. @xref{MS-DOS}.
The GUD (Grand Unified Debugger) library provides an interface to
various symbolic debuggers from within Emacs. We recommend the debugger
GDB, which is free software, but you can also run DBX, SDB or XDB if you
-have them. GUD can also serve as an interface to the Perl's debugging
+have them. GUD can also serve as an interface to Perl's debugging
mode, the Python debugger PDB, and to JDB, the Java Debugger.
@xref{Debugging,, The Lisp Debugger, elisp, the Emacs Lisp Reference Manual},
for information on debugging Emacs Lisp programs.
@@ -311,9 +311,13 @@ to a particular debugger program.
@table @kbd
@item M-x gdb @key{RET} @var{file} @key{RET}
@findex gdb
-Run GDB as a subprocess of Emacs. This command creates a buffer
-for input and output to GDB, and switches to it. If a GDB buffer
-already exists, it just switches to that buffer.
+Run GDB as a subprocess of Emacs. If the variable
+@code{gud-gdb-command-name} is ``gdb --annotate=3'' (the default
+value) then GDB starts as for @kbd{M-x gdba} below. If you want to
+GDB to start as in Emacs 21.3 and earlier then set
+@code{gud-gdb-command-name} to ``gdb --fullname''. In this case, the
+command creates a buffer for input and output to GDB, and switches to
+it. If a GDB buffer already exists, it just switches to that buffer.
@item M-x gdba @key{RET} @var{file} @key{RET}
Run GDB as a subprocess of Emacs, providing a graphical interface
@@ -638,13 +642,59 @@ mode is that you can do it through menus and clicks, without needing
to know GDB commands.
@menu
+* Layout:: Control the number of displayed buffers.
* Breakpoints Buffer:: A breakpoint control panel.
* Stack Buffer:: Select a frame from the call stack.
* Watch Expressions:: Monitor variable values in the speedbar.
* Other Buffers:: Input/output, locals, registers and assembler buffers.
-* Layout:: Control the number of displayed buffers.
@end menu
+@node Layout
+@subsubsection Layout
+@cindex GDB User Interface layout
+
+@findex gdb-many-windows
+@vindex gdb-many-windows
+
+If the variable @code{gdb-many-windows} is @code{nil} (the default
+value) then gdb just pops up the GUD buffer unless the variable
+@code{gdb-show-main} is non-@code{nil}. In this case it starts with
+two windows: one displaying the GUD buffer and the other with the
+source file with the main routine of the inferior.
+
+If @code{gdb-many-windows} is non-@code{nil}, regardless of the value of
+@code{gdb-show-main}, the layout below will appear unless
+@code{gdb-use-inferior-io-buffer} is @code{nil}. In this case the
+source buffer occupies the full width of the frame.
+
+@multitable @columnfractions .5 .5
+@item GUD buffer (I/O of GDB)
+@tab Locals buffer
+@item
+@tab
+@item Source buffer
+@tab Input/Output (of inferior) buffer
+@item
+@tab
+@item Stack buffer
+@tab Breakpoints buffer
+@end multitable
+
+To toggle this layout, do @kbd{M-x gdb-many-windows}.
+
+@findex gdb-restore-windows
+If you change the window layout, for example, while editing and
+re-compiling your program, then you can restore it with the command
+@code{gdb-restore-windows}.
+
+You may also choose which additional buffers you want to display,
+either in the same frame or a different one. Select GDB-windows or
+GDB-Frames from the menu-bar under the heading GUD. If the menu-bar
+is unavailable, type @code{M-x
+gdb-display-@var{buffertype}-buffer} or @code{M-x
+gdb-frame-@var{buffertype}-buffer} respectively, where @var{buffertype}
+is the relevant buffer type e.g breakpoints.
+
@node Breakpoints Buffer
@subsubsection Breakpoints Buffer
@@ -705,7 +755,7 @@ on the tag to the left of the expression.
@kindex RET @r{(GDB speedbar)}
@findex gdb-var-delete
With the cursor over the root expression of a complex data type, type
-@key{D} to delete it from the speedbar
+@kbd{D} to delete it from the speedbar
(@code{gdb-var-delete}).
@findex gdb-edit-value
@@ -730,7 +780,8 @@ the default value is @code{nil}.
@table @asis
@item Input/Output Buffer
-The executable program that is being debugged takes its input and
+If the variable @code{gdb-use-inferior-io-buffer} is non-@code{nil},
+the executable program that is being debugged takes its input and
displays its output here. Some of the commands from shell mode are
available here. @xref{Shell Mode}.
@@ -763,44 +814,6 @@ make the selected thread become the current one.
@end table
-@node Layout
-@subsubsection Layout
-@cindex GDB User Interface layout
-
-@findex gdb-many-windows
-@vindex gdb-many-windows
-If @code{gdb-many-windows} is @code{nil} (the default value), then GDB starts
-with just two windows: the GUD and the source buffer. If it is @code{t}, then
-six windows with the following layout will appear:
-
-@multitable @columnfractions .5 .5
-@item GUD buffer (I/O of GDB)
-@tab Locals buffer
-@item
-@tab
-@item Source buffer
-@tab Input/Output (of debuggee) buffer
-@item
-@tab
-@item Stack buffer
-@tab Breakpoints buffer
-@end multitable
-
-To toggle this layout, do @kbd{M-x gdb-many-windows}.
-
-@findex gdb-restore-windows
-If you change the window layout, for example, while editing and
-re-compiling your program, then you can restore it with
-@code{gdb-restore-windows}.
-
-You may also choose which additional buffers you want to display,
-either in the same frame or a different one. Select GDB-windows or
-GDB-Frames from the menu-bar under the heading GUD. If the menu-bar
-is unavailable, type @code{M-x
-gdb-display-@var{buffertype}-buffer} or @code{M-x
-gdb-frame-@var{buffertype}-buffer} respectively, where @var{buffertype}
-is the relevant buffer type e.g breakpoints.
-
@node Executing Lisp
@section Executing Lisp Expressions
diff --git a/man/emacs.texi b/man/emacs.texi
index 3162cd1e167..b5f40a6d9e6 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -12,7 +12,7 @@ This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
updated for Emacs version @value{EMACSVER}.
Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1500,9 +1500,9 @@ edit files while running shell commands.
@include msdog.texi
@include gnu.texi
@include glossary.texi
-@ifinfo
+@ifnottex
@include ack.texi
-@end ifinfo
+@end ifnottex
@c The Option Index is produced only in the on-line version,
@c because the index entries related to command-line options
diff --git a/man/help.texi b/man/help.texi
index 56fb9f542d4..050e600759b 100644
--- a/man/help.texi
+++ b/man/help.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001
+@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001, 2004
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Help, Mark, M-x, Top
@@ -103,10 +103,10 @@ command.
@iftex
@node Help Summary
@end iftex
-@ifinfo
+@ifnottex
@node Help Summary
@section Help Summary
-@end ifinfo
+@end ifnottex
Here is a summary of the Emacs interactive help commands.
@xref{Help Files}, for other help commands that just display a
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 6cec44d3a99..6d221726b7e 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-11 Eli Zaretskii <eliz@gnu.org>
+
+ * sedleim.inp (distclean): Remove stamp-subdirs.
+ (SUBDIRS): Don't use `touch', use `djecho' instead.
+ (changed.tit, changed.misc): Use `djecho' instead of `echo'.
+
2004-05-02 Eli Zaretskii <eliz@gnu.org>
* sed2v2.inp (HAVE_GETRUSAGE): Define.
diff --git a/msdos/sedleim.inp b/msdos/sedleim.inp
index ff9c6b73337..f4795e749b8 100644
--- a/msdos/sedleim.inp
+++ b/msdos/sedleim.inp
@@ -28,6 +28,9 @@ MAKESHELL=/xyzzy/command
/^INSTALLDIR=/c\
INSTALLDIR=.
+/touch stamp-subdir/s|touch|djecho "stamp-subdir" >|
+s|\([ ]\)echo|\1djecho|g
+
/RUN-EMACS *=/,/^$/c\
export EMACSLOADPATH=${buildlisppath}\
RUN-EMACS = ${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
@@ -52,5 +55,8 @@ RUN-EMACS = ${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
install: all\
/^ if test -f/d
+/^distclean:/,/^$/ {
+ s|\(rm -f Makefile\)|\1 stamp-subdir|
+}
# arch-tag: 33c5eed1-78bc-4a6e-9d11-cbc7c541b763
diff --git a/src/.gdbinit b/src/.gdbinit
index 1b141a42064..c976d3633de 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -81,7 +81,7 @@ end
define xvectype
xgetptr $
set $size = ((struct Lisp_Vector *) $ptr)->size
- output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size
+ output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
echo \n
end
document xvectype
@@ -199,7 +199,7 @@ end
define xstring
xgetptr $
print (struct Lisp_String *) $ptr
- output ($->size > 1000) ? 0 : ($->data[0])@($->size_byte < 0 ? $->size : $->size_byte)
+ output ($->size > 1000) ? 0 : ($->data[0])@($->size_byte < 0 ? $->size & ~gdb_array_mark_flag : $->size_byte)
echo \n
end
document xstring
@@ -210,7 +210,7 @@ end
define xvector
xgetptr $
print (struct Lisp_Vector *) $ptr
- output ($->size > 50) ? 0 : ($->contents[0])@($->size)
+ output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
echo \n
end
document xvector
@@ -289,7 +289,7 @@ end
define xboolvector
xgetptr $
print (struct Lisp_Bool_Vector *) $ptr
- output ($->size > 256) ? 0 : ($->data[0])@(($->size + 7)/ 8)
+ output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
echo \n
end
document xboolvector
@@ -377,7 +377,7 @@ define xprintsym
set $sym = (struct Lisp_Symbol *) $ptr
xgetptr $sym->xname
set $sym_name = (struct Lisp_String *) $ptr
- output ($sym_name->data[0])@($sym_name->size_byte < 0 ? $sym_name->size : $sym_name->size_byte)
+ output ($sym_name->data[0])@($sym_name->size_byte < 0 ? $sym_name->size & ~gdb_array_mark_flag : $sym_name->size_byte)
end
document xprintsym
Print argument as a symbol.
@@ -395,7 +395,7 @@ define xbacktrace
if $type == Lisp_Vectorlike
xgetptr (*$bt->function)
set $size = ((struct Lisp_Vector *) $ptr)->size
- output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size
+ output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
else
printf "Lisp type %d", $type
end
diff --git a/src/ChangeLog b/src/ChangeLog
index fad84ff38f5..7425754e042 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,186 @@
+2004-05-18 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems.
+
+ * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph
+ with make_number.
+ (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph
+ with XINT.
+
+2004-05-18 Kim F. Storm <storm@cua.dk>
+
+ * blockinput.h (INPUT_BLOCKED_P): New macros.
+
+ * keyboard.c (Frecursive_edit): Return immediately if input blocked.
+ (Ftop_level): Unblock input if blocked.
+
+ * buffer.h (GET_OVERLAYS_AT): New macro.
+ * msdos.c (IT_note_mouse_highlight): Use it.
+ * textprop.c (get_char_property_and_overlay): Use it.
+ * xdisp.c (next_overlay_change, note_mouse_highlight): Use it.
+ * xfaces.c (face_at_buffer_position): Use it.
+
+ * print.c (print_object): Increase buf size.
+
+2004-05-17 Jason Rumney <jasonr@gnu.org>
+
+ * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key)
+ (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from
+ Lisp_Object using i member.
+ (w32_quit_key): Rename from Vw32_quit_key, and make an int.
+ (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int
+ consistently.
+
+ * w32proc.c (create_child): Use make_number instead of masking pid.
+
+ * w32fns.c (w32_color_map_lookup): Return a Lisp_Object.
+ (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets):
+ Use EQ to compare Lisp_Objects.
+ (w32_parse_hot_key): Use int for lisp_modifiers consistently.
+
+ * w32term.c (w32_num_mouse_buttons): Rename from
+ Vw32_num_mouse_buttons and make it an int.
+
+ * w32.c (init_environment): Use it.
+
+ * w32fns.c (w32_wnd_proc): Likewise.
+
+ * w32proc.c (w32_pipe_read_delay): Rename from
+ Vw32_pipe_read_delay and make it an int.
+
+ * w32.c (_sys_read_ahead): Use it.
+
+ * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition.
+
+ * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid.
+
+ * w32inevt.c (w32_console_mouse_position, do_mouse_event)
+ (key_event): Don't mix Lisp_Object and int.
+
+ * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location.
+
+ * keyboard.c (kbd_buffer_get_event): Don't use event->code and
+ modifiers in language change event.
+
+2004-05-17 Kim F. Storm <storm@cua.dk>
+
+ * alloc.c (mark_object): Ignore Lisp_Misc_Free objects.
+ Such objects may be freed markers which still exist on an undo list.
+
+2004-05-16 Juanma Barranquero <lektu@terra.es>
+
+ * data.c (Fset_default): Make argument names match their use in
+ docstring.
+
+2004-05-15 Andreas Schwab <schwab@suse.de>
+
+ * emacs.c (gdb_array_mark_flag): Define.
+ * .gdbinit: Mask off gdb_array_mark_flag from vector sizes.
+
+2004-05-15 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use
+ __attribute__((__aligned__)), so that USE_LSB_TAG would not become
+ defined for the MS-DOS build.
+
+2004-05-14 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * w32fns.c (Fw32_define_rgb_color): Avoid XSET.
+
+2004-05-14 Kenichi Handa <handa@m17n.org>
+
+ * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS.
+
+2004-05-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c
+ section to frame.c section.
+ (Fxw_display_color_p, Fx_file_dialog): Declare if
+ HAVE_WINDOW_SYSTEM defined.
+ * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup.
+ * macmenu.c (set_frame_menubar): Use NILP to test a lisp value.
+ * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers)
+ (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values.
+ (XTread_socket): Fix int/Lisp_Object mixup.
+ (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup.
+ * macterm.h (struct frame, struct face, struct image)
+ (display_x_get_resource, Fx_display_color_p)
+ (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs):
+ Add prototypes.
+
+2004-05-14 Kim F. Storm <storm@cua.dk>
+
+ * process.c (wait_reading_process_input): Make reentrant.
+ Make Available and Connecting non-static. Save and restore value
+ of waiting_for_user_input_p.
+
+2004-05-13 Kim F. Storm <storm@cua.dk>
+
+ * keyboard.c (mark_kboards): Don't mark x and y members
+ that are overloaded in selection request events.
+
+2004-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp.h (USE_LSB_TAG): Make it the default when it is known to work.
+
+2004-05-13 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * window.c (Fdisplay_buffer, Fsplit_window)
+ (split-height-threshold): Doc fix.
+
+2004-05-13 Juanma Barranquero <lektu@terra.es>
+
+ * xfaces.c (Ftty_supports_face_attributes_p)
+ (Finternal_copy_lisp_face): Fix typo in docstring.
+ (Finternal_get_lisp_face_attribute): Fix docstring.
+
+2004-05-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK.
+
+2004-05-11 Steven Tamm <steventamm@mac.com>
+
+ * macfns.c (Fx_create_frame): Default to using tool-bar by
+ setting tool-bar-lines to 1 in default-frame-alist.
+
+2004-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v)
+ (xpm_get_color_table_v, xpm_make_color_table_h)
+ (xpm_put_color_table_h, xpm_get_color_table_h)
+ (xpm_str_to_color_key, xpm_load_image, xpm_load)
+ (syms_of_image): Support XPM on Carbon Emacs. Does not
+ depend on libXpm, but only supports XPM version 3 without extensions.
+
+2004-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P
+ instead of FRAME_X_P
+
+2004-05-11 Kim F. Storm <storm@cua.dk>
+
+ * process.c (read_process_output): Grow decoding_buf when needed;
+ this could cause a crash in allocate_string and compact_small_strings.
+
+2004-04-29 Jim Blandy <jimb@redhat.com>
+
+ * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2
+ against proper opcode.
+
+2004-05-10 Juanma Barranquero <lektu@terra.es>
+
+ * process.c (Fstart_process): Fix docstring.
+
+ * charset.c (Fget_unused_iso_final_char): Fix typos in docstring.
+ (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction)
+ (Fsplit_char, Fchar_charset): Make argument names match their use
+ in docstring.
+
+2004-05-10 Richard M. Stallman <rms@gnu.org>
+
+ * print.c (print_preprocess): Use being_printed, loop_count and
+ halftail to detect overdeep nesting and cyclic cdr chains.
+
2004-05-10 Andreas Schwab <schwab@suse.de>
* lisp.h: Declare Fmake_symbolic_link.
@@ -115,8 +298,8 @@
2004-05-02 Eli Zaretskii <eliz@gnu.org>
- * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): Avoid
- compiler warnings.
+ * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT):
+ Avoid compiler warnings.
* Makefile.in (region-cache.o): Depend on config.h.
@@ -1461,7 +1644,7 @@
2004-02-09 Sam Steingold <sds@gnu.org>
- * w32term.c (w32_draw_fringe_bitmap): Fixed a typo in the last patch.
+ * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch.
2004-02-09 Kim F. Storm <storm@cua.dk>
@@ -8193,7 +8376,7 @@
* msdos.c (croak): Add `void' to definition.
- * sysdep.c [MSDOS] (request_sigio, unrequest_sigio):
+ * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]:
Don't define them, they are defined in msdos.c.
* mem-limits.h [MSDOS]: Declare etext.
diff --git a/src/alloc.c b/src/alloc.c
index 29351952860..63447d078f9 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -845,7 +845,7 @@ lisp_align_free (block)
free_ablock = ablock;
/* Update busy count. */
ABLOCKS_BUSY (abase) = (struct ablocks *) (-2 + (long) ABLOCKS_BUSY (abase));
-
+
if (2 > (long) ABLOCKS_BUSY (abase))
{ /* All the blocks are free. */
int i = 0, aligned = (long) ABLOCKS_BUSY (abase);
@@ -4467,6 +4467,17 @@ returns nil, because real GC can't be done. */)
mark_kboards ();
mark_ttys ();
+#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
+ mark_stack ();
+#endif
+
+#ifdef USE_GTK
+ {
+ extern void xg_mark_data ();
+ xg_mark_data ();
+ }
+#endif
+
/* Look thru every buffer's undo list
for elements that update markers that were not marked,
and delete them. */
@@ -4510,17 +4521,6 @@ returns nil, because real GC can't be done. */)
}
}
-#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
- mark_stack ();
-#endif
-
-#ifdef USE_GTK
- {
- extern void xg_mark_data ();
- xg_mark_data ();
- }
-#endif
-
gc_sweep ();
/* Clear the mark bits that we set in certain root slots. */
@@ -4978,6 +4978,14 @@ mark_object (arg)
break;
case Lisp_Misc:
+ if (XMISCTYPE (obj) == Lisp_Misc_Free)
+ {
+ /* This is (probably) a freed marker which may still exist on
+ a buffer undo list, so accept it here, as check below will
+ fail (not live). KFS 2004-05-17 */
+ XMARKER (obj)->gcmarkbit = 1;
+ break;
+ }
CHECK_ALLOCATED_AND_LIVE (live_misc_p);
if (XMARKER (obj)->gcmarkbit)
break;
diff --git a/src/blockinput.h b/src/blockinput.h
index eba192c9863..e9f2f3bc217 100644
--- a/src/blockinput.h
+++ b/src/blockinput.h
@@ -97,6 +97,9 @@ extern int pending_atimers;
#define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
#define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
+/* In critical section ? */
+#define INPUT_BLOCKED_P (interrupt_input_blocked > 0)
+
/* Defined in keyboard.c */
/* Don't use a prototype here; it causes trouble in some files. */
extern void reinvoke_input_signal ();
diff --git a/src/buffer.h b/src/buffer.h
index e2205a916e6..b5227cb9981 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -823,6 +823,25 @@ extern void buffer_slot_type_mismatch P_ ((int));
extern void fix_overlays_before P_ ((struct buffer *, EMACS_INT, EMACS_INT));
extern void mmap_set_vars P_ ((int));
+/* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements.
+ If NEXTP is non-NULL, return next overlay there.
+ See overlay_at arg CHANGE_REQ for meaning of CHRQ arg. */
+
+#define GET_OVERLAYS_AT(posn, overlays, noverlays, nextp, chrq) \
+ do { \
+ int maxlen = 40; \
+ overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object)); \
+ noverlays = overlays_at (posn, 0, &overlays, &maxlen, \
+ nextp, NULL, chrq); \
+ if (noverlays > maxlen) \
+ { \
+ maxlen = noverlays; \
+ overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object)); \
+ noverlays = overlays_at (posn, 0, &overlays, &maxlen, \
+ nextp, NULL, chrq); \
+ } \
+ } while (0)
+
EXFUN (Fbuffer_name, 1);
EXFUN (Fget_file_buffer, 1);
EXFUN (Fnext_overlay_change, 1);
diff --git a/src/ccl.c b/src/ccl.c
index 81e90319e52..4c3528075b4 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -2196,8 +2196,8 @@ See the documentation of `define-ccl-program' for the detail of CCL program. */
produced = ccl_driver (&ccl, SDATA (str), outbuf,
SBYTES (str), outbufsize, (int *) 0);
for (i = 0; i < 8; i++)
- XSET (AREF (status, i), Lisp_Int, ccl.reg[i]);
- XSETINT (AREF (status, 8), ccl.ic);
+ ASET (status, i, make_number (ccl.reg[i]));
+ ASET (status, 8, make_number (ccl.ic));
UNGCPRO;
if (NILP (unibyte_p))
diff --git a/src/charset.c b/src/charset.c
index 48382a44bd6..57a12b2398d 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1,7 +1,7 @@
/* Basic multilingual character support.
Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN.
Licensed to the Free Software Foundation.
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2004 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -730,7 +730,7 @@ It includes a generic character for a charset not yet defined. */)
DEFUN ("get-unused-iso-final-char", Fget_unused_iso_final_char,
Sget_unused_iso_final_char, 2, 2, 0,
- doc: /* Return an unsed ISO's final char for a charset of DIMENISION and CHARS.
+ doc: /* Return an unused ISO's final char for a charset of DIMENSION and CHARS.
DIMENSION is the number of bytes to represent a character: 1 or 2.
CHARS is the number of characters in a dimension: 94 or 96.
@@ -1028,9 +1028,9 @@ Internal use only. */)
}
DEFUN ("split-char", Fsplit_char, Ssplit_char, 1, 1, 0,
- doc: /* Return list of charset and one or two position-codes of CHAR.
-If CHAR is invalid as a character code,
-return a list of symbol `unknown' and CHAR. */)
+ doc: /* Return list of charset and one or two position-codes of CH.
+If CH is invalid as a character code,
+return a list of symbol `unknown' and CH. */)
(ch)
Lisp_Object ch;
{
@@ -1048,7 +1048,7 @@ return a list of symbol `unknown' and CHAR. */)
}
DEFUN ("char-charset", Fchar_charset, Schar_charset, 1, 1, 0,
- doc: /* Return charset of CHAR. */)
+ doc: /* Return charset of CH. */)
(ch)
Lisp_Object ch;
{
@@ -1179,7 +1179,7 @@ The conversion is done based on `nonascii-translation-table' (which see)
}
DEFUN ("char-bytes", Fchar_bytes, Schar_bytes, 1, 1, 0,
- doc: /* Return 1 regardless of the argument CHAR. */)
+ doc: /* Return 1 regardless of the argument CH. */)
(ch)
Lisp_Object ch;
{
@@ -1223,7 +1223,7 @@ char_bytes (c)
: 4))))
DEFUN ("char-width", Fchar_width, Schar_width, 1, 1, 0,
- doc: /* Return width of CHAR when displayed in the current buffer.
+ doc: /* Return width of CH when displayed in the current buffer.
The width is measured by how many columns it occupies on the screen.
Tab is taken to occupy `tab-width' columns. */)
(ch)
@@ -1406,18 +1406,18 @@ When calculating width of a multibyte character in STRING,
only the base leading-code is considered; the validity of
the following bytes is not checked. Tabs in STRING are always
taken to occupy `tab-width' columns. */)
- (str)
- Lisp_Object str;
+ (string)
+ Lisp_Object string;
{
Lisp_Object val;
- CHECK_STRING (str);
- XSETFASTINT (val, lisp_string_width (str, -1, NULL, NULL));
+ CHECK_STRING (string);
+ XSETFASTINT (val, lisp_string_width (string, -1, NULL, NULL));
return val;
}
DEFUN ("char-direction", Fchar_direction, Schar_direction, 1, 1, 0,
- doc: /* Return the direction of CHAR.
+ doc: /* Return the direction of CH.
The returned value is 0 for left-to-right and 1 for right-to-left. */)
(ch)
Lisp_Object ch;
diff --git a/src/data.c b/src/data.c
index 992aac66476..5a1a648dcb7 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1407,7 +1407,7 @@ local bindings in certain buffers. */)
}
DEFUN ("set-default", Fset_default, Sset_default, 2, 2, 0,
- doc: /* Set SYMBOL's default value to VAL. SYMBOL and VAL are evaluated.
+ doc: /* Set SYMBOL's default value to VALUE. SYMBOL and VALUE are evaluated.
The default value is seen in buffers that do not have their own values
for this variable. */)
(symbol, value)
diff --git a/src/emacs.c b/src/emacs.c
index 75bea1da4cf..f7bae2dc13d 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -105,6 +105,7 @@ EMACS_INT gdb_data_seg_bits = DATA_SEG_BITS;
EMACS_INT gdb_data_seg_bits = 0;
#endif
EMACS_INT PVEC_FLAG = PSEUDOVECTOR_FLAG;
+EMACS_INT gdb_array_mark_flag = ARRAY_MARK_FLAG;
/* Command line args from shell, as list of strings. */
Lisp_Object Vcommand_line_args;
diff --git a/src/image.c b/src/image.c
index c7bedb5de32..700ab3fa2d9 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3184,12 +3184,15 @@ xbm_load (f, img)
XPM images
***********************************************************************/
-#ifdef HAVE_XPM
+#if defined (HAVE_XPM) || defined (MAC_OS)
static int xpm_image_p P_ ((Lisp_Object object));
static int xpm_load P_ ((struct frame *f, struct image *img));
static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
+#endif /* HAVE_XPM || MAC_OS */
+
+#ifdef HAVE_XPM
#ifdef HAVE_NTGUI
/* Indicate to xpm.h that we don't have Xlib. */
#define FOR_MSW
@@ -3208,7 +3211,9 @@ static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
#else
#include "X11/xpm.h"
#endif /* HAVE_NTGUI */
+#endif /* HAVE_XPM */
+#if defined (HAVE_XPM) || defined (MAC_OS)
/* The symbol `xpm' identifying XPM-format images. */
Lisp_Object Qxpm;
@@ -3536,10 +3541,13 @@ xpm_image_p (object)
|| xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value)));
}
+#endif /* HAVE_XPM || MAC_OS */
/* Load image IMG which will be displayed on frame F. Value is
non-zero if successful. */
+#ifdef HAVE_XPM
+
static int
xpm_load (f, img)
struct frame *f;
@@ -3771,6 +3779,467 @@ xpm_load (f, img)
#endif /* HAVE_XPM */
+#ifdef MAC_OS
+
+/* XPM support functions for Mac OS where libxpm is not available.
+ Only XPM version 3 (without any extensions) is supported. */
+
+static int xpm_scan P_ ((unsigned char **, unsigned char *,
+ unsigned char **, int *));
+static Lisp_Object xpm_make_color_table_v
+ P_ ((void (**) (Lisp_Object, unsigned char *, int, Lisp_Object),
+ Lisp_Object (**) (Lisp_Object, unsigned char *, int)));
+static void xpm_put_color_table_v P_ ((Lisp_Object, unsigned char *,
+ int, Lisp_Object));
+static Lisp_Object xpm_get_color_table_v P_ ((Lisp_Object,
+ unsigned char *, int));
+static Lisp_Object xpm_make_color_table_h
+ P_ ((void (**) (Lisp_Object, unsigned char *, int, Lisp_Object),
+ Lisp_Object (**) (Lisp_Object, unsigned char *, int)));
+static void xpm_put_color_table_h P_ ((Lisp_Object, unsigned char *,
+ int, Lisp_Object));
+static Lisp_Object xpm_get_color_table_h P_ ((Lisp_Object,
+ unsigned char *, int));
+static int xpm_str_to_color_key P_ ((char *));
+static int xpm_load_image P_ ((struct frame *, struct image *,
+ unsigned char *, unsigned char *));
+
+/* Tokens returned from xpm_scan. */
+
+enum xpm_token
+{
+ XPM_TK_IDENT = 256,
+ XPM_TK_STRING,
+ XPM_TK_EOF
+};
+
+/* Scan an XPM data and return a character (< 256) or a token defined
+ by enum xpm_token above. *S and END are the start (inclusive) and
+ the end (exclusive) addresses of the data, respectively. Advance
+ *S while scanning. If token is either XPM_TK_IDENT or
+ XPM_TK_STRING, *BEG and *LEN are set to the start address and the
+ length of the corresponding token, respectively. */
+
+static int
+xpm_scan (s, end, beg, len)
+ unsigned char **s, *end, **beg;
+ int *len;
+{
+ int c;
+
+ while (*s < end)
+ {
+ /* Skip white-space. */
+ while (*s < end && (c = *(*s)++, isspace (c)))
+ ;
+
+ /* gnus-pointer.xpm uses '-' in its identifier.
+ sb-dir-plus.xpm uses '+' in its identifier. */
+ if (isalpha (c) || c == '_' || c == '-' || c == '+')
+ {
+ *beg = *s - 1;
+ while (*s < end &&
+ (c = **s, isalnum (c) || c == '_' || c == '-' || c == '+'))
+ ++*s;
+ *len = *s - *beg;
+ return XPM_TK_IDENT;
+ }
+ else if (c == '"')
+ {
+ *beg = *s;
+ while (*s < end && **s != '"')
+ ++*s;
+ *len = *s - *beg;
+ if (*s < end)
+ ++*s;
+ return XPM_TK_STRING;
+ }
+ else if (c == '/')
+ {
+ if (*s < end && **s == '*')
+ {
+ /* C-style comment. */
+ ++*s;
+ do
+ {
+ while (*s < end && *(*s)++ != '*')
+ ;
+ }
+ while (*s < end && **s != '/');
+ if (*s < end)
+ ++*s;
+ }
+ else
+ return c;
+ }
+ else
+ return c;
+ }
+
+ return XPM_TK_EOF;
+}
+
+/* Functions for color table lookup in XPM data. A Key is a string
+ specifying the color of each pixel in XPM data. A value is either
+ an integer that specifies a pixel color, Qt that specifies
+ transparency, or Qnil for the unspecified color. If the length of
+ the key string is one, a vector is used as a table. Otherwise, a
+ hash table is used. */
+
+static Lisp_Object
+xpm_make_color_table_v (put_func, get_func)
+ void (**put_func) (Lisp_Object, unsigned char *, int, Lisp_Object);
+ Lisp_Object (**get_func) (Lisp_Object, unsigned char *, int);
+{
+ *put_func = xpm_put_color_table_v;
+ *get_func = xpm_get_color_table_v;
+ return Fmake_vector (make_number (256), Qnil);
+}
+
+static void
+xpm_put_color_table_v (color_table, chars_start, chars_len, color)
+ Lisp_Object color_table;
+ unsigned char *chars_start;
+ int chars_len;
+ Lisp_Object color;
+{
+ XVECTOR (color_table)->contents[*chars_start] = color;
+}
+
+static Lisp_Object
+xpm_get_color_table_v (color_table, chars_start, chars_len)
+ Lisp_Object color_table;
+ unsigned char *chars_start;
+ int chars_len;
+{
+ return XVECTOR (color_table)->contents[*chars_start];
+}
+
+static Lisp_Object
+xpm_make_color_table_h (put_func, get_func)
+ void (**put_func) (Lisp_Object, unsigned char *, int, Lisp_Object);
+ Lisp_Object (**get_func) (Lisp_Object, unsigned char *, int);
+{
+ *put_func = xpm_put_color_table_h;
+ *get_func = xpm_get_color_table_h;
+ return make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
+ make_float (DEFAULT_REHASH_SIZE),
+ make_float (DEFAULT_REHASH_THRESHOLD),
+ Qnil, Qnil, Qnil);
+}
+
+static void
+xpm_put_color_table_h (color_table, chars_start, chars_len, color)
+ Lisp_Object color_table;
+ unsigned char *chars_start;
+ int chars_len;
+ Lisp_Object color;
+{
+ struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
+ unsigned hash_code;
+ Lisp_Object chars = make_unibyte_string (chars_start, chars_len);
+
+ hash_lookup (table, chars, &hash_code);
+ hash_put (table, chars, color, hash_code);
+}
+
+static Lisp_Object
+xpm_get_color_table_h (color_table, chars_start, chars_len)
+ Lisp_Object color_table;
+ unsigned char *chars_start;
+ int chars_len;
+{
+ struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
+ int i = hash_lookup (table, make_unibyte_string (chars_start, chars_len),
+ NULL);
+
+ return i >= 0 ? HASH_VALUE (table, i) : Qnil;
+}
+
+enum xpm_color_key {
+ XPM_COLOR_KEY_S,
+ XPM_COLOR_KEY_M,
+ XPM_COLOR_KEY_G4,
+ XPM_COLOR_KEY_G,
+ XPM_COLOR_KEY_C
+};
+
+static char xpm_color_key_strings[][4] = {"s", "m", "g4", "g", "c"};
+
+static int
+xpm_str_to_color_key (s)
+ char *s;
+{
+ int i;
+
+ for (i = 0;
+ i < sizeof xpm_color_key_strings / sizeof xpm_color_key_strings[0];
+ i++)
+ if (strcmp (xpm_color_key_strings[i], s) == 0)
+ return i;
+ return -1;
+}
+
+static int
+xpm_load_image (f, img, contents, end)
+ struct frame *f;
+ struct image *img;
+ unsigned char *contents, *end;
+{
+ unsigned char *s = contents, *beg, *str;
+ unsigned char buffer[BUFSIZ];
+ int width, height, x, y;
+ int num_colors, chars_per_pixel;
+ int len, LA1;
+ void (*put_color_table) (Lisp_Object, unsigned char *, int, Lisp_Object);
+ Lisp_Object (*get_color_table) (Lisp_Object, unsigned char *, int);
+ Lisp_Object frame, color_symbols, color_table;
+ int best_key, have_mask = 0;
+ XImagePtr ximg = NULL, mask_img = NULL;
+
+#define match() \
+ LA1 = xpm_scan (&s, end, &beg, &len)
+
+#define expect(TOKEN) \
+ if (LA1 != (TOKEN)) \
+ goto failure; \
+ else \
+ match ()
+
+#define expect_ident(IDENT) \
+ if (LA1 == XPM_TK_IDENT \
+ && strlen ((IDENT)) == len && memcmp ((IDENT), beg, len) == 0) \
+ match (); \
+ else \
+ goto failure
+
+ if (!(end - s >= 9 && memcmp (s, "/* XPM */", 9) == 0))
+ goto failure;
+ s += 9;
+ match();
+ expect_ident ("static");
+ expect_ident ("char");
+ expect ('*');
+ expect (XPM_TK_IDENT);
+ expect ('[');
+ expect (']');
+ expect ('=');
+ expect ('{');
+ expect (XPM_TK_STRING);
+ if (len >= BUFSIZ)
+ goto failure;
+ memcpy (buffer, beg, len);
+ buffer[len] = '\0';
+ if (sscanf (buffer, "%d %d %d %d", &width, &height,
+ &num_colors, &chars_per_pixel) != 4
+ || width <= 0 || height <= 0
+ || num_colors <= 0 || chars_per_pixel <= 0)
+ goto failure;
+ expect (',');
+
+ XSETFRAME (frame, f);
+ if (!NILP (Fxw_display_color_p (frame)))
+ best_key = XPM_COLOR_KEY_C;
+ else if (!NILP (Fx_display_grayscale_p (frame)))
+ best_key = (XFASTINT (Fx_display_planes (frame)) > 2
+ ? XPM_COLOR_KEY_G : XPM_COLOR_KEY_G4);
+ else
+ best_key = XPM_COLOR_KEY_M;
+
+ color_symbols = image_spec_value (img->spec, QCcolor_symbols, NULL);
+ if (chars_per_pixel == 1)
+ color_table = xpm_make_color_table_v (&put_color_table,
+ &get_color_table);
+ else
+ color_table = xpm_make_color_table_h (&put_color_table,
+ &get_color_table);
+
+ while (num_colors-- > 0)
+ {
+ unsigned char *color, *max_color;
+ int key, next_key, max_key = 0;
+ Lisp_Object symbol_color = Qnil, color_val;
+ XColor cdef;
+
+ expect (XPM_TK_STRING);
+ if (len <= chars_per_pixel || len >= BUFSIZ + chars_per_pixel)
+ goto failure;
+ memcpy (buffer, beg + chars_per_pixel, len - chars_per_pixel);
+ buffer[len - chars_per_pixel] = '\0';
+
+ str = strtok (buffer, " \t");
+ if (str == NULL)
+ goto failure;
+ key = xpm_str_to_color_key (str);
+ if (key < 0)
+ goto failure;
+ do
+ {
+ color = strtok (NULL, " \t");
+ if (color == NULL)
+ goto failure;
+
+ while (str = strtok (NULL, " \t"))
+ {
+ next_key = xpm_str_to_color_key (str);
+ if (next_key >= 0)
+ break;
+ color[strlen (color)] = ' ';
+ }
+
+ if (key == XPM_COLOR_KEY_S)
+ {
+ if (NILP (symbol_color))
+ symbol_color = build_string (color);
+ }
+ else if (max_key < key && key <= best_key)
+ {
+ max_key = key;
+ max_color = color;
+ }
+ key = next_key;
+ }
+ while (str);
+
+ color_val = Qnil;
+ if (!NILP (color_symbols) && !NILP (symbol_color))
+ {
+ Lisp_Object specified_color = Fassoc (symbol_color, color_symbols);
+
+ if (CONSP (specified_color) && STRINGP (XCDR (specified_color)))
+ if (xstricmp (SDATA (XCDR (specified_color)), "None") == 0)
+ color_val = Qt;
+ else if (x_defined_color (f, SDATA (XCDR (specified_color)),
+ &cdef, 0))
+ color_val = make_number (cdef.pixel);
+ }
+ if (NILP (color_val) && max_key > 0)
+ if (xstricmp (max_color, "None") == 0)
+ color_val = Qt;
+ else if (x_defined_color (f, max_color, &cdef, 0))
+ color_val = make_number (cdef.pixel);
+ if (!NILP (color_val))
+ (*put_color_table) (color_table, beg, chars_per_pixel, color_val);
+
+ expect (',');
+ }
+
+ if (!x_create_x_image_and_pixmap (f, width, height, 0,
+ &ximg, &img->pixmap)
+ || !x_create_x_image_and_pixmap (f, width, height, 1,
+ &mask_img, &img->mask))
+ {
+ image_error ("Out of memory (%s)", img->spec, Qnil);
+ goto error;
+ }
+
+ for (y = 0; y < height; y++)
+ {
+ expect (XPM_TK_STRING);
+ str = beg;
+ if (len < width * chars_per_pixel)
+ goto failure;
+ for (x = 0; x < width; x++, str += chars_per_pixel)
+ {
+ Lisp_Object color_val =
+ (*get_color_table) (color_table, str, chars_per_pixel);
+
+ XPutPixel (ximg, x, y,
+ (INTEGERP (color_val) ? XINT (color_val)
+ : FRAME_FOREGROUND_PIXEL (f)));
+ XPutPixel (mask_img, x, y,
+ (!EQ (color_val, Qt) ? PIX_MASK_DRAW (f)
+ : (have_mask = 1, PIX_MASK_RETAIN (f))));
+ }
+ if (y + 1 < height)
+ expect (',');
+ }
+
+ img->width = width;
+ img->height = height;
+
+ x_put_x_image (f, ximg, img->pixmap, width, height);
+ x_destroy_x_image (ximg);
+ if (have_mask)
+ {
+ x_put_x_image (f, mask_img, img->mask, width, height);
+ x_destroy_x_image (mask_img);
+ }
+ else
+ {
+ x_destroy_x_image (mask_img);
+ Free_Pixmap (FRAME_X_DISPLAY (f), img->mask);
+ img->mask = NO_PIXMAP;
+ }
+
+ return 1;
+
+ failure:
+ image_error ("Invalid XPM file (%s)", img->spec, Qnil);
+ error:
+ x_destroy_x_image (ximg);
+ x_destroy_x_image (mask_img);
+ x_clear_image (f, img);
+ return 0;
+
+#undef match
+#undef expect
+#undef expect_ident
+}
+
+static int
+xpm_load (f, img)
+ struct frame *f;
+ struct image *img;
+{
+ int success_p = 0;
+ Lisp_Object file_name;
+
+ /* If IMG->spec specifies a file name, create a non-file spec from it. */
+ file_name = image_spec_value (img->spec, QCfile, NULL);
+ if (STRINGP (file_name))
+ {
+ Lisp_Object file;
+ unsigned char *contents;
+ int size;
+ struct gcpro gcpro1;
+
+ file = x_find_image_file (file_name);
+ GCPRO1 (file);
+ if (!STRINGP (file))
+ {
+ image_error ("Cannot find image file `%s'", file_name, Qnil);
+ UNGCPRO;
+ return 0;
+ }
+
+ contents = slurp_file (SDATA (file), &size);
+ if (contents == NULL)
+ {
+ image_error ("Error loading XPM image `%s'", img->spec, Qnil);
+ UNGCPRO;
+ return 0;
+ }
+
+ success_p = xpm_load_image (f, img, contents, contents + size);
+ xfree (contents);
+ UNGCPRO;
+ }
+ else
+ {
+ Lisp_Object data;
+
+ data = image_spec_value (img->spec, QCdata, NULL);
+ success_p = xpm_load_image (f, img, SDATA (data),
+ SDATA (data) + SBYTES (data));
+ }
+
+ return success_p;
+}
+
+#endif /* MAC_OS */
+
+
/***********************************************************************
Color table
@@ -7447,7 +7916,7 @@ syms_of_image ()
Qxbm = intern ("xbm");
staticpro (&Qxbm);
-#ifdef HAVE_XPM
+#if defined (HAVE_XPM) || defined (MAC_OS)
Qxpm = intern ("xpm");
staticpro (&Qxpm);
#endif
@@ -7517,7 +7986,7 @@ init_image ()
define_image_type (&xbm_type);
define_image_type (&pbm_type);
-#ifdef HAVE_XPM
+#if defined (HAVE_XPM) || defined (MAC_OS)
IF_LIB_AVAILABLE(init_xpm_functions)
define_image_type (&xpm_type);
#endif
diff --git a/src/keyboard.c b/src/keyboard.c
index 2a1c1c89e87..75a049b5775 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -985,6 +985,11 @@ This function is called by the editor initialization to begin editing. */)
int count = SPECPDL_INDEX ();
Lisp_Object buffer;
+ /* If we enter while input is blocked, don't lock up here.
+ This may happen through the debugger during redisplay. */
+ if (INPUT_BLOCKED_P)
+ return Qnil;
+
command_loop_level++;
update_mode_lines = 1;
@@ -1281,6 +1286,12 @@ DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, "",
if (display_hourglass_p)
cancel_hourglass ();
#endif
+
+ /* Unblock input if we enter with input blocked. This may happen if
+ redisplay traps e.g. during tool-bar update with input blocked. */
+ while (INPUT_BLOCKED_P)
+ UNBLOCK_INPUT;
+
return Fthrow (Qtop_level, Qnil);
}
@@ -3964,9 +3975,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
else if (event->kind == LANGUAGE_CHANGE_EVENT)
{
/* Make an event (language-change (FRAME CHARSET LCID)). */
- obj = Fcons (event->modifiers, Qnil);
- obj = Fcons (event->code, obj);
- obj = Fcons (event->frame_or_window, obj);
+ obj = Fcons (event->frame_or_window, Qnil);
obj = Fcons (Qlanguage_change, Fcons (obj, Qnil));
kbd_fetch_ptr = event + 1;
}
@@ -11548,8 +11557,11 @@ mark_kboards ()
{
if (event == kbd_buffer + KBD_BUFFER_SIZE)
event = kbd_buffer;
- mark_object (event->x);
- mark_object (event->y);
+ if (event->kind != SELECTION_REQUEST_EVENT)
+ {
+ mark_object (event->x);
+ mark_object (event->y);
+ }
mark_object (event->frame_or_window);
mark_object (event->arg);
}
diff --git a/src/lisp.h b/src/lisp.h
index 023bedaea04..ca060cb4c2f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -284,24 +284,51 @@ enum pvec_type
#define BOOL_VECTOR_BITS_PER_CHAR 8
/***** Select the tagging scheme. *****/
+/* There are basically two options that control the tagging scheme:
+ - NO_UNION_TYPE says that Lisp_Object should be an integer instead
+ of a union.
+ - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
+ always 0, and we can thus use them to hold tag bits, without
+ restricting our addressing space.
+
+ If USE_LSB_TAG is not set, then we use the top 3 bits for tagging, thus
+ restricting our possible address range. Currently USE_LSB_TAG is not
+ allowed together with a union. This is not due to any fundamental
+ technical (or political ;-) problem: nobody wrote the code to do it yet.
+
+ USE_LSB_TAG not only requires the least 3 bits of pointers returned by
+ malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
+ on the few static Lisp_Objects used: all the defsubr as well
+ as the two special buffers buffer_defaults and buffer_local_symbols. */
/* First, try and define DECL_ALIGN(type,var) which declares a static
variable VAR of type TYPE with the added requirement that it be
TYPEBITS-aligned. */
-#if defined USE_LSB_TAG && !defined DECL_ALIGN
+#ifndef DECL_ALIGN
/* What compiler directive should we use for non-gcc compilers? -stef */
# if defined (__GNUC__)
# define DECL_ALIGN(type, var) \
type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-# else
-# error "USE_LSB_TAG used without defining DECL_ALIGN"
# endif
#endif
-#ifndef USE_LSB_TAG
+/* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8. */
+#if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined MAC_OSX
+/* We also need to be able to specify mult-of-8 alignment on static vars. */
+# if defined DECL_ALIGN
+/* We currently do not support USE_LSB_TAG with a union Lisp_Object. */
+# if defined NO_UNION_TYPE
+# define USE_LSB_TAG
+# endif
+# endif
+#endif
+
/* Just remove the alignment annotation if we don't use it. */
-#undef DECL_ALIGN
-#define DECL_ALIGN(type, var) type var
+#ifndef DECL_ALIGN
+# ifdef USE_LSB_TAG
+# error "USE_LSB_TAG used without defining DECL_ALIGN"
+# endif
+# define DECL_ALIGN(type, var) type var
#endif
@@ -2857,6 +2884,10 @@ extern int indented_beyond_p P_ ((int, int, double));
extern void syms_of_indent P_ ((void));
/* defined in frame.c */
+#ifdef HAVE_WINDOW_SYSTEM
+extern Lisp_Object Vx_resource_name;
+extern Lisp_Object Vx_resource_class;
+#endif /* HAVE_WINDOW_SYSTEM */
extern Lisp_Object Qvisible;
extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object));
extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object));
@@ -3079,11 +3110,12 @@ extern int getloadavg P_ ((double *, int));
#ifdef HAVE_X_WINDOWS
/* Defined in xfns.c */
extern void syms_of_xfns P_ ((void));
-extern Lisp_Object Vx_resource_name;
-extern Lisp_Object Vx_resource_class;
+#endif /* HAVE_X_WINDOWS */
+#ifdef HAVE_WINDOW_SYSTEM
+/* Defined in xfns.c, w32fns.c, or macfns.c */
EXFUN (Fxw_display_color_p, 1);
EXFUN (Fx_file_dialog, 4);
-#endif /* HAVE_X_WINDOWS */
+#endif /* HAVE_WINDOW_SYSTEM */
/* Defined in xsmfns.c */
extern void syms_of_xsmfns P_ ((void));
@@ -3109,9 +3141,7 @@ extern void xfree P_ ((POINTER_TYPE *));
extern char *xstrdup P_ ((const char *));
-#ifndef USE_CRT_DLL
extern char *egetenv P_ ((char *));
-#endif
/* Set up the name of the machine we're running on. */
extern void init_system_name P_ ((void));
diff --git a/src/macfns.c b/src/macfns.c
index dbb8adb3fe1..625ca29336c 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -2598,7 +2598,7 @@ This function is an internal primitive--use `make-frame' instead. */)
if (!NILP (parent))
{
- f->output_data.mac->parent_desc = (Window) parent;
+ f->output_data.mac->parent_desc = (Window) XFASTINT (parent);
f->output_data.mac->explicit_parent = 1;
}
else
@@ -2708,7 +2708,7 @@ This function is an internal primitive--use `make-frame' instead. */)
x_default_parameter (f, parms, Qmenu_bar_lines, make_number (1),
"menuBar", "MenuBar", RES_TYPE_NUMBER);
- x_default_parameter (f, parms, Qtool_bar_lines, make_number (0),
+ x_default_parameter (f, parms, Qtool_bar_lines, make_number (1),
"toolBar", "ToolBar", RES_TYPE_NUMBER);
x_default_parameter (f, parms, Qbuffer_predicate, Qnil,
"bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL);
diff --git a/src/macmenu.c b/src/macmenu.c
index 06b1b16cf41..de768d4aea5 100644
--- a/src/macmenu.c
+++ b/src/macmenu.c
@@ -1424,7 +1424,8 @@ set_frame_menubar (f, first_time, deep_p)
for (i = 0; i < previous_menu_items_used; i++)
if (menu_items_used == i
- || (!Fequal (previous_items[i], XVECTOR (menu_items)->contents[i])))
+ || (NILP (Fequal (previous_items[i],
+ XVECTOR (menu_items)->contents[i]))))
break;
if (i == menu_items_used && i == previous_menu_items_used && i != 0)
{
diff --git a/src/macterm.c b/src/macterm.c
index 1a281d808a0..9351fd5e36f 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -1210,7 +1210,7 @@ x_flush (f)
FOR_EACH_FRAME (rest, frame)
x_flush (XFRAME (frame));
}
- else if (FRAME_X_P (f))
+ else if (FRAME_MAC_P (f))
XFlush (FRAME_MAC_DISPLAY (f));
UNBLOCK_INPUT;
#endif /* TARGET_API_MAC_CARBON */
@@ -1410,7 +1410,7 @@ static void
XTframe_up_to_date (f)
struct frame *f;
{
- if (FRAME_X_P (f))
+ if (FRAME_MAC_P (f))
{
struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
@@ -7033,8 +7033,8 @@ static int
mac_get_emulated_btn ( UInt32 modifiers )
{
int result = 0;
- if (Vmac_emulate_three_button_mouse != Qnil) {
- int cmdIs3 = (Vmac_emulate_three_button_mouse != Qreverse);
+ if (!NILP (Vmac_emulate_three_button_mouse)) {
+ int cmdIs3 = !EQ (Vmac_emulate_three_button_mouse, Qreverse);
if (modifiers & controlKey)
result = cmdIs3 ? 2 : 1;
else if (modifiers & optionKey)
@@ -7052,7 +7052,7 @@ mac_event_to_emacs_modifiers (EventRef eventRef)
UInt32 mods = 0;
GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL,
sizeof (UInt32), NULL, &mods);
- if (Vmac_emulate_three_button_mouse != Qnil &&
+ if (!NILP (Vmac_emulate_three_button_mouse) &&
GetEventClass(eventRef) == kEventClassMouse)
{
mods &= ~(optionKey & cmdKey);
@@ -7071,7 +7071,7 @@ mac_get_mouse_btn (EventRef ref)
switch (result)
{
case kEventMouseButtonPrimary:
- if (Vmac_emulate_three_button_mouse == Qnil)
+ if (NILP (Vmac_emulate_three_button_mouse))
return 0;
else {
UInt32 mods = 0;
@@ -8227,7 +8227,7 @@ XTread_socket (int sd, int expected, struct input_event *hold_quit)
inev.timestamp = er.when * (1000 / 60);
/* ticks to milliseconds */
- XSETINT (inev.x, tracked_scroll_bar->left + 2);
+ XSETINT (inev.x, XFASTINT (tracked_scroll_bar->left) + 2);
XSETINT (inev.y, mouse_loc.v - 24);
tracked_scroll_bar->dragging = Qnil;
mouse_tracking_in_progress = mouse_tracking_none;
@@ -8312,6 +8312,8 @@ XTread_socket (int sd, int expected, struct input_event *hold_quit)
else
{
Lisp_Object window;
+ int x = mouse_loc.h;
+ int y = mouse_loc.v;
XSETFRAME (inev.frame_or_window, mwp->mFP);
if (er.what == mouseDown)
@@ -8319,14 +8321,14 @@ XTread_socket (int sd, int expected, struct input_event *hold_quit)
= mouse_tracking_mouse_movement;
else
mouse_tracking_in_progress = mouse_tracking_none;
- window = window_from_coordinates (mwp->mFP, inev.x, inev.y, 0, 0, 0, 1);
+ window = window_from_coordinates (mwp->mFP, x, y, 0, 0, 0, 1);
if (EQ (window, mwp->mFP->tool_bar_window))
{
if (er.what == mouseDown)
- handle_tool_bar_click (mwp->mFP, inev.x, inev.y, 1, 0);
+ handle_tool_bar_click (mwp->mFP, x, y, 1, 0);
else
- handle_tool_bar_click (mwp->mFP, inev.x, inev.y, 0,
+ handle_tool_bar_click (mwp->mFP, x, y, 0,
#if USE_CARBON_EVENTS
mac_event_to_emacs_modifiers (eventRef)
#else
@@ -9024,7 +9026,7 @@ mac_check_for_quit_char ()
EVENT_INIT (e);
e.kind = ASCII_KEYSTROKE_EVENT;
e.code = quit_char;
- e.arg = NULL;
+ e.arg = Qnil;
e.modifiers = NULL;
e.timestamp = EventTimeToTicks (GetEventTime (event)) * (1000/60);
XSETFRAME (e.frame_or_window, mwp->mFP);
diff --git a/src/macterm.h b/src/macterm.h
index 1b4148ed71d..6ce034e9534 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -562,8 +562,18 @@ struct scroll_bar {
text from glomming up against the scroll bar */
#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
-
-struct frame * check_x_frame (Lisp_Object);
+struct frame;
+struct face;
+struct image;
+
+Lisp_Object display_x_get_resource P_ ((struct x_display_info *,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object));
+struct frame *check_x_frame P_ ((Lisp_Object));
+EXFUN (Fx_display_color_p, 1);
+EXFUN (Fx_display_grayscale_p, 1);
+EXFUN (Fx_display_planes, 1);
+extern void x_free_gcs P_ ((struct frame *));
void activate_scroll_bars (FRAME_PTR);
void deactivate_scroll_bars (FRAME_PTR);
diff --git a/src/msdos.c b/src/msdos.c
index 6c534d6d2d9..da7fab89c7e 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -951,8 +951,8 @@ static void
IT_write_glyphs (struct glyph *str, int str_len)
{
unsigned char *screen_buf, *screen_bp, *screen_buf_end, *bp;
- int unsupported_face = FAST_GLYPH_FACE (Vdos_unsupported_char_glyph);
- unsigned unsupported_char= FAST_GLYPH_CHAR (Vdos_unsupported_char_glyph);
+ int unsupported_face = 0;
+ unsigned unsupported_char = '\177';
int offset = 2 * (new_pos_X + screen_size_X * new_pos_Y);
register int sl = str_len;
register int tlen = GLYPH_TABLE_LENGTH;
@@ -978,6 +978,13 @@ IT_write_glyphs (struct glyph *str, int str_len)
if (str_len <= 0) return;
+ /* Set up the unsupported character glyph */
+ if (!NILP (Vdos_unsupported_char_glyph))
+ {
+ unsupported_char = FAST_GLYPH_CHAR (XINT (Vdos_unsupported_char_glyph));
+ unsupported_face = FAST_GLYPH_FACE (XINT (Vdos_unsupported_char_glyph));
+ }
+
screen_buf = screen_bp = alloca (str_len * 2);
screen_buf_end = screen_buf + str_len * 2;
sf = SELECTED_FRAME();
@@ -1042,7 +1049,7 @@ IT_write_glyphs (struct glyph *str, int str_len)
if (! CHAR_VALID_P (ch, 0))
{
g = !NILP (Vdos_unsupported_char_glyph)
- ? Vdos_unsupported_char_glyph
+ ? XINT (Vdos_unsupported_char_glyph)
: MAKE_GLYPH (sf, '\177', GLYPH_FACE (sf, g));
ch = FAST_GLYPH_CHAR (g);
}
@@ -1572,7 +1579,7 @@ IT_note_mouse_highlight (struct frame *f, int x, int y)
{
extern Lisp_Object Qmouse_face;
Lisp_Object mouse_face, overlay, position, *overlay_vec;
- int len, noverlays, obegv, ozv;;
+ int noverlays, obegv, ozv;;
struct buffer *obuf;
/* If we get an out-of-range value, return now; avoid an error. */
@@ -1591,20 +1598,8 @@ IT_note_mouse_highlight (struct frame *f, int x, int y)
/* Is this char mouse-active or does it have help-echo? */
XSETINT (position, pos);
- /* Put all the overlays we want in a vector in overlay_vec.
- Store the length in len. If there are more than 10, make
- enough space for all, and try again. */
- len = 10;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL, 0);
- if (noverlays > len)
- {
- len = noverlays;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos,
- 0, &overlay_vec, &len, NULL, NULL, 0);
- }
-
+ /* Put all the overlays we want in a vector in overlay_vec. */
+ GET_OVERLAYS_AT (pos, overlay_vec, noverlays, NULL, 0);
/* Sort overlays into increasing priority order. */
noverlays = sort_overlays (overlay_vec, noverlays, w);
@@ -5292,7 +5287,7 @@ syms_of_msdos ()
DEFVAR_LISP ("dos-unsupported-char-glyph", &Vdos_unsupported_char_glyph,
doc: /* *Glyph to display instead of chars not supported by current codepage.
This variable is used only by MSDOS terminals. */);
- Vdos_unsupported_char_glyph = '\177';
+ Vdos_unsupported_char_glyph = make_number ('\177');
#endif
#ifndef subprocesses
diff --git a/src/print.c b/src/print.c
index e729b468fd1..74f8fad8d15 100644
--- a/src/print.c
+++ b/src/print.c
@@ -791,7 +791,7 @@ A printed representation of an object is text which describes that object. */)
if (SBYTES (object) == SCHARS (object))
STRING_SET_UNIBYTE (object);
- /* Note that this won't make prepare_to_modify_buffer call
+ /* Note that this won't make prepare_to_modify_buffer call
ask-user-about-supersession-threat because this buffer
does not visit a file. */
Ferase_buffer ();
@@ -929,7 +929,7 @@ DEFUN ("redirect-debugging-output", Fredirect_debugging_output, Sredirect_debugg
doc: /* Redirect debugging output (stderr stream) to file FILE.
If FILE is nil, reset target to the initial stderr stream.
Optional arg APPEND non-nil (interactively, with prefix arg) means
-append to existing target file. */)
+append to existing target file. */)
(file, append)
Lisp_Object file, append;
{
@@ -1280,6 +1280,26 @@ print_preprocess (obj)
{
int i;
EMACS_INT size;
+ int loop_count = 0;
+ Lisp_Object halftail;
+
+ /* Avoid infinite recursion for circular nested structure
+ in the case where Vprint_circle is nil. */
+ if (NILP (Vprint_circle))
+ {
+ for (i = 0; i < print_depth; i++)
+ if (EQ (obj, being_printed[i]))
+ return;
+ being_printed[print_depth] = obj;
+ }
+
+ /* Give up if we go so deep that print_object will get an error. */
+ /* See similar code in print_object. */
+ if (print_depth >= PRINT_CIRCLE)
+ return;
+
+ print_depth++;
+ halftail = obj;
loop:
if (STRINGP (obj) || CONSP (obj) || VECTORP (obj)
@@ -1340,8 +1360,15 @@ print_preprocess (obj)
break;
case Lisp_Cons:
+ /* Use HALFTAIL and LOOP_COUNT to detect circular lists,
+ just as in print_object. */
+ if (loop_count && EQ (obj, halftail))
+ break;
print_preprocess (XCAR (obj));
obj = XCDR (obj);
+ loop_count++;
+ if (!(loop_count & 1))
+ halftail = XCDR (halftail);
goto loop;
case Lisp_Vectorlike:
@@ -1356,6 +1383,7 @@ print_preprocess (obj)
break;
}
}
+ print_depth--;
}
static void
@@ -1372,7 +1400,7 @@ print_object (obj, printcharfun, escapeflag)
register Lisp_Object printcharfun;
int escapeflag;
{
- char buf[30];
+ char buf[40];
QUIT;
@@ -1426,6 +1454,7 @@ print_object (obj, printcharfun, escapeflag)
print_depth++;
+ /* See similar code in print_preprocess. */
if (print_depth > PRINT_CIRCLE)
error ("Apparently circular structure being printed");
#ifdef MAX_PRINT_CHARS
diff --git a/src/process.c b/src/process.c
index db7e31dd244..d5e76b29b98 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1457,12 +1457,12 @@ static Lisp_Object start_process_unwind ();
DEFUN ("start-process", Fstart_process, Sstart_process, 3, MANY, 0,
doc: /* Start a program in a subprocess. Return the process object for it.
NAME is name for process. It is modified if necessary to make it unique.
-BUFFER is the buffer or (buffer-name) to associate with the process.
+BUFFER is the buffer (or buffer name) to associate with the process.
Process output goes at end of that buffer, unless you specify
an output stream or filter function to handle the output.
BUFFER may be also nil, meaning that this process is not associated
with any buffer.
-Third arg is program file name. It is searched for in PATH.
+PROGRAM is the program file name. It is searched for in PATH.
Remaining arguments are strings to give program as arguments.
usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
@@ -4018,8 +4018,8 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
int do_display;
{
register int channel, nfds;
- static SELECT_TYPE Available;
- static SELECT_TYPE Connecting;
+ SELECT_TYPE Available;
+ SELECT_TYPE Connecting;
int check_connect, check_delay, no_avail;
int xerrno;
Lisp_Object proc;
@@ -4030,6 +4030,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
/* Either nil or a cons cell, the car of which is of interest and
may be changed outside of this routine. */
Lisp_Object wait_for_cell = Qnil;
+ int saved_waiting_for_user_input_p = waiting_for_user_input_p;
FD_ZERO (&Available);
FD_ZERO (&Connecting);
@@ -4643,7 +4644,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
} /* end for each file descriptor */
} /* end while exit conditions not met */
- waiting_for_user_input_p = 0;
+ waiting_for_user_input_p = saved_waiting_for_user_input_p;
/* If calling from keyboard input, do not quit
since we want to return C-g as an input character.
@@ -4894,6 +4895,8 @@ read_process_output (proc, channel)
}
carryover = nbytes - coding->consumed;
+ if (SCHARS (p->decoding_buf) < carryover)
+ p->decoding_buf = make_uninit_string (carryover);
bcopy (chars + coding->consumed, SDATA (p->decoding_buf),
carryover);
XSETINT (p->decoding_carryover, carryover);
@@ -4998,6 +5001,8 @@ read_process_output (proc, channel)
}
}
carryover = nbytes - coding->consumed;
+ if (SCHARS (p->decoding_buf) < carryover)
+ p->decoding_buf = make_uninit_string (carryover);
bcopy (chars + coding->consumed, SDATA (p->decoding_buf),
carryover);
XSETINT (p->decoding_carryover, carryover);
diff --git a/src/regex.c b/src/regex.c
index a145183510d..a518ef81a0c 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -4661,7 +4661,7 @@ mutually_exclusive_p (bufp, p1, p2)
case wordbeg:
case syntaxspec:
return ((re_opcode_t) *p1 == notsyntaxspec
- && p1[1] == (op2 == wordend ? Sword : p2[1]));
+ && p1[1] == (op2 == wordbeg ? Sword : p2[1]));
case wordbound:
return (((re_opcode_t) *p1 == notsyntaxspec
diff --git a/src/textprop.c b/src/textprop.c
index 4f13aefb1be..c8ec008dcbd 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -637,30 +637,13 @@ get_char_property_and_overlay (position, prop, object, overlay)
}
if (BUFFERP (object))
{
- int posn = XINT (position);
int noverlays;
- Lisp_Object *overlay_vec, tem;
- int len;
+ Lisp_Object *overlay_vec;
struct buffer *obuf = current_buffer;
set_buffer_temp (XBUFFER (object));
- /* First try with room for 40 overlays. */
- len = 40;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
-
- noverlays = overlays_at (posn, 0, &overlay_vec, &len,
- NULL, NULL, 0);
-
- /* If there are more than 40,
- make enough space for all, and try again. */
- if (noverlays > len)
- {
- len = noverlays;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (posn, 0, &overlay_vec, &len,
- NULL, NULL, 0);
- }
+ GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, 0);
noverlays = sort_overlays (overlay_vec, noverlays, w);
set_buffer_temp (obuf);
@@ -668,7 +651,7 @@ get_char_property_and_overlay (position, prop, object, overlay)
/* Now check the overlays in order of decreasing priority. */
while (--noverlays >= 0)
{
- tem = Foverlay_get (overlay_vec[noverlays], prop);
+ Lisp_Object tem = Foverlay_get (overlay_vec[noverlays], prop);
if (!NILP (tem))
{
if (overlay)
diff --git a/src/w32.c b/src/w32.c
index 98d630529e6..12d1f21b091 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -105,7 +105,7 @@ void globals_of_w32 ();
extern Lisp_Object Vw32_downcase_file_names;
extern Lisp_Object Vw32_generate_fake_inodes;
extern Lisp_Object Vw32_get_true_file_attributes;
-extern Lisp_Object Vw32_num_mouse_buttons;
+extern int w32_num_mouse_buttons;
/*
@@ -1094,7 +1094,7 @@ init_environment (char ** argv)
/* Determine if there is a middle mouse button, to allow parse_button
to decide whether right mouse events should be mouse-2 or
mouse-3. */
- XSETINT (Vw32_num_mouse_buttons, GetSystemMetrics (SM_CMOUSEBUTTONS));
+ w32_num_mouse_buttons = GetSystemMetrics (SM_CMOUSEBUTTONS);
init_user_info ();
}
@@ -1627,7 +1627,7 @@ static WIN32_FIND_DATA dir_find_data;
/* Support shares on a network resource as subdirectories of a read-only
root directory. */
static HANDLE wnet_enum_handle = INVALID_HANDLE_VALUE;
-HANDLE open_unc_volume (char *);
+HANDLE open_unc_volume (const char *);
char *read_unc_volume (HANDLE, char *, int);
void close_unc_volume (HANDLE);
@@ -1740,7 +1740,7 @@ readdir (DIR *dirp)
}
HANDLE
-open_unc_volume (char *path)
+open_unc_volume (const char *path)
{
NETRESOURCE nr;
HANDLE henum;
@@ -1797,7 +1797,7 @@ close_unc_volume (HANDLE henum)
}
DWORD
-unc_volume_file_attributes (char *path)
+unc_volume_file_attributes (const char *path)
{
HANDLE henum;
DWORD attrs;
@@ -3486,7 +3486,7 @@ sys_pipe (int * phandles)
}
/* From ntproc.c */
-extern Lisp_Object Vw32_pipe_read_delay;
+extern int w32_pipe_read_delay;
/* Function to do blocking read of one byte, needed to implement
select. It is only allowed on sockets and pipes. */
@@ -3526,7 +3526,7 @@ _sys_read_ahead (int fd)
shell on NT is very slow if we don't do this. */
if (rc > 0)
{
- int wait = XINT (Vw32_pipe_read_delay);
+ int wait = w32_pipe_read_delay;
if (wait > 0)
Sleep (wait);
diff --git a/src/w32console.c b/src/w32console.c
index 14885f90730..b2d340d579c 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -55,18 +55,18 @@ extern int meta_key;
static void move_cursor (int row, int col);
static void clear_to_end (void);
-static void clear_frame (void);
-static void clear_end_of_line (int);
+void clear_frame (void);
+void clear_end_of_line (int);
static void ins_del_lines (int vpos, int n);
-static void insert_glyphs (struct glyph *start, int len);
-static void write_glyphs (struct glyph *string, int len);
-static void delete_glyphs (int n);
+void insert_glyphs (struct glyph *start, int len);
+void write_glyphs (struct glyph *string, int len);
+void delete_glyphs (int n);
void w32_sys_ring_bell (void);
-static void reset_terminal_modes (void);
-static void set_terminal_modes (void);
-static void set_terminal_window (int size);
-static void update_begin (struct frame * f);
-static void update_end (struct frame * f);
+void reset_terminal_modes (void);
+void set_terminal_modes (void);
+void set_terminal_window (int size);
+void update_begin (struct frame * f);
+void update_end (struct frame * f);
static WORD w32_face_attributes (struct frame *f, int face_id);
static COORD cursor_coords;
@@ -103,7 +103,7 @@ ctrl_c_handler (unsigned long type)
#define PICK_FRAME() (updating_frame ? updating_frame : SELECTED_FRAME ())
/* Move the cursor to (row, col). */
-void
+static void
move_cursor (int row, int col)
{
cursor_coords.X = col;
@@ -116,7 +116,7 @@ move_cursor (int row, int col)
}
/* Clear from cursor to end of screen. */
-void
+static void
clear_to_end (void)
{
struct frame * f = PICK_FRAME ();
@@ -240,7 +240,7 @@ ins_del_lines (int vpos, int n)
#define LEFT 1
#define RIGHT 0
-void
+static void
scroll_line (int dist, int direction)
{
/* The idea here is to implement a horizontal scroll in one line to
diff --git a/src/w32fns.c b/src/w32fns.c
index fc40f5f68da..f56ecc35cc6 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1,5 +1,5 @@
/* Graphical user interface functions for the Microsoft W32 API.
- Copyright (C) 1989, 92, 93, 94, 95, 1996, 1997, 1998, 1999, 2000, 2001
+ Copyright (C) 1989, 92, 93, 94, 95, 96, 97, 98, 1999, 2000, 01, 2004
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -88,7 +88,7 @@ Lisp_Object Vw32_pass_alt_to_system;
Lisp_Object Vw32_alt_is_meta;
/* If non-zero, the windows virtual key code for an alternative quit key. */
-Lisp_Object Vw32_quit_key;
+int w32_quit_key;
/* Non nil if left window key events are passed on to Windows (this only
affects whether "tapping" the key opens the Start menu). */
@@ -132,11 +132,11 @@ Lisp_Object Vw32_enable_palette;
/* Control how close left/right button down events must be to
be converted to a middle button down event. */
-Lisp_Object Vw32_mouse_button_tolerance;
+int w32_mouse_button_tolerance;
/* Minimum interval between mouse movement (and scroll bar drag)
events that are passed on to the event loop. */
-Lisp_Object Vw32_mouse_move_interval;
+int w32_mouse_move_interval;
/* Flag to indicate if XBUTTON events should be passed on to Windows. */
int w32_pass_extra_mouse_buttons_to_system;
@@ -235,7 +235,7 @@ Lisp_Object Qw32_charset_unicode;
#endif
/* The ANSI codepage. */
-Lisp_Object Vw32_ansi_code_page;
+int w32_ansi_code_page;
/* Prefix for system colors. */
#define SYSTEM_COLOR_PREFIX "System"
@@ -283,7 +283,7 @@ int image_cache_refcount, dpyinfo_refcount;
/* From w32term.c. */
-extern Lisp_Object Vw32_num_mouse_buttons;
+extern int w32_num_mouse_buttons;
extern Lisp_Object Vw32_recognize_altgr;
extern HWND w32_system_caret_hwnd;
@@ -465,7 +465,7 @@ if the entry is new. */)
CHECK_NUMBER (blue);
CHECK_STRING (name);
- XSET (rgb, Lisp_Int, RGB(XUINT (red), XUINT (green), XUINT (blue)));
+ XSETINT (rgb, RGB(XUINT (red), XUINT (green), XUINT (blue)));
BLOCK_INPUT;
@@ -828,7 +828,7 @@ w32_to_x_color (rgb)
return Qnil;
}
-COLORREF
+static Lisp_Object
w32_color_map_lookup (colorname)
char *colorname;
{
@@ -847,7 +847,7 @@ w32_color_map_lookup (colorname)
if (lstrcmpi (SDATA (tem), colorname) == 0)
{
- ret = XUINT (Fcdr (elt));
+ ret = Fcdr (elt);
break;
}
@@ -910,7 +910,7 @@ add_system_logical_colors_to_map (system_colors)
}
-COLORREF
+static Lisp_Object
x_to_w32_color (colorname)
char * colorname;
{
@@ -970,7 +970,8 @@ x_to_w32_color (colorname)
if (i == 2)
{
UNBLOCK_INPUT;
- return (colorval);
+ XSETINT (ret, colorval);
+ return ret;
}
color = end;
}
@@ -1023,7 +1024,8 @@ x_to_w32_color (colorname)
if (*end != '\0')
break;
UNBLOCK_INPUT;
- return (colorval);
+ XSETINT (ret, colorval);
+ return ret;
}
if (*end != '/')
break;
@@ -1064,7 +1066,8 @@ x_to_w32_color (colorname)
if (*end != '\0')
break;
UNBLOCK_INPUT;
- return (colorval);
+ XSETINT (ret, colorval);
+ return ret;
}
if (*end != '/')
break;
@@ -2418,6 +2421,10 @@ Lisp_Object w32_grabbed_keys;
#define HOTKEY_VK_CODE(k) (XFASTINT (k) & 255)
#define HOTKEY_MODIFIERS(k) (XFASTINT (k) >> 8)
+#define RAW_HOTKEY_ID(k) ((k) & 0xbfff)
+#define RAW_HOTKEY_VK_CODE(k) ((k) & 255)
+#define RAW_HOTKEY_MODIFIERS(k) ((k) >> 8)
+
/* Register hot-keys for reserved key combinations when Emacs has
keyboard focus, since this is the only way Emacs can receive key
combinations like Alt-Tab which are used by the system. */
@@ -2499,20 +2506,20 @@ w32_msg_pump (deferred_msg * msg_buf)
focus_window = GetFocus ();
if (focus_window != NULL)
RegisterHotKey (focus_window,
- HOTKEY_ID (msg.wParam),
- HOTKEY_MODIFIERS (msg.wParam),
- HOTKEY_VK_CODE (msg.wParam));
+ RAW_HOTKEY_ID (msg.wParam),
+ RAW_HOTKEY_MODIFIERS (msg.wParam),
+ RAW_HOTKEY_VK_CODE (msg.wParam));
/* Reply is not expected. */
break;
case WM_EMACS_UNREGISTER_HOT_KEY:
focus_window = GetFocus ();
if (focus_window != NULL)
- UnregisterHotKey (focus_window, HOTKEY_ID (msg.wParam));
+ UnregisterHotKey (focus_window, RAW_HOTKEY_ID (msg.wParam));
/* Mark item as erased. NB: this code must be
thread-safe. The next line is okay because the cons
cell is never made into garbage and is not relocated by
GC. */
- XSETCAR ((Lisp_Object) msg.lParam, Qnil);
+ XSETCAR ((Lisp_Object) ((EMACS_INT) msg.lParam), Qnil);
if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
abort ();
break;
@@ -2520,7 +2527,7 @@ w32_msg_pump (deferred_msg * msg_buf)
{
int vk_code = (int) msg.wParam;
int cur_state = (GetKeyState (vk_code) & 1);
- Lisp_Object new_state = (Lisp_Object) msg.lParam;
+ Lisp_Object new_state = (Lisp_Object) ((EMACS_INT) msg.lParam);
/* NB: This code must be thread-safe. It is safe to
call NILP because symbols are not relocated by GC,
@@ -2710,7 +2717,7 @@ post_character_message (hwnd, msg, wParam, lParam, modifiers)
c = make_ctrl_char (c) & 0377;
if (c == quit_char
|| (wmsg.dwModifiers == 0 &&
- XFASTINT (Vw32_quit_key) && wParam == XFASTINT (Vw32_quit_key)))
+ w32_quit_key && wParam == w32_quit_key))
{
Vquit_flag = Qt;
@@ -3120,7 +3127,7 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
are used together, but only if user has two button mouse. */
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
- if (XINT (Vw32_num_mouse_buttons) > 2)
+ if (w32_num_mouse_buttons > 2)
goto handle_plain_button;
{
@@ -3170,7 +3177,7 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
/* Hold onto message for now. */
mouse_button_timer =
SetTimer (hwnd, MOUSE_BUTTON_ID,
- XINT (Vw32_mouse_button_tolerance), NULL);
+ w32_mouse_button_tolerance, NULL);
saved_mouse_button_msg.msg.hwnd = hwnd;
saved_mouse_button_msg.msg.message = msg;
saved_mouse_button_msg.msg.wParam = wParam;
@@ -3183,7 +3190,7 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
case WM_LBUTTONUP:
case WM_RBUTTONUP:
- if (XINT (Vw32_num_mouse_buttons) > 2)
+ if (w32_num_mouse_buttons > 2)
goto handle_plain_button;
{
@@ -3279,7 +3286,7 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
track_mouse_window = hwnd;
}
case WM_VSCROLL:
- if (XINT (Vw32_mouse_move_interval) <= 0
+ if (w32_mouse_move_interval <= 0
|| (msg == WM_MOUSEMOVE && button_state == 0))
{
wmsg.dwModifiers = w32_get_modifiers ();
@@ -3295,7 +3302,7 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
if (saved_mouse_move_msg.msg.hwnd == 0)
mouse_move_timer =
SetTimer (hwnd, MOUSE_MOVE_ID,
- XINT (Vw32_mouse_move_interval), NULL);
+ w32_mouse_move_interval, NULL);
/* Hold onto message for now. */
saved_mouse_move_msg.msg.hwnd = hwnd;
@@ -4772,46 +4779,46 @@ x_to_w32_charset (lpcs)
w32_charset = Fcar (Fcdr (this_entry));
/* Translate Lisp symbol to number. */
- if (w32_charset == Qw32_charset_ansi)
+ if (EQ (w32_charset, Qw32_charset_ansi))
return ANSI_CHARSET;
- if (w32_charset == Qw32_charset_symbol)
+ if (EQ (w32_charset, Qw32_charset_symbol))
return SYMBOL_CHARSET;
- if (w32_charset == Qw32_charset_shiftjis)
+ if (EQ (w32_charset, Qw32_charset_shiftjis))
return SHIFTJIS_CHARSET;
- if (w32_charset == Qw32_charset_hangeul)
+ if (EQ (w32_charset, Qw32_charset_hangeul))
return HANGEUL_CHARSET;
- if (w32_charset == Qw32_charset_chinesebig5)
+ if (EQ (w32_charset, Qw32_charset_chinesebig5))
return CHINESEBIG5_CHARSET;
- if (w32_charset == Qw32_charset_gb2312)
+ if (EQ (w32_charset, Qw32_charset_gb2312))
return GB2312_CHARSET;
- if (w32_charset == Qw32_charset_oem)
+ if (EQ (w32_charset, Qw32_charset_oem))
return OEM_CHARSET;
#ifdef JOHAB_CHARSET
- if (w32_charset == Qw32_charset_johab)
+ if (EQ (w32_charset, Qw32_charset_johab))
return JOHAB_CHARSET;
- if (w32_charset == Qw32_charset_easteurope)
+ if (EQ (w32_charset, Qw32_charset_easteurope))
return EASTEUROPE_CHARSET;
- if (w32_charset == Qw32_charset_turkish)
+ if (EQ (w32_charset, Qw32_charset_turkish))
return TURKISH_CHARSET;
- if (w32_charset == Qw32_charset_baltic)
+ if (EQ (w32_charset, Qw32_charset_baltic))
return BALTIC_CHARSET;
- if (w32_charset == Qw32_charset_russian)
+ if (EQ (w32_charset, Qw32_charset_russian))
return RUSSIAN_CHARSET;
- if (w32_charset == Qw32_charset_arabic)
+ if (EQ (w32_charset, Qw32_charset_arabic))
return ARABIC_CHARSET;
- if (w32_charset == Qw32_charset_greek)
+ if (EQ (w32_charset, Qw32_charset_greek))
return GREEK_CHARSET;
- if (w32_charset == Qw32_charset_hebrew)
+ if (EQ (w32_charset, Qw32_charset_hebrew))
return HEBREW_CHARSET;
- if (w32_charset == Qw32_charset_vietnamese)
+ if (EQ (w32_charset, Qw32_charset_vietnamese))
return VIETNAMESE_CHARSET;
- if (w32_charset == Qw32_charset_thai)
+ if (EQ (w32_charset, Qw32_charset_thai))
return THAI_CHARSET;
- if (w32_charset == Qw32_charset_mac)
+ if (EQ (w32_charset, Qw32_charset_mac))
return MAC_CHARSET;
#endif /* JOHAB_CHARSET */
#ifdef UNICODE_CHARSET
- if (w32_charset == Qw32_charset_unicode)
+ if (EQ (w32_charset, Qw32_charset_unicode))
return UNICODE_CHARSET;
#endif
@@ -4937,8 +4944,8 @@ w32_to_x_charset (fncharset)
/* Look for Same charset and a valid codepage (or non-int
which means ignore). */
- if (w32_charset == charset_type
- && (!INTEGERP (codepage) || codepage == CP_DEFAULT
+ if (EQ (w32_charset, charset_type)
+ && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
|| IsValidCodePage (XINT (codepage))))
{
/* If we don't have a match already, then this is the
@@ -5095,8 +5102,8 @@ w32_to_all_x_charsets (fncharset)
/* Look for Same charset and a valid codepage (or non-int
which means ignore). */
- if (w32_charset == charset_type
- && (!INTEGERP (codepage) || codepage == CP_DEFAULT
+ if (EQ (w32_charset, charset_type)
+ && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
|| IsValidCodePage (XINT (codepage))))
{
retval = Fcons (x_charset, retval);
@@ -6145,6 +6152,9 @@ w32_find_ccl_program (fontp)
}
}
+/* directory-files from dired.c. */
+Lisp_Object Fdirectory_files P_((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
+
/* Find BDF files in a specified directory. (use GCPRO when calling,
as this calls lisp to get a directory listing). */
@@ -6158,7 +6168,7 @@ w32_find_bdf_fonts_in_dir (Lisp_Object directory)
return Qnil;
filelist = Fdirectory_files (directory, Qt,
- build_string (".*\\.[bB][dD][fF]"), Qt);
+ build_string (".*\\.[bB][dD][fF]"), Qt);
for ( ; CONSP(filelist); filelist = XCDR (filelist))
{
@@ -7945,7 +7955,7 @@ lookup_vk_code (char *key)
/* Convert a one-element vector style key sequence to a hot key
definition. */
-static int
+static Lisp_Object
w32_parse_hot_key (key)
Lisp_Object key;
{
@@ -7977,7 +7987,7 @@ w32_parse_hot_key (key)
if (SYMBOLP (c))
{
c = parse_modifiers (c);
- lisp_modifiers = Fcar (Fcdr (c));
+ lisp_modifiers = XINT (Fcar (Fcdr (c)));
c = Fcar (c);
if (!SYMBOLP (c))
abort ();
@@ -8046,8 +8056,13 @@ The return value is the hotkey-id if registered, otherwise nil. */)
/* Notify input thread about new hot-key definition, so that it
takes effect without needing to switch focus. */
+#ifdef USE_LISP_UNION_TYPE
+ PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
+ (WPARAM) key.i, 0);
+#else
PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
(WPARAM) key, 0);
+#endif
}
return key;
@@ -8070,8 +8085,14 @@ DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key,
{
/* Notify input thread about hot-key definition being removed, so
that it takes effect without needing focus switch. */
+#ifdef USE_LISP_UNION_TYPE
+ if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
+ (WPARAM) XINT (XCAR (item)), (LPARAM) item.i))
+#else
if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
- (WPARAM) XINT (XCAR (item)), (LPARAM) item))
+ (WPARAM) XINT (XCAR (item)), (LPARAM) item.i))
+
+#endif
{
MSG msg;
GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
@@ -8144,8 +8165,13 @@ is set to off if the low bit of NEW-STATE is zero, otherwise on. */)
if (!dwWindowsThreadId)
return make_number (w32_console_toggle_lock_key (vk_code, new_state));
+#ifdef USE_LISP_UNION_TYPE
+ if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
+ (WPARAM) vk_code, (LPARAM) new_state.i))
+#else
if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
- (WPARAM) vk_code, (LPARAM) new_state))
+ (WPARAM) vk_code, (LPARAM) new_state.i))
+#endif
{
MSG msg;
GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
@@ -8424,9 +8450,9 @@ open the System menu. When nil, Emacs silently swallows alt key events. */);
When nil, Emacs will translate the alt key to the Alt modifier, and not Meta. */);
Vw32_alt_is_meta = Qt;
- DEFVAR_INT ("w32-quit-key", &Vw32_quit_key,
- doc: /* If non-zero, the virtual key code for an alternative quit key. */);
- XSETINT (Vw32_quit_key, 0);
+ DEFVAR_INT ("w32-quit-key", &w32_quit_key,
+ doc: /* If non-zero, the virtual key code for an alternative quit key. */);
+ w32_quit_key = 0;
DEFVAR_LISP ("w32-pass-lwindow-to-system",
&Vw32_pass_lwindow_to_system,
@@ -8440,9 +8466,9 @@ When non-nil, the Start menu is opened by tapping the key. */);
When non-nil, the Start menu is opened by tapping the key. */);
Vw32_pass_rwindow_to_system = Qt;
- DEFVAR_INT ("w32-phantom-key-code",
+ DEFVAR_LISP ("w32-phantom-key-code",
&Vw32_phantom_key_code,
- doc: /* Virtual key code used to generate \"phantom\" key presses.
+ doc: /* Virtual key code used to generate \"phantom\" key presses.
Value is a number between 0 and 255.
Phantom key presses are generated in order to stop the system from
@@ -8450,7 +8476,7 @@ acting on \"Windows\" key events when `w32-pass-lwindow-to-system' or
`w32-pass-rwindow-to-system' is nil. */);
/* Although 255 is technically not a valid key code, it works and
means that this hack won't interfere with any real key code. */
- Vw32_phantom_key_code = 255;
+ XSETINT (Vw32_phantom_key_code, 255);
DEFVAR_LISP ("w32-enable-num-lock",
&Vw32_enable_num_lock,
@@ -8505,21 +8531,21 @@ Any other value will cause the key to be ignored. */);
Vw32_enable_palette = Qt;
DEFVAR_INT ("w32-mouse-button-tolerance",
- &Vw32_mouse_button_tolerance,
+ &w32_mouse_button_tolerance,
doc: /* Analogue of double click interval for faking middle mouse events.
The value is the minimum time in milliseconds that must elapse between
left/right button down events before they are considered distinct events.
If both mouse buttons are depressed within this interval, a middle mouse
button down event is generated instead. */);
- XSETINT (Vw32_mouse_button_tolerance, GetDoubleClickTime () / 2);
+ w32_mouse_button_tolerance = GetDoubleClickTime () / 2;
DEFVAR_INT ("w32-mouse-move-interval",
- &Vw32_mouse_move_interval,
+ &w32_mouse_move_interval,
doc: /* Minimum interval between mouse move events.
The value is the minimum time in milliseconds that must elapse between
successive mouse move (or scroll bar drag) events before they are
reported as lisp events. */);
- XSETINT (Vw32_mouse_move_interval, 0);
+ w32_mouse_move_interval = 0;
DEFVAR_BOOL ("w32-pass-extra-mouse-buttons-to-system",
&w32_pass_extra_mouse_buttons_to_system,
@@ -8800,9 +8826,9 @@ void globals_of_w32fns ()
GetProcAddress (user32_lib, "GetClipboardSequenceNumber");
DEFVAR_INT ("w32-ansi-code-page",
- &Vw32_ansi_code_page,
+ &w32_ansi_code_page,
doc: /* The ANSI code page used by the system. */);
- XSETINT (Vw32_ansi_code_page, GetACP ());
+ w32_ansi_code_page = GetACP ();
}
#undef abort
diff --git a/src/w32heap.c b/src/w32heap.c
index b40db430ea9..d947842474f 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -245,6 +245,7 @@ init_heap ()
exit (1);
}
+#if defined (NO_UNION_TYPE) && !defined (USE_LSB_TAG)
/* Ensure that the addresses don't use the upper tag bits since
the Lisp type goes there. */
if (((unsigned long) data_region_base & ~VALMASK) != 0)
@@ -252,7 +253,7 @@ init_heap ()
printf ("Error: The heap was allocated in upper memory.\n");
exit (1);
}
-
+#endif
data_region_end = data_region_base;
real_data_region_end = data_region_end;
}
diff --git a/src/w32inevt.c b/src/w32inevt.c
index 168a0fb87b3..8dd4f406881 100644
--- a/src/w32inevt.c
+++ b/src/w32inevt.c
@@ -464,12 +464,12 @@ key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
}
if (event->uChar.AsciiChar == 0)
return 0;
- XSETINT (emacs_ev->code, event->uChar.AsciiChar);
+ emacs_ev->code = event->uChar.AsciiChar;
}
else
{
emacs_ev->kind = NON_ASCII_KEYSTROKE_EVENT;
- XSETINT (emacs_ev->code, event->wVirtualKeyCode);
+ emacs_ev->code = event->wVirtualKeyCode;
}
XSETFRAME (emacs_ev->frame_or_window, get_frame ());
@@ -524,8 +524,8 @@ w32_console_mouse_position (FRAME_PTR *f,
*part = 0;
SELECTED_FRAME ()->mouse_moved = 0;
- *x = movement_pos.X;
- *y = movement_pos.Y;
+ XSETINT(*x, movement_pos.X);
+ XSETINT(*y, movement_pos.Y);
*time = movement_time;
UNBLOCK_INPUT;
@@ -593,9 +593,9 @@ do_mouse_event (MOUSE_EVENT_RECORD *event,
if (but_change & mask)
{
if (i < NUM_TRANSLATED_MOUSE_BUTTONS)
- XSETINT (emacs_ev->code, emacs_button_translation[i]);
+ emacs_ev->code = emacs_button_translation[i];
else
- XSETINT (emacs_ev->code, i);
+ emacs_ev->code = i;
break;
}
diff --git a/src/w32proc.c b/src/w32proc.c
index edd286e50d0..842869726df 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -82,7 +82,7 @@ Lisp_Object Vw32_start_process_inherit_error_mode;
avoids the inefficiency of frequently reading small amounts of data.
This is primarily necessary for handling DOS processes on Windows 95,
but is useful for W32 processes on both Windows 95 and NT as well. */
-Lisp_Object Vw32_pipe_read_delay;
+int w32_pipe_read_delay;
/* Control conversion of upper case file names to lower case.
nil means no, t means yes. */
@@ -367,7 +367,7 @@ create_child (char *exe, char *cmdline, char *env, int is_gui_app,
cp->pid = -cp->pid;
/* pid must fit in a Lisp_Int */
- cp->pid = (cp->pid & VALMASK);
+ cp->pid = XUINT (make_number (cp->pid));
*pPid = cp->pid;
@@ -2202,7 +2202,7 @@ When non-nil, they inherit their error mode setting from Emacs, which stops
them blocking when trying to access unmounted drives etc. */);
Vw32_start_process_inherit_error_mode = Qt;
- DEFVAR_INT ("w32-pipe-read-delay", &Vw32_pipe_read_delay,
+ DEFVAR_INT ("w32-pipe-read-delay", &w32_pipe_read_delay,
doc: /* Forced delay before reading subprocess output.
This is done to improve the buffering of subprocess output, by
avoiding the inefficiency of frequently reading small amounts of data.
@@ -2211,7 +2211,7 @@ If positive, the value is the number of milliseconds to sleep before
reading the subprocess output. If negative, the magnitude is the number
of time slices to wait (effectively boosting the priority of the child
process temporarily). A value of zero disables waiting entirely. */);
- Vw32_pipe_read_delay = 50;
+ w32_pipe_read_delay = 50;
DEFVAR_LISP ("w32-downcase-file-names", &Vw32_downcase_file_names,
doc: /* Non-nil means convert all-upper case file names to lower case.
diff --git a/src/w32term.c b/src/w32term.c
index 3a2ef2e1c19..9629595561c 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -177,7 +177,7 @@ int last_scroll_bar_drag_pos;
static RECT last_mouse_glyph;
static Lisp_Object last_mouse_press_frame;
-Lisp_Object Vw32_num_mouse_buttons;
+int w32_num_mouse_buttons;
Lisp_Object Vw32_swap_mouse_buttons;
@@ -4360,10 +4360,16 @@ w32_read_socket (sd, expected, hold_quit)
/* If the contents of the global variable help_echo_string
has changed, generate a HELP_EVENT. */
+#if 0 /* The below is an invalid comparison when USE_LISP_UNION_TYPE.
+ But it was originally changed to this to fix a bug, so I have
+ not removed it completely in case the bug is still there. */
if (help_echo_string != previous_help_echo_string ||
(!NILP (help_echo_string) && !STRINGP (help_echo_string) && f->mouse_moved))
+#else /* This is what xterm.c does. */
+ if (!NILP (help_echo_string)
+ || !NILP (previous_help_echo_string))
do_help = 1;
-
+#endif
break;
case WM_LBUTTONDOWN:
@@ -4784,7 +4790,7 @@ w32_read_socket (sd, expected, hold_quit)
if (do_help > 0)
{
- if (help_echo_string == Qnil)
+ if (NILP (help_echo_string))
{
help_echo_object = help_echo_window = Qnil;
help_echo_pos = -1;
@@ -6460,9 +6466,9 @@ syms_of_w32term ()
Qvendor_specific_keysyms = intern ("vendor-specific-keysyms");
DEFVAR_INT ("w32-num-mouse-buttons",
- &Vw32_num_mouse_buttons,
+ &w32_num_mouse_buttons,
doc: /* Number of physical mouse buttons. */);
- Vw32_num_mouse_buttons = Qnil;
+ w32_num_mouse_buttons = 2;
DEFVAR_LISP ("w32-swap-mouse-buttons",
&Vw32_swap_mouse_buttons,
diff --git a/src/window.c b/src/window.c
index 8a2c16598ec..03ca22dd525 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3272,6 +3272,10 @@ If FRAME is nil, search only the selected frame
unless `pop-up-frames' or `display-buffer-reuse-frames' is non-nil,
which means search visible and iconified frames.
+If a full-width window on a splittable frame is available to display
+the buffer, it may be split, subject to the value of the variable
+`split-height-threshold'.
+
If `even-window-heights' is non-nil, window heights will be evened out
if displaying the buffer causes two vertically adjacent windows to be
displayed. */)
@@ -3587,7 +3591,8 @@ DEFUN ("split-window", Fsplit_window, Ssplit_window, 0, 3, "",
WINDOW defaults to selected one and SIZE to half its size.
If optional third arg HORFLAG is non-nil, split side by side
and put SIZE columns in the first of the pair. In that case,
-SIZE includes that window's scroll bar, or the divider column to its right. */)
+SIZE includes that window's scroll bar, or the divider column to its right.
+Returns the newly-created window. */)
(window, size, horflag)
Lisp_Object window, size, horflag;
{
@@ -6594,7 +6599,7 @@ See also `same-window-buffer-names'. */);
next_screen_context_lines = 2;
DEFVAR_INT ("split-height-threshold", &split_height_threshold,
- doc: /* *display-buffer would prefer to split the largest window if this large.
+ doc: /* *A window must be at least this tall to be eligible for splitting by `display-buffer'.
If there is only one window, it is split regardless of this value. */);
split_height_threshold = 500;
diff --git a/src/xdisp.c b/src/xdisp.c
index 7f5b38e550b..7c2a850fe49 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -2730,19 +2730,10 @@ next_overlay_change (pos)
int noverlays;
int endpos;
Lisp_Object *overlays;
- int len;
int i;
/* Get all overlays at the given position. */
- len = 10;
- overlays = (Lisp_Object *) alloca (len * sizeof *overlays);
- noverlays = overlays_at (pos, 0, &overlays, &len, &endpos, NULL, 1);
- if (noverlays > len)
- {
- len = noverlays;
- overlays = (Lisp_Object *) alloca (len * sizeof *overlays);
- noverlays = overlays_at (pos, 0, &overlays, &len, &endpos, NULL, 1);
- }
+ GET_OVERLAYS_AT (pos, overlays, noverlays, &endpos, 1);
/* If any of these overlays ends before endpos,
use its ending point instead. */
@@ -20832,7 +20823,7 @@ note_mouse_highlight (f, x, y)
Lisp_Object object;
Lisp_Object mouse_face = Qnil, overlay = Qnil, position;
Lisp_Object *overlay_vec = NULL;
- int len, noverlays;
+ int noverlays;
struct buffer *obuf;
int obegv, ozv, same_region;
@@ -20919,19 +20910,8 @@ note_mouse_highlight (f, x, y)
if (BUFFERP (object))
{
- /* Put all the overlays we want in a vector in overlay_vec.
- Store the length in len. If there are more than 40, make
- enough space for all, and try again. */
- len = 40;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL, 0);
- if (noverlays > len)
- {
- len = noverlays;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL,0);
- }
-
+ /* Put all the overlays we want in a vector in overlay_vec. */
+ GET_OVERLAYS_AT (pos, overlay_vec, noverlays, NULL, 0);
/* Sort overlays into increasing priority order. */
noverlays = sort_overlays (overlay_vec, noverlays, w);
}
diff --git a/src/xfaces.c b/src/xfaces.c
index 9e49833c736..bae9b569f1a 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -3860,7 +3860,7 @@ Otherwise check for the existence of a global face. */)
DEFUN ("internal-copy-lisp-face", Finternal_copy_lisp_face,
Sinternal_copy_lisp_face, 4, 4, 0,
doc: /* Copy face FROM to TO.
-If FRAME it t, copy the global face definition of FROM to the
+If FRAME is t, copy the global face definition of FROM to the
global face definition of TO. Otherwise, copy the frame-local
definition of FROM on FRAME to the frame-local definition of TO
on NEW-FRAME, or FRAME if NEW-FRAME is nil.
@@ -4687,8 +4687,8 @@ DEFUN ("internal-get-lisp-face-attribute", Finternal_get_lisp_face_attribute,
doc: /* Return face attribute KEYWORD of face SYMBOL.
If SYMBOL does not name a valid Lisp face or KEYWORD isn't a valid
face attribute name, signal an error.
-If the optional argument FRAME is given, report on face FACE in that
-frame. If FRAME is t, report on the defaults for face FACE (for new
+If the optional argument FRAME is given, report on face SYMBOL in that
+frame. If FRAME is t, report on the defaults for face SYMBOL (for new
frames). If FRAME is omitted or nil, use the selected frame. */)
(symbol, keyword, frame)
Lisp_Object symbol, keyword, frame;
@@ -5238,10 +5238,10 @@ with the default face for display, can be represented in a way that's
\(1) different in appearance than the default face, and
\(2) `close in spirit' to what the attributes specify, if not exact.
-Point (2) implies that a `:weight black' attribute will be satisified
+Point (2) implies that a `:weight black' attribute will be satisfied
by any terminal that can display bold, and a `:foreground "yellow"' as
long as the terminal can display a yellowish color, but `:slant italic'
-will _not_ be satisified by the tty display code's automatic
+will _not_ be satisfied by the tty display code's automatic
substitution of a `dim' face for italic. */)
(attributes, frame)
Lisp_Object attributes, frame;
@@ -5449,8 +5449,8 @@ clear_face_gcs (c)
}
-/* Free all realized faces in face cache C, including basic faces. C
- may be null. If faces are freed, make sure the frame's current
+/* Free all realized faces in face cache C, including basic faces.
+ C may be null. If faces are freed, make sure the frame's current
matrix is marked invalid, so that a display caused by an expose
event doesn't try to use faces we destroyed. */
@@ -7306,24 +7306,8 @@ face_at_buffer_position (w, pos, region_beg, region_end,
/* Look at properties from overlays. */
{
int next_overlay;
- int len;
-
- /* First try with room for 40 overlays. */
- len = 40;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos, 0, &overlay_vec, &len,
- &next_overlay, NULL, 0);
-
- /* If there are more than 40, make enough space for all, and try
- again. */
- if (noverlays > len)
- {
- len = noverlays;
- overlay_vec = (Lisp_Object *) alloca (len * sizeof (Lisp_Object));
- noverlays = overlays_at (pos, 0, &overlay_vec, &len,
- &next_overlay, NULL, 0);
- }
+ GET_OVERLAYS_AT (pos, overlay_vec, noverlays, &next_overlay, 0);
if (next_overlay < endpos)
endpos = next_overlay;
}
diff --git a/src/xfns.c b/src/xfns.c
index 3b0b2884246..56593453b2c 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5506,6 +5506,11 @@ Chinese, Japanese, and Korean. */);
#endif /* USE_X_TOOLKIT */
#ifdef USE_GTK
+ /* Provide x-toolkit also for GTK. Internally GTK does not use Xt so it
+ is not an X toolkit in that sense (USE_X_TOOLKIT is not defined).
+ But for a user it is a toolkit for X, and indeed, configure
+ accepts --with-x-toolkit=gtk. */
+ Fprovide (intern ("x-toolkit"), Qnil);
Fprovide (intern ("gtk"), Qnil);
DEFVAR_LISP ("gtk-version-string", &Vgtk_version_string,