aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-07-05 22:12:55 +0000
committerKaroly Lorentey2005-07-05 22:12:55 +0000
commit41be4f66fd33b17eba3e3ed4b8f8828c77f18517 (patch)
tree23558632ba5eac56317f1df9fac514f439e7f82d
parent2f98e6e37b5870a644a178d4d6998c6c7f1f68dd (diff)
parent41700b79db6e52aee51d9d57c453b5f6fbd61e6e (diff)
downloademacs-41be4f66fd33b17eba3e3ed4b8f8828c77f18517.tar.gz
emacs-41be4f66fd33b17eba3e3ed4b8f8828c77f18517.zip
Merged from miles@gnu.org--gnu-2005 (patch 83-87, 449-468)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-449 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-450 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-451 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-452 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-453 Update from CVS: lisp/subr.el (add-to-ordered-list): Doc fix. * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-454 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-455 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-456 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-457 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-458 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-459 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-460 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-461 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-462 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-463 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-464 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-465 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-466 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-467 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-468 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-83 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-84 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-85 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-86 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-87 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-371
-rw-r--r--COPYING6
-rw-r--r--admin/FOR-RELEASE15
-rw-r--r--etc/COPYING6
-rw-r--r--etc/ChangeLog56
-rw-r--r--etc/NEWS89
-rw-r--r--etc/PROBLEMS23
-rw-r--r--etc/TUTORIAL.translators3
-rw-r--r--etc/orgcard.ps2752
-rw-r--r--etc/orgcard.tex737
-rw-r--r--leim/COPYING6
-rw-r--r--leim/ChangeLog5
-rw-r--r--leim/leim-ext.el6
-rw-r--r--lib-src/COPYING6
-rw-r--r--lisp/COPYING6
-rw-r--r--lisp/ChangeLog656
-rw-r--r--lisp/add-log.el8
-rw-r--r--lisp/apropos.el2
-rw-r--r--lisp/arc-mode.el206
-rw-r--r--lisp/battery.el81
-rw-r--r--lisp/bindings.el6
-rw-r--r--lisp/bookmark.el3
-rw-r--r--lisp/calc/calc.el8
-rw-r--r--lisp/calendar/diary-lib.el2
-rw-r--r--lisp/comint.el12
-rw-r--r--lisp/cus-face.el6
-rw-r--r--lisp/cus-theme.el38
-rw-r--r--lisp/custom.el30
-rw-r--r--lisp/dabbrev.el4
-rw-r--r--lisp/delim-col.el8
-rw-r--r--lisp/diff-mode.el12
-rw-r--r--lisp/dired-aux.el3
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/ediff-diff.el2
-rw-r--r--lisp/ediff-init.el8
-rw-r--r--lisp/ediff-mult.el6
-rw-r--r--lisp/ediff-ptch.el2
-rw-r--r--lisp/ediff-wind.el2
-rw-r--r--lisp/ediff.el4
-rw-r--r--lisp/emacs-lisp/autoload.el18
-rw-r--r--lisp/emacs-lisp/bytecomp.el7
-rw-r--r--lisp/emacs-lisp/cl-indent.el4
-rw-r--r--lisp/emacs-lisp/crm.el19
-rw-r--r--lisp/emacs-lisp/debug.el4
-rw-r--r--lisp/emacs-lisp/easy-mmode.el5
-rw-r--r--lisp/emacs-lisp/edebug.el6
-rw-r--r--lisp/emacs-lisp/elp.el2
-rw-r--r--lisp/emacs-lisp/lisp-mode.el6
-rw-r--r--lisp/emacs-lisp/macroexp.el10
-rw-r--r--lisp/emacs-lisp/pp.el2
-rw-r--r--lisp/emacs-lisp/testcover.el2
-rw-r--r--lisp/emacs-lisp/timer.el7
-rw-r--r--lisp/emacs-lisp/trace.el2
-rw-r--r--lisp/emulation/cua-base.el14
-rw-r--r--lisp/emulation/cua-gmrk.el8
-rw-r--r--lisp/emulation/cua-rect.el18
-rw-r--r--lisp/emulation/edt-mapper.el6
-rw-r--r--lisp/emulation/edt.el33
-rw-r--r--lisp/emulation/tpu-edt.el66
-rw-r--r--lisp/emulation/vi.el7
-rw-r--r--lisp/emulation/vip.el13
-rw-r--r--lisp/emulation/viper-ex.el2
-rw-r--r--lisp/emulation/viper-mous.el2
-rw-r--r--lisp/eshell/esh-var.el2
-rw-r--r--lisp/facemenu.el111
-rw-r--r--lisp/faces.el32
-rw-r--r--lisp/find-file.el19
-rw-r--r--lisp/font-lock.el41
-rw-r--r--lisp/gnus/ChangeLog41
-rw-r--r--lisp/gnus/gnus-art.el106
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus-nocem.el26
-rw-r--r--lisp/gnus/gnus.el2
-rw-r--r--lisp/gnus/message.el18
-rw-r--r--lisp/gnus/nnmail.el2
-rw-r--r--lisp/gnus/pgg-gpg.el2
-rw-r--r--lisp/gnus/pgg-parse.el2
-rw-r--r--lisp/gnus/pgg-pgp.el2
-rw-r--r--lisp/gnus/pgg-pgp5.el2
-rw-r--r--lisp/gnus/pgg.el3
-rw-r--r--lisp/gnus/pop3.el2
-rw-r--r--lisp/help-fns.el4
-rw-r--r--lisp/imenu.el2
-rw-r--r--lisp/indent.el2
-rw-r--r--lisp/info.el6
-rw-r--r--lisp/jka-cmpr-hook.el4
-rw-r--r--lisp/lpr.el4
-rw-r--r--lisp/mail/mailalias.el2
-rw-r--r--lisp/mail/rmailsum.el34
-rw-r--r--lisp/mail/supercite.el12
-rw-r--r--lisp/makefile.w32-in3
-rw-r--r--lisp/mouse.el2
-rw-r--r--lisp/msb.el2
-rw-r--r--lisp/net/browse-url.el2
-rw-r--r--lisp/net/rcompile.el2
-rw-r--r--lisp/net/rlogin.el2
-rw-r--r--lisp/newcomment.el2
-rw-r--r--lisp/obsolete/ooutline.el2
-rw-r--r--lisp/outline.el2
-rw-r--r--lisp/pcmpl-cvs.el2
-rw-r--r--lisp/pcmpl-rpm.el2
-rw-r--r--lisp/play/decipher.el2
-rw-r--r--lisp/printing.el4
-rw-r--r--lisp/progmodes/compile.el53
-rw-r--r--lisp/progmodes/cperl-mode.el15
-rw-r--r--lisp/progmodes/delphi.el14
-rw-r--r--lisp/progmodes/ebnf2ps.el28
-rw-r--r--lisp/progmodes/ebrowse.el3
-rw-r--r--lisp/progmodes/etags.el2
-rw-r--r--lisp/progmodes/executable.el4
-rw-r--r--lisp/progmodes/flymake.el144
-rw-r--r--lisp/progmodes/gud.el4
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el243
-rw-r--r--lisp/progmodes/idlw-help.el177
-rw-r--r--lisp/progmodes/idlw-rinfo.el224
-rw-r--r--lisp/progmodes/idlw-shell.el1101
-rw-r--r--lisp/progmodes/idlw-toolbar.el4
-rw-r--r--lisp/progmodes/idlwave.el93
-rw-r--r--lisp/progmodes/pascal.el2
-rw-r--r--lisp/progmodes/prolog.el2
-rw-r--r--lisp/progmodes/python.el5
-rw-r--r--lisp/progmodes/scheme.el4
-rw-r--r--lisp/progmodes/sh-script.el8
-rw-r--r--lisp/progmodes/sql.el4
-rw-r--r--lisp/progmodes/tcl.el6
-rw-r--r--lisp/progmodes/vhdl-mode.el2
-rw-r--r--lisp/ps-print.el52
-rw-r--r--lisp/recentf.el285
-rw-r--r--lisp/replace.el139
-rw-r--r--lisp/ses.el14
-rw-r--r--lisp/shell.el8
-rw-r--r--lisp/simple.el33
-rw-r--r--lisp/smerge-mode.el3
-rw-r--r--lisp/startup.el4
-rw-r--r--lisp/strokes.el24
-rw-r--r--lisp/subr.el11
-rw-r--r--lisp/term.el6
-rw-r--r--lisp/term/rxvt.el4
-rw-r--r--lisp/term/xterm.el4
-rw-r--r--lisp/textmodes/artist.el38
-rw-r--r--lisp/textmodes/bibtex.el6
-rw-r--r--lisp/textmodes/enriched.el2
-rw-r--r--lisp/textmodes/flyspell.el51
-rw-r--r--lisp/textmodes/ispell.el147
-rw-r--r--lisp/textmodes/makeinfo.el2
-rw-r--r--lisp/textmodes/org.el1303
-rw-r--r--lisp/textmodes/picture.el2
-rw-r--r--lisp/textmodes/sgml-mode.el12
-rw-r--r--lisp/textmodes/table.el30
-rw-r--r--lisp/textmodes/tex-mode.el10
-rw-r--r--lisp/textmodes/texinfo.el6
-rw-r--r--lisp/textmodes/two-column.el2
-rw-r--r--lisp/tooltip.el2
-rw-r--r--lisp/uniquify.el2
-rw-r--r--lisp/url/ChangeLog33
-rw-r--r--lisp/url/url-cookie.el68
-rw-r--r--lisp/url/url-gw.el2
-rw-r--r--lisp/url/url-history.el4
-rw-r--r--lisp/url/url-http.el7
-rw-r--r--lisp/url/url-news.el4
-rw-r--r--lisp/url/url-vars.el10
-rw-r--r--lisp/w32-vars.el2
-rw-r--r--lispref/ChangeLog44
-rw-r--r--lispref/display.texi344
-rw-r--r--lispref/elisp.texi5
-rw-r--r--lispref/keymaps.texi51
-rw-r--r--lispref/text.texi4
-rw-r--r--lispref/variables.texi25
-rw-r--r--lispref/windows.texi9
-rw-r--r--lwlib/COPYING6
-rw-r--r--mac/COPYING6
-rw-r--r--man/ChangeLog38
-rw-r--r--man/flymake.texi2
-rw-r--r--man/gnus.texi31
-rw-r--r--man/org.texi535
-rw-r--r--msdos/COPYING6
-rw-r--r--nt/COPYING6
-rw-r--r--src/COPYING6
-rw-r--r--src/ChangeLog88
-rw-r--r--src/emacs.c8
-rw-r--r--src/eval.c72
-rw-r--r--src/fileio.c37
-rw-r--r--src/macterm.c2
-rw-r--r--src/term.c10
-rw-r--r--src/w32term.c57
-rw-r--r--src/window.c25
-rw-r--r--src/xdisp.c16
-rw-r--r--src/xterm.c7
187 files changed, 8756 insertions, 2762 deletions
diff --git a/COPYING b/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index c28608068ba..7e13df74375 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -23,20 +23,15 @@ face name prefixes should be in it for good results.
23gracefully if something isn't supported over Tramp. 23gracefully if something isn't supported over Tramp.
24To be done by Andre Spiegel <spiegel@gnu.org>. 24To be done by Andre Spiegel <spiegel@gnu.org>.
25 25
26** define-minor-mode should not put :require into defcustom.
27See msg from rms to emacs-devel on 21 Dec.
28
29** Update Speedbar. 26** Update Speedbar.
30 27
31** Update vhdl-mode.el based on changes in 28** Update vhdl-mode.el based on changes in
32 http://opensource.ethz.ch/emacs/vhdl-mode.html. 29 http://opensource.ethz.ch/emacs/vhdl-mode.html.
33 30
31** Debug custom themes.
34 32
35* FATAL ERRORS 33* FATAL ERRORS
36 34
37** Make unexec handle memory mapping policy of the latest versions of Linux.
38This includes exec_shield and a memory-layout randomization feature.
39
40** Investigate reported crashes in compact_small_strings. 35** Investigate reported crashes in compact_small_strings.
41 36
42** Investigate reported crashes related to using an 37** Investigate reported crashes related to using an
@@ -45,6 +40,8 @@ invalid pointer from string_free_list.
45 40
46* BUGS 41* BUGS
47 42
43** Fix those modes that still use compile-internal, to not use it.
44
48** Bug in ebrowse 45** Bug in ebrowse
49 46
50Date: Fri, 27 May 2005 17:35:48 +0200 47Date: Fri, 27 May 2005 17:35:48 +0200
@@ -102,6 +99,12 @@ I think in the near future we will see more of this problem, so it might be
102time to make anfe-ftp more intelligent. 99time to make anfe-ftp more intelligent.
103 100
104 101
102* FSF's ADDRESS
103
104** Update the FSF's address in all files.
105Lute Kamstra is working on this.
106
107
105* DOCUMENTATION 108* DOCUMENTATION
106 109
107** Document Custom Themes. 110** Document Custom Themes.
diff --git a/etc/COPYING b/etc/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/etc/COPYING
+++ b/etc/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 9fb41788feb..18ec12243c4 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,17 @@
12005-07-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping):
4 Added it again.
5
62005-06-29 Carsten Dominik <dominik@science.uva.nl>
7
8 * NEWS: Added an entry for Org-mode, and a change entry for
9 reftex-mode.
10
112005-06-28 Richard M. Stallman <rms@gnu.org>
12
13 * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping): New.
14
12005-06-11 Eli Zaretskii <eliz@gnu.org> 152005-06-11 Eli Zaretskii <eliz@gnu.org>
2 16
3 * DEBUG: Mention emacs-buffer.gdb. 17 * DEBUG: Mention emacs-buffer.gdb.
@@ -58,7 +72,7 @@
58 72
592005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change) 732005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change)
60 74
61 * TUTORIAL.pl: Updated header. 75 * TUTORIAL.pl: Updated header.
62 76
632005-05-02 Richard M. Stallman <rms@gnu.org> 772005-05-02 Richard M. Stallman <rms@gnu.org>
64 78
@@ -101,8 +115,8 @@
101 115
1022005-04-10 Masatake YAMATO <jet@gyve.org> 1162005-04-10 Masatake YAMATO <jet@gyve.org>
103 117
104 * compilation.txt (symbol): Added gcov-file 118 * compilation.txt (symbol): Add gcov-file
105 gcov-bb-file gcov-never-called-line gcov-called-line . 119 gcov-bb-file gcov-never-called-line gcov-called-line.
106 120
1072005-04-08 Kenichi Handa <handa@m17n.org> 1212005-04-08 Kenichi Handa <handa@m17n.org>
108 122
@@ -119,7 +133,7 @@
119 133
1202005-04-05 Marcelo Toledo <marcelo@gnu.org> 1342005-04-05 Marcelo Toledo <marcelo@gnu.org>
121 135
122 * TUTORIAL.translators: Added the field Maintainer. 136 * TUTORIAL.translators: Added the field Maintainer.
123 137
1242005-04-04 Thien-Thi Nguyen <ttn@gnu.org> 1382005-04-04 Thien-Thi Nguyen <ttn@gnu.org>
125 139
@@ -140,22 +154,21 @@
140 154
1412005-04-01 Marcelo Toledo <marcelo@gnu.org> 1552005-04-01 Marcelo Toledo <marcelo@gnu.org>
142 156
143 * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de, 157 * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
144 * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko, 158 * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko,
145 * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru, 159 * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru,
146 * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title 160 * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title line.
147 line.
148 161
1492005-04-01 Ognyan Kulev <ogi@fmi.uni-sofia.bg> 1622005-04-01 Ognyan Kulev <ogi@fmi.uni-sofia.bg>
150 163
151 * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in 164 * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in
152 2005-02-08T14:20:54Z!lute@gnu.org, "Emacs" is not transliterated to cyrillic anymore; 165 2005-02-08T14:20:54Z!lute@gnu.org, "Emacs" is not transliterated to cyrillic anymore;
153 Minor fixes. 166 Minor fixes.
154 167
1552005-04-01 Mats Lidell <matsl@contactor.se> 1682005-04-01 Mats Lidell <matsl@contactor.se>
156 169
157 * TUTORIAL.sv: Sync some other changes with the TUTORIAL version 170 * TUTORIAL.sv: Sync some other changes with the TUTORIAL version
158 2005-04-01T00:31:25Z!rms@gnu.org. 171 2005-04-01T00:31:25Z!rms@gnu.org.
159 172
1602005-04-01 Lute Kamstra <lute@gnu.org> 1732005-04-01 Lute Kamstra <lute@gnu.org>
161 174
@@ -289,7 +302,7 @@
289 302
290 * e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc. 303 * e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc.
291 Reformat. 304 Reformat.
292 * e/eterm: Regenerate. 305 * e/eterm: Regenerate.
293 306
2942004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 3072004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
295 308
@@ -298,7 +311,7 @@
2982004-09-16 Dan Nicolaescu <dann@ics.uci.edu> 3112004-09-16 Dan Nicolaescu <dann@ics.uci.edu>
299 312
300 * e/eterm.ti: Change the strings for smso and rmso. 313 * e/eterm.ti: Change the strings for smso and rmso.
301 e/eterm: Regenerate. 314 e/eterm: Regenerate.
302 315
3032004-09-09 Thien-Thi Nguyen <ttn@gnu.org> 3162004-09-09 Thien-Thi Nguyen <ttn@gnu.org>
304 317
@@ -307,7 +320,7 @@
3072004-09-07 Dan Nicolaescu <dann@ics.uci.edu> 3202004-09-07 Dan Nicolaescu <dann@ics.uci.edu>
308 321
309 * e/eterm.ti: Add `op' entry to enable colors in term. 322 * e/eterm.ti: Add `op' entry to enable colors in term.
310 * e/eterm: Regenerate. 323 * e/eterm: Regenerate.
311 324
3122004-09-04 Eric S. Raymond <esr@thyrsus.com> 3252004-09-04 Eric S. Raymond <esr@thyrsus.com>
313 326
@@ -379,7 +392,7 @@
379 392
3802004-07-08 David Kastrup <dak@gnu.org> 3932004-07-08 David Kastrup <dak@gnu.org>
381 394
382 * NEWS (Lisp changes in 21.4): document (match-data t) change. 395 * NEWS (Lisp changes in 21.4): Document (match-data t) change.
383 396
3842002-06-26 Eli Zaretskii <eliz@is.elta.co.il> 3972002-06-26 Eli Zaretskii <eliz@is.elta.co.il>
385 398
@@ -389,8 +402,8 @@
389 402
390 * NEWS: Move description from new paragraph-start and 403 * NEWS: Move description from new paragraph-start and
391 indent-line-function defaults to general news instead of new 404 indent-line-function defaults to general news instead of new
392 packages. Same for query-replace-skip-read-only. Add 405 packages. Same for query-replace-skip-read-only.
393 description of new `\,' and `\?' replacement string features. 406 Add description of new `\,' and `\?' replacement string features.
394 407
3952004-06-23 Luc Teirlinck <teirllm@auburn.edu> 4082004-06-23 Luc Teirlinck <teirllm@auburn.edu>
396 409
@@ -417,8 +430,7 @@
417 430
4182004-05-14 David Ponce <david@dponce.com> 4312004-05-14 David Ponce <david@dponce.com>
419 432
420 * tree-widget: New directory containing tree-widget themes and 433 * tree-widget: New directory containing tree-widget themes and images.
421 images.
422 434
4232004-04-13 Marcelo Toledo <marcelo@gnu.org> 4352004-04-13 Marcelo Toledo <marcelo@gnu.org>
424 436
diff --git a/etc/NEWS b/etc/NEWS
index eab25b25864..6fc8097a94d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1548,6 +1548,21 @@ must remove older versions of cua.el or cua-mode.el as well as the
1548loading and customization of those packages from the .emacs file. 1548loading and customization of those packages from the .emacs file.
1549 1549
1550+++ 1550+++
1551** Org mode is now part of the Emacs distribution
1552
1553Org mode is a mode for keeping notes, maintaining ToDo lists, and
1554doing project planning with a fast and effective plain-text system.
1555It also contains a plain-text table editor with spreadsheet-like
1556capabilities.
1557
1558The Org mode table editor can be integrated into any major mode by
1559activating the minor Orgtbl-mode.
1560
1561The documentation for org-mode is in a separate manual; within Emacs,
1562type "C-h i m org RET" to read that manual. A reference card is
1563available in `etc/orgcard.tex' and `etc/orgcard.ps'.
1564
1565+++
1551** The new package dns-mode.el add syntax highlight of DNS master files. 1566** The new package dns-mode.el add syntax highlight of DNS master files.
1552The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used 1567The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
1553to increment the SOA serial. 1568to increment the SOA serial.
@@ -2202,6 +2217,80 @@ majority.
2202the syntax of backslashes in F90 buffers. 2217the syntax of backslashes in F90 buffers.
2203 2218
2204--- 2219---
2220** Reftex mode changes
2221+++
2222*** Changes to RefTeX's table of contents
2223
2224The new command keys "<" and ">" in the TOC buffer promote/demote the
2225section at point or all sections in the current region, with full
2226support for multifile documents.
2227
2228The new command `reftex-toc-recenter' (`C-c -') shows the current
2229section in the TOC buffer without selecting the TOC window.
2230Recentering can happen automatically in idle time when the option
2231`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
2232buffer stays when the focus moves to a different window. A dedicated
2233frame can show the TOC with the current section always automatically
2234highlighted. The frame is created and deleted from the toc buffer
2235with the `d' key.
2236
2237The toc window can be split off horizontally instead of vertically.
2238See new option `reftex-toc-split-windows-horizontally'.
2239
2240Labels can be renamed globally from the table of contents using the
2241key `M-%'.
2242
2243The new command `reftex-goto-label' jumps directly to a label
2244location.
2245
2246+++
2247*** Changes related to citations and BibTeX database files
2248
2249Commands that insert a citation now prompt for optional arguments when
2250called with a prefix argument. Related new options are
2251`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
2252
2253The new command `reftex-create-bibtex-file' creates a BibTeX database
2254with all entries referenced in the current document. The keys "e" and
2255"E" allow to produce a BibTeX database file from entries marked in a
2256citation selection buffer.
2257
2258The command `reftex-citation' uses the word in the buffer before the
2259cursor as a default search string.
2260
2261The support for chapterbib has been improved. Different chapters can
2262now use BibTeX or an explicit `thebibliography' environment.
2263
2264The macros which specify the bibliography file (like \bibliography)
2265can be configured with the new option `reftex-bibliography-commands'.
2266
2267Support for jurabib has been added.
2268
2269+++
2270*** Global index matched may be verified with a user function
2271
2272During global indexing, a user function can verify an index match.
2273See new option `reftex-index-verify-function'.
2274
2275+++
2276*** Parsing documents with many labels can be sped up.
2277
2278Operating in a document with thousands of labels can be sped up
2279considerably by allowing RefTeX to derive the type of a label directly
2280from the label prefix like `eq:' or `fig:'. The option
2281`reftex-trust-label-prefix' needs to be configured in order to enable
2282this feature. While the speed-up is significant, this may reduce the
2283quality of the context offered by RefTeX to describe a label.
2284
2285+++
2286*** Miscellaneous changes
2287
2288The macros which input a file in LaTeX (like \input, \include) can be
2289configured in the new option `reftex-include-file-commands'.
2290
2291RefTeX supports global incremental search.
2292
2293+++
2205** Prolog mode has a new variable `prolog-font-lock-keywords' 2294** Prolog mode has a new variable `prolog-font-lock-keywords'
2206to support use of font-lock. 2295to support use of font-lock.
2207 2296
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 5b0c4e5eee7..db8840d3d15 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2376,8 +2376,12 @@ The fix is to install a newer version of ncurses, such as version 4.2.
2376*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel. 2376*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
2377 2377
2378With certain recent Linux kernels (like the one of Redhat Fedora Core 2378With certain recent Linux kernels (like the one of Redhat Fedora Core
23791 and 2), the new "Exec-shield" functionality is enabled by default, which 23791 and newer), the new "Exec-shield" functionality is enabled by default, which
2380creates a different memory layout that breaks the emacs dumper. 2380creates a different memory layout that breaks the emacs dumper. Emacs tries
2381to handle this at build time, but if the workaround used fails, these
2382instructions can be useful.
2383The work-around explained here is not enough on Fedora Core 4 (and possible
2384newer). Read the next item.
2381 2385
2382Configure can overcome the problem of exec-shield if the architecture is 2386Configure can overcome the problem of exec-shield if the architecture is
2383x86 and the program setarch is present. On other architectures no 2387x86 and the program setarch is present. On other architectures no
@@ -2404,6 +2408,21 @@ command when running temacs like this:
2404 2408
2405 setarch i386 ./temacs --batch --load loadup [dump|bootstrap] 2409 setarch i386 ./temacs --batch --load loadup [dump|bootstrap]
2406 2410
2411
2412*** Fedora Core 4 GNU/Linux: Segfault during dumping.
2413
2414In addition to exec-shield explained above "Linux: Segfault during
2415`make bootstrap' under certain recent versions of the Linux kernel"
2416item, Linux kernel shipped with Fedora Core 4 randomizes the virtual
2417address space of a process. As the result dumping may fail even if
2418you turn off exec-shield. In this case, use the -R option to the setarch
2419command:
2420
2421 setarch -R i386 ./temacs --batch --load loadup [dump|bootstrap]
2422
2423or
2424
2425 setarch -R i386 make bootstrap
2407 2426
2408*** Fatal signal in the command temacs -l loadup inc dump. 2427*** Fatal signal in the command temacs -l loadup inc dump.
2409 2428
diff --git a/etc/TUTORIAL.translators b/etc/TUTORIAL.translators
index 671c52e0b1e..dfda17bedb7 100644
--- a/etc/TUTORIAL.translators
+++ b/etc/TUTORIAL.translators
@@ -48,8 +48,7 @@ Maintainer: Pieter Schoenmakers <tiggr@tiggr.net>
48* TUTORIAL.pl: 48* TUTORIAL.pl:
49Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> 49Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
50 Janusz S. Bien <jsbien@mail.uw.edu.pl> 50 Janusz S. Bien <jsbien@mail.uw.edu.pl>
51Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> 51Maintainer: Radoslaw Moszczynski <rm@banita.pl>
52 Janusz S. Bien <jsbien@mail.uw.edu.pl>
53 52
54* TUTORIAL.pt_BR: 53* TUTORIAL.pt_BR:
55Author: Marcelo Toledo <marcelo@gnu.org> 54Author: Marcelo Toledo <marcelo@gnu.org>
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
new file mode 100644
index 00000000000..298ba03da35
--- /dev/null
+++ b/etc/orgcard.ps
@@ -0,0 +1,2752 @@
1%!PS-Adobe-2.0
2%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
3%%Title: org-ref.dvi
4%%Pages: 2
5%%PageOrder: Ascend
6%%Orientation: Landscape
7%%BoundingBox: 0 0 596 842
8%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMSY8 CMBX8 CMTI8 CMR6 CMSY6
9%%EndComments
10%DVIPSWebPage: (www.radicaleye.com)
11%DVIPSCommandLine: dvips -t landscape -o org-ref.ps org-ref.dvi
12%DVIPSParameters: dpi=600, compressed
13%DVIPSSource: TeX output 2005.07.04:0825
14%%BeginProcSet: texc.pro
15%!
16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
17N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
18mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
190 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
20landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
21mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
22matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
23exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
24statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
25N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
26/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
27/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
28array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
29df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
30definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
31}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
32B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
331 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
341 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
350 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
36sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
37rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
38gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
39/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
40/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
41A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
42get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
43ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
44fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
45{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
46chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
471 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
48forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
49/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
50}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
51bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
52mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
53SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
54userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
551000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
56index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
57/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{
58/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
59(LaserWriter 16/600)]{A length product length le{A length product exch 0
60exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
61end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
62grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
63imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
64exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
65fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
66delta 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}
67B/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{
68p -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
69rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
70
71%%EndProcSet
72%%BeginProcSet: f7b6d320.enc
73% Thomas Esser, Dec 2002. public domain
74%
75% Encoding for:
76% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
77% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
78% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
79% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
80%
81/TeXf7b6d320Encoding [
82/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
83/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
84/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
85/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
86/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
87/period /slash /zero /one /two /three /four /five /six /seven /eight
88/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
89/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
90/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
91/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
92/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
93/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
94/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
95/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
96/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
97/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
98/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
99/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
100/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
101/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
102/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
103/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
104/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
105/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
106/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
107/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
108] def
109
110%%EndProcSet
111%%BeginProcSet: 09fbbfac.enc
112% Thomas Esser, Dec 2002. public domain
113%
114% Encoding for:
115% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
116/TeX09fbbfacEncoding [
117/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
118/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
119/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
120/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
121/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
122/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
123/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
124/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
125/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
126/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
127/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
128/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
129/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
130/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
131/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
132/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
133/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
134/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
135/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
136/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
137/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
138/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
139/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
140/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
141/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
142/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
143/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
144] def
145
146%%EndProcSet
147%%BeginProcSet: bbad153f.enc
148% Thomas Esser, Dec 2002. public domain
149%
150% Encoding for:
151% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
152%
153/TeXbbad153fEncoding [
154/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
155/plusminus /minusplus /circleplus /circleminus /circlemultiply
156/circledivide /circledot /circlecopyrt /openbullet /bullet
157/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
158/greaterequal /precedesequal /followsequal /similar /approxequal
159/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
160/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
161/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
162/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
163/prime /infinity /element /owner /triangle /triangleinv /negationslash
164/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
165/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
166/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
167/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
168/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
169/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
170/backslash /wreathproduct /radical /coproduct /nabla /integral
171/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
172/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
173/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
174/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
175/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
176/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
177/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
178/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
179/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
180/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
181/lessequal /greaterequal /precedesequal /followsequal /similar
182/approxequal /propersubset /propersuperset /lessmuch /greatermuch
183/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
184/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
185/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
186/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
187/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
188/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
189/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
190/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
191] def
192
193%%EndProcSet
194%%BeginProcSet: 74afc74c.enc
195% Thomas Esser, Dec 2002. public domain
196%
197% Encoding for:
198% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
199%
200/TeX74afc74cEncoding [
201/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
202/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
203/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
204/suppress /exclam /quotedblright /numbersign /sterling /percent
205/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
206/hyphen /period /slash /zero /one /two /three /four /five /six /seven
207/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
208/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
209/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
210/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
211/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
212/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
213/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
214/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
215/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
216/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
217/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
218/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
219/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
220/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
221/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
222/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
223/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
224/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
225/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
226/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
227] def
228
229%%EndProcSet
230%%BeginProcSet: texps.pro
231%!
232TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
233index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
234exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
235ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
236pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
237div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
238/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
239definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
240sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
241mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
242exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
243forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
244end
245
246%%EndProcSet
247%%BeginFont: CMSY6
248%!PS-AdobeFont-1.1: CMSY6 1.0
249%%CreationDate: 1991 Aug 15 07:21:34
250% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
25111 dict begin
252/FontInfo 7 dict dup begin
253/version (1.0) readonly def
254/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
255/FullName (CMSY6) readonly def
256/FamilyName (Computer Modern) readonly def
257/Weight (Medium) readonly def
258/ItalicAngle -14.035 def
259/isFixedPitch false def
260end readonly def
261/FontName /CMSY6 def
262/PaintType 0 def
263/FontType 1 def
264/FontMatrix [0.001 0 0 0.001 0 0] readonly def
265/Encoding 256 array
2660 1 255 {1 index exch /.notdef put} for
267dup 0 /.notdef put
268readonly def
269/FontBBox{-4 -948 1329 786}readonly def
270/UniqueID 5000816 def
271currentdict end
272currentfile eexec
273D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
2747D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
275A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
276E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
277221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
27849F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
2799045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
2801F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
2816AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
282007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
283F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
284C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
285CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
28685132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
2876C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
2880306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
289AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
29072BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
2914176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
2922439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
293E97F71E04BB623E0BC9C
2940000000000000000000000000000000000000000000000000000000000000000
2950000000000000000000000000000000000000000000000000000000000000000
2960000000000000000000000000000000000000000000000000000000000000000
2970000000000000000000000000000000000000000000000000000000000000000
2980000000000000000000000000000000000000000000000000000000000000000
2990000000000000000000000000000000000000000000000000000000000000000
3000000000000000000000000000000000000000000000000000000000000000000
3010000000000000000000000000000000000000000000000000000000000000000
302cleartomark
303%%EndFont
304%%BeginFont: CMR6
305%!PS-AdobeFont-1.1: CMR6 1.0
306%%CreationDate: 1991 Aug 20 16:39:02
307% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
30811 dict begin
309/FontInfo 7 dict dup begin
310/version (1.0) readonly def
311/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
312/FullName (CMR6) readonly def
313/FamilyName (Computer Modern) readonly def
314/Weight (Medium) readonly def
315/ItalicAngle 0 def
316/isFixedPitch false def
317end readonly def
318/FontName /CMR6 def
319/PaintType 0 def
320/FontType 1 def
321/FontMatrix [0.001 0 0 0.001 0 0] readonly def
322/Encoding 256 array
3230 1 255 {1 index exch /.notdef put} for
324dup 0 /.notdef put
325readonly def
326/FontBBox{-20 -250 1193 750}readonly def
327/UniqueID 5000789 def
328currentdict end
329currentfile eexec
330D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
331016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
3329098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
333D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
334469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
3352BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
33668618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
3373645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
338BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
339CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
340C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
341D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
34223131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
343D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
34493DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
3456D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
346EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
347CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
348D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
34900CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
350B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
3516D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
356C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
357CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
358AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
359C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
36085D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
36191430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
3622E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
363342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
364ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
365C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
36610B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
3670FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE
368AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557
369EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895
3703925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141
371F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36
3722B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16
373057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A
37491F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324
37580F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC
3761D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3
3778377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F
378D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A
3793AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306
380F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6
3811A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E
382F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F
3831B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2
38420701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6
3855A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4
38684D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959
3875F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D
38896AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558
389C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7
39047C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5
3917444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603
3926671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01
393864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC
394111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850
395B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C
3966B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C
3979970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A
398421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095
399BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF
400F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC
4018EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372
4023634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448
4039E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3
404A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191
405A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C
4061CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF
40751D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D
4080F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450
4094760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7
410AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53
4118ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA
412D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB
41399515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4
414481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52
4151B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA
416D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586
417E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF
418B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB
41956BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB
420F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4
42161C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574
4229098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D
423FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3
424049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA
4255506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59
426620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8
427E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477
428ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE
4299F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA
430B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431
431DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994
432322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0
4334296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501
434CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792
4352C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7
43622946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595
437376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC
438C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4
4392CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C
440FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E
4416B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262
442C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A
443AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228
444028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5
445A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD
4462AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193
4479967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058
448C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC
4491C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A
450DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D
451C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE
452EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285
453AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89
45400BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190
455F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD
456A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD
4578C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB
45835BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C
4597B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC
46043990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5
4610D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E
462F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A
463E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821
46402C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55
4650B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5
4668B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9
467AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446
4689769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134
4698F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26
470CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360
4710A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E
4728582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089
473A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267
4746940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F
47516715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E
4769E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6
47764145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C
478C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481
47905558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92
480920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11
4814842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D
48267EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4
483BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718
484A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D
48565C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E
4867F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5
487CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC
4880C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA
4894DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824
4906F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333
49143E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026
492B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79
493497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4
49412173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5
4955A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6
49633EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F
4971055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD
498114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45
49924391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1
500C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C
501C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516
502E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB
5035EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA
504B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062
50586032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49
506BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C
507D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6
50807EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF
509D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723
5105E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A
511DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D
51275071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480
513E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D
514A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C
5154921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176
516B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2
517689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38
518087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259
5197E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175
5209DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98
52147E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4
5226D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D
52335F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66
524E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B
525D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4
526C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85
527121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81
528BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8
5291BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE
5306259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB
5315D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB
532776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A
533C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B
5345FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99
535F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083
536DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE
537345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92
538892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C
539FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8
540FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38
541FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924
5429BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E
5439480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766
5446A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23
54516B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B
546823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54
54779E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685
5486A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4
549A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187
5502825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390
551FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22
55227B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88
55367332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D
554ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A
555B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941
5568437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE
557D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D
558C48D5145E2C6AA7D7FD787BC0D
5590000000000000000000000000000000000000000000000000000000000000000
5600000000000000000000000000000000000000000000000000000000000000000
5610000000000000000000000000000000000000000000000000000000000000000
5620000000000000000000000000000000000000000000000000000000000000000
5630000000000000000000000000000000000000000000000000000000000000000
5640000000000000000000000000000000000000000000000000000000000000000
5650000000000000000000000000000000000000000000000000000000000000000
5660000000000000000000000000000000000000000000000000000000000000000
567cleartomark
568%%EndFont
569%%BeginFont: CMTI8
570%!PS-AdobeFont-1.1: CMTI8 1.0
571%%CreationDate: 1991 Aug 18 21:07:42
572% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
57311 dict begin
574/FontInfo 7 dict dup begin
575/version (1.0) readonly def
576/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
577/FullName (CMTI8) readonly def
578/FamilyName (Computer Modern) readonly def
579/Weight (Medium) readonly def
580/ItalicAngle -14.04 def
581/isFixedPitch false def
582end readonly def
583/FontName /CMTI8 def
584/PaintType 0 def
585/FontType 1 def
586/FontMatrix [0.001 0 0 0.001 0 0] readonly def
587/Encoding 256 array
5880 1 255 {1 index exch /.notdef put} for
589dup 0 /.notdef put
590readonly def
591/FontBBox{-35 -250 1190 750}readonly def
592/UniqueID 5000826 def
593currentdict end
594currentfile eexec
595D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
5963B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
597532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
598B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
599986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
600D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
601525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
602F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
60384AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
6040F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
60506BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
6065FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
607D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
60893FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
609FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
610E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
61146590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
6128E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
6134482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
6141D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
6159A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
616BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
61709FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
6183113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
619E8929A4BBA0EC700D5662AAD9EB38047C6C7C63EB3FA03B5EA9E56DF0E30B3AC
620058198429E22081FFD4CCC1F3A7A88AB8A22C7C6C6448934DEC2212E89998259
621653D779091F4F7F6C0A76024363A9001817B1D572847779F98F02FF9A1B45270
6222F7E42A25C687D6E56C89BBB580DE865D7372A02F329E71E0BDDA2CC8CEE41B7
623FE95846B78982FAF79E544CEF8D72A94FA73E69ED3A5F834BBE082CE0E8D4EA0
6242F619CF8441B5E057482D71D834BC6D93BF9F7777FDD2A5216911D31D34CDD76
6258D0F805FF6A71D77AED0D540ABF995DC77C30ACB207DB2513D691105199B2555
626CA9418777932A54E99E56E5171261B3708D8646A28803DEC8EABB44E80F3132A
627B273B74A56B5770C09508637BE122DEFA8A0B3438403DF67AD2FE9641009CF03
62844E39E8A56E244C56B8777F486C958C5196286F36761F2568FE1A8A6E74D6891
62919F7E393FB94388DE651E078D4D40DFD141A0FC074ACB3384BE70073C08E2EE6
630065EEF9768D260C08E40B2461EB226D820BC43EBCC49A943528B8E5FFA474300
631BEE3AE339C2E0C4B247A4F8F9CE588AC67CB6FF85ABAE18AE0F77219E44DBBF0
632C6B5958D89EA19BCA780BEBC7C29EC8919CB9754753DCF4781F34FF4F75FB52D
633C00A65650B9AEA0411B117D2DB6A813F17569F8D0BD600FF94F063EED10A9F10
63472B6FF606A4778CD73CE7A03EC5F31B6B4C9D93B80921FB7109C1E9926C77113
6355AAF1CA527E5D262674D0B05681E38FE2F14916248E81C52079AE46C4AA3C1F6
6369BDE6B8A497600BF36E594079AD3637D27E2F4FB0E89F80CD10A1991CDFABF46
637C36D32D5309D24024BF22F920D954E50EF667272BFB5CAAD0824641634CA4CB5
638E7491D66A5ADE670AEF9C5B1F1B45497FF99C2361EDB1FB5C8F5D9EDAE288C68
639EA3337F3AC1EC76037252B7107C3F96746EB0A6BB2DD05F1D372B0ED5C3F56B9
640CD6BB3EE200D9A60372D4EFAC7739E2629151FDB2BC336A95260119FCE6A9511
6412937DC9F522CC0CC6DDFDDF5673A962E2DFE6EA3923A5CFE9C4EC0C69BD1DEE6
6429F56420E6E8F972A3B7462F4DFACDE97B4F821E1109099298C77FC831E6837D0
6435BEA4AE2D59CBD525A79C96E491C20EFE0138F1F9A9AA1B30367982357719380
644EDDD75F4547F1997BEADCB8B7FA9227DD211433CC05C0B804E8BAAE95171EAEC
645EFB60DBB8399E83709895D5B4DC11E11FF91E2A39861B12FFA587E8D752D74F8
64671456FE15C7B6A885F2BE67C63B2D9CDC1EE5688CE99156821183B552DF78DAD
64764F178CDF98390D8C1967CE7D9BDBA99AFD5A9908A950A11FBED22FF6A61D0B9
6483BF4842A22E2295DD259B0DCE2773F9D672B217B7F19A4D22BACD2DF929FFDED
649EEF43C052D515BF739EB5B397F9B8762083965A85F96E6BD48E0402C85FA03CC
6505CBB51BF4CDD01B891BDF1959AB822E9E6A8B9CD914EC25E861DAB64C443641C
651BC2F1ECFDF4C3966E11F137787AAE702564B3EC4754982726AD67DB2A98E2EA6
6523B843D824EE3FB92888AF133ED29CA1B92A87C50E71640E418A5ABFFF469F972
6538AAE580B2E255272870AF5BBF923F9805104847880113BBFEA1FFED8B19915E0
654A0F0436BBE20C7E3FA1DCECFF072B8FBE3A100A33B181C0816CD4E28A8E432AF
655BF308B89336A8710EE740E1583A9ED41C97F96D546DD7613CC7B214501E14087
6561E8F1002BDBDC12DBC8F4CDB5D2E62EEC19007B3D89407B865721C28C7579845
65704CB6EE7A3AD6032D3DCF9D01F83DE750BC8F0DFDFF13FD400AACEC35690983F
658B5E04373CCBF469472B8AA0FA6A398BEBEFA8D914D548D0BB5589E1C40D7F625
6594F8E0FC08108C2288DECAC258D819FF92AFCB63954960A5B194934FAB5F4E757
660FAB4AF44176447EFE9E20B44F0E8BDCCC0925DD4703F6DA0B2E61E3121CB737E
6619E5FAE5B899987C8851CCE11408B5B12D5F67DE0552ABEAC69596F377AC65A83
66225E8ED90ACA8DD09D0D9AC984C2EB9A01F3502CC81422C68456A9B15796C8B08
6630060EDCACA5CAA76549D613EE7CFF973E9091B2B8EE4B1DD0117DC140C16527B
66447B335576E75C4E558E3777AA9EEDD3DA21B63E7DDDC10CBA609090099118E86
66537A4AAA5300E6DCB887E36A60601D4A02E98A547AE834960BFE45F644A23211A
6663D039D63BE8A49BC421B19E6FCD8132DD37D65E88C685B1775B1D05FEB41C705
667E3DEEA6307A5B44AF3153407B8042099128F867D3924B477FE258B3A23A47757
668B8F09B52A747698DD84E7EE65C4B30ADC97F7D6A63BB621E9EA9CD76BF8F3408
6690FF1D4AAB7A5F1417EDD399AD210F59E06B606A26C69368CC896616E802BFBB1
670613B4CD2AC76FB267B7EB1178B703F33B8D199BFB0968A82B193A1A32325442D
671C4FEA2BB70F971AACFB0722724724FEE9041A3232BEA3A9870939C5F0A5C00D2
672B292BEB07201BA6FF9B43D887E7F18A28AC2B9C998419378DCFFD57DAA9A88BB
673B97758828F0CFD6B810FF4D2A0B2D62D06110F2C804EB4E555E1B2E0E316E503
674D30F7878704FD816B6F19D49A1F9B37CAFCEDBA771421CE1C43DF0BCF2B2912C
6752E9F1105A4A91EB3BE467C8D4B3312D204915C237E09327BEBE496031CA2BD42
676EEF53F0ED5CE1F9D6496624A97042B0B45B3E59D01D41ED3DD16399C6279A9A3
677491272AE972C2F332CA37E1D074B97C62E7308EC803C251DD44A2B9B2317FC72
678345F338F335BA8A1C0F4E6BCFF7DA5CEEC539C08B26384F70724118E3D6BFC45
679608966E2FAAEA78A14234FE7547DA9C2D02EB4EA39835064BA994175B8BEFB61
680D0450C331985D54E2B1602D85EFE3A09FDA2346D13E203F3A52C2AF678ACBC01
6813980E95BDC04F2BC968C1341FCD4463783167C3361AF4777333EA568DA52D2FD
682A2B34B7064477C2B455385ABCC88BCDF277A1B33C90D3A6A431DEC8BB5863B70
683E1C769932C49EC1540B1139F1300003F59042EF79953930CC90C087370B46999
6840CCA827C1F1AE29E1CE29098CB4B3CCB91A61052071A550DC52284DA71169D75
685EB5B418A7CAB2DD4D9245615DAF8D846D45EF49C331E11EF875B2C62E470B0F2
68601BA91B2141C4380CCF5773C0C7B90B4447DBA415A2372B2DA4AB109D13DA0C0
6876E5E54C9DBA4FC967F0350E655425D1A896A2E6FF676657F4241A76F9F018190
6886AC7B8F53052B8DCD54168874304FCF0530E38EA0A422D292DC6E310495B5AF2
689E2F54210227F0FE30576CD6EC8E8BA26A398BE076716C20F0972F153C404D539
690ABDFE8BCB69D8E9A7D7733A7123BDB6E7755E35B10C233DE30BCB34227D7E550
69156DAF2DC5ED812C1127B1EECE52E1485FF2DD092984B0DC1E58F13115E939B3C
6929639DD3B13604CE8DCD603A13E8DCB7520461CFD6EC06F7B0B729CBDDDBB89CC
6939A70CDA0840B9098C39A01DFD556E3DF37966F07921067DE045A80D5716C8F11
694BDACA5F2AF25C7527440BAACA8C5F211A3C30FE38DDF87F34FE9E3DA9BD3ADB1
6957C151D5AD23BE78FB5672C9339F8BD904AFAD6674453A3BB589C1AF295358C1E
6964F6F89BB020E1A146B5855B46A366773B65CC0C449319CCDBE75B3D8AED76104
697E4C4ECC307FBAD006E98A40268DA58CFB135869C0DF12F3D9F96AE010BBD2AFA
6985297D587D5C599DB3687EDFE865BF7AB530C8396A7DCBF84D196D65055E078FF
699CF1BA51EDE702BCDE009D9903EA7658E906887C4BD16E91D9FD49FCA8F75517A
700332077D8284E564D84789C561E93E27CA36D32DF337713FF2E91861683F6DA40
701C5E8F505640B8CE65895FACF142565AAB691F7C9376978F98B679CBE1C163029
7021E49797740BF747243A3A569811EBAC9119E7FDE8026E752C198D116BEA29A14
70303F40F6C30C571146C72E6AB8F581AA24D24B639BE55E925DB8640CCEEBF1277
704C5628599AAF6D1858ACBDA07C56A7AA9009221D0DA3B
7050000000000000000000000000000000000000000000000000000000000000000
7060000000000000000000000000000000000000000000000000000000000000000
7070000000000000000000000000000000000000000000000000000000000000000
7080000000000000000000000000000000000000000000000000000000000000000
7090000000000000000000000000000000000000000000000000000000000000000
7100000000000000000000000000000000000000000000000000000000000000000
7110000000000000000000000000000000000000000000000000000000000000000
7120000000000000000000000000000000000000000000000000000000000000000
713cleartomark
714%%EndFont
715%%BeginFont: CMBX8
716%!PS-AdobeFont-1.1: CMBX8 1.0
717%%CreationDate: 1991 Aug 20 16:36:07
718% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
71911 dict begin
720/FontInfo 7 dict dup begin
721/version (1.0) readonly def
722/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
723/FullName (CMBX8) readonly def
724/FamilyName (Computer Modern) readonly def
725/Weight (Bold) readonly def
726/ItalicAngle 0 def
727/isFixedPitch false def
728end readonly def
729/FontName /CMBX8 def
730/PaintType 0 def
731/FontType 1 def
732/FontMatrix [0.001 0 0 0.001 0 0] readonly def
733/Encoding 256 array
7340 1 255 {1 index exch /.notdef put} for
735dup 0 /.notdef put
736readonly def
737/FontBBox{-59 -250 1235 750}readonly def
738/UniqueID 5000766 def
739currentdict end
740currentfile eexec
741D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
742016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
7439098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
744D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
745469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
7462BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
7477F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
748EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
7497ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
750AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
751E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
7524211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
7535D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
754611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
755D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
756EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
75735ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
758ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
7597365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
760C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
761B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
7623E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
76364E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
764A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
7656475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
76613F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
767689FD4E84B455C7EC6C5BFEEBEB422E156C67D7E56B8267EA704318ECE801014
768D563FBF79D9AE4F8C41CC649EFA07C8FF9FDF6109E05FE58B92CCA7E26204CE8
76905A20B86CE43C9EF809DCCC2E28021EF11EDBF36F6EF75E9AEF7FA793CB81E47
770E2618947764B7CE6C3B94321D6FB8B824794362CC8CB6BE9EB3FE6C601820830
771E7C6F16E48574F329A642AF235347CD0017155299B70CD489095443A726C89B2
7727F7110D2C8643B1FA3A938D53C087EA3491B9EC4E5B213815A281C03E8936424
773614FF39012545B995E60E3FDCB92E45F51BB69F8683F62668FED702AED16E709
7748FAAD0CD9355995820FE80C4496D133F1714114FC89E871E2F6A994A4CFE14A0
7750CB974E2ADCDD20F11FAC0101A90C215E40234B027DAFD9D31530B96239816B3
7766006A6A69E800D7EC779FD10C721F7A476C02BFE5FFFB04DDF1B12D0779080A0
7770279EFC2D4BD5A8F224083C15008218EADFD8D6089E79A4BD0EFAC995EEFECE0
77883ACF32C0790A54F6D04C945ACDF739E06690A00AE579B5DB9C91D21731DD420
7795E2891FE9E43F0F78B797C299F8C6EB6B0AA2808E28E5A01A2BA1FCFCB54598A
780E5C49FB68DEE2A0101CA67B827122072AD6E53E0DD6B62AA4A41EDF0A3C13DBB
781B42D8C0FB4BED03ED493F38EFDBD7157D84183E726CA215005699ADF49B6A5EA
7822A2F0B7599A783CBE0FFA0AA965969AA222977A13F88EBFB3C134B4445EED5AB
78380C9882E54A5E1DDB9014DB04FAD3D159857FEBC2CD56EAC237BAC2177E02C74
7840AB0C3195B3847D5D21EAC3AA0F3B916664370D6B366F877DA0BFE4A282E96AA
785F804B144DF7DE52415E39877B8D85D55D40E3B8BE0809BD5AA0E58278A9F5EE3
78633FCB97E79EDA72DF08A258DD09E18D69E8B2EA33E4E1131D58EE27B80FBE72C
7873F513A556AB5A7A4C00C6332D373E96BD0B9F037BF86ADCE6481C7CD44A0141B
788419DE72F671FAD0C4041A819F9313FC7357F775FA341F290FA4F15DD9F5742CF
789B969D56DB370C3A8F94818A1728B00B44FF035CCF32AA1F31BCCFCE4FF49FEA6
790813943645ABA47BC8E8E51A709EF55D7125156925FF994974EFA2E9BF696B153
791B5189911933C09246BA6AA23282496C2551C4F879D2A556217DCAB15EE185070
792840051E3F27BC72676B39817AB3A2AF8824151395B50DBC3999549F9AE1B6D90
79347EE409A7E1816B588A4864C783FFE112D73928193B1DD3359D9FF1ABC73C3A8
794B29027ED24B04E3AA855DC1F719AC8746BA11FA5B676BC09DBC80574114F4290
79565C30DE7F659BC1A2E5FBFB5286624B1AC8767508B0F178B3665B53BAD6363C4
796816D94B542F6AEE1E824420080AA591D66F6348A7C1225C098309DC1C491E80B
7975B1EDC8B75DD42A89BE2C598E58A3E4DC4B0B8944318006D207699E492031E15
798FBA791B235D7F677D14AC516B76700859974FB8820438F7BCD3D3B3D7D7D008F
7993880F72358A882ECB76BFAE04C1B8E0977155AB62D07D7AE038C00C267C6D9C8
800FB31C40D91A6371C0A3B0A8B7E4C92242A924D48BF3335E80C33EAB8B8B11571
801A817D8993A9C238DD5D8A6B91BDD18223B0C21A864F190E012AFB44216A9983E
8025191F4D77F7A6EE8E2967438C8975EEF92E6A436717FE2B13B2B65B1D4BA6E58
80348F4E97D41910B3C79E72B84B23D446B96EA9E74A502049A6A670F40BA362A74
8048920731738746163937EC778B249AFFC20603A6BC546E139DEA7F5FAC96723F8
8056544F0BF630B274977966135115497C1AFF7E581AA7B1B4C456CB15474929C2A
806796E752106F068D3B232D3979B27BB4C28098A657E1D4C76CB470D42BFA072A3
8071E0A1952C2DD97FAF260EA58C755DBFDC679E0CB0F20B8A25C8DCC86BA990031
808F16B1F3AF1714386545B42ED4F0CEDB0B3935D3BF86FA4D884A58A56A0737792
809094F830BD1255B695BD756987CFA4AE5030E1B24E9565289AF240C76D78D7E6E
8106299436C5853BC086D5F22A5CCEF4234E2FFAFBAF3F4F0B4B5299D47A2C6DF9C
81122EFA43E822B6140EB66BAB6268F66DF737764E84134DB9AA6BAF0663BC73421
812B7888BE30321CF239AD0AEE6B1803EF817F8B6B6A6F274D87E88EA67135BF116
813B2BBB8E8C9EFCD757A6ABCD2F799CA0CB381628507118D1082904B728534C129
81407DC200EF69A137D09D5B31A8E3EEF61C1AAA3DAAC733CDABBEA7577201938EC
8158C58115FDE70557319A6E6F7B3A746CE653AD77660FCA75ADCD1FE75C1D42DB4
816FF0CCF21DCB92274CAEEAE47782B0033BE1A5F08F98427C38FD7D337BA2DBEB0
817473157DF41B432B3859823FC2EB912C3B10FBD381CE5F4B7712B1FCE8D9AF5C3
8189FD44A255163880A8104069DAE3199515D813BDC58B0348BE7C1BBEB4105B1E8
819D33431E5F536FD5FA5C60ECB139F47402BF42E1228C2E08C7CAE985C9EB7E3D5
8201A98D830DF57DE98548ACA2C748C18FD938F30CE93F112410CC35C8D76690715
8217A0D8F4726F2E31A722E8F76DFAF3A88AE7969FAE1EDEF99EA90A19A9692899F
822A4A6F4E9C5724B5D8688A0EFA7D2FE4565B05FF5906046BD1AEDE1E992C84289
823E9BDD813EA9E87791229ED1E267A3023B53F808F1F96EE21049F02E6703A22EB
824A1ACA6DBB4310D15DC12192150BAE79EC915281ECBEC904A49301438F53986DF
825E7EB0EFC44985266EC846A4A12AA7B9A90E3799FFFF4110D311643B2E2EF8961
826A61CBA357C947A91056C798B23641C2CF30FB4B38BD53E7DB9AFB0B8F69F1074
8277CB154A179B796DF230D1ECD4E6569EE80190C6361593946BCC005EE3732D343
82816935D2FE49856756B9F87DD6B8DE288AA3A3201FC7E77F75A42CD95BFB42236
8290C1DE3177DA2B50F1C68DC36BFC189EAFE388116160F65EA2626D9B7CE44C375
8307D5FD83F8E9B8E9609A9B46777932A21B73ED98B8C714A954EEB2DD9FA3937A3
831DF41FE76D214E9C9D8DB712B275E91F9E32F31D98E30A7D0B3CF718A52134F86
832D1E088F91FF3D86490EE0852AF23D9856F271A1617F6B06E0CE1C163D7886908
83377E5C0C522E0F0AF8E7B05205FEBB92C68FF99DA858BE00E6C7CBFDEF8ACCC60
834FF9E48E4F5B1FB95DDB11AB4CB09D9E59E4B981E2A59F77881E2CB31057A6416
8355208B180D301DC13F842CEBBF97AE7A3523EA8C6FEB5DBC96437EDBA53F78730
83693EAE0A81715E303894E12977EA37DA3559AE4B5AC49B84E44B71DA99F487A55
837CF35FD75E5EDAC5397F373B018CBFF45E00F704D3AD2CBA79F1119C31EA1475E
8383289FF427407ACC5F516CF88F3F762543D765609CB618ECD786425F54CC509F7
8397734B0E217F638A61D169706EEA92A552766FC0ADB2D87AD46D8EEA079CC96FE
8408CEC5B7E61A87FD26BDA35F8508177C74B42B694A6BAA8BE7A906B30C5CECCD5
841C0CC4857450612B69DAB66EDD6BE13E9B106A26DAFF419095859D5D1D01641B5
842B34155887DB441C5ED0BCE1A7B9E12497F681BD03FAD87AFC6BAAFE23B406427
843763455BB4B9DA86CEFA6484BE30BEA1E43FF8C3007147745A35F283CEEFE1866
84426DAD4A22200F50E638BBA2EFF73C1DC358CB9C1D377E6EE9E9A18B8ADCCA028
845FDD4BB09DDB37C0DE0E56512AF00C57D4FD02B6DB966ECFD0BC122A55BB9FE05
846F20D682CF3FE2954F32BE305CAA9E50BD652D52460152B9149E891D419FCC078
847E9EBC6A940048EA2173C0CA463D7DE339CCAB9A86467CD1548066788C54FCF5D
8488C87CC51FAF946C75EDA7F6A9165D42E5F5BD629B84F298D790523D5AFB2FE10
849C2B9D578FAF1748BC0EB868D498BA46999F36722A7C38A6A7B34B85238F4A640
850ED5327411CA5D44E22219BE1157F163C145DA6E93ABC5D0DE2B3A7AB01EA33F1
8512B46502148336F06D6501AAC93717117BCE587FA86DA114DD9E264F5B1120A08
852AC1CF7C42992AFE0DBEA926A731FDB4996BC9405BD35245A6D08FAD20D3FBB49
8533075948A25C1634F0290D5AAFFCD7ABBEDDD607A7250D3023BCF2D2002395BBA
854B252F6D039EF1FBA7C71C94F45029FD935F5CC48F6277B5C843881569C5C4AD3
8557B54E2248A81B42FAE507F105CFEB1C3EA4D99C9451A05829733D2AB14F26B26
856C02D1496C8EBB12425A2B90E94E76C507C14673665DDBAB34668C44BD1834992
8573542D09B76604E40F61B2869D09E568E03003F15752B066E4CE03836F49E699D
8589A4AE3C95AA7C73CDB829E7384288A696CFBB0169BD6A38AFA1D514CA7F1145A
8599ABA828991D7C553A30F340FD31ED6C6FBE5403E983ED3792A3B4BD34BAEA85B
8602171D8C91E3B6D8C44E9B464B1723D035BD38F65561AD340C1396CF2153E166D
861EC384FDF9BEEFC97CD9542FC26601AC4CFF9AD232AAC0C2E36FBBA289DF156F8
862B5872E75BA8D7947433A935387F49100C80213EE8F55622A7BDA1531FF68E5E3
8636810922DCEAEA6D335021087F623FC7FFCF401C40D848AB54951788FBD03D87D
8646CB419871FCB786D3E9B3C67A0F9473D1437B207904ABC36532D01FEFD1CE90D
86545E201D5A119F18F22A820A28D74FDA3B36D4560AAA27C7DB2881BE51D8B9D5F
866D8BB25D3CDF776CA9EFD032B9EA3D4337A393289B02EBFF68727F8511CADB4A8
86782C08DB25B1193AE786E9AAD1A929519A93CCD44D1FED5C82D5FC461A9B19852
86848E075C46A8C00A10CC95F32B2E63367F95971CD81B60CB3D5820E7C0A14E2B0
86900681E53305C074E6DCF4F2C0E4D7F5468868ED3ED09C1CF7D19ABBDF904D2B2
8705250126EB91E19F24EFF107D86BD4D5AA7BE3B23E2782C7EB3018D1E23E11526
87103B929656A4ABF84CBD36304951204FA43CCD202225B59E6EEAB55BE99894501
8726FCB70F8F01113CBD194AADC48250D1DC39C07D578D3B883796D2AA489D197F0
873CB13E7BCF91121B7019F92431786E58CDBDD29E46463DFBC06BC43254E7D5EF6
8748377EAADD1F4B6C80C6CEFED86924F4B9BC4FFB42250ABB944862C39E9498CBC
875744E6838E7AC0BFC57B1857898D586C3D1CC2F5C344A39CCF0955D95649962B3
8769B2FE61EB993FC2A0FD2DAE84F26CE93489B12B921ED8F7B06F08BD1D3967366
877255B1E5C01D7E1999EFEB6D5522901650DAE91AF9179787DE84D036469ADA85B
8788A4BC32248E176EEEE808C72D095F941BE5E6BD14D1C82D5402FE177C6EC2069
879842B7073935BA15F5C49F275F878C344BE880F01DE28C735B1B30424F63D8670
880C4CF154CC98F030B2259798F9E62F14B5FF3DF856B7BFF262B88F0EB12C7AD29
88103D0C3AA02A3D51011057FA9C1D06D56BE593137A8532A60B6DEB05BCAE23DF5
88202F05CE14181B7F00ED410ADE26B070C1FA51C22562698CC442BB5BC1E2007E5
883BA70DA947C0D4613C0B1925E7BB88A7B82383D165B3D8A045EBD8DF273F5E174
884E7F66051FDD55E9560102CFCC1D5523BCD843038A46C8BBD7142AA2BE7B22A11
885D822E93F01F25DF7F1F89833B166F3CD0B1631EF2B15DE9E33F4220AD53D7291
886E43FE0BD7B47CD0B89199E206B36FEDA5B471BB5F4B14D96529FA3B053DBD9AC
8873F0D45357F2008EC4A4194A6EA0497E1977D6F4E5C35C013DAC1281CB16307FE
8882888BE19CC22892556C9D8B1B2BAB7DEDE89F39F00AB6C6B1AB3C6C61FD98009
889A8DD8E2BD378B724B72D866CDB1C497EB3A270C6BC423BAAEB11BECD4079F28D
8905111F14CBE73EDB6F327316641BEB1E987779D42C71F95E8E00BD3E205427215
891E2EA543A83124CBAC0F79347F9C801E255D553EEC4A62B718D4AC2F54EBF31BA
8925522AF73E9680E62B122390743D879CF0E69DE4F4C3DE374EE3CEFF1E3759407
8932CED877D736F939D30774F24A24C9F83473F9BE23AC56BC67BCF3D29A18D28F8
8945BA0C2AE83A41DC4C3EF4F74A4AA78787D0B9146BB375F3322FE40E994C0E12E
895CD0AE0A276911061FD23186374BE6EC5833E6ABC09E1AB5C46B098B1A1AF33FF
896E11B1E730819A27A2C768C003D7E5E3325AC3D51AC9DFD993F74DA68CD1A7698
897D4BA04DA1A690A595FE3340D702D57678187ED6459A8C8128F164F7851871D91
898B922F2F30A99286EBB3EC8E1501599109B4575096B89AB5D86201FE35E193295
899886322EF4F72623A7903FC8AD577C70D80ADEA4570DE5BF89455CF407275F7ED
9007265752232EF39EB140725C03B25B832EED91CFBED42042CD6482B161A649891
901F12A097ED1A99B77B42459A69017D113E14788ED463571086D293EB9A29762C9
902CC304629324B48E67631AC2A56D246B4A77746029DF182DEB8DA0D9D2D845CAC
90369FB6D6CC03C0C1C021F6BD8838520008882C2FF0D7D5B5AD98D3869E5C263E9
904A4E83BDB6C1074CF2501247498DF02449A1215F4345E1024F9877FF86D441F17
9057C3487D6B2B7D07BFD0B33EBB519ACC3E7411DD4D2C096CB9BAFADEC8EFDC904
9060ED54AEEFECF1E96D0614784B1B9DC8F1D856F390D2C0273FE99FCC892763317
907A26940B09B46D79342E159D2B5B4B307C5BC1523EFB1968504B2FD69AFB37B20
908A787F7295B6586626D9D0F480E34D366011E99FB01F44C45CCEABF9F24B52502
909C4FBDE3790BBC0B9A4B8579294E692363B4A496EB236F77F319C0B661C42FB4C
9103849B8E338AE185E904AE8922341CC0CC18604290526483394D43947F34F534E
9118A1A0C028771267B757EC2E356BEEA3C0C42C19CFC53F84D9C81D03CAFFB8944
9120AE6B68D15CDADE9FE4B31F9DCF7999EA3D70A3EB09E20D2DD5119A4425E83D0
913825BF77EF18C6CB6A134D513FB9B6E623CCC3482B52DCE326C6AA77BC464B8C9
914AE0D7A0E9D9D96838B2612A1C56DD1DC475A146DCC08918537F7D7D8CFB4C632
915384F9591649CCD36887163FCAFAD51207D00C7567C81C72EF4FD7079C322BDB4
9169F92D883A7230B55AE2B7CB33224843B8080A748CBA3338038E3CAFE39759254
9178C25295A497199F99F66DE767BA520FA0889CA2947FA4E28AE74FDF80472D5B1
9185047D83CD272ADE577283B6FB785FB10043E7BCE5090912D544CABE81A784EE9
91927CB0525FB5461D84A221C8A66432D8C0F3D11801B08B5A0A6E81BB30567D0CA
920B58D2C33D90C300B03D494008433071BA6A245EFA16EE229CE4A94DE6DFC1A41
921AF69154DD23AEA4972EA5067E894ECF9EEF3E4671D00B947BEA81DBAB8CC01DB
92237AF810B5DE58EF5B0089C6AB06E8DAB6A71887741C0CBE58F9864B7E4FF3013
923D6CE6A489DC5729AE9E21863FA566A00F573E63F172748D8F6231C0F211947FB
9248DE5AC7D3C4397A24974BECAD814F9FCCE56B89CA779F39B5C73242B0D6BC5FF
9250DF7FF155DE8180122FFD2C2ADA2689DBADD7D26C78586DD0310C838923EF309
9267429A96FCBCCF22F968875B92AD7FE9716823C54D50CE987DE5F487342BF69D5
927EDE136B7E2C92C55B3A378298225A525C1D04E187997302B4F75D0672547F227
92806F9A21C16B40CB112B3D1E0E02B701E657666E4A16E227578B68A9DED734A1C
92932AEC59EE64DEC565BB123C481AB0AB941A14FB66667148F1C13BA3C48817735
930207D0A17F0860C7A2E82C5F4E1201635BFA79AC0E6CC7A77071D32DEB1E35EA7
9315CBB675DF5D68E4A88CD8DF04DA8D6CE1156BA93967E4DD90A5C1E72E3A228BA
93250BD4A3AC049E501F76E76F55909368A8F76E0EB8D85741F8CD9B9D5C6BD424B
933C25889D930B3A6EC36170A4CEF7E3E274DE7616000C14BDFDC726F323B4E3429
93474B7280C12FE3332FAFEF006A7BD47E97134EF23D3E83DE9A8E04D3E914F3510
93515016B4489959321E320E0BBA88D58B2732EF3655703C58B64CF71C1D5A2723D
936AB7C59AF13AB1ED12A39ED877BD06E1748FDC97300976CBBD128BB054CCD8405
9376F495791F69588AF6298279D065341A47CC018CB76EF3A1F7B78C16450E06D1F
938879107BA9926202B55FA95FF7F685D7BDF1D893FEC66DF13CBCB1FF992D0998D
93987B62C35DC4991014E64F9BDBF5D47A64949EFE4F076C5F5610EA4A743378116
940A6739DCF540EFF064EAB053B9ED34743C724E7D2C6CA542D150EF887CA78D53C
941A96ED7F1340B2ED6D5A67F5513DA63D4909E1F8CBC25ACC24B743A3B49058633
942B605A132FE9F9B01EB75243BFB248FDCE25E82FA7B589E5403B8C1B822931D03
943ADEC24EBFA8AE740E7692AB5418E71ED25885FDB38087E3755227BF9D7D14CE0
9449DDF48A7CE11128AB6B0A53A75C0AB7B9CD68FDD2A4B29217443CEC5C8680222
945CBFE6EC20F17193ADBAACD485D8333A95276C071B0A8385E43E9D7CAAECDD39A
946D649CFB1EC72212C5296D1AACB75EDE6D4360F2EC9F441A73AA7BC2AA04ED028
9474B95F1264DF0F21A969494A1E959372937C624058A1B37414254BB718BBE99E8
9485DEFA7C0EC0D741D7612F73044AC37BA46564ED2307CBA6E22264B3539020A93
949E2685648B95216CBBD4B22EDFE51F4BD6C91F41828A00F844660B32A5BF9C5C7
950D68A46412DABD78659AA24A4D6BF67D2147972C47AC2C3217C55F95A992205E0
95168199AF701DB276C7A53D7104560A645E89EE2CABE14B5DBA333859D81C20293
95284EA8DF06BA4AA429FFA34E5C87CCA5525D360C5848AD2CE6051564B9FD6B454
953A2E4C1913E0EA6F7B5E4119026CF2C8488D5DDB905C64D5F07378B05B9DCF5F7
954552EDE447A018DA29A677BE310D0B6B22469F97353ED39C6BF5526605EE7941B
9559773DA131070B75AC8F50177659EB138A07DECE0524EB34DA9F3EAAFC01C0374
956728B0202ABACCD138A1E7F1A4B3C006D794A19596641959CE10A5E83F848A919
957E6C0101EC00465563F1BB028A0882D619CC2D923E9CC4B1C85BDCA479F188E52
9582A90133B45626B6623D039B471F9D9FC144E5228207DF1A8035BFC0301CD173A
9597A7B828D27CDAD2A0B4BCAF8C99C62310B04F72EBBBC458C785E5F23BE9D1459
9608773C9C0648E11D92B73D49BC7D587E4E1CE1C0E93FDB67B432C35A21253775F
961754EFA2148EC95CE33B6686BEA49224E818533235E8493364C6078513FCFB982
9624155EFAA41B59986DADBE962285C9E842AD3DF0DF9E9075D28E1B45BE27A2AFE
9632CF48B90ED76F75C4D40A48649177285FD19340660BB45564D70D179772CEB69
964D701FD356CF5A551CB8B36EA1E30DAECED401294B7715509417F08BF1CB7277E
965C73392AE92C0DEA0E8D08E0E4ECE92334ECED69508B32C565F1E54B227F57B9A
966BC49EFA298E8364979C63AAF76F1129836C32F04286271DFD85C5EB08BA45FB9
967097409B5491F3FD6A921E5385EE763B6F9867EF2BBA496AA64529CBBCC534AB9
968165C59BE8A43CB0BC47DDF1F6127A9A9DE5E69126B5B1C54B396C9EFA01BE602
9693A7165A39E8F80E58EE14E6AB9A8EAC5EEEED389ED027319E66974B710E887C3
9709EE4AF6AA8387E81CF302D8D
9710000000000000000000000000000000000000000000000000000000000000000
9720000000000000000000000000000000000000000000000000000000000000000
9730000000000000000000000000000000000000000000000000000000000000000
9740000000000000000000000000000000000000000000000000000000000000000
9750000000000000000000000000000000000000000000000000000000000000000
9760000000000000000000000000000000000000000000000000000000000000000
9770000000000000000000000000000000000000000000000000000000000000000
9780000000000000000000000000000000000000000000000000000000000000000
979cleartomark
980%%EndFont
981%%BeginFont: CMSY8
982%!PS-AdobeFont-1.1: CMSY8 1.0
983%%CreationDate: 1991 Aug 15 07:22:10
984% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
98511 dict begin
986/FontInfo 7 dict dup begin
987/version (1.0) readonly def
988/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
989/FullName (CMSY8) readonly def
990/FamilyName (Computer Modern) readonly def
991/Weight (Medium) readonly def
992/ItalicAngle -14.035 def
993/isFixedPitch false def
994end readonly def
995/FontName /CMSY8 def
996/PaintType 0 def
997/FontType 1 def
998/FontMatrix [0.001 0 0 0.001 0 0] readonly def
999/Encoding 256 array
10000 1 255 {1 index exch /.notdef put} for
1001dup 0 /.notdef put
1002readonly def
1003/FontBBox{-30 -955 1185 779}readonly def
1004/UniqueID 5000818 def
1005currentdict end
1006currentfile eexec
1007D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
10087D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
1009A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
1010E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
1011221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
10125B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
101380F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
10141477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
1015DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
10169C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
1017CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
1018F83C7D393392BCBC227771CDCB976E933025375FFCDD9E2FD073678A57A333F9
10196BDA68191ED103DB904FC6A75017A9939B1F14A711BC0B140F6C4E6C217EEADC
10202B649171318049FC272C351B1417B517204D5DBE34FA6D6B93E1E6086F880CF6
1021401E7F67B5A91AD4822EF4FFFBB79015651EAAF84024DFD7A74045CA18515E88
10227EE363BCB8BF9D97ED631D5C1CD97006AB3AC94DA76099C945488544974B0FE8
1023A3F15D97A0BE56338625A0D0CFE8566B8FB3A70AE8CEC759E7B52084939014AC
1024604115957B2FB7E97BAFEE38905AA81476D225B96F0379A68BF3270503F3B605
1025A77CCFC93318E4C44A1C17F011F4BB61E95E82A0FB39A886C2CABDCD59D5A7A4
102602936AD8819B50869E5B3080E67ACB7DF8FAA4DE4F95E8679063A8A442696EF4
1027E0F13F9F966B536A4BF33A36A9A43B025255B682726E76504D03A6724E62BAD6
102863F90049D953A490976D70C6B1E9B8EB268C452EE5DE8387D12C679EE0BD9CA7
1029FD250629BC87CB357480E70C655668AD8DB83DD15E4D4FD79FE1B857D70F2B36
1030D49659715E1985E9945F4C694D004220D03FF36AA87F37F403654BEFFF0730C4
1031FF9D5D6D172B12C72B56F4EF01F647E79C2C2FF41D8D8209CB316FE7CFF71F6E
10325200D1F92FD7928FB8E90B3B0D6C51F2757B30DB38C12874628ABF1159B244A8
10330957D756FE6AF818421A7D15AFBB29D24FDCB4BF305BF5C7D2AB5ECD83E3E1C0
10341C2AF2321C8B497AC074CBD0EC5879AC61E5F0549F39BF447A4B6A88870FAEF8
10353F4BD675FF5F0901E3B88DB5C6BD3F6BAAF9A842C2724D007121E63F33CE21D5
103637D3F50B33FBB92C371BCC73C7071D4EC40C8E0E5F
10370000000000000000000000000000000000000000000000000000000000000000
10380000000000000000000000000000000000000000000000000000000000000000
10390000000000000000000000000000000000000000000000000000000000000000
10400000000000000000000000000000000000000000000000000000000000000000
10410000000000000000000000000000000000000000000000000000000000000000
10420000000000000000000000000000000000000000000000000000000000000000
10430000000000000000000000000000000000000000000000000000000000000000
10440000000000000000000000000000000000000000000000000000000000000000
1045cleartomark
1046%%EndFont
1047%%BeginFont: CMR7
1048%!PS-AdobeFont-1.1: CMR7 1.0
1049%%CreationDate: 1991 Aug 20 16:39:21
1050% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
105111 dict begin
1052/FontInfo 7 dict dup begin
1053/version (1.0) readonly def
1054/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1055/FullName (CMR7) readonly def
1056/FamilyName (Computer Modern) readonly def
1057/Weight (Medium) readonly def
1058/ItalicAngle 0 def
1059/isFixedPitch false def
1060end readonly def
1061/FontName /CMR7 def
1062/PaintType 0 def
1063/FontType 1 def
1064/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1065/Encoding 256 array
10660 1 255 {1 index exch /.notdef put} for
1067dup 0 /.notdef put
1068readonly def
1069/FontBBox{-27 -250 1122 750}readonly def
1070/UniqueID 5000790 def
1071currentdict end
1072currentfile eexec
1073D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1074016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
10759098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1076D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1077469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
10782BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
1079E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
108047AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
10818882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
108278B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
10831060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
108401426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
1085C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
1086F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
10878E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
1088A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
1089455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
10909A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
1091EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
109252F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
1093563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
10940BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
10957ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
10960AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
10971E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4A78141CA32C
1098B3C74E1A0AE0520B950B826B0ABD81766035058ED1654D00FE541CAD1D246C0E
1099DE85FCD3C0BF7A70B913487B1A527EA823C00C39DB61FD6641B140FCED8580D8
1100046741D2494B4E7CA1F120CBB0A532BE049CABEB70A39018E8212F8178E93C98
1101B377AE2880FE39BA0EE29451857DB34964DA26ACA4CD23CE284ACE37D89571FF
1102CB67DE7AE379B74B32ECACC5F3DE0566CE9EE820E96F27653C75935851CD9360
1103A83C7EE8270383CB8A80715BC2B62B1F709235A5A73D99710D7665182D461095
1104B98C8A0FEA44F0F1959055D50BABC7880E7BA1CA4CD72531A240A622663A0A1F
1105DBE4FB907F97515CB1100282C9A0241F65F84EBAB1701FC105BD25F82807F4CB
11066A5EDB5CB156A7D55F64146818245C112DB0FEE9E0AC96B4B2AEB27F89FE0560
1107727D85FE6CFF5C457EB1EE5D7E2A09979684E2611BA57A1BC7BA4E37DC4BA761
1108557D986F9A8B495CB7212507AA79C297B0665CB5883F2332DF5CB088A92E24BD
11091EBADCAA515B567FAA9E15E7B8DA60C1BBEEF5A2E0D4C0C67EDAD822B5E8D81C
11106D29928726D36EF0A9238476FE54D4990E8D75FE0109C0336DD50F9021307213
1111F69C700D2291C546007CF3A5DF3BF5ABEEB640D3AEF585055A65EB2CA7AD7F11
111222182523EAA8FCF029C604212529C03F179566E6B731FFE2283D6402A350EAB9
11133C7FFF41383A9398B33C48FB2F9A8241D65425FC5E49DC9BB97521D91E44B3C8
1114B2EB1BA8D532BBF175486D1DDB914BCB92968D342B5C1FD6FC72DA462FF68992
1115464BF0E00D05C2AC3729E598991C6EE7354F0C400296356ABAB37A16FA504DC9
1116B6369F88BDB7061D5EEB761527E588B4A6C83169B517991789D664BB543A0E57
11176F2529BDC7838AFB93D53D5794E57B65A7DB00584492C046F72CE19E4D1B177D
11181D951362B2F7CE2B720B305D45B7FC74183C1DE46073D8E20FDF8027FBFCDF40
11195F0950F5AAC19AC8E8D9A57A271C0BB212822798DCD068B4F05DBAC2AF7BB25F
11205DFBFBFB5A51ED26ACB22541E1971002A5D97B5E148F8F087A3229C4
11210000000000000000000000000000000000000000000000000000000000000000
11220000000000000000000000000000000000000000000000000000000000000000
11230000000000000000000000000000000000000000000000000000000000000000
11240000000000000000000000000000000000000000000000000000000000000000
11250000000000000000000000000000000000000000000000000000000000000000
11260000000000000000000000000000000000000000000000000000000000000000
11270000000000000000000000000000000000000000000000000000000000000000
11280000000000000000000000000000000000000000000000000000000000000000
1129cleartomark
1130%%EndFont
1131%%BeginFont: CMTT8
1132%!PS-AdobeFont-1.1: CMTT8 1.0
1133%%CreationDate: 1991 Aug 20 16:46:05
1134% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
113511 dict begin
1136/FontInfo 7 dict dup begin
1137/version (1.0) readonly def
1138/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1139/FullName (CMTT8) readonly def
1140/FamilyName (Computer Modern) readonly def
1141/Weight (Medium) readonly def
1142/ItalicAngle 0 def
1143/isFixedPitch true def
1144end readonly def
1145/FontName /CMTT8 def
1146/PaintType 0 def
1147/FontType 1 def
1148/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1149/Encoding 256 array
11500 1 255 {1 index exch /.notdef put} for
1151dup 0 /.notdef put
1152readonly def
1153/FontBBox{-5 -232 545 699}readonly def
1154/UniqueID 5000830 def
1155currentdict end
1156currentfile eexec
1157D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1158016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
11599098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1160D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1161469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
11622BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
11633317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
1164ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
1165C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
1166F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
11674DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
116861FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
11696C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
1170B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
11716BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
1172C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
1173BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
117452BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
117548FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
1176351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
1177C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
11785839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
11791BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
11803BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
1181F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
11826501DA7E6D96E227068E993DBB0072F037CA411E429252586CA153360490EC5E
11832AA8727E9605FB75714E22C232C05DA77FE4B12630E21C745889A8ADC706FD27
1184831F980EAC18330D5D2E46563316C36CB25F50875F7848978142575A3D2784BD
1185C9C3A029D9600CA3E9D7A26A5DDB8567F8BF48DA2B08CBE7B76EA261CD180CF3
11863385CDAD915A90244C5660C6F9E32E6027D730681B88FC02E6C9B401E93072DD
11876E018048D22EE65F0A03018F444194BDEA833D8EAE56C2E5E03FBC7558684C32
1188C1353169FC072C0A217D2CD18C4FEF6F6EE2E1D687939244014B09DDD8CF6193
1189034D71F007EC89B97005E00A81721503C87B875A6BA33B4D6B2D65AE32141AD4
1190160293043FC5425EECEA875CE6F87E7C6F6200B9D52C0E285891C0FF88A0E361
1191E7A51574CEE3918B9CBC83B37DEE303859B4545A7F1EEA33C7A4459E6EF15953
1192A57D7DE99C7BD953B7DE84BC5C0A60A1768EFBA317849A4A8436F6364BE2F323
11934C99478E2B7C83BFF1AEB394C489CD87D7606181C61D15C85760761DC7F3A81F
1194AB9F63366378809931F10710C8A595966590AE5A85DFE5DF86D59853546C87D9
1195957992FF7C0D11FBA2193EAF02356A1D08F2C8A7AB2FE92001E0EE2AEC0ACD52
1196E52D961E65B79F613F0F9B51EB31F244087B484697C3D4DC28550B173BA7E4CD
11978D0B0FBE866090BEAF95403D5D03D90AEB48688A8BDDA8AA0E8AB89DD3EB27F0
119899622F21C77FFAA3A8A5A67DD6F16AFF35C2B96957216B0021F2D6415A0F5730
1199D179FACB55678F5976010A20EF3C0B4EF5CADEE4C4DDE59A3DD93A87881DAD14
12005E9438F095C9970B2DE2AA6CC85D26471A93BF7D9ABF0253FACFAEC66AC40563
120124CE6C4DEF61D3855985116CCDB53A70AA7B5F941DD21A2DE52FE42AD35E08CD
12020FDED28B65290948030C5F40DCFAC51F51E4AA828CDBC114060B7370DA18F7C9
120312378ED10D192F3BDD11375603EC90EE421E4781A41549555F35021C57813161
1204145511117E96E829386BF43423099250C8695DB2B891D68B4DB7D949F481CBBA
12051DDE08680F7FBC05F9F00FF10ABD21032FC71E7EE2EB4BD97F48842FBCB00E73
1206BA581330A21BEEF313BA3E5B8729459393B15B5FF7B63D985F6B0DDF3C90F3D0
120775691B2628BB9D93049A634FABC67137F727E13CA04481820112D953881ACBD7
12089A85175D2394FE355A4A6E485F3B1D69D8C06EE532CB2508D8F3F1E65C0369F5
1209F10B3D86E8333AA1228560C37614F8F924585323FF0AA91465B288F5BA39AB56
121027CB01ED906DF594DF3BDE610AE97315B6E0C0786691CA63CD16F32C883B5FB6
1211DAE4A1C028BF5D935A377C317C2AC0F738BF2F5001BB6347B1EE4E851B7D4264
121220EAA262FF69C8C01A4361C9CD7558F4D57E14C0F631D4576C0754191CEBAD26
12132598FA77F1B5F8C511953EAD4A92ECE452C5EC23065C812C7C355AA448F429D5
121499D4B28A65F539333EFBC3CADD3F0824F8D04368A12F309A71917FFD1CB30364
1215CF98DCC3BD50B0B30CB8E07348267B834EA740352F90312B24BBC22D30D28C0D
12162E571EB8C6B7BD316C311D84B168CB4E95C4AB2D6A1351EDD204696C2D728E73
12175352F0CF2504B6A32D07F207AB5207E465239EB916A77EB60ABA8D3BB42A207C
1218468068A6E9820747D8F4DA73D8352B70F1284545A66D4A5128B96F48AD7F24E4
12195978B267C2E65E0EA8BCE8A8CC397F50C5E0946842F0AFAC4D058D93D5125836
12200FF4BCCA05CB3C4AE932E73878A04D07D431B8940466E58690DB3824BA18AB19
12216A4154392C85B170BFB08A4E2B20A22971BB62BB54BC5476B70FB2A36D319917
122249A7138FCBD505B64FE319DB6B160B1C55450F7C3EB1AE1C1E1596B9FB4601B0
12238293C6D340C9A301F0B3A16BEA8EE0B593E1442E802AAC63BB90B7069D758E9D
1224183E3B753D8872EF6F584673E41838C891DA7B2931FCB41C2AABA22CDEC44AA5
122523646E86239A2A638EC8E0D7AF8A060F6932C10C7C933FE4C3B8FD2FE068CF15
1226B0A0D71564C70C420B3443D8038A2D42EAD34FA04B405970223376E59B8A6DEA
1227314520BFA5ED90353E0A8DF082478ABAD2AB826BF12EEF1918C1BADC6AA043E0
122890A8DA3A412917629A1CBBF535C2E0DC90929DE932CC286CEE95228B73031E77
12293B0B87E4BA3E539FC92A2730B03E6DF5F947C09B9E99400D5E081BA931FE79E2
1230306FE667D7C94545C0311F3D9939F315A586BDF6AE2FEDE5F32861DF838567F7
1231530FF07F5A3210373C39C6A63B03CDF708EAF7229ACF271D0C78E02550B0A51F
123268B9235465D181CAA18607B10F23597AF69510A74EEA27ACE4EB74EDFDE2DEF1
123393A0DC2E47252E4CEA86790164EF264EFF54519DA5AD87A12177B15776140E86
1234D5CE9F213FF3E3ADFD8CD77FAEFEDB903761EC61BBFB2D4E04DBCE5E2A25EB81
1235973F8158177C0DCA0426E27E048FF3726702B4ED43053B1ABBFF23DF91720A8F
12362233266ACB4850A51F94644F90BFBB9573DCA298C47E77D111489D8B8DA44DAF
12374B943A5373AC74CD66A0572A173F85B959A511D0C3EC4A2C339A0157255C8DF8
12387F6E8C1DCB677CC115006ABBF37E4DF57E67F1B6E2D061995F31DADF8618E596
1239FBE25F8E0E89EBDD6456E4CC212F0BBE2DEB6E67F64B599D810680DCB4F1AB73
124087016A9ACBCBE0F369DC9E5FFB1E10D6972BCCB70B708DFF31D680AC7440658A
124123A460F7AE49361DB66264638C63DFAAE5FD596B78D5B67366694FBD5E0F5D46
124223BE41CFBF87BB1516F1292F4C0CD729C65BA9CA1CDDC19E3B61B015024C21AF
1243751DE2EBC67F4C2C3141B0356D0143C7A980AF68FF61C30DB9CAA9D037D880A4
12441B456B6811B6FE5E452DBE16ABC3FECD679DFAB214951C5E77581BD007BCDD6B
12451E266FED7A65200B8AA2950E73A061775385A6E519A53BCEA85193EAB87D286F
1246751457CBA382189086E34FE5714F4899E38ECBD456F243D235B9E8472DD8F40D
124714D5B68BEDBA0E21DF657524EDAC18DE0B09CF7876E0408F69851B98717754A6
12484B2C1957EE4370920647A67C66B95DE345D6D5718C05132A86BC3256425493C4
1249C83E23014A7988E89F223B2A123041BFDB762BE64061DF119440A1256FC72AD4
12502F4F3F979042288CE008E1BDF144FDCCD0BB26F467BBA9E8B2ACE438E4EB7F2D
125198B82CA0E129CBE7E21453AD0EE151C4D9D09AE6B32E29CF82F64E2DE3C76827
1252099B86E2B64F1B4A2705A259301B221C6C5A1ADE04BE8A1F8022A0D3C1E4F601
125337AFB8D973ADE45BA343DEC97919298B12DAF45D41A36C886A1573071A30A0F8
12540FACAA8F25D8B3035EFC3C1C6A2BEF12A387368C790FC900FC9F74A61C7D4C3D
125523400F710573A56685325CA26B23461BF8D1123E16A9A2C107B9EE8DCD39E138
12560E10E36A6467BD5046B6BC967D981B598BFBE2AD90FDCBA7015609344924544A
125711E86E02FC9727B2770B732E60C21A7C60EAA31C14DF51BAF8A525041D15D1AB
1258685B03E7B74A1B97F2D77448F02B3BE93316C49C07B4EE31E7195043D05D7C10
125988C1847E54896977A09E3A1BAD475A3F812EC64FC99A1E86EB3CFC01391E5C7D
12608696BA362A7DA2172FB0EF99185C01741F97D66FF795B10E84385B6C9E996853
12615C72B3A226E18AB4EE7FAC1D4C5141C716BCA627E3305245A04D7EE11A7AC97F
126259862F5577EAC9D9976FA5F6C3514D296454AFFAB78EB568DB11DDCB1AC4BCDC
12630CB0CE0A02AE97380F9978FF55B10C9882279AD6314FBDC587FD9A7E6E443773
126472EB7C52A118F79EB4CE3FDB2F666D43227B3059999CA25DC06ACD657F4768D8
1265C82CE400837C08A2935F430987348A27CAD51AC8639CDBDC4C911ECE62CFE94F
12662A1F28F10EC80A3946566FB09F6B8731EEC4571522ABB2A90792339331F3FB1E
1267EF0BB328C57D30E5B1849B6937698E49ACA84FFF48F716EC81025091EEE4CD06
1268A3404843DF013CCDFE867C7CF2A29C1DFE96DFDC47B65E916070E6D019C0A62E
12693A1D5EA282B3702B1B20729F4791D90E6968342C440622EB34D774BEA2339FBE
1270F52C4655ADA9515B0A79A2C4E628E6539E57D2BEE0D7084F74BFC2B3C4B36F55
12717B9003ECFDAA58BC265C1E8ECDC78CD47038ACF5F0C37E7A076A8B16F9F712BF
1272E16240917C281C41EA3CE87CE4C1C976711D83374974D37A00FFA7B280D76FDF
127379D1BF415CE8686414CAEE79D2FDE623D40A789A98DC2A6B88255A67717EBE54
12748E0FABA8082EDC2AEAA66F509CDCB5E73BDA6E20CA603B83446213A967B77C99
12752D6A58FBBE0159CBF46E368A28956E45816173719983CD1B775C940CDC769E71
12763331680DEAC9FCE0C9FC2B1CFCBC6C6638E02F93B4F51219A6FD277024F8A61F
12771641A540CCDAF1CC25EF0429A0C9D403F6A31852249D3ACCCF14E4110A58399F
127812FF0DCB0B4FA1AAE66F52C9A6C6718FEFBA51292F2D48A762197034B06FE1C6
1279B784B4DC6AD9578BE38A33896B6C528208C33BB5482E1D2DE4217743A4DE46E4
12801C2F02BC25B4BD8F2037D362E9DC6F7878B77AB6D3DEDA9C7E1EDCFF9257C7EA
1281B42065CC8BC029FA1AE9570B17811DFCFA0E23A12B9C7A42444A02A8A2CFF5C4
12825013A984668C3BAA0B4186182054E8CE7EEB9B09DFE7A4F081BF16A57D26169B
1283EFA22E7BA38AAE8D01B1A894904AAE56B79DC018E63030B58849FFF875A675D8
1284A52F9606650450A452EC0C0D3B494506903DB65BF4BFC8BF6C8B79033737BD1C
12851915A4451B10CA2C5195458B4E6D193CB1AC7386730AEECD1184A69B07B418FF
1286B0E5620F8D2ADFF93CEA7F5DD4E71FC497FA6F64AB31D16BC00EC5F8A01FE192
12874E7EF5104EEB6D098D617268E79A4A2B9F4869EC952B4D6887FE9BDB61D26397
128869AB66F43996DFE771736F081719B6987C5DFA86B91F07CF1FADEA6390AA9B4D
128953093D427DA39F08096161E1742740639C332FCC40DF91A295A671782CF8C713
12900FA36B95A55406BD18FDCBE9D1AF9492CC5C3DB7DCCDACC1DA5D40F2CC2C365E
1291F99EDC21B3EDC564D282029AAF62A49B6BA5C6937DD1BB15E68BFA698549EDFF
1292BF0D4FB2645885BEC5B79E8475C43E5DABA6B60E72E31174054724F711FF3884
129336B27B2DB7677F04A704E7427B00FBF8880C0482E98893E23AE0ABB7CE35F2B0
12943662B322718BFFE777F395D551E13CDB3179756FD85B1F132E62C44A11340E7D
1295B8B274D22D0493F70E8D587356B84D4238439F2E816D589B04831E8F8CF691B5
129698DF446720310D929B1C8E29C51F2FD1C70AB8F8FF4AF21A05D3A520D44554DF
1297736DFD865EF1B73A0C06BC9E2ED21C9D1444D3F41CADC2A666045ABE51203C6E
1298BAE3CC3C3F6A482868951970747C45270070D2FF52C5C9B1953F845AEA12C02A
1299DB5AE7B1E9ECEEC8B533182B46B8ABA08D587806E88B87C1272877C3DDC6B14A
13002CDD31A1F0B8555F59C5CF6A73244B70F5022683A789F7E0BAE3457337B709AB
1301CA88BE9ECA5D0389275946CEE8BCA349889E64D8240FF5AF76EE020223AE5E25
130259A007E200CE8576C2A5646F0B1F35E4004D132A123CBCAB8522F2E0CDDF17F3
13034BAF1FCC0BA38648EEEBAA38C1A783033951C59F5D52F3262DFE4C6E9E6D8E16
1304F23015385A1C4E06ED360BD33579A6B1D1B119665B24294A69B4ACD82B5C801B
13055162AFDA181F01C80AE0148867FC419C7D536D3ADB336780838F34CAF311279A
1306E4FFBF6809892F0BB1D090C678C1254A9C10DDF87B3DAC22305907C982AEDA69
130732366E4F2AC672D65A2F71A842C3D6694640DD821BD4D9C4E96E49799322EDC5
13084FFCC0D50EE4FFF6F09C935542FFFB8D8B7EA6B647BAAF44BCABA88520DE7AAC
13092A4001008C5CD2A973129B418D800F9B8BC24675C800713195C4C2DD36DF73CF
131035D69E71B10D31C8DCD84A0E2FD96EE6CC79F08F4DE10E04B7F2E6145C2B7409
1311D52C6E3089D6DE31BA5062113DE1063F954A03B80540EF62D4F9F41A957A90A5
1312E2E64323671EAFF01D2A5B93928F6346C41B99B866B08AB6420396EDC8320DB1
1313ADA75B667AF93D1CCFA9EEFC5BC0C889ABEF879138A86EBB2D5620E8621B924C
1314F60AC2456F0FE9E6762330CE743DA37D2CD9EC859A61521D6BF6D3B3FBABE3C4
1315E7EFBAB21F0694697B87FFCF6089E585B8CD57F4D7C22A5E1A2AAEEFA4FD8623
1316333F90E77DCA57BFF970D593B3EDCD64B40EE3C27326661B4413BEB7714F152A
1317935427525E08E248193142B91CEEDB3B0209C70ED9FFF57971F524026EB4A194
13185622DCBA91A6BC854B3B3272769AFCC4D2B64B7D71619FC1F39F435835C0AA10
13190FF412ED58C0CCC0BB1888A883C56864912E693441902E66DB83C56956C2E7BC
1320F98621BBAD7F5117FEE6CF287A5BEEFE3F5959108A88B76365A5ED6039B6A798
1321408FCDE095A872463F33D417EDE584D34B721118D3C29D22E6AFA7BE5D141139
132246F3E6BBC0AF1CAB844822AF1AB941681481F4E763AE6A1F7CCE0CBFE337364B
13233174464E6C21DAD8F3BCFA5CFCDD2F5FBE00394C6BEB1157580707CCE8A81DD0
13249E3D37025413C47F77BFF4B275EB40FF05F3EAAF70AF8D4B9420AE2E1DD66A46
1325A44BA9C7E6991DAA7CFFB406AD98CBB1177775A1D6629FCBB6F60C3942199455
132670B3B93579338C424AD1642B9109502B232B42E50A58A7055068E43F56B9BB78
13275D387FEEE382A33A97A3A7C29DA4DAD8CE9F503FBB85893E7FCF18238A83525D
13281958B38A24817BDC440EDEB913BC3C61EB2022A71E7F1D8D683A36FC1D84C570
13292BCFC3A3218C9C6FA9657980BFD482DE8DC4867959CA93B46F2887B1329DB496
1330F69C4A43641ED3842145BB868A430E03EAFBE786B98355527882CCC8B4EF734E
1331BD0DAAD6CAA8B36A4405E5CA9FDB69FAB8C5D85480D81A83EF6038AA3FA8D687
1332017741F80B94CE67F86A1C4DE3E3C197320568238C7A7A1056520646A674C3B0
1333BBA0CAF9413FC95E938F46D8588A94FF77079DB1698082601DE0D71003C74392
133468D48A8BDAEECDCD2138BAA3CC43F83532F27F4B20AFD658109BC2A26D8B6C07
13355DF873C2114531AE6E98753DFED7214D634A453239990329F08B6F22C32D097F
133685FB45CBCC189ED8FFA918DF0EF2B81CE018B93374A5BEE3653336C68AFC21C5
133777BF87F75199D869B68DC72A22274D883D836974E0AE8A74FA8BA55EBB024688
13383EFFFE119F54B75E5BBBBB66B46B7E77227E680870DE9EA2BC4B7867AD7F3512
1339AA3DC6E37E89E420CF097F26C7CD717869DD8CA401DDE7375FFF18A35CADDBEF
1340DD027E352DD8B99893C37F1F84C5920EF3B3B2CC254EC794FCE1C8B154866B5E
1341E3ECA7870521BA860031931B924E082AF12DED9962E5E9E59C1FC08DF1258462
13426A5BD8BF23648D1131C67BAD67F17E5276E82EF31C44A5A9A5CD664EE85F9CA3
1343FFEB95982ED1FCC1EE9DBC11368EFFF6C53AE3AC805D78D3EE4BED7DBE490920
1344C5542128E68F9A6CF46D1693345C9822C77303397822C3B3F7CF5B7C39A9B606
1345C5C57B4723A3B9F15C4B4B1BBB4D7267EEE3098285772B1D4CF1E15277EAFA84
13463B54EDC3753F347AD7EFD7BD292539FAD422EA17240A8377D894475E6ED70094
13477648F9850E1F8F2BD5F7C3AB23BF64C692762DB1727E10CE0E6AE83295B91349
134828617E2F90124BD97F19951C55E895767AC141C421380AE9C311D41E7CFF7DEC
1349880263507BBF160AFC57F931995CA3CD773DFA34654899BF1FB5FACB5D39E67B
1350FCF44618A2F553ABB7707FCA8C118001D9A541D0FBAE34DD4978FD40362E03EA
1351F9C9AC0A6B23E3911F8E869E06271640C2E9A0F6F810E1E8E6F35099EB5D238E
135278CF6CDD08B6CA7895BEAA8A3F42546B7BBD19E99518E94D83CBC5AD2028487E
1353FC3E8037D954767EA744A08388A946BF6B48399BAC6552DD0D6D81C4639D4E4D
1354FB3AF3F09AEFE96C24D5A73B839AA47AF5C2B6A1C2ADA3B5299B59C4D39FC3E4
1355F537A1D9739BE21DDA12247DD50EC83A24B335BFBE60A307583DE9EDC6A4B41E
1356F95306F407890B11FF762DB110C81F1C40558E23FB49ABB698CD00AFE090F590
1357BD55F31056D5499B2C5D8B838421291EF18646A5791164ED41061DB6B44744C1
1358BCDFEE00A092033DEDB0CCFEFDCC484A08C7AE206821883BF5EC194FDD158C18
1359EC56D2891C5517D274303F10AACA8524C43E88108FB59626DAC8252A30AA3A63
1360CCDAF5D7F2BD922EDBE80B219706E22E6F4EA6C6ED2BDA5FDBA42C3C7E615F7E
136185A9CE4784CE32BCC4FF9F14EC3233E7728DEDFE0A65F36B43CD100DFC0D9257
1362F027C0F1D42B79ADCC90FDD53C50B092CCB89BC737A0212AA7C7B2F1E234D97B
13637CD5651919685521D8799FBC97CDB2E6718E4840A88CC6BA5CCC9F8BB4DC2B7F
136413EF9948947FF035E9DD4CC81994F22CC588A08E3DB3BF1808B1B8ACD5DEC501
1365DFEBF7B9F0C1E9098710F18BB28324A09730F819D2A1346962011E3325A06EC5
13660CDE3B13A2B2AFC1E88AD6AE109841216AE9C0E34BD4180D31D500C22A2A4D56
136715F720C054CBC6FC0CCB252010B9D1B30995A9DCB50F3F15FC4A2ED963279754
1368A51603672403C6143D57E5FC97CB977C9B561F50F73F2A17365A12FB5606D75C
1369F85679CE7A4CA183915EEB79008942DDEDF0CB51FD786C7F4EF8AD0DBE291D8B
1370235160320998FF12783922D32C29244763F9B7B5894BED6B5C7793AE22AC11B5
13711E5D1F3BCC402237B9506589E6B8DB0638E730958A8F9517D051FA07D98882E0
13724E4C3AA9E031515DE0F413B9ACF75685ED1D8CDFE44B21FF5ADB57FE6D109E63
1373F201F8FF8734B60FDA2275BEDC077308652AF9EE34674455D9C5FBEC15363D30
1374973F411544C35F6581D7F135BB3A2B2DE6B286DCBC29AD9B1F28A9B25934DC4C
13752DB7BBC6D6B4D1B4459370E29A15A7728061DE3070205FB5D6524521995DC28F
1376AA9514F37FA6D55DA2482E56C995E5063755123D151959DEC4E406C18ED4B052
1377A8992EF41208C4F6AC5539380EFD70240CB1F6A46B451690B32A91757EBEF5DB
13784A94DCC49AD7EF038E87BB6F3DAC2B4D2707BEE805BDDBE96D0249C55BD4C140
137977173BADFEF9F85BB4D0E2194BC65483EE34CAAC79530023369275768BB8846E
1380CDD21414F0FCA20913EDEF6160623E28B6CB22EBD429778E7AA44D20EE944DF0
1381D0047258E71110ED3A398DF018009C92D3B694337CB5FA99071B9B1DA40CF5DD
1382DD478551634ED561834104A01B7F6E49529237262080A001D121DACA8B5FE018
1383B8C3565E1292A66B341CB33B1B30BC9A8E6B9682B0598B4AAEB34F080D58E008
1384242D14D34AC61F925D0208EB26E47985FC45B1B870AD1AA618DBC877A4947F97
13850BC57C1A9A8816072B36222FB66F29B54BAE35BDE6809ED17CB6440DD4FA6F70
13867679B10C2BED86B468DB104141A1837665E512DC97F592550E85AF86BFFF3F99
1387AC12ACB75B2ED3336B1D17EEADDB4ABE03D0F1658A57EA4861F041346EE2CA40
1388A729730123EC61186295ABA4134F1DF5722DF186546D2906ECBC3430E7E3BD03
1389CA0D6159091024728783D68001DE7187171E28DB5907F084A94D2462E703EDE9
1390590583BBA61BEA4B1161BD4C41FE39BFC93B0FBCC5EC9FF4AFB5939F0CEEE032
1391FE5AEE66D56547CF94D88C2EA7BE5C78D4BF227A02AA229FEED9BC5DB1340B02
13921B9E8FB9729564C3EFAF35411B7B28941960E5DD45C9DB122AE3DE1076E5AA31
1393F7C6DEA00FC2E4E72059547CD89389E8C7C980829C896FBFC2DDF77EB3206BC3
1394F1E21347942EA591DC3FB59BC8E2BBC4C3C657305F30A2D18DF93CFC0F0F0216
13954F19A938BCF2A4BB8FD1F1B965F22C9729E94D040585936C020B24289066E742
1396D1DD955A35056402B40B3EEAB83A29F47EF3B229EB5EC517177862FC86EF08C8
1397BC4D9FD57A0D8FECE71A4439DB8954D836071130964105DA82607FBF2C9A1810
13983BB2D7EBA820809E677FC5952AADECADE3AF4AA90BC15F40BC86F071875E0C2B
13990BE47794B817AE5FEADE9E4092425312A71087A7CAFD886CD39069BE426671B7
1400CE8E4FC97F7C16A702C6F8FB677483D7299BB4BB06EFC04B7A32DC93075B79F1
1401BDF4470621FF49D372AB3C5213E5A070E27BFAF7169FB18582BB796671D539D7
1402CA7F0E072B5A394FC2B6587187E1349F69848D5DCF048E71531B13F73895CD7B
14037D81B338AD6D445C27EB4C4D76C0B5E64A07D03BD7D8CD3A3DB491C2794CB031
1404E56618C5E0D65F562ED857B81FB384228FF762CD2718C723B7B261750E25D0D0
1405D26060723382911F867F46AE73AD67C943C44196997F574FB36D1FBA79E61A32
1406D53145364DAB0E0C6922CB21CC3B03418747546E48397A7DBCE9AD89193709A6
1407B85AC7F6167D7DF1A6B72D876C4AFF990CFB68B83B0C4C494C7F8CBC60B1E7A6
14087B3695A2CC0FA011FADD2527FF4D47726782C19CDBBE2D55BADAE4350B053B8A
14091EF6B385ED4A0A00E1D0DE7E4F74BDE3497F13D80A6C30E833DC6FCB3E597454
141068EFAE3D397D4C8817EB082DCE98A0F4BBE0F39C79F22021C84270AACE7E2E12
1411617F4FD655B9F5BBA5D4F8AC935F6E2F5007DEC58A1929188A9D5FE5F4C4AB03
1412662ECD86676D7CCB50C0546426C8B92864019A2DBCD4247BFB904D8559F2A9D2
14130993D260CF293B40550AC6DB3A93EEEFDDF7D8EF947E1B487104E0D0E4365BC3
141462FCE7CCF52930C429532AA2E3FE62AAE9425A97EFC23EFAF6DA75C98CDDFB18
1415175006EFFDC2A6ADC9B8A8B1D343FCA0155D476E5AA2362F404B00F493D97DCB
14163AB5CC9ED868D00939AA1B55E0824C09A1B7D8B38B98ABD0966E73B5019504EE
14177C3A6EB0F094A3760C96658CACDAC422442B04957FE7A61544A5F99C6F7BC695
14184658AC5403D3395CEDAE6ABADCE9F4EC6311FD92B340952DCC23AA72B514E163
14192E87B7F5588F4EC9DC915BC3E6BD8994BD380F0ED79C4E47DC0DD89828D65709
142029F085518387CF2EAC62D2505DF0CB47D307E1DE4F0A147979C6D5B93327B7DA
14214BA34DD209946E8022C11A4E0767FD809A2F628C73B0A79201C40281BE044CDD
14225F9130EDAD2CB86B1A324B824C8A1A60D34FD32558089C4FC8E70AAF7AAEAD06
142348C7F711B33C7A421C1B4C0FDA2392ACF4C850315283E86B0DCCE689AC9AD3B5
142491E91329B5CC58DC2CB4466D669E956488262A12DEAD838577743D7867030F25
1425BD5B2B0A04C9DDB6C904E40AAA82B54542321711ED1D80348797F35A093D3D77
14263560B459F177D388F4855C82C277179834A94D5B9F4C974DFDF3929A1BA0B301
1427CB3558D6BA4BE0B1EFFDC2101352FDAEEAC17D60BBDADE15FC093161B872F98D
142871BCE512AE88BF012B3F96E02EED08A7CE8802D409A07C27F1F3AB40589CDEAC
142999642D6C6133BFD2F6B1B86A80CBA0CC62347644D25BA14C9E24A53DA2DCCD1E
14308B0EABC4B0500D18AAAF3D634D5D1E3D23775FC02C91B1D5C600986E72185A65
1431F6C926A5E48E4EDBB4862D9CEA4F491C0FE2DE07B9055975A6FAF60B692D5310
1432B6EFE781BF90EED228709404DAF22172D7CA8B050EC477B6ABDE89E6A53CA72C
14335B6FE5A099DC209AF9DE1318FC114ED28E871B705DA184114CDEC65EF79D489E
1434347718519EBEB40CE19D3CAA1288413FFF08D1D6B42A8B24E5B00E259BF2EF56
1435600EC9C721981559BD0A443F1EDB12DD99401AC2C5F84593FDBBB1C1DD654A84
1436562D8ECED1A1E456D56D47D60DE039639ADD3FB1A342F4C3A5071ACC35CBC60E
1437F6F10ED429606609B68BD3B3D19F02F652B2DA1EB2884C4246BFC49108D3B95B
143862102EE49D5FB31929C0DF59F98F5F36F07C5C7E9D0244991D2A1BF8ADBF158D
14399D21B928B484102F7882D8A0DD1B66B9C0DF4C95A6ACDDB70619FE403AF8AB12
144056334E17E1E4CDA7E4E006CD042D9FC9F83694B83D45C9C34CC0B945E13ECBBB
14411C74BD8E12558E49A5875A64012B7B5F9C2EB2D50B51C21B9645BE62CF32FA34
144272E85AC778705A888355E9DF59DE3CA815264513E20B9F211D5CFF80C39A3DBB
1443D4602AA4C81461514E74AEBE92E88B8DF861465ADB524AEC40C630CD7DCE9A54
144422FF67D94F13612679717BD4012C52A614BFC5E7D6D067A478BD19B6B25BA513
14452589E8B402A4DF511A3239B1E657FD93B3918F05D6AEDE1A27B640F4CF54E698
1446820368D069F5376EB9E9486288FEF0F64683096850A6305B648A527E10BAEB5C
1447D1660D266731950CC130D634AED2CC2031CF18A9E29E1D1AE56F6A449EC3C4C5
144854EB55F42637D974407202438467C45808958670D5A597883591F81F69B9AAE7
1449F95ABD2C94F0F233ECFDEB7CB4C876E2B0279F07786686E1D55652011495C4FF
14505C09DD11E6AC3419E53E778FC951592E6871964CF182963CD3E2E2ED54B0387D
1451A65CBF4C3786B9FFB4FC9BE817BA5ADF7C56904E49D76C050F739D8269A0F367
1452C07D29ECE96EE7EC9409A5F815F8BB27CD8ABA52DD41D8406271C2BA96F9AD78
1453039042C71ECC942D7898AF8DFEECEF2B7D93230FF418B589EABE2CA606B24263
1454AF595EA9A092FA271102B6B4A5C2A67E5B06CE6691D36B49A07F1616C79DC6D6
1455E86D6734E7C3C50F5D879606627A8F22D92661567C0EF73A1A67657C09493699
145649C7A748B0DE88E6C99528AC4D6BAC414EB025B58CBE163B38308BAC4E08B9C2
1457BE464858A6F6450954DA2E5782B78BCC63A28795E07D2C60C10806E21B90B2CD
1458CFB625AA73BF95A30AB31EE4172EE9976B307C002BE02BF9955F0193507E5071
1459316AD5A467DEAE1A1AEF879C7DAC1B5205EC133DDEB5DD6A9E41D9BA6FE56C88
1460CC865D56E2F305979AEB7FCDA4A3C98EA941B09A0AABF4AE5EADC62F1B0B92FF
14610D856E7EB38F355A30B38F39872813261E71A3D1338A8A5BBCE26B874993AA09
1462DEB4FF1D4C3F43FCB1972F703BB7140C348A64FB02B5E29A07CDE55883E4F2C5
1463702D5D9FD05EACBB3411584715ADAFC54DC38155A17FE2C4D471EBEF717482D2
146410DF613440926BE3DCC427CB106727B12B04464E3A50A49575321F84F64B708E
146586FCFA5921A52B2D459240AD0DB45300715069CFA36E6FB4BA47CCE6856E8B93
1466D6A2A43BCFD748872304AC3BE3D905A54A47D303CC1A087B03A33C0763010F56
1467AB46520CEDF84F146EE5FB86BE086A472D5C0684FE9A1A633DCFACB6E79CD0C3
14680B1A3B29611306F024F34AFAEBBAD8C18631A68C49FAD20E9DFEE55D14EC95E5
1469B5B4A5089A2ED0EF848F88B421857631FA651DD99D87706F4F0FF196ABAC6BC8
14708F7CF1268BE748CAD300D6298BD43283C487D0D6E340E5ADA956498D28AB457B
147146F2DF314922B58CBFDA49200F47676319039A68899BE5D2C78EA7A507640402
1472418C8A6F8ABD38723F19E856774316EE90E92C3AF1677D083398D640DD20AE37
1473C88DF64010339DB844B5BD2A61B298BBE52B0B2251F16668F8E94D6A95DB778F
14749B4BF7654EA0CA2A418893E8CA6B6BBEE0BBB1347D3F3B56577C5AB1E76AB97A
1475E48BC675922974A24E0A75122F5ED8CB912B883A949E9535D41AB4426AEAFAA7
14764CDB413079D7D5C72D9433B8DF1C046E1157849FF78D2C1FD45BC4B4E2927154
1477D168E4E33323D2703300F7991165B48F1F95B419B0DC01764F0BE63D861E0E77
1478D339CE777BD531C527DDF660AE1AB5E7DD90C430F66E8584BF40D5DF54AF911B
1479B39EAFB983AA0D038D227B66021DD587EB51FE1DB18858BC362C438F51774198
148010F1EE25B8896097AC44B0E56AB1B341EC95AB570BE4700DCFD82DEA4664BCBA
148146E0A9E7C7C99C397E97EA27A5AAE8F6260158235A148C849D9992563F401019
14826460B3526AED81B45B9932700C0D1270689EFB94A5E47A6AA094D9F7F2FC581B
1483D164CBCBC08CE9A04DB525224D2731265E6E54E278D2BA3E91C3AE6DE2BECC5C
14848FBF58627D29CC1662704DC08735F36038E54D783CED5E60DC2CC7D731CCE092
1485DED3F30E3B363E588E714F8A3FD537EB4C95B00FED97F9265114181ECFB39A00
14868E060643C6D238C0F8806D9C8810A545620F7AFB5CF3B504CAA7EC13B13BA1EB
148704F754834D150B942FEC94DD8A5A6E3AC6ED86E1681BA52E9D910D68E31C0FE9
14886E28DBC93BB5A6111E524D04DDC2B49B8DB82883028CEE5EA40C65CC5ED0D886
14891AFB444D05B58E67408321EBE3D4D17905459D71712F81C6BD43F46D11EF6AF9
14905046036ECA41AC72338AEFB1B6F0EF3CBCF089655C12F564451C605B2DBC0E08
1491F3235BB3DEC9322BD75A9928A53DA829647DDB8F2795D9CCD76E764EAA2202F6
149201D1C65FF46D5C8B1044B6860D22BE8B98B56B56F3B54EE8A9C2169DD2DDC73F
149394EF440A000DCE60581E409C49165D676E6A32CF9D1B23299991493DBA38614F
149476B6A5703FC9C27ED286B5897DD5539FFA1979915D1A768A6D0C40EEA679C048
1495D9D870879EE9C46E1575E815E3842D1F1150ECED41F60A30BCC20D53E8629799
149604B60E21FEA41F1D3084E7A26FE0ABC0555C5AD4A92F2B3F691D60D0424BC7B6
149713CF40D7C615FB767A9DA0AC4582AE0C1B67D62E20F3C698D66D7BAC2592E9A7
1498F38F683804AA0052527C0D3889E21D6E9DFD8600A3257F80DCCE0D128CE442F7
14990CF351B360DB45B7D04CCEB3457E444E0C54FC5D337531E4131866D6836F33EF
1500066937C7706617311CE8E1BC54D3195B4CE7B1EDAF7EF57DCE8BF17FEC2F3157
1501BCC8A5751EA89F5F9578299504D344C1A5951083609B60C8C83FA67F5F44154D
1502862DBECFF7016083BDBAA480CFD5C63ABFADB534A7CC8691C40DAB5EDF4331A5
1503A3F055929456774257BF44BC31C383E43C3C8E37E18A4E7C499F72FB29A63A23
15049662649680CD9009B1CF9D5A38322832AC98BCBA05C4351007CB2549B8008576
15054B496AC8487B43F3702D58834F0A0477340C9FAC8C4FF9D7D4C20CBCBFD915F5
1506F55617D851317330636B302D38140E465F3782F45561C18875BCB2FDA48CA6EA
150771B88FA9A87918A343E1F2E0E759884C1DF5FF3E7A51069FC427D7DCB3CB162C
15082AE28D41F5CE96FCFA37A5E5750CB88FEE027F97E978EAB9326C64B87FF19626
15099EA9B6A7316CF6FAB3A49AEA2433FFBDC202F6564953AD3546101E295C2CBDFE
1510A758DFD9912E8096C22C0308AD6705F7807F151628CA9D66FD36B48D49860F53
1511064096525B0028D3D6279306872A42BCEE965FD73F9F41FAD18ACC569BA23F3A
1512F72CCF9A09A69F49A1AD5EE5A8B62360E363E0B1113E008B16D94AAD5551DD1D
1513E689CD903DB992FE50775033CC10A091FCEB9692D875F7DC7BD179BA5E8FC955
1514ED7F6B3A08453B03F75D825C5815815915EA89276251D1D03787EE0ADD5B7144
15154076D29801085C7B128C5491C7A2DDEAC62B54330DEC660403FDB73A8B267094
1516DA5BCC57E428FF59EA99900E59A4296C676CBCD11C3EDBCE68077224D7715999
151736F3D3FC2240BC2CB58A5EB06C5BA59EBF9823AF6FCDBDE93CE2E1A5A16B02D6
1518F5ECB676FFE824061B02FBA31FE7FB7B9E9E065B9AC4CB23C96DD0764A6C568A
1519D858FE44B23F04284F9009BB75751D98BFE5147A1F7184FF8D36AA1CA978D694
1520F72DBA10074ED7A82B322387A91E1A4F0070B8426074A584ACC462D284860457
1521C9BF4790C5FA7941183F4D9C6D0C7017F3C288A8E2DD5367499B1DA0D2A88925
15223F2A2E5AA0FF572681B1C92E2589DA97AA2FB527285ED3633C6F289C67B0390D
152350B884BD5759E7EA412F75592791848B2D9F3CD06497440B1093EC93095A7C86
15246AB1E8752CAD96C0076B0F9EB4CE2220B630EED701D1A3796A4BD3FF35293934
1525A69CBB8A74CF22836CE5200DC14E5295D6DA56A3AA44A004357F575E5547ACED
1526A1982AE3CE7EB7A59840DF825F970A11E563AAF3974F547F806AFDFC6F0F4BAD
152788F56A4F8510E0AE842B9BF551230FAE47803AC5A959DB6B62F291C6A040584E
15282C4A02D41EC7DDE254F21D6091D62D8598B6697744966BFF5E86CCE46D9AF24B
15296C9AA017F944D42AA02F6775CAC2671BF2D4EFAFD3E529EFE3A5595F01D66408
15309513C728725B3CF6211808898E4C28A3F643B6E537D883A738CFC13B97FB3D23
15319AAD448F38C6267D36C0FA594AB6FBB577ADFDA1722A9E0B598432C8B4E2AFF0
153238DEE9F21CB910657C1AD8BA2C821767C0158D7AE3DEEC883372DEAC9CE7A2DD
1533C440B233FE7093E2B03E702F57A082F438EDACE37F29FE29849958C5079DEABD
15347954EEA31EC67B0CAF068FF58C731AE5A77607D6FE13472C5A70C111177C1E99
15352657B20BB0D01C7C638A1E588CFAE59CB3171B685522FCFBD4330C941079C9C3
1536AB5D5FACCC98BF9691DA89AF9691D20154B1805AED841931700A3F7F25924981
1537F6521B0C6E55C98AD91ADEB1174786A6412671C602DFBD482462AE2F1DFCFE28
15387AD206FD98F5238665DFA789A4EDCC298C64B4E72C0C1B457BD64B4479413356
15392DB85E29E862C2AD57F150E1CA943D85D71E82219E735C7D8EBACFEF4DA9C725
1540EF436AEC25D36C9E9D32C67A062605E963BD036886CD9688F7EFE6434A29A2C7
1541730F1C610F3DBD29A4A71EBC3D179E3BC1F48657E2DD6800E5B1EA7508A8D439
154211C3CB84980DCBFC33875E20784CA711B061AB5957CA59B43AE4E4A44B361349
1543823D45AA26B51ADE783ABF1C32E49DACEC7DEDBDCF2648ACD5A0DF02BF7256F5
1544FA2F054B79A548996442DF9205F4F3F2C27607D11B5EB4080B3FC1BBAAF8CFE7
15455FBB35B87B540546203FBD90341CF38AEC32B6BB46ABA368EA42C69BC9834A8D
1546E915C163692174A5D51136308383FA693024DBE6552DC525BAD6CFBF9B61D2B3
154761FBB94AF1507EC144591C621B8DAD5452BD53B0BFEF03F6B9D53736FDA5689B
1548A9FF78255396DF20AEE452D5D3D2978B2D681BC60506ED10145ABE6B719CA44B
15496535DF1E593498F8C6742B84BE204883ED8D8D624D52F0FDC9C8AFE1B7808519
15501E056CB591B6A2DFC4AA44604AFC512151FB0D3A3187FE57F409F04092035DC6
15511164C06205083E54B6036D9AAB673FEE23A3688591DA15FF698B25C5B8890540
155217869CDEC5D3B4F12E83F75C164F26FB41A0919A412A447E6DBED19843A0581D
1553B73610113FD75D28EAA34F2A47D99C13EBCACF96DBDB867D83EEB53488E3478A
155463A2EC583536A3FB63CB406078595F220F5BF53956116F9FDB05A226FE01EE4D
1555C28A48A250CED2AFE801BE10029013C9685D60F6F74628A5F5961E4708EBF3F7
15561EB5DF7837356E20C075DFBD15D9891A1A9934A585C0F881D104BA927A70B832
15575CD9EDC7E9CDADAC7BBC4DB1ABAF6547C3BC08C6AC73CA345AB18A9651151CF7
15584752C8E74157D3A3575D4D81FB937D0061192D1643741CEF3E218272FCDA17BA
15592B9FB73A7A008F91248F5C57C91266CFD1E7119ED0BBB80D009330DC501CD8FF
1560423AC58BC8E1AD0813D11354BCE3DD1F511115C9F571E25A58E1A42D4B2F5C6B
1561F39BBD15B1CCAB68D7C8E75634C69BAC05D3DA6A2D54976CC3BDC370F3274326
156298CB0EF0B999032718381A4BA16220F8088E87F3B0282C8011BF2A8BE5B0624F
156310C83F79C1623AB3D1D62F1A030DBDD3B400D64BD7D1EE88695B5EA257094B71
156438806AE74E3CBB7615710E2D75428930EAB82417B11008D3278C035152B527B4
156544DFDA85769635DB0650CFFFC6650ACF0E7873A53464C5BD41889A2A89F3ED47
15660C4DEB5AE511FE61870B9EAC40952E531FB6216E8D6CAC1A480774C0EDBDE9C0
1567B7C880E28F9FC77F853183B4444EB15880E8EE0AA9BFC908CD9CAF6E16921BB5
15688675F3B3A4FCE2B60EA3A11CEAE4D0512F383998001BFDB48EEC41A6767B55B5
15692786A2D2A35A1CE437A29B023AE6301D85B5773A31348976AD970556AA208158
1570970360327DB5F65E210A9D76525E44FE9051E71C0262B84F2C54E0EF4F280FA7
157169511C576842AFE25D4FDD651E286A94728CB56DE3C79FEB6B4727A11502F876
1572FAABD8DDB97AC18F3F19B272C4541D1807DED62466389F92AFAFAB9FED162630
15736104796F4B2C9F26BF46F94100BF569BD3755C35CDC08A1C5F03A4324EBA28DA
1574B2A41FB6562BBB85B6444B98C90DBAD78D79FF7293280894AD326FC95E28B435
1575BB74C1B7DC963D201F2CC9B5C224023D77C0B2C69A497C5314DC418B6519E25A
1576197D85EF1430FEB760478E29AF6D9530817F777384D3EA17FD4AC22AB1F81B5A
157719C853EDCDE39174062A4A6D0DD5A0206D6C577D148E103EB5BC30890110367D
1578537186A9E8D70AFD70
15790000000000000000000000000000000000000000000000000000000000000000
15800000000000000000000000000000000000000000000000000000000000000000
15810000000000000000000000000000000000000000000000000000000000000000
15820000000000000000000000000000000000000000000000000000000000000000
15830000000000000000000000000000000000000000000000000000000000000000
15840000000000000000000000000000000000000000000000000000000000000000
15850000000000000000000000000000000000000000000000000000000000000000
15860000000000000000000000000000000000000000000000000000000000000000
1587cleartomark
1588%%EndFont
1589%%BeginFont: CMBX10
1590%!PS-AdobeFont-1.1: CMBX10 1.00B
1591%%CreationDate: 1992 Feb 19 19:54:06
1592% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
159311 dict begin
1594/FontInfo 7 dict dup begin
1595/version (1.00B) readonly def
1596/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1597/FullName (CMBX10) readonly def
1598/FamilyName (Computer Modern) readonly def
1599/Weight (Bold) readonly def
1600/ItalicAngle 0 def
1601/isFixedPitch false def
1602end readonly def
1603/FontName /CMBX10 def
1604/PaintType 0 def
1605/FontType 1 def
1606/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1607/Encoding 256 array
16080 1 255 {1 index exch /.notdef put} for
1609dup 0 /.notdef put
1610readonly def
1611/FontBBox{-301 -250 1164 946}readonly def
1612/UniqueID 5000768 def
1613currentdict end
1614currentfile eexec
1615D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1616016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
16179098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1618D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1619469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
16202BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
16217DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
162277B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
16232DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
1624FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
1625DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
16267AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
16279F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
1628CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
16296877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
1630E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
16318903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
16323F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
1633EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
16340E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
16354046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
16361805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
1637757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
16380FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
16396D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
1640E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
16416E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
1642DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
164312D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
164446F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
1645F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
1646B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
1647C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
164894B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759FD67200DFF251DB7C95C09E
164989EA1F66EADC3439C7234E50DEE5F62AD67768C3A5127E31DC8BEACE15EB5666
1650437B94525E34FA2D35B51730CB8CC9D763F1A56F65B8FC21FEC40F4059C2EA3D
1651EE94D79A8E322FA0DAEAE3B82721F771106F21B7497099A15DADD8CDAF70AB71
16527FC1A9CE6AA0E05ACF6E210DE1CA0418BA7012183FD6BEA93DD38776C68CEF54
165375145C4C0AAFD684964295D68EF8E7CE0AAF272EAB35BE26334C6A2F63D89425
1654F6DC7F49F63A53152DA883E46105D8F21F7368F9CA04B7F4BFB67ED9FD13987E
1655816BC3741FAE1D8630479927F6636F084ACE881372BF695E55747B9354674443
1656AC79EF734025EB13E3336B807B6D75D86A801BCF860EF78BFE0C76227875AD31
165749638E7070152E16CFF32B2DE735F7BD089186F1FF68A2CC558B26C7D3416AD6
16580FD3E8929011C8635279CB1D64F3C8FECAF89DF0469DD890E8CD6EF325DCAE4E
16598804DAADC647BA4F6A96E27D5F1716A800104777374DFB8AFEFA19F230BE8C1E
16602B1DA5B9F504BED3487D1FC3E2A11BBD869AD3E2131253789C00651A03320D8C
1661F3B2844347AC9860ABA40A83030FB4F567761548607BB01FBE2086AC1BEF4F61
166248AA7B421BFEFE6EBCBA9042FA4AD9530EE7A9A7E11D9BD9AE3FB217F2A9B5D5
16631FA941494B11A4CDE8973C1CED5062F6CB666FD32E4CEC15CA9DE1721D4E6E10
1664D78756DFCACD3A41E50C6BAE9A9A5F044BA599F1EDFAE61CFB8B7B0DF5BCCE17
16654D88512A8506E97204457F2D12533BAE1B552F23340D4AD7AF3029FB6C6583B2
166667A9B299882EBEDE6696B97D7E89B0C397D61D4417079D426B29246910F4DE84
16677C5D48C72126F80CB5B135D6D2CC719968C1924EA4BD6E305B7FCB06520983CC
16686741DE803E5B6EB1E7F5517A8600491A4957645949701EBFEB42716542EABF2C
166916B955D4A1EB29BAD152EC888572C3D4E2F02309DC60E94272D2F2EBCFE32969
16705180EDCE322BDD38E3B34D24819E03ED61C913A9FAFE2DA1822A660C246B1132
1671D2C18F76CC413D4AD1BB8F7A6719FDC7C7E54307495BC0E671CC6F4257C82574
16725FFC9C7EACE612207FC80AD04F0CE33A9308DD615A4307677F9ADF6B98D66A77
16732510BB8B5C985DA4658F7637BB4C7643AC9CC424E2571EE4CF5C15C7EDD306DA
1674C41DED0B1339553A5F8265DBD9DA06374B37D77A9C9E4AEBCB4ACA8B909E9C48
167570C16A5A042CBC8825CF675BF574B16254541B69E203D5E3CE29C339C907D11B
167628F9AD8DF700C945FF11B0C99172FE6B25D131526C31E19D5637FF4249440651
167786C1D4C8A7B60CCA184FAA3E27F7244698A99CCF94E9135769C726307F940449
167848239486ED7BA4B8DCAF87EB1D2A8D1753E7EFA9468924DC0BEEA33484830DF0
16792CC726EB379B5668550B61B2D401C5D1012B16B9E2BF0A336073544F65124481
1680F23611E8675B40FB28F393A1A8DFFDC13AD08A67AF396D454E3CCE141925D9A7
16819CCCA2D829E4DB2467F2F8CA1BE3FDC5E13120BFCDD7F0DDCA66E65FA69CC475
1682866C8A62DBD00D09D867D0040BD804A1D7F17F3B8AAAB21FD48B11BD96C13774
16830BCB85CBA1E12A459B221ABEA106D74BC0EAED03ACBC0120CD47294D9D0F3B96
1684CB570779E46519DA8854697AB48089B56025D3787243666855333F0AF2625DAC
1685502DEDFD5529924E50B1740A93E8B58C54DE09BEDA69B4FDA8A37AA6E32F1ED9
1686B323763F9DA9A59BD9F179A567BAD612B8634FB8463FFB073184294038307E22
1687BD0D05B160331B848E7D7243DC7EFAF26F8E6518855F679372B94938E90E7D40
16889A45E12A3203ED0047D4E2CBAF8D5AF2191EAE42CCF2E2939022FAA57FA90CEE
16891FAE7BE6E23C4E32D372908E149B2096D480B82C143A26C604AF950FFACF596E
16903CBD6C5C86EDE699622F50FF70D278E11741D18CBC6EC804F7803FA00BB693CE
16912CBA9437C5041EE62CDDA5B5E4DA501C6841614AB271633E748AEEF52AB40E2E
1692245080043BF749542EDA7FF6B74C41FA8B61640E4DBA1C44226785F2E3DDC7D3
1693B6B33B44E511C0152B679FADE241F0857C3CFDA8FF5E0FA4A7BA26A1A428387E
16941CE83E956CD8AC28EE4F4A818B2F64C72FC65D4D5054781B6177E54C75AE1396
1695505E5562B7F6CABC9515CAC5670A69AB00668ED859DFDB673378080BB5539A18
16968D347ED0D06DF019859CED07566B5B51376C5AF5876D3232DE8DADE7909B13CC
16978086DAA5B7AC78759D0998A0AC451CB7B9491A681A58D4FC3CD45555B20EB170
169831466D6B09ED870E735606D2E91201F85809A24027035B2BC5761B71FDF655B2
169963FA45D0633E9A8D6890B6C4CE4A5E237CB48B72A2A2BD8D2176408BD8F6B2E5
1700A39668D92EF921178190DB989A5C6E3FE318A56D799CC42B6B58DCF3FE6E8ABC
17017662CAC717B368F886D44F0ACACCC4AB8E8C24D35869D9BAA91C64917796D2CF
1702DEB05E44A43074F1A53ABDE558457687B2D9FFF1AD7A33E64625B35E994FC613
17035F66CE83ECFE45777AFDF7C9DE3284C06670B8BE2C7CA2DC73244378FA73CDFB
170402C7DA8AE1E57FD5FB6F41707D4D90C2A4E3D0E77D78867976FC53589FE4D0B7
1705DD6AC71C010C15B3A8FEC1E5673EA53D928D9A90040FF6E3C30BABAC5CF8BBAC
17065BBF3814E9709FF2C8B59C7C732B0C7BA597E00E61232B4B433A74646203F260
1707CF694D67E878159FB571D766C398AC5755082BBA1B2A5E71546FCC94999E4262
1708F18BE1A41E919FA7A53013621A6399A39C74181FEE13D4003468C7A343BDD085
1709FFCF2E1EFEC20119FD923E97CE26A66780BD8BF09D66DAD588ED91DC369B0863
1710C22BB347374EF5FD616A70CA07C91E5F48849D09F4823C8A02A6D80E4DA5DCEB
171133D190D72702A78FBF7328A7D5ECC822D907B7908CA44BAB4A959F21ACD2A1C4
17126C6069DEE6B2F208628DF65FC40A05ECD8956505D43F883E7992A2B7621551FD
171334C580D14136445DB52C9843BBF00F92537A65704B0DD575B1BA7863F971F2EE
1714479A9657AAE6627A321309A4A12DEAFA0C0B2EF5EE8C0F75ECACDD58E610938A
17155907433061E78FC48581B87AFDA9226ED79555ADF9F0443D60996A1084B0B4B4
1716C9E01EC092279E300CED0D34EDFD946C5660ED85CC0512F8A8982A7DF771E24A
1717D57B07A67D2745521178BE4C259EB3DEE7D6F820C40A2D939A4A484559207C1E
17180719083EACBA076020776AF7C45DA52CB7173B54237942CC063E5491B8527185
171915E7B30ECAAA49124B9915D9AFEDDB98513CC30EFC161C9D1F2371D8E0BAAAD7
172044AD4BA2CE425A0B8ADDE7A5056645F9FF0F305E43E8CCB0869E03F0F510FC75
1721EDA9CA416F5E14E6FF577CEA44706C2BDBCE79E7C692DDB097BD6A852A33925C
17228A30E83FC93CA7FF3D60062F06DCBDC9AB390622768B7F2370D4FBCAD40CFC1F
1723061899B30F760D58E9787EA232AF7305F2E178BB101FE1C172D5011378B93437
1724D19B7F3505A8A758C9B0C2E395EB48F13A5DE5B81C085344E3E57EE6FDC6BF35
17256CE8B2B48A59AAA519D2014818724948FDE669EFA9DD4BFA76319E84B6928C00
1726CCCF36793E1A533E3E9822684C4F0B1A60297EAF24D79FD1B728145C2F2EB2D7
17277F0CEA0F72B6ADE7E8AB02501EF56772DA610E1A6D855AE4BC828BFB3F36E5DF
1728E1087B9732BADC3DCF7B72C1FA15A1517DE3DB6360630E55952A0DE142EC11C7
17290DA0B033C405457DE4F619647B623EDEDA588A29D9D457C835320A1FE2E879AA
173018E5125E95D48EA5E1886C7C8B353CC3B5C3C91333E48EE9E6866E23107C24D7
1731738BA7F34A9B9AE25C3DF1DDB072AF68202EE17413929E4B39C0F165441BA9CE
17327587D7C6F181EDC1F55C51B7D8D04FFC47CB79038680FA609360A9BDD44F3787
173314CFBDB4F730BECB4876871DCF0811991151113C3C8F27BE0651F0B97FA21B6F
1734CCD040F39A945AA4549C0327A380F6F2D498CD074168EE3180DC205D18EEA359
1735C24E06EEAA49F08474F7E441F4A2C7B11C6BE15FF0777661064B66A33DD45EAC
173663B97B312E4B93C10F8E583D3827E6CB814EF8B73A6AABF11D638C707750A765
173792D5BF3C59B961569D9BC007DA19AC308EB09045F79D29BD970C4943E4ECBD7C
17380C9148378BFC202102B297A6511E956BDDAF5A64B84BCC16BB6C4C747BA8D422
1739508DF34DBB3F36B9EC0188EBE1A1288C1E3AA548B0D799D73DBD6584FC4F795E
17401A4B0DE9D930B4ABFC9CB303CC0380C8664F21595EB9EA9983B21A4F3FB46D1B
1741E5A16D5C58C12323CBE9CA9AB79DF7A2776E1993CF3AB4A6177BCCF147117DEA
17425304FEEC5903A4982A77793C4B360453F865540F5B0EADD4FDD40F85C72712C5
174307A6F447BE494A85494BA59B241540E84510B3BDF3B6927E69B006567C04BA6F
1744AC056E315F53971769687A314C874D8E62A383394A8C1359C9254432CE771A3A
174561655E881B22D7FA0BCBE24C46EAC022992FD5904555D84612A168BDED0B365C
1746EE54FD4CDB9DBD9AFBC3EB392400446D3A125D3C375EDAB7D551876345FF6343
17471D31E6A4E82AC340B16B1266D9E90418E8F3796F1A43DDB762F03F828981CA31
17482DFB4BE9ACCEB2FBAA4882520B01D36B1A7A98602E9D3951B23D3E5634EFB973
1749485C863847E780463B29F61C4FAA11250331A5C0D4A2E03A1FDA25D8FB40E464
17505384691A0CF3B929561C6F3E225DFE52C651B541B719FD7D60F1D23C8405741A
175170FA5024A86039E1B2BC64DC37AD27464ADA20B980ADF292B0F53BC7E5E2F9D3
1752C40C4D5FF6EB094A1CA0159EC547F0A19020E580A94A4833F4CA7B94190D5DB2
175320530215E33B34AC25C7BB38158C9369EA2EEA2EAB6A29499DEABDAFE5243255
1754CDE450920F62BCD0C8B6455C3EF9BB44D987A2754B8D5253D1E02DBBF3A740D9
1755A502CDADF38BDC4ED9CBF33E966CA6D81CD9DDE1DBA86A768EA720868AE9FEFA
17563586048721720633D9B73F16A5E0BA13644A44D64C8C7F2E7B22E488D77B9177
1757F27E7A960A65DB9674C9471175F136E436E908D10DE577F8E318769DE0934EB5
175815C9AC907F2799A2123A745D3813FD5CFBC260A454797E8EDAABC2A727B23DE8
175996026CE2CD0FD891197D1751AD87F1DD61F2B5406B3390E67AA7A942FE0F746D
17600444E21D51A6A103FECFE2FD2863EB1BF9FB55BC75EDE6D3192FCEB8267C656D
17617186ADE66BA749E1AE37BCF784A1E467D0B83C73ABE2550510AA57007771DE91
176204485B4601D14ACBD97C4BE879FDDF748AF1429ACBF3D41FD918A4D238D26F95
17639F86669789C9D03A04FAB2308419482DAAA77C47EE164B276257F0114D370F41
176482D109A24A95107695F87C6459A7EA5A28A83CA6F45029E32DE497E76DA7F99B
17652A87C4936275DE2DFD7DA865B8FF52668493ACCBA80AD419443D1B2C0659EA69
1766D16680F63A27DB05409EAA1E94613A6100E0CC78F8EA507144C9BB13E29CB482
17675A813BDA35C973616778E273A01943FD5FDDDF7489FA4D49C50396B07A06C86C
1768F2CDA26CEDB033B50E06F817A4F0631E0659E49726DC4A88F6A4D3A355F9966F
1769AAF445EA2B16C547B1EFF050879B3EABAF2B868613E9B47AF1AE7E90847123A9
1770F4E09E7D25D6778A87011AF3E42B8F05AAA2989AE67FD8DB9A560D4C75E79196
1771602996F939A0121A321DD323706068FE1CB46B0E95DC45845F14C06D9437EE31
17722BCE925B8742D0A1A226F225D7EC6A7A807DC1977C9195D91771BF8A5B2BE31A
177315D4D206107421213AD41CA456E3025F069432F21C4AB291D9A548C65A49EC2F
17747A1C5A640FF17D8BC4C04487D0CAD2E08DF0F0524B67CE49379A1E81DA971A8C
1775CC237FBBA08A90BD4A882DA93F915C7F3248569BA03794B9C2F12D51691B4CFB
1776CA5AA67E71599B33585E21593CA83ECB9CFDD5C547DD87694206B0AE32372B06
17778825223E060F1BECE3FCF5E76B5C0F963B7637EF59EB389F12B5B0CC5DD91286
17780673258290FDD422C4450B4A9329D0017FC2105E09DC969232489507B76CF9F7
1779E18550397EAF067B3A9E0347970994A6507C177EDB973A69EF7C382A941E69DD
1780BFDB14F5B3299BDFAE7CCC331CFB83FCCEEA55026AAF4757121A2F577F2EF618
1781ED54EF62FADDB76D4FBCE11FBDDB7F4FD6B919E046B5A0346A0539C598CD9A22
1782BD414EA34E25FAB77D3769E05EEB5A0FD51EA9C7A2433DB5AE9955127C403910
17832B6A66262BC8B0657A3973F1482138AF77E9F8774C2658F15645660C90973B23
17849C30EA7DA830BA0C55671AEDFAF0FD96AD60098E768EAD067F0A63E06B0CEA3B
1785B7E6B4F2D00F575DB0A6B078962B4CB9709A343EA520E57E826C9E89375D7F4C
17861231463A236751F69E097A994E4043DBA8692D7E9B16E214575D0F2978518E66
1787397FCA66BEFE1F4A7A1B7CB123DD85A90E1A0E88185EED105D7995D0EBB936A5
178876CDD7B4791AE48A7368912404F3A34A2AD049E694CE9B3F3C648143C7C2D6C6
1789E78B173E08B7129A1C443B6D4A307341184919EC3FACAA11B3DE39B10E855749
179099FF4ABB58030091CE8F975FF327D2A824B95437D993702700EDD7850A7A01EE
17913DDC985BE66619EEADDCD13B328CA490DE02087FDC35C1290C2F5D58E1ECE85D
17922BF79955108608606229028ADDC9EB448CCC54D7381C7EA8F9590E1BE3551FD8
17938D8BEF116597CD277E1A6DA692F84C83513E4E671D6F48EE46A78B7BD2056948
1794CFA4DD257747BFD38E6813A3D83FAF54FE128ADCCAE38D74CD0486ACFA15A6B0
17951D8469984101347A4F34DE18417F089C197DAE1E9E3CD5D8D8FF7A09DB77BD00
1796986359424222FFA593449F7CE00221DAD4731B341B11066FD3DB5138D163EC82
17979D89F5CEA8EBD5B9BC2FF6A7577E696A3787B6A07A8562648EBF9C1435B0272D
1798995814A9B100631205ED935D0A50866E74A8E332E31654A57C031541B0DA849D
17999B8221773B03527FC9B32F327842CC6285BDC49350501D8F7B728CCA5AE742CF
1800010F8A859E411DEA98F1ACEEB0F27890157F804AC9CD2B3DF5BBD1EA4C72BB26
18010133A4E0B21D07277D7792E076D7F11EBE47E673972DF8A2AB1DC562B0CBD324
1802712A40198D448E0E5AC50F6AF123DDA23DF6AD4587030AE9AB358A64E3D175F7
1803D278603073AA2DCB65626788B2919F675A5D41432DB8DC56B946D2EAD7D29B7F
1804A564E0CA7E8D37EE506C87D574B56E32503734D1A8B90BB97E47CB057FE58799
1805603EC3F828B7A5AC3863CC169C0D8B40C204716528F4FF3BB206DA9CF7A0C325
1806176939038B142297A349CB7BFD48022CD351FB7C99D2827A5F51F4772C437B6D
18078BC7DFFF5A46DCAC13BBF46CF14A5D8F1E9CE23FF35614F408BFC9DE7F36EE5F
18084947F4F664D5CF47E53377A4F9179C83D62EB8BD87F133BF2E4DA3E4443D8BE1
18092F206585D371003CEFC9BADC4547C28D21773D2853459EA4E7790743E1D0A144
181056C80938A89879D0724B79C8F883896099B9399BA2D7696225332A1EAF8C1365
1811D582481D1F93A28459D60DA6220F602CF121CE16F62C22B4F98F379CA401ABB6
18121843F2A4E7096D3982CCB6DB6DDB9ABE784EE9B2762D3A8E5768558755C63698
18137F02DECF75D2FCC99CD93494E8C5021D3B48F10E153020A5E1EB547311E3265F
1814109263954E7DB3409462351B6311ACF63053ED32904B98701A6B99F59915E9B6
18152AD813EDA9523A4BF3E430D8793D10E830E6E620892CCBA72BF9D437EBBDAC7B
1816B237AC58DDF7A684F5A338713C78396FFD6B92816647444BE9BCDD8CA0BB2E56
18174531639B3D74D2C2B369A79AE166109F5FE26A55AC2E4F7FB25A0D4FABD0FE99
1818621A447278BE95EE1D72D60B5B5572CD302B01989DBA8056CF701E4C59FAE8A8
1819D8853CD5E21952882001BC6CEDD8E195DE5EFEAD54C7CD2B4D1E0AE4893BFED3
18206F5A4E156D3B4415EB827F7515405C825CA42C75B9E9761FD797078A81997863
182199D1A40F45A65BEADEFF5B1818C8DF726B7129E984C33516CE9DC16547C158CD
18229DBDA49082C9693C10A08C3B623ED921EA5F4BF064CA812607AD44B779C9ADBF
18235C7EA8BD6F0DBA23B2F8505EE65D2DC384ACFF2D1ACEA8E6C6B6F18149D48D19
182496B365FA505B474B7C9292701736A0D48EDFA11152F622178EB33156291EB6B9
1825BA958F5ECB78F96BCEA8D7DAC90803001513FF64E4251C48FA3F4AECB8CECA8F
1826A3247EE067044CF459EE80D7DAD8F02BD6608C27A6FD5BB9880514A7B1FDB33A
18279AB70A3700CC5DE44973D1103EAAC669DE3B41E53F9D6F40F65580FC1365E0A9
18286303A8545B34A00A20AFC15851942FE866CC3F1FCEBB71C9673B5B5A086108A8
1829FFE0B0B51DB22813E11BBBC2EA53383DCF2D7B719680795E05541B026B41B6C9
1830CDE5B88522A362C908D0E65A1FE1073068507C63AB8FF157832AEE7228BDCF26
18317207EFB3A82CED3A2411064B24C50A24579A2A66A6FC70B7AE48E544B790D375
18327317DA0432E4893F70087D68F8B382FAF770C3B0AE74119A7474265BD6356FEF
1833CF9AB053E9F2F53E49E800969C7D6F128C69DBFABE01D464494CA06C24E0DDD6
183493FC8E0C026D68DFD3FF29A6F6D5D40928E1DE1351D457A6750F1A75DDBB0B13
1835343B3EA6791AC35A8D72E685073B01C0DDBCA8E07D8ED48EBA8E6EA2CB380118
18366D65D5C3D1C081058FC9CC54E9F49EA02A8FAB4CC126CF85E51960C402CD7A55
1837E8FFE2F22EDB8D6458F97E48A901CDB89BBCA78AC0DC93C1AF4D4A91D730FDA0
1838577B7F5E5540528E36DC29A5EA4E99C3D8A3D95B2E9926CFE3B29FEF6D55333E
1839B87C4B28FFA9A582203ACC9528DACF226E78041B2E675AFCB823ED7B01619F5C
18407E5EE4F4B800040F96F2693CB79F41A375D8C502E1253D74210ACC226BDE60CA
1841F7431720D00720D3C900098D13D9775A4E94A91801C5D460DFF396319F49AC57
1842D9318CD4DA5B30FE4A2AF67CFC34961EEA35B985D02F41B4AF51679CF1131327
184378C0A045D5D259494F86B486767B0835259C9976314CDB29F0E70DA314611903
1844BB43B448C7E0FDDCE42BD623D2919B0EB1B0D5C92C0C6D44FF220B12612A6E9D
1845087D4EC32DC0164C3C1EEBB4D42C24403DDFA87BD9397B34F4129BBC1F5DCED2
1846EC698ABBBCD76137BA92DC8FF989299B5AE9B0C9FE7A7C4C6AB9A98BB4D9F86B
1847EBB1A5ECCBA6633459814589DB7BEE88CEC1C1C4BE0792027C736C74AE0ABBA9
1848B7AB5AD51FAEADA4A53684D2BC12E6F60C3C19899D6DA7A0691CAE19306FEE5E
1849C3E3AF07D6D6D1921DC57C02DF25F3CEFFC56AA2A284FA26C99C467A603F410C
185038642DDBDA66623FD2FCF0A3BF49252E1F3B1EDCA0C39D6466998A06ED2D59D6
185133984620E4C5190365AC6A15852E9F114B7C6BE44631184E620CFC547B061DC1
1852B0F28EA6198560D45E951FE8CC2F375B3F29954C14E7DC2F1804218C28AFF3A8
1853B01643302DA4D47DD87E5C54BC270A012E3109526E5E78406DAEF9D91F410B7B
185406400A2A08E2096A391AA15D3863A7D276AC17FD6936833A707395DADB969E29
1855ADD9E78E54BDD88E66292953ED2783010B32CCF920349E866428533680CCE907
1856F6F0E92F2747FB8A090F33B2ABE187D25DFE64B65B333CC84D730A58DD47BD30
1857D55755AF60625D867503C5E5E5AE2B2526E7CFC602754DD6AC4CB2BA2B81F160
185810147BE356D1F8DCAF71FBBCE217456605FC236B8CD696B617E4091889DD5481
1859FD861F9571C92DF7B4BDBA694A36B23FECCBBB8D44E51FBF37ACED02CA5C9409
18602E8ED9A632E1DC490D7166A23F71572EE8670C8A718DFC74ACA4A28409EE1A67
1861FE3CEFA903307D670CE1C938D2958E26ED0497F4BFBA845EF1EC62A3C97AFAC9
1862D37A9785B4F9C6CA19BD85D5166C4035FB1806A7480451D6AEAFA0D64803792C
1863E0B184FAC3BF110C337218585C4EA31D4E76E292328A93194BA54AE22515FCF4
1864EFCCD3A6BB35164AE4DAFFF7CCC786D9E90BFA2478566F41A5ECCD277DA32B7A
186510ED094F6E7F054393986B8B7E1A08179F6FA3935BEA925CC8C7EB0661105B64
186607F9A35DD203B9D5688A1DBE7E4F52A57F439EB54401D191F0AF6F9B73E45FC7
18670409361F3A7608C499DE7BDDDF831D4FC1C7442E1E713AB71A4D38210B3612B6
186815F9AB3921999286C3CE9271F36D738EF691E06468B06E3FFD19CA3181CF5693
1869A0E7C2CCE9B01724AB154D6510343784B3EF0DA3316E65CB37EEE337BA295447
18707ADFA6BE5D314DB0F596999279BD833E280FF84A94EFA52030033023A42F932E
1871CA1F9A2177C83A6E9F7ED2FB89D4AAE5BE8F2C4175FFA039B8DD7FD9604DA38F
18728F1A2D98B7143D09A27CB1AE73E58DC9FF4CE1971E6ACB3FE713D3DFA13E7C53
1873B2454417A5DAFDAFB094C0811D9A12AD6B212A4FA2DE5A09E4FEC5D99BEC5222
1874F8BE9EB2B7
18750000000000000000000000000000000000000000000000000000000000000000
18760000000000000000000000000000000000000000000000000000000000000000
18770000000000000000000000000000000000000000000000000000000000000000
18780000000000000000000000000000000000000000000000000000000000000000
18790000000000000000000000000000000000000000000000000000000000000000
18800000000000000000000000000000000000000000000000000000000000000000
18810000000000000000000000000000000000000000000000000000000000000000
18820000000000000000000000000000000000000000000000000000000000000000
1883cleartomark
1884%%EndFont
1885%%BeginFont: CMR8
1886%!PS-AdobeFont-1.1: CMR8 1.0
1887%%CreationDate: 1991 Aug 20 16:39:40
1888% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
188911 dict begin
1890/FontInfo 7 dict dup begin
1891/version (1.0) readonly def
1892/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1893/FullName (CMR8) readonly def
1894/FamilyName (Computer Modern) readonly def
1895/Weight (Medium) readonly def
1896/ItalicAngle 0 def
1897/isFixedPitch false def
1898end readonly def
1899/FontName /CMR8 def
1900/PaintType 0 def
1901/FontType 1 def
1902/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1903/Encoding 256 array
19040 1 255 {1 index exch /.notdef put} for
1905dup 0 /.notdef put
1906readonly def
1907/FontBBox{-36 -250 1070 750}readonly def
1908/UniqueID 5000791 def
1909currentdict end
1910currentfile eexec
1911D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1912016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
19139098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1914D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1915469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
19162BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
191768618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
19183645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
191948A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
19209619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
19210FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
19228AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
1923EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
1924FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
19259902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
1926D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
19279EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
1928ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
192910FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
193083158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
19312EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
1932044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
1933A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
193423DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
193519B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
19361C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
19378BF32D2E5635B6583D04BC0AA187D10FE773067ACF3B528CD412ED96902B0056
1938567103E3FD911A099ADDB9EAEB3C08F1B36A918FE865B7DAE1C49F21650E65F0
1939C6845C15740631BCB7618A3266D83E54976BCDC707883E531F3F833AD0DE88A0
1940CDB84D8384602B992263C3C223D1B5393DC98C75EFF9AD8D98A764228C70A303
194128D87B1A5510A579D01088C26D9667DB86F72FA302A3A8EEF7E05DD1835E72C0
194266A0728CB0DD8C34BA1D772886333BC78C79374026347FAC9CED39B7FBA84DEC
1943E70EABA29B80B4E813C0E6D5ECA5E9ECDF0413AF7556EA458C3C3B49A4B14A05
19443034C04E1F8665532D053F810683C957050FCF44C5D4040CF09893DBF641D68C
19450969D67BEBBA6DA451D446DCF87B8243365E7158D89332FB33CA28F0A83A7A63
1946D22A0948A46F0AB9B2CDECECDA40FA75B046CED41C017FF79FBD7380CF33D726
1947B03304BF8EE1EE450C065BC8B83643AA74F8D45924181D1D0C52CE78C36DFE66
194899CFBD08406AB9FDCC61242472612AF009F8625C966AC9A7228B85912CA77A9C
1949832F9D14190A1DC798D4E99B5D067A020FAD7E13E2E5A155A94E46853CB93619
195039183DAAB590F1BE12C3C4B0209A93CB015E58EEA72C0F71E68EDF1CAD4CA776
19519320076D70BD2874A166F2CF735BD5154F9FBB219C868A568A7C176060F78092
19521E3661E66B7E0A8DCF294E09D487AD7F7D1ABEF83E7E0E5BDC60D672A4D8F5A2
19534C33479DB4FB7105158E19C62FB0E1B9749E6A9D4BFDF7884B1922C4C48265FB
19547851C1116696C02337B64F1A0445396102B541EE1CA10D8311F79CC58F2106D0
195512FF6B1D274B810AF318BEF04467B5066889896BBF019F63DD5DAC53EDB1CD7F
1956AD10D90B2D3CE615546860B11AFD0D6B705DAC7545579DDD3ED867F31615CF4E
1957F3E4BBD8527C9C3CB4DEBE71F1AC965A69A1C6E244BD5A49FC81135A587EA904
1958A863FF7D421C407EDE08825D78924635E6968CAC4399D231C785C9048FD8C916
19590B2676DB4D91487B862B25F68DBBD03B604BD875420565855CCBEF9AF0793964
19604FD45E490EFE697A470FA3C60192E660C45083E27B9E569DD1DBE07706975B9C
19619AF2851279A7630999C92E9867F55D56CBBA0CA13A0F041CD0F3ADB318A0D298
1962ED48F8288691BB2CE08B6A73E9FA89DAF661F201947BD64C1EB769EA3A0C6FC0
19633DC343AEF2379881E46627AD2F653B4C6BC37E8D8452C3A7E399C0B6B3D93671
1964F51A92EEA7712A872D0BEBEBB071C83D9254A24C8799CCB5D2FF4DB31075483F
19653743AE4BD1CEECE6B9432BB89399FE62B87DAB3B19FA924FCC1F6C3DCA1B0049
196651024011B8670DCE537387069A8732AC4ADDD77B2A0D5D97105810854595C4E8
19670663FD917B5B587B8ADA22351D79F5E5AD494FADE90336AFC27FF9FE8BC770D6
19680A8D6FBE6E45B3D4DB20E91A53D84C8B100813CEB9A81B03E142748475EEE77A
1969892B3458A3AAD744A20ACD28C7AA6C5A996C9A9900F2D6B3C1169DF3BF2B1A9A
197056EF83195431EE89A89CCA5A0EB6A59D7D89179B6C127BA0981FE0122E4184A8
1971FA9094D9C3D54BB7CBA31FD03C7048A09AE67C956A5363F5D51ABB19CA264D9D
19725D515F61DBD9C35D259950530A95350A313CFA8CF06413ABEF844771BF99590E
1973F9A2F28975AFD00D700E83A59A3F0B7238CC74A8C1C9DB059C84DD91F1E07580
1974C4C1311FF1C4AF2AFAA07CDCE72B0928663109CB31DE1548C72EA321F0EAFE9A
1975ACE0E0BBD840254E30D9A46162DACC79A07F21BA056BD90AD312A2D728CB94F5
1976FDD65516843523741D2430C5338FDB4274162B8C0409ABF94581C1A3D8636BCB
197778A98069466C0C869BA08047E9C154DC6FF00A1DDCC2C4AF4D5DA5437BD02616
1978C0139731CAA7817984BE614D6D41E9C21AEA1CBC9E56C783F68364023CB95387
1979C71A72D9DCD59222964D04650181988D140295091175DD985F5B53B070D20B89
19805E4B621C848C9370E0687B45EB1070A688A94BE949D242AA6266ED2D64C2518C
19814A5E75442F030E137D2E3BD654C4E4EDAFF7B46EEDCC9090D537B6CE01DD6D0F
19821872A47A04ECDED2421B511118B0628148D2289B74B79B3A68CA7A2547D644B5
19832ABB83CBBFFE319957FD2189E272DA2C2E35DACA8EE229F37EB4C94C920A65C7
1984165A2ACFF7B92CE4338F3030E157CC75281E1F33AF00386FBE6003C4C8CDB57C
19854EA70A31E2CD15FE6732F98BE47354C2F92AF632B5BA1C7ACCA3633ED13919BA
1986106E6ABCBDC11006BA4560AFB17C7091BC1A632E7870B65717656A89EE550576
1987B5D3BD5DD829886BA59D186770871C3D293EBED70D66EE3AEA926F2AE6AC6CEE
198830CE46B99DCEA2D15384C53D08C6F1A083A24C025D92832E16E816B893B3F2F6
198968BDF430788D1167B14633E0AD0FD74951C5826BE0F4B8CDD23CFAA88907C43D
19901678FB2C4053E0E2056BC4B33F36A896D1BC212B0262B6CB59AB3A5ADCC027C9
1991EA6A2C0F1EA2DC6B88517BF08AF54C9B1A4A7B0A4BB9A66ABECB539BB6BA1F9F
1992313F2A5619949D0FEF977DFB87ABB8B8DD420F3097B2B8BEC00EA5A3E8C207CF
1993508C7CA5133CA63B98A14E11FB57BB7C461D7C8C767DB10E68BCEA1D5A4B7F29
19947AE639BFD660B1CFC78DEF00CD1278833E48A65BE281C9438976BBB475AC6818
1995C533FB4D2F4D3727B68F533D03554393D66FEFDAD1A3BE79FCEF05B98A5D9EF3
199671F4D16E531408B2D866286CB89B50DAAE9978B96C8BEA869F9E90B780F0C98C
19971618C4F6FDDA21820BBA795B0AF3D00F96635FC5062544317A62A37060F965CF
19983BF8A9C7B5C3D74914E0AF04AFFDA0FB1D1E644E2FB8125E94C480B4ED41FF6B
1999DE326A771B82A9C44B4DAA194D3C2A8855CA293787D7D5F466A2587860B64408
20006F14F78C085F63E6B63AC41FE7574E5E22C723202B7D42A1BE0D14A299231F75
200166FB900C2A030D0E09EF5107F9905A5C66E6A5648FBA2B8E80217160EB797496
2002FE3D4904C8E3B6FDE528D1B931C369AE5115114B3701CD40B57457341D735576
2003ABE1907500771C3EC5F562B63DCA85FAF5769ABF0F8F74A678E508A59802F1E1
2004B11545E6C8697D1A7FBD4ED7A5DE57778DF66E04AD354E5A45E199615C6CBFC7
20057F6C232D710E8CD5F9953DDFE922B2CF50F02F65A96E1BEF0C1FE6B5C52415B9
2006052B9C062B532A6B83260D13AB6D3B2A48D780E03B4519F4A2152B82D1A90359
20077CC62EBC5F26608232CDB89D2CD44F0E889AF80B1A9F8C0B9DE0EED9787D70AA
2008AFE3DEF464503D9E56674C9BCD0BC65876F2F455C83412E8FCAC08ADE7F8E2AE
2009CDA7A57425C7ACEF0D58CC85F71D8512B32D9C06AC001382A4095FEA02E2BF2B
2010A7EB6C298B10CD398780A7120CE9A31DE391C349AA273C890F620172CC434C23
201133265359372A5451C4DACF0C859BA6D37AAAADD08D2F85DCDA2399D894840D7D
2012AD9870DD307B9D602661D7ACA2F84FAFDFFABF5A89AFA9973161DC1CF3A3943D
2013CB84A9C241C8B6D6CBAFD2DDC75166C3C2D5994DF4D2C60739F34E7805582A15
201476191F4150309E55FA04EF8A59C4DF8EF1C95E57F0C255B63C82A7775D4CF3BD
2015A3C56600BB869D411A5ABE7EC6C67437B328DFF2F2BD6267A43D69B6788802B9
2016249DAE42336C2A3DE75816951644C742C36C51F120943DE8B75052EE4405A346
2017E157546DCB7D845D81AEB84E70B857B9152C3FA6D5F3BAEC8611C14F67B54DAC
2018F58BBDBAD4C473C0DA872330902A46610865EB0EF8F97078841AF74758F0E6E6
20193DBA2B1659FB937AADD1C8A612C61F0C1A9636F0624E64D6D92966D892F44F09
202048A4BDFC9A83C267ACEF143585C51ED45F59126AF7EBCEC2B9584B0FC6C1E670
2021FC382E476B6C33071A9FD3FC2D0F943DBE055BAEDAD6702DC0F474F9B2DAFFFB
2022C0AF48B326EC447E31210586B7DCD517FB61F4D4870A5E467492F40CCEAA4F2D
2023B06BF4FD8B31D9650D032A0A28E1D413162C649352784A0414C474A82DC471FF
20241FFBDAE7795DDB8BF3DF22C393E939F5634C540DFE2590D71BC1444BBD79A9D9
20257261CAC5207814AAA58D8B135A52A3D3174110FAE364257A6F79AB3B73B52A0A
2026EF08DC05593BD0327BEA4697339E45996E5D6812D166165790D8E4543C130DC5
202734725E44BB037555803390CAF9F94FD6BC08AFC3ACE747B9728D8CF0128D5B4E
20281275C4BD7E50AB5F980DB3C3281E3FC4A500FC6DD0038D35F4F5589679647238
2029FD7EE68BFA9AE20EB140B7277073E6F26C7EF556FD311D510C92E89B70762F42
2030410ED318AFD46F66F605E98D1EF12F00727B3B3F21F695241B4B5863FB1C27E9
20316BBD4365B9AEEFE8A18AFE350731AAA0ED817498539433027D50C8D38284E888
20321E6A1E6CD54F851B264E2FC4597A6A4FE03C7CFFF7D1F75CEF43E97B22096A1B
2033D8BE2DC4A899E64492359B346D9C0051361B6AE9DF079BDF21FBD274597B3C02
20344D0FB1C66B8AE0AAFCE0C1CAC54BEFE069C0BE9505EB0B1AE60869B63C396698
2035EF594E1C8E5995AD22DAD027BDBA4BF2FA9B570E8F0FA3CAEECEF6DB8C4819E4
2036AEBD7165A655F1B7828527DCA9D01324FBFEEDD6797C8E3E9E17B760C70D7AF8
20378EC0AEBBB2C448DFDA6B6B4BEB43291772174F1C369DBD1C4183C8E00A4DB46F
2038208C324163E0BDE572A84B85393892545249DB26457AF5FB311CD5EAA11D7F9C
20393E491B0D49C77898AD873381077DF84EF4498C012D7752B22F0660810B6EC0F8
2040B66D447775AD659C51D3893CD2B4509E8B9D1413A99527F720571784E7B9302B
204192175F1FCA726E8AD6D82B9B7E853FFA5739D0DE0A02BB115DABF83B1E4DE706
2042C23532EE82BD57109F9A7A4E6A87DB4FF5C698B04003312F1BA23AEEE22162EF
2043F22F7D338554AB08625B26D74F7D23772532A371AEDA9CC2962B0B665393FF04
20440B032502628AC491E593D0D450757AB016B2C74C6AD44594E0FEC2F880B578CB
20455C4D6A409FD6B64B9F1BD7CD8B69676814D169609D2ADB2F1E98F6C8F1A16D90
204663FEB3C8FC663DE0CCA1C5CFF03828FD1DF28678492DA710EA61B9096A173CA5
2047FA8A85DCE00EA42ACCA03EF856F3F17FA32A69DF9F73C46944705C5DC20A7535
204834CCC3878E878A0BAC55B7D56CE2C43C102D0AB841BD4A3C5EA0379D321413C8
20496C2DF639D4EEA521E0A1C68D8B60319EB999707001795562E8AED4ABFAA486FD
2050C11D4F12ED45A04DC72264A882C97510C91F2DD77E3D5685DB2CE52C4746F613
2051AD98EF16AA9773CB00735151B7D4B9315441BC3B8BDDA5ACF619F49B6052AFAB
20520F19D9ACFC8D6E0CA79A25A8360F9749EF39FB60404E318BB1A98EEAD98FA0E8
205340DFD76BC3A84404F7D3904BFB2EE3597D8364EA556E4F7D18F32F1D86D10287
20548AE46984461ED91AE22B6EFE0CE5511921B539122DA3EB48707B8ABFCCF2E6F3
20559408D626EBD0C2A1A87827ABAAF02873B675AB54BC6CB5B40E697471320BB686
20569D845AD686DCA663AB31B4C2A1915C55A814FBA82E77736F7F258C1AE7B42449
2057FD341CE08D65E648A3FB4DE280353F79FD70578A0C38C963461BE98100EE4084
2058CC1DEF4E35B10BB81C632FF1AB4511B80C881A729EAB34C9E9D217E3A57EFC52
20596B73AAB4911830A00BA599013AD3BB83BD3DBC7445C316172B3B8A22B8148ADC
2060FF33379CBA195094D2C2CCAE0E260D8DFEC35153BB3533BE014F456A108C9D62
20615C21C1BCD3CB9D7AA0DB74AE571A88AF6BEDDB6DE3DAF92AE60187819E8EB8A6
20627CC1CCBB5F23E63A107EC8143F0F69B62CFC95605231FE605A989407218AE464
2063C2B566EB86E1075B0D8FF788B726FDA5F5F2D8743C39224C2231A46426F3B6AC
2064747E69C46AC322733DC052641526E775F10924F0AF404C37BD47369986746AEE
2065ECC7CAAC1B2CF6E5D86A46F4F6AAA2BB7707BA4D89F1B46DA3024A84228E1A5C
2066BA5EDB68205AE6971A255381FC06BC03644D67B082FD503F502B28141D437C84
2067E809F5C78BA5FBD5B8D51C012C3EFCA915505897C8099F0938EC15464FF4EAAD
20682012A1239E0251BB126F4E400C170BD1C47656CC010235236733633CE22A43D6
20693E043B687B32BAC9EDB90DEA0D0B0015E8C1DE4EE0B0E0C10F2F50F4E35B31BC
2070915A1D984614AC0B10AF2FF1B28FC135D07072C0530C50FB6ABEBC1592CAB0C7
20712FF36245ECB609DD787852E5509AA57B3EC5F6186B16A4EF52ADF58D7ECD1D34
2072B2BDC2BA556F7915F5293A8CB3F44E707A57F6CDBD91E90F9146874311F25B80
2073A7348FA90D09459843F842FCCECFE4025D12B2BF2B61CA32E6F72B8618390560
20740157F80C82BC6A54B9F0289215D94C662CCFA55EFD0650B0ED761D98C65BD47C
2075F7CD595FEF1C7DA57F3B79FD55ABBCE8D30B1D0DE32994D52F8885A87F0C109B
2076D90052BCEF87DE36DB4A852E910C792C094D0D0228C53D20ADA83280C79E9100
20778AF8888CAB9835D6CE65D7FE36B18F365C4F6324DD5670157B37AF55B205F460
2078D10A0D16CDCDA78539CF166ACECEF425A1740B7C8F02D13F2A86070416AD9AF7
2079BD30314C6DC920E3CB78117564ABB1195397CD66FC92F54B5F1535C15E02F763
2080C92A2F3F4CD1FEAD965306DF3614D0362B0191492905777B75D8D1C6F5064A1F
2081111B7EFE43756B4F0996030C00503EFC5351D388C150BEC0FDA5AB0E218423E5
208278F87F1B7684AFA6DC450EF115ACF8AC2C8DFF33AD39FEA1008A46EA9D6BABBF
2083B5F220B209770EF010154C87A4BC067315192ACEECE255BC6A5896C2F4963170
2084576E250C3F8520E1E413A30A1C17F50F6E8D2DD87EC02320176F355709D75320
2085D1747ABB9EA215793CAF3BDAC8F5C0812A630FE85D7FFC3AD199E5D83B068C44
2086B757C8A127C3993C01E25FD94725415298FCFA762ED456DD7DBEDDA2F7AB71E6
2087A289E0F59FAF62E3A2CB6A0995CC06838C8F9A6E19226B0E0953E2BA3764BBDC
2088257212FA3143D2B67D308AD49A0B245F0A97B09919C307B326D575F1F865ADBC
2089E292206795305174C193A4CABB0044936E51BF95D0B13E81F2C64248F1D9749E
2090CEC22448489B2AC1D766933B570E3471B4917ECB1D66E0A4779B084B1D22074D
2091108867FEC1329F5B30FA344C19FABB7C09A50F49A5B0A1C42413B3ED9FC39B36
2092500AD32B07AEE4A5C0DFE29DAC2C6FEC431842A473EB710293F23774FB448E51
20933EB6B4A27D98078B2A4DF3A5F0F41308374765C86C0A879641FAD025EB77D7BC
20949328E717E2EE4AEF31A3FD23573DDB8E81F20F6499FC2BB4C94D3F1054785E0E
20956F3B8D6176EDA6E386FCBB034F6E82F6FE43CB83AA1147B05D51BBB03C477F54
209638FC98086DE0E04722C5F0CBF9270E0DFB928EC7387710118513A3C97C0D6A9C
2097D67BBC5AA5DA3A33BB0F534096582355E0B3BFF7E6536FBF496FE4E05F006F88
2098C7C28672CC58838790821AA48534FCFB8DFD4EBA9C94E4F50E0B9E046651F779
2099E11B8915503682E7FDD90F05DFFCC5A009CE64FBBD223E2634DC95803805F4D1
2100C27B4D543FA3EF2B222DAAACF40C526B2A1563C0968E7F2FB22489810A530519
2101100FB442B5F972F960FF6BD86A19A1F297F93DDFF83CE2347EA3F861596B961D
21024FEDC423B8262ED0F0352DA19F07ED09117CA72EFF0CA7B666EA45493D1E1317
2103559D4B5D278F107042D276C9AFA6A093ED696867BC1041E5F25B11C1687C8C1A
210472DB2FCD4B632FC212D774785F2D3579BC0DBDDBC8CCFBCF7B686ED3BD92D4F5
2105378CDE86406399B059198B66E88BB9EF7E572C6460C36B0F2FA3E19AC56F93EE
210660F1F7BCE76F0AF284C3F41C8BB69F7D34B4644AECA4E9324CE2EE4E4044F4EE
21077B9C28E8B454D894445AB47B05F7B4B94529808A007A5E3A7D323F661F9D9C0B
2108B5BF1C24FAE9D951AF26493C3C9302C4C040A33E94E6596246511185628C7A02
210915D33184493337E2543B1D82FD5ABF4F47E894E809C51DE0ABE163D378910FF1
2110717FA82AD420E076611F5559AA027F1F82433B4B103CC1541D342330D9BE4592
21119B9112E1FAACB0FFD59326ABB3A352C54D097E0B79A91A0CB39B77AABC40D191
2112C895ECDE7E9439DD2098E2D81E56F13F178CB8DFDCA5759C4580BF1DCF7AA3AE
211383F2D998FF3B9789DDD4B2A3E1F5CEEEAB48CB410F5C07DD3FBB4C362BE0D32B
21145BEA9A428692EC6585A20F11A5C73FA22D023131B1B416AC0B2F4A4C801863BB
2115D43B180F82391830064FBCC5A233E3ABC5B30C1FF8155C61E589604EC6C16E48
2116F3C676C95C57B8E9D4305C1B1C7ECD75B3A5C7F8B8849AA1B46FDDD928D92B21
2117D0B6FFBAD0B71D101EC153669E32324C497CD26093D0D2E4AA197F9D5E459C50
2118709C64D20552A3B9DA9475D3658C302B5E7EAE0DAD3F9270A327A6644AF5C3FB
21198338C062F33478E38E82C09510F27C2FD1FB2D304355F28B35C9EDFA0AAED925
2120F2D1493BECA291483EB47FF0442C3692D29D10FA92ADF3C9AD85D5AC09D35949
2121166DBEBAF7D425DBDF179F8BCF21912C5A2123E869DE9A9CEB4803F2C04414BE
212245DF573DB40F5B9E42406F49862C7B23826CCCB05E76BA23BAA5A17CDA93D4EB
212359569951158FC068E32ABDD8930D6C4C58A7DE1D39030E3B818E3382938F466E
212447E8189A6B902AEE4798286CF0C032E0F2AD018380C904C2F4EC61ED98CCDF25
21259E2C691BE9812FD5E0CE01F2C94134C9F0C05F4B7F1260DEC20B9907E1B5D372
21268677FB4F0485ED87A3F6EA1A647072D635F7E2838649CFE37A4FF8182882BF7E
21279474583F4E9D3548795E0A63D4859BD27B662D156DD893B3799371DB1BC75A38
21280F454EBF825D683CF2CBC8B308AEE9D8FF8EBB8A7DEA067AEFE8CC77331156CB
212920210ADE2B5DD0A9F77BB6E98F3630800BF33915E73E515B34E58516D1AD87B5
213000A8969EE2595D2365AD69FA4F67CCAA7D243B8D03FB39CA136DC1E5FD434750
21318A329F7D11DC4D33F6A0BEC9A23E5EE1A18FD5C3640E3F30FC2D8CCE5630E618
2132A273CACED00DA6F094148C5D6751DD983A2823418223E715DBE8ED167B2D1999
2133650D0FD8685884BCF1D6147C162BDBBB6597DCEAED3B5CAA75F301D46F2F770A
2134CA1C8997E99D16CC0A58572FE1D68383D87335A38AF8C27556FF19CC421B8BE1
21358AF89CDBB98273BF4E43025A710B4ACB5D7F2C77249CF1756282B74CE43F037B
2136F62DEC52EA41330A2783B5E64F72392EE25FCE9A7E872F4A9AA7BB41E5368888
21376DC531A2E602696EDA1CD3DCF808F62176E9198AAE9CA8925038D41E17570FD2
2138E976F627F7213AC8EE1B2BC240871B7CC1C61B81BAA031B8396536AA62A67DE7
213963FBDFCFD363DB5CE786230B302B786A859C48BBA8CC27EADB1FBC84F1059FA1
21403A02148B4CEF5DA6D90664E72DC6F3EA267E4102102F18D79FFBE4E2A642E94E
2141F3D9376838236476B1030A0C47D28F4E7EF6358D213AC0A95391659FE736010D
2142355826A83F7FBEDF3164FF177C16C41789E84F375C6FEFEA767DF654B0533E98
2143A1430FEE50F41D39D41DC2ED6EA7EE1FCAB31FCE526D5556E89D36F3B402C5E1
2144C0CCEAFA157772B77556AAC8F874A019EAE0A797BCF85655A7834D4DC32D388F
2145F3E48C0F7B338BBA1C9E949C5C0BC1A727A77FEBE57E1421FF81FE4AA81869FE
214686EF313CAD75613726AB3F7508BC904A7E55F092A16D605802D36509525EE2E0
214718B8CE25A0BEC74D167F9E766E30C4EB0D7914F4DA044FD895F3A9C196E23256
21489033CF1E352E82193458B6CFD32238CC93CCBB0E05E8E6AED8CB27157BB148C5
2149C644977C16D7F4FC50DA22A28CF8F945B5E0209C8D715E8E7D9D80F32FEACD13
2150E6928F4BB60E9684C0F865C9D0C2EEA5EDB0A355FB16426A2405D124F3A01977
21511DE108F66E30EE01ECAA74FE0DEC9A6D485B084FA8A38EC3A59B23FD35B72F87
2152ABC6B7D73EDA44DEAC4AA7285D15339EAC0B54B52FEC5B7EA723622704A3DE1C
2153AAD548509991E18B3AD4CAC7FCBA320ED3989A185CAFA4E22A42E1B5C209F774
2154F5FDE4CF0FD23978F3C37BC3EB97A0AA9B9CBC66538FF705F8F7E2C3CD58A359
215540958DC811EBBD7F16902417BC1C97C3D409E4039E0569C6826D22923806BBCA
2156E601CFEB9B249597BF69BB74FA9607EA9CAC2DE0C8B958574B715D64D5E2AE19
2157DF262825913DE26CB598B36E6F8168F7641A58018B9ADBF73237113B9FBB958F
21581A3CF592672A51EE2463CD7F22F058597DB9C7316CCD49EFAEFB6A20646E0DDF
2159794C0A9DFB62A42FC95483D7F578BA3163317AEB14561F49F6E2A909B7C92370
21602592FF0614A1AAB9AC39E93A2DE2D38330AA56BD51D1FD225D0DDA8E91B94267
2161127CADEC25E9769512EE28557E051F516329445C31D75E19711CEFDF77224F25
21628B590ABB3BCACF4C3620142B0401F7218BA00C67A748A2DA5F784EF53521F536
21637110D64B659B7BCD26E03F6D35A6EA3452A8F33B4A4E580AEDBC83E7D882BF65
2164AACBDB77189BD88AD8A0CAB62EA74CD673A9B37AD1C40065C309BB399045594D
21657BCACB882630E12489BD5E049F217C8498287D768B4D0BF904BF0BE1C6340D18
2166C14229DE0AC87C1FB28EAF752A2C88FB5B80A4EA1066F11DD918A2FB2E18DBD8
2167384E38D2B645EB843A019723C71FEA7C4D02621308D92FD72A10522EFB409D8B
21689A5E51F4AA9D768ED428750A6F34FBFEF6FDBF163B13F6FF96450BC2DE22D65D
2169F7F0F5223CFD29524C61D0070228ED1113C58F48FA3154E53E67567B46F7040F
2170B03DAD476D4B4A2705ED9521BD22F48AE00AD101CD53BD79B7172ADBB6D4C4CD
2171951D9CB787F957A1177A7F967A3B867D48A74A0EFF9ACB491BAAB6C997896895
21722F3A1DCFFDC2D71659F916C1630ECE089BF7318201DAEE72972A8AFD0C69D5BE
2173B5DBBF85ACF39AEEEB8CD634A58D4AD84A49E75E39A5799D53DDAACB7CC08310
217423D44AEEC34D256B1C6C208CF20E986B5F52A866FBE4221FF02A77459AA91933
21754DDA62FD7070BBA306D113FFE2F96090AD748C09470FEB4FFD0CF8C72EA68FB9
21763F00F3F93A56DE5659A40ECAFEDF5E3CF327CBF8DAC7DF31F0F02EC416863D12
21772787C56399B9BE4AB5DEF7D7E185FF02521844F75C48D1ADEA4C0D8436B3A780
21788A55EB846C5CFFFC5D207B0F269DB3DAA7E06FFFAD34ED5A49BFFE73CAA09B6D
2179AF0C693F71CE69B77FC1378A3C4790CBE8B5546FFF134AE8CB103DD6376EF16E
218003501532E3F725E58F36089E3718C635EF95FE9921EEDB08F0CFAEDDFBFB3336
2181517AE8ECA540F6918563EAB9D1B5E5BFFAAADC83D0867125E2050A05EF871ED8
2182CD0AAACE7D95D37065EA0C92E46115A732F468AA43FF12337839C206157A96BF
2183A8DFD01BFDF8E2D76E4D46C5B9AEF23193156FE4B535C6155F79149384737DB6
2184BAFDB4DC69A64056EEE87A1186B137B6D9D394EB8811AADAE996D67EC403083A
218586771A4CDF9AC65678A65DCF46CD1EA9CBE4C1D839CD7F166BA2CA8521F698FD
21864CDEF798D360867ADC4C8FD100DC3AB3B62C5BF2527A688D3DB498AB5F407879
2187970F2EF1EEBDBC4521CFCBC3E621F992F3EAD3E9737976CDB56596E661129545
21882EBE036A72F668E809D454DACA709F2C0531CCB26910652CCBF94EFC3A4B3852
2189B144EB820877E7A55B33B3E9B2B1786729B0643517AD956A7A4779334D0A342A
21903DD38F70100854C0B3032397BCDA640CD12C985BB2B5835AA83D442166613350
2191BACB4CA9F706141A9E9EB3DFF314B1A82113CA28B74B6603D67AA2D15A36972B
21921D8B0057D3D8EB92A1809023EB95762577BD753193DCAF7021366943AFF53A8B
2193A9ECCB74BF27EE70B1D0B73078CA5CB5AACC1BEE0A61A75981F8A0A3253035FA
21941D5D6A1D47DF111693DD9A1D35D9B865C06BD05A688B0D9BC285C0EBB1DF7B2F
21952CEA26CFF7583EFED470D4BF02CAE6E4CCFE5347F61F669BF8E82ECD2112E672
219686D10C529DDB600B5237C11BEE28BC3120A0E212E2ED4F52BDF6980675D7DE7C
219789FBE11E19865B1C163EE5F4D410F95A434056202DB1BDD10B3A75FA3C091D5B
2198E3E2F888A6509E1755BFB39F9EE35AEACEDE970EAF42BBFB0D441BED621A8E20
2199F504AAB0F511661754B03BFBDEE9E5D704B1FFC70E429E97B8C5651C90044269
220058BB39683838446D49507DCB70AB0DEDEFB73F05E621BC7371D21465AC659AA8
220190786F8CF2A0B0ECA4B40774D7143F92F2B0A95417C475DA5308B5BDCEC67A74
2202A425CD76801FF2E115FA3A95818D088392C84FCBC00D3B3C7D683253414D4C5D
220374446BBFD130AC89A0C9B68BB1CD772A1BFE8776D0772ED8C00C13C8D0412D7B
2204526A73A0E38885B79551DAC3E1060537C0EE8FFE574C4B9E8155E2CD83FD85BE
2205191BDD6ACAEE898A02717A9725196FA59E41FB45D2733CE77289FD178AF07D7A
2206FEF8D6BABC7DA5425A45AB8EF3C2E369432252E497B172A6FFD4D3DD957C0E26
22070D3D402EAD21FB3E404DB8082DF2ED2C300A0AEC0DA12B7FB571F415017D44E2
220857509A41CFC2284455635F50F06937D23699B43084728FCA9DD25A7264B9D1F4
22092E086976B56237887470653AC62DE323911A64507B40DBF281BB060AE635F37D
2210BB4F9EF7456EF62EAACAB52F0606DFA777D2965BF03D7CDA312AE654EBFA92C7
2211580B7C2A2E604389152704BDF3008ED2F58200D825D0F60C7BF39AF14816B2DA
22125738DE7338132B7E7E92424B7FDFB15D8E1EC176CBB7E15F3FA064CF04E357DC
221372FDD1E8AF8079B1134EAE3E5CB6A7262994C71714691E8BD7CFF2676EA4D0C2
2214A5FCD6C622B3B34469E3B2FCD810AE0252B2814EB02C544B0458CF12DAACAC5F
22154A2E078844AC2AC74543F4763CDC6FC081073CD60E276AA6E7F1D948EFA02C23
22162FC1567CD952C837AA1ABD3E3077F5AA7F9986F01B0A9EE91C0EEA3895260CB6
22173B4EA5F58F8C8C23D42C81764E72399D2EDF40C8F18EFAF113AD16E753263943
221855EEC4F01AA885DCBCDB7C9E251210AB2B9382EE45050CC1184F592BBD65D6FD
221944D9EA6BC7583CA725A1DCD28EA77A085B0A47CFCF5A847C5D29C4F64F2A17DB
2220BEAD7B3BA43BAF8548B65DFB4814135A2A789E7E76C978DEAE0138AF8A0AE4BD
2221B4D22A02C169BB0DA5215B2B91A10ED3A2A9797E5C5FBD11BB295B02C7498B13
22226D90D8CD79D4606007D408E8D336D75D42519BACFB7164C2797F0E9FCD98F178
2223D82372F263BAF8B2D1F185E549BA63428E2B8DBCCDD243AD605DD10666F367C2
22243EB98C9157E068FCAB8D91AF9683EEE87A1158A562C911574136CFC172D50C4F
222570BC388C728E821395579A081CC946F528CE6F3471B7615F67623F9138DF8FD0
2226CAADC4E42AEBF892B36AC169C716DDA724300E9378B809DC6739929C3108A812
2227F9C116118E9AE1B066E1928A4A442CE02B2D3BFE18D406AAAC1603E754224AEE
22281B802E92CCDCDEF94BAA8955F389B7565AB67D73CED601FA7BFF438717EAD65B
2229449941F0C87F048B9186C9C78A3D43A3D4C372B5F8DA74DAE6DD2A2816E44303
2230790F04C13F08E0815B43FCD837A67BF4A2A86FECB6ED6FFA56018961A0C528FB
2231472971A8E4C47C974DE12133616F3CBBFA20CE57B572F751649D9AE64A61F271
22320DDE783CF2509DFC2ED2CE7467574AAF79101D56D3D2664DDA30FC7DD5B5C6B7
22330BD084CA516A72E6D3F8B7FEDF0F11EF9CA594C2318EEA3CC266A2F4C2F2AC2C
2234AB1ABDC5F7419F46308865F1FA63CF2AF4AEBB8319372B3305AA052477ACD838
22357A35218A6CD4A7C0ADE0C3F8B005D6E30C8A208A3518C1134DC34D0E64F804A4
2236258A995097F17642E97FE9CC38A34C250B8828B4FBA1840EECBD06D427FE7E10
22374EFAFEBBC934AA295E12F25D6FA3D277C7C88DA60D818A8A303364BD6B2C0288
22386E94BD8E474F28BFB951BE4ABC493AB0EA6EFF110193105DF8E9CEAE1CE549D0
2239A907F7A7CF1AD20E121FA6547F93CC10D7957B36ACAF213EE436C92A00AB1A24
2240540E535440938E748DAA6401133235D1CC74EC8FF80F9E297FB6C56C12B4E0A4
2241D53AB28F11618F2C793F6EACB593E56B8370ED5CFF467B5FFF04AD11BC5A3AF0
2242A6EF110B540CD2C87070FFCA3AA0776FF070C384BCDACB0FBD4921C06E24C8F0
2243CE590D788FB8C1BCF9E083B4778818F92269C274B0CC6565E2D70FFFA2480381
2244040C5CA012341D51427A59C3FC9B5121956B4323872E67BA499876052131B266
2245C21F0B8B37902C7C3156FAEB668AE6A7851BC7AA62FE60D792B35B6A38183B23
2246E5FB11DBBAF1E60B0D9DF0E84B9EA6F1EA6C37B84736FE657F4A29E92F7DD89D
22473473C81FD7F595770BA69C91DAA3154425278D323C3E50A14FF72A02BF3820D6
22486621B91A96A1D2F76710143D41C8305E02810780D868D822DC6056DFA4690F24
224990BE5BB4F14902B97F5FB4CF31A6C8B346A76B95D82EEF610AAFF9F6B88E782C
2250F0E46DD18BD1CD53C92075AFEA0C1F0870DA52455847B22A638DABEA04C90ACF
22510D89E8345F118E5E26A3934AC0C0C9F1269946E17F1AF5759123CE2359B60ED6
22523FB22A23380A34DF818CDA8570B36B92C4634A80AA4ABEFFFE36865AFB384DA8
225370E5CB4829052F8BEB962841C2030BBBF874EDEFE149EB8A38DE0ED59903FCBC
225425788EFBB825265AFD7FF2F8D5F9A947EA94A368C52986E8640A6D6A11B14DFD
2255CF435B2F1F7C168D1E9C7B84B2C2D9E235DC59799B99971FE9E6D9780EAC653C
2256981FBDF083B949310FF20F7B383BD10737136E88B9D294677C7C63CC50A41AC1
2257B4649631134034DB9FF76E0B19799396A232809A5BE397B63B528A0E860D38AD
2258A90BF0D4246F012E19CEABC74F21E2BD46FACF96D5F033B6023A98DA51653D59
2259C306875AA02EDC3DB78060D72B0A00596BE36367A1681ECFEEFA447DB8DE6879
226018962C974B55038A8F67AA553ECD27C6C72D46CEADA75D68D7DACB40B063F9F7
2261464401B0AE4CC61A1F55A7E40FBD0FEB890DD2FE36D9641E40BD2F6D20C54353
2262C3B282E7F46D61EF3A41F8BCB31FA38EE2B99B671841DA2FAD644C11AE20B6F8
2263C7D5D99806643412273F874273FBD04C65F048D76086EA1156F07A47CA0FE349
2264391E906747C833320E84E18781C61DEA8FACB8D9DDF08D29E5983F2E1FDC8C72
2265C200B63415529A45978010EA5C150BA9D70CF4F5799DA551A1CF7041A17DD5F4
2266153A868BD4B81A25551784E2A6EE42996F4D6CFAED97725C940C0FE9FFE0AA31
2267FB2A32941E6C555FCF33B4B8E802C40B423599C8E88C6DF1AEEC28938FCF3BAB
2268B6846C20D7EC7278A909073BD15BA75F470F82237BBFF6E7287A3771378A944C
22698CA6215F95437DCC9EA67F7A8721FA63614CA7BC5054EF5E5716FD4B7DEFDE48
2270FA8D2AF9F0B3BD92BF5F48A0DCC8406B0A940FBB5D35B56A49B7D4605A00F82D
2271495AEBF2B413F19FE37AECED8060D5C32E9FE0EE9C0FB14045AE87D04B92A734
22720A35DBFFE12CB1ED64C924E4ADEE0AD635BFC70CCEC92FB07B1DE13E3D14B09C
227394590CE5F2F4B7D0C697F6F30E217ED09B35917714712B1182D687302770C205
2274C3D17944AC1CC6AE2A023707E13DC1299256DB1211650F76A969D74F940CA580
22756B499C40B76BA77D12688A8CF75E90A19AA3E368D6C99FCF8163450CAD6EA028
227684D4E9A5279013354D9C8D7FB8BCF3FD31433C822F0A412A3115B0E5E71079F6
227760C6BBE10380872D5D75F1BE9BB6DE755103E4B376458B97E0B50BF8932940AE
2278F95D4002737966FF15A0B67C5B717AFF0E95B9F8F3498D7CCB538FF133A977EF
22793471FCE3B83D5395F282D1982B2A6CDBD1C0DE44B3CA286E7E3F3E82B3561635
22806E462A4ABFAE8DE9331FEABA97AE7E7C93F0A30F4E3FDF4DFD66E5CBE234ADD8
22810AEFB354B80ADBDC128EAE328AF10FFDEF587B462A88F62F463D640C4F8898D4
22821AAECA8EAE36639F6CC17B68BC1F1202F462BF7CB20CBD42FF2DEC420B4A7001
228390A1F1499D49731DBC0C5DD4AADC4C32A7349219F25150117D733A0D51A7E51D
228488712AF2AC91D73A906CCFFAEA98C68DB967D96DA69E38A0406F2DD149B3E771
228568D65EF65F99A4AD33BB5B15672E57433BC84C9023BA77997E82473C557D18A9
228660F7064934EDDA12E614186A092930690D2DF97E1955FA75CA3CA077EC39A561
228727FC8DCBF13DC183774AF61C2B1B65E5E4
22880000000000000000000000000000000000000000000000000000000000000000
22890000000000000000000000000000000000000000000000000000000000000000
22900000000000000000000000000000000000000000000000000000000000000000
22910000000000000000000000000000000000000000000000000000000000000000
22920000000000000000000000000000000000000000000000000000000000000000
22930000000000000000000000000000000000000000000000000000000000000000
22940000000000000000000000000000000000000000000000000000000000000000
22950000000000000000000000000000000000000000000000000000000000000000
2296cleartomark
2297%%EndFont
2298TeXDict begin 55380996 39158280 1000 600 600 (org-ref.dvi)
2299@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
230049.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
230130 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
23021[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30
230330 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
230449.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
23052[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
230666.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
230741 45 68 23 43 1[23 45 41 25 37 45 36 45 40 10[61 1[57
230845 61 61 55 61 63 77 49 2[30 63 2[53 1[59 8[23 12[27
230932[45 47 11[{ TeXf7b6d320Encoding ReEncodeFont }41 66.4176
2310/CMBX8 rf /Fe 219[71 2[71 32[55{ TeXbbad153fEncoding ReEncodeFont }3
231166.4176 /CMSY8 rf /Ff 203[33 33 33 33 49[{
2312 TeXf7b6d320Encoding ReEncodeFont }4 58.1154 /CMR7 rf
2313/Fg 129[35 1[35 1[35 35 35 35 35 35 35 35 35 35 35 35
231435 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35 35
231535 35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
231635 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
23173[35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
231835 35 34[{ TeX09fbbfacEncoding ReEncodeFont }85 66.4176
2319/CMTT8 rf /Fh 134[60 60 2[64 45 45 47 1[64 57 64 95 32
232060 1[32 1[57 1[53 64 51 64 56 10[87 88 80 64 86 2[86
232190 109 69 2[43 1[90 72 75 88 83 1[87 19[38 45[{
2322 TeXf7b6d320Encoding ReEncodeFont }36 99.6264 /CMBX10
2323rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
232420 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72
232553 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54
232651 50 53 6[20 6[35 35 35 1[35 20 24 20 55 35 27 27 20
23272[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }70
232866.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
23291[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
233053 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
2331/CMBX10 rf end
2332%%EndProlog
2333%%BeginSetup
2334%%Feature: *Resolution 600dpi
2335TeXDict begin
2336%%PaperSize: A4
2337 @landscape end
2338%%EndSetup
2339%%Page: 1 1
2340TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
2341b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2342(3.13\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
2343Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
2344102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
2345(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
2346(diary)f(entries"\))-150 338 y(\(autoload)i('org-agenda)g("org")f
2347("Agenda)g(from)g(Org)f(files")h(t\))-150 408 y(\(autoload)h
2348('org-store-link)h("org")e("Store)g(org)f(link")h(t\))-150
2349478 y(\(autoload)h('orgtbl-mode)h("org")d("Orgtbl)i(minor)e(mode")h
2350(t\))-150 547 y(\(autoload)h('turn-on-orgtbl)h("org")e("Orgtbl)g(minor)
2351g(mode"\))-150 617 y(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")
2352e(.)e(org-mode\)\))-150 699 y(\(define-key)i(global-map)h("\\C-cl")e
2353('org-store-link\))1504 676 y Ff(2)-150 782 y Fg(\(define-key)h
2354(global-map)h("\\C-ca")e('org-agenda\))1364 758 y Ff(2)-150
2355879 y Fi(F)-6 b(or)23 b(the)i(man)n(y)f(customization)h(options)g(try)
235668 b Fg(M-x)36 b(org-customize)-150 948 y Fi(T)-6 b(o)24
2357b(read)g(the)g(on-line)g(do)r(cumen)n(tation)i(try)111
2358b Fg(M-x)36 b(org-info)-150 1147 y Fh(Visibilit)m(y)h(Cycling)-150
23591297 y Fi(rotate)25 b(curren)n(t)f(subtree)g(b)r(et)n(w)n(een)i(states)
2360291 b Fg(TAB)-150 1367 y Fi(rotate)25 b(en)n(tire)f(bu\013er)g(b)r(et)n
2361(w)n(een)h(states)384 b Fg(S-TAB)-150 1436 y Fi(sho)n(w)24
2362b(the)g(whole)g(\014le)854 b Fg(C-c)36 b(C-a)-150 1614
2363y Fh(Motion)-150 1764 y Fi(next)25 b(heading)1043 b Fg(C-c)36
2364b(C-n)-150 1834 y Fi(previous)24 b(heading)921 b Fg(C-c)36
2365b(C-p)-150 1904 y Fi(next)25 b(heading,)f(same)g(lev)n(el)685
2366b Fg(C-c)36 b(C-f)-150 1973 y Fi(previous)24 b(heading,)g(same)g(lev)n
2367(el)563 b Fg(C-c)36 b(C-b)-150 2043 y Fi(bac)n(kw)n(ard)25
2368b(to)f(higher)g(lev)n(el)f(heading)424 b Fg(C-c)36 b(C-u)-150
23692113 y Fi(jump)23 b(to)i(another)f(place)h(in)e(do)r(cumen)n(t)350
2370b Fg(C-c)36 b(C-j)-150 2311 y Fh(Structure)g(Editing)-150
23712462 y Fi(insert)23 b(new)i(heading)f(at)g(same)g(lev)n(el)g(as)g
2372(curren)n(t)104 b Fg(M-RET)-150 2531 y Fi(insert)23 b(new)i(TODO)e(en)n
2373(try)700 b Fg(M-S-RET)-150 2628 y Fi(promote)24 b(curren)n(t)h(heading)
2374f(up)g(one)h(lev)n(el)285 b Fg(M-LEFT)-150 2698 y Fi(demote)25
2375b(curren)n(t)f(heading)h(do)n(wn)f(one)g(lev)n(el)233
2376b Fg(M-RIGHT)-150 2768 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g
2377(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2838 y Fi(demote)25
2378b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248
2379b Fg(M-S-RIGHT)-150 2935 y Fi(mo)n(v)n(e)24 b(subtree)h(up)932
2380b Fg(M-S-UP)-150 3004 y Fi(mo)n(v)n(e)24 b(subtree)h(do)n(wn)848
2381b Fg(M-S-DOWN)-150 3074 y Fi(kill)23 b(subtree)1097 b
2382Fg(C-c)36 b(C-h)g(C-w)-150 3144 y Fi(cop)n(y)25 b(subtree)1052
2383b Fg(C-c)36 b(C-h)g(M-w)-150 3213 y Fi(y)n(ank)25 b(subtree)1046
2384b Fg(C-c)36 b(C-h)g(C-y)-150 3310 y Fi(arc)n(hiv)n(e)24
2385b(subtree)976 b Fg(C-c)36 b($)-150 3380 y Fi(T)-6 b(o)24
2386b(set)g(arc)n(hiv)n(e)g(lo)r(cation)h(for)e(curren)n(t)h(\014le,)f(add)
2387h(a)g(line)f(lik)n(e)1495 3357 y Ff(3)1533 3380 y Fi(:)-150
23883454 y Fg(#+ARCHIVE:)38 b(archfile::*)h(Archived)e(Tasks)-150
23893631 y Fh(Filtering)g(and)g(Sparse)g(T)-10 b(rees)-150
23903781 y Fi(sho)n(w)24 b(sparse)f(tree)i(for)d(all)h(matc)n(hes)i(of)f(a)
2391g(regexp)92 b Fg(C-c)36 b(/)-150 3851 y Fi(view)24 b(TODO's)e(in)i
2392(sparse)f(tree)580 b Fg(C-c)36 b(C-v)-150 3921 y Fi(create)25
2393b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b
2394Fg(C-c)36 b(C-w)-150 3991 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n
2395(t)h(org)g(\014le)367 b Fg(C-c)36 b(C-r)-150 4060 y Fi(agenda)25
2396b(for)e(the)i(w)n(eek)823 b Fg(C-c)36 b(a)p Fi(1)-150
23974130 y(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2398b(C-o)2046 -364 y Fh(TODO)i(Items)2046 -216 y Fi(rotate)25
2399b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354 b Fg(C-c)36
2400b(C-t)2046 -147 y Fi(view)24 b(TODO)f(items)g(in)h(a)g(sparse)f(tree)
2401380 b Fg(C-c)36 b(C-v)2046 -50 y Fi(set)24 b(the)h(priorit)n(y)e(of)g
2402(the)i(curren)n(t)f(item)369 b Fg(C-c)36 b(,)g([ABC])2046
240319 y Fi(remo)n(v)n(e)24 b(priorit)n(y)f(co)r(okie)i(from)d(curren)n(t)j
2404(item)179 b Fg(C-c)36 b(,)g(SPC)2046 100 y Fi(raise)23
2405b(priorit)n(y)g(of)g(curren)n(t)i(item)557 b Fg(S-UP)3626
240676 y Ff(4)2046 180 y Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)
2407g(item)538 b Fg(S-DOWN)3696 157 y Ff(4)2046 311 y Fi(p)r(er-\014le)23
2408b(TODO)g(w)n(ork\015o)n(w)h(states:)33 b(add)24 b(line\(s\))g(lik)n(e)
24093505 288 y Ff(3)3542 311 y Fi(:)2046 384 y Fg(#+SEQ_TODO:)38
2410b(TODO)f(PROCRASTINATE)i(BLUFF)e(DONE)2046 464 y Fi(p)r(er-\014le)23
2411b(TODO)g(k)n(eyw)n(ords:)32 b(add)24 b(line\(s\))g(lik)n(e)3314
2412440 y Ff(3)3351 464 y Fi(:)2046 536 y Fg(#+TYP_TODO:)38
2413b(Phil)f(home)f(work)h(DONE)2046 723 y Fh(Timestamps)2046
2414871 y Fi(prompt)24 b(for)f(date)i(and)f(insert)f(timestamp)266
2415b Fg(C-c)36 b(.)2046 940 y Fi(lik)n(e)23 b Fg(C-c)i Fi(.)31
2416b(but)24 b(insert)g(date)g(and)h(time)e(format)144 b
2417Fg(C-u)36 b(C-c)g(.)2046 1010 y Fi(insert)23 b(DEADLINE)h(timestamp)516
2418b Fg(C-c)36 b(C-d)2046 1080 y Fi(insert)23 b(SCHEDULED)h(timestamp)451
2419b Fg(C-c)36 b(C-s)2046 1150 y Fi(create)25 b(sparse)e(tree)i(with)e
2420(all)g(deadlines)i(due)204 b Fg(C-c)36 b(C-w)2046 1219
2421y Fi(the)25 b(time)e(b)r(et)n(w)n(een)j(2)e(dates)g(in)g(a)f(time)h
2422(range)172 b Fg(C-c)36 b(C-y)2046 1328 y Fi(c)n(hange)25
2423b(timestamp)g(at)f(cursor)f(b)n(y)h Fe(\000)p Fi(1)g(da)n(y)238
2424b Fg(S-LEFT)3696 1305 y Ff(4)2046 1409 y Fi(c)n(hange)25
2425b(timestamp)g(at)f(cursor)f(b)n(y)h(+1)g(da)n(y)238 b
2426Fg(S-RIGHT)3731 1385 y Ff(4)2046 1489 y Fi(c)n(hange)25
2427b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h Fe(\000)p
2428Fi(1)189 b Fg(S-DOWN)3696 1466 y Ff(4)2046 1573 y Fi(c)n(hange)25
2429b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h(+1)189
2430b Fg(S-UP)3626 1550 y Ff(4)2046 1670 y Fi(access)25 b(the)f(calendar)g
2431(for)f(the)i(curren)n(t)f(date)221 b Fg(C-c)36 b(>)2046
24321739 y Fi(insert)23 b(timestamp)i(matc)n(hing)g(date)f(in)g(calendar)89
2433b Fg(C-c)36 b(<)2046 1809 y Fi(access)25 b(agenda)g(for)e(curren)n(t)h
2434(date)507 b Fg(C-c)36 b(C-o)2046 1905 y Fi(While)24 b(prompted)g(for)f
2435(a)h(date:)2046 1975 y(...)30 b(select)25 b(date)f(in)g(calendar)660
2436b Fg(mouse-1/RET)2046 2045 y Fi(...)30 b(scroll)23 b(calendar)h(bac)n
2437(k/forw)n(ard)h(one)f(mon)n(th)121 b Fg(<)36 b(/)f(>)2046
24382115 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(da)n(y)525
2439b Fg(S-LEFT/RIGHT)2046 2184 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24
2440b(one)h(w)n(eek)486 b Fg(S-UP/DOWN)2046 2254 y Fi(...)30
2441b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(mon)n(th)437 b
2442Fg(M-S-LEFT/RIGT)2046 2451 y Fh(Links)2046 2599 y Fi(globally)24
2443b(store)g(link)f(to)h(the)h(curren)n(t)f(lo)r(cation)166
2444b Fg(C-c)36 b(l)3662 2575 y Ff(2)2046 2668 y Fi(insert)23
2445b(a)h(link)f(\(T)-6 b(AB)24 b(completes)h(stored)f(links\))138
2446b Fg(C-c)36 b(C-l)2046 2738 y Fi(insert)23 b(\014le)h(link)f(with)h
2447(\014le)g(name)g(completion)192 b Fg(C-u)36 b(C-c)g(C-l)2046
24482834 y Fi(op)r(en)25 b(link)e(at)h(p)r(oin)n(t)884 b
2449Fg(C-c)36 b(C-o)2046 2904 y Fi(op)r(en)25 b(\014le)e(links)g(in)h
2450(emacs)722 b Fg(C-u)36 b(C-c)g(C-o)2046 2974 y Fi(op)r(en)25
2451b(link)e(at)h(p)r(oin)n(t)884 b Fg(mouse-2)2046 3044
2452y Fi(op)r(en)25 b(\014le)e(links)g(in)h(emacs)722 b Fg(mouse-3)2046
24533140 y Fd(Link)27 b(t)n(yp)r(es)2046 3236 y Fg(<http://www.astro.uva.n)
2454q(l/~d)q(omi)q(nik>)247 b Fi(on)24 b(the)h(w)n(eb)2046
24553306 y Fg(<mailto:adent@galaxy.ne)q(t>)564 b Fi(EMail)23
2456b(address)2046 3376 y Fg(<news:comp.emacs>)845 b Fi(Usenet)25
2457b(group)2046 3446 y Fg(<file:/home/dominik/img)q(/mar)q(s.j)q(pg>)282
2458b Fi(\014le,)23 b(absolute)2046 3515 y Fg(<file:papers/last.pdf>)670
2459b Fi(\014le,)23 b(relativ)n(e)2046 3585 y Fg(<file:~/code/main.c:255)q
2460(>)599 b Fi(\014le)19 b(with)g(line)g(nr.)2046 3655 y
2461Fg(<bbdb:Richard)39 b(Stallman>)631 b Fi(BBDB)23 b(p)r(erson)2046
24623725 y Fg(<shell:ls)38 b(*.org>)877 b Fi(shell)23 b(command)2046
24633794 y Fg(<gnus:group>)1020 b Fi(GNUS)24 b(group)2046
24643864 y Fg(<gnus:group#id>)915 b Fi(GNUS)24 b(message)2046
24653934 y Fg(<vm:folder>)1055 b Fi(VM)23 b(folder)2046 4004
2466y Fg(<vm:folder#id>)950 b Fi(VM)23 b(message)2046 4073
2467y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105
2468b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b
2469Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242
2470-364 y Fh(T)-10 b(ables)4242 -255 y Fd(Creating)25 b(a)i(table)4242
2471-168 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330
2472b Fg(M-x)36 b(org-table-create)4242 -98 y Fi(...)30 b(or)23
2473b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39
2474b(RET)d(|-)g(TAB)4242 -28 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
2475741 b Fg(C-c)36 b(C-c)4242 41 y Fi(...)30 b(separator)24
2476b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242
2477128 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242
2478215 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
2479(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 285
2480y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
2481(e)h(other)g(functionalit)n(y)-6 b(.)4242 371 y Fd(Re-aligning)25
2482b(and)i(\014eld)h(motion)4242 458 y Fi(re-align)22 b(the)i(table)g
2483(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242
2484528 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
2485311 b Fg(TAB)4242 598 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
2486b Fg(S-TAB)4242 667 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
2487(next)h(ro)n(w)328 b Fg(RET)4242 754 y Fd(Ro)n(w)26 b(and)h(column)g
2488(editing)4242 841 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
2489544 b Fg(M-LEFT)4242 911 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2490(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 980 y Fi(kill)23
2491b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1050
2492y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
2493104 b Fg(M-S-RIGHT)4242 1137 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2494(ro)n(w)f(up)678 b Fg(M-UP)4242 1207 y Fi(mo)n(v)n(e)24
2495b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242
24961276 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
2497(line)291 b Fg(M-S-UP)4242 1346 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
2498n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242
24991433 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h
2500(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1503 y
2501Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n
2502(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1589 y Fd(Regions)4242
25031676 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36
2504b(C-h)g(C-w)4242 1746 y Fi(cop)n(y)25 b(rectangular)f(region)715
2505b Fg(C-c)36 b(C-h)g(M-w)4242 1816 y Fi(paste)25 b(rectangular)f(region)
2506695 b Fg(C-c)36 b(C-h)g(C-y)4242 1885 y Fi(\014ll)23
2507b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36
2508b(C-q)4242 1972 y Fd(Calculations)4242 2059 y Fi(Except)31
2509b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242
25102129 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2215
2511y(replace)e(curren)n(t)g(\014eld)g(with)g(result)f(of)h(form)n(ula)129
2512b Fg(C-c)36 b(=)4242 2285 y Fi(...)30 b(same)24 b(calculation)h(for)e
2513(rest)g(of)h(column)267 b Fg(C-u)36 b(C-c)g(=)4242 2355
2514y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96
2515b Fg(C-c)36 b(*)4242 2425 y Fi(re-apply)23 b(all)g(stored)i(equations)g
2516(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242
25172511 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28
2518b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242
25192581 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242
25202668 y(rotate)23 b(recalculation)f(mark)g(through)g(#)g(*)g(!)30
2521b(^)p 5533 2668 22 4 v 47 w($)71 b Fg(C-#)4242 2755 y
2522Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)354
2523b Fg(C-c)36 b(?)4242 2824 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren)
2524n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242 2908
2525y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b
2526Fg(S-RET)5857 2885 y Ff(4)4242 2995 y Fi(A)27 b(form)n(ula)g(can)h
2527(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)g(in)n(to)f(a)h
2528(\014eld.)42 b(It)28 b(will)4242 3065 y(b)r(e)c(executed)i(b)n(y)e
2529Fg(TAB)p Fi(,)g Fg(RET)h Fi(and)f Fg(C-c)36 b(C-c)p Fi(:)4242
25303152 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522 b
2531Fg(=$1+$2)4242 3221 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r
2532(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3291 y Fi(...)30
2533b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352
2534b Fg(=$1/$c/$cm)4242 3361 y Fi(Apply)24 b(curren)n(t)g(\(for)f(this)h
2535(column\))g(form)n(ula)200 b Fg(=)4242 3431 y Fi(Sum)24
2536b(all)f(n)n(um)n(b)r(ers)g(ab)r(o)n(v)n(e/left)j(of)d(cursor)292
2537b Fg(=sum)36 b(/)g(=sumh)4242 3500 y Fi(Sum)24 b(just)f(the)i(3)f
2538(\014elds)f(closest)i(to)f(cursor)279 b Fg(=sum3/=sumh3)4242
25393587 y Fd(Miscellaneous)4242 3674 y Fi(toggle)25 b(visibilit)n(y)d(of)i
2540(v)n(ertical)g(lines)474 b Fg(C-c)36 b(|)4242 3744 y
2541Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370 b Fg(M-x)36
2542b(org-table-export)4242 3813 y Fi(imp)r(ort)23 b(tab-separated)j
2543(\014le)447 b Fg(M-x)36 b(org-table-import)4242 3900
2544y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
2545Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g
2546Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057
2547y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
2548Fg(C-c)36 b(C-c)4242 4126 y Fi(con)n(v)n(ert)25 b(table)f(\(Org-mo)r
2549(de)g Fe($)f Fi(table.el\))312 b Fg(C-c)36 b(~)p eop
2550end
2551%%Page: 2 2
2552TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
2553b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2554(3.13\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
2555120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
2556b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793
2557b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g
2558(to)g(y)n(our)g(agenda)483 b Fg(C-c)36 b([)-150 358 y
2559Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g(from)f(y)n(our)g(agenda)299
2560b Fg(C-c)36 b(])-150 438 y Fi(compile)24 b(agenda)h(for)e(the)h(curren)
2561n(t)g(w)n(eek)320 b Fg(C-c)36 b(a)1466 415 y Ff(2)-150
2562508 y Fi(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2563b(C-o)-150 641 y Fi(T)-6 b(o)24 b(set)g(category)h(for)e(curren)n(t)h
2564(\014le,)g(add)g(line)1082 617 y Ff(3)1119 641 y Fi(:)-150
2565715 y Fg(#+CATEGORY:)38 b(MyCateg)-150 814 y Fd(Commands)26
2566b(a)n(v)-5 b(ailable)25 b(in)i(an)g(agenda)g(bu\013er)-150
2567912 y Fi(The)g(agenda)h(bu\013er)f(is)f(electric:)38
2568b(single)26 b(k)n(ey)i(presses)e(execute)j(com-)-150
2569982 y(mands.)-150 1080 y Fd(View)e(org)f(\014le)-150
25701178 y Fi(sho)n(w)e(original)f(lo)r(cation)h(of)g(item)524
2571b Fg(SPC)-150 1248 y Fi(...)30 b(also)24 b(a)n(v)l(ailable)g(with)781
2572b Fg(mouse-3)-150 1318 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)n(w)
2573626 b Fg(l)-150 1388 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g
2574(other)g(windo)n(w)260 b Fg(TAB)-150 1457 y Fi(...)30
2575b(also)24 b(a)n(v)l(ailable)g(with)781 b Fg(mouse-2)-150
25761527 y Fi(goto)25 b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n
2577(ws)91 b Fg(RET)-150 1597 y Fi(toggle)25 b(follo)n(w-mo)r(de)861
2578b Fg(f)-150 1695 y Fd(Change)27 b(displa)n(y)-150 1794
2579y Fi(delete)e(other)f(windo)n(ws)791 b Fg(o)-150 1863
2580y Fi(switc)n(h)24 b(to)g(w)n(eekly)h(view)767 b Fg(w)-150
25811933 y Fi(switc)n(h)24 b(to)g(daily)g(view)822 b Fg(d)-150
25822003 y Fi(toggle)25 b(inclusion)e(of)h(diary)f(en)n(tries)473
2583b Fg(D)-150 2072 y Fi(toggle)25 b(time)f(grid)f(for)g(daily)g(sc)n
2584(hedule)388 b Fg(g)-150 2142 y Fi(refresh)23 b(agenda)i(bu\013er)f
2585(with)g(an)n(y)g(c)n(hanges)239 b Fg(r)-150 2212 y Fi(displa)n(y)24
2586b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)-150
25872282 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238
2588b(LEFT)-150 2351 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)-150
25892450 y Fd(Remote)27 b(editing)-150 2548 y Fi(digit)d(argumen)n(t)984
2590b Fg(0-9)-150 2646 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f
2591(item)333 b Fg(t)-150 2716 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t)
2592i(item)612 b Fg(p)-150 2798 y Fi(raise)23 b(priorit)n(y)g(of)g(curren)n
2593(t)i(item)557 b Fg(S-UP)1430 2775 y Ff(4)-150 2879 y
2594Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)g(item)538
2595b Fg(S-DOWN)1500 2855 y Ff(4)-150 2949 y Fi(displa)n(y)24
2596b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h(item)189
2597b Fg(P)-150 3058 y Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h
2598(earlier)315 b Fg(S-LEFT)1500 3034 y Ff(4)-150 3138 y
2599Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h(later)367
2600b Fg(S-RIGHT)1535 3115 y Ff(4)-150 3208 y Fi(c)n(hange)25
2601b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)-150 3306 y
2602Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b
2603Fg(i)-150 3405 y Fd(Calendar)26 b(commands)-150 3503
2604y Fi(\014nd)e(agenda)h(cursor)f(date)g(in)g(calendar)350
2605b Fg(c)-150 3573 y Fi(compute)25 b(agenda)g(for)e(calendar)i(cursor)e
2606(date)180 b Fg(c)-150 3642 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r
2607(on)669 b Fg(M)-150 3712 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636
2608b Fg(S)-150 3782 y Fi(sho)n(w)24 b(holida)n(ys)1014 b
2609Fg(H)-150 3852 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars)
2610478 b Fg(C)-150 3950 y Fd(Quit)27 b(and)g(Exit)-150 4048
2611y Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376
2612b Fg(q)-150 4118 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i
2613(bu\013ers)258 b Fg(x)2046 -364 y Fh(Exp)s(orting)2046
2614-208 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f(extensions)i
2615Fc(.txt)k Fi(and)32 b Fc(.html)38 b Fi(in)31 b(the)2046
2616-139 y(curren)n(t)24 b(directory)-6 b(.)2046 -40 y(exp)r(ort)25
2617b(as)e(ASCI)r(I)i(\014le)820 b Fg(C-c)36 b(C-x)g(a)2046
261829 y Fi(exp)r(ort)25 b(visible)e(text)i(only)e(\(e.g.)32
2619b(for)23 b(prin)n(ting\))152 b Fg(C-c)36 b(C-x)g(v)2046
262099 y Fi(exp)r(ort)25 b(as)e(HTML)g(\014le)804 b Fg(C-c)36
2621b(C-x)g(h)2046 169 y Fi(exp)r(ort)25 b(as)e(HTML)g(and)h(op)r(en)h(in)e
2622(bro)n(wser)266 b Fg(C-c)36 b(C-x)g(C-h)2046 239 y Fi(pre\014x)24
2623b(arg)g(sets)g(n)n(b.)31 b(of)23 b(headline)i(lev)n(els,)e(e.g.)182
2624b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 337 y Fi(insert)23 b(template)j(of)d
2625(exp)r(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 435
2626y Fi(toggle)25 b(\014xed)f(width)g(for)f(line)g(or)h(region)346
2627b Fg(C-c)36 b(:)2046 534 y Fd(HTML)27 b(formatting)2046
2628632 y Fi(mak)n(e)d(w)n(ords)g Fd(b)r(old)897 b Fg(*bold*)2046
2629702 y Fi(mak)n(e)24 b(w)n(ords)g Fc(italic)898 b Fg(/italic/)2046
2630771 y Fi(mak)n(e)24 b(w)n(ords)g(underlined)p 2433 784
2631326 4 v 728 w Fg(_underlined_)2046 841 y Fi(sub-)f(and)i(sup)r
2632(erscripts)781 b Fg(x^3,)36 b(J_dust)2046 911 y Fi(T)2085
2633925 y(E)2124 911 y(X-lik)n(e)23 b(macros)940 b Fg(\\alpha,)37
2634b(\\to)2046 981 y Fi(t)n(yp)r(eset)25 b(lines)f(in)f(\014xed)h(width)g
2635(fon)n(t)460 b Fg(start)37 b(with)f(:)2046 1050 y Fi(tables)24
2636b(are)g(exp)r(orted)h(as)f(HTML)f(tables)321 b Fg(start)37
2637b(with)f(|)2046 1120 y Fi(links)23 b(b)r(ecome)i(HTML)e(links)640
2638b Fg(http:...)73 b(etc)2046 1190 y Fi(include)24 b(h)n(tml)g(tags)905
2639b Fg(@<b>...@</b>)2046 1288 y Fd(Exp)r(ort)27 b(options)2046
26401386 y Fi(Include)20 b(additional)f(information)g(for)f(exp)r(ort)i(b)n
2641(y)f(putting)h(these)g(an)n(y-)2046 1456 y(where)g(in)f(the)h(org)g
2642(\014le.)30 b(Use)19 b Fg(M-TAB)i Fi(completion)f(to)g(mak)n(e)h(sure)e
2643(to)h(get)2046 1526 y(the)i(righ)n(t)e(k)n(eyw)n(ords.)31
2644b Fg(M-TAB)22 b Fi(again)f(just)g(after)g(k)n(eyw)n(ord)g(is)g
2645(complete)2046 1596 y(inserts)i(examples.)2046 1694 y(the)i(title)f(to)
2646g(b)r(e)g(sho)n(wn)797 b Fg(#+TITLE:)2046 1764 y Fi(the)25
2647b(author)1115 b Fg(#+AUTHOR:)2046 1834 y Fi(authors)24
2648b(email)f(address)769 b Fg(#+EMAIL:)2046 1903 y Fi(language)25
2649b(co)r(de)g(for)e(h)n(tml)732 b Fg(#+LANGUAGE:)2046 1973
2650y Fi(free)23 b(text)i(description)f(of)g(\014le)626 b
2651Fg(#+TEXT:)2046 2043 y Fi(...)30 b(whic)n(h)24 b(can)g(carry)g(o)n(v)n
2652(er)g(m)n(ultiple)f(lines)271 b Fg(#+TEXT:)2046 2112
2653y Fi(settings)25 b(for)d(the)j(exp)r(ort)f(pro)r(cess)g(-)f(see)h(b)r
2654(elo)n(w)145 b Fg(#+OPTIONS:)2046 2211 y Fd(Settings)26
2655b(for)h(the)g(OPTIONS)i(line)2046 2309 y Fi(set)24 b(n)n(um)n(b)r(er)g
2656(of)f(headline)i(lev)n(els)e(for)g(exp)r(ort)219 b Fg(H:2)2046
26572379 y Fi(turn)24 b(on/o\013)h(section)f(n)n(um)n(b)r(ers)577
2658b Fg(num:t)2046 2449 y Fi(turn)24 b(on/o\013)h(table)f(of)f(con)n(ten)n
2659(ts)564 b Fg(toc:t)2046 2518 y Fi(turn)24 b(on/o\013)h(linebreak)f
2660(preserv)l(ation)395 b Fg(\\n:nil)2046 2588 y Fi(turn)24
2661b(on/o\013)h(quoted)g(h)n(tml)f(tags)548 b Fg(@:t)2046
26622658 y Fi(turn)24 b(on/o\013)h(\014xed)f(width)g(sections)464
2663b Fg(::t)2046 2728 y Fi(turn)24 b(on/o\013)h(tables)893
2664b Fg(|:t)2046 2797 y Fi(turn)20 b(on/o\013)h(T)2444 2811
2665y(E)2484 2797 y(X)e(syn)n(tax)i(for)f(sub/sup)r(er-scripts)70
2666b Fg(^:t)2046 2867 y Fi(turn)24 b(on/o\013)h(emphasised)f(text)578
2667b Fg(*:nil)2046 2937 y Fi(turn)24 b(on/o\013)h(T)2452
26682951 y(E)2491 2937 y(X)e(macros)703 b Fg(TeX:t)2046 3035
2669y Fd(Commen)n(ts:)35 b(T)-7 b(ext)27 b(not)f(b)r(eing)i(exp)r(orted)
26702046 3133 y Fi(T)-6 b(ext)22 b(b)r(efore)f(the)h(\014rst)f(headline)g
2671(is)f(not)i(considered)g(part)f(of)g(the)h(do)r(c-)2046
26723203 y(umen)n(t)29 b(and)f(is)f(therefore)h(nev)n(er)g(exp)r(orted.)44
2673b(Lines)28 b(starting)g(with)g Fg(#)2046 3273 y Fi(are)j(commen)n(ts)g
2674(and)h(are)e(not)i(exp)r(orted.)53 b(Subtrees)32 b(whose)f(header)2046
26753343 y(starts)24 b(with)g(COMMENT)e(are)i(nev)n(er)g(exp)r(orted.)2046
26763441 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285
2677b Fg(C-c)36 b(;)2046 3644 y Fh(Completion)2046 3800 y
2678Fi(In-bu\013er)e(completion)g(completes)h(TODO)d(k)n(eyw)n(ords)i(at)g
2679(headline)2046 3869 y(start,)26 b(T)-6 b(eX)26 b(macros)f(after)h(\\)p
2680Fg(\\)p Fi(",)h(option)f(k)n(eyw)n(ords)g(after)g(\\)p
2681Fg(#-)p Fi(",)h(k)n(ey-)2046 3939 y(w)n(ord)d(form)n(ulas)e(after)i(\\)
2682p Fg(=)p Fi(",)g(and)g(dictionary)g(w)n(ords)g(elsewhere.)2046
26834037 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702 b Fg(M-TAB)4242
2684-364 y Fh(Calendar)36 b(and)h(Diary)i(In)m(tegration)4242
2685-208 y Fi(T)-6 b(o)35 b(include)g(en)n(tries)g(from)f(the)i(Emacs)f
2686(diary)g(in)f(y)n(our)h(Org-mo)r(de)4242 -139 y(agenda:)4242
2687-40 y Fg(\(setq)i(org-agenda-include-diary)42 b(t\))4242
268858 y Fi(T)-6 b(o)24 b(include)h(y)n(our)f(Org-mo)r(de)f(agenda)j(in)d
2689(y)n(our)h(normal)g(diary)-6 b(,)23 b(mak)n(e)4242 128
2690y(sure)i(y)n(ou're)g(using)g(the)h(fancy)g(diary)f(displa)n(y)g(and)h
2691(in)f(y)n(our)g Fg(~/diary)4242 197 y Fi(\014le)f(add)4242
2692296 y Fg(&\045\045\(org-diary\))4242 394 y Fi(to)30 b(include)g(all)f
2693(the)h(\014les)f(listed)h(in)f Fg(org-agenda-files)p
2694Fi(.)53 b(F)-6 b(or)29 b(more)4242 464 y(selectiv)n(e)c(\014le)e
2695(inclusion)h(use)g(a)g(line)f(for)g(eac)n(h)i(\014le:)4242
2696562 y Fg(&\045\045\(org-diary\))39 b(~/path/to/some/org-fil)q(e.or)q(g)
26974242 767 y Fh(Remem)m(b)s(er-mo)s(de)f(In)m(tegration)4242
2698923 y Fi(See)32 b(the)g(man)n(ual)g(for)e(ho)n(w)i(to)g(mak)n(e)g
2699(remem)n(b)r(er.el)f(use)g(Org-mo)r(de)4242 992 y(links)25
2700b(and)g(\014les.)36 b(The)25 b(note-\014nishing)h(command)g
2701Fg(C-c)36 b(C-c)26 b Fi(will)e(\014rst)4242 1062 y(prompt)g(for)f(an)h
2702(org)f(\014le.)32 b(In)24 b(the)g(\014le,)g(\014nd)g(a)g(lo)r(cation)g
2703(with:)4242 1160 y(rotate)h(subtree)f(visibilit)n(y)719
2704b Fg(TAB)4242 1230 y Fi(next)25 b(heading)1043 b Fg(DOWN)4242
27051300 y Fi(previous)24 b(heading)921 b Fg(UP)4242 1398
2706y Fi(Insert)24 b(the)h(note)g(with)e(one)i(of)e(the)i(follo)n(wing:)
27074242 1497 y(as)f(sublev)n(el)g(of)f(heading)i(at)f(cursor)468
2708b Fg(RET)4242 1566 y Fi(righ)n(t)24 b(here)g(\(cursor)f(not)i(on)f
2709(heading\))388 b Fg(RET)4242 1636 y Fi(b)r(efore)24 b(curren)n(t)g
2710(heading)745 b Fg(LEFT)4242 1706 y Fi(after)24 b(curren)n(t)g(heading)
2711790 b Fg(RIGHT)4242 1776 y Fi(shortcut)20 b(to)f(end)h(of)f(bu\013er)g
2712(\(cursor)g(at)g(buf-start\))71 b Fg(RET)4242 1845 y
2713Fi(Ab)r(ort)1256 b Fg(q)4242 2050 y Fh(CUA)38 b(and)f(p)s(c-select)g
2714(compatibilit)m(y)4242 2206 y Fi(Con\014gure)31 b(the)f(v)l(ariable)g
2715Fg(org-CUA-compatibility)35 b Fi(to)c(mak)n(e)f(Org-)4242
27162276 y(mo)r(de)38 b(a)n(v)n(oid)g(the)g Fg(S-<cursor>)i
2717Fi(bindings)d(used)h(b)n(y)g(these)g(mo)r(des.)4242 2345
2718y(When)h(set,)j(Org-mo)r(de)c(will)e(c)n(hange)k(the)f(follo)n(wing)e
2719(k)n(eybindings)4242 2415 y(\(also)25 b(in)f(the)h(agenda)h(bu\013er,)e
2720(but)h(not)g(during)f(date)i(selection\).)34 b(See)4242
27212499 y(note)25 b(mark)e(four)4705 2476 y Ff(4)4766 2499
2722y Fi(throughout)i(the)g(reference)f(card.)4242 2667 y
2723Fg(S-UP)142 b Fe(!)35 b Fg(M-p)460 b(S-DOWN)72 b Fe(!)35
2724b Fg(M-n)4242 2737 y(S-LEFT)72 b Fe(!)35 b Fg(M--)460
2725b(S-RIGHT)37 b Fe(!)e Fg(M-+)4242 2807 y(S-RET)107 b
2726Fe(!)35 b Fg(C-S-RET)4242 2991 y Fh(Notes)4242 3123 y
2727Ff(1)4307 3146 y Fi(The)28 b(six)f(autoload)i(forms)e(are)h(only)g
2728(needed)h(if)e(Org-mo)r(de)g(is)g(not)4242 3216 y(part)d(of)f(Emacs,)h
2729(or)f(an)h(XEmacs)g(pac)n(k)l(age.)4242 3302 y Ff(2)4313
27303325 y Fi(This)34 b(is)f(only)h(a)h(suggestion)g(for)e(a)h(binding)h
2731(of)e(this)h(command.)4242 3395 y(Cho)r(ose)24 b(y)n(ou)h(o)n(wn)f(k)n
2732(ey)g(as)g(sho)n(wn)g(under)g(INST)-6 b(ALLA)g(TION.)4242
27333481 y Ff(3)4300 3504 y Fi(After)21 b(c)n(hanging)h(a)f
2734Fg(#+KEYWORD)j Fi(line,)d(press)f Fg(C-c)37 b(C-c)21
2735b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
2736(mak)n(e)h(Org-mo)r(de)e(notice)i(the)f(c)n(hange.)4242
27373659 y Ff(4)4303 3683 y Fi(Keybinding)g(a\013ected)i(b)n(y)e
2738Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
27393768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
2740b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
2741y(v3.13)h(for)h(Org-Mo)r(de)e(3.13,)i(2005)4912 3882
2742y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
2743(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
27444022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
2745(distribute)f(copies)j(of)f(this)f(card)h(pro-)4242 4077
2746y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
2747(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4242 4133
2748y(all)20 b(copies.)p eop end
2749%%Trailer
2750
2751userdict /end-hook known{end-hook}if
2752%%EOF
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
new file mode 100644
index 00000000000..77aa5ade836
--- /dev/null
+++ b/etc/orgcard.tex
@@ -0,0 +1,737 @@
1% Reference Card for Org Mode 3.13
2%
3%**start of header
4\newcount\columnsperpage
5
6% This file can be printed with 1, 2, or 3 columns per page (see below).
7% At the moment this card works quite nicely in 3 column format and
8% currently takes most of 2 pages. It is thus suited to producing one
9% double-side page when printed.
10
11% There are a couple of tweaks in the format of this card which make it work
12% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
13% are commented below. Revert the changes if you want letter sized paper.
14
15% Try running something like
16% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
17% to print the card
18
19\columnsperpage=3
20
21% Copyright (c) 2004 Philip Rooke, 2005 Free Software Foundation
22
23% GNU Emacs is free software; you can redistribute it and/or modify
24% it under the terms of the GNU General Public License as published by
25% the Free Software Foundation; either version 2, or (at your option)
26% any later version.
27
28% GNU Emacs is distributed in the hope that it will be useful,
29% but WITHOUT ANY WARRANTY; without even the implied warranty of
30% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31% GNU General Public License for more details.
32
33% You should have received a copy of the GNU General Public License
34% along with GNU Emacs; see the file COPYING. If not, write to
35% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
36% Boston, MA 02111-1307, USA.
37
38% This file is intended to be processed by plain TeX (TeX82).
39%
40% The final reference card has six columns, three on each side.
41% This file can be used to produce it in any of three ways:
42% 1 column per page
43% produces six separate pages, each of which needs to be reduced to 80%.
44% This gives the best resolution.
45% 2 columns per page
46% produces three already-reduced pages.
47% You will still need to cut and paste.
48% 3 columns per page
49% produces two pages which must be printed sideways to make a
50% ready-to-use 8.5 x 11 inch reference card.
51% For this you need a dvi device driver that can print sideways.
52% Which mode to use is controlled by setting \columnsperpage above.
53%
54% Author:
55% Stephen Gildea
56% Internet: gildea@stop.mail-abuse.org
57%
58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
59% for their many good ideas.
60
61\def\orgversionnumber{3.13}
62\def\year{2005}
63
64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
65 \centerline{\small \copyright\ 2004, 2005\ Free Software Foundation, Inc.
66 Permissions on back. v\orgversionnumber}}
67
68\def\copyrightnotice{
69\vskip 1ex plus 100 fill\begingroup\small
70\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
71\centerline{v\orgversionnumber{} for Org-Mode \orgversionnumber{}, \year}
72\centerline{Author: Philip Rooke}
73\centerline{based on refcard design and format by Stephen Gildea}
74
75Permission is granted to make and distribute copies of
76this card provided the copyright notice and this permission notice
77are preserved on all copies.
78
79\endgroup}
80
81% make \bye not \outer so that the \def\bye in the \else clause below
82% can be scanned without complaint.
83\def\bye{\par\vfill\supereject\end}
84
85\newdimen\intercolumnskip %horizontal space between columns
86\newbox\columna %boxes to hold columns already built
87\newbox\columnb
88
89\def\ncolumns{\the\columnsperpage}
90
91\message{[\ncolumns\space
92 column\if 1\ncolumns\else s\fi\space per page]}
93
94\def\scaledmag#1{ scaled \magstep #1}
95
96% This multi-way format was designed by Stephen Gildea October 1986.
97% Note that the 1-column format is fontfamily-independent.
98\if 1\ncolumns %one-column format uses normal size
99 \hsize 4in
100 \vsize 10in
101 \voffset -.7in
102 \font\titlefont=\fontname\tenbf \scaledmag3
103 \font\headingfont=\fontname\tenbf \scaledmag2
104 \font\smallfont=\fontname\sevenrm
105 \font\smallsy=\fontname\sevensy
106
107 \footline{\hss\folio}
108 \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
109\else %2 or 3 columns uses prereduced size
110 \hsize 3.2in
111
112% FIXME - Try to make things more A4 friendly
113% \vsize 7.95in
114 \vsize 7.65in
115% \hoffset -.75in
116 \hoffset -.25in
117 \voffset -.745in
118 \font\titlefont=cmbx10 \scaledmag2
119 \font\headingfont=cmbx10 \scaledmag1
120 \font\smallfont=cmr6
121 \font\smallsy=cmsy6
122 \font\eightrm=cmr8
123 \font\eightbf=cmbx8
124 \font\eightit=cmti8
125 \font\eighttt=cmtt8
126 \font\eightmi=cmmi8
127 \font\eightsy=cmsy8
128 \textfont0=\eightrm
129 \textfont1=\eightmi
130 \textfont2=\eightsy
131 \def\rm{\eightrm}
132 \def\bf{\eightbf}
133 \def\it{\eightit}
134 \def\tt{\eighttt}
135
136% FIXME - Try to make things more A4 friendly
137% \normalbaselineskip=.8\normalbaselineskip
138 \normalbaselineskip=.7\normalbaselineskip
139 \normallineskip=.8\normallineskip
140 \normallineskiplimit=.8\normallineskiplimit
141 \normalbaselines\rm %make definitions take effect
142
143 \if 2\ncolumns
144 \let\maxcolumn=b
145 \footline{\hss\rm\folio\hss}
146 \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
147 \else \if 3\ncolumns
148 \let\maxcolumn=c
149 \nopagenumbers
150 \else
151 \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
152 \errmessage{Illegal number of columns per page}
153 \fi\fi
154
155 \intercolumnskip=.46in
156 \def\abc{a}
157 \output={% %see The TeXbook page 257
158 % This next line is useful when designing the layout.
159 %\immediate\write16{Column \folio\abc\space starts with \firstmark}
160 \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
161 \else\if a\abc
162 \global\setbox\columna\columnbox \global\def\abc{b}
163 %% in case we never use \columnb (two-column mode)
164 \global\setbox\columnb\hbox to -\intercolumnskip{}
165 \else
166 \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
167 \def\multicolumnformat{\shipout\vbox{\makeheadline
168 \hbox{\box\columna\hskip\intercolumnskip
169 \box\columnb\hskip\intercolumnskip\columnbox}
170 \makefootline}\advancepageno}
171 \def\columnbox{\leftline{\pagebody}}
172
173 \def\bye{\par\vfill\supereject
174 \if a\abc \else\null\vfill\eject\fi
175 \if a\abc \else\null\vfill\eject\fi
176 \end}
177\fi
178
179% we won't be using math mode much, so redefine some of the characters
180% we might want to talk about
181%\catcode`\^=12
182\catcode`\_=12
183
184% we also need the tilde, for file names.
185\catcode`\~=12
186
187\chardef\\=`\\
188\chardef\{=`\{
189\chardef\}=`\}
190
191\hyphenation{mini-buf-fer}
192
193\parindent 0pt
194\parskip 1ex plus .5ex minus .5ex
195
196\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
197
198% newcolumn - force a new column. Use sparingly, probably only for
199% the first column of a page, which should have a title anyway.
200\outer\def\newcolumn{\vfill\eject}
201
202% title - page title. Argument is title text.
203\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
204
205% section - new major section. Argument is section name.
206\outer\def\section#1{\par\filbreak
207 \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
208 \vskip 2ex plus 1ex minus 1.5ex}
209
210\newdimen\keyindent
211
212% beginindentedkeys...endindentedkeys - key definitions will be
213% indented, but running text, typically used as headings to group
214% definitions, will not.
215\def\beginindentedkeys{\keyindent=1em}
216\def\endindentedkeys{\keyindent=0em}
217\endindentedkeys
218
219% paralign - begin paragraph containing an alignment.
220% If an \halign is entered while in vertical mode, a parskip is never
221% inserted. Using \paralign instead of \halign solves this problem.
222\def\paralign{\vskip\parskip\halign}
223
224% \<...> - surrounds a variable name in a code example
225\def\<#1>{{\it #1\/}}
226
227% kbd - argument is characters typed literally. Like the Texinfo command.
228\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
229
230% beginexample...endexample - surrounds literal text, such a code example.
231% typeset in a typewriter font with line breaks preserved
232\def\beginexample{\par\leavevmode\begingroup
233 \obeylines\obeyspaces\parskip0pt\tt}
234{\obeyspaces\global\let =\ }
235\def\endexample{\endgroup}
236
237% key - definition of a key.
238% \key{description of key}{key-name}
239% prints the description left-justified, and the key-name in a \kbd
240% form near the right margin.
241\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
242 {\hsize=.75\hsize\rightskip=1em
243 \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
244
245\newbox\metaxbox
246\setbox\metaxbox\hbox{\kbd{M-x }}
247\newdimen\metaxwidth
248\metaxwidth=\wd\metaxbox
249
250% metax - definition of a M-x command.
251% \metax{description of command}{M-x command-name}
252% Tries to justify the beginning of the command name at the same place
253% as \key starts the key name. (The "M-x " sticks out to the left.)
254\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
255 {\hskip\keyindent\relax#1\hfil}%
256 \hskip -\metaxwidth minus 1fil
257 \kbd{#2}\hfil}}
258
259% threecol - like "key" but with two key names.
260% for example, one for doing the action backward, and one for forward.
261\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
262 &\kbd{#3}\hfil\quad\cr}
263
264%**end of header
265
266
267\title{Org-Mode Reference Card (1/2)}
268
269\centerline{(for version \orgversionnumber)}
270
271\section{Getting Started}
272%
273Put the following in your \kbd{~/.emacs}$^1$
274\vskip -1mm
275\beginexample%
276(autoload 'org-mode "org" "Org mode" t)
277(autoload 'org-diary "org" "Org mode diary entries")
278(autoload 'org-agenda "org" "Agenda from Org files" t)
279(autoload 'org-store-link "org" "Store org link" t)
280(autoload 'orgtbl-mode "org" "Orgtbl minor mode" t)
281(autoload 'turn-on-orgtbl "org" "Orgtbl minor mode")
282(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
283(define-key global-map "\\C-cl" 'org-store-link)$^2$
284(define-key global-map "\\C-ca" 'org-agenda)$^2$
285\endexample
286%
287\metax{For the many customization options try}{M-x org-customize}
288\metax{To read the on-line documentation try}{M-x org-info}
289
290\section{Visibility Cycling}
291
292\key{rotate current subtree between states}{TAB}
293\key{rotate entire buffer between states}{S-TAB}
294\key{show the whole file}{C-c C-a}
295%\key{show branches}{C-c C-k}
296
297\section{Motion}
298
299\key{next heading}{C-c C-n}
300\key{previous heading}{C-c C-p}
301\key{next heading, same level}{C-c C-f}
302\key{previous heading, same level}{C-c C-b}
303\key{backward to higher level heading}{C-c C-u}
304\key{jump to another place in document}{C-c C-j}
305
306\section{Structure Editing}
307
308\key{insert new heading at same level as current}{M-RET}
309\key{insert new TODO entry}{M-S-RET}
310
311\key{promote current heading up one level}{M-LEFT}
312\key{demote current heading down one level}{M-RIGHT}
313\key{promote current subtree up one level}{M-S-LEFT}
314\key{demote current subtree down one level}{M-S-RIGHT}
315
316\key{move subtree up}{M-S-UP}
317\key{move subtree down}{M-S-DOWN}
318\key{kill subtree}{C-c C-h C-w}
319\key{copy subtree}{C-c C-h M-w}
320\key{yank subtree}{C-c C-h C-y}
321
322\key{archive subtree}{C-c \$}
323To set archive location for current file, add a line like$^3$:
324\vskip -1mm
325\beginexample%
326\#+ARCHIVE: archfile::* Archived Tasks
327\endexample
328
329\section{Filtering and Sparse Trees}
330
331\key{show sparse tree for all matches of a regexp}{C-c /}
332\key{view TODO's in sparse tree}{C-c C-v}
333\key{create sparse tree with all deadlines due}{C-c C-w}
334\key{time sorted view of current org file}{C-c C-r}
335\key{agenda for the week}{C-c a$1$}
336\key{agenda for date at cursor}{C-c C-o}
337
338\section{TODO Items}
339
340\key{rotate the state of the current item}{C-c C-t}
341\key{view TODO items in a sparse tree}{C-c C-v}
342
343\key{set the priority of the current item}{C-c , [ABC]}
344\key{remove priority cookie from current item}{C-c , SPC}
345\key{raise priority of current item}{S-UP$^4$}
346\key{lower priority of current item}{S-DOWN$^4$}
347
348\vskip 1mm
349per-file TODO workflow states: add line(s) like$^3$:
350\vskip -1mm
351\beginexample%
352\#+SEQ_TODO: TODO PROCRASTINATE BLUFF DONE
353\endexample
354\vskip -1mm
355per-file TODO keywords: add line(s) like$^3$:
356\vskip -1mm
357\beginexample%
358\#+TYP_TODO: Phil home work DONE
359\endexample
360
361\section{Timestamps}
362
363\key{prompt for date and insert timestamp}{C-c .}
364\key{like \kbd{C-c} . but insert date and time format}{C-u C-c .}
365\key{insert DEADLINE timestamp}{C-c C-d}
366\key{insert SCHEDULED timestamp}{C-c C-s}
367\key{create sparse tree with all deadlines due}{C-c C-w}
368\key{the time between 2 dates in a time range}{C-c C-y}
369
370\key{change timestamp at cursor by $-1$ day}{S-LEFT$^4$}
371\key{change timestamp at cursor by $+1$ day}{S-RIGHT$^4$}
372\key{change year/month/day at cursor by $-1$}{S-DOWN$^4$}
373\key{change year/month/day at cursor by $+1$}{S-UP$^4$}
374
375\key{access the calendar for the current date}{C-c >}
376\key{insert timestamp matching date in calendar}{C-c <}
377\key{access agenda for current date}{C-c C-o}
378
379\key{While prompted for a date:}{}
380\key{... select date in calendar}{mouse-1/RET}
381\key{... scroll calendar back/forward one month}{< / >}
382\key{... forward/backward one day}{S-LEFT/RIGHT}
383\key{... forward/backward one week}{S-UP/DOWN}
384\key{... forward/backward one month}{M-S-LEFT/RIGT}
385
386\section{Links}
387
388\key{globally store link to the current location}{C-c l$^2$}
389\key{insert a link (TAB completes stored links)}{C-c C-l}
390\key{insert file link with file name completion}{C-u C-c C-l}
391
392\key{open link at point}{C-c C-o}
393\key{open file links in emacs}{C-u C-c C-o}
394\key{open link at point}{mouse-2}
395\key{open file links in emacs}{mouse-3}
396
397{\bf Link types}
398
399\key{\kbd{<http://www.astro.uva.nl/~dominik>}}{\rm on the web}
400\key{\kbd{<mailto:adent@galaxy.net>}}{\rm EMail address}
401\key{\kbd{<news:comp.emacs>}}{\rm Usenet group}
402\key{\kbd{<file:/home/dominik/img/mars.jpg>}}{\rm file, absolute}
403\key{\kbd{<file:papers/last.pdf>}}{\rm file, relative}
404\key{\kbd{<file:~/code/main.c:255>}}{\rm file with line nr.}
405\key{\kbd{<bbdb:Richard Stallman>}}{\rm BBDB person}
406\key{\kbd{<shell:ls *.org>}}{\rm shell command}
407\key{\kbd{<gnus:group>}}{\rm GNUS group}
408\key{\kbd{<gnus:group\#id>}}{\rm GNUS message}
409\key{\kbd{<vm:folder>}}{\rm VM folder}
410\key{\kbd{<vm:folder\#id>}}{\rm VM message}
411\key{\kbd{<vm://myself@some.where.org/folder\#id>}}{\rm VM remote}
412Wanderlust \kbd{<wl:...>} and RMAIL \kbd{<rmail:...>} like VM
413%\key{\kbd{<wl:folder>}}{\rm Wanderlust f.}
414%\key{\kbd{<wl:folder\#id>}}{\rm Wanderlust m.}
415%\key{\kbd{<rmail:folder>}}{\rm RMAIL folder}
416%\key{\kbd{<rmail:folder\#id>}}{\rm RMAIL msg}
417
418\section{Tables}
419
420%Org-mode has its own built-in intuitive table editor with unique
421%capabilities.
422
423{\bf Creating a table}
424
425\metax{insert a new Org-mode table}{M-x org-table-create}
426\metax{... or just start typing, e.g.}{|Name|Phone|Age RET |- TAB}
427\key{convert region to table}{C-c C-c}
428\key{... separator at least 3 spaces}{C-3 C-c C-c}
429%\key{... prompt for separator regexp}{C-u C-c C-c}
430
431{\bf Commands available inside tables}
432
433The following commands work when the cursor is {\it inside a table}.
434Outside of tables, the same keys may have other functionality.
435
436{\bf Re-aligning and field motion}
437
438\key{re-align the table without moving the cursor}{C-c C-c}
439\key{re-align the table, move to next field}{TAB}
440\key{move to previous field}{S-TAB}
441\key{re-align the table, move to next row}{RET}
442
443{\bf Row and column editing}
444
445\key{move the current column left}{M-LEFT}
446\key{move the current column right}{M-RIGHT}
447\key{kill the current column}{M-S-LEFT}
448\key{insert new column to left of cursor position}{M-S-RIGHT}
449
450\key{move the current row up}{M-UP}
451\key{move the current row down}{M-DOWN}
452\key{kill the current row or horizontal line}{M-S-UP}
453\key{insert new row above the current row}{M-S-DOWN}
454
455\key{insert horizontal line below the current row}{C-c -}
456\key{insert horizontal line above the current row}{C-u C-c -}
457
458{\bf Regions}
459
460\key{cut rectangular region}{C-c C-h C-w}
461\key{copy rectangular region}{C-c C-h M-w}
462\key{paste rectangular region}{C-c C-h C-y}
463\key{fill paragraph across selected cells}{C-c C-q}
464
465{\bf Calculations}
466
467Except for the summation commands, these need the Emacs calc package
468installed.
469
470\key{replace current field with result of formula}{C-c =}
471\key{... same calculation for rest of column}{C-u C-c =}
472\key{re-apply all stored equations to current line}{C-c *}
473\key{re-apply all stored equations to entire table}{C-u C-c *}
474
475\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
476in lines starting with: {\tt | \# |}.
477
478\key{rotate recalculation mark through \# * ! \^ \_ \$}{C-\#}
479
480\key{display column number cursor is in}{C-c ?}
481\key{sum numbers in current column/rectangle}{C-c +}
482\key{copy down with increment}{S-RET$^4$}
483
484A formula can also be typed directly into into a field. It will be
485executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}:
486
487\key{Example: Add Col1 and Col2}{=\$1+\$2}
488\key{... with printf format specification}{=\$1+\$2;\%.2f}
489\key{... with constants from constants.el}{=\$1/\$c/\$cm}
490\key{Apply current (for this column) formula}{=}
491\key{Sum all numbers above/left of cursor}{=sum / =sumh}
492\key{Sum just the 3 fields closest to cursor}{=sum3/=sumh3}
493
494{\bf Miscellaneous}
495
496\key{toggle visibility of vertical lines}{C-c |}
497\metax{export as tab-separated file}{M-x org-table-export}
498\metax{import tab-separated file}{M-x org-table-import}
499
500{\bf Tables created with the \kbd{table.el} package}
501
502\key{insert a new \kbd{table.el} table}{C-c ~}
503\key{recognize existing table.el table}{C-c C-c}
504\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
505
506\newcolumn
507\title{Org-Mode Reference Card (2/2)}
508
509\centerline{(for version \orgversionnumber)}
510
511\section{Timeline and Agenda}
512
513\key{show timeline of current org file}{C-c C-r}
514\key{... include past dates}{C-u C-c C-r}
515
516\key{add current file to your agenda}{C-c [}
517\key{remove current file from your agenda}{C-c ]}
518\key{compile agenda for the current week}{C-c a$^2$}
519\key{agenda for date at cursor}{C-c C-o}
520\vskip 1mm
521To set category for current file, add line$^3$:
522\vskip -1mm
523\beginexample%
524\#+CATEGORY: MyCateg
525\endexample
526
527{\bf Commands available in an agenda buffer}
528
529The agenda buffer is electric: single key presses execute commands.
530
531{\bf View org file}
532
533\key{show original location of item}{SPC}
534\key{... also available with}{mouse-3}
535\key{show and recenter window}{l}
536\key{goto original location in other window}{TAB}
537\key{... also available with}{mouse-2}
538\key{goto original location, delete other windows}{RET}
539\key{toggle follow-mode}{f}
540
541{\bf Change display}
542
543\key{delete other windows}{o}
544\key{switch to weekly view}{w}
545\key{switch to daily view}{d}
546\key{toggle inclusion of diary entries}{D}
547\key{toggle time grid for daily schedule}{g}
548\key{refresh agenda buffer with any changes}{r}
549\key{display the following \kbd{org-agenda-ndays}}{RIGHT}
550\key{display the previous \kbd{org-agenda-ndays}}{LEFT}
551\key{goto today}{.}
552
553{\bf Remote editing}
554
555\key{digit argument}{0-9}
556
557\key{change state of current TODO item}{t}
558\key{set priority of current item}{p}
559\key{raise priority of current item}{S-UP$^4$}
560\key{lower priority of current item}{S-DOWN$^4$}
561\key{display weighted priority of current item}{P}
562
563\key{change timestamp to one day earlier}{S-LEFT$^4$}
564\key{change timestamp to one day later}{S-RIGHT$^4$}
565\key{change timestamp to today}{>}
566
567\key{insert new entry into diary}{i}
568
569{\bf Calendar commands}
570
571\key{find agenda cursor date in calendar}{c}
572\key{compute agenda for calendar cursor date}{c}
573\key{show phases of the moon}{M}
574\key{show sunrise/sunset times}{S}
575\key{show holidays}{H}
576\key{convert date to other calendars}{C}
577
578{\bf Quit and Exit}
579
580\key{quit agenda, remove agenda buffer}{q}
581\key{exit agenda, remove all agenda buffers}{x}
582
583\section{Exporting}
584
585Exporting creates files with extensions {\it .txt\/} and {\it .html\/}
586in the current directory.
587
588\key{export as ASCII file}{C-c C-x a}
589\key{export visible text only (e.g. for printing)}{C-c C-x v}
590\key{export as HTML file}{C-c C-x h}
591\key{export as HTML and open in browser}{C-c C-x C-h}
592\key{prefix arg sets nb. of headline levels, e.g.}{C-3 C-c C-x h}
593
594\key{insert template of export options}{C-c C-x t}
595
596\key{toggle fixed width for line or region}{C-c :}
597
598{\bf HTML formatting}
599
600\key{make words {\bf bold}}{*bold*}
601\key{make words {\it italic}}{/italic/}
602\key{make words \underbar{underlined}}{_underlined_}
603\key{sub- and superscripts}{x\^{}3, J_dust}
604\key{\TeX{}-like macros}{\\alpha, \\to}
605\key{typeset lines in fixed width font}{start with :}
606\key{tables are exported as HTML tables}{start with |}
607\key{links become HTML links}{http:... etc}
608\key{include html tags}{@<b>...@</b>}
609
610{\bf Export options}
611
612Include additional information for export by putting these anywhere in the
613org file. Use {\tt M-TAB} completion to make sure to get the right
614keywords. {\tt M-TAB} again just after keyword is complete inserts examples.
615
616\key{the title to be shown}{\#+TITLE:}
617\key{the author}{\#+AUTHOR:}
618\key{authors email address}{\#+EMAIL:}
619\key{language code for html}{\#+LANGUAGE:}
620\key{free text description of file}{\#+TEXT:}
621\key{... which can carry over multiple lines}{\#+TEXT:}
622\key{settings for the export process - see below}{\#+OPTIONS:}
623
624{\bf Settings for the OPTIONS line}
625
626\key{set number of headline levels for export}{H:2}
627\key{turn on/off section numbers}{num:t}
628\key{turn on/off table of contents}{toc:t}
629\key{turn on/off linebreak preservation}{\\n:nil}
630\key{turn on/off quoted html tags}{@:t}
631\key{turn on/off fixed width sections}{::t}
632\key{turn on/off tables}{|:t}
633\key{turn on/off \TeX\ syntax for sub/super-scripts}{\^{}:t}
634\key{turn on/off emphasised text}{*:nil}
635\key{turn on/off \TeX\ macros}{TeX:t}
636
637{\bf Comments: Text not being exported}
638
639Text before the first headline is not considered part of the document
640and is therefore never exported.
641Lines starting with \kbd{\#} are comments and are not exported.
642Subtrees whose header starts with COMMENT are never exported.
643
644\key{toggle COMMENT keyword on entry}{C-c ;}
645
646\section{Completion}
647
648In-buffer completion completes TODO keywords at headline start, TeX
649macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'',
650keyword formulas after ``{\tt =}'', and dictionary words elsewhere.
651
652\key{Complete word at point}{M-TAB}
653
654\newcolumn
655
656\section{Calendar and Diary Integration}
657
658To include entries from the Emacs diary in your Org-mode agenda:
659\beginexample%
660(setq org-agenda-include-diary t)
661\endexample
662
663To include your Org-mode agenda in your normal diary, make sure you're
664using the fancy diary display
665%
666%\beginexample%
667%(add-hook 'diary-display-hook 'fancy-diary-display)
668%\endexample
669%
670and in your \kbd{~/diary} file add
671
672\beginexample%
673\&\%\%(org-diary)
674\endexample
675
676to include all the files listed in \kbd{org-agenda-files}. For more
677selective file inclusion use a line for each file:
678
679\beginexample%
680\&\%\%(org-diary) ~/path/to/some/org-file.org
681\endexample
682
683\section{Remember-mode Integration}
684
685See the manual for how to make remember.el use Org-mode links and
686files. The note-finishing command \kbd{C-c C-c} will first prompt for
687an org file. In the file, find a location with:
688
689\key{rotate subtree visibility}{TAB}
690\key{next heading}{DOWN}
691\key{previous heading}{UP}
692
693Insert the note with one of the following:
694
695\key{as sublevel of heading at cursor}{RET}
696\key{right here (cursor not on heading)}{RET}
697\key{before current heading}{LEFT}
698\key{after current heading}{RIGHT}
699\key{shortcut to end of buffer (cursor at buf-start)}{RET}
700\key{Abort}{q}
701
702\section{CUA and pc-select compatibility}
703
704Configure the variable {\tt org-CUA-compatibility} to make Org-mode
705avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
706Org-mode will change the following keybindings (also in the agenda
707buffer, but not during date selection). See note mark four$^4$
708throughout the reference card.
709%\vskip-mm
710\beginexample
711S-UP $\to$ M-p S-DOWN $\to$ M-n
712S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
713S-RET $\to$ C-S-RET
714\endexample
715
716\section{Notes}
717$^1$ The six autoload forms are only needed if Org-mode is not part of
718Emacs, or an XEmacs package.
719
720$^2$ This is only a suggestion for a binding of this command. Choose
721you own key as shown under INSTALLATION.
722
723$^3$ After changing a \kbd{\#+KEYWORD} line, press \kbd{C-c C-c} with
724the cursor still in a line to make Org-mode notice the change.
725
726$^4$ Keybinding affected by {\tt org-CUA-compatibility}.
727
728\copyrightnotice
729
730\bye
731
732% Local variables:
733% compile-command: "tex ord-mode-ref"
734% TeX-master: t
735% End:
736
737% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
diff --git a/leim/COPYING b/leim/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/leim/COPYING
+++ b/leim/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 551d7e1cfda..f3cfd9f7bba 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,8 @@
12005-06-28 Kenichi Handa <handa@m17n.org>
2
3 * leim-ext.el: Add rules for inserting full-width space for
4 quail/Punct and quail/Punct-b5.
5
12005-06-04 Eli Zaretskii <eliz@gnu.org> 62005-06-04 Eli Zaretskii <eliz@gnu.org>
2 7
3 * makefile.w32-in (distclean): Fix a typo (colon was after 8 * makefile.w32-in (distclean): Fix a typo (colon was after
diff --git a/leim/leim-ext.el b/leim/leim-ext.el
index ad5d22281d8..c15bfaa09e0 100644
--- a/leim/leim-ext.el
+++ b/leim/leim-ext.el
@@ -34,6 +34,12 @@
34(eval-after-load "quail/PY-b5" 34(eval-after-load "quail/PY-b5"
35 '(quail-defrule "ling2" ?$(0!r(B nil t)) 35 '(quail-defrule "ling2" ?$(0!r(B nil t))
36 36
37;; Enable inputting full-width space (U+3000).
38(eval-after-load "quail/Punct"
39 '(quail-defrule " " ?$A!!(B nil t))
40(eval-after-load "quail/Punct-b5"
41 '(quail-defrule " " ?$(0!!(B nil t))
42
37(autoload 'ucs-input-activate "quail/uni-input" 43(autoload 'ucs-input-activate "quail/uni-input"
38 "Activate UCS input method. 44 "Activate UCS input method.
39With arg, activate UCS input method if and only if arg is positive. 45With arg, activate UCS input method if and only if arg is positive.
diff --git a/lib-src/COPYING b/lib-src/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/lib-src/COPYING
+++ b/lib-src/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/lisp/COPYING b/lisp/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/lisp/COPYING
+++ b/lisp/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 4efa62aa2c3..2c566f3fb1f 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,641 @@
12005-07-04 Carsten Dominik <dominik@science.uva.nl>
2
3 * textmodes/org.el: Leading space replaced by TABS.
4 (org-recalc-marks, org-table-rotate-recalc-marks)
5 (org-table-get-specials): Treat "^" and "_" marks.
6 (org-table-justify-field-maybe): Optional argument NEW.
7 (org-table-eval-formula): Parsing of the format simplified. New
8 modes C,I. Honor the %= parameter in the current table. Avoid
9 unnecessary re-align by using the NEW argument to
10 `org-table-justify-field-maybe'.
11 (org-calc-default-modes): Default for date-format mimicks
12 org-mode.
13 (org-agenda, org-timeline): Quote argument in
14 `org-agenda-redo-command'.
15
162005-07-03 Luc Teirlinck <teirllm@auburn.edu>
17
18 * cus-face.el (custom-theme-set-faces): Make it handle face
19 aliases whose alias declarations are pre- or autoloaded.
20
212005-07-04 Juri Linkov <juri@jurta.org>
22
23 * faces.el (read-face-name): Put the code for getting a face name
24 from the buffer before adding the faces from the `face' property.
25 Use `completing-read-multiple' instead of `completing-read'.
26 Require `crm'. Add default value and post-process the returned
27 list of faces.
28
29 * emacs-lisp/crm.el (crm-find-current-element)
30 (crm-minibuffer-complete-and-exit): Handle minibuffer prompt.
31
32 * emacs-lisp/lisp-mode.el (eval-defun-1):
33 * emacs-lisp/edebug.el (edebug-eval-defun):
34 Remove unnecessary quotes.
35
362005-07-04 Juanma Barranquero <lekktu@gmail.com>
37
38 * add-log.el (add-change-log-entry):
39 * comint.el (comint-dynamic-list-input-ring)
40 (comint-dynamic-list-completions):
41 * dabbrev.el (dabbrev-expand):
42 * delim-col.el (delimit-columns-rectangle-line):
43 * diff-mode.el (diff-context->unified, diff-reverse-direction)
44 (diff-unified->context):
45 * ediff-init.el (ediff-abbrev-jobname):
46 * ediff-mult.el (ediff-replace-session-status-in-meta-buffer)
47 (ediff-replace-session-activity-marker-in-meta-buffer):
48 * info.el (Info-summary):
49 * lpr.el (printify-region):
50 * printing.el (pr-create-interface):
51 * ps-print.el (ps-print-quote):
52 * ses.el (ses-column-widths, ses-print-cell)
53 (ses-adjust-print-width, ses-center):
54 * shell.el (shell-file-name-quote-list):
55 * strokes.el (strokes-read-stroke, strokes-read-complex-stroke)
56 (strokes-fill-current-buffer-with-whitespace)
57 (strokes-xpm-for-stroke, strokes-list-strokes)
58 (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string):
59 * term.el (term-dynamic-list-input-ring)
60 (term-dynamic-list-completions):
61 * calc/calc.el (math-format-stack-value):
62 * emacs-lisp/edebug.el (edebug-display-freq-count):
63 * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment)
64 (delphi-new-comment-line):
65 * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right):
66 * progmodes/executable.el (executable-set-magic):
67 * progmodes/python.el (inferior-python-mode):
68 * progmodes/scheme.el (scheme-mode-syntax-table):
69 * progmodes/sh-script.el (sh-maybe-here-document):
70 * progmodes/sql.el (sql-copy-column):
71 * progmodes/tcl.el (tcl-comment-indent, tcl-quote):
72 * textmodes/bibtex.el (bibtex-mode):
73 * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes)
74 (sgml-auto-attributes):
75 * textmodes/table.el (table-insert, table-shorten-cell)
76 (table--generate-source-scan-lines, table-delete-row)
77 (*table--cell-delete-char, table--spacify-frame)
78 (table--horizontally-shift-above-and-below)
79 (table--cell-insert-char, table--cell-blank-str)
80 (table--fill-region-strictly):
81 * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent):
82 * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s".
83
84 * add-log.el (change-log):
85 * apropos.el (apropos):
86 * comint.el (comint-completion, comint-source):
87 * dabbrev.el (dabbrev):
88 * delim-col.el (columns):
89 * diff-mode.el (diff-mode):
90 * ediff.el (ediff):
91 * ediff-diff.el (ediff-diff):
92 * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook):
93 * ediff-mult.el (ediff-mult):
94 * ediff-ptch.el (ediff-ptch):
95 * ediff-wind.el (ediff-window):
96 * facemenu.el (facemenu):
97 * indent.el (indent):
98 * info.el (info):
99 * jka-cmpr-hook.el (compression, jka-compr):
100 * lpr.el (lpr):
101 * outline.el (outlines):
102 * pcmpl-cvs.el (pcmpl-cvs):
103 * pcmpl-rpm.el (pcmpl-rpm):
104 * printing.el (printing):
105 * ps-print.el (postscript, ps-print, ps-print-horizontal)
106 (ps-print-vertical, ps-print-headers, ps-print-font)
107 (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra)
108 (ps-print-background, ps-print-printer, ps-print-page)
109 (ps-print-miscellany):
110 * ses.el (ses):
111 * shell.el (shell, shell-directories, shell-faces):
112 * startup.el (initialization):
113 * strokes.el (strokes):
114 * term.el (term):
115 * uniquify.el (uniquify):
116 * w32-vars.el (w32):
117 * calc/calc.el (calc):
118 * emacs-lisp/bytecomp.el (bytecomp):
119 * emacs-lisp/cl-indent.el (lisp-indent):
120 * emacs-lisp/edebug.el (edebug):
121 * emacs-lisp/elp.el (elp):
122 * emacs-lisp/testcover.el (testcover):
123 * emacs-lisp/trace.el (trace):
124 * emulation/viper-ex.el (viper-ex):
125 * emulation/viper-mous.el (viper-mouse):
126 * mail/mailalias.el (mailalias):
127 * mail/supercite.el (supercite, supercite-frames)
128 (supercite-attr, supercite-cite, supercite-hooks):
129 * net/rcompile.el (remote-compile):
130 * net/rlogin.el (rlogin):
131 * obsolete/ooutline.el (outlines):
132 * progmodes/delphi.el (delphi):
133 * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special)
134 (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal)
135 (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic)
136 (ebnf-optimization):
137 * progmodes/etags.el (etags):
138 * progmodes/executable.el (executable):
139 * progmodes/idlwave.el (idlwave):
140 * progmodes/pascal.el (pascal):
141 * progmodes/prolog.el (prolog):
142 * progmodes/python.el (python):
143 * progmodes/scheme.el (scheme):
144 * progmodes/sh-script.el (sh, sh-script):
145 * progmodes/sql.el (SQL):
146 * progmodes/tcl.el (tcl):
147 * textmodes/bibtex.el (bibtex, bibtex-autokey):
148 * textmodes/enriched.el (enriched):
149 * textmodes/makeinfo.el (makeinfo):
150 * textmodes/sgml-mode.el (sgml):
151 * textmodes/table.el (table-hooks):
152 * textmodes/tex-mode.el (tex-file, tex-run, tex-view):
153 * textmodes/texinfo.el (texinfo):
154 * textmodes/two-column.el (two-column):
155 Finish `defgroup' description with period.
156
157 * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking):
158 * eshell/esh-var.el (eshell-var):
159 * progmodes/vhdl-mode.el (vhdl-testbench):
160 * textmodes/org.el (org): Fix typos in docstrings.
161
162 * emacs-lisp/timer.el (with-timeout): Improve argument/docstring
163 consistency.
164
165 * progmodes/flymake.el (flymake-find-file): Remove.
166 (flymake-float-time): Use `with-no-warnings'.
167 (flymake-check-start-time, flymake-check-was-interrupted)
168 (flymake-err-info, flymake-is-running, flymake-last-change-time)
169 (flymake-new-err-info): `defvar' at compile time.
170
1712005-07-03 Juanma Barranquero <lekktu@gmail.com>
172
173 * replace.el (occur-hook): Doc fix.
174 (occur-1): Don't call `occur-hook' if there are no matches.
175
1762005-07-03 Richard M. Stallman <rms@gnu.org>
177
178 * emulation/tpu-edt.el (tpu-original-global-map): Don't copy
179 global-map, save the same map.
180 (global-map): Don't alter it at top level.
181 (tpu-edt-on): Save global map in tpu-original-global-map, then copy.
182 Then alter it here instead.
183 (tpu-edt-off): Set global-map to the saved one.
184
185 * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted.
186 All references simplified.
187 (tpu-lucid-emacs-p): Renamed from tpu-lucid-emacs19-p. Uses changed.
188 (zmacs-regions): Add defvar.
189 (repeat-complex-command-map): Everything about that deleted.
190
191 * textmodes/artist.el (artist-key-is-drawing)
192 (artist-key-endpoint1, artist-key-poly-point-list)
193 (artist-key-shape, artist-key-draw-how, artist-popup-menu-table)
194 (artist-key-compl-table, artist-rb-save-data)
195 (artist-arrow-point-1, artist-arrow-point-2): Move defvars up.
196 Don't put them in eval-when-compile.
197 (artist-set-arrow-points-for-poly): Use `last', not `artist-last'.
198
199 * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file):
200 Use with-no-warnings.
201
202 * net/browse-url.el (dos-windows-version): Add defvar.
203
204 * mail/supercite.el (filladapt-prefix-table): Add defvar.
205
206 * mail/rmailsum.el (rmail-summary-redo): Add defvar.
207 (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up.
208 (rmail-new-summary-line-count): Renamed from new-summary-line-count.
209 Add defvar.
210 (rmail-summary-beginning-of-message): Use with-no-warnings.
211 (rmail-summary-first-message, rmail-summary-last-message): Likewise.
212
213 * emulation/vip.el (vip-replace-string, ex-map, ex-read):
214 Use with-no-warnings.
215
216 * emulation/vi.el (vi-mark-region): Use c-mark-function.
217 (c-mark-function): Add point-moving-unit property.
218 (vi-goto-line): Use with-no-warnings.
219
220 * emulation/edt.el (edt-last-copied-word): Add defvar.
221 (zmacs-region-stays): Likewise.
222 (edt-mark-section-wisely): Use c-mark-function for C.
223 Use makr-defun for Fortran.
224 (time-string): defvar deleted.
225 (edt-display-the-time): Don't set time-string.
226
227 * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list.
228
229 * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
230 Don't warn when name is not constant
231 or for defining the group `emacs'.
232
233 * tooltip.el (gud-tooltip-mode): Add defvar.
234
235 * startup.el (default-frame-background-mode): Add defvar.
236
237 * smerge-mode.el (smerge-mode): Add duplicate defvar near top.
238
239 * info.el (tool-bar-map): Add defvar.
240
241 * dired.el (dnd-protocol-alist): Add defvar.
242
243 * dired-aux.el (dired-query): Display question with answer, when
244 the user answers.
245
246 * custom.el (custom-add-option): Doc fix.
247
248 * bookmark.el (Info-current-node, Info-suffix-list): Add defvars.
249
2502005-07-03 Eli Zaretskii <eliz@gnu.org>
251
252 * font-lock.el (font-lock-regexp-grouping-construct): Fix the
253 bogus name from the last change.
254
2552005-07-02 Luc Teirlinck <teirllm@auburn.edu>
256
257 * custom.el (custom-declare-variable): Fix typos in comment.
258 (custom-known-themes): Doc fix.
259 (custom-theme-directory): New defcustom.
260 (require-theme): Make it check `custom-theme-directory'.
261
262 * cus-theme.el (custom-new-theme-mode): New function.
263 (custom-theme-name, custom-theme-variables, custom-theme-faces)
264 (custom-theme-description): Add compiler defvars.
265 (customize-create-theme): Add doc to the "*New Custom Theme*"
266 buffer. Use `custom-new-theme-mode'.
267 (custom-theme-write): Put the created buffer in emacs-lisp-mode
268 and save it to the `custom-theme-directory'. Make this the
269 default directory of the buffer.
270
2712005-07-02 David Hunter <hunterd_42@comcast.net> (tiny change)
272
273 * progmodes/flymake.el (flymake-mode, flymake-mode-off):
274 Fix unbalanced parentheses.
275
2762005-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
277
278 * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body
279 into flymake-mode and delegate to flymake-mode.
280
281 * find-file.el (ff-which-function-are-we-in): Clean up.
282
2832005-07-02 Juanma Barranquero <lekktu@gmail.com>
284
285 * replace.el (occur-rename-buffer): Fix docstring.
286
287 * emulation/edt.el (*EDT-keys*, edt-default-global-map)
288 (edt-last-copied-word, edt-learn-macro-count)
289 (edt-orig-page-delimiter, edt-orig-transient-mark-mode)
290 (edt-rect-start-point, edt-user-global-map, rect-start-point)
291 (time-string, zmacs-region-stays):
292 * emulation/edt-mapper.el (edt-save-function-key-map)
293 (EDT-key-name): `defvar' to silence the byte-compiler.
294
2952005-07-02 Martin Rudalics <rudalics@gmx.at> (tiny change)
296
297 * font-lock.el (font-lock-regexp-grouping-backslash): Rename from
298 font-lock-regexp-backslash. Doc fix.
299 (font-lock-regexp-backslash-grouping-construct): Rename from
300 font-lock-regexp-backslash-construct. Doc fix.
301 (lisp-font-lock-keywords-2): Fix highlighting of ELisp regexp
302 grouping constructs.
303
3042005-07-02 Eli Zaretskii <eliz@gnu.org>
305
306 * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after
307 updating all the prerequisites.
308
3092005-07-01 Juanma Barranquero <lekktu@gmail.com>
310
311 * textmodes/org.el (org-agenda-start-on-weekday)
312 (org-calendar-to-agenda-key, org-agenda-sorting-strategy)
313 (org-agenda-use-time-grid, org-archive-location)
314 (org-allow-space-in-links, org-usenet-links-prefer-google)
315 (org-enable-table-editor, org-export-default-language)
316 (org-export-html-show-new-buffer, org-fill-paragraph)
317 (org-cycle, org-goto-ret, org-goto-left, org-goto-right)
318 (org-goto-quit, org-occur, org-eval-in-calendar)
319 (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message)
320 (org-agenda-diary-entry, org-remember-help)
321 (org-table-convert-region, org-at-table-p)
322 (org-table-move-row-down, org-table-move-row-up)
323 (org-table-copy-region, org-table-toggle-vline-visibility)
324 (org-table-get-stored-formulas, org-table-get-specials)
325 (org-recalc-commands, org-table-eval-formula)
326 (org-table-formula-substitute-names, orgtbl-make-binding)
327 (org-format-org-table-html, org-format-table-table-html)
328 (org-format-table-table-html-using-table-generate-source)
329 (org-customize): Fix typos in docstrings.
330 (org-level-2, org-at-timestamp-p, org-agenda-day-view)
331 (org-agenda-toggle-diary, org-agenda-toggle-time-grid)
332 (org-back-to-heading): Doc fixes.
333 (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time)
334 (org-agenda-change-all-lines, org-get-header):
335 Improve argument/docstring consistency.
336 (orgtbl-error): Fix error message.
337
338 * progmodes/flymake.el (flymake-find-possible-master-files)
339 (flymake-master-file-compare, flymake-get-line-err-count)
340 (flymake-highlight-line, flymake-gui-warnings-enabled):
341 Fix typos in docstrings.
342 (flymake-parse-line, flymake-get-project-include-dirs-function)
343 (flymake-get-prev-err-line-no, flymake-goto-prev-error):
344 Doc fixes.
345 (flymake-get-project-include-dirs-function)
346 (flymake-make-err-menu-data):
347 Improve argument/docstring consistency.
348
3492005-07-01 Lute Kamstra <lute@gnu.org>
350
351 * battery.el (battery-linux-proc-apm): Fix typo in docstring.
352 Catch errors with ignore-errors. Use temporary buffer.
353 (battery-linux-proc-acpi): Fix typo in docstring. Document `%r'.
354
355 * facemenu.el (facemenu-unlisted-faces): Delete foreground and
356 background color faces.
357 (facemenu-set-foreground, facemenu-set-background):
358 Use facemenu-set-face-from-menu.
359 (facemenu-set-face-from-menu): Treat face names that start with
360 "fg:" or "bg:" as special.
361 (facemenu-add-new-color): Don't create faces. Simplify.
362
3632005-06-30 Richard M. Stallman <rms@gnu.org>
364
365 * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt.
366 (crm-find-current-element): Likewise.
367
3682005-06-30 Johan Bockg,Ae(Brd <bojohan@users.sourceforge.net>
369
370 * help-fns.el (help-do-arg-highlight): Regexp-quote argument names.
371
3722005-06-30 Stefan Monnier <monnier@iro.umontreal.ca>
373
374 * arc-mode.el (archive-extract): Make it work as a mouse binding.
375 (archive-mouse-extract): Make it an obsolete alias.
376 (archive-mode-map): Don't use archive-mouse-extract any more.
377 (archive-mode, archive-extract): write-contents-hooks ->
378 write-contents-functions.
379 (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused
380 first arg.
381 (archive-rename-entry): Update the call.
382 (archive-zip-summarize): Remove unused var `method'.
383 (archive-lzh-summarize): Remove unused var `creator'.
384
385 * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the
386 dedicated frame upon exit.
387
388 * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only.
389 (archive-zip-extract, archive-zip-expunge)
390 (archive-zip-update, archive-zip-update-case): Use executable-find.
391 (archive-resummarize, archive-flag-deleted, archive-unmark-all-files):
392 Use restore-buffer-modified-p.
393 (archive-extract, archive-add-new-member, archive-write-file-member):
394 Use with-current-buffer.
395 (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist.
396
3972005-06-30 Andreas Schwab <schwab@suse.de>
398
399 * progmodes/gud.el (gud-filter): Remove unneeded progn.
400
4012005-06-30 Glenn Morris <gmorris@ast.cam.ac.uk>
402
403 * progmodes/sh-script.el (sh-get-kw): `&' also separates words.
404
4052005-06-30 Juri Linkov <juri@jurta.org>
406
407 * faces.el (vertical-border): Inherit from mode-line-inactive
408 only on tty.
409
4102005-06-30 Juanma Barranquero <lekktu@gmail.com>
411
412 * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for
413 example, -NLINES in the `occur' docstring).
414
415 * replace.el (occur-1): When no matches are found, do not set the
416 `buffer-read-only' and modified flags for the occur buffer,
417 because it is deleted.
418
419 * emulation/cua-base.el (cua-check-pending-input)
420 (cua-repeat-replace-region, cua-mode, cua-debug)
421 (cua-auto-tabify-rectangles, cua-inhibit-cua-keys):
422 Fix typos in docstrings.
423
424 * emulation/cua-gmrk.el (cua-toggle-global-mark)
425 (cua-cut-region-to-global-mark)
426 (cua--cut-rectangle-to-global-mark):
427 Remove period from end of messages.
428
429 * emulation/cua-rect.el (cua-do-rectangle-padding):
430 Remove period from end of messages.
431 (cua--rectangle-seq-format): Fix typo in docstring.
432 (cua-sequence-rectangle, cua-fill-char-rectangle):
433 Improve argument/docstring consistency.
434
4352005-06-29 Juri Linkov <juri@jurta.org>
436
437 * faces.el (default-frame-background-mode): New internal variable.
438 (frame-set-background-mode): Use it.
439
440 * startup.el (normal-top-level): Set default-frame-background-mode
441 instead of frame-background-mode. Before setting it, test for its
442 nil value. Remove tests for frame-background-mode and frame
443 parameter `reverse'. Add test for "unspecified-fg".
444
445 * term/xterm.el (xterm-rxvt-set-background-mode):
446 * term/rxvt.el (rxvt-set-background-mode):
447 Set default-frame-background-mode instead of frame-background-mode.
448
4492005-06-29 Juanma Barranquero <lekktu@gmail.com>
450
451 * simple.el (set-variable): Warn about obsolete user variables.
452
453 * imenu.el (imenu--completion-buffer):
454 * mouse.el (mouse-buffer-menu-alist):
455 * msb.el (msb-invisible-buffer-p):
456 * calendar/diary-lib.el (diary-header-line-format):
457 * emacs-lisp/pp.el (pp-buffer):
458 * progmodes/cperl-mode.el (cperl-do-auto-fill):
459 * textmodes/picture.el (picture-replace-match):
460 Change space constants followed by a sexp to "?\s ".
461
462 * play/decipher.el (decipher-loop-with-breaks):
463 * textmodes/texinfo.el (texinfo-insert-@item): Change space
464 constants "protected" from end of line by a comment to "?\s".
465
4662005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
467
468 * font-lock.el (save-buffer-state): Use `declare'.
469
470 * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
471 reset the syntax-table to cperl-mode-syntax-table.
472 (cperl-mode): Make _ into word-syntax during font-locking so "print" in
473 "foo_print_bar" is not matched as a reserved keyword.
474
4752005-06-29 Carsten Dominik <dominik@science.uva.nl>
476
477 * textmodes/org.el (orgtbl-setup): New function, for delayed
478 setup for the orgtbl commands.
479 (org-calc-default-modes): New option.
480 (orgtbl-make-binding): Use `defun' to get better help display.
481 (org-diary): Call `org-compile-prefix-format'.
482 (org-table-formula-substitute-names): New function.
483 (org-agenda-day-view, org-agenda-week-view): New commands.
484 (org-agenda-toggle-week-view): Command removed.
485 (org-tbl-menu): Split off from org-org-menu.
486 (org-mode): Move removal of outline-mode menus to here.
487 (org-table-formula-debug): New option.
488 (org-table-insert-row): Keep first field if just "#" or "*".
489 (org-mode): Paragraph regexps fixed.
490 (org-table-recalculate-regexp): New constant.
491 (org-table-justify-field-maybe): Avoid replace if not necessary.
492 (org-copy-special, org-cut-special): Use `call-interactively'.
493 (org-table-copy-region): Take region from `interactive' call.
494 (org-trim): Return string even if no match.
495 (org-formula): New face.
496 (org-set-font-lock-defaults): No longer highlight "FIXME".
497 But highlight formula-related fields in table.
498 (org-table-p): Use regexp, not fontification.
499 (org-table-align): Handle white space at end of line.
500 (org-table-formula-evaluate-inline): New option.
501 (org-mode): Auto-wrapping in comment lines turned off.
502 (org-table-copy-down): Evaluate only in copied field, not in
503 destination.
504 (org-table-current-formula): Variable removed.
505 (org-table-store-formulas, org-table-get-stored-formulas)
506 (org-table-modify-formulas, org-table-replace-in-formulas)
507 (org-table-maybe-eval-formula): New functions.
508 (org-table-get-formula): Modify to use stored formulas.
509 (org-table-insert-column, org-table-delete-column)
510 (org-table-move-column): Call `org-table-modify-formulas'.
511 (org-complete): Add completion for keyword formulas.
512 (orgtbl-mode): Pull orgtbl-mode-map to start of
513 minor-mode-map-alist.
514
5152005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
516
517 * progmodes/python.el (python-check): Require `compile' before
518 modifying its variables.
519
520 * newcomment.el (comment-indent-default): Don't get fooled by an early
521 end of buffer.
522
5232005-06-28 Vinicius Jose Latorre <viniciusjl@ig.com.br>
524
525 * ps-print.el (ps-print-version): Fix version number.
526
5272005-06-28 Luc Teirlinck <teirllm@auburn.edu>
528
529 * textmodes/ispell.el (ispell-word): Remove stray parenthesis.
530
5312005-06-28 Richard M. Stallman <rms@gnu.org>
532
533 * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
534 (flyspell-local-mouse-map): Declaration deleted.
535 (flyspell-mouse-map): Bind only mouse-2.
536 (flyspell-mode-map): Don't test flyspell-use-local-map.
537 (flyspell-overlay-keymap-property-name): Var deleted.
538 (flyspell-mode-on): Don't make local bindings for
539 flyspell-mouse-map and flyspell-mode-map.
540 (make-flyspell-overlay): Unconditionally put on `keymap' text prop.
541
542 * textmodes/ispell.el (ispell-word): Do not ignore short words.
543
544 * progmodes/compile.el (compilation-next-error-function):
545 Don't switch buffers; operate on the current buffer.
546
547 * facemenu.el (facemenu-add-face): Warn when font-lock is active.
548
549 * comint.el (comint-password-prompt-regexp): Accept ", try again".
550
551 * bindings.el (global-map): Bind insertchar and its variants.
552
5532005-06-27 Richard M. Stallman <rms@gnu.org>
554
555 * textmodes/artist.el (artist-text-overwrite)
556 (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
557
5582005-06-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
559
560 * ps-print.el: It was not working the page selection for printing.
561 Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
562 (ps-print-version): New version 6.6.7.
563 (ps-end-sheet): New fun.
564 (ps-header-sheet, ps-end-job): Call it.
565
5662005-06-27 Luc Teirlinck <teirllm@auburn.edu>
567
568 * subr.el (add-to-list, add-to-ordered-list): Doc fixes.
569
5702005-06-27 Lute Kamstra <lute@gnu.org>
571
572 * facemenu.el (facemenu-unlisted-faces): Add foreground and
573 background color faces.
574 (facemenu-get-face): Delete function.
575 (facemenu-set-face-from-menu): Don't call facemenu-get-face.
576 (facemenu-add-new-color): Make second argument mandatory.
577 Create the approprate face and return it. Simplify.
578 (facemenu-set-foreground, facemenu-set-background): Don't check if
579 color is defined. Use return value of facemenu-add-new-color.
580
5812005-06-26 Nick Roberts <nickrob@snap.net.nz>
582
583 * progmodes/gud.el (gud-filter): Add missing argument to
584 with-selected-window.
585
5862005-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
587
588 * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
589 a :require to the defcustom.
590
591 * emacs-lisp/autoload.el (make-autoload): Add the :setter for
592 defcustoms corresponding to minor modes.
593
5942005-06-26 David Ponce <david@dponce.com>
595
596 * recentf.el: Require tree-widget instead of wid-edit.
597 (recentf-filename-handler): Fix widget :type.
598 (recentf-cancel-dialog, recentf-open-more-files)
599 (recentf-open-files-action): Doc fix.
600 (recentf-dialog-goto-first): New function.
601 (recentf-dialog-mode-map): Set parent keymap first.
602 (recentf-dialog-mode): Define with define-derived-mode.
603 Don't display continuation lines in dialogs.
604 (recentf-edit-list): Rename from recentf-edit-selected-items.
605 (recentf-edit-list-select): Rename from recentf-edit-list-action.
606 Simplify.
607 (recentf-edit-list-validate): New function.
608 (recentf-edit-list): Update accordingly.
609 (recentf-open-files-item-shift): Remove.
610 (recentf-open-files-item): Convert menu elements into tree and
611 link widgets. Don't create the widgets.
612 (recentf-open-files): Update accordingly.
613 (recentf-save-list): Untabify.
614
12005-06-25 Luc Teirlinck <teirllm@auburn.edu> 6152005-06-25 Luc Teirlinck <teirllm@auburn.edu>
2 616
617 * replace.el (keep-lines-read-args): Add INTERACTIVE arg.
618 (keep-lines): Add INTERACTIVE arg. Never delete lines only
619 partially contained in the active region. Do not take active
620 region into account when called from Lisp, unless INTERACTIVE arg
621 is non-nil. Use `forward-line' instead of `beginning-of-line' to
622 avoid trouble with fields. Make marker point nowhere when no
623 longer used. Always return nil. Doc fix.
624 (flush-lines): Add INTERACTIVE arg. Do not take active region
625 into account when called from Lisp, unless INTERACTIVE arg is
626 non-nil. Use `forward-line' instead of `beginning-of-line' to
627 avoid trouble with fields. Make marker point nowhere when no
628 longer used. Always return nil. Doc fix.
629 (how-many): Add INTERACTIVE arg. Make RSTART and REND args
630 interchangeable. Do not take active region into account when
631 called from Lisp, unless INTERACTIVE arg is non-nil. Do not print
632 message in echo area when called from Lisp, unless INTERACTIVE arg
633 is non-nil. Avoid saying "1 occurrences". Do not use markers.
634 Return the number of matches. Doc fix.
635 (occur): Doc fix.
636 (perform-replace): Make comment follow double space convention for
637 the sake of `outline-minor-mode'.
638
3 * faces.el (facep): Doc fix. 639 * faces.el (facep): Doc fix.
4 640
52005-06-25 Richard M. Stallman <rms@gnu.org> 6412005-06-25 Richard M. Stallman <rms@gnu.org>
@@ -54,7 +690,7 @@
54 (line-move-1): When there are overlays around, use vertical-motion. 690 (line-move-1): When there are overlays around, use vertical-motion.
55 691
56 * faces.el (escape-glyph): Use brown against light background. 692 * faces.el (escape-glyph): Use brown against light background.
57 (nobreak-space): Renamed from no-break-space. 693 (nobreak-space): Rename from no-break-space.
58 Fix previous change. 694 Fix previous change.
59 695
60 * dired-aux.el (dired-do-copy): Fix arg prompt. 696 * dired-aux.el (dired-do-copy): Fix arg prompt.
@@ -108,7 +744,7 @@
108 * bindings.el (propertized-buffer-identification): Use renamed 744 * bindings.el (propertized-buffer-identification): Use renamed
109 `Buffer-menu-buffer' face. 745 `Buffer-menu-buffer' face.
110 746
111 * faces.el (vertical-border): Renamed from `vertical-divider'. 747 * faces.el (vertical-border): Rename from `vertical-divider'.
112 (escape-glyph): Change dark-background color back to `cyan'. 748 (escape-glyph): Change dark-background color back to `cyan'.
113 749
1142005-06-21 Juri Linkov <juri@jurta.org> 7502005-06-21 Juri Linkov <juri@jurta.org>
@@ -194,8 +830,7 @@
194 830
1952005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl> 8312005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl>
196 832
197 * progmodes/ps-mode.el: Update version and maintainer's email 833 * progmodes/ps-mode.el: Update version and maintainer's email address.
198 address.
199 834
2002005-06-18 Steve Youngs <steve@xemacs.org> 8352005-06-18 Steve Youngs <steve@xemacs.org>
201 836
@@ -283,8 +918,8 @@
283 New backward-compatibility aliases for renamed faces. 918 New backward-compatibility aliases for renamed faces.
284 (eshell-ls-decorated-name): Use renamed eshell-ls faces. 919 (eshell-ls-decorated-name): Use renamed eshell-ls faces.
285 920
286 * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove 921 * progmodes/cc-fonts.el (c-nonbreakable-space-face):
287 "-face" suffix from face name. 922 Remove "-face" suffix from face name.
288 (c-cpp-matchers): Use the variable `c-nonbreakable-space-face' 923 (c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
289 instead of literal face. 924 instead of literal face.
290 925
@@ -412,8 +1047,8 @@
412 ido-incomplete-regexp. 1047 ido-incomplete-regexp.
413 (ido-incomplete-regexp): New face. 1048 (ido-incomplete-regexp): New face.
414 (ido-completions): Use it. 1049 (ido-completions): Use it.
415 (ido-complete, ido-exit-minibuffer, ido-completions): Handle 1050 (ido-complete, ido-exit-minibuffer, ido-completions):
416 incomplete regexps. 1051 Handle incomplete regexps.
417 (ido-completions): Add check for complete match when entering a regexp. 1052 (ido-completions): Add check for complete match when entering a regexp.
418 1053
4192005-06-15 Stefan Monnier <monnier@iro.umontreal.ca> 10542005-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -442,6 +1077,11 @@
442 * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl 1077 * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
443 faces instead of (non-existent) variables. 1078 faces instead of (non-existent) variables.
444 1079
10802005-06-14 Stefan Monnier <monnier@iro.umontreal.ca>
1081
1082 * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
1083 (iswitchb-get-matched-buffers): Likewise. Simplify.
1084
4452005-06-14 Miles Bader <miles@gnu.org> 10852005-06-14 Miles Bader <miles@gnu.org>
446 1086
447 * progmodes/ld-script.el (ld-script-location-counter): 1087 * progmodes/ld-script.el (ld-script-location-counter):
diff --git a/lisp/add-log.el b/lisp/add-log.el
index 03f44976760..72eda86f131 100644
--- a/lisp/add-log.el
+++ b/lisp/add-log.el
@@ -33,7 +33,7 @@
33 (require 'timezone)) 33 (require 'timezone))
34 34
35(defgroup change-log nil 35(defgroup change-log nil
36 "Change log maintenance" 36 "Change log maintenance."
37 :group 'tools 37 :group 'tools
38 :link '(custom-manual "(emacs)Change Log") 38 :link '(custom-manual "(emacs)Change Log")
39 :prefix "change-log-" 39 :prefix "change-log-"
@@ -607,13 +607,13 @@ non-nil, otherwise in local time."
607 (beginning-of-line 1) 607 (beginning-of-line 1)
608 (looking-at "\\s *\\(\\*\\s *\\)?$")) 608 (looking-at "\\s *\\(\\*\\s *\\)?$"))
609 (insert ": ") 609 (insert ": ")
610 (if version (insert version ?\ ))) 610 (if version (insert version ?\s)))
611 ;; Make it easy to get rid of the function name. 611 ;; Make it easy to get rid of the function name.
612 (undo-boundary) 612 (undo-boundary)
613 (unless (save-excursion 613 (unless (save-excursion
614 (beginning-of-line 1) 614 (beginning-of-line 1)
615 (looking-at "\\s *$")) 615 (looking-at "\\s *$"))
616 (insert ?\ )) 616 (insert ?\s))
617 ;; See if the prev function name has a message yet or not. 617 ;; See if the prev function name has a message yet or not.
618 ;; If not, merge the two items. 618 ;; If not, merge the two items.
619 (let ((pos (point-marker))) 619 (let ((pos (point-marker)))
@@ -633,7 +633,7 @@ non-nil, otherwise in local time."
633 (insert "(")) 633 (insert "("))
634 (set-marker pos nil)) 634 (set-marker pos nil))
635 (insert defun "): ") 635 (insert defun "): ")
636 (if version (insert version ?\ ))))) 636 (if version (insert version ?\s)))))
637 637
638;;;###autoload 638;;;###autoload
639(defun add-change-log-entry-other-window (&optional whoami file-name) 639(defun add-change-log-entry-other-window (&optional whoami file-name)
diff --git a/lisp/apropos.el b/lisp/apropos.el
index b9d7e3ff41d..9ac6d32300d 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -61,7 +61,7 @@
61(eval-when-compile (require 'cl)) 61(eval-when-compile (require 'cl))
62 62
63(defgroup apropos nil 63(defgroup apropos nil
64 "Apropos commands for users and programmers" 64 "Apropos commands for users and programmers."
65 :group 'help 65 :group 'help
66 :prefix "apropos") 66 :prefix "apropos")
67 67
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 13f4559cfaf..ce2100c4f08 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -131,7 +131,7 @@
131 (make-temp-name 131 (make-temp-name
132 (expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp") 132 (expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp")
133 temporary-file-directory)) 133 temporary-file-directory))
134 "*Directory for temporary files made by arc-mode.el" 134 "Directory for temporary files made by arc-mode.el."
135 :type 'directory 135 :type 'directory
136 :group 'archive) 136 :group 'archive)
137 137
@@ -218,11 +218,10 @@ Archive and member name will be added."
218;; Zip archive configuration 218;; Zip archive configuration
219 219
220(defcustom archive-zip-extract 220(defcustom archive-zip-extract
221 (if (locate-file "unzip" nil 'file-executable-p) 221 (if (and (not (executable-find "unzip"))
222 '("unzip" "-qq" "-c") 222 (executable-find "pkunzip"))
223 (if (locate-file "pkunzip" nil 'file-executable-p) 223 '("pkunzip" "-e" "-o-")
224 '("pkunzip" "-e" "-o-") 224 '("unzip" "-qq" "-c"))
225 '("unzip" "-qq" "-c")))
226 "*Program and its options to run in order to extract a zip file member. 225 "*Program and its options to run in order to extract a zip file member.
227Extraction should happen to standard output. Archive and member name will 226Extraction should happen to standard output. Archive and member name will
228be added. If `archive-zip-use-pkzip' is non-nil then this program is 227be added. If `archive-zip-use-pkzip' is non-nil then this program is
@@ -239,11 +238,10 @@ expected to extract to a file junking the directory part of the name."
239;; names. 238;; names.
240 239
241(defcustom archive-zip-expunge 240(defcustom archive-zip-expunge
242 (if (locate-file "zip" nil 'file-executable-p) 241 (if (and (not (executable-find "zip"))
243 '("zip" "-d" "-q") 242 (executable-find "pkzip"))
244 (if (locate-file "pkzip" nil 'file-executable-p) 243 '("pkzip" "-d")
245 '("pkzip" "-d") 244 '("zip" "-d" "-q"))
246 '("zip" "-d" "-q")))
247 "*Program and its options to run in order to delete zip file members. 245 "*Program and its options to run in order to delete zip file members.
248Archive and member names will be added." 246Archive and member names will be added."
249 :type '(list (string :tag "Program") 247 :type '(list (string :tag "Program")
@@ -253,11 +251,10 @@ Archive and member names will be added."
253 :group 'archive-zip) 251 :group 'archive-zip)
254 252
255(defcustom archive-zip-update 253(defcustom archive-zip-update
256 (if (locate-file "zip" nil 'file-executable-p) 254 (if (and (not (executable-find "zip"))
257 '("zip" "-q") 255 (executable-find "pkzip"))
258 (if (locate-file "pkzip" nil 'file-executable-p) 256 '("pkzip" "-u" "-P")
259 '("pkzip" "-u" "-P") 257 '("zip" "-q"))
260 '("zip" "-q")))
261 "*Program and its options to run in order to update a zip file member. 258 "*Program and its options to run in order to update a zip file member.
262Options should ensure that specified directory will be put into the zip 259Options should ensure that specified directory will be put into the zip
263file. Archive and member name will be added." 260file. Archive and member name will be added."
@@ -268,11 +265,10 @@ file. Archive and member name will be added."
268 :group 'archive-zip) 265 :group 'archive-zip)
269 266
270(defcustom archive-zip-update-case 267(defcustom archive-zip-update-case
271 (if (locate-file "zip" nil 'file-executable-p) 268 (if (and (not (executable-find "zip"))
272 '("zip" "-q" "-k") 269 (executable-find "pkzip"))
273 (if (locate-file "pkzip" nil 'file-executable-p) 270 '("pkzip" "-u" "-P")
274 '("pkzip" "-u" "-P") 271 '("zip" "-q" "-k"))
275 '("zip" "-q" "-k")))
276 "*Program and its options to run in order to update a case fiddled zip member. 272 "*Program and its options to run in order to update a case fiddled zip member.
277Options should ensure that specified directory will be put into the zip file. 273Options should ensure that specified directory will be put into the zip file.
278Archive and member name will be added." 274Archive and member name will be added."
@@ -371,7 +367,7 @@ Archive and member name will be added."
371 (substitute-key-definition 'undo 'archive-undo map global-map)) 367 (substitute-key-definition 'undo 'archive-undo map global-map))
372 368
373 (define-key map 369 (define-key map
374 (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-mouse-extract) 370 (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-extract)
375 371
376 (if (featurep 'xemacs) 372 (if (featurep 'xemacs)
377 () ; out of luck 373 () ; out of luck
@@ -637,8 +633,7 @@ archive.
637 633
638 ;; Remote archives are not written by a hook. 634 ;; Remote archives are not written by a hook.
639 (if archive-remote nil 635 (if archive-remote nil
640 (make-local-variable 'write-contents-hooks) 636 (add-hook 'write-contents-functions 'archive-write-file nil t))
641 (add-hook 'write-contents-hooks 'archive-write-file))
642 637
643 (make-local-variable 'require-final-newline) 638 (make-local-variable 'require-final-newline)
644 (setq require-final-newline nil) 639 (setq require-final-newline nil)
@@ -715,7 +710,7 @@ Optional argument SHUT-UP, if non-nil, means don't print messages
715when parsing the archive." 710when parsing the archive."
716 (widen) 711 (widen)
717 (set-buffer-multibyte nil) 712 (set-buffer-multibyte nil)
718 (let (buffer-read-only) 713 (let ((inhibit-read-only t))
719 (or shut-up 714 (or shut-up
720 (message "Parsing archive file...")) 715 (message "Parsing archive file..."))
721 (buffer-disable-undo (current-buffer)) 716 (buffer-disable-undo (current-buffer))
@@ -733,11 +728,11 @@ when parsing the archive."
733 "Recreate the contents listing of an archive." 728 "Recreate the contents listing of an archive."
734 (let ((modified (buffer-modified-p)) 729 (let ((modified (buffer-modified-p))
735 (no (archive-get-lineno)) 730 (no (archive-get-lineno))
736 buffer-read-only) 731 (inhibit-read-only t))
737 (widen) 732 (widen)
738 (delete-region (point-min) archive-proper-file-start) 733 (delete-region (point-min) archive-proper-file-start)
739 (archive-summarize t) 734 (archive-summarize t)
740 (set-buffer-modified-p modified) 735 (restore-buffer-modified-p modified)
741 (goto-char archive-file-list-start) 736 (goto-char archive-file-list-start)
742 (archive-next-line no))) 737 (archive-next-line no)))
743 738
@@ -751,19 +746,18 @@ when parsing the archive."
751 (apply 746 (apply
752 (function concat) 747 (function concat)
753 (mapcar 748 (mapcar
754 (function 749 (lambda (fil)
755 (lambda (fil) 750 ;; Using `concat' here copies the text also, so we can add
756 ;; Using `concat' here copies the text also, so we can add 751 ;; properties without problems.
757 ;; properties without problems. 752 (let ((text (concat (aref fil 0) "\n")))
758 (let ((text (concat (aref fil 0) "\n"))) 753 (if (featurep 'xemacs)
759 (if (featurep 'xemacs) 754 () ; out of luck
760 () ; out of luck 755 (add-text-properties
761 (add-text-properties 756 (aref fil 1) (aref fil 2)
762 (aref fil 1) (aref fil 2) 757 '(mouse-face highlight
763 '(mouse-face highlight 758 help-echo "mouse-2: extract this file into a buffer")
764 help-echo "mouse-2: extract this file into a buffer") 759 text))
765 text)) 760 text))
766 text)))
767 files))) 761 files)))
768 (setq archive-file-list-end (point-marker))) 762 (setq archive-file-list-end (point-marker)))
769 763
@@ -832,7 +826,7 @@ using `make-temp-file', and the generated name is returned."
832 (modified (buffer-modified-p)) 826 (modified (buffer-modified-p))
833 (coding-system-for-read 'no-conversion) 827 (coding-system-for-read 'no-conversion)
834 (lno (archive-get-lineno)) 828 (lno (archive-get-lineno))
835 buffer-read-only) 829 (inhibit-read-only t))
836 (if unchanged nil 830 (if unchanged nil
837 (setq archive-files nil) 831 (setq archive-files nil)
838 (erase-buffer) 832 (erase-buffer)
@@ -898,18 +892,12 @@ using `make-temp-file', and the generated name is returned."
898 (kill-local-variable 'buffer-file-coding-system) 892 (kill-local-variable 'buffer-file-coding-system)
899 (after-insert-file-set-coding (- (point-max) (point-min)))))) 893 (after-insert-file-set-coding (- (point-max) (point-min))))))
900 894
901(defun archive-mouse-extract (event) 895(define-obsolete-function-alias 'archive-mouse-extract 'archive-extract "22.1")
902 "Extract a file whose name you click on."
903 (interactive "e")
904 (mouse-set-point event)
905 (switch-to-buffer
906 (save-excursion
907 (archive-extract)
908 (current-buffer))))
909 896
910(defun archive-extract (&optional other-window-p) 897(defun archive-extract (&optional other-window-p event)
911 "In archive mode, extract this entry of the archive into its own buffer." 898 "In archive mode, extract this entry of the archive into its own buffer."
912 (interactive) 899 (interactive (list nil last-input-event))
900 (if event (mouse-set-point event))
913 (let* ((view-p (eq other-window-p 'view)) 901 (let* ((view-p (eq other-window-p 'view))
914 (descr (archive-get-descr)) 902 (descr (archive-get-descr))
915 (ename (aref descr 0)) 903 (ename (aref descr 0))
@@ -932,8 +920,7 @@ using `make-temp-file', and the generated name is returned."
932 (setq archive (archive-maybe-copy archive)) 920 (setq archive (archive-maybe-copy archive))
933 (setq buffer (get-buffer-create bufname)) 921 (setq buffer (get-buffer-create bufname))
934 (setq just-created t) 922 (setq just-created t)
935 (save-excursion 923 (with-current-buffer buffer
936 (set-buffer buffer)
937 (setq buffer-file-name 924 (setq buffer-file-name
938 (expand-file-name (concat arcname ":" iname))) 925 (expand-file-name (concat arcname ":" iname)))
939 (setq buffer-file-truename 926 (setq buffer-file-truename
@@ -942,8 +929,7 @@ using `make-temp-file', and the generated name is returned."
942 (setq default-directory arcdir) 929 (setq default-directory arcdir)
943 (make-local-variable 'archive-superior-buffer) 930 (make-local-variable 'archive-superior-buffer)
944 (setq archive-superior-buffer archive-buffer) 931 (setq archive-superior-buffer archive-buffer)
945 (make-local-variable 'local-write-file-hooks) 932 (add-hook 'write-file-functions 'archive-write-file-member nil t)
946 (add-hook 'local-write-file-hooks 'archive-write-file-member)
947 (setq archive-subfile-mode descr) 933 (setq archive-subfile-mode descr)
948 (if (and 934 (if (and
949 (null 935 (null
@@ -977,26 +963,22 @@ using `make-temp-file', and the generated name is returned."
977 (setq buffer-saved-size (buffer-size)) 963 (setq buffer-saved-size (buffer-size))
978 (normal-mode) 964 (normal-mode)
979 ;; Just in case an archive occurs inside another archive. 965 ;; Just in case an archive occurs inside another archive.
980 (if (eq major-mode 'archive-mode) 966 (when (derived-mode-p 'archive-mode)
981 (progn 967 (setq archive-remote t)
982 (setq archive-remote t) 968 (if read-only-p (setq archive-read-only t))
983 (if read-only-p (setq archive-read-only t)) 969 ;; We will write out the archive ourselves if it is
984 ;; We will write out the archive ourselves if it is 970 ;; part of another archive.
985 ;; part of another archive. 971 (remove-hook 'write-contents-functions 'archive-write-file t))
986 (remove-hook 'write-contents-hooks 'archive-write-file t))) 972 (run-hooks 'archive-extract-hooks)
987 (run-hooks 'archive-extract-hooks)
988 (if archive-read-only 973 (if archive-read-only
989 (message "Note: altering this archive is not implemented.")))) 974 (message "Note: altering this archive is not implemented."))))
990 (archive-maybe-update t)) 975 (archive-maybe-update t))
991 (or (not (buffer-name buffer)) 976 (or (not (buffer-name buffer))
992 (progn 977 (cond
993 (if view-p 978 (view-p (view-buffer buffer (and just-created 'kill-buffer)))
994 (view-buffer buffer (and just-created 'kill-buffer)) 979 ((eq other-window-p 'display) (display-buffer buffer))
995 (if (eq other-window-p 'display) 980 (other-window-p (switch-to-buffer-other-window buffer))
996 (display-buffer buffer) 981 (t (switch-to-buffer buffer))))))
997 (if other-window-p
998 (switch-to-buffer-other-window buffer)
999 (switch-to-buffer buffer))))))))
1000 982
1001(defun archive-*-extract (archive name command) 983(defun archive-*-extract (archive name command)
1002 (let* ((default-directory (file-name-as-directory archive-tmpdir)) 984 (let* ((default-directory (file-name-as-directory archive-tmpdir))
@@ -1056,11 +1038,10 @@ using `make-temp-file', and the generated name is returned."
1056 (read-buffer "Buffer containing archive: " 1038 (read-buffer "Buffer containing archive: "
1057 ;; Find first archive buffer and suggest that 1039 ;; Find first archive buffer and suggest that
1058 (let ((bufs (buffer-list))) 1040 (let ((bufs (buffer-list)))
1059 (while (and bufs (not (eq (save-excursion 1041 (while (and bufs
1060 (set-buffer (car bufs)) 1042 (not (with-current-buffer (car bufs)
1061 major-mode) 1043 (derived-mode-p 'archive-mode))))
1062 'archive-mode))) 1044 (setq bufs (cdr bufs)))
1063 (setq bufs (cdr bufs)))
1064 (if bufs 1045 (if bufs
1065 (car bufs) 1046 (car bufs)
1066 (error "There are no archive buffers"))) 1047 (error "There are no archive buffers")))
@@ -1069,8 +1050,7 @@ using `make-temp-file', and the generated name is returned."
1069 (if buffer-file-name 1050 (if buffer-file-name
1070 (file-name-nondirectory buffer-file-name) 1051 (file-name-nondirectory buffer-file-name)
1071 "")))) 1052 ""))))
1072 (save-excursion 1053 (with-current-buffer arcbuf
1073 (set-buffer arcbuf)
1074 (or (eq major-mode 'archive-mode) 1054 (or (eq major-mode 'archive-mode)
1075 (error "Buffer is not an archive buffer")) 1055 (error "Buffer is not an archive buffer"))
1076 (if archive-read-only 1056 (if archive-read-only
@@ -1079,12 +1059,11 @@ using `make-temp-file', and the generated name is returned."
1079 (error "An archive buffer cannot be added to itself")) 1059 (error "An archive buffer cannot be added to itself"))
1080 (if (string= name "") 1060 (if (string= name "")
1081 (error "Archive members may not be given empty names")) 1061 (error "Archive members may not be given empty names"))
1082 (let ((func (save-excursion (set-buffer arcbuf) 1062 (let ((func (with-current-buffer arcbuf
1083 (archive-name "add-new-member"))) 1063 (archive-name "add-new-member")))
1084 (membuf (current-buffer))) 1064 (membuf (current-buffer)))
1085 (if (fboundp func) 1065 (if (fboundp func)
1086 (save-excursion 1066 (with-current-buffer arcbuf
1087 (set-buffer arcbuf)
1088 (funcall func buffer-file-name membuf name)) 1067 (funcall func buffer-file-name membuf name))
1089 (error "Adding a new member is not supported for this archive type")))) 1068 (error "Adding a new member is not supported for this archive type"))))
1090;; ------------------------------------------------------------------------- 1069;; -------------------------------------------------------------------------
@@ -1095,10 +1074,10 @@ using `make-temp-file', and the generated name is returned."
1095 (save-restriction 1074 (save-restriction
1096 (message "Updating archive...") 1075 (message "Updating archive...")
1097 (widen) 1076 (widen)
1098 (let ((writer (save-excursion (set-buffer archive-superior-buffer) 1077 (let ((writer (with-current-buffer archive-superior-buffer
1099 (archive-name "write-file-member"))) 1078 (archive-name "write-file-member")))
1100 (archive (save-excursion (set-buffer archive-superior-buffer) 1079 (archive (with-current-buffer archive-superior-buffer
1101 (archive-maybe-copy (buffer-file-name))))) 1080 (archive-maybe-copy (buffer-file-name)))))
1102 (if (fboundp writer) 1081 (if (fboundp writer)
1103 (funcall writer archive archive-subfile-mode) 1082 (funcall writer archive archive-subfile-mode)
1104 (archive-*-write-file-member archive 1083 (archive-*-write-file-member archive
@@ -1167,7 +1146,7 @@ With a prefix argument, mark that many files."
1167 (beginning-of-line) 1146 (beginning-of-line)
1168 (let ((sign (if (>= p 0) +1 -1)) 1147 (let ((sign (if (>= p 0) +1 -1))
1169 (modified (buffer-modified-p)) 1148 (modified (buffer-modified-p))
1170 buffer-read-only) 1149 (inhibit-read-only t))
1171 (while (not (zerop p)) 1150 (while (not (zerop p))
1172 (if (archive-get-descr t) 1151 (if (archive-get-descr t)
1173 (progn 1152 (progn
@@ -1175,7 +1154,7 @@ With a prefix argument, mark that many files."
1175 (insert type))) 1154 (insert type)))
1176 (forward-line sign) 1155 (forward-line sign)
1177 (setq p (- p sign))) 1156 (setq p (- p sign)))
1178 (set-buffer-modified-p modified)) 1157 (restore-buffer-modified-p modified))
1179 (archive-next-line 0)) 1158 (archive-next-line 0))
1180 1159
1181(defun archive-unflag (p) 1160(defun archive-unflag (p)
@@ -1194,14 +1173,14 @@ With a prefix argument, un-mark that many members backward."
1194 "Remove all marks." 1173 "Remove all marks."
1195 (interactive) 1174 (interactive)
1196 (let ((modified (buffer-modified-p)) 1175 (let ((modified (buffer-modified-p))
1197 buffer-read-only) 1176 (inhibit-read-only t))
1198 (save-excursion 1177 (save-excursion
1199 (goto-char archive-file-list-start) 1178 (goto-char archive-file-list-start)
1200 (while (< (point) archive-file-list-end) 1179 (while (< (point) archive-file-list-end)
1201 (or (= (following-char) ? ) 1180 (or (= (following-char) ? )
1202 (progn (delete-char 1) (insert ? ))) 1181 (progn (delete-char 1) (insert ? )))
1203 (forward-line 1))) 1182 (forward-line 1)))
1204 (set-buffer-modified-p modified))) 1183 (restore-buffer-modified-p modified)))
1205 1184
1206(defun archive-mark (p) 1185(defun archive-mark (p)
1207 "In archive mode, mark this member for group operations. 1186 "In archive mode, mark this member for group operations.
@@ -1306,7 +1285,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
1306 (append (cdr command) (cons archive files)))) 1285 (append (cdr command) (cons archive files))))
1307 1286
1308(defun archive-rename-entry (newname) 1287(defun archive-rename-entry (newname)
1309 "Change the name associated with this entry in the tar file." 1288 "Change the name associated with this entry in the archive file."
1310 (interactive "sNew name: ") 1289 (interactive "sNew name: ")
1311 (if archive-read-only (error "Archive is read-only")) 1290 (if archive-read-only (error "Archive is read-only"))
1312 (if (string= newname "") 1291 (if (string= newname "")
@@ -1315,7 +1294,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
1315 (descr (archive-get-descr))) 1294 (descr (archive-get-descr)))
1316 (if (fboundp func) 1295 (if (fboundp func)
1317 (progn 1296 (progn
1318 (funcall func (buffer-file-name) 1297 (funcall func
1319 (if enable-multibyte-characters 1298 (if enable-multibyte-characters
1320 (encode-coding-string newname file-name-coding-system) 1299 (encode-coding-string newname file-name-coding-system)
1321 newname) 1300 newname)
@@ -1339,7 +1318,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
1339 "Undo in an archive buffer. 1318 "Undo in an archive buffer.
1340This doesn't recover lost files, it just undoes changes in the buffer itself." 1319This doesn't recover lost files, it just undoes changes in the buffer itself."
1341 (interactive) 1320 (interactive)
1342 (let (buffer-read-only) 1321 (let ((inhibit-read-only t))
1343 (undo))) 1322 (undo)))
1344;; ------------------------------------------------------------------------- 1323;; -------------------------------------------------------------------------
1345;; Section: Arc Archives 1324;; Section: Arc Archives
@@ -1391,14 +1370,14 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1391 "\n")) 1370 "\n"))
1392 (apply 'vector (nreverse files)))) 1371 (apply 'vector (nreverse files))))
1393 1372
1394(defun archive-arc-rename-entry (archive newname descr) 1373(defun archive-arc-rename-entry (newname descr)
1395 (if (string-match "[:\\\\/]" newname) 1374 (if (string-match "[:\\\\/]" newname)
1396 (error "File names in arc files must not contain a directory component")) 1375 (error "File names in arc files must not contain a directory component"))
1397 (if (> (length newname) 12) 1376 (if (> (length newname) 12)
1398 (error "File names in arc files are limited to 12 characters")) 1377 (error "File names in arc files are limited to 12 characters"))
1399 (let ((name (concat newname (substring "\0\0\0\0\0\0\0\0\0\0\0\0\0" 1378 (let ((name (concat newname (substring "\0\0\0\0\0\0\0\0\0\0\0\0\0"
1400 (length newname)))) 1379 (length newname))))
1401 buffer-read-only) 1380 (inhibit-read-only t))
1402 (save-restriction 1381 (save-restriction
1403 (save-excursion 1382 (save-excursion
1404 (widen) 1383 (widen)
@@ -1425,7 +1404,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1425 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.) 1404 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
1426 (hdrlvl (char-after (+ p 20))) ;header level 1405 (hdrlvl (char-after (+ p 20))) ;header level
1427 thsize ;total header size (base + extensions) 1406 thsize ;total header size (base + extensions)
1428 fnlen efnname fiddle ifnname width p2 creator 1407 fnlen efnname fiddle ifnname width p2
1429 neh ;beginning of next extension header (level 1 and 2) 1408 neh ;beginning of next extension header (level 1 and 2)
1430 mode modestr uid gid text dir prname 1409 mode modestr uid gid text dir prname
1431 gname uname modtime moddate) 1410 gname uname modtime moddate)
@@ -1438,13 +1417,9 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1438 (string-as-multibyte str)))) 1417 (string-as-multibyte str))))
1439 (setq p2 (+ p 22 fnlen))) ; 1418 (setq p2 (+ p 22 fnlen))) ;
1440 (if (= hdrlvl 1) 1419 (if (= hdrlvl 1)
1441 (progn ;specific to level 1 header 1420 (setq neh (+ p2 3)) ;specific to level 1 header
1442 (setq creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0))
1443 (setq neh (+ p2 3)))
1444 (if (= hdrlvl 2) 1421 (if (= hdrlvl 2)
1445 (progn ;specific to level 2 header 1422 (setq neh (+ p 24)))) ;specific to level 2 header
1446 (setq creator (char-after (+ p 23)) )
1447 (setq neh (+ p 24)))))
1448 (if neh ;if level 1 or 2 we expect extension headers to follow 1423 (if neh ;if level 1 or 2 we expect extension headers to follow
1449 (let* ((ehsize (archive-l-e neh 2)) ;size of the extension header 1424 (let* ((ehsize (archive-l-e neh 2)) ;size of the extension header
1450 (etype (char-after (+ neh 2)))) ;extension type 1425 (etype (char-after (+ neh 2)))) ;extension type
@@ -1560,7 +1535,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1560 p (1+ p))) 1535 p (1+ p)))
1561 (logand sum 255))) 1536 (logand sum 255)))
1562 1537
1563(defun archive-lzh-rename-entry (archive newname descr) 1538(defun archive-lzh-rename-entry (newname descr)
1564 (save-restriction 1539 (save-restriction
1565 (save-excursion 1540 (save-excursion
1566 (widen) 1541 (widen)
@@ -1570,7 +1545,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1570 (oldfnlen (char-after (+ p 21))) 1545 (oldfnlen (char-after (+ p 21)))
1571 (newfnlen (length newname)) 1546 (newfnlen (length newname))
1572 (newhsize (+ oldhsize newfnlen (- oldfnlen))) 1547 (newhsize (+ oldhsize newfnlen (- oldfnlen)))
1573 buffer-read-only) 1548 (inhibit-read-only t))
1574 (if (> newhsize 255) 1549 (if (> newhsize 255)
1575 (error "The file name is too long")) 1550 (error "The file name is too long"))
1576 (goto-char (+ p 21)) 1551 (goto-char (+ p 21))
@@ -1585,14 +1560,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1585 (save-excursion 1560 (save-excursion
1586 (widen) 1561 (widen)
1587 (set-buffer-multibyte nil) 1562 (set-buffer-multibyte nil)
1588 (while files 1563 (dolist (fil files)
1589 (let* ((fil (car files)) 1564 (let* ((p (+ archive-proper-file-start (aref fil 4)))
1590 (p (+ archive-proper-file-start (aref fil 4)))
1591 (hsize (char-after p)) 1565 (hsize (char-after p))
1592 (fnlen (char-after (+ p 21))) 1566 (fnlen (char-after (+ p 21)))
1593 (p2 (+ p 22 fnlen)) 1567 (p2 (+ p 22 fnlen))
1594 (creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0)) 1568 (creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0))
1595 buffer-read-only) 1569 (inhibit-read-only t))
1596 (if (= creator ?U) 1570 (if (= creator ?U)
1597 (progn 1571 (progn
1598 (or (numberp newval) 1572 (or (numberp newval)
@@ -1604,8 +1578,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1604 (delete-char 1) 1578 (delete-char 1)
1605 (insert (archive-lzh-resum (1+ p) hsize))) 1579 (insert (archive-lzh-resum (1+ p) hsize)))
1606 (message "Member %s does not have %s field" 1580 (message "Member %s does not have %s field"
1607 (aref fil 1) errtxt))) 1581 (aref fil 1) errtxt)))))))
1608 (setq files (cdr files))))))
1609 1582
1610(defun archive-lzh-chown-entry (newuid files) 1583(defun archive-lzh-chown-entry (newuid files)
1611 (archive-lzh-ogm newuid files "an uid" 10)) 1584 (archive-lzh-ogm newuid files "an uid" 10))
@@ -1616,7 +1589,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1616(defun archive-lzh-chmod-entry (newmode files) 1589(defun archive-lzh-chmod-entry (newmode files)
1617 (archive-lzh-ogm 1590 (archive-lzh-ogm
1618 ;; This should work even though newmode will be dynamically accessed. 1591 ;; This should work even though newmode will be dynamically accessed.
1619 (function (lambda (old) (archive-calc-mode old newmode t))) 1592 (lambda (old) (archive-calc-mode old newmode t))
1620 files "a unix-style mode" 8)) 1593 files "a unix-style mode" 8))
1621;; ------------------------------------------------------------------------- 1594;; -------------------------------------------------------------------------
1622;; Section: Zip Archives 1595;; Section: Zip Archives
@@ -1631,7 +1604,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1631 visual) 1604 visual)
1632 (while (string= "PK\001\002" (buffer-substring p (+ p 4))) 1605 (while (string= "PK\001\002" (buffer-substring p (+ p 4)))
1633 (let* ((creator (char-after (+ p 5))) 1606 (let* ((creator (char-after (+ p 5)))
1634 (method (archive-l-e (+ p 10) 2)) 1607 ;; (method (archive-l-e (+ p 10) 2))
1635 (modtime (archive-l-e (+ p 12) 2)) 1608 (modtime (archive-l-e (+ p 12) 2))
1636 (moddate (archive-l-e (+ p 14) 2)) 1609 (moddate (archive-l-e (+ p 14) 2))
1637 (ucsize (archive-l-e (+ p 24) 4)) 1610 (ucsize (archive-l-e (+ p 24) 4))
@@ -1709,13 +1682,12 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1709 (save-excursion 1682 (save-excursion
1710 (widen) 1683 (widen)
1711 (set-buffer-multibyte nil) 1684 (set-buffer-multibyte nil)
1712 (while files 1685 (dolist (fil files)
1713 (let* ((fil (car files)) 1686 (let* ((p (+ archive-proper-file-start (car (aref fil 4))))
1714 (p (+ archive-proper-file-start (car (aref fil 4))))
1715 (creator (char-after (+ p 5))) 1687 (creator (char-after (+ p 5)))
1716 (oldmode (aref fil 3)) 1688 (oldmode (aref fil 3))
1717 (newval (archive-calc-mode oldmode newmode t)) 1689 (newval (archive-calc-mode oldmode newmode t))
1718 buffer-read-only) 1690 (inhibit-read-only t))
1719 (cond ((memq creator '(2 3)) ; Unix + VMS 1691 (cond ((memq creator '(2 3)) ; Unix + VMS
1720 (goto-char (+ p 40)) 1692 (goto-char (+ p 40))
1721 (delete-char 2) 1693 (delete-char 2)
@@ -1726,7 +1698,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1726 (logand (logxor 1 (lsh newval -7)) 1))) 1698 (logand (logxor 1 (lsh newval -7)) 1)))
1727 (delete-char 1)) 1699 (delete-char 1))
1728 (t (message "Don't know how to change mode for this member")))) 1700 (t (message "Don't know how to change mode for this member"))))
1729 (setq files (cdr files)))))) 1701 ))))
1730;; ------------------------------------------------------------------------- 1702;; -------------------------------------------------------------------------
1731;; Section: Zoo Archives 1703;; Section: Zoo Archives
1732 1704
diff --git a/lisp/battery.el b/lisp/battery.el
index 42ceec0c90c..6e94c176513 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -171,53 +171,49 @@ The following %-sequences are provided:
171%B Battery status (verbose) 171%B Battery status (verbose)
172%b Battery status, empty means high, `-' means low, 172%b Battery status, empty means high, `-' means low,
173 `!' means critical, and `+' means charging 173 `!' means critical, and `+' means charging
174%p battery load percentage 174%p Battery load percentage
175%s Remaining time in seconds 175%s Remaining time in seconds
176%m Remaining time in minutes 176%m Remaining time in minutes
177%h Remaining time in hours 177%h Remaining time in hours
178%t Remaining time in the form `h:min'" 178%t Remaining time in the form `h:min'"
179 (let (driver-version bios-version bios-interface line-status 179 (let (driver-version bios-version bios-interface line-status
180 battery-status battery-status-symbol load-percentage 180 battery-status battery-status-symbol load-percentage
181 seconds minutes hours remaining-time buffer tem) 181 seconds minutes hours remaining-time tem)
182 (unwind-protect 182 (with-temp-buffer
183 (save-excursion 183 (ignore-errors (insert-file-contents "/proc/apm"))
184 (setq buffer (get-buffer-create " *battery*")) 184 (when (re-search-forward battery-linux-proc-apm-regexp)
185 (set-buffer buffer) 185 (setq driver-version (match-string 1))
186 (erase-buffer) 186 (setq bios-version (match-string 2))
187 (insert-file-contents "/proc/apm") 187 (setq tem (string-to-number (match-string 3) 16))
188 (re-search-forward battery-linux-proc-apm-regexp) 188 (if (not (logand tem 2))
189 (setq driver-version (match-string 1)) 189 (setq bios-interface "not supported")
190 (setq bios-version (match-string 2)) 190 (setq bios-interface "enabled")
191 (setq tem (string-to-number (match-string 3) 16)) 191 (cond ((logand tem 16) (setq bios-interface "disabled"))
192 (if (not (logand tem 2)) 192 ((logand tem 32) (setq bios-interface "disengaged")))
193 (setq bios-interface "not supported") 193 (setq tem (string-to-number (match-string 4) 16))
194 (setq bios-interface "enabled") 194 (cond ((= tem 0) (setq line-status "off-line"))
195 (cond ((logand tem 16) (setq bios-interface "disabled")) 195 ((= tem 1) (setq line-status "on-line"))
196 ((logand tem 32) (setq bios-interface "disengaged"))) 196 ((= tem 2) (setq line-status "on backup")))
197 (setq tem (string-to-number (match-string 4) 16)) 197 (setq tem (string-to-number (match-string 6) 16))
198 (cond ((= tem 0) (setq line-status "off-line")) 198 (if (= tem 255)
199 ((= tem 1) (setq line-status "on-line")) 199 (setq battery-status "N/A")
200 ((= tem 2) (setq line-status "on backup"))) 200 (setq tem (string-to-number (match-string 5) 16))
201 (setq tem (string-to-number (match-string 6) 16)) 201 (cond ((= tem 0) (setq battery-status "high"
202 (if (= tem 255) 202 battery-status-symbol ""))
203 (setq battery-status "N/A") 203 ((= tem 1) (setq battery-status "low"
204 (setq tem (string-to-number (match-string 5) 16)) 204 battery-status-symbol "-"))
205 (cond ((= tem 0) (setq battery-status "high" 205 ((= tem 2) (setq battery-status "critical"
206 battery-status-symbol "")) 206 battery-status-symbol "!"))
207 ((= tem 1) (setq battery-status "low" 207 ((= tem 3) (setq battery-status "charging"
208 battery-status-symbol "-")) 208 battery-status-symbol "+")))
209 ((= tem 2) (setq battery-status "critical" 209 (setq load-percentage (match-string 7))
210 battery-status-symbol "!")) 210 (setq seconds (string-to-number (match-string 8)))
211 ((= tem 3) (setq battery-status "charging" 211 (and (string-equal (match-string 9) "min")
212 battery-status-symbol "+"))) 212 (setq seconds (* 60 seconds)))
213 (setq load-percentage (match-string 7)) 213 (setq minutes (/ seconds 60)
214 (setq seconds (string-to-number (match-string 8))) 214 hours (/ seconds 3600))
215 (and (string-equal (match-string 9) "min") 215 (setq remaining-time
216 (setq seconds (* 60 seconds))) 216 (format "%d:%02d" hours (- minutes (* 60 hours))))))))
217 (setq minutes (/ seconds 60)
218 hours (/ seconds 3600))
219 (setq remaining-time
220 (format "%d:%02d" hours (- minutes (* 60 hours))))))))
221 (list (cons ?v (or driver-version "N/A")) 217 (list (cons ?v (or driver-version "N/A"))
222 (cons ?V (or bios-version "N/A")) 218 (cons ?V (or bios-version "N/A"))
223 (cons ?I (or bios-interface "N/A")) 219 (cons ?I (or bios-interface "N/A"))
@@ -240,12 +236,13 @@ in Linux version 2.4.20 and 2.6.0.
240 236
241The following %-sequences are provided: 237The following %-sequences are provided:
242%c Current capacity (mAh) 238%c Current capacity (mAh)
239%r Current rate
243%B Battery status (verbose) 240%B Battery status (verbose)
244%b Battery status, empty means high, `-' means low, 241%b Battery status, empty means high, `-' means low,
245 `!' means critical, and `+' means charging 242 `!' means critical, and `+' means charging
246%d Temperature (in degrees Celsius) 243%d Temperature (in degrees Celsius)
247%L AC line status (verbose) 244%L AC line status (verbose)
248%p battery load percentage 245%p Battery load percentage
249%m Remaining time in minutes 246%m Remaining time in minutes
250%h Remaining time in hours 247%h Remaining time in hours
251%t Remaining time in the form `h:min'" 248%t Remaining time in the form `h:min'"
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 89c2cca9045..d077fcb479f 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -781,6 +781,11 @@ language you are using."
781(define-key global-map [insert] 'overwrite-mode) 781(define-key global-map [insert] 'overwrite-mode)
782(define-key global-map [C-insert] 'kill-ring-save) 782(define-key global-map [C-insert] 'kill-ring-save)
783(define-key global-map [S-insert] 'yank) 783(define-key global-map [S-insert] 'yank)
784;; `insertchar' is what term.c produces. Should we change term.c
785;; to produce `insert' instead?
786(define-key global-map [insertchar] 'overwrite-mode)
787(define-key global-map [C-insertchar] 'kill-ring-save)
788(define-key global-map [S-insertchar] 'yank)
784(define-key global-map [undo] 'undo) 789(define-key global-map [undo] 'undo)
785(define-key global-map [redo] 'repeat-complex-command) 790(define-key global-map [redo] 'repeat-complex-command)
786(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard 791(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard
@@ -791,7 +796,6 @@ language you are using."
791;; (define-key global-map [clearline] 'function-key-error) 796;; (define-key global-map [clearline] 'function-key-error)
792(define-key global-map [insertline] 'open-line) 797(define-key global-map [insertline] 'open-line)
793(define-key global-map [deleteline] 'kill-line) 798(define-key global-map [deleteline] 'kill-line)
794;; (define-key global-map [insertchar] 'function-key-error)
795(define-key global-map [deletechar] 'delete-char) 799(define-key global-map [deletechar] 'delete-char)
796;; (define-key global-map [backtab] 'function-key-error) 800;; (define-key global-map [backtab] 'function-key-error)
797;; (define-key global-map [f1] 'function-key-error) 801;; (define-key global-map [f1] 'function-key-error)
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index bbf9b3bcce4..b89773d12c7 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -309,7 +309,8 @@ through a file easier.")
309(defvar bookmark-yank-point 0) 309(defvar bookmark-yank-point 0)
310(defvar bookmark-current-buffer nil) 310(defvar bookmark-current-buffer nil)
311 311
312 312(defvar Info-current-node)
313(defvar Info-suffix-list)
313 314
314;; Helper functions. 315;; Helper functions.
315 316
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 3a99291fdef..7317c2a7b9a 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -207,7 +207,7 @@
207(require 'calc-macs) 207(require 'calc-macs)
208 208
209(defgroup calc nil 209(defgroup calc nil
210 "GNU Calc" 210 "GNU Calc."
211 :prefix "calc-" 211 :prefix "calc-"
212 :tag "Calc" 212 :tag "Calc"
213 :group 'applications) 213 :group 'applications)
@@ -3026,10 +3026,10 @@ See calc-keypad for details."
3026 (setq w (cdr off) 3026 (setq w (cdr off)
3027 off (car off)) 3027 off (car off))
3028 (when (> off 0) 3028 (when (> off 0)
3029 (setq c (math-comp-concat (make-string off ? ) c))) 3029 (setq c (math-comp-concat (make-string off ?\s) c)))
3030 (or (equal calc-left-label "") 3030 (or (equal calc-left-label "")
3031 (setq c (math-comp-concat (if (eq a 'top-of-stack) 3031 (setq c (math-comp-concat (if (eq a 'top-of-stack)
3032 (make-string (length calc-left-label) ? ) 3032 (make-string (length calc-left-label) ?\s)
3033 calc-left-label) 3033 calc-left-label)
3034 c))) 3034 c)))
3035 (when calc-line-numbering 3035 (when calc-line-numbering
@@ -3044,7 +3044,7 @@ See calc-keypad for details."
3044 (require 'calc-ext) 3044 (require 'calc-ext)
3045 (setq c (list 'horiz c 3045 (setq c (list 'horiz c
3046 (make-string (max (- w (math-comp-width c) 3046 (make-string (max (- w (math-comp-width c)
3047 (length calc-right-label)) 0) ? ) 3047 (length calc-right-label)) 0) ?\s)
3048 '(break -1) 3048 '(break -1)
3049 calc-right-label))) 3049 calc-right-label)))
3050 (setq s (if (stringp c) 3050 (setq s (if (stringp c)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index a0e9d1f90b7..851459fe574 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -290,7 +290,7 @@ The format of the header is specified by `diary-header-line-format'."
290 "Selective display active - press \"s\" in calendar \ 290 "Selective display active - press \"s\" in calendar \
291before edit/copy" 291before edit/copy"
292 "Diary")) 292 "Diary"))
293 ?\ (frame-width))) 293 ?\s (frame-width)))
294 "*Format of the header line displayed by `simple-diary-display'. 294 "*Format of the header line displayed by `simple-diary-display'.
295Only used if `diary-header-line-flag' is non-nil." 295Only used if `diary-header-line-flag' is non-nil."
296 :group 'diary 296 :group 'diary
diff --git a/lisp/comint.el b/lisp/comint.el
index 29208d6379c..e751926912f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -146,11 +146,11 @@
146 :group 'processes) 146 :group 'processes)
147 147
148(defgroup comint-completion nil 148(defgroup comint-completion nil
149 "Completion facilities in comint" 149 "Completion facilities in comint."
150 :group 'comint) 150 :group 'comint)
151 151
152(defgroup comint-source nil 152(defgroup comint-source nil
153 "Source finding facilities in comint" 153 "Source finding facilities in comint."
154 :prefix "comint-" 154 :prefix "comint-"
155 :group 'comint) 155 :group 'comint)
156 156
@@ -338,8 +338,8 @@ This variable is buffer-local."
338 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\ 338 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\
339Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\ 339Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\
340\[Pp]assword\\( (again)\\)?\\|\ 340\[Pp]assword\\( (again)\\)?\\|\
341pass phrase\\|\\(Enter\\|Repeat\\) passphrase\\)\ 341pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\
342\\( for [^:]+\\)?:\\s *\\'" 342\\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'"
343 "*Regexp matching prompts for passwords in the inferior process. 343 "*Regexp matching prompts for passwords in the inferior process.
344This is used by `comint-watch-for-password-prompt'." 344This is used by `comint-watch-for-password-prompt'."
345 :type 'regexp 345 :type 'regexp
@@ -986,7 +986,7 @@ See also `comint-read-input-ring'."
986 (message "Hit space to flush") 986 (message "Hit space to flush")
987 (setq comint-dynamic-list-input-ring-window-conf conf) 987 (setq comint-dynamic-list-input-ring-window-conf conf)
988 (let ((ch (read-event))) 988 (let ((ch (read-event)))
989 (if (eq ch ?\ ) 989 (if (eq ch ?\s)
990 (set-window-configuration conf) 990 (set-window-configuration conf)
991 (setq unread-command-events (list ch))))))) 991 (setq unread-command-events (list ch)))))))
992 992
@@ -2930,7 +2930,7 @@ Typing SPC flushes the help buffer."
2930 (progn 2930 (progn
2931 (mouse-choose-completion first) 2931 (mouse-choose-completion first)
2932 (set-window-configuration comint-dynamic-list-completions-config)) 2932 (set-window-configuration comint-dynamic-list-completions-config))
2933 (unless (eq first ?\ ) 2933 (unless (eq first ?\s)
2934 (setq unread-command-events (listify-key-sequence key))) 2934 (setq unread-command-events (listify-key-sequence key)))
2935 (unless (eq first ?\t) 2935 (unless (eq first ?\t)
2936 (set-window-configuration comint-dynamic-list-completions-config)))))) 2936 (set-window-configuration comint-dynamic-list-completions-config))))))
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 3a3631cdd7e..ac56892e8a0 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -323,6 +323,10 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
323 (spec (nth 1 entry)) 323 (spec (nth 1 entry))
324 (now (nth 2 entry)) 324 (now (nth 2 entry))
325 (comment (nth 3 entry))) 325 (comment (nth 3 entry)))
326 ;; If FACE is actually an alias, customize the face it
327 ;; is aliased to.
328 (if (get face 'face-alias)
329 (setq face (get face 'face-alias)))
326 (put face 'saved-face spec) 330 (put face 'saved-face spec)
327 (put face 'saved-face-comment comment) 331 (put face 'saved-face-comment comment)
328 (custom-push-theme 'theme-face face theme 'set spec) 332 (custom-push-theme 'theme-face face theme 'set spec)
@@ -337,6 +341,8 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
337 ;; Old format, a plist of FACE SPEC pairs. 341 ;; Old format, a plist of FACE SPEC pairs.
338 (let ((face (nth 0 args)) 342 (let ((face (nth 0 args))
339 (spec (nth 1 args))) 343 (spec (nth 1 args)))
344 (if (get face 'face-alias)
345 (setq face (get face 'face-alias)))
340 (put face 'saved-face spec) 346 (put face 'saved-face spec)
341 (custom-push-theme 'theme-face face theme 'set spec)) 347 (custom-push-theme 'theme-face face theme 'set spec))
342 (setq args (cdr (cdr args)))))))) 348 (setq args (cdr (cdr args))))))))
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 41240303037..480743e70f2 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -1,6 +1,6 @@
1;;; cus-theme.el -- custom theme creation user interface 1;;; cus-theme.el -- custom theme creation user interface
2;; 2;;
3;; Copyright (C) 2001 Free Software Foundation, Inc. 3;; Copyright (C) 2001, 2005 Free Software Foundation, Inc.
4;; 4;;
5;; Author: Alex Schroeder <alex@gnu.org> 5;; Author: Alex Schroeder <alex@gnu.org>
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -31,6 +31,18 @@
31(eval-when-compile 31(eval-when-compile
32 (require 'wid-edit)) 32 (require 'wid-edit))
33 33
34(define-derived-mode custom-new-theme-mode nil "New-Theme"
35 "Major mode for the buffer created by `customize-create-theme'.
36Do not call this mode function yourself. It is only meant for internal
37use by `customize-create-theme'."
38 (set-keymap-parent custom-new-theme-mode-map widget-keymap))
39(put 'custom-new-theme-mode 'mode-class 'special)
40
41(defvar custom-theme-name)
42(defvar custom-theme-variables)
43(defvar custom-theme-faces)
44(defvar custom-theme-description)
45
34;;;###autoload 46;;;###autoload
35(defun customize-create-theme () 47(defun customize-create-theme ()
36 "Create a custom theme." 48 "Create a custom theme."
@@ -38,15 +50,23 @@
38 (if (get-buffer "*New Custom Theme*") 50 (if (get-buffer "*New Custom Theme*")
39 (kill-buffer "*New Custom Theme*")) 51 (kill-buffer "*New Custom Theme*"))
40 (switch-to-buffer "*New Custom Theme*") 52 (switch-to-buffer "*New Custom Theme*")
41 (kill-all-local-variables) 53 (let ((inhibit-read-only t))
54 (erase-buffer))
55 (custom-new-theme-mode)
42 (make-local-variable 'custom-theme-name) 56 (make-local-variable 'custom-theme-name)
43 (make-local-variable 'custom-theme-variables) 57 (make-local-variable 'custom-theme-variables)
44 (make-local-variable 'custom-theme-faces) 58 (make-local-variable 'custom-theme-faces)
45 (make-local-variable 'custom-theme-description) 59 (make-local-variable 'custom-theme-description)
46 (let ((inhibit-read-only t))
47 (erase-buffer))
48 (widget-insert "This buffer helps you write a custom theme elisp file. 60 (widget-insert "This buffer helps you write a custom theme elisp file.
49This will help you share your customizations with other people.\n\n") 61This will help you share your customizations with other people.
62
63Just insert the names of all variables and faces you want the theme
64to include. Then clicking mouse-2 or pressing RET on the [Done] button
65will write a theme file that sets all these variables and faces to their
66current global values. It will write that file into the directory given
67by the variable `custom-theme-directory', usually \"~/.emacs.d/\".
68
69To undo all your edits to the buffer, use the [Reset] button.\n\n")
50 (widget-insert "Theme name: ") 70 (widget-insert "Theme name: ")
51 (setq custom-theme-name 71 (setq custom-theme-name
52 (widget-create 'editable-field 72 (widget-create 'editable-field
@@ -81,7 +101,6 @@ This will help you share your customizations with other people.\n\n")
81 (bury-buffer)) 101 (bury-buffer))
82 "Bury Buffer") 102 "Bury Buffer")
83 (widget-insert "\n") 103 (widget-insert "\n")
84 (use-local-map widget-keymap)
85 (widget-setup)) 104 (widget-setup))
86 105
87(defun custom-theme-write (&rest ignore) 106(defun custom-theme-write (&rest ignore)
@@ -90,6 +109,10 @@ This will help you share your customizations with other people.\n\n")
90 (variables (widget-value custom-theme-variables)) 109 (variables (widget-value custom-theme-variables))
91 (faces (widget-value custom-theme-faces))) 110 (faces (widget-value custom-theme-faces)))
92 (switch-to-buffer (concat name "-theme.el")) 111 (switch-to-buffer (concat name "-theme.el"))
112 (emacs-lisp-mode)
113 (unless (file-exists-p custom-theme-directory)
114 (make-directory (file-name-as-directory custom-theme-directory) t))
115 (setq default-directory custom-theme-directory)
93 (setq buffer-file-name (expand-file-name (concat name "-theme.el"))) 116 (setq buffer-file-name (expand-file-name (concat name "-theme.el")))
94 (let ((inhibit-read-only t)) 117 (let ((inhibit-read-only t))
95 (erase-buffer)) 118 (erase-buffer))
@@ -100,7 +123,8 @@ This will help you share your customizations with other people.\n\n")
100 (insert ")\n") 123 (insert ")\n")
101 (custom-theme-write-variables name variables) 124 (custom-theme-write-variables name variables)
102 (custom-theme-write-faces name faces) 125 (custom-theme-write-faces name faces)
103 (insert "\n(provide-theme '" name ")\n"))) 126 (insert "\n(provide-theme '" name ")\n")
127 (save-buffer)))
104 128
105(defun custom-theme-write-variables (theme vars) 129(defun custom-theme-write-variables (theme vars)
106 "Write a `custom-theme-set-variables' command for THEME. 130 "Write a `custom-theme-set-variables' command for THEME.
diff --git a/lisp/custom.el b/lisp/custom.el
index f3cbd1404e9..cb4e76dd65a 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -121,7 +121,7 @@ compatibility, DEFAULT is also stored in SYMBOL's property
121`standard-value'. At the same time, SYMBOL's property `force-value' is 121`standard-value'. At the same time, SYMBOL's property `force-value' is
122set to nil, as the value is no longer rogue." 122set to nil, as the value is no longer rogue."
123 ;; Remember the standard setting. The value should be in the standard 123 ;; Remember the standard setting. The value should be in the standard
124 ;; theme, not in this property. However, his would require changeing 124 ;; theme, not in this property. However, this would require changing
125 ;; the C source of defvar and others as well... 125 ;; the C source of defvar and others as well...
126 (put symbol 'standard-value (list default)) 126 (put symbol 'standard-value (list default))
127 ;; Maybe this option was rogue in an earlier version. It no longer is. 127 ;; Maybe this option was rogue in an earlier version. It no longer is.
@@ -486,8 +486,10 @@ both appear in constructs like `custom-set-variables'."
486(defun custom-add-option (symbol option) 486(defun custom-add-option (symbol option)
487 "To the variable SYMBOL add OPTION. 487 "To the variable SYMBOL add OPTION.
488 488
489If SYMBOL is a hook variable, OPTION should be a hook member. 489If SYMBOL's custom type is a hook, OPTION should be a hook member.
490For other types variables, the effect is undefined." 490If SYMBOL's custom type is an alist, OPTION specifies a symbol
491to offer to the user as a possible key in the alist.
492For other custom types, this has no effect."
491 (let ((options (get symbol 'custom-options))) 493 (let ((options (get symbol 'custom-options)))
492 (unless (member option options) 494 (unless (member option options)
493 (put symbol 'custom-options (cons option options))))) 495 (put symbol 'custom-options (cons option options)))))
@@ -560,7 +562,7 @@ LOAD should be either a library file name, or a feature name."
560 (t (condition-case nil (load load) (error nil)))))))) 562 (t (condition-case nil (load load) (error nil))))))))
561 563
562(defvar custom-known-themes '(user standard) 564(defvar custom-known-themes '(user standard)
563 "Themes that have been define with `deftheme'. 565 "Themes that have been defined with `deftheme'.
564The default value is the list (user standard). The theme `standard' 566The default value is the list (user standard). The theme `standard'
565contains the Emacs standard settings from the original Lisp files. The 567contains the Emacs standard settings from the original Lisp files. The
566theme `user' contains all the the settings the user customized and saved. 568theme `user' contains all the the settings the user customized and saved.
@@ -926,6 +928,19 @@ Return non-nil iff the `customized-value' property actually changed."
926(defvar custom-loaded-themes nil 928(defvar custom-loaded-themes nil
927 "Themes in the order they are loaded.") 929 "Themes in the order they are loaded.")
928 930
931(defcustom custom-theme-directory
932 (if (eq system-type 'ms-dos)
933 ;; MS-DOS cannot have initial dot.
934 "~/_emacs.d/"
935 "~/.emacs.d/")
936 "Directory in which Custom theme files should be written.
937`require-theme' searches this directory in addition to load-path.
938The command `customize-create-theme' writes the files it produces
939into this directory."
940 :type 'string
941 :group 'customize
942 :version "22.1")
943
929(defun custom-theme-loaded-p (theme) 944(defun custom-theme-loaded-p (theme)
930 "Return non-nil when THEME has been loaded." 945 "Return non-nil when THEME has been loaded."
931 (memq theme custom-loaded-themes)) 946 (memq theme custom-loaded-themes))
@@ -949,8 +964,11 @@ Usually the `theme-feature' property contains a symbol created
949by `custom-make-theme-feature'." 964by `custom-make-theme-feature'."
950 ;; Note we do no check for validity of the theme here. 965 ;; Note we do no check for validity of the theme here.
951 ;; This allows to pull in themes by a file-name convention 966 ;; This allows to pull in themes by a file-name convention
952 (require (or (get theme 'theme-feature) 967 (let ((load-path (if (file-directory-p custom-theme-directory)
953 (custom-make-theme-feature theme)))) 968 (cons custom-theme-directory load-path)
969 load-path)))
970 (require (or (get theme 'theme-feature)
971 (custom-make-theme-feature theme)))))
954 972
955(defun custom-remove-theme (spec-alist theme) 973(defun custom-remove-theme (spec-alist theme)
956 "Delete all elements from SPEC-ALIST whose car is THEME." 974 "Delete all elements from SPEC-ALIST whose car is THEME."
diff --git a/lisp/dabbrev.el b/lisp/dabbrev.el
index 5dea9892115..cbb2526c852 100644
--- a/lisp/dabbrev.el
+++ b/lisp/dabbrev.el
@@ -100,7 +100,7 @@
100;;---------------------------------------------------------------- 100;;----------------------------------------------------------------
101 101
102(defgroup dabbrev nil 102(defgroup dabbrev nil
103 "Dynamic Abbreviations" 103 "Dynamic Abbreviations."
104 :tag "Dynamic Abbreviations" 104 :tag "Dynamic Abbreviations"
105 :group 'abbrev 105 :group 'abbrev
106 :group 'convenience) 106 :group 'convenience)
@@ -509,7 +509,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]."
509 (setq direction dabbrev--last-direction)) 509 (setq direction dabbrev--last-direction))
510 ;; If the user inserts a space after expanding 510 ;; If the user inserts a space after expanding
511 ;; and then asks to expand again, always fetch the next word. 511 ;; and then asks to expand again, always fetch the next word.
512 (if (and (eq (preceding-char) ?\ ) 512 (if (and (eq (preceding-char) ?\s)
513 (markerp dabbrev--last-abbrev-location) 513 (markerp dabbrev--last-abbrev-location)
514 (marker-position dabbrev--last-abbrev-location) 514 (marker-position dabbrev--last-abbrev-location)
515 (= (point) (1+ dabbrev--last-abbrev-location))) 515 (= (point) (1+ dabbrev--last-abbrev-location)))
diff --git a/lisp/delim-col.el b/lisp/delim-col.el
index b5be7ff4ebc..04cd90961a1 100644
--- a/lisp/delim-col.el
+++ b/lisp/delim-col.el
@@ -125,7 +125,7 @@
125;; User Options: 125;; User Options:
126 126
127(defgroup columns nil 127(defgroup columns nil
128 "Prettify columns" 128 "Prettify columns."
129 :link '(emacs-library-link :tag "Source Lisp File" "delim-col.el") 129 :link '(emacs-library-link :tag "Source Lisp File" "delim-col.el")
130 :prefix "delimit-columns-" 130 :prefix "delimit-columns-"
131 :group 'internal) 131 :group 'internal)
@@ -424,13 +424,13 @@ START and END delimits the corners of text rectangle."
424 (and delimit-columns-format 424 (and delimit-columns-format
425 (make-string (- (aref delimit-columns-max ncol) 425 (make-string (- (aref delimit-columns-max ncol)
426 (- (current-column) origin)) 426 (- (current-column) origin))
427 ?\ ))) 427 ?\s)))
428 (setq ncol (1+ ncol))) 428 (setq ncol (1+ ncol)))
429 ;; Prepare last column spaces 429 ;; Prepare last column spaces
430 (let ((spaces (and delimit-columns-format 430 (let ((spaces (and delimit-columns-format
431 (make-string (- (aref delimit-columns-max ncol) 431 (make-string (- (aref delimit-columns-max ncol)
432 (- (current-column) origin)) 432 (- (current-column) origin))
433 ?\ )))) 433 ?\s))))
434 ;; Adjust extra columns, if needed 434 ;; Adjust extra columns, if needed
435 (and delimit-columns-extra 435 (and delimit-columns-extra
436 (while (and (< (setq ncol (1+ ncol)) len) 436 (while (and (< (setq ncol (1+ ncol)) len)
@@ -438,7 +438,7 @@ START and END delimits the corners of text rectangle."
438 (delimit-columns-format spaces) 438 (delimit-columns-format spaces)
439 (setq spaces (and delimit-columns-format 439 (setq spaces (and delimit-columns-format
440 (make-string (aref delimit-columns-max ncol) 440 (make-string (aref delimit-columns-max ncol)
441 ?\ ))))) 441 ?\s)))))
442 ;; insert last formating 442 ;; insert last formating
443 (cond ((null delimit-columns-format) 443 (cond ((null delimit-columns-format)
444 (insert delimit-columns-after delimit-columns-str-after)) 444 (insert delimit-columns-after delimit-columns-str-after))
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index 1cb5111dcfb..b9c9e338388 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -57,7 +57,7 @@
57 57
58 58
59(defgroup diff-mode () 59(defgroup diff-mode ()
60 "Major mode for viewing/editing diffs" 60 "Major mode for viewing/editing diffs."
61 :version "21.1" 61 :version "21.1"
62 :group 'tools 62 :group 'tools
63 :group 'diff) 63 :group 'diff)
@@ -640,7 +640,7 @@ else cover the whole bufer."
640 (while (progn (setq last-pt (point)) 640 (while (progn (setq last-pt (point))
641 (= (forward-line -1) 0)) 641 (= (forward-line -1) 0))
642 (case (char-after) 642 (case (char-after)
643 (? (insert " ") (setq modif nil) (backward-char 1)) 643 (?\s (insert " ") (setq modif nil) (backward-char 1))
644 (?+ (delete-region (point) last-pt) (setq modif t)) 644 (?+ (delete-region (point) last-pt) (setq modif t))
645 (?- (if (not modif) 645 (?- (if (not modif)
646 (progn (forward-char 1) 646 (progn (forward-char 1)
@@ -665,7 +665,7 @@ else cover the whole bufer."
665 (let ((modif nil) (delete nil)) 665 (let ((modif nil) (delete nil))
666 (while (not (eobp)) 666 (while (not (eobp))
667 (case (char-after) 667 (case (char-after)
668 (? (insert " ") (setq modif nil) (backward-char 1)) 668 (?\s (insert " ") (setq modif nil) (backward-char 1))
669 (?- (setq delete t) (setq modif t)) 669 (?- (setq delete t) (setq modif t))
670 (?+ (if (not modif) 670 (?+ (if (not modif)
671 (progn (forward-char 1) 671 (progn (forward-char 1)
@@ -723,7 +723,7 @@ else cover the whole bufer."
723 (while (< (point) pt2) 723 (while (< (point) pt2)
724 (case (char-after) 724 (case (char-after)
725 ((?! ?-) (delete-char 2) (insert "-") (forward-line 1)) 725 ((?! ?-) (delete-char 2) (insert "-") (forward-line 1))
726 (?\ ;merge with the other half of the chunk 726 (?\s ;merge with the other half of the chunk
727 (let* ((endline2 727 (let* ((endline2
728 (save-excursion 728 (save-excursion
729 (goto-char pt2) (forward-line 1) (point))) 729 (goto-char pt2) (forward-line 1) (point)))
@@ -733,7 +733,7 @@ else cover the whole bufer."
733 (insert "+" 733 (insert "+"
734 (prog1 (buffer-substring (+ pt2 2) endline2) 734 (prog1 (buffer-substring (+ pt2 2) endline2)
735 (delete-region pt2 endline2)))) 735 (delete-region pt2 endline2))))
736 (?\ ;FIXME: check consistency 736 (?\s ;FIXME: check consistency
737 (delete-region pt2 endline2) 737 (delete-region pt2 endline2)
738 (delete-char 1) 738 (delete-char 1)
739 (forward-line 1)) 739 (forward-line 1))
@@ -814,7 +814,7 @@ else cover the whole bufer."
814 (t (when (and first last (< first last)) 814 (t (when (and first last (< first last))
815 (insert (delete-and-extract-region first last))) 815 (insert (delete-and-extract-region first last)))
816 (setq first nil last nil) 816 (setq first nil last nil)
817 (equal ?\ c))) 817 (equal ?\s c)))
818 (forward-line 1)))))))))) 818 (forward-line 1))))))))))
819 819
820(defun diff-fixup-modifs (start end) 820(defun diff-fixup-modifs (start end)
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 963866b3554..b517dffe9f7 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -839,6 +839,9 @@ Otherwise, the rule is a compression rule, and compression is done with gzip.")
839 (sit-for 1) 839 (sit-for 1)
840 (apply 'message qprompt qs-args) 840 (apply 'message qprompt qs-args)
841 (setq char (set qs-var (read-char)))) 841 (setq char (set qs-var (read-char))))
842 ;; Display the question with the answer.
843 (message (concat (apply 'format qprompt qs-args)
844 (char-to-string char)))
842 (memq (cdr elt) '(t y yes))))))) 845 (memq (cdr elt) '(t y yes)))))))
843 846
844;;;###autoload 847;;;###autoload
diff --git a/lisp/dired.el b/lisp/dired.el
index 61aca72db5b..a13a9e54ebe 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -437,6 +437,8 @@ Subexpression 2 must end right before the \\n or \\r.")
437 nil (0 dired-ignored-face)))) 437 nil (0 dired-ignored-face))))
438) 438)
439 "Additional expressions to highlight in Dired mode.") 439 "Additional expressions to highlight in Dired mode.")
440
441(defvar dnd-protocol-alist)
440 442
441;;; Macros must be defined before they are used, for the byte compiler. 443;;; Macros must be defined before they are used, for the byte compiler.
442 444
diff --git a/lisp/ediff-diff.el b/lisp/ediff-diff.el
index ec496301405..4e495d6d32b 100644
--- a/lisp/ediff-diff.el
+++ b/lisp/ediff-diff.el
@@ -43,7 +43,7 @@
43(require 'ediff-init) 43(require 'ediff-init)
44 44
45(defgroup ediff-diff nil 45(defgroup ediff-diff nil
46 "Diff related utilities" 46 "Diff related utilities."
47 :prefix "ediff-" 47 :prefix "ediff-"
48 :group 'ediff) 48 :group 'ediff)
49 49
diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el
index 3933fd760d2..4863c255830 100644
--- a/lisp/ediff-init.el
+++ b/lisp/ediff-init.el
@@ -393,17 +393,17 @@ It needs to be killed when we quit the session.")
393 this-command))) 393 this-command)))
394 394
395(defgroup ediff-highlighting nil 395(defgroup ediff-highlighting nil
396 "Hilighting of difference regions in Ediff" 396 "Hilighting of difference regions in Ediff."
397 :prefix "ediff-" 397 :prefix "ediff-"
398 :group 'ediff) 398 :group 'ediff)
399 399
400(defgroup ediff-merge nil 400(defgroup ediff-merge nil
401 "Merging utilities" 401 "Merging utilities."
402 :prefix "ediff-" 402 :prefix "ediff-"
403 :group 'ediff) 403 :group 'ediff)
404 404
405(defgroup ediff-hook nil 405(defgroup ediff-hook nil
406 "Hooks run by Ediff" 406 "Hooks run by Ediff."
407 :prefix "ediff-" 407 :prefix "ediff-"
408 :group 'ediff) 408 :group 'ediff)
409 409
@@ -1840,7 +1840,7 @@ Unless optional argument INPLACE is non-nil, return a new string."
1840 "Merge dir versions via ancestors") 1840 "Merge dir versions via ancestors")
1841 (t 1841 (t
1842 (capitalize 1842 (capitalize
1843 (subst-char-in-string ?- ?\ (substring (symbol-name jobname) 6)))) 1843 (subst-char-in-string ?- ?\s (substring (symbol-name jobname) 6))))
1844 )) 1844 ))
1845 1845
1846 1846
diff --git a/lisp/ediff-mult.el b/lisp/ediff-mult.el
index d3710258d24..3616bb267ce 100644
--- a/lisp/ediff-mult.el
+++ b/lisp/ediff-mult.el
@@ -106,7 +106,7 @@
106(provide 'ediff-mult) 106(provide 'ediff-mult)
107 107
108(defgroup ediff-mult nil 108(defgroup ediff-mult nil
109 "Multi-file and multi-buffer processing in Ediff" 109 "Multi-file and multi-buffer processing in Ediff."
110 :prefix "ediff-" 110 :prefix "ediff-"
111 :group 'ediff) 111 :group 'ediff)
112 112
@@ -857,7 +857,7 @@ behavior."
857 (session-info (ediff-overlay-get overl 'ediff-meta-info)) 857 (session-info (ediff-overlay-get overl 'ediff-meta-info))
858 (activity-marker (ediff-get-session-activity-marker session-info)) 858 (activity-marker (ediff-get-session-activity-marker session-info))
859 buffer-read-only) 859 buffer-read-only)
860 (or new-marker activity-marker (setq new-marker ?\ )) 860 (or new-marker activity-marker (setq new-marker ?\s))
861 (goto-char (ediff-overlay-start overl)) 861 (goto-char (ediff-overlay-start overl))
862 (if (eq (char-after (point)) new-marker) 862 (if (eq (char-after (point)) new-marker)
863 () ; if marker shown in buffer is the same as new-marker, do nothing 863 () ; if marker shown in buffer is the same as new-marker, do nothing
@@ -872,7 +872,7 @@ behavior."
872 (session-info (ediff-overlay-get overl 'ediff-meta-info)) 872 (session-info (ediff-overlay-get overl 'ediff-meta-info))
873 (status (ediff-get-session-status session-info)) 873 (status (ediff-get-session-status session-info))
874 buffer-read-only) 874 buffer-read-only)
875 (setq new-status (or new-status status ?\ )) 875 (setq new-status (or new-status status ?\s))
876 (goto-char (ediff-overlay-start overl)) 876 (goto-char (ediff-overlay-start overl))
877 (forward-char 1) ; status is the second char in session record 877 (forward-char 1) ; status is the second char in session record
878 (if (eq (char-after (point)) new-status) 878 (if (eq (char-after (point)) new-status)
diff --git a/lisp/ediff-ptch.el b/lisp/ediff-ptch.el
index 342f75fd1e0..4040985d1c8 100644
--- a/lisp/ediff-ptch.el
+++ b/lisp/ediff-ptch.el
@@ -28,7 +28,7 @@
28(provide 'ediff-ptch) 28(provide 'ediff-ptch)
29 29
30(defgroup ediff-ptch nil 30(defgroup ediff-ptch nil
31 "Ediff patch support" 31 "Ediff patch support."
32 :tag "Patch" 32 :tag "Patch"
33 :prefix "ediff-" 33 :prefix "ediff-"
34 :group 'ediff) 34 :group 'ediff)
diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el
index dde306a3857..c43307938fc 100644
--- a/lisp/ediff-wind.el
+++ b/lisp/ediff-wind.el
@@ -66,7 +66,7 @@
66 (defun ediff-compute-toolbar-width () 0)) 66 (defun ediff-compute-toolbar-width () 0))
67 67
68(defgroup ediff-window nil 68(defgroup ediff-window nil
69 "Ediff window manipulation" 69 "Ediff window manipulation."
70 :prefix "ediff-" 70 :prefix "ediff-"
71 :group 'ediff 71 :group 'ediff
72 :group 'frames) 72 :group 'frames)
diff --git a/lisp/ediff.el b/lisp/ediff.el
index 00a7e2f512a..3a40aafda55 100644
--- a/lisp/ediff.el
+++ b/lisp/ediff.el
@@ -7,7 +7,7 @@
7;; Keywords: comparing, merging, patching, tools, unix 7;; Keywords: comparing, merging, patching, tools, unix
8 8
9(defconst ediff-version "2.80" "The current version of Ediff") 9(defconst ediff-version "2.80" "The current version of Ediff")
10(defconst ediff-date "June 3, 2005" "Date of last update") 10(defconst ediff-date "June 3, 2005" "Date of last update")
11 11
12 12
13;; This file is part of GNU Emacs. 13;; This file is part of GNU Emacs.
@@ -135,7 +135,7 @@
135(require 'ediff-mult) ; required because of the registry stuff 135(require 'ediff-mult) ; required because of the registry stuff
136 136
137(defgroup ediff nil 137(defgroup ediff nil
138 "A comprehensive visual interface to diff & patch" 138 "A comprehensive visual interface to diff & patch."
139 :tag "Ediff" 139 :tag "Ediff"
140 :group 'tools) 140 :group 'tools)
141 141
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 68d1287d98c..7dbf61c5bf3 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -1,7 +1,7 @@
1;; autoload.el --- maintain autoloads in loaddefs.el 1;; autoload.el --- maintain autoloads in loaddefs.el
2 2
3;; Copyright (C) 1991,92,93,94,95,96,97, 2001,02,03,04 3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
4;; Free Software Foundation, Inc. 4;; 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Roland McGrath <roland@gnu.org> 6;; Author: Roland McGrath <roland@gnu.org>
7;; Keywords: maint 7;; Keywords: maint
@@ -123,7 +123,17 @@ or macro definition or a defcustom)."
123 ) 123 )
124 `(progn 124 `(progn
125 (defvar ,varname ,init ,doc) 125 (defvar ,varname ,init ,doc)
126 (custom-autoload ',varname ,file)))) 126 (custom-autoload ',varname ,file)
127 ;; The use of :require in a defcustom can be annoying, especially
128 ;; when defcustoms are moved from one file to another between
129 ;; releases because the :require arg gets placed in the user's
130 ;; .emacs. In order for autoloaded minor modes not to need the
131 ;; use of :require, we arrange to store their :setter.
132 ,(let ((setter (condition-case nil
133 (cadr (memq :set form))
134 (error nil))))
135 (if (equal setter ''custom-set-minor-mode)
136 `(put ',varname 'custom-set 'custom-set-minor-mode))))))
127 137
128 ;; nil here indicates that this is not a special autoload form. 138 ;; nil here indicates that this is not a special autoload form.
129 (t nil)))) 139 (t nil))))
@@ -566,5 +576,5 @@ Calls `update-directory-autoloads' on the command line arguments."
566 576
567(provide 'autoload) 577(provide 'autoload)
568 578
569;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 579;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
570;;; autoload.el ends here 580;;; autoload.el ends here
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 3948dae610b..cc472a00a30 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -193,7 +193,7 @@
193 193
194 194
195(defgroup bytecomp nil 195(defgroup bytecomp nil
196 "Emacs Lisp byte-compiler" 196 "Emacs Lisp byte-compiler."
197 :group 'lisp) 197 :group 'lisp)
198 198
199(defcustom emacs-lisp-file-regexp (if (eq system-type 'vax-vms) 199(defcustom emacs-lisp-file-regexp (if (eq system-type 'vax-vms)
@@ -1248,7 +1248,10 @@ extra args."
1248(defun byte-compile-nogroup-warn (form) 1248(defun byte-compile-nogroup-warn (form)
1249 (let ((keyword-args (cdr (cdr (cdr (cdr form))))) 1249 (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
1250 (name (cadr form))) 1250 (name (cadr form)))
1251 (or (plist-get keyword-args :group) 1251 (or (not (eq (car-safe name) 'quote))
1252 (and (eq (car form) 'custom-declare-group)
1253 (equal name ''emacs))
1254 (plist-get keyword-args :group)
1252 (not (and (consp name) (eq (car name) 'quote))) 1255 (not (and (consp name) (eq (car name) 'quote)))
1253 (byte-compile-warn 1256 (byte-compile-warn
1254 "%s for `%s' fails to specify containing group" 1257 "%s for `%s' fails to specify containing group"
diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el
index a203155673c..22c2460c16f 100644
--- a/lisp/emacs-lisp/cl-indent.el
+++ b/lisp/emacs-lisp/cl-indent.el
@@ -49,13 +49,13 @@
49;;; Code: 49;;; Code:
50 50
51(defgroup lisp-indent nil 51(defgroup lisp-indent nil
52 "Indentation in Lisp" 52 "Indentation in Lisp."
53 :group 'lisp) 53 :group 'lisp)
54 54
55 55
56(defcustom lisp-indent-maximum-backtracking 3 56(defcustom lisp-indent-maximum-backtracking 3
57 "*Maximum depth to backtrack out from a sublist for structured indentation. 57 "*Maximum depth to backtrack out from a sublist for structured indentation.
58If this variable is 0, no backtracking will occur and forms such as flet 58If this variable is 0, no backtracking will occur and forms such as `flet'
59may not be correctly indented." 59may not be correctly indented."
60 :type 'integer 60 :type 'integer
61 :group 'lisp-indent) 61 :group 'lisp-indent)
diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el
index 572c658d0fc..d5d385c2c7b 100644
--- a/lisp/emacs-lisp/crm.el
+++ b/lisp/emacs-lisp/crm.el
@@ -197,9 +197,10 @@ If an element is found, bind:
197 respectively, 197 respectively,
198 198
199and return t." 199and return t."
200 (let* ((minibuffer-string (buffer-string)) 200 (let* ((prompt-end (minibuffer-prompt-end))
201 (end-index (or (string-match "," minibuffer-string (1- (point))) 201 (minibuffer-string (buffer-substring prompt-end (point-max)))
202 (1- (point-max)))) 202 (end-index (or (string-match "," minibuffer-string (- (point) prompt-end))
203 (- (point-max) prompt-end)))
203 (target-string (substring minibuffer-string 0 end-index)) 204 (target-string (substring minibuffer-string 0 end-index))
204 (index (or (string-match 205 (index (or (string-match
205 (concat crm-separator "\\([^" crm-separator "]*\\)$") 206 (concat crm-separator "\\([^" crm-separator "]*\\)$")
@@ -213,9 +214,10 @@ and return t."
213 (progn 214 (progn
214 ;; 215 ;;
215 (setq crm-beginning-of-element (match-beginning 1)) 216 (setq crm-beginning-of-element (match-beginning 1))
216 (setq crm-end-of-element end-index) 217 (setq crm-end-of-element (+ end-index prompt-end))
217 ;; string to the left of the current element 218 ;; string to the left of the current element
218 (setq crm-left-of-element (substring target-string 0 (match-beginning 1))) 219 (setq crm-left-of-element
220 (substring target-string 0 (match-beginning 1)))
219 ;; the current element 221 ;; the current element
220 (setq crm-current-element (match-string 1 target-string)) 222 (setq crm-current-element (match-string 1 target-string))
221 ;; string to the right of the current element 223 ;; string to the right of the current element
@@ -287,7 +289,7 @@ The meanings of the return values are:
287 289
288 (if completedp 290 (if completedp
289 (progn 291 (progn
290 (erase-buffer) 292 (delete-region (minibuffer-prompt-end) (point-max))
291 (insert crm-left-of-element completion) 293 (insert crm-left-of-element completion)
292 ;; (if crm-complete-up-to-point 294 ;; (if crm-complete-up-to-point
293 ;; (insert crm-separator)) 295 ;; (insert crm-separator))
@@ -480,7 +482,7 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
480 (setq result 482 (setq result
481 (catch 'crm-exit 483 (catch 'crm-exit
482 484
483 (if (eq (point-min) (point-max)) 485 (if (eq (minibuffer-prompt-end) (point-max))
484 (throw 'crm-exit t)) 486 (throw 'crm-exit t))
485 487
486 ;; TODO: this test is suspect? 488 ;; TODO: this test is suspect?
@@ -506,7 +508,8 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
506 nil 508 nil
507 (if (equal result "check") 509 (if (equal result "check")
508 (let ((check-strings 510 (let ((check-strings
509 (crm-strings-completed-p (buffer-string)))) 511 (crm-strings-completed-p
512 (buffer-substring (minibuffer-prompt-end) (point-max)))))
510 ;; check all of minibuffer 513 ;; check all of minibuffer
511 (if (eq check-strings t) 514 (if (eq check-strings t)
512 (throw 'exit nil) 515 (throw 'exit nil)
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index e543932d8b4..45b6e810ca1 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -231,7 +231,9 @@ first will be printed into the backtrace buffer."
231 ;; would need to be de-iconified anyway immediately 231 ;; would need to be de-iconified anyway immediately
232 ;; after when we re-enter the debugger, so iconifying it 232 ;; after when we re-enter the debugger, so iconifying it
233 ;; here would cause flashing. 233 ;; here would cause flashing.
234 (bury-buffer)))) 234 ;; Use quit-window rather than bury-buffer to quieten
235 ;; Drew Adams. --Stef
236 (quit-window))))
235 (kill-buffer debugger-buffer)) 237 (kill-buffer debugger-buffer))
236 (set-match-data debugger-outer-match-data))) 238 (set-match-data debugger-outer-match-data)))
237 ;; Put into effect the modified values of these variables 239 ;; Put into effect the modified values of these variables
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index a342f8a5530..6ee87919d38 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -201,10 +201,7 @@ See the command `%s' for a description of this minor-mode."))
201 :type 'boolean 201 :type 'boolean
202 ,@(cond 202 ,@(cond
203 ((not (and curfile require)) nil) 203 ((not (and curfile require)) nil)
204 ((not (eq require t)) `(:require ,require)) 204 ((not (eq require t)) `(:require ,require)))
205 (t `(:require
206 ',(intern (file-name-nondirectory
207 (file-name-sans-extension curfile))))))
208 ,@(nreverse extra-keywords)))) 205 ,@(nreverse extra-keywords))))
209 206
210 ;; The actual function. 207 ;; The actual function.
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index ebe375088a3..55fa93775db 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -61,7 +61,7 @@
61;;; Options 61;;; Options
62 62
63(defgroup edebug nil 63(defgroup edebug nil
64 "A source-level debugger for Emacs Lisp" 64 "A source-level debugger for Emacs Lisp."
65 :group 'lisp) 65 :group 'lisp)
66 66
67 67
@@ -519,7 +519,7 @@ the minibuffer."
519 (put ',(nth 1 form) 'saved-face 519 (put ',(nth 1 form) 'saved-face
520 ',(get (nth 1 form) 'saved-face)) 520 ',(get (nth 1 form) 'saved-face))
521 (put ',(nth 1 form) 'customized-face 521 (put ',(nth 1 form) 'customized-face
522 ',(nth 2 form))) 522 ,(nth 2 form)))
523 (put (nth 1 form) 'saved-face nil))))) 523 (put (nth 1 form) 'saved-face nil)))))
524 (setq edebug-result (eval form)) 524 (setq edebug-result (eval form))
525 (if (not edebugging) 525 (if (not edebugging)
@@ -4224,7 +4224,7 @@ reinstrument it."
4224 (- (current-column) 4224 (- (current-column)
4225 (if (= ?\( (following-char)) 0 1))))) 4225 (if (= ?\( (following-char)) 0 1)))))
4226 (insert (make-string 4226 (insert (make-string
4227 (max 0 (- col (- (point) start-of-count-line))) ?\ ) 4227 (max 0 (- col (- (point) start-of-count-line))) ?\s)
4228 (if (and (< 0 count) 4228 (if (and (< 0 count)
4229 (not (memq coverage 4229 (not (memq coverage
4230 '(unknown ok-coverage)))) 4230 '(unknown ok-coverage))))
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index 82ce6f404f7..feaeb2898ce 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -130,7 +130,7 @@
130;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 130;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
131 131
132(defgroup elp nil 132(defgroup elp nil
133 "Emacs Lisp Profiler" 133 "Emacs Lisp Profiler."
134 :group 'lisp) 134 :group 'lisp)
135 135
136(defcustom elp-function-list nil 136(defcustom elp-function-list nil
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 972fe6bafc8..1ee4665005a 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -631,10 +631,10 @@ Reinitialize the face according to the `defface' specification."
631 ;; Resetting `saved-face' temporarily to nil is needed to let 631 ;; Resetting `saved-face' temporarily to nil is needed to let
632 ;; `defface' change the spec, regardless of a saved spec. 632 ;; `defface' change the spec, regardless of a saved spec.
633 (prog1 `(prog1 ,form 633 (prog1 `(prog1 ,form
634 (put ',(eval (nth 1 form)) 'saved-face 634 (put ,(nth 1 form) 'saved-face
635 ',(get (eval (nth 1 form)) 'saved-face)) 635 ',(get (eval (nth 1 form)) 'saved-face))
636 (put ',(eval (nth 1 form)) 'customized-face 636 (put ,(nth 1 form) 'customized-face
637 ',(eval (nth 2 form)))) 637 ,(nth 2 form)))
638 (put (eval (nth 1 form)) 'saved-face nil))) 638 (put (eval (nth 1 form)) 'saved-face nil)))
639 ((eq (car form) 'progn) 639 ((eq (car form) 'progn)
640 (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) 640 (cons 'progn (mapcar 'eval-defun-1 (cdr form))))
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index b5a279bbbf4..b3573d0f3b5 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -45,15 +45,17 @@
45;; structure of the result with the input. Doing so recursively using 45;; structure of the result with the input. Doing so recursively using
46;; `maybe-cons' results in excessively deep recursion for very long 46;; `maybe-cons' results in excessively deep recursion for very long
47;; input forms. 47;; input forms.
48(defmacro macroexp-accumulate (#1=#:\(var\ list\) &rest body) 48(defmacro macroexp-accumulate (var+list &rest body)
49 "Return a list of the results of evaluating BODY for each element of LIST. 49 "Return a list of the results of evaluating BODY for each element of LIST.
50Evaluate BODY with VAR bound to each `car' from LIST, in turn. 50Evaluate BODY with VAR bound to each `car' from LIST, in turn.
51Return a list of the values of the final form in BODY. 51Return a list of the values of the final form in BODY.
52The list structure of the result will share as much with LIST as 52The list structure of the result will share as much with LIST as
53possible (for instance, when BODY just returns VAR unchanged, the 53possible (for instance, when BODY just returns VAR unchanged, the
54result will be eq to LIST)." 54result will be eq to LIST).
55 (let ((var (car #1#)) 55
56 (list (cadr #1#)) 56\(fn (VAR LIST) BODY...)"
57 (let ((var (car var+list))
58 (list (cadr var+list))
57 (shared (make-symbol "shared")) 59 (shared (make-symbol "shared"))
58 (unshared (make-symbol "unshared")) 60 (unshared (make-symbol "unshared"))
59 (tail (make-symbol "tail")) 61 (tail (make-symbol "tail"))
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 93e30fb0f55..d9f3df99bae 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -67,7 +67,7 @@ to make output that `read' can handle, whenever this is possible."
67 (save-excursion 67 (save-excursion
68 (backward-char 1) 68 (backward-char 1)
69 (skip-chars-backward "'`#^") 69 (skip-chars-backward "'`#^")
70 (when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n))) 70 (when (and (not (bobp)) (memq (char-before) '(?\s ?\t ?\n)))
71 (delete-region 71 (delete-region
72 (point) 72 (point)
73 (progn (skip-chars-backward " \t\n") (point))) 73 (progn (skip-chars-backward " \t\n") (point)))
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index 6b87d06cb0e..950c9e251be 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -73,7 +73,7 @@
73;;;========================================================================== 73;;;==========================================================================
74 74
75(defgroup testcover nil 75(defgroup testcover nil
76 "Code-coverage tester" 76 "Code-coverage tester."
77 :group 'lisp 77 :group 'lisp
78 :prefix "testcover-" 78 :prefix "testcover-"
79 :version "21.1") 79 :version "21.1")
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 79aad8bd121..d9662f91c7f 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -408,12 +408,11 @@ This function returns a timer object which you can use in `cancel-timer'."
408(defmacro with-timeout (list &rest body) 408(defmacro with-timeout (list &rest body)
409 "Run BODY, but if it doesn't finish in SECONDS seconds, give up. 409 "Run BODY, but if it doesn't finish in SECONDS seconds, give up.
410If we give up, we run the TIMEOUT-FORMS and return the value of the last one. 410If we give up, we run the TIMEOUT-FORMS and return the value of the last one.
411The call should look like:
412 (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
413The timeout is checked whenever Emacs waits for some kind of external 411The timeout is checked whenever Emacs waits for some kind of external
414event \(such as keyboard input, input from subprocesses, or a certain time); 412event (such as keyboard input, input from subprocesses, or a certain time);
415if the program loops without waiting in any way, the timeout will not 413if the program loops without waiting in any way, the timeout will not
416be detected." 414be detected.
415\n(fn (SECONDS TIMEOUT-FORMS...) BODY)"
417 (let ((seconds (car list)) 416 (let ((seconds (car list))
418 (timeout-forms (cdr list))) 417 (timeout-forms (cdr list)))
419 `(let ((with-timeout-tag (cons nil nil)) 418 `(let ((with-timeout-tag (cons nil nil))
diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el
index e3d3e9e645e..31ff8b993c3 100644
--- a/lisp/emacs-lisp/trace.el
+++ b/lisp/emacs-lisp/trace.el
@@ -156,7 +156,7 @@
156(require 'advice) 156(require 'advice)
157 157
158(defgroup trace nil 158(defgroup trace nil
159 "Tracing facility for Emacs Lisp functions" 159 "Tracing facility for Emacs Lisp functions."
160 :prefix "trace-" 160 :prefix "trace-"
161 :group 'lisp) 161 :group 'lisp)
162 162
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index c6d479b173f..9aa6650810c 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -350,7 +350,7 @@ Must be set prior to enabling CUA."
350 350
351(defcustom cua-check-pending-input t 351(defcustom cua-check-pending-input t
352 "*If non-nil, don't override prefix key if input pending. 352 "*If non-nil, don't override prefix key if input pending.
353It is rumoured that input-pending-p is unreliable under some window 353It is rumoured that `input-pending-p' is unreliable under some window
354managers, so try setting this to nil, if prefix override doesn't work." 354managers, so try setting this to nil, if prefix override doesn't work."
355 :type 'boolean 355 :type 'boolean
356 :group 'cua) 356 :group 'cua)
@@ -370,7 +370,7 @@ buffer is NOT modified, until you execute a command that actually modifies it.
370 "*If non-nil, automatically tabify after rectangle commands. 370 "*If non-nil, automatically tabify after rectangle commands.
371This basically means that `tabify' is applied to all lines that 371This basically means that `tabify' is applied to all lines that
372are modified by inserting or deleting a rectangle. If value is 372are modified by inserting or deleting a rectangle. If value is
373an integer, cua will look for existing tabs in a region around 373an integer, CUA will look for existing tabs in a region around
374the rectangle, and only do the conversion if any tabs are already 374the rectangle, and only do the conversion if any tabs are already
375present. The number specifies then number of characters before 375present. The number specifies then number of characters before
376and after the region marked by the rectangle to search." 376and after the region marked by the rectangle to search."
@@ -568,7 +568,7 @@ a cons (TYPE . COLOR), then both properties are affected."
568;;; Low-level Interface 568;;; Low-level Interface
569 569
570(defvar cua-inhibit-cua-keys nil 570(defvar cua-inhibit-cua-keys nil
571 "Buffer-local variable that may disable the cua keymappings.") 571 "Buffer-local variable that may disable the CUA keymappings.")
572(make-variable-buffer-local 'cua-inhibit-cua-keys) 572(make-variable-buffer-local 'cua-inhibit-cua-keys)
573 573
574;;; Aux. variables 574;;; Aux. variables
@@ -902,8 +902,8 @@ Activates the mark if a prefix argument is given."
902 902
903(defun cua-repeat-replace-region (arg) 903(defun cua-repeat-replace-region (arg)
904 "Repeat replacing text of highlighted region with typed text. 904 "Repeat replacing text of highlighted region with typed text.
905Searches for the next streach of text identical to the region last 905Searches for the next stretch of text identical to the region last
906replaced by typing text over it and replaces it with the same streach 906replaced by typing text over it and replaces it with the same stretch
907of text." 907of text."
908 (interactive "P") 908 (interactive "P")
909 (when cua--last-deleted-region-pos 909 (when cua--last-deleted-region-pos
@@ -1331,7 +1331,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1331When enabled, using shifted movement keys will activate the region (and 1331When enabled, using shifted movement keys will activate the region (and
1332highlight the region using `transient-mark-mode'), and typed text replaces 1332highlight the region using `transient-mark-mode'), and typed text replaces
1333the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and 1333the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and
1334paste (in addition to the normal emacs bindings)." 1334paste (in addition to the normal Emacs bindings)."
1335 :global t 1335 :global t
1336 :group 'cua 1336 :group 'cua
1337 :set-after '(cua-enable-modeline-indications cua-use-hyper-key) 1337 :set-after '(cua-enable-modeline-indications cua-use-hyper-key)
@@ -1394,7 +1394,7 @@ paste (in addition to the normal emacs bindings)."
1394 (setq cua--saved-state nil)))) 1394 (setq cua--saved-state nil))))
1395 1395
1396(defun cua-debug () 1396(defun cua-debug ()
1397 "Toggle cua debugging." 1397 "Toggle CUA debugging."
1398 (interactive) 1398 (interactive)
1399 (setq cua--debug (not cua--debug))) 1399 (setq cua--debug (not cua--debug)))
1400 1400
diff --git a/lisp/emulation/cua-gmrk.el b/lisp/emulation/cua-gmrk.el
index b8874df0f34..68a28e1637a 100644
--- a/lisp/emulation/cua-gmrk.el
+++ b/lisp/emulation/cua-gmrk.el
@@ -96,7 +96,7 @@ When the global marker is set, CUA cut and copy commands will automatically
96insert the deleted or copied text before the global marker, even when the 96insert the deleted or copied text before the global marker, even when the
97global marker is in another buffer. 97global marker is in another buffer.
98If the global marker isn't set, set the global marker at point in the current 98If the global marker isn't set, set the global marker at point in the current
99buffer. Otherwise jump to the global marker position and cancel it. 99buffer. Otherwise jump to the global marker position and cancel it.
100With prefix argument, don't jump to global mark when cancelling it." 100With prefix argument, don't jump to global mark when cancelling it."
101 (interactive "P") 101 (interactive "P")
102 (unless cua--global-mark-initialized 102 (unless cua--global-mark-initialized
@@ -105,7 +105,7 @@ With prefix argument, don't jump to global mark when cancelling it."
105 (if (not buffer-read-only) 105 (if (not buffer-read-only)
106 (cua--activate-global-mark t) 106 (cua--activate-global-mark t)
107 (ding) 107 (ding)
108 (message "Cannot set global mark in read-only buffer.")) 108 (message "Cannot set global mark in read-only buffer"))
109 (when (not stay) 109 (when (not stay)
110 (pop-to-buffer (marker-buffer cua--global-mark-marker)) 110 (pop-to-buffer (marker-buffer cua--global-mark-marker))
111 (goto-char cua--global-mark-marker)) 111 (goto-char cua--global-mark-marker))
@@ -165,7 +165,7 @@ With prefix argument, don't jump to global mark when cancelling it."
165 (if (equal (marker-buffer cua--global-mark-marker) src-buf) 165 (if (equal (marker-buffer cua--global-mark-marker) src-buf)
166 (if (and (< start (marker-position cua--global-mark-marker)) 166 (if (and (< start (marker-position cua--global-mark-marker))
167 (< (marker-position cua--global-mark-marker) end)) 167 (< (marker-position cua--global-mark-marker) end))
168 (message "Can't move region into itself.") 168 (message "Can't move region into itself")
169 (let ((text (buffer-substring-no-properties start end)) 169 (let ((text (buffer-substring-no-properties start end))
170 (p1 (copy-marker start)) 170 (p1 (copy-marker start))
171 (p2 (copy-marker end))) 171 (p2 (copy-marker end)))
@@ -222,7 +222,7 @@ With prefix argument, don't jump to global mark when cancelling it."
222 (setq in-rect t olist nil) 222 (setq in-rect t olist nil)
223 (setq olist (cdr olist)))) 223 (setq olist (cdr olist))))
224 (if in-rect 224 (if in-rect
225 (message "Can't move rectangle into itself.") 225 (message "Can't move rectangle into itself")
226 (let ((text (cua--extract-rectangle))) 226 (let ((text (cua--extract-rectangle)))
227 (cua--delete-rectangle) 227 (cua--delete-rectangle)
228 (goto-char (marker-position cua--global-mark-marker)) 228 (goto-char (marker-position cua--global-mark-marker))
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index 72fd9195850..19360ac6845 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -992,7 +992,7 @@ With prefix argument, the toggle restriction."
992(defun cua-do-rectangle-padding () 992(defun cua-do-rectangle-padding ()
993 (interactive) 993 (interactive)
994 (if buffer-read-only 994 (if buffer-read-only
995 (message "Cannot do padding in read-only buffer.") 995 (message "Cannot do padding in read-only buffer")
996 (cua--rectangle-operation nil nil t t t) 996 (cua--rectangle-operation nil nil t t t)
997 (cua--rectangle-set-corners)) 997 (cua--rectangle-set-corners))
998 (cua--keep-active)) 998 (cua--keep-active))
@@ -1098,14 +1098,14 @@ The length of STRING need not be the same as the rectangle width."
1098 '(lambda (l r) 1098 '(lambda (l r)
1099 (cua--rectangle-right (max l (+ l (length string) -1))))))) 1099 (cua--rectangle-right (max l (+ l (length string) -1)))))))
1100 1100
1101(defun cua-fill-char-rectangle (ch) 1101(defun cua-fill-char-rectangle (character)
1102 "Replace CUA rectangle contents with CHARACTER." 1102 "Replace CUA rectangle contents with CHARACTER."
1103 (interactive "cFill rectangle with character: ") 1103 (interactive "cFill rectangle with character: ")
1104 (cua--rectangle-operation 'clear nil t 1 nil 1104 (cua--rectangle-operation 'clear nil t 1 nil
1105 '(lambda (s e l r) 1105 '(lambda (s e l r)
1106 (delete-region s e) 1106 (delete-region s e)
1107 (move-to-column l t) 1107 (move-to-column l t)
1108 (insert-char ch (- r l))))) 1108 (insert-char character (- r l)))))
1109 1109
1110(defun cua-replace-in-rectangle (regexp newtext) 1110(defun cua-replace-in-rectangle (regexp newtext)
1111 "Replace REGEXP with NEWTEXT in each line of CUA rectangle." 1111 "Replace REGEXP with NEWTEXT in each line of CUA rectangle."
@@ -1137,9 +1137,9 @@ The length of STRING need not be the same as the rectangle width."
1137 (t nil))))) 1137 (t nil)))))
1138 1138
1139(defvar cua--rectangle-seq-format "%d" 1139(defvar cua--rectangle-seq-format "%d"
1140 "Last format used by cua-sequence-rectangle.") 1140 "Last format used by `cua-sequence-rectangle'.")
1141 1141
1142(defun cua-sequence-rectangle (first incr fmt) 1142(defun cua-sequence-rectangle (first incr format)
1143 "Resequence each line of CUA rectangle starting from FIRST. 1143 "Resequence each line of CUA rectangle starting from FIRST.
1144The numbers are formatted according to the FORMAT string." 1144The numbers are formatted according to the FORMAT string."
1145 (interactive 1145 (interactive
@@ -1150,13 +1150,13 @@ The numbers are formatted according to the FORMAT string."
1150 (string-to-number 1150 (string-to-number
1151 (read-string "Increment: (1) " nil nil "1")) 1151 (read-string "Increment: (1) " nil nil "1"))
1152 (read-string (concat "Format: (" cua--rectangle-seq-format ") ")))) 1152 (read-string (concat "Format: (" cua--rectangle-seq-format ") "))))
1153 (if (= (length fmt) 0) 1153 (if (= (length format) 0)
1154 (setq fmt cua--rectangle-seq-format) 1154 (setq format cua--rectangle-seq-format)
1155 (setq cua--rectangle-seq-format fmt)) 1155 (setq cua--rectangle-seq-format format))
1156 (cua--rectangle-operation 'clear nil t 1 nil 1156 (cua--rectangle-operation 'clear nil t 1 nil
1157 '(lambda (s e l r) 1157 '(lambda (s e l r)
1158 (delete-region s e) 1158 (delete-region s e)
1159 (insert (format fmt first)) 1159 (insert (format format first))
1160 (setq first (+ first incr))))) 1160 (setq first (+ first incr)))))
1161 1161
1162(defmacro cua--convert-rectangle-as (command tabify) 1162(defmacro cua--convert-rectangle-as (command tabify)
diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el
index e4943ff4a0a..5f824162676 100644
--- a/lisp/emulation/edt-mapper.el
+++ b/lisp/emulation/edt-mapper.el
@@ -113,7 +113,6 @@
113 (sit-for 600) 113 (sit-for 600)
114 (kill-emacs t))) 114 (kill-emacs t)))
115 115
116
117;;; 116;;;
118;;; Decide Emacs Variant, GNU Emacs or XEmacs (aka Lucid Emacs). 117;;; Decide Emacs Variant, GNU Emacs or XEmacs (aka Lucid Emacs).
119;;; Determine Window System, and X Server Vendor (if appropriate). 118;;; Determine Window System, and X Server Vendor (if appropriate).
@@ -146,6 +145,11 @@
146(defvar edt-return-seq nil) 145(defvar edt-return-seq nil)
147(defvar edt-term nil) 146(defvar edt-term nil)
148 147
148;; To silence the byte-compiler
149(eval-when-compile
150 (defvar EDT-key-name)
151 (defvar edt-save-function-key-map))
152
149;;; 153;;;
150;;; Determine Terminal Type (if appropriate). 154;;; Determine Terminal Type (if appropriate).
151;;; 155;;;
diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el
index 01f0af6f307..2b9a1118603 100644
--- a/lisp/emulation/edt.el
+++ b/lisp/emulation/edt.el
@@ -175,6 +175,20 @@
175 :prefix "edt-" 175 :prefix "edt-"
176 :group 'emulations) 176 :group 'emulations)
177 177
178;; To silence the byte-compiler
179(eval-when-compile
180 (defvar *EDT-keys*)
181 (defvar edt-default-global-map)
182 (defvar edt-last-copied-word)
183 (defvar edt-learn-macro-count)
184 (defvar edt-orig-page-delimiter)
185 (defvar edt-orig-transient-mark-mode)
186 (defvar edt-rect-start-point)
187 (defvar edt-user-global-map)
188 (defvar rect-start-point)
189 (defvar time-string)
190 (defvar zmacs-region-stays))
191
178;;; 192;;;
179;;; Version Information 193;;; Version Information
180;;; 194;;;
@@ -332,6 +346,11 @@ This means that an edt-user.el file was found in the user's `load-path'.")
332 346
333(defvar edt-keys-file nil 347(defvar edt-keys-file nil
334 "User's custom keypad and function keys mappings to emulate LK-201 keyboard.") 348 "User's custom keypad and function keys mappings to emulate LK-201 keyboard.")
349
350(defvar edt-last-copied-word nil
351 "Last word that the user copied.")
352
353(defvar zmacs-region-stays)
335 354
336;;;; 355;;;;
337;;;; EDT Emulation Commands 356;;;; EDT Emulation Commands
@@ -1621,9 +1640,8 @@ Argument NUM is the percentage into the buffer to move."
1621 1640
1622(defun edt-mark-section-wisely () 1641(defun edt-mark-section-wisely ()
1623 "Mark the section in a manner consistent with the `major-mode'. 1642 "Mark the section in a manner consistent with the `major-mode'.
1624Uses `mark-defun' for emacs-lisp and Lisp, 1643Uses `mark-defun' for Emacs-Lisp and Lisp, and for Fortran,
1625mark-c-function for C, 1644`c-mark-function' for C,
1626mark-fortran-subsystem for fortran,
1627and `mark-paragraph' for other modes." 1645and `mark-paragraph' for other modes."
1628 (interactive) 1646 (interactive)
1629 (if edt-select-mode 1647 (if edt-select-mode
@@ -1631,15 +1649,13 @@ and `mark-paragraph' for other modes."
1631 (edt-reset)) 1649 (edt-reset))
1632 (progn 1650 (progn
1633 (cond ((or (eq major-mode 'emacs-lisp-mode) 1651 (cond ((or (eq major-mode 'emacs-lisp-mode)
1652 (eq major-mode 'fortran-mode)
1634 (eq major-mode 'lisp-mode)) 1653 (eq major-mode 'lisp-mode))
1635 (mark-defun) 1654 (mark-defun)
1636 (message "Lisp defun selected")) 1655 (message "Lisp defun selected"))
1637 ((eq major-mode 'c-mode) 1656 ((eq major-mode 'c-mode)
1638 (mark-c-function) 1657 (c-mark-function)
1639 (message "C function selected")) 1658 (message "C function selected"))
1640 ((eq major-mode 'fortran-mode)
1641 (mark-fortran-subprogram)
1642 (message "Fortran subprogram selected"))
1643 (t (mark-paragraph) 1659 (t (mark-paragraph)
1644 (message "Paragraph selected")))))) 1660 (message "Paragraph selected"))))))
1645 1661
@@ -1766,8 +1782,7 @@ Argument NUM is the number of times to duplicate the line."
1766 "Display the current time." 1782 "Display the current time."
1767 (interactive) 1783 (interactive)
1768 (if edt-x-emacs19-p (setq zmacs-region-stays t)) 1784 (if edt-x-emacs19-p (setq zmacs-region-stays t))
1769 (set 'time-string (current-time-string)) 1785 (message "%s" (current-time-string)))
1770 (message "%s" time-string))
1771 1786
1772;;; 1787;;;
1773;;; LEARN 1788;;; LEARN
diff --git a/lisp/emulation/tpu-edt.el b/lisp/emulation/tpu-edt.el
index ec0eef05321..d685bec1e65 100644
--- a/lisp/emulation/tpu-edt.el
+++ b/lisp/emulation/tpu-edt.el
@@ -307,17 +307,11 @@
307;;; Emacs version identifiers - currently referenced by 307;;; Emacs version identifiers - currently referenced by
308;;; 308;;;
309;;; o tpu-mark o tpu-set-mark 309;;; o tpu-mark o tpu-set-mark
310;;; o tpu-string-prompt o tpu-regexp-prompt 310;;; o mode line section o tpu-load-xkeys
311;;; o tpu-edt-on o tpu-load-xkeys
312;;; o tpu-update-mode-line o mode line section
313;;; 311;;;
314(defconst tpu-emacs19-p (not (string-lessp emacs-version "19")) 312(defconst tpu-lucid-emacs-p
315 "Non-nil if we are running Lucid Emacs or version 19.") 313 (string-match "Lucid" emacs-version)
316 314 "Non-nil if we are running Lucid Emacs.")
317(defconst tpu-lucid-emacs19-p
318 (and tpu-emacs19-p (string-match "Lucid" emacs-version))
319 "Non-nil if we are running Lucid Emacs version 19.")
320
321 315
322;;; 316;;;
323;;; Global Keymaps 317;;; Global Keymaps
@@ -341,10 +335,10 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
341 "Maps the function keys on the VT100 keyboard preceded by GOLD-SS3.") 335 "Maps the function keys on the VT100 keyboard preceded by GOLD-SS3.")
342 336
343(defvar tpu-global-map nil "TPU-edt global keymap.") 337(defvar tpu-global-map nil "TPU-edt global keymap.")
344(defvar tpu-original-global-map (copy-keymap global-map) 338(defvar tpu-original-global-map global-map
345 "Original global keymap.") 339 "Original global keymap.")
346 340
347(and tpu-lucid-emacs19-p 341(and tpu-lucid-emacs-p
348 (defvar minibuffer-local-ns-map (make-sparse-keymap) 342 (defvar minibuffer-local-ns-map (make-sparse-keymap)
349 "Hack to give Lucid Emacs the same maps as ordinary Emacs.")) 343 "Hack to give Lucid Emacs the same maps as ordinary Emacs."))
350 344
@@ -463,13 +457,12 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
463(defun tpu-update-mode-line nil 457(defun tpu-update-mode-line nil
464 "Make sure mode-line in the current buffer reflects all changes." 458 "Make sure mode-line in the current buffer reflects all changes."
465 (setq tpu-mark-flag (if transient-mark-mode "" (if (tpu-mark) " @" " "))) 459 (setq tpu-mark-flag (if transient-mark-mode "" (if (tpu-mark) " @" " ")))
466 (cond (tpu-emacs19-p (force-mode-line-update)) 460 (force-mode-line-update))
467 (t (set-buffer-modified-p (buffer-modified-p)) (sit-for 0))))
468 461
469(cond (tpu-lucid-emacs19-p 462(cond (tpu-lucid-emacs-p
470 (add-hook 'zmacs-deactivate-region-hook 'tpu-update-mode-line) 463 (add-hook 'zmacs-deactivate-region-hook 'tpu-update-mode-line)
471 (add-hook 'zmacs-activate-region-hook 'tpu-update-mode-line)) 464 (add-hook 'zmacs-activate-region-hook 'tpu-update-mode-line))
472 (tpu-emacs19-p 465 (t
473 (add-hook 'activate-mark-hook 'tpu-update-mode-line) 466 (add-hook 'activate-mark-hook 'tpu-update-mode-line)
474 (add-hook 'deactivate-mark-hook 'tpu-update-mode-line))) 467 (add-hook 'deactivate-mark-hook 'tpu-update-mode-line)))
475 468
@@ -542,26 +535,25 @@ Otherwise sets the tpu-match markers to nil and returns nil."
542(defun tpu-caar (thingy) (car (car thingy))) 535(defun tpu-caar (thingy) (car (car thingy)))
543(defun tpu-cadr (thingy) (car (cdr thingy))) 536(defun tpu-cadr (thingy) (car (cdr thingy)))
544 537
538(defvar zmacs-regions)
539
545(defun tpu-mark nil 540(defun tpu-mark nil
546 "TPU-edt version of the mark function. 541 "TPU-edt version of the mark function.
547Return the appropriate value of the mark for the current 542Return the appropriate value of the mark for the current
548version of Emacs." 543version of Emacs."
549 (cond (tpu-lucid-emacs19-p (mark (not zmacs-regions))) 544 (cond (tpu-lucid-emacs-p (mark (not zmacs-regions)))
550 (tpu-emacs19-p (and mark-active (mark (not transient-mark-mode)))) 545 (t (and mark-active (mark (not transient-mark-mode))))))
551 (t (mark))))
552 546
553(defun tpu-set-mark (pos) 547(defun tpu-set-mark (pos)
554 "TPU-edt version of the `set-mark' function. 548 "TPU-edt version of the `set-mark' function.
555Sets the mark at POS and activates the region according to the 549Sets the mark at POS and activates the region according to the
556current version of Emacs." 550current version of Emacs."
557 (set-mark pos) 551 (set-mark pos)
558 (and tpu-lucid-emacs19-p pos (zmacs-activate-region))) 552 (and tpu-lucid-emacs-p pos (zmacs-activate-region)))
559 553
560(defun tpu-string-prompt (prompt history-symbol) 554(defun tpu-string-prompt (prompt history-symbol)
561 "Read a string with PROMPT." 555 "Read a string with PROMPT."
562 (if tpu-emacs19-p 556 (read-from-minibuffer prompt nil nil nil history-symbol))
563 (read-from-minibuffer prompt nil nil nil history-symbol)
564 (read-string prompt)))
565 557
566(defvar tpu-last-answer nil "Most recent response to tpu-y-or-n-p.") 558(defvar tpu-last-answer nil "Most recent response to tpu-y-or-n-p.")
567 559
@@ -1118,9 +1110,7 @@ kills modified buffers without asking."
1118(defun tpu-regexp-prompt (prompt) 1110(defun tpu-regexp-prompt (prompt)
1119 "Read a string, adding 'RE' to the prompt if tpu-regexp-p is set." 1111 "Read a string, adding 'RE' to the prompt if tpu-regexp-p is set."
1120 (let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt))) 1112 (let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt)))
1121 (if tpu-emacs19-p 1113 (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)))
1122 (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)
1123 (read-string re-prompt))))
1124 1114
1125(defun tpu-search-highlight nil 1115(defun tpu-search-highlight nil
1126 (if (tpu-check-match) 1116 (if (tpu-check-match)
@@ -2017,8 +2007,6 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
2017;;; 2007;;;
2018;;; Define keymaps 2008;;; Define keymaps
2019;;; 2009;;;
2020(define-key global-map "\e[" CSI-map) ; CSI map
2021(define-key global-map "\eO" SS3-map) ; SS3 map
2022(define-key SS3-map "P" GOLD-map) ; GOLD map 2010(define-key SS3-map "P" GOLD-map) ; GOLD map
2023(define-key GOLD-map "\e[" GOLD-CSI-map) ; GOLD-CSI map 2011(define-key GOLD-map "\e[" GOLD-CSI-map) ; GOLD-CSI map
2024(define-key GOLD-map "\eO" GOLD-SS3-map) ; GOLD-SS3 map 2012(define-key GOLD-map "\eO" GOLD-SS3-map) ; GOLD-SS3 map
@@ -2276,24 +2264,12 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
2276 2264
2277 2265
2278;;; 2266;;;
2279;;; Repeat complex command map additions to make arrows work
2280;;;
2281(cond ((boundp 'repeat-complex-command-map)
2282 (define-key repeat-complex-command-map "\e[A" 'previous-complex-command)
2283 (define-key repeat-complex-command-map "\e[B" 'next-complex-command)
2284 (define-key repeat-complex-command-map "\eOA" 'previous-complex-command)
2285 (define-key repeat-complex-command-map "\eOB" 'next-complex-command)))
2286
2287
2288;;;
2289;;; Minibuffer map additions to make KP_enter = RET 2267;;; Minibuffer map additions to make KP_enter = RET
2290;;; 2268;;;
2291(define-key minibuffer-local-map "\eOM" 'exit-minibuffer) 2269(define-key minibuffer-local-map "\eOM" 'exit-minibuffer)
2292(define-key minibuffer-local-ns-map "\eOM" 'exit-minibuffer) 2270(define-key minibuffer-local-ns-map "\eOM" 'exit-minibuffer)
2293(define-key minibuffer-local-completion-map "\eOM" 'exit-minibuffer) 2271(define-key minibuffer-local-completion-map "\eOM" 'exit-minibuffer)
2294(define-key minibuffer-local-must-match-map "\eOM" 'minibuffer-complete-and-exit) 2272(define-key minibuffer-local-must-match-map "\eOM" 'minibuffer-complete-and-exit)
2295(and (boundp 'repeat-complex-command-map)
2296 (define-key repeat-complex-command-map "\eOM" 'exit-minibuffer))
2297 2273
2298 2274
2299;;; 2275;;;
@@ -2407,10 +2383,10 @@ If FILE is nil, try to load a default file. The default file names are
2407 (setq file (expand-file-name file))) 2383 (setq file (expand-file-name file)))
2408 (tpu-xkeys-file 2384 (tpu-xkeys-file
2409 (setq file (expand-file-name tpu-xkeys-file))) 2385 (setq file (expand-file-name tpu-xkeys-file)))
2410 (tpu-lucid-emacs19-p 2386 (tpu-lucid-emacs-p
2411 (setq file (convert-standard-filename 2387 (setq file (convert-standard-filename
2412 (expand-file-name "~/.tpu-lucid-keys")))) 2388 (expand-file-name "~/.tpu-lucid-keys"))))
2413 (tpu-emacs19-p 2389 (t
2414 (setq file (convert-standard-filename 2390 (setq file (convert-standard-filename
2415 (expand-file-name "~/.tpu-keys"))) 2391 (expand-file-name "~/.tpu-keys")))
2416 (and (not (file-exists-p file)) 2392 (and (not (file-exists-p file))
@@ -2503,6 +2479,10 @@ If FILE is nil, try to load a default file. The default file names are
2503 (setq-default page-delimiter "\f") 2479 (setq-default page-delimiter "\f")
2504 (setq-default truncate-lines t) 2480 (setq-default truncate-lines t)
2505 (setq scroll-step 1) 2481 (setq scroll-step 1)
2482 (setq tpu-original-global-map global-map)
2483 (setq global-map (copy-keymap global-map))
2484 (define-key global-map "\e[" CSI-map)
2485 (define-key global-map "\eO" SS3-map)
2506 (setq tpu-edt-mode t)))) 2486 (setq tpu-edt-mode t))))
2507 2487
2508(defun tpu-edt-off nil 2488(defun tpu-edt-off nil
@@ -2516,7 +2496,7 @@ If FILE is nil, try to load a default file. The default file names are
2516 (setq-default page-delimiter "^\f") 2496 (setq-default page-delimiter "^\f")
2517 (setq-default truncate-lines nil) 2497 (setq-default truncate-lines nil)
2518 (setq scroll-step 0) 2498 (setq scroll-step 0)
2519 (setq global-map (copy-keymap tpu-original-global-map)) 2499 (setq global-map tpu-original-global-map)
2520 (use-global-map global-map) 2500 (use-global-map global-map)
2521 (setq tpu-edt-mode nil)))) 2501 (setq tpu-edt-mode nil))))
2522 2502
diff --git a/lisp/emulation/vi.el b/lisp/emulation/vi.el
index d6b7c2728b2..559d1677347 100644
--- a/lisp/emulation/vi.el
+++ b/lisp/emulation/vi.el
@@ -314,7 +314,7 @@ command extensions.")
314(put 'mark-defun 'point-moving-unit 'region) 314(put 'mark-defun 'point-moving-unit 'region)
315(put 'mark-whole-buffer 'point-moving-unit 'region) 315(put 'mark-whole-buffer 'point-moving-unit 'region)
316(put 'mark-end-of-sentence 'point-moving-unit 'region) 316(put 'mark-end-of-sentence 'point-moving-unit 'region)
317(put 'mark-c-function 'point-moving-unit 'region) 317(put 'c-mark-function 'point-moving-unit 'region)
318;;; 318;;;
319 319
320(defvar vi-mark-alist nil 320(defvar vi-mark-alist nil
@@ -637,7 +637,8 @@ insert state."
637 "Go to ARGth line." 637 "Go to ARGth line."
638 (interactive "P") 638 (interactive "P")
639 (if (null (vi-raw-numeric-prefix arg)) 639 (if (null (vi-raw-numeric-prefix arg))
640 (end-of-buffer) 640 (with-no-warnings
641 (end-of-buffer))
641 (goto-line (vi-prefix-numeric-value arg)))) 642 (goto-line (vi-prefix-numeric-value arg))))
642 643
643(defun vi-beginning-of-buffer () 644(defun vi-beginning-of-buffer ()
@@ -1384,7 +1385,7 @@ l(ines)."
1384 ((char-equal region ?b) (mark-whole-buffer)) 1385 ((char-equal region ?b) (mark-whole-buffer))
1385 ((char-equal region ?p) (mark-paragraph)) 1386 ((char-equal region ?p) (mark-paragraph))
1386 ((char-equal region ?P) (mark-page arg)) 1387 ((char-equal region ?P) (mark-page arg))
1387 ((char-equal region ?f) (mark-c-function)) 1388 ((char-equal region ?f) (c-mark-function))
1388 ((char-equal region ?w) (mark-word arg)) 1389 ((char-equal region ?w) (mark-word arg))
1389 ((char-equal region ?e) (mark-end-of-sentence arg)) 1390 ((char-equal region ?e) (mark-end-of-sentence arg))
1390 ((char-equal region ?l) (vi-mark-lines arg)) 1391 ((char-equal region ?l) (vi-mark-lines arg))
diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el
index 7584436e20a..6caa12179c0 100644
--- a/lisp/emulation/vip.el
+++ b/lisp/emulation/vip.el
@@ -1112,9 +1112,10 @@ the query replace mode will toggle between string replace and regexp replace."
1112 (replace-match (vip-read-string 1112 (replace-match (vip-read-string
1113 (format "Replace regexp \"%s\" with: " str)) 1113 (format "Replace regexp \"%s\" with: " str))
1114 nil nil)) 1114 nil nil))
1115 (replace-string 1115 (with-no-warnings
1116 str 1116 (replace-string
1117 (vip-read-string (format "Replace \"%s\" with: " str))))))) 1117 str
1118 (vip-read-string (format "Replace \"%s\" with: " str))))))))
1118 1119
1119 1120
1120;; basic cursor movement. j, k, l, m commands. 1121;; basic cursor movement. j, k, l, m commands.
@@ -2830,7 +2831,8 @@ a token has type \(command, address, end-mark\) and value."
2830 (skip-chars-forward " \t") 2831 (skip-chars-forward " \t")
2831 (if (looking-at "[\n|]") (error "Missing rhs")) 2832 (if (looking-at "[\n|]") (error "Missing rhs"))
2832 (set-mark (point)) 2833 (set-mark (point))
2833 (end-of-buffer) 2834 (with-no-warnings
2835 (end-of-buffer))
2834 (backward-char 1) 2836 (backward-char 1)
2835 (setq string (buffer-substring (mark) (point)))) 2837 (setq string (buffer-substring (mark) (point))))
2836 (if (not (lookup-key ex-map char)) 2838 (if (not (lookup-key ex-map char))
@@ -2900,7 +2902,8 @@ a token has type \(command, address, end-mark\) and value."
2900 (setq file (buffer-substring (point) (mark))))) 2902 (setq file (buffer-substring (point) (mark)))))
2901 (if variant 2903 (if variant
2902 (shell-command command t) 2904 (shell-command command t)
2903 (insert-file file)))) 2905 (with-no-warnings
2906 (insert-file file)))))
2904 2907
2905(defun ex-set () 2908(defun ex-set ()
2906 (eval (list 'setq 2909 (eval (list 'setq
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
index c29e0e26ba5..4b1f06f1e9a 100644
--- a/lisp/emulation/viper-ex.el
+++ b/lisp/emulation/viper-ex.el
@@ -58,7 +58,7 @@
58(require 'viper-util) 58(require 'viper-util)
59 59
60(defgroup viper-ex nil 60(defgroup viper-ex nil
61 "Viper support for Ex commands" 61 "Viper support for Ex commands."
62 :prefix "ex-" 62 :prefix "ex-"
63 :group 'viper) 63 :group 'viper)
64 64
diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el
index 250f7cf5a53..ec3f3ee8225 100644
--- a/lisp/emulation/viper-mous.el
+++ b/lisp/emulation/viper-mous.el
@@ -52,7 +52,7 @@
52 52
53 53
54(defgroup viper-mouse nil 54(defgroup viper-mouse nil
55 "Support for Viper special mouse-bound commands" 55 "Support for Viper special mouse-bound commands."
56 :prefix "viper-" 56 :prefix "viper-"
57 :group 'viper) 57 :group 'viper)
58 58
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index f1bd94baabf..10d2100fd00 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -28,7 +28,7 @@
28(defgroup eshell-var nil 28(defgroup eshell-var nil
29 "Variable interpolation is introduced whenever the '$' character 29 "Variable interpolation is introduced whenever the '$' character
30appears unquoted in any argument (except when that argument is 30appears unquoted in any argument (except when that argument is
31surrounded by single quotes) . It may be used to interpolate a 31surrounded by single quotes). It may be used to interpolate a
32variable value, a subcommand, or even the result of a Lisp form." 32variable value, a subcommand, or even the result of a Lisp form."
33 :tag "Variable handling" 33 :tag "Variable handling"
34 :group 'eshell) 34 :group 'eshell)
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index 57dea40266a..6dc6124af5d 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -1,6 +1,6 @@
1;;; facemenu.el --- create a face menu for interactively adding fonts to text 1;;; facemenu.el --- create a face menu for interactively adding fonts to text
2 2
3;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc. 3;; Copyright (c) 1994, 1995, 1996, 2001, 2002, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Boris Goldowsky <boris@gnu.org> 5;; Author: Boris Goldowsky <boris@gnu.org>
6;; Keywords: faces 6;; Keywords: faces
@@ -99,7 +99,7 @@
99(define-key global-map "\M-o" 'facemenu-keymap) 99(define-key global-map "\M-o" 'facemenu-keymap)
100 100
101(defgroup facemenu nil 101(defgroup facemenu nil
102 "Create a face menu for interactively adding fonts to text" 102 "Create a face menu for interactively adding fonts to text."
103 :group 'faces 103 :group 'faces
104 :prefix "facemenu-") 104 :prefix "facemenu-")
105 105
@@ -365,10 +365,9 @@ typing a character to insert cancels the specification."
365 (region-beginning)) 365 (region-beginning))
366 (if (and mark-active (not current-prefix-arg)) 366 (if (and mark-active (not current-prefix-arg))
367 (region-end)))) 367 (region-end))))
368 (unless (color-defined-p color) 368 (facemenu-set-face-from-menu
369 (message "Color `%s' undefined" color)) 369 (facemenu-add-new-color color 'facemenu-foreground-menu)
370 (facemenu-add-new-color color 'facemenu-foreground-menu) 370 start end))
371 (facemenu-add-face (list (list :foreground color)) start end))
372 371
373;;;###autoload 372;;;###autoload
374(defun facemenu-set-background (color &optional start end) 373(defun facemenu-set-background (color &optional start end)
@@ -389,34 +388,41 @@ typing a character to insert cancels the specification."
389 (region-beginning)) 388 (region-beginning))
390 (if (and mark-active (not current-prefix-arg)) 389 (if (and mark-active (not current-prefix-arg))
391 (region-end)))) 390 (region-end))))
392 (unless (color-defined-p color) 391 (facemenu-set-face-from-menu
393 (message "Color `%s' undefined" color)) 392 (facemenu-add-new-color color 'facemenu-background-menu)
394 (facemenu-add-new-color color 'facemenu-background-menu) 393 start end))
395 (facemenu-add-face (list (list :background color)) start end))
396 394
397;;;###autoload 395;;;###autoload
398(defun facemenu-set-face-from-menu (face start end) 396(defun facemenu-set-face-from-menu (face start end)
399 "Set the FACE of the region or next character typed. 397 "Set the FACE of the region or next character typed.
400This function is designed to be called from a menu; the face to use 398This function is designed to be called from a menu; FACE is determined
401is the menu item's name. 399using the event type of the menu entry. If FACE is a symbol whose
400name starts with \"fg:\" or \"bg:\", then this functions sets the
401foreground or background to the color specified by the rest of the
402symbol's name. Any other symbol is considered the name of a face.
402 403
403If the region is active (normally true except in Transient Mark mode) 404If the region is active (normally true except in Transient Mark mode)
404and there is no prefix argument, this command sets the region to the 405and there is no prefix argument, this command sets the region to the
405requested face. 406requested face.
406 407
407Otherwise, this command specifies the face for the next character 408Otherwise, this command specifies the face for the next character
408inserted. Moving point or switching buffers before 409inserted. Moving point or switching buffers before typing a character
409typing a character to insert cancels the specification." 410to insert cancels the specification."
410 (interactive (list last-command-event 411 (interactive (list last-command-event
411 (if (and mark-active (not current-prefix-arg)) 412 (if (and mark-active (not current-prefix-arg))
412 (region-beginning)) 413 (region-beginning))
413 (if (and mark-active (not current-prefix-arg)) 414 (if (and mark-active (not current-prefix-arg))
414 (region-end)))) 415 (region-end))))
415 (barf-if-buffer-read-only) 416 (barf-if-buffer-read-only)
416 (facemenu-get-face face) 417 (facemenu-add-face
417 (if start 418 (let ((fn (symbol-name face)))
418 (facemenu-add-face face start end) 419 (if (string-match "\\`\\([fb]\\)g:\\(.+\\)" fn)
419 (facemenu-add-face face))) 420 (list (list (if (string= (match-string 1 fn) "f")
421 :foreground
422 :background)
423 (match-string 2 fn)))
424 face))
425 start end))
420 426
421;;;###autoload 427;;;###autoload
422(defun facemenu-set-invisible (start end) 428(defun facemenu-set-invisible (start end)
@@ -615,7 +621,9 @@ effect. See `facemenu-remove-face-function'."
615 self-insert-face 621 self-insert-face
616 (list self-insert-face))) 622 (list self-insert-face)))
617 face) 623 face)
618 self-insert-face-command this-command))))) 624 self-insert-face-command this-command))))
625 (unless (facemenu-enable-faces-p)
626 (message "Font-lock mode will override any faces you set in this buffer")))
619 627
620(defun facemenu-active-faces (face-list &optional frame) 628(defun facemenu-active-faces (face-list &optional frame)
621 "Return from FACE-LIST those faces that would be used for display. 629 "Return from FACE-LIST those faces that would be used for display.
@@ -648,14 +656,6 @@ use the selected frame. If t, then the global, non-frame faces are used."
648 (setq face-list (cdr face-list))) 656 (setq face-list (cdr face-list)))
649 (nreverse active-list))) 657 (nreverse active-list)))
650 658
651(defun facemenu-get-face (symbol)
652 "Make sure FACE exists.
653If not, create it and add it to the appropriate menu. Return the SYMBOL."
654 (let ((name (symbol-name symbol)))
655 (cond ((facep symbol))
656 (t (make-face symbol))))
657 symbol)
658
659(defun facemenu-add-new-face (face) 659(defun facemenu-add-new-face (face)
660 "Add FACE (a face) to the Face menu. 660 "Add FACE (a face) to the Face menu.
661 661
@@ -715,47 +715,40 @@ This is called whenever you create a new face."
715 (define-key menu key (cons name function)))))) 715 (define-key menu key (cons name function))))))
716 nil) ; Return nil for facemenu-iterate 716 nil) ; Return nil for facemenu-iterate
717 717
718(defun facemenu-add-new-color (color &optional menu) 718(defun facemenu-add-new-color (color menu)
719 "Add COLOR (a color name string) to the appropriate Face menu. 719 "Add COLOR (a color name string) to the appropriate Face menu.
720MENU should be `facemenu-foreground-menu' or 720MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'.
721`facemenu-background-menu'. 721Return the event type (a symbol) of the added menu entry.
722 722
723This is called whenever you use a new color." 723This is called whenever you use a new color."
724 (let* (name 724 (let (symbol docstring)
725 symbol 725 (unless (color-defined-p color)
726 docstring 726 (error "Color `%s' undefined" color))
727 function menu-val key
728 (color-p (memq menu '(facemenu-foreground-menu
729 facemenu-background-menu))))
730 (unless (stringp color)
731 (error "%s is not a color" color))
732 (setq name color
733 symbol (intern name))
734
735 (cond ((eq menu 'facemenu-foreground-menu) 727 (cond ((eq menu 'facemenu-foreground-menu)
736 (setq docstring 728 (setq docstring
737 (format "Select foreground color %s for subsequent insertion." 729 (format "Select foreground color %s for subsequent insertion."
738 name))) 730 color)
731 symbol (intern (concat "fg:" color))))
739 ((eq menu 'facemenu-background-menu) 732 ((eq menu 'facemenu-background-menu)
740 (setq docstring 733 (setq docstring
741 (format "Select background color %s for subsequent insertion." 734 (format "Select background color %s for subsequent insertion."
742 name)))) 735 color)
743 (cond ((facemenu-iterate ; check if equivalent face is already in the menu 736 symbol (intern (concat "bg:" color))))
744 (lambda (m) (and (listp m) 737 (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'")))
745 (symbolp (car m)) 738 (unless (facemenu-iterate ; Check if color is already in the menu.
746 (stringp (cadr m)) 739 (lambda (m) (and (listp m)
747 (string-equal (cadr m) color))) 740 (eq (car m) symbol)))
748 (cdr (symbol-function menu)))) 741 (cdr (symbol-function menu)))
749 (t ; No keyboard equivalent. Figure out where to put it: 742 ;; Color is not in the menu. Figure out where to put it.
750 (setq key (vector symbol) 743 (let ((key (vector symbol))
751 function 'facemenu-set-face-from-menu 744 (function 'facemenu-set-face-from-menu)
752 menu-val (symbol-function menu)) 745 (menu-val (symbol-function menu)))
753 (if (and facemenu-new-faces-at-end 746 (if (and facemenu-new-faces-at-end
754 (> (length menu-val) 3)) 747 (> (length menu-val) 3))
755 (define-key-after menu-val key (cons name function) 748 (define-key-after menu-val key (cons color function)
756 (car (nth (- (length menu-val) 3) menu-val))) 749 (car (nth (- (length menu-val) 3) menu-val)))
757 (define-key menu key (cons name function)))))) 750 (define-key menu key (cons color function)))))
758 nil) ; Return nil for facemenu-iterate 751 symbol))
759 752
760(defun facemenu-complete-face-list (&optional oldlist) 753(defun facemenu-complete-face-list (&optional oldlist)
761 "Return list of all faces that look different. 754 "Return list of all faces that look different.
diff --git a/lisp/faces.el b/lisp/faces.el
index 4f577d7ff2e..8211b0ff8e4 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -869,7 +869,10 @@ Otherwise, return a single face."
869 (aliasfaces nil) 869 (aliasfaces nil)
870 (nonaliasfaces nil) 870 (nonaliasfaces nil)
871 faces) 871 faces)
872 ;; Make a list of the named faces that the `face' property uses. 872 ;; Try to get a face name from the buffer.
873 (if (memq (intern-soft (thing-at-point 'symbol)) (face-list))
874 (setq faces (list (intern-soft (thing-at-point 'symbol)))))
875 ;; Add the named faces that the `face' property uses.
873 (if (and (listp faceprop) 876 (if (and (listp faceprop)
874 ;; Don't treat an attribute spec as a list of faces. 877 ;; Don't treat an attribute spec as a list of faces.
875 (not (keywordp (car faceprop))) 878 (not (keywordp (car faceprop)))
@@ -879,10 +882,6 @@ Otherwise, return a single face."
879 (push f faces))) 882 (push f faces)))
880 (if (symbolp faceprop) 883 (if (symbolp faceprop)
881 (push faceprop faces))) 884 (push faceprop faces)))
882 ;; If there are none, try to get a face name from the buffer.
883 (if (and (null faces)
884 (memq (intern-soft (thing-at-point 'symbol)) (face-list)))
885 (setq faces (list (intern-soft (thing-at-point 'symbol)))))
886 885
887 ;; Build up the completion tables. 886 ;; Build up the completion tables.
888 (mapatoms (lambda (s) 887 (mapatoms (lambda (s)
@@ -896,22 +895,27 @@ Otherwise, return a single face."
896 (unless multiple 895 (unless multiple
897 (if faces 896 (if faces
898 (setq faces (list (car faces))))) 897 (setq faces (list (car faces)))))
898 (require 'crm)
899 (let* ((input 899 (let* ((input
900 ;; Read the input. 900 ;; Read the input.
901 (completing-read 901 (completing-read-multiple
902 (if (or faces string-describing-default) 902 (if (or faces string-describing-default)
903 (format "%s (default %s): " prompt 903 (format "%s (default %s): " prompt
904 (if faces (mapconcat 'symbol-name faces ", ") 904 (if faces (mapconcat 'symbol-name faces ",")
905 string-describing-default)) 905 string-describing-default))
906 (format "%s: " prompt)) 906 (format "%s: " prompt))
907 (complete-in-turn nonaliasfaces aliasfaces) nil t)) 907 (complete-in-turn nonaliasfaces aliasfaces)
908 nil t nil nil
909 (if faces (mapconcat 'symbol-name faces ","))))
908 ;; Canonicalize the output. 910 ;; Canonicalize the output.
909 (output 911 (output
910 (if (equal input "") 912 (cond ((or (equal input "") (equal input '("")))
911 faces 913 faces)
912 (if (stringp input) 914 ((stringp input)
913 (list (intern input)) 915 (mapcar 'intern (split-string input ", *" t)))
914 input)))) 916 ((listp input)
917 (mapcar 'intern input))
918 (input))))
915 ;; Return either a list of faces or just one face. 919 ;; Return either a list of faces or just one face.
916 (if multiple 920 (if multiple
917 output 921 output
@@ -1915,7 +1919,7 @@ created."
1915 :group 'basic-faces) 1919 :group 'basic-faces)
1916 1920
1917(defface vertical-border 1921(defface vertical-border
1918 '((default :inherit mode-line-inactive)) 1922 '((((type tty)) :inherit mode-line-inactive))
1919 "Face used for vertical window dividers on ttys." 1923 "Face used for vertical window dividers on ttys."
1920 :version "22.1" 1924 :version "22.1"
1921 :group 'modeline 1925 :group 'modeline
diff --git a/lisp/find-file.el b/lisp/find-file.el
index 26c5cccf8e5..69cafbc75b1 100644
--- a/lisp/find-file.el
+++ b/lisp/find-file.el
@@ -946,18 +946,11 @@ and the name of the file passed in."
946(defun ff-which-function-are-we-in () 946(defun ff-which-function-are-we-in ()
947 "Return the name of the function whose definition/declaration point is in. 947 "Return the name of the function whose definition/declaration point is in.
948Also remember that name in `ff-function-name'." 948Also remember that name in `ff-function-name'."
949 949 (setq ff-function-name
950 (setq ff-function-name nil) 950 (save-excursion
951 951 (if (or (re-search-backward ada-procedure-start-regexp nil t)
952 (save-excursion 952 (re-search-backward ada-package-start-regexp nil t))
953 (if (re-search-backward ada-procedure-start-regexp nil t) 953 (match-string 0)))))
954 (setq ff-function-name (buffer-substring (match-beginning 0)
955 (match-end 0)))
956 ; we didn't find a procedure start, perhaps there is a package
957 (if (re-search-backward ada-package-start-regexp nil t)
958 (setq ff-function-name (buffer-substring (match-beginning 0)
959 (match-end 0)))
960 ))))
961 954
962;; bind with (setq ff-post-load-hook 'ff-set-point-accordingly) 955;; bind with (setq ff-post-load-hook 'ff-set-point-accordingly)
963;; 956;;
@@ -971,5 +964,5 @@ That name was previously determined by `ff-which-function-are-we-in'."
971 964
972(provide 'find-file) 965(provide 'find-file)
973 966
974;;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a 967;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a
975;;; find-file.el ends here 968;;; find-file.el ends here
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index cf15a7d8f87..b70e345e983 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -620,6 +620,7 @@ Major/minor modes can set this variable if they know which option applies.")
620 ;; We use this to preserve or protect things when modifying text properties. 620 ;; We use this to preserve or protect things when modifying text properties.
621 (defmacro save-buffer-state (varlist &rest body) 621 (defmacro save-buffer-state (varlist &rest body)
622 "Bind variables according to VARLIST and eval BODY restoring buffer state." 622 "Bind variables according to VARLIST and eval BODY restoring buffer state."
623 (declare (indent 1) (debug let))
623 (let ((modified (make-symbol "modified"))) 624 (let ((modified (make-symbol "modified")))
624 `(let* ,(append varlist 625 `(let* ,(append varlist
625 `((,modified (buffer-modified-p)) 626 `((,modified (buffer-modified-p))
@@ -634,8 +635,6 @@ Major/minor modes can set this variable if they know which option applies.")
634 ,@body) 635 ,@body)
635 (unless ,modified 636 (unless ,modified
636 (restore-buffer-modified-p nil))))) 637 (restore-buffer-modified-p nil)))))
637 (put 'save-buffer-state 'lisp-indent-function 1)
638 (def-edebug-spec save-buffer-state let)
639 ;; 638 ;;
640 ;; Shut up the byte compiler. 639 ;; Shut up the byte compiler.
641 (defvar font-lock-face-attributes)) ; Obsolete but respected if set. 640 (defvar font-lock-face-attributes)) ; Obsolete but respected if set.
@@ -1826,15 +1825,15 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1826 "Font Lock mode face used to highlight preprocessor directives." 1825 "Font Lock mode face used to highlight preprocessor directives."
1827 :group 'font-lock-highlighting-faces) 1826 :group 'font-lock-highlighting-faces)
1828 1827
1829(defface font-lock-regexp-backslash 1828(defface font-lock-regexp-grouping-backslash
1830 '((((class color) (min-colors 16)) :inherit escape-glyph) 1829 '((((class color) (min-colors 16)) :inherit escape-glyph)
1831 (t :inherit bold)) 1830 (t :inherit bold))
1832 "Font Lock mode face used to highlight a backslash in Lisp regexps." 1831 "Font Lock mode face for backslashes in Lisp regexp grouping constructs."
1833 :group 'font-lock-highlighting-faces) 1832 :group 'font-lock-highlighting-faces)
1834 1833
1835(defface font-lock-regexp-backslash-construct 1834(defface font-lock-regexp-grouping-construct
1836 '((t :inherit bold)) 1835 '((t :inherit bold))
1837 "Font Lock mode face used to highlight `\' constructs in Lisp regexps." 1836 "Font Lock mode face used to highlight grouping constructs in Lisp regexps."
1838 :group 'font-lock-highlighting-faces) 1837 :group 'font-lock-highlighting-faces)
1839 1838
1840;;; End of Colour etc. support. 1839;;; End of Colour etc. support.
@@ -2083,22 +2082,22 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
2083 ("\\<:\\sw+\\>" 0 font-lock-builtin-face) 2082 ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
2084 ;; ELisp and CLisp `&' keywords as types. 2083 ;; ELisp and CLisp `&' keywords as types.
2085 ("\\&\\sw+\\>" . font-lock-type-face) 2084 ("\\&\\sw+\\>" . font-lock-type-face)
2086 ;; Make regexp grouping constructs bold, so they stand out, but only 2085 ;; ELisp regexp grouping constructs
2087 ;; in strings.
2088 ((lambda (bound) 2086 ((lambda (bound)
2089 (if (re-search-forward "\\(\\\\\\\\\\)\\((\\(?:?:\\)?\\|[|)]\\)" bound t) 2087 (catch 'found
2090 (let ((face (get-text-property (1- (point)) 'face))) 2088 ;; The following loop is needed to continue searching after matches
2091 (if (listp face) 2089 ;; that do not occur in strings. The associated regexp matches one
2092 (memq 'font-lock-string-face face) 2090 ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to
2093 (eq 'font-lock-string-face face))))) 2091 ;; avoid highlighting, for example, `\\(' in `\\\\('.
2094 (1 'font-lock-regexp-backslash prepend) 2092 (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?:\\)?\\|[|)]\\)\\)" bound t)
2095 (2 'font-lock-regexp-backslash-construct prepend)) 2093 (unless (match-beginning 2)
2096 2094 (let ((face (get-text-property (1- (point)) 'face)))
2097 ;; Underline innermost grouping, so that you can more easily see what 2095 (when (or (and (listp face)
2098 ;; belongs together. 2005-05-12: Font-lock can go into an 2096 (memq 'font-lock-string-face face))
2099 ;; unbreakable endless loop on this -- something's broken. 2097 (eq 'font-lock-string-face face))
2100 ;;("[\\][\\][(]\\(?:\\?:\\)?\\(\\(?:[^\\\"]+\\|[\\]\\(?:[^\\]\\|[\\][^(]\\)\\)+?\\)[\\][\\][)]" 2098 (throw 'found t)))))))
2101 ;;1 'underline prepend) 2099 (1 'font-lock-regexp-grouping-backslash prepend)
2100 (3 'font-lock-regexp-grouping-construct prepend))
2102;;; This is too general -- rms. 2101;;; This is too general -- rms.
2103;;; A user complained that he has functions whose names start with `do' 2102;;; A user complained that he has functions whose names start with `do'
2104;;; and that they get the wrong color. 2103;;; and that they get the wrong color.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index b7698350efb..5ffcbb0810b 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,44 @@
12005-07-04 Juanma Barranquero <lekktu@gmail.com>
2
3 * gnus.el (gnus-exit):
4 * gnus-group.el (gnus-group-icons):
5 * nnmail.el (nnmail-prepare): Fix typos in docstrings.
6
7 * gnus-nocem.el (gnus-nocem):
8 * message.el (message-various, message-buffers, message-sending)
9 (message-interface, message-forwarding, message-insertion)
10 (message-headers, message-news, message-mail):
11 * pgg-gpg.el (pgg-gpg):
12 * pgg-parse.el (pgg-parse):
13 * pgg-pgp.el (pgg-pgp):
14 * pgg-pgp5.el (pgg-pgp5):
15 * pop3.el (pop3): Finish `defgroup' description with period.
16
172005-07-01 Katsumi Yamaoka <yamaoka@jpl.org>
18
19 * gnus-art.el (article-display-face): Improve the efficiency.
20 (article-display-x-face): Ditto; remove grey x-face stuff.
21
222005-06-30 Katsumi Yamaoka <yamaoka@jpl.org>
23
24 * gnus-art.el (article-display-face): Correct the position in
25 which Faces are inserted; use dolist.
26
272005-06-29 Didier Verna <didier@xemacs.org>
28
29 * gnus-art.el (article-display-face): Display faces in correct
30 order.
31
322005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
33
34 * gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify.
35 (gnus-nocem-check-article): Fetch the Type header.
36 (gnus-nocem-message-wanted-p): Fix the way to examine types.
37 (gnus-nocem-verify-issuer): Use functionp instead of fboundp.
38 (gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized.
39
40 * pgg.el (pgg-verify): Return the verification result.
41
12005-06-24 Juanma Barranquero <lekktu@gmail.com> 422005-06-24 Juanma Barranquero <lekktu@gmail.com>
2 43
3 * gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not 44 * gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index b92ce8616d5..ba2c3ff9618 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2123,31 +2123,31 @@ unfolded."
2123 ;; read-only. 2123 ;; read-only.
2124 (if (and wash-face-p (memq 'face gnus-article-wash-types)) 2124 (if (and wash-face-p (memq 'face gnus-article-wash-types))
2125 (gnus-delete-images 'face) 2125 (gnus-delete-images 'face)
2126 (let (face faces) 2126 (let (face faces from)
2127 (save-excursion 2127 (save-current-buffer
2128 (when (and wash-face-p 2128 (when (and wash-face-p
2129 (progn 2129 (gnus-buffer-live-p gnus-original-article-buffer)
2130 (goto-char (point-min)) 2130 (not (re-search-forward "^Face:[\t ]*" nil t)))
2131 (not (re-search-forward "^Face:[\t ]*" nil t)))
2132 (gnus-buffer-live-p gnus-original-article-buffer))
2133 (set-buffer gnus-original-article-buffer)) 2131 (set-buffer gnus-original-article-buffer))
2134 (save-restriction 2132 (save-restriction
2135 (mail-narrow-to-head) 2133 (mail-narrow-to-head)
2136 (while (gnus-article-goto-header "Face") 2134 (while (gnus-article-goto-header "Face")
2137 (push (mail-header-field-value) faces)))) 2135 (push (mail-header-field-value) faces))))
2138 (while (setq face (pop faces)) 2136 (when faces
2139 (let ((png (gnus-convert-face-to-png face)) 2137 (goto-char (point-min))
2140 image) 2138 (let ((from (gnus-article-goto-header "from"))
2141 (when png 2139 png image)
2142 (setq image (gnus-create-image png 'png t)) 2140 (unless from
2143 (gnus-article-goto-header "from") 2141 (insert "From:")
2144 (when (bobp) 2142 (setq from (point))
2145 (insert "From: [no `from' set]\n") 2143 (insert "[no `from' set]\n"))
2146 (forward-char -17)) 2144 (while faces
2147 (gnus-add-wash-type 'face) 2145 (when (setq png (gnus-convert-face-to-png (pop faces)))
2148 (gnus-add-image 'face image) 2146 (setq image (gnus-create-image png 'png t))
2149 (gnus-put-image image nil 'face)))))) 2147 (goto-char from)
2150 ))) 2148 (gnus-add-wash-type 'face)
2149 (gnus-add-image 'face image)
2150 (gnus-put-image image nil 'face))))))))))
2151 2151
2152(defun article-display-x-face (&optional force) 2152(defun article-display-x-face (&optional force)
2153 "Look for an X-Face header and display it if present." 2153 "Look for an X-Face header and display it if present."
@@ -2164,13 +2164,10 @@ unfolded."
2164 (gnus-delete-images 'xface) 2164 (gnus-delete-images 'xface)
2165 ;; Display X-Faces. 2165 ;; Display X-Faces.
2166 (let (x-faces from face) 2166 (let (x-faces from face)
2167 (save-excursion 2167 (save-current-buffer
2168 (when (and wash-face-p 2168 (when (and wash-face-p
2169 (progn 2169 (gnus-buffer-live-p gnus-original-article-buffer)
2170 (goto-char (point-min)) 2170 (not (re-search-forward "^X-Face:[\t ]*" nil t)))
2171 (not (re-search-forward
2172 "^X-Face\\(-[0-9]+\\)?:[\t ]*" nil t)))
2173 (gnus-buffer-live-p gnus-original-article-buffer))
2174 ;; If type `W f', use gnus-original-article-buffer, 2171 ;; If type `W f', use gnus-original-article-buffer,
2175 ;; otherwise use the current buffer because displaying 2172 ;; otherwise use the current buffer because displaying
2176 ;; RFC822 parts calls this function too. 2173 ;; RFC822 parts calls this function too.
@@ -2184,35 +2181,36 @@ unfolded."
2184 ;; single external face. 2181 ;; single external face.
2185 (when (stringp gnus-article-x-face-command) 2182 (when (stringp gnus-article-x-face-command)
2186 (setq x-faces (list (car x-faces)))) 2183 (setq x-faces (list (car x-faces))))
2187 (while (and (setq face (pop x-faces)) 2184 (when (and x-faces
2188 gnus-article-x-face-command 2185 gnus-article-x-face-command
2189 (or force 2186 (or force
2190 ;; Check whether this face is censored. 2187 ;; Check whether this face is censored.
2191 (not gnus-article-x-face-too-ugly) 2188 (not gnus-article-x-face-too-ugly)
2192 (and gnus-article-x-face-too-ugly from 2189 (and from
2193 (not (string-match gnus-article-x-face-too-ugly 2190 (not (string-match gnus-article-x-face-too-ugly
2194 from))))) 2191 from)))))
2195 ;; We display the face. 2192 (while (setq face (pop x-faces))
2196 (cond ((stringp gnus-article-x-face-command) 2193 ;; We display the face.
2197 ;; The command is a string, so we interpret the command 2194 (cond ((stringp gnus-article-x-face-command)
2198 ;; as a, well, command, and fork it off. 2195 ;; The command is a string, so we interpret the command
2199 (let ((process-connection-type nil)) 2196 ;; as a, well, command, and fork it off.
2200 (gnus-set-process-query-on-exit-flag 2197 (let ((process-connection-type nil))
2201 (start-process 2198 (gnus-set-process-query-on-exit-flag
2202 "article-x-face" nil shell-file-name 2199 (start-process
2203 shell-command-switch gnus-article-x-face-command) 2200 "article-x-face" nil shell-file-name
2204 nil) 2201 shell-command-switch gnus-article-x-face-command)
2205 (with-temp-buffer 2202 nil)
2206 (insert face) 2203 (with-temp-buffer
2207 (process-send-region "article-x-face" 2204 (insert face)
2208 (point-min) (point-max))) 2205 (process-send-region "article-x-face"
2209 (process-send-eof "article-x-face"))) 2206 (point-min) (point-max)))
2210 ((functionp gnus-article-x-face-command) 2207 (process-send-eof "article-x-face")))
2211 ;; The command is a lisp function, so we call it. 2208 ((functionp gnus-article-x-face-command)
2212 (funcall gnus-article-x-face-command face)) 2209 ;; The command is a lisp function, so we call it.
2213 (t 2210 (funcall gnus-article-x-face-command face))
2214 (error "%s is not a function" 2211 (t
2215 gnus-article-x-face-command))))))))) 2212 (error "%s is not a function"
2213 gnus-article-x-face-command))))))))))
2216 2214
2217(defun article-decode-mime-words () 2215(defun article-decode-mime-words ()
2218 "Decode all MIME-encoded words in the article." 2216 "Decode all MIME-encoded words in the article."
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 45597b60e88..db45e86ad2c 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -382,7 +382,7 @@ ticked: The number of ticked articles."
382 :type 'character) 382 :type 'character)
383 383
384(defgroup gnus-group-icons nil 384(defgroup gnus-group-icons nil
385 "Add Icons to your group buffer. " 385 "Add Icons to your group buffer."
386 :group 'gnus-group-visual) 386 :group 'gnus-group-visual)
387 387
388(defcustom gnus-group-icon-list 388(defcustom gnus-group-icon-list
diff --git a/lisp/gnus/gnus-nocem.el b/lisp/gnus/gnus-nocem.el
index 5a5f779b732..0b9d90d8036 100644
--- a/lisp/gnus/gnus-nocem.el
+++ b/lisp/gnus/gnus-nocem.el
@@ -1,6 +1,6 @@
1;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment 1;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment
2 2
3;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004 3;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6 6
@@ -37,7 +37,7 @@
37(require 'gnus-range) 37(require 'gnus-range)
38 38
39(defgroup gnus-nocem nil 39(defgroup gnus-nocem nil
40 "NoCeM pseudo-cancellation treatment" 40 "NoCeM pseudo-cancellation treatment."
41 :group 'gnus-score) 41 :group 'gnus-score)
42 42
43(defcustom gnus-nocem-groups 43(defcustom gnus-nocem-groups
@@ -74,12 +74,13 @@ issuer registry."
74 :group 'gnus-nocem 74 :group 'gnus-nocem
75 :type 'integer) 75 :type 'integer)
76 76
77(defcustom gnus-nocem-verifyer 'mc-verify 77(defcustom gnus-nocem-verifyer 'pgg-verify
78 "*Function called to verify that the NoCeM message is valid. 78 "*Function called to verify that the NoCeM message is valid.
79One likely value is `mc-verify'. If the function in this variable 79One likely value is `pgg-verify'. If the function in this variable
80isn't bound, the message will be used unconditionally." 80isn't bound, the message will be used unconditionally."
81 :group 'gnus-nocem 81 :group 'gnus-nocem
82 :type '(radio (function-item mc-verify) 82 :type '(radio (function-item pgg-verify)
83 (function-item mc-verify)
83 (function :tag "other"))) 84 (function :tag "other")))
84 85
85(defcustom gnus-nocem-liberal-fetch nil 86(defcustom gnus-nocem-liberal-fetch nil
@@ -246,7 +247,7 @@ valid issuer, which is much faster if you are selective about the issuers."
246 ;; We get the name of the issuer. 247 ;; We get the name of the issuer.
247 (narrow-to-region b e) 248 (narrow-to-region b e)
248 (setq issuer (mail-fetch-field "issuer") 249 (setq issuer (mail-fetch-field "issuer")
249 type (mail-fetch-field "issuer")) 250 type (mail-fetch-field "type"))
250 (widen) 251 (widen)
251 (if (not (gnus-nocem-message-wanted-p issuer type)) 252 (if (not (gnus-nocem-message-wanted-p issuer type))
252 (message "invalid NoCeM issuer: %s" issuer) 253 (message "invalid NoCeM issuer: %s" issuer)
@@ -267,18 +268,20 @@ valid issuer, which is much faster if you are selective about the issuers."
267 (while (setq condition (pop conditions)) 268 (while (setq condition (pop conditions))
268 (cond 269 (cond
269 ((stringp condition) 270 ((stringp condition)
270 (setq wanted (string-match condition type))) 271 (when (string-match condition type)
272 (setq wanted t)))
271 ((and (consp condition) 273 ((and (consp condition)
272 (eq (car condition) 'not) 274 (eq (car condition) 'not)
273 (stringp (cadr condition))) 275 (stringp (cadr condition)))
274 (setq wanted (not (string-match (cadr condition) type)))) 276 (when (string-match (cadr condition) type)
277 (setq wanted nil)))
275 (t 278 (t
276 (error "Invalid NoCeM condition: %S" condition)))) 279 (error "Invalid NoCeM condition: %S" condition))))
277 wanted)))) 280 wanted))))
278 281
279(defun gnus-nocem-verify-issuer (person) 282(defun gnus-nocem-verify-issuer (person)
280 "Verify using PGP that the canceler is who she says she is." 283 "Verify using PGP that the canceler is who she says she is."
281 (if (fboundp gnus-nocem-verifyer) 284 (if (functionp gnus-nocem-verifyer)
282 (ignore-errors 285 (ignore-errors
283 (funcall gnus-nocem-verifyer)) 286 (funcall gnus-nocem-verifyer))
284 ;; If we don't have Mailcrypt, then we use the message anyway. 287 ;; If we don't have Mailcrypt, then we use the message anyway.
@@ -315,7 +318,10 @@ valid issuer, which is much faster if you are selective about the issuers."
315 (while (eq (char-after) ?\t) 318 (while (eq (char-after) ?\t)
316 (forward-line -1)) 319 (forward-line -1))
317 (setq id (buffer-substring (point) (1- (search-forward "\t")))) 320 (setq id (buffer-substring (point) (1- (search-forward "\t"))))
318 (unless (gnus-gethash id gnus-nocem-hashtb) 321 (unless (if gnus-nocem-hashtb
322 (gnus-gethash id gnus-nocem-hashtb)
323 (setq gnus-nocem-hashtb (gnus-make-hashtable))
324 nil)
319 ;; only store if not already present 325 ;; only store if not already present
320 (gnus-sethash id t gnus-nocem-hashtb) 326 (gnus-sethash id t gnus-nocem-hashtb)
321 (push id ncm)) 327 (push id ncm))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index afba1ea427e..629240b9e90 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -273,7 +273,7 @@ is restarted, and sometimes reloaded."
273 :group 'gnus) 273 :group 'gnus)
274 274
275(defgroup gnus-exit nil 275(defgroup gnus-exit nil
276 "Exiting gnus." 276 "Exiting Gnus."
277 :link '(custom-manual "(gnus)Exiting Gnus") 277 :link '(custom-manual "(gnus)Exiting Gnus")
278 :group 'gnus) 278 :group 'gnus)
279 279
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 7b8a289a4e4..a38c3d1f1c2 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -62,46 +62,46 @@
62(put 'user-full-name 'custom-type 'string) 62(put 'user-full-name 'custom-type 'string)
63 63
64(defgroup message-various nil 64(defgroup message-various nil
65 "Various Message Variables" 65 "Various Message Variables."
66 :link '(custom-manual "(message)Various Message Variables") 66 :link '(custom-manual "(message)Various Message Variables")
67 :group 'message) 67 :group 'message)
68 68
69(defgroup message-buffers nil 69(defgroup message-buffers nil
70 "Message Buffers" 70 "Message Buffers."
71 :link '(custom-manual "(message)Message Buffers") 71 :link '(custom-manual "(message)Message Buffers")
72 :group 'message) 72 :group 'message)
73 73
74(defgroup message-sending nil 74(defgroup message-sending nil
75 "Message Sending" 75 "Message Sending."
76 :link '(custom-manual "(message)Sending Variables") 76 :link '(custom-manual "(message)Sending Variables")
77 :group 'message) 77 :group 'message)
78 78
79(defgroup message-interface nil 79(defgroup message-interface nil
80 "Message Interface" 80 "Message Interface."
81 :link '(custom-manual "(message)Interface") 81 :link '(custom-manual "(message)Interface")
82 :group 'message) 82 :group 'message)
83 83
84(defgroup message-forwarding nil 84(defgroup message-forwarding nil
85 "Message Forwarding" 85 "Message Forwarding."
86 :link '(custom-manual "(message)Forwarding") 86 :link '(custom-manual "(message)Forwarding")
87 :group 'message-interface) 87 :group 'message-interface)
88 88
89(defgroup message-insertion nil 89(defgroup message-insertion nil
90 "Message Insertion" 90 "Message Insertion."
91 :link '(custom-manual "(message)Insertion") 91 :link '(custom-manual "(message)Insertion")
92 :group 'message) 92 :group 'message)
93 93
94(defgroup message-headers nil 94(defgroup message-headers nil
95 "Message Headers" 95 "Message Headers."
96 :link '(custom-manual "(message)Message Headers") 96 :link '(custom-manual "(message)Message Headers")
97 :group 'message) 97 :group 'message)
98 98
99(defgroup message-news nil 99(defgroup message-news nil
100 "Composing News Messages" 100 "Composing News Messages."
101 :group 'message) 101 :group 'message)
102 102
103(defgroup message-mail nil 103(defgroup message-mail nil
104 "Composing Mail Messages" 104 "Composing Mail Messages."
105 :group 'message) 105 :group 'message)
106 106
107(defgroup message-faces nil 107(defgroup message-faces nil
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index affe72c75c8..da8c148373c 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -49,7 +49,7 @@
49 :group 'nnmail) 49 :group 'nnmail)
50 50
51(defgroup nnmail-prepare nil 51(defgroup nnmail-prepare nil
52 "Preparing (or mangling) new mail after retrival." 52 "Preparing (or mangling) new mail after retrieval."
53 :group 'nnmail) 53 :group 'nnmail)
54 54
55(defgroup nnmail-duplicate nil 55(defgroup nnmail-duplicate nil
diff --git a/lisp/gnus/pgg-gpg.el b/lisp/gnus/pgg-gpg.el
index 463020838c9..d419a4b9310 100644
--- a/lisp/gnus/pgg-gpg.el
+++ b/lisp/gnus/pgg-gpg.el
@@ -30,7 +30,7 @@
30 (require 'pgg)) 30 (require 'pgg))
31 31
32(defgroup pgg-gpg () 32(defgroup pgg-gpg ()
33 "GnuPG interface" 33 "GnuPG interface."
34 :group 'pgg) 34 :group 'pgg)
35 35
36(defcustom pgg-gpg-program "gpg" 36(defcustom pgg-gpg-program "gpg"
diff --git a/lisp/gnus/pgg-parse.el b/lisp/gnus/pgg-parse.el
index 7929b54010d..bd62510e838 100644
--- a/lisp/gnus/pgg-parse.el
+++ b/lisp/gnus/pgg-parse.el
@@ -40,7 +40,7 @@
40(require 'custom) 40(require 'custom)
41 41
42(defgroup pgg-parse () 42(defgroup pgg-parse ()
43 "OpenPGP packet parsing" 43 "OpenPGP packet parsing."
44 :group 'pgg) 44 :group 'pgg)
45 45
46(defcustom pgg-parse-public-key-algorithm-alist 46(defcustom pgg-parse-public-key-algorithm-alist
diff --git a/lisp/gnus/pgg-pgp.el b/lisp/gnus/pgg-pgp.el
index ca686e9f1a6..2f552401215 100644
--- a/lisp/gnus/pgg-pgp.el
+++ b/lisp/gnus/pgg-pgp.el
@@ -30,7 +30,7 @@
30 (require 'pgg)) 30 (require 'pgg))
31 31
32(defgroup pgg-pgp () 32(defgroup pgg-pgp ()
33 "PGP 2.* and 6.* interface" 33 "PGP 2.* and 6.* interface."
34 :group 'pgg) 34 :group 'pgg)
35 35
36(defcustom pgg-pgp-program "pgp" 36(defcustom pgg-pgp-program "pgp"
diff --git a/lisp/gnus/pgg-pgp5.el b/lisp/gnus/pgg-pgp5.el
index 372cf48c473..2cd6bf08815 100644
--- a/lisp/gnus/pgg-pgp5.el
+++ b/lisp/gnus/pgg-pgp5.el
@@ -30,7 +30,7 @@
30 (require 'pgg)) 30 (require 'pgg))
31 31
32(defgroup pgg-pgp5 () 32(defgroup pgg-pgp5 ()
33 "PGP 5.* interface" 33 "PGP 5.* interface."
34 :group 'pgg) 34 :group 'pgg)
35 35
36(defcustom pgg-pgp5-pgpe-program "pgpe" 36(defcustom pgg-pgp5-pgpe-program "pgpe"
diff --git a/lisp/gnus/pgg.el b/lisp/gnus/pgg.el
index eff02a1c32a..ca351c90cd2 100644
--- a/lisp/gnus/pgg.el
+++ b/lisp/gnus/pgg.el
@@ -380,7 +380,8 @@ within the region."
380 (with-output-to-temp-buffer pgg-echo-buffer 380 (with-output-to-temp-buffer pgg-echo-buffer
381 (set-buffer standard-output) 381 (set-buffer standard-output)
382 (insert-buffer-substring (if status pgg-output-buffer 382 (insert-buffer-substring (if status pgg-output-buffer
383 pgg-errors-buffer))))))) 383 pgg-errors-buffer)))))
384 status))
384 385
385;;;###autoload 386;;;###autoload
386(defun pgg-insert-key () 387(defun pgg-insert-key ()
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index b8d827e7d9a..94a6cf8c0ab 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -39,7 +39,7 @@
39(require 'mail-utils) 39(require 'mail-utils)
40 40
41(defgroup pop3 nil 41(defgroup pop3 nil
42 "Post Office Protocol" 42 "Post Office Protocol."
43 :group 'mail 43 :group 'mail
44 :group 'mail-source) 44 :group 'mail-source)
45 45
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index d36695faa74..c62447316b9 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -275,9 +275,9 @@ face (according to `face-differs-from-default-p')."
275 ;; This is heuristic, but covers all common cases 275 ;; This is heuristic, but covers all common cases
276 ;; except ARG1-ARG2 276 ;; except ARG1-ARG2
277 (concat "\\<" ; beginning of word 277 (concat "\\<" ; beginning of word
278 "\\(?:[a-z-]+-\\)?" ; for xxx-ARG 278 "\\(?:[a-z-]*-\\)?" ; for xxx-ARG
279 "\\(" 279 "\\("
280 arg 280 (regexp-quote arg)
281 "\\)" 281 "\\)"
282 "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs 282 "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
283 "\\(?:-[a-z-]+\\)?" ; for ARG-xxx 283 "\\(?:-[a-z-]+\\)?" ; for ARG-xxx
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 0ebdbc4b5f3..2248ece3dbd 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -877,7 +877,7 @@ Return one of the entries in index-alist or nil."
877 (if (not imenu-space-replacement) index-alist 877 (if (not imenu-space-replacement) index-alist
878 (mapcar 878 (mapcar
879 (lambda (item) 879 (lambda (item)
880 (cons (subst-char-in-string ?\ (aref imenu-space-replacement 0) 880 (cons (subst-char-in-string ?\s (aref imenu-space-replacement 0)
881 (car item)) 881 (car item))
882 (cdr item))) 882 (cdr item)))
883 index-alist)))) 883 index-alist))))
diff --git a/lisp/indent.el b/lisp/indent.el
index 9713268f03b..11f01068397 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -29,7 +29,7 @@
29;;; Code: 29;;; Code:
30 30
31(defgroup indent nil 31(defgroup indent nil
32 "Indentation commands" 32 "Indentation commands."
33 :group 'editing) 33 :group 'editing)
34 34
35(defcustom standard-indent 4 35(defcustom standard-indent 4
diff --git a/lisp/info.el b/lisp/info.el
index 20e031c1347..2f9ec3c4f0f 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -38,7 +38,7 @@
38(eval-when-compile (require 'jka-compr)) 38(eval-when-compile (require 'jka-compr))
39 39
40(defgroup info nil 40(defgroup info nil
41 "Info subsystem" 41 "Info subsystem."
42 :group 'help 42 :group 'help
43 :group 'docs) 43 :group 'docs)
44 44
@@ -2868,7 +2868,7 @@ Build a menu of the possible matches."
2868 (while (progn (setq flag (not (pos-visible-in-window-p (point-max)))) 2868 (while (progn (setq flag (not (pos-visible-in-window-p (point-max))))
2869 (message (if flag "Type Space to see more" 2869 (message (if flag "Type Space to see more"
2870 "Type Space to return to Info")) 2870 "Type Space to return to Info"))
2871 (if (not (eq ?\ (setq ch (read-event)))) 2871 (if (not (eq ?\s (setq ch (read-event))))
2872 (progn (setq unread-command-events (list ch)) nil) 2872 (progn (setq unread-command-events (list ch)) nil)
2873 flag)) 2873 flag))
2874 (scroll-up))) 2874 (scroll-up)))
@@ -3196,6 +3196,8 @@ With a zero prefix arg, put the name inside a function call to `info'."
3196(put 'Info-mode 'mode-class 'special) 3196(put 'Info-mode 'mode-class 'special)
3197(put 'Info-mode 'no-clone-indirect t) 3197(put 'Info-mode 'no-clone-indirect t)
3198 3198
3199(defvar tool-bar-map)
3200
3199(defun Info-mode () 3201(defun Info-mode ()
3200 "Info mode provides commands for browsing through the Info documentation tree. 3202 "Info mode provides commands for browsing through the Info documentation tree.
3201Documentation in Info is divided into \"nodes\", each of which discusses 3203Documentation in Info is divided into \"nodes\", each of which discusses
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index 79b47130baf..62d83f9e93e 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -32,11 +32,11 @@
32;;; Code: 32;;; Code:
33 33
34(defgroup compression nil 34(defgroup compression nil
35 "Data compression utilities" 35 "Data compression utilities."
36 :group 'data) 36 :group 'data)
37 37
38(defgroup jka-compr nil 38(defgroup jka-compr nil
39 "jka-compr customization" 39 "jka-compr customization."
40 :group 'compression) 40 :group 'compression)
41 41
42;;; I have this defined so that .Z files are assumed to be in unix 42;;; I have this defined so that .Z files are assumed to be in unix
diff --git a/lisp/lpr.el b/lisp/lpr.el
index 0eac7b7ba31..445c793fcdd 100644
--- a/lisp/lpr.el
+++ b/lisp/lpr.el
@@ -41,7 +41,7 @@
41 41
42 42
43(defgroup lpr nil 43(defgroup lpr nil
44 "Print Emacs buffer on line printer" 44 "Print Emacs buffer on line printer."
45 :group 'wp) 45 :group 'wp)
46 46
47 47
@@ -291,7 +291,7 @@ The characters tab, linefeed, space, return and formfeed are not affected."
291 (while (re-search-forward "[\^@-\^h\^k\^n-\^_\177-\377]" nil t) 291 (while (re-search-forward "[\^@-\^h\^k\^n-\^_\177-\377]" nil t)
292 (setq c (preceding-char)) 292 (setq c (preceding-char))
293 (delete-backward-char 1) 293 (delete-backward-char 1)
294 (insert (if (< c ?\ ) 294 (insert (if (< c ?\s)
295 (format "\\^%c" (+ c ?@)) 295 (format "\\^%c" (+ c ?@))
296 (format "\\%02x" c)))))))) 296 (format "\\%02x" c))))))))
297 297
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el
index d4c5c2c3261..db904277ab5 100644
--- a/lisp/mail/mailalias.el
+++ b/lisp/mail/mailalias.el
@@ -33,7 +33,7 @@
33(require 'sendmail) 33(require 'sendmail)
34 34
35(defgroup mailalias nil 35(defgroup mailalias nil
36 "Expanding mail aliases" 36 "Expanding mail aliases."
37 :group 'mail) 37 :group 'mail)
38 38
39(defcustom mail-passwd-files '("/etc/passwd") 39(defcustom mail-passwd-files '("/etc/passwd")
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 9c647126d5c..5bf6af743b3 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -54,6 +54,14 @@
54 ("{ \\([^\n}]+\\) }" 1 font-lock-comment-face)) ; Labels. 54 ("{ \\([^\n}]+\\) }" 1 font-lock-comment-face)) ; Labels.
55 "Additional expressions to highlight in Rmail Summary mode.") 55 "Additional expressions to highlight in Rmail Summary mode.")
56 56
57(defvar rmail-summary-redo
58 "(FUNCTION . ARGS) to regenerate this Rmail summary buffer.")
59
60(defvar rmail-summary-overlay nil)
61(put 'rmail-summary-overlay 'permanent-local t)
62
63(defvar rmail-summary-mode-map nil)
64
57;; Entry points for making a summary buffer. 65;; Entry points for making a summary buffer.
58 66
59;; Regenerate the contents of the summary 67;; Regenerate the contents of the summary
@@ -165,6 +173,8 @@ SENDERS is a string of names separated by commas."
165 173
166(defvar rmail-summary-symbol-number 0) 174(defvar rmail-summary-symbol-number 0)
167 175
176(defvar rmail-new-summary-line-count)
177
168(defun rmail-new-summary (description redo-form function &rest args) 178(defun rmail-new-summary (description redo-form function &rest args)
169 "Create a summary of selected messages. 179 "Create a summary of selected messages.
170DESCRIPTION makes part of the mode line of the summary buffer. 180DESCRIPTION makes part of the mode line of the summary buffer.
@@ -187,7 +197,7 @@ nil for FUNCTION means all messages."
187 (setq mesg rmail-current-message) 197 (setq mesg rmail-current-message)
188 ;; Filter the messages; make or get their summary lines. 198 ;; Filter the messages; make or get their summary lines.
189 (let ((summary-msgs ()) 199 (let ((summary-msgs ())
190 (new-summary-line-count 0)) 200 (rmail-new-summary-line-count 0))
191 (let ((msgnum 1) 201 (let ((msgnum 1)
192 (buffer-read-only nil) 202 (buffer-read-only nil)
193 (old-min (point-min-marker)) 203 (old-min (point-min-marker))
@@ -263,11 +273,11 @@ nil for FUNCTION means all messages."
263(defun rmail-make-summary-line (msg) 273(defun rmail-make-summary-line (msg)
264 (let ((line (or (aref rmail-summary-vector (1- msg)) 274 (let ((line (or (aref rmail-summary-vector (1- msg))
265 (progn 275 (progn
266 (setq new-summary-line-count 276 (setq rmail-new-summary-line-count
267 (1+ new-summary-line-count)) 277 (1+ rmail-new-summary-line-count))
268 (if (zerop (% new-summary-line-count 10)) 278 (if (zerop (% rmail-new-summary-line-count 10))
269 (message "Computing summary lines...%d" 279 (message "Computing summary lines...%d"
270 new-summary-line-count)) 280 rmail-new-summary-line-count))
271 (rmail-make-summary-line-1 msg))))) 281 (rmail-make-summary-line-1 msg)))))
272 ;; Fix up the part of the summary that says "deleted" or "unseen". 282 ;; Fix up the part of the summary that says "deleted" or "unseen".
273 (aset line 5 283 (aset line 5
@@ -842,8 +852,6 @@ Search, the `unseen' attribute is restored.")
842 (rmail-show-message msg-num t)))))) 852 (rmail-show-message msg-num t))))))
843 (rmail-summary-update-highlight nil))))) 853 (rmail-summary-update-highlight nil)))))
844 854
845(defvar rmail-summary-mode-map nil)
846
847(if rmail-summary-mode-map 855(if rmail-summary-mode-map
848 nil 856 nil
849 (setq rmail-summary-mode-map (make-keymap)) 857 (setq rmail-summary-mode-map (make-keymap))
@@ -1037,9 +1045,6 @@ Search, the `unseen' attribute is restored.")
1037(define-key rmail-summary-mode-map [menu-bar move next] 1045(define-key rmail-summary-mode-map [menu-bar move next]
1038 '("Next" . rmail-summary-next-all)) 1046 '("Next" . rmail-summary-next-all))
1039 1047
1040(defvar rmail-summary-overlay nil)
1041(put 'rmail-summary-overlay 'permanent-local t)
1042
1043(defun rmail-summary-mouse-goto-message (event) 1048(defun rmail-summary-mouse-goto-message (event)
1044 "Select the message whose summary line you click on." 1049 "Select the message whose summary line you click on."
1045 (interactive "@e") 1050 (interactive "@e")
@@ -1191,7 +1196,8 @@ move to the previous message."
1191 (or (eq buffer (window-buffer (next-window (frame-first-window)))) 1196 (or (eq buffer (window-buffer (next-window (frame-first-window))))
1192 (delete-other-windows))) 1197 (delete-other-windows)))
1193 (pop-to-buffer rmail-view-buffer)) 1198 (pop-to-buffer rmail-view-buffer))
1194 (beginning-of-buffer) 1199 (with-no-warnings
1200 (beginning-of-buffer))
1195 (pop-to-buffer rmail-summary-buffer)) 1201 (pop-to-buffer rmail-summary-buffer))
1196 1202
1197(defun rmail-summary-bury () 1203(defun rmail-summary-bury ()
@@ -1275,12 +1281,14 @@ argument says to read a file name and use that file as the inbox."
1275(defun rmail-summary-first-message () 1281(defun rmail-summary-first-message ()
1276 "Show first message in Rmail file from summary buffer." 1282 "Show first message in Rmail file from summary buffer."
1277 (interactive) 1283 (interactive)
1278 (beginning-of-buffer)) 1284 (with-no-warnings
1285 (beginning-of-buffer)))
1279 1286
1280(defun rmail-summary-last-message () 1287(defun rmail-summary-last-message ()
1281 "Show last message in Rmail file from summary buffer." 1288 "Show last message in Rmail file from summary buffer."
1282 (interactive) 1289 (interactive)
1283 (end-of-buffer) 1290 (with-no-warnings
1291 (end-of-buffer))
1284 (forward-line -1)) 1292 (forward-line -1))
1285 1293
1286(defvar rmail-summary-edit-map nil) 1294(defvar rmail-summary-edit-map nil)
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el
index 593f46cad40..137d7d51b53 100644
--- a/lisp/mail/supercite.el
+++ b/lisp/mail/supercite.el
@@ -44,28 +44,28 @@
44;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 44;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
45 45
46(defgroup supercite nil 46(defgroup supercite nil
47 "Supercite package" 47 "Supercite package."
48 :prefix "sc-" 48 :prefix "sc-"
49 :group 'mail 49 :group 'mail
50 :group 'news) 50 :group 'news)
51 51
52(defgroup supercite-frames nil 52(defgroup supercite-frames nil
53 "Supercite (regi) frames" 53 "Supercite (regi) frames."
54 :prefix "sc-" 54 :prefix "sc-"
55 :group 'supercite) 55 :group 'supercite)
56 56
57(defgroup supercite-attr nil 57(defgroup supercite-attr nil
58 "Supercite attributions" 58 "Supercite attributions."
59 :prefix "sc-" 59 :prefix "sc-"
60 :group 'supercite) 60 :group 'supercite)
61 61
62(defgroup supercite-cite nil 62(defgroup supercite-cite nil
63 "Supercite citings" 63 "Supercite citings."
64 :prefix "sc-" 64 :prefix "sc-"
65 :group 'supercite) 65 :group 'supercite)
66 66
67(defgroup supercite-hooks nil 67(defgroup supercite-hooks nil
68 "Hooking into supercite" 68 "Hooking into supercite."
69 :prefix "sc-" 69 :prefix "sc-"
70 :group 'supercite) 70 :group 'supercite)
71 71
@@ -1317,6 +1317,8 @@ use it instead of `sc-citation-root-regexp'."
1317 sc-citation-delimiter 1317 sc-citation-delimiter
1318 sc-citation-separator)) 1318 sc-citation-separator))
1319 1319
1320(defvar filladapt-prefix-table)
1321
1320(defun sc-setup-filladapt () 1322(defun sc-setup-filladapt ()
1321 "Setup `filladapt-prefix-table' to handle Supercited paragraphs." 1323 "Setup `filladapt-prefix-table' to handle Supercited paragraphs."
1322 (let* ((fa-sc-elt 'filladapt-supercite-included-text) 1324 (let* ((fa-sc-elt 'filladapt-supercite-included-text)
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index b4569c26140..ce451560bc4 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -312,8 +312,11 @@ bootstrap-clean-SH:
312 -for dir in . $(WINS); do rm -f $$dir/*.elc; done 312 -for dir in . $(WINS); do rm -f $$dir/*.elc; done
313 313
314# Generate/update files for the bootstrap process. 314# Generate/update files for the bootstrap process.
315# When done, remove bootstrap-emacs from ../bin, so that
316# it will not be mistaken for an installed binary.
315 317
316bootstrap: update-subdirs autoloads compile finder-data custom-deps 318bootstrap: update-subdirs autoloads compile finder-data custom-deps
319 - $(DEL) $(EMACS)
317 320
318# 321#
319# Assuming INSTALL_DIR is defined, copy the elisp files to it 322# Assuming INSTALL_DIR is defined, copy the elisp files to it
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 07e593a70c1..03740e780d5 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1857,7 +1857,7 @@ and selects that window."
1857 (string< (buffer-name elt1) (buffer-name elt2)))))) 1857 (string< (buffer-name elt1) (buffer-name elt2))))))
1858 (setq tail buffers) 1858 (setq tail buffers)
1859 (while tail 1859 (while tail
1860 (or (eq ?\ (aref (buffer-name (car tail)) 0)) 1860 (or (eq ?\s (aref (buffer-name (car tail)) 0))
1861 (setq maxlen 1861 (setq maxlen
1862 (max maxlen 1862 (max maxlen
1863 (length (buffer-name (car tail)))))) 1863 (length (buffer-name (car tail))))))
diff --git a/lisp/msb.el b/lisp/msb.el
index 0bcdad314a6..02ab487bc69 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -489,7 +489,7 @@ See the function `mouse-select-buffer' and the variable
489 "Return t if optional BUFFER is an \"invisible\" buffer. 489 "Return t if optional BUFFER is an \"invisible\" buffer.
490If the argument is left out or nil, then the current buffer is considered." 490If the argument is left out or nil, then the current buffer is considered."
491 (and (> (length (buffer-name buffer)) 0) 491 (and (> (length (buffer-name buffer)) 0)
492 (eq ?\ (aref (buffer-name buffer) 0)))) 492 (eq ?\s (aref (buffer-name buffer) 0))))
493 493
494(defun msb--strip-dir (dir) 494(defun msb--strip-dir (dir)
495 "Strip one hierarchy level from the end of DIR." 495 "Strip one hierarchy level from the end of DIR."
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index cd5c2d41f98..87e3dcab5a3 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -799,6 +799,8 @@ to use."
799 799
800;; --- Default MS-Windows browser --- 800;; --- Default MS-Windows browser ---
801 801
802(defvar dos-windows-version)
803
802(defun browse-url-default-windows-browser (url &optional new-window) 804(defun browse-url-default-windows-browser (url &optional new-window)
803 (interactive (browse-url-interactive-arg "URL: ")) 805 (interactive (browse-url-interactive-arg "URL: "))
804 (if (eq system-type 'ms-dos) 806 (if (eq system-type 'ms-dos)
diff --git a/lisp/net/rcompile.el b/lisp/net/rcompile.el
index 6928b2f4943..aab6430a839 100644
--- a/lisp/net/rcompile.el
+++ b/lisp/net/rcompile.el
@@ -70,7 +70,7 @@
70;;;; user defined variables 70;;;; user defined variables
71 71
72(defgroup remote-compile nil 72(defgroup remote-compile nil
73 "Run a compilation on a remote machine" 73 "Run a compilation on a remote machine."
74 :group 'processes 74 :group 'processes
75 :group 'tools) 75 :group 'tools)
76 76
diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el
index 3ad66166ece..c0f7b619142 100644
--- a/lisp/net/rlogin.el
+++ b/lisp/net/rlogin.el
@@ -41,7 +41,7 @@
41(require 'shell) 41(require 'shell)
42 42
43(defgroup rlogin nil 43(defgroup rlogin nil
44 "Remote login interface" 44 "Remote login interface."
45 :group 'processes 45 :group 'processes
46 :group 'unix) 46 :group 'unix)
47 47
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 59044da6ef9..590e6ce37ba 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -502,7 +502,7 @@ Point is assumed to be just at the end of a comment."
502 (or (match-end 1) (/= (current-column) (current-indentation)))) 502 (or (match-end 1) (/= (current-column) (current-indentation))))
503 0 503 0
504 (when (or (/= (current-column) (current-indentation)) 504 (when (or (/= (current-column) (current-indentation))
505 (and (> comment-add 0) (looking-at "\\s<\\S<"))) 505 (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)")))
506 comment-column))) 506 comment-column)))
507 507
508;;;###autoload 508;;;###autoload
diff --git a/lisp/obsolete/ooutline.el b/lisp/obsolete/ooutline.el
index 0218d097b64..588770f7e75 100644
--- a/lisp/obsolete/ooutline.el
+++ b/lisp/obsolete/ooutline.el
@@ -33,7 +33,7 @@
33;; Jan '86, Some new features added by Peter Desnoyers and rewritten by RMS. 33;; Jan '86, Some new features added by Peter Desnoyers and rewritten by RMS.
34 34
35(defgroup outlines nil 35(defgroup outlines nil
36 "Support for hierarchical outlining" 36 "Support for hierarchical outlining."
37 :prefix "outline-" 37 :prefix "outline-"
38 :group 'editing) 38 :group 'editing)
39 39
diff --git a/lisp/outline.el b/lisp/outline.el
index b807365f733..62d2e57933f 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -38,7 +38,7 @@
38;;; Code: 38;;; Code:
39 39
40(defgroup outlines nil 40(defgroup outlines nil
41 "Support for hierarchical outlining" 41 "Support for hierarchical outlining."
42 :prefix "outline-" 42 :prefix "outline-"
43 :group 'editing) 43 :group 'editing)
44 44
diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el
index d5003d5de08..805f42ea41a 100644
--- a/lisp/pcmpl-cvs.el
+++ b/lisp/pcmpl-cvs.el
@@ -33,7 +33,7 @@
33(require 'executable) 33(require 'executable)
34 34
35(defgroup pcmpl-cvs nil 35(defgroup pcmpl-cvs nil
36 "Functions for dealing with CVS completions" 36 "Functions for dealing with CVS completions."
37 :group 'pcomplete) 37 :group 'pcomplete)
38 38
39;; User Variables: 39;; User Variables:
diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el
index 683819b54ff..e4d6ebc1a80 100644
--- a/lisp/pcmpl-rpm.el
+++ b/lisp/pcmpl-rpm.el
@@ -30,7 +30,7 @@
30(require 'pcomplete) 30(require 'pcomplete)
31 31
32(defgroup pcmpl-rpm nil 32(defgroup pcmpl-rpm nil
33 "Functions for dealing with CVS completions" 33 "Functions for dealing with CVS completions."
34 :group 'pcomplete) 34 :group 'pcomplete)
35 35
36;; Functions: 36;; Functions:
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index 9ef8d0fd01f..86e6a35b646 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -772,7 +772,7 @@ See `decipher-loop-no-breaks' if you do not care about word divisions."
772 (forward-char)) 772 (forward-char))
773 (or (equal decipher-char ?\ ) 773 (or (equal decipher-char ?\ )
774 (progn 774 (progn
775 (setq decipher-char ?\ ; 775 (setq decipher-char ?\s
776 decipher--loop-prev-char ?\ ) 776 decipher--loop-prev-char ?\ )
777 (funcall func))))))) 777 (funcall func)))))))
778 778
diff --git a/lisp/printing.el b/lisp/printing.el
index 868ea3fddf3..2dbe460c0cc 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -1179,7 +1179,7 @@ If SUFFIX is non-nil, add that at the end of the file name."
1179 1179
1180 1180
1181(defgroup printing nil 1181(defgroup printing nil
1182 "Printing Utilities group" 1182 "Printing Utilities group."
1183 :tag "Printing Utilities" 1183 :tag "Printing Utilities"
1184 :link '(emacs-library-link :tag "Source Lisp File" "printing.el") 1184 :link '(emacs-library-link :tag "Source Lisp File" "printing.el")
1185 :prefix "pr-" 1185 :prefix "pr-"
@@ -6058,7 +6058,7 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
6058 ;; header 6058 ;; header
6059 (let ((versions (concat "printing v" pr-version 6059 (let ((versions (concat "printing v" pr-version
6060 " ps-print v" ps-print-version))) 6060 " ps-print v" ps-print-version)))
6061 (widget-insert (make-string (- 79 (length versions)) ?\ ) versions)) 6061 (widget-insert (make-string (- 79 (length versions)) ?\s) versions))
6062 (pr-insert-italic "\nCurrent Directory : " 1) 6062 (pr-insert-italic "\nCurrent Directory : " 1)
6063 (pr-insert-italic default-directory) 6063 (pr-insert-italic default-directory)
6064 6064
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 3f3b385c5ed..f8da248535b 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -493,25 +493,60 @@ starting the compilation process.")
493;; backward-compatibility alias 493;; backward-compatibility alias
494(put 'compilation-info-face 'face-alias 'compilation-info) 494(put 'compilation-info-face 'face-alias 'compilation-info)
495 495
496(defface compilation-error-file-name
497 '((default :inherit font-lock-warning-face)
498 (((supports :underline t)) :underline t))
499 "Face for displaying file names in compilation errors."
500 :group 'font-lock-highlighting-faces
501 :version "22.1")
502
503(defface compilation-warning-file-name
504 '((default :inherit font-lock-warning-face)
505 (((supports :underline t)) :underline t))
506 "Face for displaying file names in compilation errors."
507 :group 'font-lock-highlighting-faces
508 :version "22.1")
509
510(defface compilation-info-file-name
511 '((default :inherit compilation-info)
512 (((supports :underline t)) :underline t))
513 "Face for displaying file names in compilation errors."
514 :group 'font-lock-highlighting-faces
515 :version "22.1")
516
517(defface compilation-line-number
518 '((default :inherit font-lock-variable-name-face)
519 (((supports :underline t)) :underline t))
520 "Face for displaying file names in compilation errors."
521 :group 'font-lock-highlighting-faces
522 :version "22.1")
523
524(defface compilation-column-number
525 '((default :inherit font-lock-type-face)
526 (((supports :underline t)) :underline t))
527 "Face for displaying file names in compilation errors."
528 :group 'font-lock-highlighting-faces
529 :version "22.1")
530
496(defvar compilation-message-face nil 531(defvar compilation-message-face nil
497 "Face name to use for whole messages. 532 "Face name to use for whole messages.
498Faces `compilation-error-face', `compilation-warning-face', 533Faces `compilation-error-face', `compilation-warning-face',
499`compilation-info-face', `compilation-line-face' and 534`compilation-info-face', `compilation-line-face' and
500`compilation-column-face' get prepended to this, when applicable.") 535`compilation-column-face' get prepended to this, when applicable.")
501 536
502(defvar compilation-error-face 'font-lock-warning-face 537(defvar compilation-error-face 'compilation-error-file-name
503 "Face name to use for file name in error messages.") 538 "Face name to use for file name in error messages.")
504 539
505(defvar compilation-warning-face 'compilation-warning 540(defvar compilation-warning-face 'compilation-warning-file-name
506 "Face name to use for file name in warning messages.") 541 "Face name to use for file name in warning messages.")
507 542
508(defvar compilation-info-face 'compilation-info 543(defvar compilation-info-face 'compilation-info-file-name
509 "Face name to use for file name in informational messages.") 544 "Face name to use for file name in informational messages.")
510 545
511(defvar compilation-line-face 'font-lock-variable-name-face 546(defvar compilation-line-face 'compilation-line-number
512 "Face name to use for line number in message.") 547 "Face name to use for line number in message.")
513 548
514(defvar compilation-column-face 'font-lock-type-face 549(defvar compilation-column-face 'compilation-column-number
515 "Face name to use for column number in message.") 550 "Face name to use for column number in message.")
516 551
517;; same faces as dired uses 552;; same faces as dired uses
@@ -1342,8 +1377,9 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
1342 (force-mode-line-update) 1377 (force-mode-line-update)
1343 (if (and opoint (< opoint omax)) 1378 (if (and opoint (< opoint omax))
1344 (goto-char opoint)) 1379 (goto-char opoint))
1345 (if compilation-finish-function 1380 (with-no-warnings
1346 (funcall compilation-finish-function (current-buffer) msg)) 1381 (if compilation-finish-function
1382 (funcall compilation-finish-function (current-buffer) msg)))
1347 (let ((functions compilation-finish-functions)) 1383 (let ((functions compilation-finish-functions))
1348 (while functions 1384 (while functions
1349 (funcall (car functions) (current-buffer) msg) 1385 (funcall (car functions) (current-buffer) msg)
@@ -1501,8 +1537,9 @@ Use this command in a compilation log buffer. Sets the mark at point there."
1501 1537
1502;;;###autoload 1538;;;###autoload
1503(defun compilation-next-error-function (n &optional reset) 1539(defun compilation-next-error-function (n &optional reset)
1540 "Advance to the next error message and visit the file where the error was.
1541This is the value of `next-error-function' in Compilation buffers."
1504 (interactive "p") 1542 (interactive "p")
1505 (set-buffer (compilation-find-buffer))
1506 (when reset 1543 (when reset
1507 (setq compilation-current-error nil)) 1544 (setq compilation-current-error nil))
1508 (let* ((columns compilation-error-screen-columns) ; buffer's local value 1545 (let* ((columns compilation-error-screen-columns) ; buffer's local value
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index d95c0294c4d..052df4eedda 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1516,7 +1516,8 @@ or as help on variables `cperl-tips', `cperl-problems',
1516 (t 1516 (t
1517 '((cperl-load-font-lock-keywords 1517 '((cperl-load-font-lock-keywords
1518 cperl-load-font-lock-keywords-1 1518 cperl-load-font-lock-keywords-1
1519 cperl-load-font-lock-keywords-2))))) 1519 cperl-load-font-lock-keywords-2)
1520 nil nil ((?_ . "w"))))))
1520 (make-local-variable 'cperl-syntax-state) 1521 (make-local-variable 'cperl-syntax-state)
1521 (if cperl-use-syntax-table-text-property 1522 (if cperl-use-syntax-table-text-property
1522 (progn 1523 (progn
@@ -3840,7 +3841,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3840 (and (buffer-modified-p) 3841 (and (buffer-modified-p)
3841 (not modified) 3842 (not modified)
3842 (set-buffer-modified-p nil)) 3843 (set-buffer-modified-p nil))
3843 (set-syntax-table cperl-mode-syntax-table)) 3844 ;; I do not understand what this is doing here. It breaks font-locking
3845 ;; because it resets the syntax-table from font-lock-syntax-table to
3846 ;; cperl-mode-syntax-table.
3847 ;; (set-syntax-table cperl-mode-syntax-table)
3848 )
3844 (car err-l))) 3849 (car err-l)))
3845 3850
3846(defun cperl-backward-to-noncomment (lim) 3851(defun cperl-backward-to-noncomment (lim)
@@ -4350,7 +4355,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4350 fill-column) 4355 fill-column)
4351 (let ((c (save-excursion (beginning-of-line) 4356 (let ((c (save-excursion (beginning-of-line)
4352 (cperl-to-comment-or-eol) (point))) 4357 (cperl-to-comment-or-eol) (point)))
4353 (s (memq (following-char) '(?\ ?\t))) marker) 4358 (s (memq (following-char) '(?\s ?\t))) marker)
4354 (if (>= c (point)) 4359 (if (>= c (point))
4355 ;; Don't break line inside code: only inside comment. 4360 ;; Don't break line inside code: only inside comment.
4356 nil 4361 nil
@@ -4361,11 +4366,11 @@ indentation and initial hashes. Behaves usually outside of comment."
4361 (if (bolp) (progn (re-search-forward "#+[ \t]*") 4366 (if (bolp) (progn (re-search-forward "#+[ \t]*")
4362 (goto-char (match-end 0)))) 4367 (goto-char (match-end 0))))
4363 ;; Following space could have gone: 4368 ;; Following space could have gone:
4364 (if (or (not s) (memq (following-char) '(?\ ?\t))) nil 4369 (if (or (not s) (memq (following-char) '(?\s ?\t))) nil
4365 (insert " ") 4370 (insert " ")
4366 (backward-char 1)) 4371 (backward-char 1))
4367 ;; Previous space could have gone: 4372 ;; Previous space could have gone:
4368 (or (memq (preceding-char) '(?\ ?\t)) (insert " ")))))) 4373 (or (memq (preceding-char) '(?\s ?\t)) (insert " "))))))
4369 4374
4370(defun cperl-imenu-addback (lst &optional isback name) 4375(defun cperl-imenu-addback (lst &optional isback name)
4371 ;; We suppose that the lst is a DAG, unless the first element only 4376 ;; We suppose that the lst is a DAG, unless the first element only
diff --git a/lisp/progmodes/delphi.el b/lisp/progmodes/delphi.el
index 166e5b8984e..00ed882c852 100644
--- a/lisp/progmodes/delphi.el
+++ b/lisp/progmodes/delphi.el
@@ -88,7 +88,7 @@
88 ) 88 )
89 89
90(defgroup delphi nil 90(defgroup delphi nil
91 "Major mode for editing Delphi source in Emacs" 91 "Major mode for editing Delphi source in Emacs."
92 :version "21.1" 92 :version "21.1"
93 :group 'languages) 93 :group 'languages)
94 94
@@ -1510,7 +1510,7 @@ before the indent, the point is moved to the indent."
1510 (set-marker-insertion-type marked-point t) 1510 (set-marker-insertion-type marked-point t)
1511 (when (/= old-indent new-indent) 1511 (when (/= old-indent new-indent)
1512 (delete-region line-start (point)) 1512 (delete-region line-start (point))
1513 (insert (make-string new-indent ?\ ))) 1513 (insert (make-string new-indent ?\s)))
1514 (goto-char marked-point) 1514 (goto-char marked-point)
1515 (set-marker marked-point nil)))) 1515 (set-marker marked-point nil))))
1516 1516
@@ -1775,7 +1775,7 @@ An error is raised if not in a comment."
1775 (comment-end (delphi-token-end end-comment)) 1775 (comment-end (delphi-token-end end-comment))
1776 (content-start (delphi-comment-content-start start-comment)) 1776 (content-start (delphi-comment-content-start start-comment))
1777 (content-indent (delphi-column-of content-start)) 1777 (content-indent (delphi-column-of content-start))
1778 (content-prefix (make-string content-indent ?\ )) 1778 (content-prefix (make-string content-indent ?\s))
1779 (content-prefix-re delphi-leading-spaces-re) 1779 (content-prefix-re delphi-leading-spaces-re)
1780 (p nil) 1780 (p nil)
1781 (marked-point (point-marker))) ; Maintain our position reliably. 1781 (marked-point (point-marker))) ; Maintain our position reliably.
@@ -1783,9 +1783,9 @@ An error is raised if not in a comment."
1783 ;; // style comments need more work. 1783 ;; // style comments need more work.
1784 (setq content-prefix 1784 (setq content-prefix
1785 (let ((comment-indent (delphi-column-of comment-start))) 1785 (let ((comment-indent (delphi-column-of comment-start)))
1786 (concat (make-string comment-indent ?\ ) "//" 1786 (concat (make-string comment-indent ?\s) "//"
1787 (make-string (- content-indent comment-indent 2) 1787 (make-string (- content-indent comment-indent 2)
1788 ?\ ))) 1788 ?\s)))
1789 content-prefix-re (concat delphi-leading-spaces-re 1789 content-prefix-re (concat delphi-leading-spaces-re
1790 "//" 1790 "//"
1791 delphi-spaces-re) 1791 delphi-spaces-re)
@@ -1857,8 +1857,8 @@ comment block. If not in a // comment, just does a normal newline."
1857 (comment-start (delphi-token-start start-comment)) 1857 (comment-start (delphi-token-start start-comment))
1858 (content-start (delphi-comment-content-start start-comment)) 1858 (content-start (delphi-comment-content-start start-comment))
1859 (prefix 1859 (prefix
1860 (concat (make-string (delphi-column-of comment-start) ?\ ) "//" 1860 (concat (make-string (delphi-column-of comment-start) ?\s) "//"
1861 (make-string (- content-start comment-start 2) ?\ )))) 1861 (make-string (- content-start comment-start 2) ?\s))))
1862 (delete-horizontal-space) 1862 (delete-horizontal-space)
1863 (newline) 1863 (newline)
1864 (insert prefix))))) 1864 (insert prefix)))))
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 1a680ffa077..22240a3a205 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -1135,14 +1135,14 @@ Elements of ALIST that are not conses are ignored."
1135;;; Interface to the command system 1135;;; Interface to the command system
1136 1136
1137(defgroup postscript nil 1137(defgroup postscript nil
1138 "PostScript Group" 1138 "PostScript Group."
1139 :tag "PostScript" 1139 :tag "PostScript"
1140 :version "20" 1140 :version "20"
1141 :group 'emacs) 1141 :group 'emacs)
1142 1142
1143 1143
1144(defgroup ebnf2ps nil 1144(defgroup ebnf2ps nil
1145 "Translate an EBNF to a syntactic chart on PostScript" 1145 "Translate an EBNF to a syntactic chart on PostScript."
1146 :prefix "ebnf-" 1146 :prefix "ebnf-"
1147 :version "20" 1147 :version "20"
1148 :group 'wp 1148 :group 'wp
@@ -1150,7 +1150,7 @@ Elements of ALIST that are not conses are ignored."
1150 1150
1151 1151
1152(defgroup ebnf-special nil 1152(defgroup ebnf-special nil
1153 "Special customization" 1153 "Special customization."
1154 :prefix "ebnf-" 1154 :prefix "ebnf-"
1155 :tag "Special" 1155 :tag "Special"
1156 :version "20" 1156 :version "20"
@@ -1158,7 +1158,7 @@ Elements of ALIST that are not conses are ignored."
1158 1158
1159 1159
1160(defgroup ebnf-except nil 1160(defgroup ebnf-except nil
1161 "Except customization" 1161 "Except customization."
1162 :prefix "ebnf-" 1162 :prefix "ebnf-"
1163 :tag "Except" 1163 :tag "Except"
1164 :version "20" 1164 :version "20"
@@ -1166,7 +1166,7 @@ Elements of ALIST that are not conses are ignored."
1166 1166
1167 1167
1168(defgroup ebnf-repeat nil 1168(defgroup ebnf-repeat nil
1169 "Repeat customization" 1169 "Repeat customization."
1170 :prefix "ebnf-" 1170 :prefix "ebnf-"
1171 :tag "Repeat" 1171 :tag "Repeat"
1172 :version "20" 1172 :version "20"
@@ -1174,7 +1174,7 @@ Elements of ALIST that are not conses are ignored."
1174 1174
1175 1175
1176(defgroup ebnf-terminal nil 1176(defgroup ebnf-terminal nil
1177 "Terminal customization" 1177 "Terminal customization."
1178 :prefix "ebnf-" 1178 :prefix "ebnf-"
1179 :tag "Terminal" 1179 :tag "Terminal"
1180 :version "20" 1180 :version "20"
@@ -1182,7 +1182,7 @@ Elements of ALIST that are not conses are ignored."
1182 1182
1183 1183
1184(defgroup ebnf-non-terminal nil 1184(defgroup ebnf-non-terminal nil
1185 "Non-Terminal customization" 1185 "Non-Terminal customization."
1186 :prefix "ebnf-" 1186 :prefix "ebnf-"
1187 :tag "Non-Terminal" 1187 :tag "Non-Terminal"
1188 :version "20" 1188 :version "20"
@@ -1190,7 +1190,7 @@ Elements of ALIST that are not conses are ignored."
1190 1190
1191 1191
1192(defgroup ebnf-production nil 1192(defgroup ebnf-production nil
1193 "Production customization" 1193 "Production customization."
1194 :prefix "ebnf-" 1194 :prefix "ebnf-"
1195 :tag "Production" 1195 :tag "Production"
1196 :version "20" 1196 :version "20"
@@ -1198,7 +1198,7 @@ Elements of ALIST that are not conses are ignored."
1198 1198
1199 1199
1200(defgroup ebnf-shape nil 1200(defgroup ebnf-shape nil
1201 "Shapes customization" 1201 "Shapes customization."
1202 :prefix "ebnf-" 1202 :prefix "ebnf-"
1203 :tag "Shape" 1203 :tag "Shape"
1204 :version "20" 1204 :version "20"
@@ -1206,7 +1206,7 @@ Elements of ALIST that are not conses are ignored."
1206 1206
1207 1207
1208(defgroup ebnf-displacement nil 1208(defgroup ebnf-displacement nil
1209 "Displacement customization" 1209 "Displacement customization."
1210 :prefix "ebnf-" 1210 :prefix "ebnf-"
1211 :tag "Displacement" 1211 :tag "Displacement"
1212 :version "20" 1212 :version "20"
@@ -1214,7 +1214,7 @@ Elements of ALIST that are not conses are ignored."
1214 1214
1215 1215
1216(defgroup ebnf-syntactic nil 1216(defgroup ebnf-syntactic nil
1217 "Syntactic customization" 1217 "Syntactic customization."
1218 :prefix "ebnf-" 1218 :prefix "ebnf-"
1219 :tag "Syntactic" 1219 :tag "Syntactic"
1220 :version "20" 1220 :version "20"
@@ -1222,7 +1222,7 @@ Elements of ALIST that are not conses are ignored."
1222 1222
1223 1223
1224(defgroup ebnf-optimization nil 1224(defgroup ebnf-optimization nil
1225 "Optimization customization" 1225 "Optimization customization."
1226 :prefix "ebnf-" 1226 :prefix "ebnf-"
1227 :tag "Optimization" 1227 :tag "Optimization"
1228 :version "20" 1228 :version "20"
@@ -4623,7 +4623,7 @@ killed after process termination."
4623(defun ebnf-eps-filename (str) 4623(defun ebnf-eps-filename (str)
4624 (let* ((len (length str)) 4624 (let* ((len (length str))
4625 (stri 0) 4625 (stri 0)
4626 (new (make-string len ?\ ))) 4626 (new (make-string len ?\s)))
4627 (while (< stri len) 4627 (while (< stri len)
4628 (aset new stri (aref ebnf-map-name (aref str stri))) 4628 (aset new stri (aref ebnf-map-name (aref str stri)))
4629 (setq stri (1+ stri))) 4629 (setq stri (1+ stri)))
@@ -5523,7 +5523,7 @@ killed after process termination."
5523(defun ebnf-trim-right (str) 5523(defun ebnf-trim-right (str)
5524 (let* ((len (1- (length str))) 5524 (let* ((len (1- (length str)))
5525 (index len)) 5525 (index len))
5526 (while (and (> index 0) (= (aref str index) ?\ )) 5526 (while (and (> index 0) (= (aref str index) ?\s))
5527 (setq index (1- index))) 5527 (setq index (1- index)))
5528 (if (= index len) 5528 (if (= index len)
5529 str 5529 str
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index 5f8ea5ae70a..04e8b2fc52a 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -938,7 +938,8 @@ NOCONFIRM."
938 (loop for member-buffer in (ebrowse-same-tree-member-buffer-list) 938 (loop for member-buffer in (ebrowse-same-tree-member-buffer-list)
939 do (kill-buffer member-buffer)) 939 do (kill-buffer member-buffer))
940 (erase-buffer) 940 (erase-buffer)
941 (insert-file (or buffer-file-name ebrowse--tags-file-name)) 941 (with-no-warnings
942 (insert-file (or buffer-file-name ebrowse--tags-file-name)))
942 (ebrowse-tree-mode) 943 (ebrowse-tree-mode)
943 (current-buffer))) 944 (current-buffer)))
944 945
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index b119b03f0bf..590fe4991f5 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -40,7 +40,7 @@ Use the `etags' program to make a tags table file.")
40;; Make M-x set-variable tags-file-name like M-x visit-tags-table. 40;; Make M-x set-variable tags-file-name like M-x visit-tags-table.
41;;;###autoload (put 'tags-file-name 'variable-interactive "fVisit tags table: ") 41;;;###autoload (put 'tags-file-name 'variable-interactive "fVisit tags table: ")
42 42
43(defgroup etags nil "Tags tables" 43(defgroup etags nil "Tags tables."
44 :group 'tools) 44 :group 'tools)
45 45
46;;;###autoload 46;;;###autoload
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el
index d278b10ba0c..3fff4c04038 100644
--- a/lisp/progmodes/executable.el
+++ b/lisp/progmodes/executable.el
@@ -53,7 +53,7 @@
53;;; Code: 53;;; Code:
54 54
55(defgroup executable nil 55(defgroup executable nil
56 "Base functionality for executable interpreter scripts" 56 "Base functionality for executable interpreter scripts."
57 :group 'processes) 57 :group 'processes)
58 58
59;; This used to default to `other', but that doesn't seem to have any 59;; This used to default to `other', but that doesn't seem to have any
@@ -230,7 +230,7 @@ executable."
230 (and (goto-char (match-beginning 1)) 230 (and (goto-char (match-beginning 1))
231 ;; If the line ends in a space, 231 ;; If the line ends in a space,
232 ;; don't offer to change it. 232 ;; don't offer to change it.
233 (not (= (char-after (1- (match-end 1))) ?\ )) 233 (not (= (char-after (1- (match-end 1))) ?\s))
234 (not (string= argument 234 (not (string= argument
235 (buffer-substring (point) (match-end 1)))) 235 (buffer-substring (point) (match-end 1))))
236 (if (or (not executable-query) no-query-flag 236 (if (or (not executable-query) no-query-flag
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index c47f2e34cd2..96bff481e30 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -32,6 +32,18 @@
32 32
33;;; Code: 33;;; Code:
34 34
35;;;; [[ Silence the byte-compiler
36
37(eval-when-compile
38 (defvar flymake-check-start-time)
39 (defvar flymake-check-was-interrupted)
40 (defvar flymake-err-info)
41 (defvar flymake-is-running)
42 (defvar flymake-last-change-time)
43 (defvar flymake-new-err-info))
44
45;;;; ]]
46
35;;;; [[ Xemacs overlay compatibility 47;;;; [[ Xemacs overlay compatibility
36(if (featurep 'xemacs) (progn 48(if (featurep 'xemacs) (progn
37(autoload 'make-overlay "overlay" "Overlay compatibility kit." t) 49(autoload 'make-overlay "overlay" "Overlay compatibility kit." t)
@@ -53,9 +65,10 @@
53(defalias 'flymake-float-time 65(defalias 'flymake-float-time
54 (if (fboundp 'float-time) 66 (if (fboundp 'float-time)
55 'float-time 67 'float-time
56 (lambda () 68 (with-no-warnings
57 (multiple-value-bind (s0 s1 s2) (current-time) 69 (lambda ()
58 (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))))) 70 (multiple-value-bind (s0 s1 s2) (current-time)
71 (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))))))
59 72
60(defsubst flymake-replace-regexp-in-string (regexp rep str) 73(defsubst flymake-replace-regexp-in-string (regexp rep str)
61 (if (fboundp 'replace-regexp-in-string) 74 (if (fboundp 'replace-regexp-in-string)
@@ -390,7 +403,7 @@ Return t if so, nil if not."
390 403
391(defun flymake-find-possible-master-files (file-name master-file-dirs masks) 404(defun flymake-find-possible-master-files (file-name master-file-dirs masks)
392 "Find (by name and location) all possible master files. 405 "Find (by name and location) all possible master files.
393Master files are .cpp and .c for and .h. Files are searched for 406Master files are .cpp and .c for and .h. Files are searched for
394starting from the .h directory and max max-level parent dirs. 407starting from the .h directory and max max-level parent dirs.
395File contents are not checked." 408File contents are not checked."
396 (let* ((dirs master-file-dirs) 409 (let* ((dirs master-file-dirs)
@@ -423,9 +436,9 @@ File contents are not checked."
423 files)) 436 files))
424 437
425(defun flymake-master-file-compare (file-one file-two) 438(defun flymake-master-file-compare (file-one file-two)
426 "Compare two files speccified by FILE-ONE and FILE-TWO. 439 "Compare two files specified by FILE-ONE and FILE-TWO.
427This function is used in sort to move most possible file names 440This function is used in sort to move most possible file names
428to the beginning of the list (File.h -> File.cpp moved to top." 441to the beginning of the list (File.h -> File.cpp moved to top)."
429 (and (equal (file-name-sans-extension flymake-included-file-name) 442 (and (equal (file-name-sans-extension flymake-included-file-name)
430 (file-name-sans-extension (file-name-nondirectory file-one))) 443 (file-name-sans-extension (file-name-nondirectory file-one)))
431 (not (equal file-one file-two)))) 444 (not (equal file-one file-two))))
@@ -750,7 +763,7 @@ It's flymake process filter."
750 763
751(defun flymake-get-line-err-count (line-err-info-list type) 764(defun flymake-get-line-err-count (line-err-info-list type)
752 "Return number of errors of specified TYPE. 765 "Return number of errors of specified TYPE.
753Value of TYPE is eigher e or w." 766Value of TYPE is either \"e\" or \"w\"."
754 (let* ((idx 0) 767 (let* ((idx 0)
755 (count (length line-err-info-list)) 768 (count (length line-err-info-list))
756 (err-count 0)) 769 (err-count 0))
@@ -859,7 +872,7 @@ Return t if it has at least one flymake overlay, nil if no overlay."
859 872
860(defun flymake-highlight-line (line-no line-err-info-list) 873(defun flymake-highlight-line (line-no line-err-info-list)
861 "Highlight line LINE-NO in current buffer. 874 "Highlight line LINE-NO in current buffer.
862Perhaps use text from LINE-ERR-INFO-ILST to enhance highlighting." 875Perhaps use text from LINE-ERR-INFO-LIST to enhance highlighting."
863 (goto-line line-no) 876 (goto-line line-no)
864 (let* ((line-beg (flymake-line-beginning-position)) 877 (let* ((line-beg (flymake-line-beginning-position))
865 (line-end (flymake-line-end-position)) 878 (line-end (flymake-line-end-position))
@@ -995,8 +1008,8 @@ from compile.el")
995;;) 1008;;)
996 1009
997(defun flymake-parse-line (line) 1010(defun flymake-parse-line (line)
998 "Parse LINE to see if it is an error of warning. 1011 "Parse LINE to see if it is an error or warning.
999Return its components if so, nil if no." 1012Return its components if so, nil otherwise."
1000 (let ((raw-file-name nil) 1013 (let ((raw-file-name nil)
1001 (line-no 0) 1014 (line-no 0)
1002 (err-type "e") 1015 (err-type "e")
@@ -1110,7 +1123,7 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
1110 inc-dirs))) 1123 inc-dirs)))
1111 1124
1112(defcustom flymake-get-project-include-dirs-function 'flymake-get-project-include-dirs-imp 1125(defcustom flymake-get-project-include-dirs-function 'flymake-get-project-include-dirs-imp
1113 "Function used to get project inc dirs, one paramater: basedir name." 1126 "Function used to get project include dirs, one parameter: basedir name."
1114 :group 'flymake 1127 :group 'flymake
1115 :type 'function) 1128 :type 'function)
1116 1129
@@ -1138,24 +1151,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
1138 (let* ((include-dirs (append '(".") (flymake-get-project-include-dirs base-dir) (flymake-get-system-include-dirs)))) 1151 (let* ((include-dirs (append '(".") (flymake-get-project-include-dirs base-dir) (flymake-get-system-include-dirs))))
1139 include-dirs)) 1152 include-dirs))
1140 1153
1141(defun flymake-find-file (rel-file-name include-dirs)
1142 "Iterate through include-dirs to find file REL-FILE-NAME.
1143Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if not."
1144 (let* ((count (length include-dirs))
1145 (idx 0)
1146 (found nil)
1147 (full-file-name rel-file-name))
1148
1149 (while (and (not found) (< idx count))
1150 (let* ((dir (nth idx include-dirs)))
1151 (setq full-file-name (concat dir "/" rel-file-name))
1152 (when (file-exists-p full-file-name)
1153 (setq found t)))
1154 (setq idx (1+ idx)))
1155 (if found
1156 full-file-name
1157 rel-file-name)))
1158
1159(defun flymake-restore-formatting (source-buffer) 1154(defun flymake-restore-formatting (source-buffer)
1160 "Remove any formatting made by flymake." 1155 "Remove any formatting made by flymake."
1161 ) 1156 )
@@ -1366,7 +1361,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1366 (flymake-log 1 "no errors for line %d" line-no)))) 1361 (flymake-log 1 "no errors for line %d" line-no))))
1367 1362
1368(defun flymake-make-err-menu-data (line-no line-err-info-list) 1363(defun flymake-make-err-menu-data (line-no line-err-info-list)
1369 "Make a (menu-title (item-title item-action)*) list with errors/warnings from line-err-info." 1364 "Make a (menu-title (item-title item-action)*) list with errors/warnings from LINE-ERR-INFO-LIST."
1370 (let* ((menu-items nil)) 1365 (let* ((menu-items nil))
1371 (when line-err-info-list 1366 (when line-err-info-list
1372 (let* ((count (length line-err-info-list)) 1367 (let* ((count (length line-err-info-list))
@@ -1431,7 +1426,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1431 (message-box warning)) 1426 (message-box warning))
1432 1427
1433(defcustom flymake-gui-warnings-enabled t 1428(defcustom flymake-gui-warnings-enabled t
1434 "Enables/disables gui warnings." 1429 "Enables/disables GUI warnings."
1435 :group 'flymake 1430 :group 'flymake
1436 :type 'boolean) 1431 :type 'boolean)
1437 1432
@@ -1445,61 +1440,62 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1445 (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s" 1440 (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s"
1446 (buffer-name buffer) status warning))) 1441 (buffer-name buffer) status warning)))
1447 1442
1443(defcustom flymake-start-syntax-check-on-find-file t
1444 "Start syntax check on find file."
1445 :group 'flymake
1446 :type 'boolean)
1447
1448;;;###autoload 1448;;;###autoload
1449(define-minor-mode flymake-mode 1449(define-minor-mode flymake-mode
1450 "Minor mode to do on-the-fly syntax checking. 1450 "Minor mode to do on-the-fly syntax checking.
1451When called interactively, toggles the minor mode. 1451When called interactively, toggles the minor mode.
1452With arg, turn Flymake mode on if and only if arg is positive." 1452With arg, turn Flymake mode on if and only if arg is positive."
1453 :group 'flymake :lighter flymake-mode-line 1453 :group 'flymake :lighter flymake-mode-line
1454 (if flymake-mode 1454 (cond
1455 (if (flymake-can-syntax-check-file (buffer-file-name)) 1455
1456 (flymake-mode-on) 1456 ;; Turning the mode ON.
1457 (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name))) 1457 (flymake-mode
1458 (flymake-mode-off))) 1458 (if (not (flymake-can-syntax-check-file buffer-file-name))
1459 (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name))
1460 (add-hook 'after-change-functions 'flymake-after-change-function nil t)
1461 (add-hook 'after-save-hook 'flymake-after-save-hook nil t)
1462 (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t)
1463 ;;+(add-hook 'find-file-hook 'flymake-find-file-hook)
1464
1465 (flymake-report-status (current-buffer) "" "")
1466
1467 (setq flymake-timer
1468 (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
1469
1470 (when flymake-start-syntax-check-on-find-file
1471 (flymake-start-syntax-check-for-current-buffer))))
1472
1473 ;; Turning the mode OFF.
1474 (t
1475 (remove-hook 'after-change-functions 'flymake-after-change-function t)
1476 (remove-hook 'after-save-hook 'flymake-after-save-hook t)
1477 (remove-hook 'kill-buffer-hook 'flymake-kill-buffer-hook t)
1478 ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t)
1459 1479
1460(defcustom flymake-start-syntax-check-on-find-file t 1480 (flymake-delete-own-overlays (current-buffer))
1461 "Start syntax check on find file." 1481
1462 :group 'flymake 1482 (when flymake-timer
1463 :type 'boolean) 1483 (cancel-timer flymake-timer)
1484 (setq flymake-timer nil))
1485
1486 (setq flymake-is-running nil))))
1464 1487
1465;;;###autoload 1488;;;###autoload
1466(defun flymake-mode-on () 1489(defun flymake-mode-on ()
1467 "Turn flymake mode on." 1490 "Turn flymake mode on."
1468 (when (not flymake-mode) 1491 (flymake-mode 1)
1469 (make-local-variable 'after-change-functions) 1492 (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name)))
1470 (setq after-change-functions (cons 'flymake-after-change-function after-change-functions))
1471 (add-hook 'after-save-hook 'flymake-after-save-hook)
1472 (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook)
1473 ;;+(add-hook 'find-file-hook 'flymake-find-file-hook)
1474
1475 (flymake-report-status (current-buffer) "" "")
1476
1477 (setq flymake-timer
1478 (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
1479
1480 (setq flymake-mode t)
1481 (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name (current-buffer)))
1482 (when flymake-start-syntax-check-on-find-file
1483 (flymake-start-syntax-check-for-current-buffer)))) ; will be started by on-load hook
1484 1493
1485;;;###autoload 1494;;;###autoload
1486(defun flymake-mode-off () 1495(defun flymake-mode-off ()
1487 "Turn flymake mode off." 1496 "Turn flymake mode off."
1488 (when flymake-mode 1497 (flymake-mode 0)
1489 (setq after-change-functions (delq 'flymake-after-change-function after-change-functions)) 1498 (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name)))
1490 (remove-hook 'after-save-hook (function flymake-after-save-hook) t)
1491 (remove-hook 'kill-buffer-hook (function flymake-kill-buffer-hook) t)
1492 ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t)
1493
1494 (flymake-delete-own-overlays (current-buffer))
1495
1496 (when flymake-timer
1497 (cancel-timer flymake-timer)
1498 (setq flymake-timer nil))
1499
1500 (setq flymake-is-running nil)
1501 (setq flymake-mode nil)
1502 (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name (current-buffer)))))
1503 1499
1504(defcustom flymake-start-syntax-check-on-newline t 1500(defcustom flymake-start-syntax-check-on-newline t
1505 "Start syntax check if newline char was added/removed from the buffer." 1501 "Start syntax check if newline char was added/removed from the buffer."
@@ -1532,7 +1528,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
1532 ;;+ (flymake-start-syntax-check-for-current-buffer) 1528 ;;+ (flymake-start-syntax-check-for-current-buffer)
1533 ;;+) 1529 ;;+)
1534 (when (and (not (local-variable-p 'flymake-mode (current-buffer))) 1530 (when (and (not (local-variable-p 'flymake-mode (current-buffer)))
1535 (flymake-can-syntax-check-file (buffer-file-name (current-buffer)))) 1531 (flymake-can-syntax-check-file buffer-file-name))
1536 (flymake-mode) 1532 (flymake-mode)
1537 (flymake-log 3 "automatically turned ON flymake mode"))) 1533 (flymake-log 3 "automatically turned ON flymake mode")))
1538 1534
@@ -1557,7 +1553,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
1557 (flymake-er-get-line (nth idx err-info-list)))))) 1553 (flymake-er-get-line (nth idx err-info-list))))))
1558 1554
1559(defun flymake-get-prev-err-line-no (err-info-list line-no) 1555(defun flymake-get-prev-err-line-no (err-info-list line-no)
1560 "Return prev line with error." 1556 "Return previous line with error."
1561 (when err-info-list 1557 (when err-info-list
1562 (let* ((count (length err-info-list))) 1558 (let* ((count (length err-info-list)))
1563 (while (and (> count 0) (<= line-no (flymake-er-get-line (nth (1- count) err-info-list)))) 1559 (while (and (> count 0) (<= line-no (flymake-er-get-line (nth (1- count) err-info-list))))
@@ -1587,7 +1583,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
1587 (flymake-log 1 "no errors in current buffer")))) 1583 (flymake-log 1 "no errors in current buffer"))))
1588 1584
1589(defun flymake-goto-prev-error () 1585(defun flymake-goto-prev-error ()
1590 "Go to prev error in err ring." 1586 "Go to previous error in err ring."
1591 (interactive) 1587 (interactive)
1592 (let ((line-no (flymake-get-prev-err-line-no flymake-err-info (flymake-current-line-no)))) 1588 (let ((line-no (flymake-get-prev-err-line-no flymake-err-info (flymake-current-line-no))))
1593 (when (not line-no) 1589 (when (not line-no)
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 471d3b308ec..fd8bfeb5d72 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -4,7 +4,7 @@
4;; Maintainer: FSF 4;; Maintainer: FSF
5;; Keywords: unix, tools 5;; Keywords: unix, tools
6 6
7;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04 Free Software Foundation, Inc. 7;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04,05 Free Software Foundation, Inc.
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
@@ -2534,7 +2534,7 @@ It is saved for when this flag is not set.")
2534 ;; This must be outside of the save-excursion 2534 ;; This must be outside of the save-excursion
2535 ;; in case the source file is our current buffer. 2535 ;; in case the source file is our current buffer.
2536 (if process-window 2536 (if process-window
2537 (with-selected-window 2537 (with-selected-window process-window
2538 (gud-display-frame)) 2538 (gud-display-frame))
2539 ;; We have to be in the proper buffer, (process-buffer proc), 2539 ;; We have to be in the proper buffer, (process-buffer proc),
2540 ;; but not in a save-excursion, because that would restore point. 2540 ;; but not in a save-excursion, because that would restore point.
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
new file mode 100644
index 00000000000..39f40d887f6
--- /dev/null
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -0,0 +1,243 @@
1;;; idlw-complete-structtag.el --- Completion of structure tags.
2;; Copyright (c) 2001,2002 Free Software Foundation
3
4;; Author: Carsten Dominik <dominik@science.uva.nl>
5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 1.2
7;; Keywords: languages
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation; either version 2, or (at your option)
14;; any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs; see the file COPYING. If not, write to the
23;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24;; Boston, MA 02111-1307, USA.
25
26;;; Commentary:
27
28;; Completion of structure tags can be done automatically in the
29;; shell, since the list of tags can be determined dynamically through
30;; interaction with IDL.
31
32;; Completion of structure tags in a source buffer is highly ambiguous
33;; since you never know what kind of structure a variable will hold at
34;; runtime. To make this feature useful in source buffers, we need a
35;; special assumption/convention. We will assume that the structure is
36;; defined in the same buffer and directly assigned to the correct
37;; variable. This is mainly useful for applications in which there is one
38;; main structure which contains a large amount of information (and many
39;; tags). For example, many widget applications define a "state" structure
40;; that contains all important data about the application. The different
41;; routines called by the event handler then use this structure. If you
42;; use the same variable name for this structure throughout your
43;; application (a good idea for many reasons), IDLWAVE can support
44;; completion for its tags.
45;;
46;; This file is a completion plugin which implements this kind of
47;; completion. It is also an example which shows how completion plugins
48;; should be programmed.
49;;
50;; New versions of IDLWAVE, documentation, and more information available
51;; from:
52;; http://idlwave.org
53;;
54;; INSTALLATION
55;; ============
56;; Put this file on the emacs load path and load it with the following
57;; line in your .emacs file:
58;;
59;; (add-hook 'idlwave-load-hook
60;; (lambda () (require 'idlw-complete-structtag)))
61;;
62;; DESCRIPTION
63;; ===========
64;; Suppose your IDL program contains something like
65;;
66;; myvar = state.a*
67;;
68;; where the star marks the cursor position. If you now press the
69;; completion key M-TAB, IDLWAVE searches the current file for a
70;; structure definition
71;;
72;; state = {tag1:val1, tag2:val2, ...}
73;;
74;; and offers the tags for completion.
75;;
76;; In the idlwave shell, idlwave sends a "print,tag_names()" for the
77;; variable to idl and determines the current tag list dynamically.
78;;
79;; Notes
80;; -----
81;; - The structure definition assignment "state = {...}" must use the
82;; same variable name as the the completion location "state.*".
83;; - The structure definition must be in the same file.
84;; - The structure definition is searched backwards and then forward
85;; from the current position, until a definition with tags is found.
86;; - The file is parsed again for each new completion variable and location.
87;; - You can force an update of the tag list with the usual command
88;; to update routine info in IDLWAVE: C-c C-i
89
90
91;; Some variables to identify the previously used structure
92(defvar idlwave-current-tags-var nil)
93(defvar idlwave-current-tags-buffer nil)
94(defvar idlwave-current-tags-completion-pos nil)
95
96;; The tag list used for completion will be stored in the following vars
97(defvar idlwave-current-struct-tags nil)
98(defvar idlwave-sint-structtags nil)
99
100;; Create the sintern type for structure talks
101(idlwave-new-sintern-type 'structtag)
102
103;; Hook the plugin into idlwave
104(add-to-list 'idlwave-complete-special 'idlwave-complete-structure-tag)
105(add-hook 'idlwave-update-rinfo-hook 'idlwave-structtag-reset)
106
107;;; The main code follows below
108
109(defun idlwave-complete-structure-tag ()
110 "Complete a structure tag.
111This works by looking in the current file for a structure assignment to a
112variable with the same name and takes the tags from there. Quite useful
113for big structures like the state variables of a widget application.
114
115In the idlwave shell, the current content of the variable is used to get
116an up-to-date completion list."
117 (interactive)
118 (let ((pos (point))
119 start
120 (case-fold-search t))
121 (if (save-excursion
122 ;; Check if the context is right.
123 ;; In the shell, this could be extended to expressions like
124 ;; x[i+4].name.g*. But it is complicated because we would have
125 ;; to really parse this expression. For now, we allow only
126 ;; substructures, like "aaa.bbb.ccc.ddd"
127 (skip-chars-backward "[a-zA-Z0-9._$]")
128 (setq start (point)) ;; remember the start of the completion pos.
129 (and (< (point) pos)
130 (not (equal (char-before) ?!)) ; no sysvars
131 (looking-at "\\([a-zA-Z][.a-zA-Z0-9_]*\\)\\.")
132 (>= pos (match-end 0))
133 (not (string= (downcase (match-string 1)) "self"))))
134 (let* ((var (downcase (match-string 1))))
135 ;; Check if we need to update the "current" structure. Basically we
136 ;; do it always, except for subsequent completions at the same
137 ;; spot, to save a bit of time. Implementation: We require
138 ;; an update if
139 ;; - the variable is different or
140 ;; - the buffer is different or
141 ;; - we are completing at a different position
142 (if (or (not (string= var (or idlwave-current-tags-var "@")))
143 (not (eq (current-buffer) idlwave-current-tags-buffer))
144 (not (equal start idlwave-current-tags-completion-pos)))
145 (idlwave-prepare-structure-tag-completion var))
146 (setq idlwave-current-tags-completion-pos start)
147 (setq idlwave-completion-help-info
148 (list 'idlwave-complete-structure-tag-help))
149 (idlwave-complete-in-buffer 'structtag 'structtag
150 idlwave-current-struct-tags nil
151 "Select a structure tag" "structure tag")
152 t) ; we did the completion: return t to skip other completions
153 nil))) ; return nil to allow looking for other ways to complete
154
155(defun idlwave-structtag-reset ()
156 "Force an update of the current structure tag list upon next use."
157 (setq idlwave-current-tags-buffer nil))
158
159(defvar idlwave-structtag-struct-location nil
160 "The location of the structure definition, for help display.")
161
162(defun idlwave-prepare-structure-tag-completion (var)
163 "Find and parse the tag list for structure tag completion."
164 ;; This works differently in source buffers and in the shell
165 (if (eq major-mode 'idlwave-shell-mode)
166 ;; OK, we are in the shell, do it dynamically
167 (progn
168 (message "preparing shell tags")
169 ;; The following call puts the tags into `idlwave-current-struct-tags'
170 (idlwave-complete-structure-tag-query-shell var)
171 ;; initialize
172 (setq idlwave-sint-structtags nil
173 idlwave-current-tags-buffer (current-buffer)
174 idlwave-current-tags-var var
175 idlwave-structtag-struct-location (point)
176 idlwave-current-struct-tags
177 (mapcar (lambda (x)
178 (list (idlwave-sintern-structtag x 'set)))
179 idlwave-current-struct-tags))
180 (if (not idlwave-current-struct-tags)
181 (error "Cannot complete structure tags of variable %s" var)))
182 ;; Not the shell, so probably a source buffer.
183 (unless
184 (catch 'exit
185 (save-excursion
186 (goto-char (point-max))
187 ;; Find possible definitions of the structure.
188 (while (idlwave-find-structure-definition var nil 'all)
189 (let ((tags (idlwave-struct-tags)))
190 (when tags
191 ;; initialize
192 (setq idlwave-sint-structtags nil
193 idlwave-current-tags-buffer (current-buffer)
194 idlwave-current-tags-var var
195 idlwave-structtag-struct-location (point)
196 idlwave-current-struct-tags
197 (mapcar (lambda (x)
198 (list (idlwave-sintern-structtag x 'set)))
199 tags))
200 (throw 'exit t))))))
201 (error "Cannot complete structure tags of variable %s" var))))
202
203(defun idlwave-complete-structure-tag-query-shell (var)
204 "Ask the shell for the tags of the structure in variable or expression VAR."
205 (idlwave-shell-send-command
206 (format "if size(%s,/TYPE) eq 8 then print,tag_names(%s)" var var)
207 'idlwave-complete-structure-tag-get-tags-from-help
208 'hide 'wait))
209
210(defvar idlwave-shell-prompt-pattern)
211(defvar idlwave-shell-command-output)
212(defun idlwave-complete-structure-tag-get-tags-from-help ()
213 "Filter structure tag name output, result to `idlwave-current-struct-tags'."
214 (setq idlwave-current-struct-tags
215 (if (string-match (concat "tag_names(.*) *\n"
216 "\\(\\(.*[\r\n]?\\)*\\)"
217 "\\(" idlwave-shell-prompt-pattern "\\)")
218 idlwave-shell-command-output)
219 (split-string (match-string 1 idlwave-shell-command-output)))))
220
221
222;; Fake help in the source buffer for structure tags.
223;; kwd and name are global-variables here.
224(defvar name)
225(defvar kwd)
226(defvar idlwave-help-do-struct-tag)
227(defun idlwave-complete-structure-tag-help (mode word)
228 (cond
229 ((eq mode 'test)
230 ;; fontify only in source buffers, not in the shell.
231 (not (equal idlwave-current-tags-buffer
232 (get-buffer (idlwave-shell-buffer)))))
233 ((eq mode 'set)
234 (setq kwd word
235 idlwave-help-do-struct-tag idlwave-structtag-struct-location))
236 (t (error "This should not happen"))))
237
238(provide 'idlw-complete-structtag)
239
240;;; idlw-complete-structtag.el ends here
241
242
243;; arch-tag: d1f9e55c-e504-4187-9c31-3c3651fa4bfa
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index ba31e6e0ef8..5ed4c23d592 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -4,9 +4,9 @@
4;; Copyright (c) 2003,2004,2005 Free Software Foundation 4;; Copyright (c) 2003,2004,2005 Free Software Foundation
5;; 5;;
6;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 6;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
7;; Carsten Dominik <dominik@astro.uva.nl> 7;; Carsten Dominik <dominik@science.uva.nl>
8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
9;; Version: 5.5 9;; Version: 5.7_22
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12 12
@@ -36,12 +36,18 @@
36;; information, at: 36;; information, at:
37;; 37;;
38;; http://idlwave.org 38;; http://idlwave.org
39;; 39;;
40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
41 41
42 42
43;;; Code: 43;;; Code:
44(require 'browse-url) 44(defvar idlwave-help-browse-url-available nil
45 "Whether browse-url is available")
46
47(setq idlwave-help-browse-url-available
48 (condition-case nil
49 (require 'browse-url)
50 (error nil)))
45 51
46(defgroup idlwave-online-help nil 52(defgroup idlwave-online-help nil
47 "Online Help options for IDLWAVE mode." 53 "Online Help options for IDLWAVE mode."
@@ -52,10 +58,10 @@
52 :group 'idlwave-online-help 58 :group 'idlwave-online-help
53 :type 'boolean) 59 :type 'boolean)
54 60
55(defvar idlwave-html-link-sep 61(defvar idlwave-html-link-sep
56 (if idlwave-html-help-pre-v6 "#" "#wp")) 62 (if idlwave-html-help-pre-v6 "#" "#wp"))
57 63
58(defcustom idlwave-html-help-location 64(defcustom idlwave-html-help-location
59 (if (memq system-type '(ms-dos windows-nt)) 65 (if (memq system-type '(ms-dos windows-nt))
60 nil 66 nil
61 "/usr/local/etc/") 67 "/usr/local/etc/")
@@ -83,7 +89,7 @@ Defaults to `browse-url-browser-function', which see."
83 :group 'idlwave-online-help 89 :group 'idlwave-online-help
84 :type 'string) 90 :type 'string)
85 91
86(defcustom idlwave-help-browser-generic-args 92(defcustom idlwave-help-browser-generic-args
87 (if (boundp 'browse-url-generic-args) 93 (if (boundp 'browse-url-generic-args)
88 browse-url-generic-args "") 94 browse-url-generic-args "")
89 "Program args to use if using browse-url-generic-program." 95 "Program args to use if using browse-url-generic-program."
@@ -183,8 +189,7 @@ support."
183 :type 'string) 189 :type 'string)
184 190
185(defface idlwave-help-link 191(defface idlwave-help-link
186 '((((min-colors 88) (class color)) (:foreground "Blue1")) 192 '((((class color)) (:foreground "Blue"))
187 (((class color)) (:foreground "Blue"))
188 (t (:weight bold))) 193 (t (:weight bold)))
189 "Face for highlighting links into IDLWAVE online help." 194 "Face for highlighting links into IDLWAVE online help."
190 :group 'idlwave-online-help) 195 :group 'idlwave-online-help)
@@ -193,7 +198,7 @@ support."
193 198
194(defvar idlwave-help-activate-links-aggressively nil 199(defvar idlwave-help-activate-links-aggressively nil
195 "Obsolete variable.") 200 "Obsolete variable.")
196 201
197(defvar idlwave-completion-help-info) 202(defvar idlwave-completion-help-info)
198 203
199(defvar idlwave-help-frame nil 204(defvar idlwave-help-frame nil
@@ -242,6 +247,10 @@ support."
242 "--" 247 "--"
243 ["Quit" idlwave-help-quit t])) 248 ["Quit" idlwave-help-quit t]))
244 249
250(defvar idlwave-help-def-pos)
251(defvar idlwave-help-args)
252(defvar idlwave-help-in-header)
253
245(defun idlwave-help-mode () 254(defun idlwave-help-mode ()
246 "Major mode for displaying IDL Help. 255 "Major mode for displaying IDL Help.
247 256
@@ -282,6 +291,7 @@ Here are all keybindings.
282 (set (make-local-variable 'idlwave-help-in-header) nil) 291 (set (make-local-variable 'idlwave-help-in-header) nil)
283 (run-mode-hooks 'idlwave-help-mode-hook)) 292 (run-mode-hooks 'idlwave-help-mode-hook))
284 293
294(defvar idlwave-system-directory)
285(defun idlwave-html-help-location () 295(defun idlwave-html-help-location ()
286 "Return the help directory where HTML files are, or nil if that is unknown." 296 "Return the help directory where HTML files are, or nil if that is unknown."
287 (or (and (stringp idlwave-html-help-location) 297 (or (and (stringp idlwave-html-help-location)
@@ -316,16 +326,20 @@ It collects and prints the diagnostics messages."
316 (setq idlwave-last-context-help-pos marker) 326 (setq idlwave-last-context-help-pos marker)
317 (idlwave-do-context-help1 arg) 327 (idlwave-do-context-help1 arg)
318 (if idlwave-help-diagnostics 328 (if idlwave-help-diagnostics
319 (message "%s" (mapconcat 'identity 329 (message "%s" (mapconcat 'identity
320 (nreverse idlwave-help-diagnostics) 330 (nreverse idlwave-help-diagnostics)
321 "; ")))))) 331 "; "))))))
322 332
323(defvar idlwave-help-do-class-struct-tag nil) 333(defvar idlwave-help-do-class-struct-tag nil)
334(defvar idlwave-structtag-struct-location)
324(defvar idlwave-help-do-struct-tag nil) 335(defvar idlwave-help-do-struct-tag nil)
336(defvar idlwave-system-variables-alist)
337(defvar idlwave-executive-commands-alist)
338(defvar idlwave-system-class-info)
325(defun idlwave-do-context-help1 (&optional arg) 339(defun idlwave-do-context-help1 (&optional arg)
326 "The work-horse version of `idlwave-context-help', which see." 340 "The work-horse version of `idlwave-context-help', which see."
327 (save-excursion 341 (save-excursion
328 (if (equal (char-after) ?/) 342 (if (equal (char-after) ?/)
329 (forward-char 1) 343 (forward-char 1)
330 (if (equal (char-before) ?=) 344 (if (equal (char-before) ?=)
331 (backward-char 1))) 345 (backward-char 1)))
@@ -335,7 +349,7 @@ It collects and prints the diagnostics messages."
335 (beg (save-excursion (skip-chars-backward chars) (point))) 349 (beg (save-excursion (skip-chars-backward chars) (point)))
336 (end (save-excursion (skip-chars-forward chars) (point))) 350 (end (save-excursion (skip-chars-forward chars) (point)))
337 (this-word (buffer-substring-no-properties beg end)) 351 (this-word (buffer-substring-no-properties beg end))
338 (st-ass (assoc (downcase this-word) 352 (st-ass (assoc (downcase this-word)
339 idlwave-help-special-topic-words)) 353 idlwave-help-special-topic-words))
340 (classtag (and (string-match "self\\." this-word) 354 (classtag (and (string-match "self\\." this-word)
341 (< beg (- end 4)))) 355 (< beg (- end 4))))
@@ -343,7 +357,7 @@ It collects and prints the diagnostics messages."
343 (string-match "\\`\\([^.]+\\)\\." this-word) 357 (string-match "\\`\\([^.]+\\)\\." this-word)
344 (< beg (- end 4)))) 358 (< beg (- end 4))))
345 module keyword cw mod1 mod2 mod3) 359 module keyword cw mod1 mod2 mod3)
346 (if (or arg 360 (if (or arg
347 (and (not st-ass) 361 (and (not st-ass)
348 (not classtag) 362 (not classtag)
349 (not structtag) 363 (not structtag)
@@ -362,15 +376,15 @@ It collects and prints the diagnostics messages."
362 (setq module (list "init" 'fun (match-string 1 str)) 376 (setq module (list "init" 'fun (match-string 1 str))
363 idlwave-current-obj_new-class (match-string 1 str)) 377 idlwave-current-obj_new-class (match-string 1 str))
364 ))))) 378 )))))
365 (cond 379 (cond
366 (arg (setq mod1 module)) 380 (arg (setq mod1 module))
367 381
368 ;; A special topic -- only system help 382 ;; A special topic -- only system help
369 (st-ass (setq mod1 (list (cdr st-ass)))) 383 (st-ass (setq mod1 (list (cdr st-ass))))
370 384
371 ;; A system variable -- only system help 385 ;; A system variable -- only system help
372 ((string-match 386 ((string-match
373 "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?" 387 "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
374 this-word) 388 this-word)
375 (let* ((word (match-string-no-properties 1 this-word)) 389 (let* ((word (match-string-no-properties 1 this-word))
376 (entry (assq (idlwave-sintern-sysvar word) 390 (entry (assq (idlwave-sintern-sysvar word)
@@ -382,19 +396,18 @@ It collects and prints the diagnostics messages."
382 (cdr (assq 'tags entry)))))) 396 (cdr (assq 'tags entry))))))
383 (link (nth 1 (assq 'link entry)))) 397 (link (nth 1 (assq 'link entry))))
384 (if tag-target 398 (if tag-target
385 (setq link (idlwave-substitute-link-target link 399 (setq link (idlwave-substitute-link-target link
386 tag-target))) 400 tag-target)))
387 (setq mod1 (list link)))) 401 (setq mod1 (list link))))
388 402
389 ;; An executive command -- only system help 403 ;; An executive command -- only system help
390 ((string-match "^\\.\\([A-Z_]+\\)" this-word) 404 ((string-match "^\\.\\([A-Z_]+\\)" this-word)
391 (let* ((word (match-string 1 this-word)) 405 (let* ((word (match-string 1 this-word))
392 (link (cdr (assoc-string 406 (link (cdr (assoc-string
393 word 407 word
394 idlwave-executive-commands-alist 408 idlwave-executive-commands-alist t))))
395 t))))
396 (setq mod1 (list link)))) 409 (setq mod1 (list link))))
397 410
398 ;; A class -- system OR in-text help (via class__define). 411 ;; A class -- system OR in-text help (via class__define).
399 ((and (eq cw 'class) 412 ((and (eq cw 'class)
400 (or (idlwave-in-quote) ; e.g. obj_new 413 (or (idlwave-in-quote) ; e.g. obj_new
@@ -408,28 +421,28 @@ It collects and prints the diagnostics messages."
408 (name (concat (downcase this-word) "__define")) 421 (name (concat (downcase this-word) "__define"))
409 (link (nth 1 (assq 'link entry)))) 422 (link (nth 1 (assq 'link entry))))
410 (setq mod1 (list link name 'pro)))) 423 (setq mod1 (list link name 'pro))))
411 424
412 ;; A class structure tag (self.BLAH) -- only in-text help available 425 ;; A class structure tag (self.BLAH) -- only in-text help available
413 (classtag 426 (classtag
414 (let ((tag (substring this-word (match-end 0))) 427 (let ((tag (substring this-word (match-end 0)))
415 class-with found-in) 428 class-with found-in)
416 (when (setq class-with 429 (when (setq class-with
417 (idlwave-class-or-superclass-with-tag 430 (idlwave-class-or-superclass-with-tag
418 (nth 2 (idlwave-current-routine)) 431 (nth 2 (idlwave-current-routine))
419 tag)) 432 tag))
420 (setq found-in (idlwave-class-found-in class-with)) 433 (setq found-in (idlwave-class-found-in class-with))
421 (if (assq (idlwave-sintern-class class-with) 434 (if (assq (idlwave-sintern-class class-with)
422 idlwave-system-class-info) 435 idlwave-system-class-info)
423 (error "No help available for system class tags")) 436 (error "No help available for system class tags"))
424 (setq idlwave-help-do-class-struct-tag t) 437 (setq idlwave-help-do-class-struct-tag t)
425 (setq mod1 (list nil 438 (setq mod1 (list nil
426 (if found-in 439 (if found-in
427 (cons (concat found-in "__define") class-with) 440 (cons (concat found-in "__define") class-with)
428 (concat class-with "__define")) 441 (concat class-with "__define"))
429 'pro 442 'pro
430 nil ; no class.... it's a procedure! 443 nil ; no class.... it's a procedure!
431 tag))))) 444 tag)))))
432 445
433 ;; A regular structure tag -- only in text, and if 446 ;; A regular structure tag -- only in text, and if
434 ;; optional `complete-structtag' loaded. 447 ;; optional `complete-structtag' loaded.
435 (structtag 448 (structtag
@@ -440,7 +453,7 @@ It collects and prints the diagnostics messages."
440 (setq idlwave-help-do-struct-tag 453 (setq idlwave-help-do-struct-tag
441 idlwave-structtag-struct-location 454 idlwave-structtag-struct-location
442 mod1 (list nil nil nil nil tag)))) 455 mod1 (list nil nil nil nil tag))))
443 456
444 ;; A routine keyword -- in text or system help 457 ;; A routine keyword -- in text or system help
445 ((and (memq cw '(function-keyword procedure-keyword)) 458 ((and (memq cw '(function-keyword procedure-keyword))
446 (stringp this-word) 459 (stringp this-word)
@@ -482,7 +495,7 @@ It collects and prints the diagnostics messages."
482 (setq mod1 (append (list t) module (list keyword)) 495 (setq mod1 (append (list t) module (list keyword))
483 mod2 (list t this-word 'fun nil) 496 mod2 (list t this-word 'fun nil)
484 mod3 (append (list t) module))))) 497 mod3 (append (list t) module)))))
485 498
486 ;; Everything else 499 ;; Everything else
487 (t 500 (t
488 (setq mod1 (append (list t) module)))) 501 (setq mod1 (append (list t) module))))
@@ -515,14 +528,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
515 word link) 528 word link)
516 (mouse-set-point ev) 529 (mouse-set-point ev)
517 530
518 531
519 ;; See if we can also find help somewhere, e.g. for multiple classes 532 ;; See if we can also find help somewhere, e.g. for multiple classes
520 (setq word (idlwave-this-word)) 533 (setq word (idlwave-this-word))
521 (if (string= word "") 534 (if (string= word "")
522 (error "No help item selected")) 535 (error "No help item selected"))
523 (setq link (get-text-property 0 'link word)) 536 (setq link (get-text-property 0 'link word))
524 (select-window cw) 537 (select-window cw)
525 (cond 538 (cond
526 ;; Routine name 539 ;; Routine name
527 ((memq what '(procedure function routine)) 540 ((memq what '(procedure function routine))
528 (setq name word) 541 (setq name word)
@@ -533,9 +546,9 @@ Needs additional info stored in global `idlwave-completion-help-info'."
533 type))) 546 type)))
534 (setq link t) ; No specific link valid yet 547 (setq link t) ; No specific link valid yet
535 (if sclasses 548 (if sclasses
536 (setq classes (idlwave-members-only 549 (setq classes (idlwave-members-only
537 classes (cons class sclasses)))) 550 classes (cons class sclasses))))
538 (setq class (idlwave-popup-select ev classes 551 (setq class (idlwave-popup-select ev classes
539 "Select Class" 'sort)))) 552 "Select Class" 'sort))))
540 553
541 ;; XXX is this necessary, given all-method-classes? 554 ;; XXX is this necessary, given all-method-classes?
@@ -555,7 +568,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
555 type))) 568 type)))
556 (setq link t) ; Link can't be correct yet 569 (setq link t) ; Link can't be correct yet
557 (if sclasses 570 (if sclasses
558 (setq classes (idlwave-members-only 571 (setq classes (idlwave-members-only
559 classes (cons class sclasses)))) 572 classes (cons class sclasses))))
560 (setq class (idlwave-popup-select ev classes 573 (setq class (idlwave-popup-select ev classes
561 "Select Class" 'sort)) 574 "Select Class" 'sort))
@@ -567,14 +580,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
567 (if (string= (downcase name) "obj_new") 580 (if (string= (downcase name) "obj_new")
568 (setq class idlwave-current-obj_new-class 581 (setq class idlwave-current-obj_new-class
569 name "Init")))) 582 name "Init"))))
570 583
571 ;; Class name 584 ;; Class name
572 ((eq what 'class) 585 ((eq what 'class)
573 (setq class word 586 (setq class word
574 word nil)) 587 word nil))
575 588
576 ;; A special named function to call which sets some of our variables 589 ;; A special named function to call which sets some of our variables
577 ((and (symbolp what) 590 ((and (symbolp what)
578 (fboundp what)) 591 (fboundp what))
579 (funcall what 'set word)) 592 (funcall what 'set word))
580 593
@@ -589,7 +602,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
589 "Highlight all completions for which help is available and attach link. 602 "Highlight all completions for which help is available and attach link.
590Those words in `idlwave-completion-help-links' have links. The 603Those words in `idlwave-completion-help-links' have links. The
591`idlwave-help-link' face is used for this." 604`idlwave-help-link' face is used for this."
592 (if idlwave-highlight-help-links-in-completion 605 (if idlwave-highlight-help-links-in-completion
593 (with-current-buffer (get-buffer "*Completions*") 606 (with-current-buffer (get-buffer "*Completions*")
594 (save-excursion 607 (save-excursion
595 (let* ((case-fold-search t) 608 (let* ((case-fold-search t)
@@ -605,7 +618,7 @@ Those words in `idlwave-completion-help-links' have links. The
605 (setq beg (match-beginning 1) end (match-end 1) 618 (setq beg (match-beginning 1) end (match-end 1)
606 word (match-string 1) doit nil) 619 word (match-string 1) doit nil)
607 ;; Call special completion function test 620 ;; Call special completion function test
608 (if (and (symbolp what) 621 (if (and (symbolp what)
609 (fboundp what)) 622 (fboundp what))
610 (setq doit (funcall what 'test word)) 623 (setq doit (funcall what 'test word))
611 ;; Look for special link property passed in help-links 624 ;; Look for special link property passed in help-links
@@ -636,13 +649,13 @@ Those words in `idlwave-completion-help-links' have links. The
636 ;; Try to select the return frame. 649 ;; Try to select the return frame.
637 ;; This can crash on slow network connections, obviously when 650 ;; This can crash on slow network connections, obviously when
638 ;; we kill the help frame before the return-frame is selected. 651 ;; we kill the help frame before the return-frame is selected.
639 ;; To protect the workings, we wait for up to one second 652 ;; To protect the workings, we wait for up to one second
640 ;; and check if the return-frame *is* now selected. 653 ;; and check if the return-frame *is* now selected.
641 ;; This is marked "eperimental" since we are not sure when its OK. 654 ;; This is marked "eperimental" since we are not sure when its OK.
642 (let ((maxtime 1.0) (time 0.) (step 0.1)) 655 (let ((maxtime 1.0) (time 0.) (step 0.1))
643 (select-frame idlwave-help-return-frame) 656 (select-frame idlwave-help-return-frame)
644 (while (and (sit-for step) 657 (while (and (sit-for step)
645 (not (eq (selected-frame) 658 (not (eq (selected-frame)
646 idlwave-help-return-frame)) 659 idlwave-help-return-frame))
647 (< (setq time (+ time step)) maxtime))))) 660 (< (setq time (+ time step)) maxtime)))))
648 (delete-frame idlwave-help-frame)) 661 (delete-frame idlwave-help-frame))
@@ -655,7 +668,7 @@ Those words in `idlwave-completion-help-links' have links. The
655(defvar default-toolbar-visible-p) 668(defvar default-toolbar-visible-p)
656 669
657(defun idlwave-help-display-help-window (&optional pos-or-func) 670(defun idlwave-help-display-help-window (&optional pos-or-func)
658 "Display the help window. 671 "Display the help window.
659Move window start to POS-OR-FUNC, if passed as a position, or call it 672Move window start to POS-OR-FUNC, if passed as a position, or call it
660if passed as a function. See `idlwave-help-use-dedicated-frame'." 673if passed as a function. See `idlwave-help-use-dedicated-frame'."
661 (let ((cw (selected-window)) 674 (let ((cw (selected-window))
@@ -666,13 +679,13 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
666 (switch-to-buffer buf)) 679 (switch-to-buffer buf))
667 ;; Do it in this frame and save the window configuration 680 ;; Do it in this frame and save the window configuration
668 (if (not (get-buffer-window buf nil)) 681 (if (not (get-buffer-window buf nil))
669 (setq idlwave-help-window-configuration 682 (setq idlwave-help-window-configuration
670 (current-window-configuration))) 683 (current-window-configuration)))
671 (display-buffer buf nil (selected-frame)) 684 (display-buffer buf nil (selected-frame))
672 (select-window (get-buffer-window buf))) 685 (select-window (get-buffer-window buf)))
673 (raise-frame) 686 (raise-frame)
674 (if pos-or-func 687 (if pos-or-func
675 (if (functionp pos-or-func) 688 (if (functionp pos-or-func)
676 (funcall pos-or-func) 689 (funcall pos-or-func)
677 (goto-char pos-or-func) 690 (goto-char pos-or-func)
678 (recenter 0))) 691 (recenter 0)))
@@ -694,31 +707,31 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
694 (select-frame idlwave-help-return-frame))) 707 (select-frame idlwave-help-return-frame)))
695 708
696(defun idlwave-online-help (link &optional name type class keyword) 709(defun idlwave-online-help (link &optional name type class keyword)
697 "Display HTML or other special help on a certain topic. 710 "Display HTML or other special help on a certain topic.
698Either loads an HTML link, if LINK is non-nil, or gets special-help on 711Either loads an HTML link, if LINK is non-nil, or gets special-help on
699the optional arguments, if any special help is defined. If LINK is 712the optional arguments, if any special help is defined. If LINK is
700`t', first look up the optional arguments in the routine info list to 713`t', first look up the optional arguments in the routine info list to
701see if a link is set for it. Try extra help functions if necessary." 714see if a link is set for it. Try extra help functions if necessary."
702 ;; Lookup link 715 ;; Lookup link
703 (if (eq link t) 716 (if (eq link t)
704 (let ((entry (idlwave-best-rinfo-assoc name type class 717 (let ((entry (idlwave-best-rinfo-assoc name type class
705 (idlwave-routines) nil t))) 718 (idlwave-routines) nil t)))
706 (cond 719 (cond
707 ;; Try keyword link 720 ;; Try keyword link
708 ((and keyword 721 ((and keyword
709 (setq link (cdr (idlwave-entry-find-keyword entry keyword))))) 722 (setq link (cdr (idlwave-entry-find-keyword entry keyword)))))
710 ;; Default, regular entry link 723 ;; Default, regular entry link
711 (t (setq link (idlwave-entry-has-help entry)))))) 724 (t (setq link (idlwave-entry-has-help entry))))))
712 725
713 (cond 726 (cond
714 ;; An explicit link 727 ;; An explicit link
715 ((stringp link) 728 ((stringp link)
716 (idlwave-help-html-link link)) 729 (idlwave-help-html-link link))
717 730
718 ;; Any extra help 731 ;; Any extra help
719 (idlwave-extra-help-function 732 (idlwave-extra-help-function
720 (idlwave-help-get-special-help name type class keyword)) 733 (idlwave-help-get-special-help name type class keyword))
721 734
722 ;; Nothing worked 735 ;; Nothing worked
723 (t (idlwave-help-error name type class keyword)))) 736 (t (idlwave-help-error name type class keyword))))
724 737
@@ -729,7 +742,7 @@ see if a link is set for it. Try extra help functions if necessary."
729 (help-pos (save-excursion 742 (help-pos (save-excursion
730 (set-buffer (idlwave-help-get-help-buffer)) 743 (set-buffer (idlwave-help-get-help-buffer))
731 (let ((buffer-read-only nil)) 744 (let ((buffer-read-only nil))
732 (funcall idlwave-extra-help-function 745 (funcall idlwave-extra-help-function
733 name type class keyword))))) 746 name type class keyword)))))
734 (if help-pos 747 (if help-pos
735 (idlwave-help-display-help-window help-pos) 748 (idlwave-help-display-help-window help-pos)
@@ -743,6 +756,9 @@ see if a link is set for it. Try extra help functions if necessary."
743 (browse-url-generic-program idlwave-help-browser-generic-program) 756 (browse-url-generic-program idlwave-help-browser-generic-program)
744 ;(browse-url-generic-args idlwave-help-browser-generic-args) 757 ;(browse-url-generic-args idlwave-help-browser-generic-args)
745 full-link) 758 full-link)
759
760 (unless idlwave-help-browse-url-available
761 (error "browse-url is not available -- install it to use HTML help."))
746 762
747 (if (and (memq system-type '(ms-dos windows-nt)) 763 (if (and (memq system-type '(ms-dos windows-nt))
748 idlwave-help-use-hh) 764 idlwave-help-use-hh)
@@ -758,12 +774,12 @@ see if a link is set for it. Try extra help functions if necessary."
758 ;; Just a regular file name (+ anchor name) 774 ;; Just a regular file name (+ anchor name)
759 (unless (and (stringp help-loc) 775 (unless (and (stringp help-loc)
760 (file-directory-p help-loc)) 776 (file-directory-p help-loc))
761 (error 777 (error
762 "Invalid help location; customize `idlwave-html-help-location'.")) 778 "Invalid help location; customize `idlwave-html-help-location'."))
763 (setq full-link (concat 779 (setq full-link (concat
764 "file://" 780 "file://"
765 (expand-file-name 781 (expand-file-name
766 link 782 link
767 (expand-file-name "idl_html_help" help-loc))))) 783 (expand-file-name "idl_html_help" help-loc)))))
768 784
769 ;; Check for a local browser 785 ;; Check for a local browser
@@ -773,11 +789,10 @@ see if a link is set for it. Try extra help functions if necessary."
773 (browse-url full-link)))) 789 (browse-url full-link))))
774 790
775;; A special help routine for source-level syntax help in files. 791;; A special help routine for source-level syntax help in files.
776(defvar idlwave-help-def-pos)
777(defvar idlwave-help-args)
778(defvar idlwave-help-in-header)
779(defvar idlwave-help-fontify-source-code) 792(defvar idlwave-help-fontify-source-code)
780(defvar idlwave-help-source-try-header) 793(defvar idlwave-help-source-try-header)
794(defvar idlwave-current-tags-buffer)
795(defvar idlwave-current-tags-class)
781(defun idlwave-help-with-source (name type class keyword) 796(defun idlwave-help-with-source (name type class keyword)
782 "Provide help for routines not documented in the IDL manuals. Works 797 "Provide help for routines not documented in the IDL manuals. Works
783by loading the routine source file into the help buffer. Depending on 798by loading the routine source file into the help buffer. Depending on
@@ -799,7 +814,7 @@ This function can be used as `idlwave-extra-help-function'."
799 (if class-only ;Help with class? Using "Init" as source. 814 (if class-only ;Help with class? Using "Init" as source.
800 (setq name "Init" 815 (setq name "Init"
801 type 'fun)) 816 type 'fun))
802 (if (not struct-tag) 817 (if (not struct-tag)
803 (setq file 818 (setq file
804 (idlwave-routine-source-file 819 (idlwave-routine-source-file
805 (nth 3 (idlwave-best-rinfo-assoc 820 (nth 3 (idlwave-best-rinfo-assoc
@@ -812,7 +827,7 @@ This function can be used as `idlwave-extra-help-function'."
812 (if (or struct-tag (stringp file)) 827 (if (or struct-tag (stringp file))
813 (progn 828 (progn
814 (setq in-buf ; structure-tag completion is always in current buffer 829 (setq in-buf ; structure-tag completion is always in current buffer
815 (if struct-tag 830 (if struct-tag
816 idlwave-current-tags-buffer 831 idlwave-current-tags-buffer
817 (idlwave-get-buffer-visiting file))) 832 (idlwave-get-buffer-visiting file)))
818 ;; see if file is in a visited buffer, insert those contents 833 ;; see if file is in a visited buffer, insert those contents
@@ -834,19 +849,19 @@ This function can be used as `idlwave-extra-help-function'."
834 ;; Try to find a good place to display 849 ;; Try to find a good place to display
835 (setq def-pos 850 (setq def-pos
836 ;; Find the class structure tag if that's what we're after 851 ;; Find the class structure tag if that's what we're after
837 (cond 852 (cond
838 ;; Class structure tags: find the class or named structure 853 ;; Class structure tags: find the class or named structure
839 ;; definition 854 ;; definition
840 (class-struct-tag 855 (class-struct-tag
841 (save-excursion 856 (save-excursion
842 (setq class 857 (setq class
843 (if (string-match "[a-zA-Z0-9]\\(__\\)" name) 858 (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
844 (substring name 0 (match-beginning 1)) 859 (substring name 0 (match-beginning 1))
845 idlwave-current-tags-class)) 860 idlwave-current-tags-class))
846 (and 861 (and
847 (idlwave-find-class-definition class nil real-class) 862 (idlwave-find-class-definition class nil real-class)
848 (idlwave-find-struct-tag keyword)))) 863 (idlwave-find-struct-tag keyword))))
849 864
850 ;; Generic structure tags: the structure definition 865 ;; Generic structure tags: the structure definition
851 ;; location within the file has been recorded in 866 ;; location within the file has been recorded in
852 ;; `struct-tag' 867 ;; `struct-tag'
@@ -856,14 +871,14 @@ This function can be used as `idlwave-extra-help-function'."
856 (integerp struct-tag) 871 (integerp struct-tag)
857 (goto-char struct-tag) 872 (goto-char struct-tag)
858 (idlwave-find-struct-tag keyword)))) 873 (idlwave-find-struct-tag keyword))))
859 874
860 ;; Just find the routine definition 875 ;; Just find the routine definition
861 (t 876 (t
862 (if class-only (point-min) 877 (if class-only (point-min)
863 (idlwave-help-find-routine-definition name type class keyword)))) 878 (idlwave-help-find-routine-definition name type class keyword))))
864 idlwave-help-def-pos def-pos) 879 idlwave-help-def-pos def-pos)
865 880
866 (if (and idlwave-help-source-try-header 881 (if (and idlwave-help-source-try-header
867 (not (or struct-tag class-struct-tag))) 882 (not (or struct-tag class-struct-tag)))
868 ;; Check if we can find the header 883 ;; Check if we can find the header
869 (save-excursion 884 (save-excursion
@@ -873,7 +888,7 @@ This function can be used as `idlwave-extra-help-function'."
873 idlwave-help-in-header header-pos))) 888 idlwave-help-in-header header-pos)))
874 889
875 (if (or header-pos def-pos) 890 (if (or header-pos def-pos)
876 (progn 891 (progn
877 (if (boundp 'idlwave-help-min-frame-width) 892 (if (boundp 'idlwave-help-min-frame-width)
878 (setq idlwave-help-min-frame-width 80)) 893 (setq idlwave-help-min-frame-width 80))
879 (goto-char (or header-pos def-pos))) 894 (goto-char (or header-pos def-pos)))
@@ -887,7 +902,7 @@ This function can be used as `idlwave-extra-help-function'."
887KEYWORD is ignored. Returns the point of match if successful, nil otherwise." 902KEYWORD is ignored. Returns the point of match if successful, nil otherwise."
888 (save-excursion 903 (save-excursion
889 (goto-char (point-max)) 904 (goto-char (point-max))
890 (if (re-search-backward 905 (if (re-search-backward
891 (concat "^[ \t]*" 906 (concat "^[ \t]*"
892 (if (eq type 'pro) "pro" 907 (if (eq type 'pro) "pro"
893 (if (eq type 'fun) "function" 908 (if (eq type 'fun) "function"
@@ -933,22 +948,22 @@ with spaces allowed between the keyword and the following dash or equal sign.
933If there is a match, we assume it is the keyword description." 948If there is a match, we assume it is the keyword description."
934 (let* ((case-fold-search t) 949 (let* ((case-fold-search t)
935 (rname (if (stringp class) 950 (rname (if (stringp class)
936 (concat 951 (concat
937 "\\(" 952 "\\("
938 ;; Traditional name or class::name 953 ;; Traditional name or class::name
939 "\\(" 954 "\\("
940 "\\(" (regexp-quote (downcase class)) "::\\)?" 955 "\\(" (regexp-quote (downcase class)) "::\\)?"
941 (regexp-quote (downcase name)) 956 (regexp-quote (downcase name))
942 "\\>\\)" 957 "\\>\\)"
943 (concat 958 (concat
944 "\\|" 959 "\\|"
945 ;; class__define or just class 960 ;; class__define or just class
946 (regexp-quote (downcase class)) "\\(__define\\)?") 961 (regexp-quote (downcase class)) "\\(__define\\)?")
947 "\\)") 962 "\\)")
948 (regexp-quote (downcase name)))) 963 (regexp-quote (downcase name))))
949 964
950 ;; NAME tag plus the routine name. The new version is from JD. 965 ;; NAME tag plus the routine name. The new version is from JD.
951 (name-re (concat 966 (name-re (concat
952 "\\(^;+\\*?[ \t]*" 967 "\\(^;+\\*?[ \t]*"
953 idlwave-help-doclib-name 968 idlwave-help-doclib-name
954 "\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*" 969 "\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*"
@@ -983,7 +998,7 @@ If there is a match, we assume it is the keyword description."
983 (regexp-quote (upcase keyword)) 998 (regexp-quote (upcase keyword))
984 "\\>"))) 999 "\\>")))
985 dstart dend name-pos kwds-pos kwd-pos) 1000 dstart dend name-pos kwds-pos kwd-pos)
986 (catch 'exit 1001 (catch 'exit
987 (save-excursion 1002 (save-excursion
988 (goto-char (point-min)) 1003 (goto-char (point-min))
989 (while (and (setq dstart (re-search-forward idlwave-doclib-start nil t)) 1004 (while (and (setq dstart (re-search-forward idlwave-doclib-start nil t))
@@ -991,7 +1006,7 @@ If there is a match, we assume it is the keyword description."
991 ;; found a routine header 1006 ;; found a routine header
992 (goto-char dstart) 1007 (goto-char dstart)
993 (if (setq name-pos (re-search-forward name-re dend t)) 1008 (if (setq name-pos (re-search-forward name-re dend t))
994 (progn 1009 (progn
995 (if keyword 1010 (if keyword
996 ;; We do need a keyword 1011 ;; We do need a keyword
997 (progn 1012 (progn
@@ -1073,7 +1088,7 @@ When DING is non-nil, ring the bell as well."
1073 (idlwave-help-find-first-header nil) 1088 (idlwave-help-find-first-header nil)
1074 (setq idlwave-help-in-header nil) 1089 (setq idlwave-help-in-header nil)
1075 (idlwave-help-toggle-header-match-and-def arg 'top))) 1090 (idlwave-help-toggle-header-match-and-def arg 'top)))
1076 1091
1077(defun idlwave-help-toggle-header-match-and-def (arg &optional top) 1092(defun idlwave-help-toggle-header-match-and-def (arg &optional top)
1078 (interactive "P") 1093 (interactive "P")
1079 (let ((args idlwave-help-args) 1094 (let ((args idlwave-help-args)
@@ -1085,7 +1100,7 @@ When DING is non-nil, ring the bell as well."
1085 (setq pos idlwave-help-def-pos)) 1100 (setq pos idlwave-help-def-pos))
1086 ;; Try to display header 1101 ;; Try to display header
1087 (setq pos (apply 'idlwave-help-find-in-doc-header 1102 (setq pos (apply 'idlwave-help-find-in-doc-header
1088 (if top 1103 (if top
1089 (list (car args) (nth 1 args) (nth 2 args) nil) 1104 (list (car args) (nth 1 args) (nth 2 args) nil)
1090 args))) 1105 args)))
1091 (if pos 1106 (if pos
@@ -1119,7 +1134,7 @@ Useful when source code is displayed as help. See the option
1119 (font-lock-fontify-buffer)) 1134 (font-lock-fontify-buffer))
1120 (set-syntax-table syntax-table))))) 1135 (set-syntax-table syntax-table)))))
1121 1136
1122 1137
1123(defun idlwave-help-error (name type class keyword) 1138(defun idlwave-help-error (name type class keyword)
1124 (error "Can't find help on %s%s %s" 1139 (error "Can't find help on %s%s %s"
1125 (or (and (or class name) (idlwave-make-full-name class name)) 1140 (or (and (or class name) (idlwave-make-full-name class name))
diff --git a/lisp/progmodes/idlw-rinfo.el b/lisp/progmodes/idlw-rinfo.el
index 9f95f8e6a5b..01888922cfe 100644
--- a/lisp/progmodes/idlw-rinfo.el
+++ b/lisp/progmodes/idlw-rinfo.el
@@ -1,9 +1,9 @@
1;;; idlw-rinfo.el --- Routine Information for IDLWAVE 1;;; idlw-rinfo.el --- Routine Information for IDLWAVE
2;; Copyright (c) 1999 Carsten Dominik 2;; Copyright (c) 1999 Carsten Dominik
3;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation 3;; Copyright (c) 1999, 2000, 2001,2002,2003,2004,2005 Free Software Foundation
4 4
5;; Author: J.D. Smith <jdsmith@as.arizona.edu> 5;; Author: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 5.5 6;; Version: 5.7_22
7;; Keywords: languages 7;; Keywords: languages
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -30,7 +30,7 @@
30;; information is extracted automatically from the IDL documentation 30;; information is extracted automatically from the IDL documentation
31;; and by talking to IDL. 31;; and by talking to IDL.
32;; 32;;
33;; Created by get_html_rinfo on Sun Oct 10 16:06:07 2004 33;; Created by get_html_rinfo on Wed May 11 14:52:40 2005
34;; IDL version: 6.1 34;; IDL version: 6.1
35;; Number of files scanned: 3393 35;; Number of files scanned: 3393
36;; Number of routines found: 1850 36;; Number of routines found: 1850
@@ -1242,7 +1242,7 @@
1242 ("Init" fun "IDLanROI" (system) "Result = Obj->[%s::]%s([, X [, Y [, Z]]])" ("objects_an11.html" ) ("objects_an4.html" ("BLOCK_SIZE" . 1011320) ("DATA" . 1011322) ("DOUBLE" . 1011324) ("INTERIOR" . 1011326) ("TYPE" . 1011328))) 1242 ("Init" fun "IDLanROI" (system) "Result = Obj->[%s::]%s([, X [, Y [, Z]]])" ("objects_an11.html" ) ("objects_an4.html" ("BLOCK_SIZE" . 1011320) ("DATA" . 1011322) ("DOUBLE" . 1011324) ("INTERIOR" . 1011326) ("TYPE" . 1011328)))
1243 ("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html")) 1243 ("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html"))
1244 ("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html")) 1244 ("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html"))
1245 ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE " . 1011998) ("ROIGROUP_YRANGE " . 1012000) ("ROIGROUP_ZRANGE " . 1012002))) 1245 ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE" . 1011998) ("ROIGROUP_YRANGE" . 1012000) ("ROIGROUP_ZRANGE" . 1012002)))
1246 ("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731))) 1246 ("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731)))
1247 ("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html")) 1247 ("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html"))
1248 ("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html")) 1248 ("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html"))
@@ -1433,120 +1433,120 @@
1433 ("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846))) 1433 ("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846)))
1434 ("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879))) 1434 ("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879)))
1435 ("GetDeviceInfo" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr16.html" ("ALL" . 1007957) ("MAX_NUM_CLIP_PLANES" . 1007959) ("MAX_TEXTURE_DIMENSIONS" . 1007961) ("MAX_VIEWPORT_DIMENSIONS" . 1007963) ("NAME" . 1007965) ("NUM_CPUS" . 1007967) ("VENDOR" . 1007970) ("VERSION" . 1007972))) 1435 ("GetDeviceInfo" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr16.html" ("ALL" . 1007957) ("MAX_NUM_CLIP_PLANES" . 1007959) ("MAX_TEXTURE_DIMENSIONS" . 1007961) ("MAX_VIEWPORT_DIMENSIONS" . 1007963) ("NAME" . 1007965) ("NUM_CPUS" . 1007967) ("VENDOR" . 1007970) ("VERSION" . 1007972)))
1436 ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS " . 1050189) ("ZBUFFER_DATA" . 1050181))) 1436 ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS" . 1050189) ("ZBUFFER_DATA" . 1050181)))
1437 ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) 1437 ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("UNITS" . 1050189)))
1438 ("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html")) 1438 ("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html"))
1439 ("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015))) 1439 ("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015)))
1440 ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090))) 1440 ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090)))
1441 ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) 1441 ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION" . 1093499) ("UNITS" . 1050189)))
1442 ("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214))) 1442 ("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214)))
1443 ("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html")) 1443 ("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html"))
1444 ("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323))) 1444 ("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323)))
1445 ("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html")) 1445 ("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html"))
1446 ("Draw" pro "IDLgrClipboard" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr28.html" ("CMYK" . 1345463) ("FILENAME" . 1008514) ("POSTSCRIPT" . 1008516) ("VECT_SHADING" . 1340124) ("VECT_SORTING" . 1340189) ("VECT_TEXT_RENDER_METHOD" . 1340235) ("VECTOR" . 1008518))) 1446 ("Draw" pro "IDLgrClipboard" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr28.html" ("CMYK" . 1345463) ("FILENAME" . 1008514) ("POSTSCRIPT" . 1008516) ("VECT_SHADING" . 1340124) ("VECT_SORTING" . 1340189) ("VECT_TEXT_RENDER_METHOD" . 1340235) ("VECTOR" . 1008518)))
1447 ("GetDeviceInfo" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr30.html" ("ALL" . 1008688) ("MAX_NUM_CLIP_PLANES" . 1008690) ("MAX_TEXTURE_DIMENSIONS" . 1008692) ("MAX_VIEWPORT_DIMENSIONS" . 1008694) ("NAME" . 1008696) ("NUM_CPUS" . 1008698) ("VENDOR" . 1008701) ("VERSION" . 1008703))) 1447 ("GetDeviceInfo" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr30.html" ("ALL" . 1008688) ("MAX_NUM_CLIP_PLANES" . 1008690) ("MAX_TEXTURE_DIMENSIONS" . 1008692) ("MAX_VIEWPORT_DIMENSIONS" . 1008694) ("NAME" . 1008696) ("NUM_CPUS" . 1008698) ("VENDOR" . 1008701) ("VERSION" . 1008703)))
1448 ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439))) 1448 ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439)))
1449 ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) 1449 ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("UNITS" . 1050439)))
1450 ("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html")) 1450 ("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html"))
1451 ("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746))) 1451 ("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746)))
1452 ("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822))) 1452 ("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822)))
1453 ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) 1453 ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION" . 1093541) ("UNITS" . 1050439)))
1454 ("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html")) 1454 ("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html"))
1455 ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV " . 1050706) ("ZRANGE" . 1050697))) 1455 ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV" . 1050706) ("ZRANGE" . 1050697)))
1456 ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) 1456 ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706)))
1457 ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084))) 1457 ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084)))
1458 ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) 1458 ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706)))
1459 ("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html")) 1459 ("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html"))
1460 ("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html")) 1460 ("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html"))
1461 ("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505))) 1461 ("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505)))
1462 ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE " . 1051250) ("ZCOORD_CONV " . 1051174) ("ZRANGE" . 1051240))) 1462 ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE" . 1051250) ("ZCOORD_CONV" . 1051174) ("ZRANGE" . 1051240)))
1463 ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) 1463 ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174)))
1464 ("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464))) 1464 ("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464)))
1465 ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA " . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PALETTE " . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) 1465 ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA" . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PALETTE" . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174)))
1466 ("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html")) 1466 ("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html"))
1467 ("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1467 ("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1468 ("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1468 ("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1469 ("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1469 ("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1470 ("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html")) 1470 ("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html"))
1471 ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL " . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223))) 1471 ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL" . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223)))
1472 ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) 1472 ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187)))
1473 ("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172))) 1473 ("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172)))
1474 ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) 1474 ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187)))
1475 ("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html")) 1475 ("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html"))
1476 ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL " . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("XRANGE " . 1055399) ("YCOORD_CONV " . 1053972) ("YRANGE " . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059))) 1476 ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL" . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("XRANGE" . 1055399) ("YCOORD_CONV" . 1053972) ("YRANGE" . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059)))
1477 ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE " . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) 1477 ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE" . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978)))
1478 ("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563))) 1478 ("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563)))
1479 ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) 1479 ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978)))
1480 ("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html")) 1480 ("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html"))
1481 ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1481 ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1482 ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1482 ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1483 ("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908))) 1483 ("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908)))
1484 ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1484 ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1485 ("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208))) 1485 ("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208)))
1486 ("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html")) 1486 ("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html"))
1487 ("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html")) 1487 ("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html"))
1488 ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL " . 1055726) ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("PARENT " . 1055781) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1488 ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL" . 1055726) ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("PARENT" . 1055781) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1489 ("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html")) 1489 ("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html"))
1490 ("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584))) 1490 ("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584)))
1491 ("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618))) 1491 ("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618)))
1492 ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1492 ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1493 ("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687))) 1493 ("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687)))
1494 ("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html")) 1494 ("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html"))
1495 ("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377))) 1495 ("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377)))
1496 ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1496 ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1497 ("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html")) 1497 ("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html"))
1498 ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL " . 1055838) ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) 1498 ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL" . 1055838) ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969)))
1499 ("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html")) 1499 ("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html"))
1500 ("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062))) 1500 ("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062)))
1501 ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) 1501 ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969)))
1502 ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY " . 1055971))) 1502 ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY" . 1055971)))
1503 ("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html")) 1503 ("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html"))
1504 ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1504 ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1505 ("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379))) 1505 ("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379)))
1506 ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1506 ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1507 ("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html")) 1507 ("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html"))
1508 ("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html")) 1508 ("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html"))
1509 ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1509 ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1510 ("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html")) 1510 ("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html"))
1511 ("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html")) 1511 ("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html"))
1512 ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) 1512 ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
1513 ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) 1513 ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
1514 ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173) ("THICK " . 1056179))) 1514 ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173) ("THICK" . 1056179)))
1515 ("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html")) 1515 ("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html"))
1516 ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT " . 1056392) ("POLAR " . 1056389) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400))) 1516 ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT" . 1056392) ("POLAR" . 1056389) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400)))
1517 ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) 1517 ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400)))
1518 ("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846))) 1518 ("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846)))
1519 ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) 1519 ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400)))
1520 ("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html")) 1520 ("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html"))
1521 ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PARENT " . 1056792) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV " . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700) ("ZRANGE" . 1056834))) 1521 ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PARENT" . 1056792) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV" . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700) ("ZRANGE" . 1056834)))
1522 ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) 1522 ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700)))
1523 ("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196))) 1523 ("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196)))
1524 ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) 1524 ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700)))
1525 ("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html")) 1525 ("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html"))
1526 ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE " . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121))) 1526 ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE" . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121)))
1527 ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) 1527 ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892)))
1528 ("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587))) 1528 ("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587)))
1529 ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) 1529 ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892)))
1530 ("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html")) 1530 ("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html"))
1531 ("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979))) 1531 ("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979)))
1532 ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL " . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("NAME " . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION " . 1093938) ("UNITS" . 1057441))) 1532 ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL" . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("NAME" . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION" . 1093938) ("UNITS" . 1057441)))
1533 ("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html")) 1533 ("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html"))
1534 ("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html")) 1534 ("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html"))
1535 ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441))) 1535 ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441)))
1536 ("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html")) 1536 ("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html"))
1537 ("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149))) 1537 ("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149)))
1538 ("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233))) 1538 ("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233)))
1539 ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441))) 1539 ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441)))
1540 ("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html")) 1540 ("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html"))
1541 ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("PARENT " . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574))) 1541 ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("PARENT" . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574)))
1542 ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) 1542 ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666)))
1543 ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) 1543 ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666)))
1544 ("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753))) 1544 ("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753)))
1545 ("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html")) 1545 ("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html"))
1546 ("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html")) 1546 ("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html"))
1547 ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT " . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE " . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781))) 1547 ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT" . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE" . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781)))
1548 ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) 1548 ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839)))
1549 ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) 1549 ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839)))
1550 ("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096))) 1550 ("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096)))
1551 ("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243))) 1551 ("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243)))
1552 ("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html")) 1552 ("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html"))
@@ -1555,10 +1555,10 @@
1555 ("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html")) 1555 ("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html"))
1556 ("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969))) 1556 ("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969)))
1557 ("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html")) 1557 ("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html"))
1558 ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("PARENT " . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE " . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521))) 1558 ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("PARENT" . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE" . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521)))
1559 ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) 1559 ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163)))
1560 ("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599))) 1560 ("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599)))
1561 ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) 1561 ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163)))
1562 ("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html")) 1562 ("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html"))
1563 ("GetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr183.html" ) ("objects_gr181.html" ("ALL" . 1058799) ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) 1563 ("GetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr183.html" ) ("objects_gr181.html" ("ALL" . 1058799) ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823)))
1564 ("SetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr185.html" ) ("objects_gr181.html" ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) 1564 ("SetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr185.html" ) ("objects_gr181.html" ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823)))
@@ -1569,16 +1569,16 @@
1569 ("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" )) 1569 ("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" ))
1570 ("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376))) 1570 ("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376)))
1571 ("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html")) 1571 ("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html"))
1572 ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890))) 1572 ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890)))
1573 ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) 1573 ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968)))
1574 ("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516))) 1574 ("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516)))
1575 ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) 1575 ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968)))
1576 ("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823))) 1576 ("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823)))
1577 ("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html")) 1577 ("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html"))
1578 ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL " . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT " . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1578 ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL" . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT" . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1579 ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1579 ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1580 ("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html")) 1580 ("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html"))
1581 ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1581 ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1582 ("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170))) 1582 ("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170)))
1583 ("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html")) 1583 ("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html"))
1584 ("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394))) 1584 ("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394)))
@@ -1587,28 +1587,28 @@
1587 ("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341))) 1587 ("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341)))
1588 ("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html")) 1588 ("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html"))
1589 ("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522))) 1589 ("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522)))
1590 ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393))) 1590 ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393)))
1591 ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) 1591 ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509)))
1592 ("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563))) 1592 ("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563)))
1593 ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) 1593 ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509)))
1594 ("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818))) 1594 ("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818)))
1595 ("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html")) 1595 ("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html"))
1596 ("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html")) 1596 ("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html"))
1597 ("GetDeviceInfo" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr229.html" ("ALL" . 1018053) ("MAX_NUM_CLIP_PLANES" . 1018055) ("MAX_TEXTURE_DIMENSIONS" . 1018057) ("MAX_VIEWPORT_DIMENSIONS" . 1018059) ("NAME" . 1018061) ("NUM_CPUS" . 1018063) ("VENDOR" . 1018066) ("VERSION" . 1018068))) 1597 ("GetDeviceInfo" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr229.html" ("ALL" . 1018053) ("MAX_NUM_CLIP_PLANES" . 1018055) ("MAX_TEXTURE_DIMENSIONS" . 1018057) ("MAX_VIEWPORT_DIMENSIONS" . 1018059) ("NAME" . 1018061) ("NUM_CPUS" . 1018063) ("VENDOR" . 1018066) ("VERSION" . 1018068)))
1598 ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860))) 1598 ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860)))
1599 ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860))) 1599 ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860)))
1600 ("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111))) 1600 ("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111)))
1601 ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187))) 1601 ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187)))
1602 ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO " . 1059848) ("WORLDTITLE" . 1059850))) 1602 ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO" . 1059848) ("WORLDTITLE" . 1059850)))
1603 ("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html")) 1603 ("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html"))
1604 ("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511))) 1604 ("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511)))
1605 ("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544))) 1605 ("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544)))
1606 ("GetDeviceInfo" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr241.html" ("ALL" . 1018622) ("MAX_NUM_CLIP_PLANES" . 1018624) ("MAX_TEXTURE_DIMENSIONS" . 1018626) ("MAX_VIEWPORT_DIMENSIONS" . 1018628) ("NAME" . 1018630) ("NUM_CPUS" . 1018632) ("VENDOR" . 1018635) ("VERSION" . 1018637))) 1606 ("GetDeviceInfo" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr241.html" ("ALL" . 1018622) ("MAX_NUM_CLIP_PLANES" . 1018624) ("MAX_TEXTURE_DIMENSIONS" . 1018626) ("MAX_VIEWPORT_DIMENSIONS" . 1018628) ("NAME" . 1018630) ("NUM_CPUS" . 1018632) ("VENDOR" . 1018635) ("VERSION" . 1018637)))
1607 ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA " . 1060084) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS " . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953))) 1607 ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA" . 1060084) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS" . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953)))
1608 ("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html")) 1608 ("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html"))
1609 ("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150))) 1609 ("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150)))
1610 ("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383))) 1610 ("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383)))
1611 ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) 1611 ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797)))
1612 ("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html")) 1612 ("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html"))
1613 ("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html")) 1613 ("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html"))
1614 ("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html")) 1614 ("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html"))
@@ -1616,7 +1616,7 @@
1616 ("GetDimensions" fun "IDLgrWindow" (system) "Result = Obj -> [%s::]%s ()" ("objects_gr242.html" ("MINIMUM_VIRTUAL_DIMENSIONS" . 1360348) ("ORIGINAL_VIRTUAL_DIMENSIONS" . 1360355) ("VIRTUAL_DIMENSIONS" . 1360358) ("VISIBLE_LOCATION" . 1360361))) 1616 ("GetDimensions" fun "IDLgrWindow" (system) "Result = Obj -> [%s::]%s ()" ("objects_gr242.html" ("MINIMUM_VIRTUAL_DIMENSIONS" . 1360348) ("ORIGINAL_VIRTUAL_DIMENSIONS" . 1360355) ("VIRTUAL_DIMENSIONS" . 1360358) ("VISIBLE_LOCATION" . 1360361)))
1617 ("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680))) 1617 ("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680)))
1618 ("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767))) 1618 ("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767)))
1619 ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS " . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) 1619 ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS" . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797)))
1620 ("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967))) 1620 ("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967)))
1621 ("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html")) 1621 ("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html"))
1622 ("Select" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( Picture, XY)" ("objects_gr250.html" ("DIMENSIONS" . 1019069) ("ORDER" . 1019073) ("SUB_SELECTION" . 1343670) ("UNITS" . 1019076))) 1622 ("Select" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( Picture, XY)" ("objects_gr250.html" ("DIMENSIONS" . 1019069) ("ORDER" . 1019073) ("SUB_SELECTION" . 1343670) ("UNITS" . 1019076)))
@@ -1691,7 +1691,7 @@
1691 ("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016))) 1691 ("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016)))
1692 ("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036))) 1692 ("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036)))
1693 ("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html")) 1693 ("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html"))
1694 ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735))) 1694 ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735)))
1695 ("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html")) 1695 ("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html"))
1696 ("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html")) 1696 ("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html"))
1697 ("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html")) 1697 ("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html"))
@@ -1699,10 +1699,10 @@
1699 ("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html")) 1699 ("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html"))
1700 ("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810))) 1700 ("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810)))
1701 ("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html")) 1701 ("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html"))
1702 ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735))) 1702 ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735)))
1703 ("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828))) 1703 ("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828)))
1704 ("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html")) 1704 ("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html"))
1705 ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735))) 1705 ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735)))
1706 ("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html")) 1706 ("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html"))
1707 ("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html")) 1707 ("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html"))
1708 ("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" )) 1708 ("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" ))
@@ -1816,7 +1816,7 @@
1816 ("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html")) 1816 ("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html"))
1817 ("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html")) 1817 ("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html"))
1818 ("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html")) 1818 ("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html"))
1819 ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078))) 1819 ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078)))
1820 ("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html")) 1820 ("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html"))
1821 ("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html")) 1821 ("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html"))
1822 ("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html")) 1822 ("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html"))
@@ -1836,7 +1836,7 @@
1836 ("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441))) 1836 ("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441)))
1837 ("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html")) 1837 ("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html"))
1838 ("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891))) 1838 ("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891)))
1839 ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("TYPE" . 1086465))) 1839 ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("TYPE" . 1086465)))
1840 ("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html")) 1840 ("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html"))
1841 ("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092))) 1841 ("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092)))
1842 ("WindowToVis" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ or Obj->[%s::]%s, InX, InY, OutX, OutY or Obj->[%s::]%s, InVerts, OutVerts" ("objects_it286.html")) 1842 ("WindowToVis" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ or Obj->[%s::]%s, InX, InY, OutX, OutY or Obj->[%s::]%s, InVerts, OutVerts" ("objects_it286.html"))
@@ -1851,7 +1851,7 @@
1851 ("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html")) 1851 ("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html"))
1852 ("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html")) 1852 ("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html"))
1853 ("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298))) 1853 ("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298)))
1854 ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465))) 1854 ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465)))
1855 ("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html")) 1855 ("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html"))
1856 ("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html")) 1856 ("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html"))
1857 ("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html")) 1857 ("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html"))
@@ -1942,11 +1942,11 @@
1942 ("IDLgrLegend" (tags "OSCALENODE" "BORDER_GAP" "COLUMNS" "OOUTLINE" "OFILL" "OFONT" "GAP" "GLYPHWIDTH" "PITEM_COLOR" "PITEM_LINESTYLE" "PITEM_NAME" "PITEM_OBJECT" "PITEM_THICK" "PITEM_TYPE" "OTITLE" "PTEXT_COLOR" "BRECOMPUTE" "PGLYPHS" "PTEXTS" "HGLYPHWIDTH" "VGLYPHWIDTH" "COLORMODE" "CLEANLEAVE" "CLEANGLYPHS" "IDLGRLEGENDVERSION") (inherits "IDLgrModel") (link "objects_gr65.html")) 1942 ("IDLgrLegend" (tags "OSCALENODE" "BORDER_GAP" "COLUMNS" "OOUTLINE" "OFILL" "OFONT" "GAP" "GLYPHWIDTH" "PITEM_COLOR" "PITEM_LINESTYLE" "PITEM_NAME" "PITEM_OBJECT" "PITEM_THICK" "PITEM_TYPE" "OTITLE" "PTEXT_COLOR" "BRECOMPUTE" "PGLYPHS" "PTEXTS" "HGLYPHWIDTH" "VGLYPHWIDTH" "COLORMODE" "CLEANLEAVE" "CLEANGLYPHS" "IDLGRLEGENDVERSION") (inherits "IDLgrModel") (link "objects_gr65.html"))
1943 ("IDLgrPolygon" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGON_TOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "AMBIENT" "DIFFUSE" "SPECULAR" "EMISSION" "SHININESS" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGON_BOTTOM") (inherits "IDLitComponent") (link "objects_gr124.html")) 1943 ("IDLgrPolygon" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGON_TOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "AMBIENT" "DIFFUSE" "SPECULAR" "EMISSION" "SHININESS" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGON_BOTTOM") (inherits "IDLitComponent") (link "objects_gr124.html"))
1944 ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "CURRENT_ZOOM" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "MINIMUM_VIRTUAL_DIMENSIONS" "ORIGINAL_VIRTUAL_DIMENSIONS" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "VIRTUAL_DIMENSIONS" "VISIBLE_LOCATION" "ZOOM_BASE" "ZOOM_NSTEP" "EXTERNAL_WINDOW" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits "IDLitComponent") (link "objects_gr235.html")) 1944 ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "CURRENT_ZOOM" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "MINIMUM_VIRTUAL_DIMENSIONS" "ORIGINAL_VIRTUAL_DIMENSIONS" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "VIRTUAL_DIMENSIONS" "VISIBLE_LOCATION" "ZOOM_BASE" "ZOOM_NSTEP" "EXTERNAL_WINDOW" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits "IDLitComponent") (link "objects_gr235.html"))
1945 ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html"))
1946 ("IDLgrPolyline" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINE_TOP" "IDLGRPOLYLINEVERSION" "POLYLINEFLAGS" "DATA" "PRECISION" "LABEL_NOGAPS" "LABEL_OBJECTS" "LABEL_OFFSETS" "LABEL_POLYLINES" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "USE_LABEL_COLOR" "USE_LABEL_ORIENTATION" "VERTCOLORS" "LABEL_INFO" "FILL1" "IDLGRPOLYLINE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr131.html")) 1945 ("IDLgrPolyline" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINE_TOP" "IDLGRPOLYLINEVERSION" "POLYLINEFLAGS" "DATA" "PRECISION" "LABEL_NOGAPS" "LABEL_OBJECTS" "LABEL_OFFSETS" "LABEL_POLYLINES" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "USE_LABEL_COLOR" "USE_LABEL_ORIENTATION" "VERTCOLORS" "LABEL_INFO" "FILL1" "IDLGRPOLYLINE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr131.html"))
1946 ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html"))
1947 ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html")) 1947 ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html"))
1948 ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html"))
1949 ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUME_TOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUME_BOTTOM") (inherits "IDLitComponent") (link "objects_gr216.html")) 1948 ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUME_TOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUME_BOTTOM") (inherits "IDLitComponent") (link "objects_gr216.html"))
1949 ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html"))
1950 ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROIGROUP_BOTTOM") (inherits "IDLanROIGroup" "IDLitComponent") (link "objects_gr157.html")) 1950 ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROIGROUP_BOTTOM") (inherits "IDLanROIGroup" "IDLitComponent") (link "objects_gr157.html"))
1951 ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRTEXT_TOP" "IDLGRTEXTVERSION" "TEXTFLAGS" "ALIGNMENT" "BASELINE" "CHAR_DIMENSIONS" "RECOMP_CTM" "FONT" "LOCATIONS" "STRINGS" "SUBPARENT" "UPDIR" "VERTICAL_ALIGNMENT" "FILL_COLOR" "RENDER_MODE" "IDLGRTEXT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr193.html")) 1951 ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRTEXT_TOP" "IDLGRTEXTVERSION" "TEXTFLAGS" "ALIGNMENT" "BASELINE" "CHAR_DIMENSIONS" "RECOMP_CTM" "FONT" "LOCATIONS" "STRINGS" "SUBPARENT" "UPDIR" "VERTICAL_ALIGNMENT" "FILL_COLOR" "RENDER_MODE" "IDLGRTEXT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr193.html"))
1952 ("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html")) 1952 ("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html"))
@@ -1955,33 +1955,33 @@
1955 ("IDLgrImage" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRIMAGE_TOP" "IDLGRIMAGEVERSION" "CHANNEL" "DATA" "DIMENSIONS" "SUB_RECT" "IMAGEFLAGS" "LOCATION" "INTERLEAVE" "INTERPOLATE" "BLEND_FUNCTIONS" "IDLGRIMAGE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr58.html")) 1955 ("IDLgrImage" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRIMAGE_TOP" "IDLGRIMAGEVERSION" "CHANNEL" "DATA" "DIMENSIONS" "SUB_RECT" "IMAGEFLAGS" "LOCATION" "INTERLEAVE" "INTERPOLATE" "BLEND_FUNCTIONS" "IDLGRIMAGE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr58.html"))
1956 ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRLIGHT_TOP" "IDLGRLIGHTVERSION" "ATTENUATION" "CONEANGLE" "DIRECTION" "FOCUS" "INTENSITY" "LOCATION" "TYPE" "IDLGRLIGHT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr72.html")) 1956 ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRLIGHT_TOP" "IDLGRLIGHTVERSION" "ATTENUATION" "CONEANGLE" "DIRECTION" "FOCUS" "INTENSITY" "LOCATION" "TYPE" "IDLGRLIGHT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr72.html"))
1957 ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "VIEWFLAGS" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr200.html")) 1957 ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "VIEWFLAGS" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr200.html"))
1958 ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html"))
1959 ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRML_TOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRML_BOTTOM") (inherits "IDLitComponent") (link "objects_gr225.html")) 1958 ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRML_TOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRML_BOTTOM") (inherits "IDLitComponent") (link "objects_gr225.html"))
1960 ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html")) 1959 ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html"))
1961 ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr138.html")) 1960 ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr138.html"))
1961 ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html"))
1962 ("IDLgrModel" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "CLIP_PLANES" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "TRANSFORM" "IDLGRMODEL_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr79.html")) 1962 ("IDLgrModel" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "CLIP_PLANES" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "TRANSFORM" "IDLGRMODEL_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr79.html"))
1963 ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFER_TOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr10.html")) 1963 ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFER_TOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr10.html"))
1964 ("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html")) 1964 ("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html"))
1965 ("IDLitDataContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitData" "IDL_Container") (link "objects_it59.html")) 1965 ("IDLitDataContainer" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitContainer") (link "objects_it59.html"))
1966 ("IDLgrScene" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr165.html")) 1966 ("IDLgrScene" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr165.html"))
1967 ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
1968 ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUP_TOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUP_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr208.html")) 1967 ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUP_TOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUP_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr208.html"))
1968 ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
1969 ("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html")) 1969 ("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html"))
1970 ("IDLgrMPEG" (tags "IDLGRMPEG_TOP" "IDLGRMPEGVERSION" "DIMENSIONS" "FILENAME" "FORMAT" "FRAMERATE" "INTERLACED" "QUALITY" "SCALE" "STATISTICS" "DISPLAYDIMS" "FIRSTFRAME" "LASTFRAME" "MPEGID" "TEMPNODE" "TEMPNODEFILLER" "TEMP_DIRECTORY" "BITRATE" "IFRAME_GAP" "MOTION_LENGTH" "FLAGS" "IDLGRMPEG_BOTTOM") (link "objects_gr93.html")) 1970 ("IDLgrMPEG" (tags "IDLGRMPEG_TOP" "IDLGRMPEGVERSION" "DIMENSIONS" "FILENAME" "FORMAT" "FRAMERATE" "INTERLACED" "QUALITY" "SCALE" "STATISTICS" "DISPLAYDIMS" "FIRSTFRAME" "LASTFRAME" "MPEGID" "TEMPNODE" "TEMPNODEFILLER" "TEMP_DIRECTORY" "BITRATE" "IFRAME_GAP" "MOTION_LENGTH" "FLAGS" "IDLGRMPEG_BOTTOM") (link "objects_gr93.html"))
1971 ("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html")) 1971 ("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html"))
1972 ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
1973 ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
1974 ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html")) 1972 ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html"))
1973 ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
1974 ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
1975 ("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html")) 1975 ("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html"))
1976 ("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html")) 1976 ("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html"))
1977 ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
1978 ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
1979 ("IDLffLangCat" (tags "FILENAMES" "_AVAILABLE_FILES" "LANGUAGE" "DEFAULT_LANGUAGE" "APPLICATIONS" "APPLICATION_PATH" "KEYS" "N_KEYS" "STRINGS" "DEF_KEYS" "N_DEF_KEYS" "DEF_STRINGS" "AVAILABLE_LANGUAGES" "VERBOSE" "STRICT" "IDLFFLANGCATVERSION") (link "objects_ff44.html")) 1977 ("IDLffLangCat" (tags "FILENAMES" "_AVAILABLE_FILES" "LANGUAGE" "DEFAULT_LANGUAGE" "APPLICATIONS" "APPLICATION_PATH" "KEYS" "N_KEYS" "STRINGS" "DEF_KEYS" "N_DEF_KEYS" "DEF_STRINGS" "AVAILABLE_LANGUAGES" "VERBOSE" "STRICT" "IDLFFLANGCATVERSION") (link "objects_ff44.html"))
1978 ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
1979 ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
1980 ("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html")) 1980 ("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html"))
1981 ("IDLanROI" (tags "IDLANROI_TOP" "IDLANROIVERSION" "IDLANROIFLAGS" "NALLOCVERTS" "NUSEDVERTS" "BLOCKSIZE" "DATA" "TYPE" "PRECISION" "PLANE" "ROI_XRANGE" "ROI_YRANGE" "ROI_ZRANGE" "IDLANROI_BOTTOM") (link "objects_an3.html")) 1981 ("IDLanROI" (tags "IDLANROI_TOP" "IDLANROIVERSION" "IDLANROIFLAGS" "NALLOCVERTS" "NUSEDVERTS" "BLOCKSIZE" "DATA" "TYPE" "PRECISION" "PLANE" "ROI_XRANGE" "ROI_YRANGE" "ROI_ZRANGE" "IDLANROI_BOTTOM") (link "objects_an3.html"))
1982 ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
1983 ("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html")) 1982 ("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html"))
1984 ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMNode") (link "objects_ff102.html")) 1983 ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMText") (link "objects_ff102.html"))
1984 ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
1985 ("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html")) 1985 ("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html"))
1986 ("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html")) 1986 ("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html"))
1987 ("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html")) 1987 ("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html"))
@@ -1989,45 +1989,45 @@
1989 ("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html")) 1989 ("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html"))
1990 ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html")) 1990 ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html"))
1991 ("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html")) 1991 ("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html"))
1992 ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
1993 ("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html")) 1992 ("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html"))
1994 ("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html")) 1993 ("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html"))
1995 ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff162.html")) 1994 ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
1996 ("IDLffXMLDOMDocumentType" (inherits "IDLffXMLDOMElement") (link "objects_ff123.html")) 1995 ("IDLffXMLDOMText" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff203.html"))
1996 ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMAttr") (link "objects_ff196.html"))
1997 ("IDLffXMLDOMAttr" (inherits "IDLffXMLDOMElement") (link "objects_ff74.html"))
1998 ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNode") (link "objects_ff130.html"))
1997 ("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html")) 1999 ("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html"))
1998 ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNotation") (link "objects_ff130.html")) 2000 ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMNotation") (link "objects_ff162.html"))
1999 ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMEntity") (link "objects_ff190.html")) 2001 ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff190.html"))
2000 ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff142.html"))
2001 ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff86.html"))
2002 ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMText") (link "objects_ff196.html"))
2003 ("IDLffXMLDOMText" (inherits "IDLffXMLDOMAttr") (link "objects_ff203.html"))
2004 ("IDLffXMLDOMAttr" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff74.html"))
2005 ("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html")) 2002 ("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html"))
2003 ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMEntity") (link "objects_ff86.html"))
2004 ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff142.html"))
2005 ("IDLffXMLDOMDocumentType" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff123.html"))
2006 ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html")) 2006 ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html"))
2007 ("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html")) 2007 ("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html"))
2008 ("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html")) 2008 ("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html"))
2009 ("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html")) 2009 ("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html"))
2010 ("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html")) 2010 ("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html"))
2011 ("IDLjavaObject" (link "objects_misc28.html"))
2012 ("IDLcomIDispatch" (link "objects_misc23.html")) 2011 ("IDLcomIDispatch" (link "objects_misc23.html"))
2013 ("IDLffMrSID" (link "objects_ff52.html")))) 2012 ("IDLffMrSID" (link "objects_ff52.html"))
2013 ("IDLjavaObject" (link "objects_misc28.html"))))
2014 2014
2015 2015
2016(setq idlwave-executive-commands-alist '( 2016(setq idlwave-executive-commands-alist '(
2017 ("GO" . "symbols6.html") 2017 ("RESET_SESSION" . "symbols8.html")
2018 ("OUT" . "symbols7.html")
2019 ("RETURN" . "symbols9.html")
2020 ("TRACE" . "symbols15.html") 2018 ("TRACE" . "symbols15.html")
2019 ("RNEW" . "symbols10.html")
2020 ("EDIT" . "symbols4.html")
2021 ("STEPOVER" . "symbols14.html")
2022 ("OUT" . "symbols7.html")
2021 ("RUN" . "symbols11.html") 2023 ("RUN" . "symbols11.html")
2022 ("SKIP" . "symbols12.html")
2023 ("COMPILE" . "symbols2.html")
2024 ("CONTINUE" . "symbols3.html") 2024 ("CONTINUE" . "symbols3.html")
2025 ("RESET_SESSION" . "symbols8.html")
2026 ("STEP" . "symbols13.html") 2025 ("STEP" . "symbols13.html")
2027 ("RNEW" . "symbols10.html") 2026 ("RETURN" . "symbols9.html")
2027 ("GO" . "symbols6.html")
2028 ("SKIP" . "symbols12.html")
2028 ("FULL_RESET_SESSION" . "symbols5.html") 2029 ("FULL_RESET_SESSION" . "symbols5.html")
2029 ("EDIT" . "symbols4.html") 2030 ("COMPILE" . "symbols2.html")
2030 ("STEPOVER" . "symbols14.html")
2031)) 2031))
2032 2032
2033;; Special words with associated help topic files 2033;; Special words with associated help topic files
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index 04e6a28ee40..be49e613b6c 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -5,7 +5,7 @@
5;; Carsten Dominik <dominik@astro.uva.nl> 5;; Carsten Dominik <dominik@astro.uva.nl>
6;; Chris Chase <chase@att.com> 6;; Chris Chase <chase@att.com>
7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
8;; Version: 5.5 8;; Version: 5.7_22
9;; Keywords: processes 9;; Keywords: processes
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -45,7 +45,7 @@
45;; 45;;
46;; INSTALLATION: 46;; INSTALLATION:
47;; ============= 47;; =============
48;; 48;;
49;; Follow the instructions in the INSTALL file of the distribution. 49;; Follow the instructions in the INSTALL file of the distribution.
50;; In short, put this file on your load path and add the following 50;; In short, put this file on your load path and add the following
51;; lines to your .emacs file: 51;; lines to your .emacs file:
@@ -58,9 +58,9 @@
58;; 58;;
59;; The newest version of this file can be found on the maintainers 59;; The newest version of this file can be found on the maintainers
60;; web site. 60;; web site.
61;; 61;;
62;; http://idlwave.org 62;; http://idlwave.org
63;; 63;;
64;; DOCUMENTATION 64;; DOCUMENTATION
65;; ============= 65;; =============
66;; 66;;
@@ -77,7 +77,7 @@
77;; it is a bug in XEmacs. 77;; it is a bug in XEmacs.
78;; The Debug menu in source buffers *does* display the bindings correctly. 78;; The Debug menu in source buffers *does* display the bindings correctly.
79;; 79;;
80;; 80;;
81;; CUSTOMIZATION VARIABLES 81;; CUSTOMIZATION VARIABLES
82;; ======================= 82;; =======================
83;; 83;;
@@ -101,12 +101,12 @@
101 (condition-case () (require 'custom) (error nil)) 101 (condition-case () (require 'custom) (error nil))
102 (if (and (featurep 'custom) 102 (if (and (featurep 'custom)
103 (fboundp 'custom-declare-variable) 103 (fboundp 'custom-declare-variable)
104 (fboundp 'defface)) 104 (fboundp 'defface))
105 ;; We've got what we needed 105 ;; We've got what we needed
106 (setq idlwave-shell-have-new-custom t) 106 (setq idlwave-shell-have-new-custom t)
107 ;; We have the old or no custom-library, hack around it! 107 ;; We have the old or no custom-library, hack around it!
108 (defmacro defgroup (&rest args) nil) 108 (defmacro defgroup (&rest args) nil)
109 (defmacro defcustom (var value doc &rest args) 109 (defmacro defcustom (var value doc &rest args)
110 `(defvar ,var ,value ,doc)))) 110 `(defvar ,var ,value ,doc))))
111 111
112;;; Customizations: idlwave-shell group 112;;; Customizations: idlwave-shell group
@@ -117,11 +117,12 @@
117 :prefix "idlwave-shell" 117 :prefix "idlwave-shell"
118 :group 'idlwave) 118 :group 'idlwave)
119 119
120(defcustom idlwave-shell-prompt-pattern "^ ?IDL> " 120(defcustom idlwave-shell-prompt-pattern "^\r? ?IDL> "
121 "*Regexp to match IDL prompt at beginning of a line. 121 "*Regexp to match IDL prompt at beginning of a line.
122For example, \"^IDL> \" or \"^WAVE> \". 122For example, \"^\r?IDL> \" or \"^\r?WAVE> \".
123The \"^\" means beginning of line, and is required. 123The \"^\r?\" is needed, to indicate the beginning of the line, with
124This variable is used to initialize `comint-prompt-regexp' in the 124optional return character (which IDL seems to output randomly).
125This variable is used to initialize `comint-prompt-regexp' in the
125process buffer. 126process buffer.
126 127
127This is a fine thing to set in your `.emacs' file." 128This is a fine thing to set in your `.emacs' file."
@@ -210,7 +211,7 @@ So by default setting a breakpoint will be on C-c C-d C-b."
210 :type 'boolean) 211 :type 'boolean)
211 212
212(defcustom idlwave-shell-automatic-electric-debug 'breakpoint 213(defcustom idlwave-shell-automatic-electric-debug 'breakpoint
213 "Enter the electric-debug minor mode automatically. 214 "Enter the electric-debug minor mode automatically.
214This occurs at a breakpoint or any other halt. The mode is exited 215This occurs at a breakpoint or any other halt. The mode is exited
215upon return to the main level. Can be set to 'breakpoint to enter 216upon return to the main level. Can be set to 'breakpoint to enter
216electric debug mode only when breakpoints are tripped." 217electric debug mode only when breakpoints are tripped."
@@ -295,7 +296,7 @@ The history is only saved if the variable `idlwave-shell-save-command-history'
295is non-nil." 296is non-nil."
296 :group 'idlwave-shell-command-setup 297 :group 'idlwave-shell-command-setup
297 :type 'file) 298 :type 'file)
298 299
299(defcustom idlwave-shell-show-commands 300(defcustom idlwave-shell-show-commands
300 '(run misc breakpoint) 301 '(run misc breakpoint)
301 "*A list of command types to show output from in the shell. 302 "*A list of command types to show output from in the shell.
@@ -306,12 +307,12 @@ the copious shell traffic to be displayed."
306 :type '(choice 307 :type '(choice
307 (const everything) 308 (const everything)
308 (set :tag "Checklist" :greedy t 309 (set :tag "Checklist" :greedy t
309 (const :tag "All .run and .compile commands" run) 310 (const :tag "All .run and .compile commands" run)
310 (const :tag "All breakpoint commands" breakpoint) 311 (const :tag "All breakpoint commands" breakpoint)
311 (const :tag "All debug and stepping commands" debug) 312 (const :tag "All debug and stepping commands" debug)
312 (const :tag "Close, window, retall, etc. commands" misc)))) 313 (const :tag "Close, window, retall, etc. commands" misc))))
313 314
314(defcustom idlwave-shell-examine-alist 315(defcustom idlwave-shell-examine-alist
315 '(("Print" . "print,___") 316 '(("Print" . "print,___")
316 ("Help" . "help,___") 317 ("Help" . "help,___")
317 ("Structure Help" . "help,___,/STRUCTURE") 318 ("Structure Help" . "help,___,/STRUCTURE")
@@ -322,14 +323,14 @@ the copious shell traffic to be displayed."
322 ("Ptr Valid" . "print,ptr_valid(___)") 323 ("Ptr Valid" . "print,ptr_valid(___)")
323 ("Widget Valid" . "print,widget_info(___,/VALID)") 324 ("Widget Valid" . "print,widget_info(___,/VALID)")
324 ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)")) 325 ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)"))
325 "Alist of special examine commands for popup selection. 326 "Alist of special examine commands for popup selection.
326The keys are used in the selection popup created by 327The keys are used in the selection popup created by
327`idlwave-shell-examine-select', and the corresponding value is sent as 328`idlwave-shell-examine-select', and the corresponding value is sent as
328a command to the shell, with special sequence `___' replaced by the 329a command to the shell, with special sequence `___' replaced by the
329expression being examined." 330expression being examined."
330 :group 'idlwave-shell-command-setup 331 :group 'idlwave-shell-command-setup
331 :type '(repeat 332 :type '(repeat
332 (cons 333 (cons
333 (string :tag "Label ") 334 (string :tag "Label ")
334 (string :tag "Command")))) 335 (string :tag "Command"))))
335 336
@@ -340,11 +341,12 @@ expression being examined."
340 "*Non-nil mean, put output of examine commands in their own buffer." 341 "*Non-nil mean, put output of examine commands in their own buffer."
341 :group 'idlwave-shell-command-setup 342 :group 'idlwave-shell-command-setup
342 :type 'boolean) 343 :type 'boolean)
343 344
344(defcustom idlwave-shell-comint-settings 345(defcustom idlwave-shell-comint-settings
345 '((comint-scroll-to-bottom-on-input . t) 346 '((comint-scroll-to-bottom-on-input . t)
346 (comint-scroll-to-bottom-on-output . t) 347 (comint-scroll-to-bottom-on-output . t)
347 (comint-scroll-show-maximum-output . nil)) 348 (comint-scroll-show-maximum-output . nil)
349 (comint-prompt-read-only . t))
348 350
349 "Alist of special settings for the comint variables in the IDLWAVE Shell. 351 "Alist of special settings for the comint variables in the IDLWAVE Shell.
350Each entry is a cons cell with the name of a variable and a value. 352Each entry is a cons cell with the name of a variable and a value.
@@ -403,7 +405,7 @@ strings. Here is some example code which makes use of the default spells.
403 answer = GET_KBRD(1) 405 answer = GET_KBRD(1)
404 406
405Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION', 407Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION',
406you could actually check if you are running under Emacs before printing 408you could actually check if you are running under Emacs before printing
407the magic strings. Here is a procedure which uses this. 409the magic strings. Here is a procedure which uses this.
408 410
409Usage: 411Usage:
@@ -420,7 +422,7 @@ pro idlwave_char_input,on=on,off=off
420 if keyword_set(on) then print,'<chars>' $ 422 if keyword_set(on) then print,'<chars>' $
421 else if keyword_set(off) then print,'</chars>' $ 423 else if keyword_set(off) then print,'</chars>' $
422 else print,'<onechar>' 424 else print,'<onechar>'
423 endif 425 endif
424end" 426end"
425 :group 'idlwave-shell-command-setup 427 :group 'idlwave-shell-command-setup
426 :type '(list 428 :type '(list
@@ -428,6 +430,11 @@ end"
428 (regexp :tag "Char-mode regexp") 430 (regexp :tag "Char-mode regexp")
429 (regexp :tag "Line-mode regexp"))) 431 (regexp :tag "Line-mode regexp")))
430 432
433(defcustom idlwave-shell-breakpoint-popup-menu t
434 "*If non-nil, provide a menu on mouse-3 on breakpoint lines, and
435popup help text on the line."
436 :group 'idlwave-shell-command-setup
437 :type 'boolean)
431 438
432;; Breakpoint Overlays etc 439;; Breakpoint Overlays etc
433(defgroup idlwave-shell-highlighting-and-faces nil 440(defgroup idlwave-shell-highlighting-and-faces nil
@@ -478,10 +485,10 @@ line where IDL is stopped. See also `idlwave-shell-mark-stop-line'."
478 :group 'idlwave-shell-highlighting-and-faces 485 :group 'idlwave-shell-highlighting-and-faces
479 :type 'string) 486 :type 'string)
480 487
481(defcustom idlwave-shell-electric-stop-line-face 488(defcustom idlwave-shell-electric-stop-line-face
482 (prog1 489 (prog1
483 (copy-face 'modeline 'idlwave-shell-electric-stop-line-face) 490 (copy-face 'modeline 'idlwave-shell-electric-stop-line-face)
484 (set-face-background 'idlwave-shell-electric-stop-line-face 491 (set-face-background 'idlwave-shell-electric-stop-line-face
485 idlwave-shell-electric-stop-color) 492 idlwave-shell-electric-stop-color)
486 (condition-case nil 493 (condition-case nil
487 (set-face-foreground 'idlwave-shell-electric-stop-line-face nil) 494 (set-face-foreground 'idlwave-shell-electric-stop-line-face nil)
@@ -529,7 +536,7 @@ lines which have a breakpoint. See also `idlwave-shell-mark-breakpoints'."
529 ;; backward-compatibility alias 536 ;; backward-compatibility alias
530 (put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp)) 537 (put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp))
531 538
532(defcustom idlwave-shell-disabled-breakpoint-face 539(defcustom idlwave-shell-disabled-breakpoint-face
533 'idlwave-shell-disabled-bp 540 'idlwave-shell-disabled-bp
534 "*The face for disabled breakpoint lines in the source code. 541 "*The face for disabled breakpoint lines in the source code.
535Allows you to choose the font, color and other properties for 542Allows you to choose the font, color and other properties for
@@ -584,18 +591,18 @@ before use by the shell.")
584 591
585TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or 592TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
586`idlwave-shell-temp-rinfo-save-file' is set (respectively)." 593`idlwave-shell-temp-rinfo-save-file' is set (respectively)."
587 (cond 594 (cond
588 ((eq type 'rinfo) 595 ((eq type 'rinfo)
589 (or idlwave-shell-temp-rinfo-save-file 596 (or idlwave-shell-temp-rinfo-save-file
590 (setq idlwave-shell-temp-rinfo-save-file 597 (setq idlwave-shell-temp-rinfo-save-file
591 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) 598 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
592 ((eq type 'pro) 599 ((eq type 'pro)
593 (or idlwave-shell-temp-pro-file 600 (or idlwave-shell-temp-pro-file
594 (setq idlwave-shell-temp-pro-file 601 (setq idlwave-shell-temp-pro-file
595 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) 602 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
596 (t (error "Wrong argument (idlwave-shell-temp-file): %s" 603 (t (error "Wrong argument (idlwave-shell-temp-file): %s"
597 (symbol-name type))))) 604 (symbol-name type)))))
598 605
599 606
600(defun idlwave-shell-make-temp-file (prefix) 607(defun idlwave-shell-make-temp-file (prefix)
601 "Create a temporary file." 608 "Create a temporary file."
@@ -623,7 +630,7 @@ TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
623 630
624 631
625(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur" 632(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur"
626 "Command used by `idlwave-shell-resync-dirs' to query IDL for 633 "Command used by `idlwave-shell-resync-dirs' to query IDL for
627the directory stack.") 634the directory stack.")
628 635
629(defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'" 636(defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'"
@@ -631,7 +638,7 @@ the directory stack.")
631 "The command which gets !PATH and !DIR info from the shell.") 638 "The command which gets !PATH and !DIR info from the shell.")
632 639
633(defvar idlwave-shell-mode-line-info nil 640(defvar idlwave-shell-mode-line-info nil
634 "Additional info displayed in the mode line") 641 "Additional info displayed in the mode line")
635 642
636(defvar idlwave-shell-default-directory nil 643(defvar idlwave-shell-default-directory nil
637 "The default directory in the idlwave-shell buffer, of outside use.") 644 "The default directory in the idlwave-shell buffer, of outside use.")
@@ -682,7 +689,7 @@ the directory stack.")
682 window-system) ; Window systems always 689 window-system) ; Window systems always
683 (progn 690 (progn
684 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) 691 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
685 (overlay-put idlwave-shell-stop-line-overlay 692 (overlay-put idlwave-shell-stop-line-overlay
686 'face idlwave-shell-stop-line-face)))) 693 'face idlwave-shell-stop-line-face))))
687 694
688 (t 695 (t
@@ -690,7 +697,7 @@ the directory stack.")
690 (if window-system 697 (if window-system
691 (progn 698 (progn
692 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) 699 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
693 (overlay-put idlwave-shell-stop-line-overlay 700 (overlay-put idlwave-shell-stop-line-overlay
694 'face idlwave-shell-stop-line-face))))) 701 'face idlwave-shell-stop-line-face)))))
695 702
696;; Now the expression and output overlays 703;; Now the expression and output overlays
@@ -746,12 +753,9 @@ with `*'s."
746(defvar idlwave-shell-ready nil 753(defvar idlwave-shell-ready nil
747 "If non-nil can send next command to IDL process.") 754 "If non-nil can send next command to IDL process.")
748 755
749(defvar idlwave-shell-wait-for-output nil
750 "Whether to wait for output to accumulate.")
751
752;;; The following are the types of messages we attempt to catch to 756;;; The following are the types of messages we attempt to catch to
753;;; resync our idea of where IDL execution currently is. 757;;; resync our idea of where IDL execution currently is.
754;;; 758;;;
755 759
756(defvar idlwave-shell-halt-frame nil 760(defvar idlwave-shell-halt-frame nil
757 "The frame associated with halt/breakpoint messages.") 761 "The frame associated with halt/breakpoint messages.")
@@ -795,7 +799,7 @@ IDL has currently stepped.")
795 799
796(defconst idlwave-shell-electric-debug-help 800(defconst idlwave-shell-electric-debug-help
797 " ==> IDLWAVE Electric Debug Mode Help <== 801 " ==> IDLWAVE Electric Debug Mode Help <==
798 802
799 Break Point Setting and Clearing: 803 Break Point Setting and Clearing:
800 b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.). 804 b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.).
801 d Clear nearby breakpoint. 805 d Clear nearby breakpoint.
@@ -821,7 +825,7 @@ IDL has currently stepped.")
821 Examining Expressions (with prefix for examining the region): 825 Examining Expressions (with prefix for examining the region):
822 p Print expression near point or in region ([C-u p]). 826 p Print expression near point or in region ([C-u p]).
823 ? Help on expression near point or in region ([C-u ?]). 827 ? Help on expression near point or in region ([C-u ?]).
824 x Examine expression near point or in region ([C-u x]) with 828 x Examine expression near point or in region ([C-u x]) with
825 letter completion of the examine type. 829 letter completion of the examine type.
826 830
827 Miscellaneous: 831 Miscellaneous:
@@ -875,18 +879,18 @@ IDL has currently stepped.")
875 `\\[idlwave-routine-info]' displays information about an IDL routine near point, 879 `\\[idlwave-routine-info]' displays information about an IDL routine near point,
876 just like in `idlwave-mode'. The module used is the one at point or 880 just like in `idlwave-mode'. The module used is the one at point or
877 the one whose argument list is being edited. 881 the one whose argument list is being edited.
878 To update IDLWAVE's knowledge about compiled or edited modules, use 882 To update IDLWAVE's knowledge about compiled or edited modules, use
879 \\[idlwave-update-routine-info]. 883 \\[idlwave-update-routine-info].
880 \\[idlwave-find-module] find the source of a module. 884 \\[idlwave-find-module] find the source of a module.
881 \\[idlwave-resolve] tells IDL to compile an unresolved module. 885 \\[idlwave-resolve] tells IDL to compile an unresolved module.
882 \\[idlwave-context-help] shows the online help on the item at 886 \\[idlwave-context-help] shows the online help on the item at
883 point, if online help has been installed. 887 point, if online help has been installed.
884 888
885 889
8864. Debugging 8904. Debugging
887 --------- 891 ---------
888 A complete set of commands for compiling and debugging IDL programs 892 A complete set of commands for compiling and debugging IDL programs
889 is available from the menu. Also keybindings starting with a 893 is available from the menu. Also keybindings starting with a
890 `C-c C-d' prefix are available for most commands in the *idl* buffer 894 `C-c C-d' prefix are available for most commands in the *idl* buffer
891 and also in source buffers. The best place to learn about the 895 and also in source buffers. The best place to learn about the
892 keybindings is again the menu. 896 keybindings is again the menu.
@@ -978,8 +982,8 @@ IDL has currently stepped.")
978 (idlwave-shell-display-line nil) 982 (idlwave-shell-display-line nil)
979 (setq idlwave-shell-calling-stack-index 0) 983 (setq idlwave-shell-calling-stack-index 0)
980 (setq idlwave-shell-only-prompt-pattern 984 (setq idlwave-shell-only-prompt-pattern
981 (concat "\\`[ \t\n]*" 985 (concat "\\`[ \t\n]*"
982 (substring idlwave-shell-prompt-pattern 1) 986 (substring idlwave-shell-prompt-pattern 1)
983 "[ \t\n]*\\'")) 987 "[ \t\n]*\\'"))
984 988
985 (when idlwave-shell-query-for-class 989 (when idlwave-shell-query-for-class
@@ -992,15 +996,12 @@ IDL has currently stepped.")
992 (set-marker comint-last-input-end (point)) 996 (set-marker comint-last-input-end (point))
993 (setq idlwave-idlwave_routine_info-compiled nil) 997 (setq idlwave-idlwave_routine_info-compiled nil)
994 (setq idlwave-shell-ready nil) 998 (setq idlwave-shell-ready nil)
995 (setq idlwave-shell-wait-for-output nil)
996 (setq idlwave-shell-bp-alist nil) 999 (setq idlwave-shell-bp-alist nil)
997 (idlwave-shell-update-bp-overlays) ; Throw away old overlays 1000 (idlwave-shell-update-bp-overlays) ; Throw away old overlays
998 (setq idlwave-shell-sources-alist nil) 1001 (setq idlwave-shell-sources-alist nil)
999 (setq idlwave-shell-default-directory default-directory) 1002 (setq idlwave-shell-default-directory default-directory)
1000 (setq idlwave-shell-hide-output nil) 1003 (setq idlwave-shell-hide-output nil)
1001 1004
1002 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1003 ;;(make-local-hook 'kill-buffer-hook)
1004 (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm 1005 (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm
1005 nil 'local) 1006 nil 'local)
1006 (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local) 1007 (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local)
@@ -1014,14 +1015,14 @@ IDL has currently stepped.")
1014 (while (setq entry (pop list)) 1015 (while (setq entry (pop list))
1015 (set (make-local-variable (car entry)) (cdr entry))))) 1016 (set (make-local-variable (car entry)) (cdr entry)))))
1016 1017
1017 1018
1018 (unless (memq 'comint-carriage-motion 1019 (unless (memq 'comint-carriage-motion
1019 (default-value 'comint-output-filter-functions)) 1020 (default-value 'comint-output-filter-functions))
1020 ;; Strip those pesky ctrl-m's. 1021 ;; Strip those pesky ctrl-m's.
1021 (add-hook 'comint-output-filter-functions 1022 (add-hook 'comint-output-filter-functions
1022 (lambda (string) 1023 (lambda (string)
1023 (when (string-match "\r" string) 1024 (when (string-match "\r" string)
1024 (let ((pmark (process-mark (get-buffer-process 1025 (let ((pmark (process-mark (get-buffer-process
1025 (current-buffer))))) 1026 (current-buffer)))))
1026 (save-excursion 1027 (save-excursion
1027 ;; bare CR -> delete preceding line 1028 ;; bare CR -> delete preceding line
@@ -1043,8 +1044,6 @@ IDL has currently stepped.")
1043 (set (make-local-variable 'comment-start) ";") 1044 (set (make-local-variable 'comment-start) ";")
1044 (setq abbrev-mode t) 1045 (setq abbrev-mode t)
1045 1046
1046 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1047 ;;(make-local-hook 'post-command-hook)
1048 (add-hook 'post-command-hook 'idlwave-command-hook nil t) 1047 (add-hook 'post-command-hook 'idlwave-command-hook nil t)
1049 1048
1050 ;; Read the command history? 1049 ;; Read the command history?
@@ -1063,9 +1062,8 @@ IDL has currently stepped.")
1063 (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide) 1062 (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide)
1064 ;; Turn off IDL's ^d interpreting, and define a system 1063 ;; Turn off IDL's ^d interpreting, and define a system
1065 ;; variable which knows the version of IDLWAVE 1064 ;; variable which knows the version of IDLWAVE
1066 (idlwave-shell-send-command 1065 (idlwave-shell-send-command
1067 (format "defsysv,'!idlwave_version','%s',1" 1066 (format "defsysv,'!idlwave_version','%s',1" idlwave-mode-version)
1068 idlwave-mode-version)
1069 nil 'hide) 1067 nil 'hide)
1070 ;; Get the paths if they weren't read in from file 1068 ;; Get the paths if they weren't read in from file
1071 (if (and (not idlwave-path-alist) 1069 (if (and (not idlwave-path-alist)
@@ -1085,7 +1083,7 @@ IDL has currently stepped.")
1085 (setq idlwave-system-directory sysdir) 1083 (setq idlwave-system-directory sysdir)
1086 (put 'idlwave-system-directory 'from-shell t)) 1084 (put 'idlwave-system-directory 'from-shell t))
1087 ;; Preserve any existing flags 1085 ;; Preserve any existing flags
1088 (setq idlwave-path-alist 1086 (setq idlwave-path-alist
1089 (mapcar (lambda (x) 1087 (mapcar (lambda (x)
1090 (let ((old-entry (assoc x old-path-alist))) 1088 (let ((old-entry (assoc x old-path-alist)))
1091 (if old-entry 1089 (if old-entry
@@ -1093,7 +1091,7 @@ IDL has currently stepped.")
1093 (list x)))) 1091 (list x))))
1094 dirs)) 1092 dirs))
1095 (put 'idlwave-path-alist 'from-shell t) 1093 (put 'idlwave-path-alist 'from-shell t)
1096 (if idlwave-path-alist 1094 (if idlwave-path-alist
1097 (if (and idlwave-auto-write-paths 1095 (if (and idlwave-auto-write-paths
1098 (not idlwave-library-path) 1096 (not idlwave-library-path)
1099 (not no-write) ) 1097 (not no-write) )
@@ -1129,8 +1127,8 @@ IDL has currently stepped.")
1129 (frame (selected-frame))) 1127 (frame (selected-frame)))
1130 (catch 'exit 1128 (catch 'exit
1131 (while flist 1129 (while flist
1132 (if (not (eq (car flist) 1130 (if (not (eq (car flist)
1133 idlwave-shell-idl-wframe)) 1131 idlwave-shell-idl-wframe))
1134 (throw 'exit (car flist)) 1132 (throw 'exit (car flist))
1135 (setq flist (cdr flist)))))) 1133 (setq flist (cdr flist))))))
1136 (make-frame)) 1134 (make-frame))
@@ -1148,9 +1146,9 @@ IDL has currently stepped.")
1148 ;; We do not have a source frame, so we use this one. 1146 ;; We do not have a source frame, so we use this one.
1149 (setq idlwave-shell-display-wframe (selected-frame))) 1147 (setq idlwave-shell-display-wframe (selected-frame)))
1150 ;; Return a new frame 1148 ;; Return a new frame
1151 (setq idlwave-shell-idl-wframe 1149 (setq idlwave-shell-idl-wframe
1152 (make-frame idlwave-shell-frame-parameters))))) 1150 (make-frame idlwave-shell-frame-parameters)))))
1153 1151
1154;;;###autoload 1152;;;###autoload
1155(defun idlwave-shell (&optional arg quick) 1153(defun idlwave-shell (&optional arg quick)
1156 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. 1154 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'.
@@ -1177,14 +1175,14 @@ See also the variable `idlwave-shell-prompt-pattern'.
1177 (delete-other-windows)) 1175 (delete-other-windows))
1178 (and idlwave-shell-use-dedicated-frame 1176 (and idlwave-shell-use-dedicated-frame
1179 (setq idlwave-shell-idl-wframe (selected-frame))) 1177 (setq idlwave-shell-idl-wframe (selected-frame)))
1180 (add-hook 'idlwave-shell-sentinel-hook 1178 (add-hook 'idlwave-shell-sentinel-hook
1181 'save-buffers-kill-emacs t)) 1179 'save-buffers-kill-emacs t))
1182 1180
1183 ;; A non-nil arg means, we want a dedicated frame. This will last 1181 ;; A non-nil arg means, we want a dedicated frame. This will last
1184 ;; for the current editing session. 1182 ;; for the current editing session.
1185 (if arg (setq idlwave-shell-use-dedicated-frame t)) 1183 (if arg (setq idlwave-shell-use-dedicated-frame t))
1186 (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil)) 1184 (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil))
1187 1185
1188 ;; Check if the process still exists. If not, create it. 1186 ;; Check if the process still exists. If not, create it.
1189 (unless (comint-check-proc (idlwave-shell-buffer)) 1187 (unless (comint-check-proc (idlwave-shell-buffer))
1190 (let* ((prg (or idlwave-shell-explicit-file-name "idl")) 1188 (let* ((prg (or idlwave-shell-explicit-file-name "idl"))
@@ -1211,9 +1209,9 @@ See also the variable `idlwave-shell-prompt-pattern'.
1211 (if (eq (selected-frame) (window-frame window)) 1209 (if (eq (selected-frame) (window-frame window))
1212 (select-window window)))) 1210 (select-window window))))
1213 ;; Save the paths at the end 1211 ;; Save the paths at the end
1214 (add-hook 'idlwave-shell-sentinel-hook 1212 (add-hook 'idlwave-shell-sentinel-hook
1215 (lambda () 1213 (lambda ()
1216 (if (and 1214 (if (and
1217 idlwave-auto-write-paths 1215 idlwave-auto-write-paths
1218 idlwave-path-alist 1216 idlwave-path-alist
1219 (not idlwave-library-path) 1217 (not idlwave-library-path)
@@ -1244,7 +1242,7 @@ Return either nil or 'hide."
1244 (setq idlwave-shell-show-commands (list type)))) 1242 (setq idlwave-shell-show-commands (list type))))
1245 1243
1246 1244
1247(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt 1245(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt
1248 show-if-error) 1246 show-if-error)
1249 "Send a command to IDL process. 1247 "Send a command to IDL process.
1250 1248
@@ -1265,18 +1263,18 @@ If optional fourth argument PREEMPT is non-nil CMD is put at front of
1265`idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all 1263`idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all
1266output to complete and the next prompt to arrive before returning 1264output to complete and the next prompt to arrive before returning
1267\(useful if you need an answer now\). IDL is considered ready if the 1265\(useful if you need an answer now\). IDL is considered ready if the
1268prompt is present and if `idlwave-shell-ready' is non-nil. 1266prompt is present and if `idlwave-shell-ready' is non-nil.
1269 1267
1270If SHOW-IF-ERROR is non-nil, show the output it it contains an error 1268If SHOW-IF-ERROR is non-nil, show the output it it contains an error
1271message, independent of what HIDE is set to." 1269message, independent of what HIDE is set to."
1272 1270
1273; (setq hide nil) ; FIXME: turn this on for debugging only 1271; (setq hide nil) ; FIXME: turn this on for debugging only
1274; (if (null cmd) 1272; (if (null cmd)
1275; (progn 1273; (progn
1276; (message "SENDING Pending commands: %s" 1274; (message "SENDING Pending commands: %s"
1277; (prin1-to-string idlwave-shell-pending-commands))) 1275; (prin1-to-string idlwave-shell-pending-commands)))
1278; (message "SENDING %s|||%s" cmd pcmd)) 1276; (message "SENDING %s|||%s" cmd pcmd))
1279 (if (and (symbolp idlwave-shell-show-commands) 1277 (if (and (symbolp idlwave-shell-show-commands)
1280 (eq idlwave-shell-show-commands 'everything)) 1278 (eq idlwave-shell-show-commands 'everything))
1281 (setq hide nil)) 1279 (setq hide nil))
1282 (let ((save-buffer (current-buffer)) 1280 (let ((save-buffer (current-buffer))
@@ -1304,7 +1302,7 @@ message, independent of what HIDE is set to."
1304 (append (list (list cmd pcmd hide show-if-error)) 1302 (append (list (list cmd pcmd hide show-if-error))
1305 idlwave-shell-pending-commands) 1303 idlwave-shell-pending-commands)
1306 ;; Put at end. 1304 ;; Put at end.
1307 (append idlwave-shell-pending-commands 1305 (append idlwave-shell-pending-commands
1308 (list (list cmd pcmd hide show-if-error)))))) 1306 (list (list cmd pcmd hide show-if-error))))))
1309 ;; Check if IDL ready 1307 ;; Check if IDL ready
1310 (let ((save-point (point-marker))) 1308 (let ((save-point (point-marker)))
@@ -1339,9 +1337,11 @@ message, independent of what HIDE is set to."
1339 (set-marker comint-last-input-end (point)) 1337 (set-marker comint-last-input-end (point))
1340 (comint-simple-send proc cmd) 1338 (comint-simple-send proc cmd)
1341 (setq idlwave-shell-ready nil) 1339 (setq idlwave-shell-ready nil)
1342 (when (equal preempt 'wait) ; Get all the output at once 1340 (if (equal preempt 'wait) ; Get all the output at once
1343 (setq idlwave-shell-wait-for-output t) 1341 (while (not idlwave-shell-ready)
1344 (accept-process-output proc)))) 1342 (when (not (accept-process-output proc 6)) ; long wait
1343 (setq idlwave-shell-pending-commands nil)
1344 (error "Process timed out"))))))
1345 (goto-char save-point)) 1345 (goto-char save-point))
1346 (set-buffer save-buffer)))) 1346 (set-buffer save-buffer))))
1347 1347
@@ -1353,7 +1353,7 @@ message, independent of what HIDE is set to."
1353 (if (or (not (setq buf (get-buffer (idlwave-shell-buffer)))) 1353 (if (or (not (setq buf (get-buffer (idlwave-shell-buffer))))
1354 (not (setq proc (get-buffer-process buf)))) 1354 (not (setq proc (get-buffer-process buf))))
1355 (funcall errf "Shell is not running")) 1355 (funcall errf "Shell is not running"))
1356 (if (equal c ?\C-g) 1356 (if (equal c ?\C-g)
1357 (funcall errf "Abort") 1357 (funcall errf "Abort")
1358 (comint-send-string proc (char-to-string c))))) 1358 (comint-send-string proc (char-to-string c)))))
1359 1359
@@ -1394,7 +1394,7 @@ when the IDL prompt gets displayed again after the current IDL command."
1394 (if idlwave-shell-ready 1394 (if idlwave-shell-ready
1395 (funcall errf "No IDL program seems to be waiting for input")) 1395 (funcall errf "No IDL program seems to be waiting for input"))
1396 1396
1397 ;; OK, start the loop 1397 ;; OK, start the loop
1398 (message "Character mode on: Sending single chars (`C-g' to exit)") 1398 (message "Character mode on: Sending single chars (`C-g' to exit)")
1399 (message 1399 (message
1400 (catch 'exit 1400 (catch 'exit
@@ -1474,133 +1474,123 @@ error messages, etc."
1474 (setq output (substring output (string-match "\n" output))) 1474 (setq output (substring output (string-match "\n" output)))
1475 (while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output) 1475 (while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output)
1476 (setq output (replace-match "" nil t output))) 1476 (setq output (replace-match "" nil t output)))
1477 (unless 1477 (unless
1478 (string-match idlwave-shell-only-prompt-pattern output) 1478 (string-match idlwave-shell-only-prompt-pattern output)
1479 output)) 1479 output))
1480 1480
1481(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*" 1481(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*"
1482 "Buffer containing hidden output from IDL commands.") 1482 "Buffer containing hidden output from IDL commands.")
1483(defvar idlwave-shell-current-state nil) 1483(defvar idlwave-shell-current-state nil)
1484 1484
1485(defun idlwave-shell-filter (proc string) 1485(defun idlwave-shell-filter (proc string)
1486 "Watch for IDL prompt and filter incoming text. 1486 "Watch for IDL prompt and filter incoming text.
1487When the IDL prompt is received executes `idlwave-shell-post-command-hook' 1487When the IDL prompt is received executes `idlwave-shell-post-command-hook'
1488and then calls `idlwave-shell-send-command' for any pending commands." 1488and then calls `idlwave-shell-send-command' for any pending commands."
1489 ;; We no longer do the cleanup here - this is done by the process sentinel 1489 ;; We no longer do the cleanup here - this is done by the process sentinel
1490 (when (eq (process-status idlwave-shell-process-name) 'run) 1490 (if (eq (process-status idlwave-shell-process-name) 'run)
1491 ;; OK, process is still running, so we can use it. 1491 ;; OK, process is still running, so we can use it.
1492 (let ((data (match-data)) p full-output) 1492 (let ((data (match-data)) p full-output)
1493 (unwind-protect 1493 (unwind-protect
1494 (progn 1494 (progn
1495 ;; Ring the bell if necessary 1495 ;; Ring the bell if necessary
1496 (while (setq p (string-match "\C-G" string)) 1496 (while (setq p (string-match "\C-G" string))
1497 (ding) 1497 (ding)
1498 (aset string p ?\C-j )) 1498 (aset string p ?\C-j ))
1499 (if idlwave-shell-hide-output 1499 (if idlwave-shell-hide-output
1500 (save-excursion 1500 (save-excursion
1501 (while (setq p (string-match "\C-M" string)) 1501 (while (setq p (string-match "\C-M" string))
1502 (aset string p ?\ )) 1502 (aset string p ?\ ))
1503 (set-buffer 1503 (set-buffer
1504 (get-buffer-create idlwave-shell-hidden-output-buffer)) 1504 (get-buffer-create idlwave-shell-hidden-output-buffer))
1505 (goto-char (point-max)) 1505 (goto-char (point-max))
1506 (insert string)) 1506 (insert string))
1507 (idlwave-shell-comint-filter proc string)) 1507 (idlwave-shell-comint-filter proc string))
1508 ;; Watch for magic - need to accumulate the current line 1508 ;; Watch for magic - need to accumulate the current line
1509 ;; since it may not be sent all at once. 1509 ;; since it may not be sent all at once.
1510 (if (string-match "\n" string) 1510 (if (string-match "\n" string)
1511 (progn 1511 (progn
1512 (if idlwave-shell-use-input-mode-magic 1512 (if idlwave-shell-use-input-mode-magic
1513 (idlwave-shell-input-mode-magic 1513 (idlwave-shell-input-mode-magic
1514 (concat idlwave-shell-accumulation string))) 1514 (concat idlwave-shell-accumulation string)))
1515 (setq idlwave-shell-accumulation 1515 (setq idlwave-shell-accumulation
1516 (substring string 1516 (substring string
1517 (progn (string-match "\\(.*[\n\r]+\\)*" 1517 (progn (string-match "\\(.*[\n\r]+\\)*"
1518 string) 1518 string)
1519 (match-end 0))))) 1519 (match-end 0)))))
1520 (setq idlwave-shell-accumulation 1520 (setq idlwave-shell-accumulation
1521 (concat idlwave-shell-accumulation string))) 1521 (concat idlwave-shell-accumulation string)))
1522 1522
1523 1523
1524;;; Test/Debug code 1524;;; Test/Debug code
1525; (save-excursion (set-buffer 1525; (save-excursion (set-buffer
1526; (get-buffer-create "*idlwave-shell-output*")) 1526; (get-buffer-create "*idlwave-shell-output*"))
1527; (goto-char (point-max)) 1527; (goto-char (point-max))
1528; (insert "\nSTRING===>\n" string "\n<====\n")) 1528; (insert "\nSTRING===>\n" string "\n<====\n"))
1529 1529
1530 ;; Check for prompt in current accumulating output 1530 ;; Check for prompt in current accumulating output
1531 (if (setq idlwave-shell-ready 1531 (when (setq idlwave-shell-ready
1532 (string-match idlwave-shell-prompt-pattern 1532 (string-match idlwave-shell-prompt-pattern
1533 idlwave-shell-accumulation)) 1533 idlwave-shell-accumulation))
1534 (progn 1534 ;; Gather the command output
1535 ;; Gather the command output 1535 (if idlwave-shell-hide-output
1536 (save-excursion
1537 (set-buffer idlwave-shell-hidden-output-buffer)
1538 (setq full-output (buffer-string))
1539 (goto-char (point-max))
1540 (re-search-backward idlwave-shell-prompt-pattern nil t)
1541 (goto-char (match-end 0))
1542 (setq idlwave-shell-command-output
1543 (buffer-substring (point-min) (point)))
1544 (delete-region (point-min) (point)))
1545 (setq idlwave-shell-command-output
1546 (with-current-buffer (process-buffer proc)
1547 (buffer-substring
1548 (save-excursion
1549 (goto-char (process-mark proc))
1550 (forward-line 0)
1551 (point))
1552 comint-last-input-end))))
1553
1554 ;; Scan for state and do post commands - bracket
1555 ;; them with idlwave-shell-ready=nil since they may
1556 ;; call idlwave-shell-send-command themselves.
1557 (let ((idlwave-shell-ready nil))
1558 (idlwave-shell-scan-for-state)
1559 ;; Show the output in the shell if it contains an error
1536 (if idlwave-shell-hide-output 1560 (if idlwave-shell-hide-output
1537 (save-excursion 1561 (if (and idlwave-shell-show-if-error
1538 (set-buffer idlwave-shell-hidden-output-buffer) 1562 (eq idlwave-shell-current-state 'error))
1539 (setq full-output (buffer-string)) 1563 (idlwave-shell-comint-filter proc full-output)
1540 (goto-char (point-max)) 1564 ;; If it's only *mostly* hidden, filter % lines,
1541 (re-search-backward idlwave-shell-prompt-pattern nil t) 1565 ;; and show anything that remains
1542 (goto-char (match-end 0)) 1566 (if (eq idlwave-shell-hide-output 'mostly)
1543 (setq idlwave-shell-command-output 1567 (let ((filtered
1544 (buffer-substring (point-min) (point))) 1568 (idlwave-shell-filter-hidden-output
1545 (delete-region (point-min) (point))) 1569 full-output)))
1546 (setq idlwave-shell-command-output 1570 (if filtered
1547 (with-current-buffer (process-buffer proc) 1571 (idlwave-shell-comint-filter
1548 (buffer-substring 1572 proc filtered))))))
1549 (save-excursion 1573
1550 (goto-char (process-mark proc)) 1574 ;; Call the post-command hook
1551 (beginning-of-line nil) 1575 (if (listp idlwave-shell-post-command-hook)
1552 (point)) 1576 (progn
1553 comint-last-input-end)))) 1577 ;(message "Calling list")
1554 1578 ;(prin1 idlwave-shell-post-command-hook)
1555 ;; Scan for state and do post commands - bracket 1579 (eval idlwave-shell-post-command-hook))
1556 ;; them with idlwave-shell-ready=nil since they may 1580 ;(message "Calling command function")
1557 ;; call idlwave-shell-send-command themselves. 1581 (funcall idlwave-shell-post-command-hook))
1558 (let ((idlwave-shell-ready nil)) 1582
1559 (idlwave-shell-scan-for-state) 1583 ;; Reset to default state for next command.
1560 ;; Show the output in the shell if it contains an error 1584 ;; Also we do not want to find this prompt again.
1561 (if idlwave-shell-hide-output 1585 (setq idlwave-shell-accumulation nil
1562 (if (and idlwave-shell-show-if-error 1586 idlwave-shell-command-output nil
1563 (eq idlwave-shell-current-state 'error)) 1587 idlwave-shell-post-command-hook nil
1564 (idlwave-shell-comint-filter proc full-output) 1588 idlwave-shell-hide-output nil
1565 ;; If it's only *mostly* hidden, filter % lines, 1589 idlwave-shell-show-if-error nil))
1566 ;; and show anything that remains 1590 ;; Done with post command. Do pending command if
1567 (if (eq idlwave-shell-hide-output 'mostly) 1591 ;; any.
1568 (let ((filtered 1592 (idlwave-shell-send-command)))
1569 (idlwave-shell-filter-hidden-output 1593 (store-match-data data)))))
1570 full-output)))
1571 (if filtered
1572 (idlwave-shell-comint-filter
1573 proc filtered))))))
1574
1575 ;; Call the post-command hook
1576 (if (listp idlwave-shell-post-command-hook)
1577 (progn
1578 ;(message "Calling list")
1579 ;(prin1 idlwave-shell-post-command-hook)
1580 (eval idlwave-shell-post-command-hook))
1581 ;(message "Calling command function")
1582 (funcall idlwave-shell-post-command-hook))
1583
1584 ;; Reset to default state for next command.
1585 ;; Also we do not want to find this prompt again.
1586 (setq idlwave-shell-accumulation nil
1587 idlwave-shell-command-output nil
1588 idlwave-shell-post-command-hook nil
1589 idlwave-shell-hide-output nil
1590 idlwave-shell-show-if-error nil
1591 idlwave-shell-wait-for-output nil))
1592 ;; Done with post command. Do pending command if
1593 ;; any.
1594 (idlwave-shell-send-command))
1595 ;; We didn't get the prompt yet... maybe accept more output
1596 (when idlwave-shell-wait-for-output
1597;;; Test/Debug code
1598; (save-excursion (set-buffer
1599; (get-buffer-create "*idlwave-shell-output*"))
1600; (goto-char (point-max))
1601; (insert "\n<=== WAITING ON OUTPUT ==>\n"))
1602 (accept-process-output proc 1))))
1603 (store-match-data data)))))
1604 1594
1605(defun idlwave-shell-sentinel (process event) 1595(defun idlwave-shell-sentinel (process event)
1606 "The sentinel function for the IDLWAVE shell process." 1596 "The sentinel function for the IDLWAVE shell process."
@@ -1616,7 +1606,7 @@ and then calls `idlwave-shell-send-command' for any pending commands."
1616 (condition-case nil 1606 (condition-case nil
1617 (comint-write-input-ring) 1607 (comint-write-input-ring)
1618 (error nil))))) 1608 (error nil)))))
1619 1609
1620 (when (and (> (length (frame-list)) 1) 1610 (when (and (> (length (frame-list)) 1)
1621 (frame-live-p idlwave-shell-idl-wframe)) 1611 (frame-live-p idlwave-shell-idl-wframe))
1622 (delete-frame idlwave-shell-idl-wframe) 1612 (delete-frame idlwave-shell-idl-wframe)
@@ -1640,8 +1630,8 @@ and then calls `idlwave-shell-send-command' for any pending commands."
1640;; in module and file names. I am not sure if it will be necessary to 1630;; in module and file names. I am not sure if it will be necessary to
1641;; change this. Currently it seems to work the way it is. 1631;; change this. Currently it seems to work the way it is.
1642(defvar idlwave-shell-syntax-error 1632(defvar idlwave-shell-syntax-error
1643 "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" 1633 "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
1644 "A regular expression to match an IDL syntax error. 1634 "A regular expression to match an IDL syntax error.
1645The 1st pair matches the file name, the second pair matches the line 1635The 1st pair matches the file name, the second pair matches the line
1646number.") 1636number.")
1647 1637
@@ -1649,16 +1639,16 @@ number.")
1649 "^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" 1639 "^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
1650 "A regular expression to match any IDL error.") 1640 "A regular expression to match any IDL error.")
1651 1641
1652(defvar idlwave-shell-halting-error 1642(defvar idlwave-shell-halting-error
1653 "^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n" 1643 "^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n"
1654 "A regular expression to match errors which halt execution.") 1644 "A regular expression to match errors which halt execution.")
1655 1645
1656(defvar idlwave-shell-cant-continue-error 1646(defvar idlwave-shell-cant-continue-error
1657 "^% Can't continue from this point.\n" 1647 "^% Can't continue from this point.\n"
1658 "A regular expression to match errors stepping errors.") 1648 "A regular expression to match errors stepping errors.")
1659 1649
1660(defvar idlwave-shell-file-line-message 1650(defvar idlwave-shell-file-line-message
1661 (concat 1651 (concat
1662 "\\(" ; program name group (1) 1652 "\\(" ; program name group (1)
1663 "\\$MAIN\\$\\|" ; main level routine 1653 "\\$MAIN\\$\\|" ; main level routine
1664 "\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..] 1654 "\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..]
@@ -1676,7 +1666,7 @@ number.")
1676 "\\)" ; end line number group (5) 1666 "\\)" ; end line number group (5)
1677 ) 1667 )
1678 "*A regular expression to parse out the file name and line number. 1668 "*A regular expression to parse out the file name and line number.
1679The 1st group should match the subroutine name. 1669The 1st group should match the subroutine name.
1680The 3rd group is the line number. 1670The 3rd group is the line number.
1681The 5th group is the file name. 1671The 5th group is the file name.
1682All parts may contain linebreaks surrounded by spaces. This is important 1672All parts may contain linebreaks surrounded by spaces. This is important
@@ -1695,9 +1685,9 @@ the above."
1695 (cond 1685 (cond
1696 ;; Make sure we have output 1686 ;; Make sure we have output
1697 ((not idlwave-shell-command-output)) 1687 ((not idlwave-shell-command-output))
1698 1688
1699 ;; First Priority: Syntax and other errors 1689 ;; First Priority: Syntax and other errors
1700 ((or 1690 ((or
1701 (string-match idlwave-shell-syntax-error 1691 (string-match idlwave-shell-syntax-error
1702 idlwave-shell-command-output) 1692 idlwave-shell-command-output)
1703 (string-match idlwave-shell-other-error 1693 (string-match idlwave-shell-other-error
@@ -1711,19 +1701,19 @@ the above."
1711 (setq idlwave-shell-error-last (point))) 1701 (setq idlwave-shell-error-last (point)))
1712 (setq idlwave-shell-current-state 'error) 1702 (setq idlwave-shell-current-state 'error)
1713 (idlwave-shell-goto-next-error)) 1703 (idlwave-shell-goto-next-error))
1714 1704
1715 ;; Second Priority: Halting errors 1705 ;; Second Priority: Halting errors
1716 ((string-match idlwave-shell-halting-error 1706 ((string-match idlwave-shell-halting-error
1717 idlwave-shell-command-output) 1707 idlwave-shell-command-output)
1718 ;; Grab the file and line state info. 1708 ;; Grab the file and line state info.
1719 (setq idlwave-shell-calling-stack-index 0) 1709 (setq idlwave-shell-calling-stack-index 0)
1720 (setq idlwave-shell-halt-frame 1710 (setq idlwave-shell-halt-frame
1721 (idlwave-shell-parse-line 1711 (idlwave-shell-parse-line
1722 (substring idlwave-shell-command-output 1712 (substring idlwave-shell-command-output
1723 (match-beginning 2))) 1713 (match-beginning 2)))
1724 idlwave-shell-current-state 'error) 1714 idlwave-shell-current-state 'error)
1725 (idlwave-shell-display-line (idlwave-shell-pc-frame))) 1715 (idlwave-shell-display-line (idlwave-shell-pc-frame)))
1726 1716
1727 ;; Third Priority: Various types of innocuous HALT and 1717 ;; Third Priority: Various types of innocuous HALT and
1728 ;; TRACEBACK messages. 1718 ;; TRACEBACK messages.
1729 ((or (setq trace (string-match idlwave-shell-trace-message-re 1719 ((or (setq trace (string-match idlwave-shell-trace-message-re
@@ -1733,25 +1723,25 @@ the above."
1733 ;; Grab the file and line state info. 1723 ;; Grab the file and line state info.
1734 (setq idlwave-shell-calling-stack-index 0) 1724 (setq idlwave-shell-calling-stack-index 0)
1735 (setq idlwave-shell-halt-frame 1725 (setq idlwave-shell-halt-frame
1736 (idlwave-shell-parse-line 1726 (idlwave-shell-parse-line
1737 (substring idlwave-shell-command-output (match-end 0)))) 1727 (substring idlwave-shell-command-output (match-end 0))))
1738 (setq idlwave-shell-current-state 'halt) 1728 (setq idlwave-shell-current-state 'halt)
1739 ;; Don't debug trace messages 1729 ;; Don't debug trace messages
1740 (idlwave-shell-display-line (idlwave-shell-pc-frame) nil 1730 (idlwave-shell-display-line (idlwave-shell-pc-frame) nil
1741 (if trace 'no-debug))) 1731 (if trace 'no-debug)))
1742 1732
1743 ;; Fourth Priority: Breakpoints 1733 ;; Fourth Priority: Breakpoints
1744 ((string-match idlwave-shell-break-message 1734 ((string-match idlwave-shell-break-message
1745 idlwave-shell-command-output) 1735 idlwave-shell-command-output)
1746 (setq idlwave-shell-calling-stack-index 0) 1736 (setq idlwave-shell-calling-stack-index 0)
1747 (setq idlwave-shell-halt-frame 1737 (setq idlwave-shell-halt-frame
1748 (idlwave-shell-parse-line 1738 (idlwave-shell-parse-line
1749 (substring idlwave-shell-command-output (match-end 0)))) 1739 (substring idlwave-shell-command-output (match-end 0))))
1750 ;; We used to count hits on breakpoints 1740 ;; We used to count hits on breakpoints
1751 ;; this is no longer supported since IDL breakpoints 1741 ;; this is no longer supported since IDL breakpoints
1752 ;; have learned counting. 1742 ;; have learned counting.
1753 ;; Do breakpoint command processing 1743 ;; Do breakpoint command processing
1754 (let ((bp (assoc 1744 (let ((bp (assoc
1755 (list 1745 (list
1756 (nth 0 idlwave-shell-halt-frame) 1746 (nth 0 idlwave-shell-halt-frame)
1757 (nth 1 idlwave-shell-halt-frame)) 1747 (nth 1 idlwave-shell-halt-frame))
@@ -1764,9 +1754,9 @@ the above."
1764 ;; A breakpoint that we did not know about - perhaps it was 1754 ;; A breakpoint that we did not know about - perhaps it was
1765 ;; set by the user... Let's update our list. 1755 ;; set by the user... Let's update our list.
1766 (idlwave-shell-bp-query))) 1756 (idlwave-shell-bp-query)))
1767 (setq idlwave-shell-current-state 'breakpoint) 1757 (setq idlwave-shell-current-state 'breakpoint)
1768 (idlwave-shell-display-line (idlwave-shell-pc-frame))) 1758 (idlwave-shell-display-line (idlwave-shell-pc-frame)))
1769 1759
1770 ;; Last Priority: Can't Step errors 1760 ;; Last Priority: Can't Step errors
1771 ((string-match idlwave-shell-cant-continue-error 1761 ((string-match idlwave-shell-cant-continue-error
1772 idlwave-shell-command-output) 1762 idlwave-shell-command-output)
@@ -1775,13 +1765,14 @@ the above."
1775 ;; Otherwise, no particular state 1765 ;; Otherwise, no particular state
1776 (t (setq idlwave-shell-current-state nil))))) 1766 (t (setq idlwave-shell-current-state nil)))))
1777 1767
1768
1778(defun idlwave-shell-parse-line (string &optional skip-main) 1769(defun idlwave-shell-parse-line (string &optional skip-main)
1779 "Parse IDL message for the subroutine, file name and line number. 1770 "Parse IDL message for the subroutine, file name and line number.
1780We need to work hard here to remove the stupid line breaks inserted by 1771We need to work hard here to remove the stupid line breaks inserted by
1781IDL5. These line breaks can be right in the middle of procedure 1772IDL5. These line breaks can be right in the middle of procedure
1782or file names. 1773or file names.
1783It is very difficult to come up with a robust solution. This one seems 1774It is very difficult to come up with a robust solution. This one seems
1784to be pretty good though. 1775to be pretty good though.
1785 1776
1786Here is in what ways it improves over the previous solution: 1777Here is in what ways it improves over the previous solution:
1787 1778
@@ -1806,7 +1797,7 @@ statements."
1806 (setq procedure (match-string 1 string) 1797 (setq procedure (match-string 1 string)
1807 number (match-string 3 string) 1798 number (match-string 3 string)
1808 file (match-string 5 string)) 1799 file (match-string 5 string))
1809 1800
1810 ;; Repair the strings 1801 ;; Repair the strings
1811 (setq procedure (idlwave-shell-repair-string procedure)) 1802 (setq procedure (idlwave-shell-repair-string procedure))
1812 (setq number (idlwave-shell-repair-string number)) 1803 (setq number (idlwave-shell-repair-string number))
@@ -1832,7 +1823,7 @@ The last line of STRING may be garbage - we check which one makes a valid
1832file name." 1823file name."
1833 (let ((file1 "") (file2 "") (start 0)) 1824 (let ((file1 "") (file2 "") (start 0))
1834 ;; We scan no further than to the next "^%" line 1825 ;; We scan no further than to the next "^%" line
1835 (if (string-match "^%" file) 1826 (if (string-match "^%" file)
1836 (setq file (substring file 0 (match-beginning 0)))) 1827 (setq file (substring file 0 (match-beginning 0))))
1837 ;; Take out the line breaks 1828 ;; Take out the line breaks
1838 (while (string-match "[ \t]*\n[ \t]*" file start) 1829 (while (string-match "[ \t]*\n[ \t]*" file start)
@@ -1887,7 +1878,7 @@ file name."
1887The size is given by `idlwave-shell-graphics-window-size'." 1878The size is given by `idlwave-shell-graphics-window-size'."
1888 (interactive "P") 1879 (interactive "P")
1889 (let ((n (if n (prefix-numeric-value n) 0))) 1880 (let ((n (if n (prefix-numeric-value n) 0)))
1890 (idlwave-shell-send-command 1881 (idlwave-shell-send-command
1891 (apply 'format "window,%d,xs=%d,ys=%d" 1882 (apply 'format "window,%d,xs=%d,ys=%d"
1892 n idlwave-shell-graphics-window-size) 1883 n idlwave-shell-graphics-window-size)
1893 nil (idlwave-shell-hide-p 'misc) nil t))) 1884 nil (idlwave-shell-hide-p 'misc) nil t)))
@@ -1907,16 +1898,16 @@ directory."
1907Also get rid of widget events in the queue." 1898Also get rid of widget events in the queue."
1908 (interactive "P") 1899 (interactive "P")
1909 (save-selected-window 1900 (save-selected-window
1910 ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & 1901 ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events &
1911 (idlwave-shell-send-command "retall" nil 1902 (idlwave-shell-send-command "retall" nil
1912 (if (idlwave-shell-hide-p 'misc) 'mostly) 1903 (if (idlwave-shell-hide-p 'misc) 'mostly)
1913 nil t) 1904 nil t)
1914 (idlwave-shell-display-line nil))) 1905 (idlwave-shell-display-line nil)))
1915 1906
1916(defun idlwave-shell-closeall (&optional arg) 1907(defun idlwave-shell-closeall (&optional arg)
1917 "Close all open files." 1908 "Close all open files."
1918 (interactive "P") 1909 (interactive "P")
1919 (idlwave-shell-send-command "close,/all" nil 1910 (idlwave-shell-send-command "close,/all" nil
1920 (idlwave-shell-hide-p 'misc) nil t)) 1911 (idlwave-shell-hide-p 'misc) nil t))
1921 1912
1922(defun idlwave-shell-quit (&optional arg) 1913(defun idlwave-shell-quit (&optional arg)
@@ -1932,7 +1923,7 @@ With prefix ARG, exit without confirmation."
1932 1923
1933(defun idlwave-shell-reset (&optional hidden) 1924(defun idlwave-shell-reset (&optional hidden)
1934 "Reset IDL. Return to main level and destroy the leftover variables. 1925 "Reset IDL. Return to main level and destroy the leftover variables.
1935This issues the following commands: 1926This issues the following commands:
1936RETALL 1927RETALL
1937WIDGET_CONTROL,/RESET 1928WIDGET_CONTROL,/RESET
1938CLOSE, /ALL 1929CLOSE, /ALL
@@ -1982,14 +1973,14 @@ HEAP_GC, /VERBOSE"
1982 ;; Set dummy values and kill the text 1973 ;; Set dummy values and kill the text
1983 (setq sep "@" sep-re "@ *" text "") 1974 (setq sep "@" sep-re "@ *" text "")
1984 (if idlwave-idlwave_routine_info-compiled 1975 (if idlwave-idlwave_routine_info-compiled
1985 (message 1976 (message
1986 "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n" 1977 "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n"
1987 idlwave-shell-command-output))) 1978 idlwave-shell-command-output)))
1988 (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text) 1979 (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text)
1989 (setq text (substring text 0 (match-beginning 0))) 1980 (setq text (substring text 0 (match-beginning 0)))
1990 (if idlwave-idlwave_routine_info-compiled 1981 (if idlwave-idlwave_routine_info-compiled
1991 (message 1982 (message
1992 "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n" 1983 "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n"
1993 idlwave-shell-command-output))) 1984 idlwave-shell-command-output)))
1994 (if (string-match "\\S-" text) 1985 (if (string-match "\\S-" text)
1995 ;; Obviously, the pro worked. Make a note that we have it now. 1986 ;; Obviously, the pro worked. Make a note that we have it now.
@@ -2007,59 +1998,59 @@ HEAP_GC, /VERBOSE"
2007 key (nth 4 specs) 1998 key (nth 4 specs)
2008 keys (if (and (stringp key) 1999 keys (if (and (stringp key)
2009 (not (string-match "\\` *\\'" key))) 2000 (not (string-match "\\` *\\'" key)))
2010 (mapcar 'list 2001 (mapcar 'list
2011 (delete "" (idlwave-split-string key " +"))))) 2002 (delete "" (idlwave-split-string key " +")))))
2012 (setq name (idlwave-sintern-routine-or-method name class t) 2003 (setq name (idlwave-sintern-routine-or-method name class t)
2013 class (idlwave-sintern-class class t) 2004 class (idlwave-sintern-class class t)
2014 file (if (equal file "") nil file) 2005 file (if (equal file "") nil file)
2015 keys (mapcar (lambda (x) 2006 keys (mapcar (lambda (x)
2016 (list (idlwave-sintern-keyword (car x) t))) keys)) 2007 (list (idlwave-sintern-keyword (car x) t))) keys))
2017 2008
2018 ;; In the following ignore routines already defined in buffers, 2009 ;; In the following ignore routines already defined in buffers,
2019 ;; assuming that if the buffer stuff differs, it is a "new" 2010 ;; assuming that if the buffer stuff differs, it is a "new"
2020 ;; version, not yet compiled, and should take precedence. 2011 ;; version, not yet compiled, and should take precedence.
2021 ;; We could do the same for the library to avoid duplicates - 2012 ;; We could do the same for the library to avoid duplicates -
2022 ;; but I think frequently a user might have several versions of 2013 ;; but I think frequently a user might have several versions of
2023 ;; the same function in different programs, and in this case the 2014 ;; the same function in different programs, and in this case the
2024 ;; compiled one will be the best guess of all versions. 2015 ;; compiled one will be the best guess of all versions.
2025 ;; Therefore, we leave duplicates of library routines in. 2016 ;; Therefore, we leave duplicates of library routines in.
2026 (cond ((string= name "$MAIN$")) ; ignore this one 2017 (cond ((string= name "$MAIN$")) ; ignore this one
2027 ((and (string= type "PRO") 2018 ((and (string= type "PRO")
2028 ;; FIXME: is it OK to make the buffer routines dominate? 2019 ;; FIXME: is it OK to make the buffer routines dominate?
2029 (or t (null file) 2020 (or t (null file)
2030 (not (idlwave-rinfo-assq name 'pro class 2021 (not (idlwave-rinfo-assq name 'pro class
2031 idlwave-buffer-routines))) 2022 idlwave-buffer-routines)))
2032 ;; FIXME: is it OK to make the library routines dominate? 2023 ;; FIXME: is it OK to make the library routines dominate?
2033 ;;(not (idlwave-rinfo-assq name 'pro class 2024 ;;(not (idlwave-rinfo-assq name 'pro class
2034 ;; idlwave-library-routines)) 2025 ;; idlwave-library-routines))
2035 ) 2026 )
2036 (setq entry (list name 'pro class 2027 (setq entry (list name 'pro class
2037 (cons 'compiled 2028 (cons 'compiled
2038 (if file 2029 (if file
2039 (list 2030 (list
2040 (file-name-nondirectory file) 2031 (file-name-nondirectory file)
2041 (idlwave-sintern-dir 2032 (idlwave-sintern-dir
2042 (file-name-directory file))))) 2033 (file-name-directory file)))))
2043 cs (cons nil keys))) 2034 cs (cons nil keys)))
2044 (if file 2035 (if file
2045 (push entry idlwave-compiled-routines) 2036 (push entry idlwave-compiled-routines)
2046 (push entry idlwave-unresolved-routines))) 2037 (push entry idlwave-unresolved-routines)))
2047 2038
2048 ((and (string= type "FUN") 2039 ((and (string= type "FUN")
2049 ;; FIXME: is it OK to make the buffer routines dominate? 2040 ;; FIXME: is it OK to make the buffer routines dominate?
2050 (or t (not file) 2041 (or t (not file)
2051 (not (idlwave-rinfo-assq name 'fun class 2042 (not (idlwave-rinfo-assq name 'fun class
2052 idlwave-buffer-routines))) 2043 idlwave-buffer-routines)))
2053 ;; FIXME: is it OK to make the library routines dominate? 2044 ;; FIXME: is it OK to make the library routines dominate?
2054 ;; (not (idlwave-rinfo-assq name 'fun class 2045 ;; (not (idlwave-rinfo-assq name 'fun class
2055 ;; idlwave-library-routines)) 2046 ;; idlwave-library-routines))
2056 ) 2047 )
2057 (setq entry (list name 'fun class 2048 (setq entry (list name 'fun class
2058 (cons 'compiled 2049 (cons 'compiled
2059 (if file 2050 (if file
2060 (list 2051 (list
2061 (file-name-nondirectory file) 2052 (file-name-nondirectory file)
2062 (idlwave-sintern-dir 2053 (idlwave-sintern-dir
2063 (file-name-directory file))))) 2054 (file-name-directory file)))))
2064 cs (cons nil keys))) 2055 cs (cons nil keys)))
2065 (if file 2056 (if file
@@ -2076,7 +2067,7 @@ Change the default directory for the process buffer to concur."
2076 (set-buffer (idlwave-shell-buffer)) 2067 (set-buffer (idlwave-shell-buffer))
2077 (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]" 2068 (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]"
2078 idlwave-shell-command-output) 2069 idlwave-shell-command-output)
2079 (let ((dir (substring idlwave-shell-command-output 2070 (let ((dir (substring idlwave-shell-command-output
2080 (match-beginning 1) (match-end 1)))) 2071 (match-beginning 1) (match-end 1))))
2081; (message "Setting Emacs working dir to %s" dir) 2072; (message "Setting Emacs working dir to %s" dir)
2082 (setq idlwave-shell-default-directory dir) 2073 (setq idlwave-shell-default-directory dir)
@@ -2090,10 +2081,10 @@ Change the default directory for the process buffer to concur."
2090 expression) 2081 expression)
2091 (save-excursion 2082 (save-excursion
2092 (goto-char apos) 2083 (goto-char apos)
2093 (setq expression (buffer-substring 2084 (setq expression (buffer-substring
2094 (catch 'exit 2085 (catch 'exit
2095 (while t 2086 (while t
2096 (if (not (re-search-backward 2087 (if (not (re-search-backward
2097 "[^][.A-Za-z0-9_() ]" bos t)) 2088 "[^][.A-Za-z0-9_() ]" bos t))
2098 (throw 'exit bos)) ;ran into bos 2089 (throw 'exit bos)) ;ran into bos
2099 (if (not (idlwave-is-pointer-dereference bol)) 2090 (if (not (idlwave-is-pointer-dereference bol))
@@ -2102,7 +2093,8 @@ Change the default directory for the process buffer to concur."
2102 (when (not (string= expression "")) 2093 (when (not (string= expression ""))
2103 (setq idlwave-shell-get-object-class nil) 2094 (setq idlwave-shell-get-object-class nil)
2104 (idlwave-shell-send-command 2095 (idlwave-shell-send-command
2105 (concat "print,obj_class(" expression ")") 2096 (concat "if obj_valid(" expression ") then print,obj_class("
2097 expression ")")
2106 'idlwave-shell-parse-object-class 2098 'idlwave-shell-parse-object-class
2107 'hide 'wait) 2099 'hide 'wait)
2108 ;; If we don't know anything about the class, update shell routines 2100 ;; If we don't know anything about the class, update shell routines
@@ -2114,14 +2106,11 @@ Change the default directory for the process buffer to concur."
2114 2106
2115(defun idlwave-shell-parse-object-class () 2107(defun idlwave-shell-parse-object-class ()
2116 "Parse the output of the obj_class command." 2108 "Parse the output of the obj_class command."
2117 (let ((match "print,obj_class([^\n\r]+[\n\r ]")) 2109 (let ((match "obj_class([^\n\r]+[\n\r ]"))
2118 (if (and 2110 (if (string-match (concat match "\\([A-Za-z_0-9]+\\) *[\n\r]\\("
2119 (not (string-match (concat match match "\\s-*^[\n\r]+" 2111 idlwave-shell-prompt-pattern "\\)")
2120 "% Syntax error") 2112 idlwave-shell-command-output)
2121 idlwave-shell-command-output)) 2113 (setq idlwave-shell-get-object-class
2122 (string-match (concat match "\\([A-Za-z_0-9]+\\)")
2123 idlwave-shell-command-output))
2124 (setq idlwave-shell-get-object-class
2125 (match-string 1 idlwave-shell-command-output))))) 2114 (match-string 1 idlwave-shell-command-output)))))
2126 2115
2127(defvar idlwave-sint-sysvars nil) 2116(defvar idlwave-sint-sysvars nil)
@@ -2135,7 +2124,7 @@ keywords."
2135 (interactive "P") 2124 (interactive "P")
2136 (let (exec-cmd) 2125 (let (exec-cmd)
2137 (cond 2126 (cond
2138 ((and 2127 ((and
2139 (setq exec-cmd (idlwave-shell-executive-command)) 2128 (setq exec-cmd (idlwave-shell-executive-command))
2140 (cdr exec-cmd) 2129 (cdr exec-cmd)
2141 (member (upcase (cdr exec-cmd)) 2130 (member (upcase (cdr exec-cmd))
@@ -2145,7 +2134,7 @@ keywords."
2145 (idlwave-shell-complete-filename)) 2134 (idlwave-shell-complete-filename))
2146 2135
2147 ((car-safe exec-cmd) 2136 ((car-safe exec-cmd)
2148 (setq idlwave-completion-help-info 2137 (setq idlwave-completion-help-info
2149 '(idlwave-shell-complete-execcomm-help)) 2138 '(idlwave-shell-complete-execcomm-help))
2150 (idlwave-complete-in-buffer 'execcomm 'execcomm 2139 (idlwave-complete-in-buffer 'execcomm 'execcomm
2151 idlwave-executive-commands-alist nil 2140 idlwave-executive-commands-alist nil
@@ -2164,7 +2153,7 @@ keywords."
2164 (let ((case-fold-search t)) 2153 (let ((case-fold-search t))
2165 (not (looking-at ".*obj_new"))))) 2154 (not (looking-at ".*obj_new")))))
2166 (idlwave-shell-complete-filename)) 2155 (idlwave-shell-complete-filename))
2167 2156
2168 (t 2157 (t
2169 ;; Default completion of modules and keywords 2158 ;; Default completion of modules and keywords
2170 (idlwave-complete arg))))) 2159 (idlwave-complete arg)))))
@@ -2186,7 +2175,7 @@ keywords."
2186We assume that we are after a file name when completing one of the 2175We assume that we are after a file name when completing one of the
2187args of an executive .run, .rnew or .compile." 2176args of an executive .run, .rnew or .compile."
2188 ;; CWD might have changed, resync, to set default directory 2177 ;; CWD might have changed, resync, to set default directory
2189 (idlwave-shell-resync-dirs) 2178 (idlwave-shell-resync-dirs)
2190 (let ((comint-file-name-chars idlwave-shell-file-name-chars)) 2179 (let ((comint-file-name-chars idlwave-shell-file-name-chars))
2191 (comint-dynamic-complete-as-filename))) 2180 (comint-dynamic-complete-as-filename)))
2192 2181
@@ -2227,7 +2216,7 @@ args of an executive .run, .rnew or .compile."
2227 2216
2228(defun idlwave-shell-redisplay (&optional hide) 2217(defun idlwave-shell-redisplay (&optional hide)
2229 "Tries to resync the display with where execution has stopped. 2218 "Tries to resync the display with where execution has stopped.
2230Issues a \"help,/trace\" command followed by a call to 2219Issues a \"help,/trace\" command followed by a call to
2231`idlwave-shell-display-line'. Also updates the breakpoint 2220`idlwave-shell-display-line'. Also updates the breakpoint
2232overlays." 2221overlays."
2233 (interactive) 2222 (interactive)
@@ -2240,7 +2229,7 @@ overlays."
2240 (idlwave-shell-bp-query)) 2229 (idlwave-shell-bp-query))
2241 2230
2242(defun idlwave-shell-display-level-in-calling-stack (&optional hide) 2231(defun idlwave-shell-display-level-in-calling-stack (&optional hide)
2243 (idlwave-shell-send-command 2232 (idlwave-shell-send-command
2244 "help,/trace" 2233 "help,/trace"
2245 `(progn 2234 `(progn
2246 ;; scanning for the state will reset the stack level - restore it 2235 ;; scanning for the state will reset the stack level - restore it
@@ -2271,14 +2260,14 @@ overlays."
2271 (setq idlwave-shell-calling-stack-index nmin 2260 (setq idlwave-shell-calling-stack-index nmin
2272 message (format "%d is the current calling stack level - can't go further down" 2261 message (format "%d is the current calling stack level - can't go further down"
2273 (- nmin))))) 2262 (- nmin)))))
2274 (setq idlwave-shell-calling-stack-routine 2263 (setq idlwave-shell-calling-stack-routine
2275 (nth 2 (nth idlwave-shell-calling-stack-index stack))) 2264 (nth 2 (nth idlwave-shell-calling-stack-index stack)))
2276 2265
2277 ;; only edebug if in that mode already 2266 ;; only edebug if in that mode already
2278 (idlwave-shell-display-line 2267 (idlwave-shell-display-line
2279 (nth idlwave-shell-calling-stack-index stack) nil 2268 (nth idlwave-shell-calling-stack-index stack) nil
2280 (unless idlwave-shell-electric-debug-mode 'no-debug)) 2269 (unless idlwave-shell-electric-debug-mode 'no-debug))
2281 (message (or message 2270 (message (or message
2282 (format "In routine %s (stack level %d)" 2271 (format "In routine %s (stack level %d)"
2283 idlwave-shell-calling-stack-routine 2272 idlwave-shell-calling-stack-routine
2284 (- idlwave-shell-calling-stack-index)))))) 2273 (- idlwave-shell-calling-stack-index))))))
@@ -2309,7 +2298,7 @@ used. Does nothing if the resulting frame is nil."
2309(defun idlwave-shell-pc-frame () 2298(defun idlwave-shell-pc-frame ()
2310 "Returns the frame for IDL execution." 2299 "Returns the frame for IDL execution."
2311 (and idlwave-shell-halt-frame 2300 (and idlwave-shell-halt-frame
2312 (list (nth 0 idlwave-shell-halt-frame) 2301 (list (nth 0 idlwave-shell-halt-frame)
2313 (nth 1 idlwave-shell-halt-frame) 2302 (nth 1 idlwave-shell-halt-frame)
2314 (nth 2 idlwave-shell-halt-frame)))) 2303 (nth 2 idlwave-shell-halt-frame))))
2315 2304
@@ -2327,7 +2316,7 @@ column in the line. If NO-DEBUG is non-nil, do *not* toggle the electric
2327debug mode." 2316debug mode."
2328 (if (not frame) 2317 (if (not frame)
2329 ;; Remove stop-line overlay from old position 2318 ;; Remove stop-line overlay from old position
2330 (progn 2319 (progn
2331 (setq overlay-arrow-string nil) 2320 (setq overlay-arrow-string nil)
2332 (setq idlwave-shell-mode-line-info nil) 2321 (setq idlwave-shell-mode-line-info nil)
2333 (setq idlwave-shell-is-stopped nil) 2322 (setq idlwave-shell-is-stopped nil)
@@ -2344,10 +2333,10 @@ debug mode."
2344;;; 2333;;;
2345;;; buffer : the buffer to display a line in. 2334;;; buffer : the buffer to display a line in.
2346;;; select-shell: current buffer is the shell. 2335;;; select-shell: current buffer is the shell.
2347;;; 2336;;;
2348 (setq idlwave-shell-mode-line-info 2337 (setq idlwave-shell-mode-line-info
2349 (if (nth 2 frame) 2338 (if (nth 2 frame)
2350 (format "[%d:%s]" 2339 (format "[%d:%s]"
2351 (- idlwave-shell-calling-stack-index) 2340 (- idlwave-shell-calling-stack-index)
2352 (nth 2 frame)))) 2341 (nth 2 frame))))
2353 (let* ((buffer (idlwave-find-file-noselect (car frame) 'shell)) 2342 (let* ((buffer (idlwave-find-file-noselect (car frame) 'shell))
@@ -2371,7 +2360,7 @@ debug mode."
2371 (forward-line 0) 2360 (forward-line 0)
2372 (setq pos (point)) 2361 (setq pos (point))
2373 (setq idlwave-shell-is-stopped t) 2362 (setq idlwave-shell-is-stopped t)
2374 2363
2375 (if idlwave-shell-stop-line-overlay 2364 (if idlwave-shell-stop-line-overlay
2376 ;; Move overlay 2365 ;; Move overlay
2377 (move-overlay idlwave-shell-stop-line-overlay 2366 (move-overlay idlwave-shell-stop-line-overlay
@@ -2393,12 +2382,12 @@ debug mode."
2393 ;; If we have the column of the error, move the cursor there. 2382 ;; If we have the column of the error, move the cursor there.
2394 (if col (move-to-column col)) 2383 (if col (move-to-column col))
2395 (setq pos (point)) 2384 (setq pos (point))
2396 2385
2397 ;; Enter electric debug mode, if not prohibited and not in 2386 ;; Enter electric debug mode, if not prohibited and not in
2398 ;; it already 2387 ;; it already
2399 (when (and (or 2388 (when (and (or
2400 (eq idlwave-shell-automatic-electric-debug t) 2389 (eq idlwave-shell-automatic-electric-debug t)
2401 (and 2390 (and
2402 (eq idlwave-shell-automatic-electric-debug 'breakpoint) 2391 (eq idlwave-shell-automatic-electric-debug 'breakpoint)
2403 (not (eq idlwave-shell-current-state 'error)))) 2392 (not (eq idlwave-shell-current-state 'error))))
2404 (not no-debug) 2393 (not no-debug)
@@ -2406,14 +2395,14 @@ debug mode."
2406 (not idlwave-shell-electric-debug-mode)) 2395 (not idlwave-shell-electric-debug-mode))
2407 (idlwave-shell-electric-debug-mode) 2396 (idlwave-shell-electric-debug-mode)
2408 (setq electric t))) 2397 (setq electric t)))
2409 2398
2410 ;; Make sure pos is really displayed in the window. 2399 ;; Make sure pos is really displayed in the window.
2411 (set-window-point window pos) 2400 (set-window-point window pos)
2412 2401
2413 ;; If we came from the shell, go back there. Otherwise select 2402 ;; If we came from the shell, go back there. Otherwise select
2414 ;; the window where the error is displayed. 2403 ;; the window where the error is displayed.
2415 (if (or (and idlwave-shell-electric-zap-to-file electric) 2404 (if (or (and idlwave-shell-electric-zap-to-file electric)
2416 (and (equal (buffer-name) (idlwave-shell-buffer)) 2405 (and (equal (buffer-name) (idlwave-shell-buffer))
2417 (not select-shell))) 2406 (not select-shell)))
2418 (select-window window)))))) 2407 (select-window window))))))
2419 2408
@@ -2423,23 +2412,24 @@ debug mode."
2423 (interactive "p") 2412 (interactive "p")
2424 (or (not arg) (< arg 1) 2413 (or (not arg) (< arg 1)
2425 (setq arg 1)) 2414 (setq arg 1))
2426 (idlwave-shell-send-command 2415 (idlwave-shell-send-command
2427 (concat ".s " (if (integerp arg) (int-to-string arg) arg)) 2416 (concat ".s " (if (integerp arg) (int-to-string arg) arg))
2428 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) 2417 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
2429 2418
2430(defun idlwave-shell-stepover (arg) 2419(defun idlwave-shell-stepover (arg)
2431 "Stepover one source line. 2420 "Stepover one source line.
2432If given prefix argument ARG, step ARG source lines. 2421If given prefix argument ARG, step ARG source lines.
2433Uses IDL's stepover executive command which does not enter called functions." 2422Uses IDL's stepover executive command which does not enter called functions."
2434 (interactive "p") 2423 (interactive "p")
2435 (or (not arg) (< arg 1) 2424 (or (not arg) (< arg 1)
2436 (setq arg 1)) 2425 (setq arg 1))
2437 (idlwave-shell-send-command 2426 (idlwave-shell-send-command
2438 (concat ".so " (if (integerp arg) (int-to-string arg) arg)) 2427 (concat ".so " (if (integerp arg) (int-to-string arg) arg))
2439 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) 2428 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
2440 2429
2441(defun idlwave-shell-break-here (&optional count cmd condition no-show) 2430(defun idlwave-shell-break-here (&optional count cmd condition disabled
2442 "Set breakpoint at current line. 2431 no-show)
2432 "Set breakpoint at current line.
2443 2433
2444If Count is nil then an ordinary breakpoint is set. We treat a count 2434If Count is nil then an ordinary breakpoint is set. We treat a count
2445of 1 as a temporary breakpoint using the ONCE keyword. Counts greater 2435of 1 as a temporary breakpoint using the ONCE keyword. Counts greater
@@ -2447,17 +2437,17 @@ than 1 use the IDL AFTER=count keyword to break only after reaching
2447the statement count times. 2437the statement count times.
2448 2438
2449Optional argument CMD is a list or function to evaluate upon reaching 2439Optional argument CMD is a list or function to evaluate upon reaching
2450the breakpoint." 2440the breakpoint. CONDITION is a break condition, and DISABLED, if
2451 2441non-nil disables the breakpoint"
2452 (interactive "P") 2442 (interactive "P")
2453 (when (listp count) 2443 (when (listp count)
2454 (if (equal (car count) 4) 2444 (if (equal (car count) 4)
2455 (setq condition (read-string "Break Condition: "))) 2445 (setq condition (read-string "Break Condition: ")))
2456 (setq count nil)) 2446 (setq count nil))
2457 (idlwave-shell-set-bp 2447 (idlwave-shell-set-bp
2458 ;; Create breakpoint 2448 ;; Create breakpoint
2459 (idlwave-shell-bp (idlwave-shell-current-frame) 2449 (idlwave-shell-bp (idlwave-shell-current-frame)
2460 (list count cmd condition nil) 2450 (list count cmd condition disabled)
2461 (idlwave-shell-current-module)) 2451 (idlwave-shell-current-module))
2462 no-show)) 2452 no-show))
2463 2453
@@ -2467,14 +2457,14 @@ This is run on `idlwave-shell-post-command-hook'.
2467Offers to recompile the procedure if we failed. This usually fixes 2457Offers to recompile the procedure if we failed. This usually fixes
2468the problem with not being able to set the breakpoint." 2458the problem with not being able to set the breakpoint."
2469 ;; Scan for message 2459 ;; Scan for message
2470 (if (and idlwave-shell-command-output 2460 (if idlwave-shell-command-output
2471 (string-match "% BREAKPOINT: *Unable to find code" 2461 (cond
2472 idlwave-shell-command-output)) 2462 ((string-match "% BREAKPOINT: *Unable to find code"
2473 ;; Offer to recompile 2463 idlwave-shell-command-output)
2474 (progn 2464 ;; Offer to recompile
2475 (if (progn 2465 (if (progn
2476 (beep) 2466 (beep)
2477 (y-or-n-p 2467 (y-or-n-p
2478 (concat "Okay to recompile file " 2468 (concat "Okay to recompile file "
2479 (idlwave-shell-bp-get bp 'file) " "))) 2469 (idlwave-shell-bp-get bp 'file) " ")))
2480 ;; Recompile 2470 ;; Recompile
@@ -2482,17 +2472,21 @@ the problem with not being able to set the breakpoint."
2482 ;; Clean up before retrying 2472 ;; Clean up before retrying
2483 (idlwave-shell-command-failure) 2473 (idlwave-shell-command-failure)
2484 (idlwave-shell-send-command 2474 (idlwave-shell-send-command
2485 (concat ".run " (idlwave-shell-bp-get bp 'file)) nil 2475 (concat ".run " (idlwave-shell-bp-get bp 'file)) nil
2486 (if (idlwave-shell-hide-p 'run) 'mostly) nil t) 2476 (if (idlwave-shell-hide-p 'run) 'mostly) nil t)
2487 ;; Try setting breakpoint again 2477 ;; Try setting breakpoint again
2488 (idlwave-shell-set-bp bp)) 2478 (idlwave-shell-set-bp bp))
2489 (beep) 2479 (beep)
2490 (message "Unable to set breakpoint.") 2480 (message "Unable to set breakpoint.")
2491 (idlwave-shell-command-failure) 2481 (idlwave-shell-command-failure))
2492 ) 2482 nil)
2493 ;; return non-nil if no error found 2483
2494 nil) 2484 ((string-match "% Syntax error" idlwave-shell-command-output)
2495 'okay)) 2485 (message "Syntax error in condition.")
2486 (idlwave-shell-command-failure)
2487 nil)
2488
2489 (t 'okay))))
2496 2490
2497(defun idlwave-shell-command-failure () 2491(defun idlwave-shell-command-failure ()
2498 "Do any necessary clean up when an IDL command fails. 2492 "Do any necessary clean up when an IDL command fails.
@@ -2506,9 +2500,9 @@ breakpoint can not be set."
2506(defun idlwave-shell-cont (&optional no-show) 2500(defun idlwave-shell-cont (&optional no-show)
2507 "Continue executing." 2501 "Continue executing."
2508 (interactive) 2502 (interactive)
2509 (idlwave-shell-send-command ".c" (unless no-show 2503 (idlwave-shell-send-command ".c" (unless no-show
2510 '(idlwave-shell-redisplay 'hide)) 2504 '(idlwave-shell-redisplay 'hide))
2511 (if (idlwave-shell-hide-p 'debug) 'mostly) 2505 (if (idlwave-shell-hide-p 'debug) 'mostly)
2512 nil t)) 2506 nil t))
2513 2507
2514(defun idlwave-shell-go () 2508(defun idlwave-shell-go ()
@@ -2589,7 +2583,7 @@ at a breakpoint."
2589 ((eq force 'enable) (setq disabled t))) 2583 ((eq force 'enable) (setq disabled t)))
2590 (when bp 2584 (when bp
2591 (setf (nth 3 (cdr (cdr bp))) (not disabled)) 2585 (setf (nth 3 (cdr (cdr bp))) (not disabled))
2592 (idlwave-shell-send-command 2586 (idlwave-shell-send-command
2593 (concat "breakpoint," 2587 (concat "breakpoint,"
2594 (if disabled "/enable," "/disable,") 2588 (if disabled "/enable," "/disable,")
2595 (int-to-string (idlwave-shell-bp-get bp))) 2589 (int-to-string (idlwave-shell-bp-get bp)))
@@ -2603,18 +2597,18 @@ If ENABLE is non-nil, enable them instead."
2603 (while bpl 2597 (while bpl
2604 (setq disabled (idlwave-shell-bp-get (car bpl) 'disabled)) 2598 (setq disabled (idlwave-shell-bp-get (car bpl) 'disabled))
2605 (when (idlwave-xor (not disabled) (eq enable 'enable)) 2599 (when (idlwave-xor (not disabled) (eq enable 'enable))
2606 (idlwave-shell-toggle-enable-current-bp 2600 (idlwave-shell-toggle-enable-current-bp
2607 (car bpl) (if (eq enable 'enable) 'enable 'disable) no-update) 2601 (car bpl) (if (eq enable 'enable) 'enable 'disable) no-update)
2608 (push (car bpl) modified)) 2602 (push (car bpl) modified))
2609 (setq bpl (cdr bpl))) 2603 (setq bpl (cdr bpl)))
2610 (unless no-update (idlwave-shell-bp-query)) 2604 (unless no-update (idlwave-shell-bp-query))
2611 modified)) 2605 modified))
2612 2606
2613(defun idlwave-shell-to-here () 2607(defun idlwave-shell-to-here ()
2614 "Set a breakpoint with count 1 then continue." 2608 "Set a breakpoint with count 1 then continue."
2615 (interactive) 2609 (interactive)
2616 (let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update))) 2610 (let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update)))
2617 (idlwave-shell-break-here 1 nil nil 'no-show) 2611 (idlwave-shell-break-here 1 nil nil nil 'no-show)
2618 (idlwave-shell-cont 'no-show) 2612 (idlwave-shell-cont 'no-show)
2619 (idlwave-shell-enable-all-bp 'enable 'no-update disabled)) 2613 (idlwave-shell-enable-all-bp 'enable 'no-update disabled))
2620 (idlwave-shell-redisplay)) ; sync up everything at the end 2614 (idlwave-shell-redisplay)) ; sync up everything at the end
@@ -2631,23 +2625,19 @@ The command looks for an identifier near point and sets a breakpoint
2631for the first line of the corresponding module. If MODULE is `t', set 2625for the first line of the corresponding module. If MODULE is `t', set
2632in the current routine." 2626in the current routine."
2633 (interactive) 2627 (interactive)
2634 (let (module) 2628 (let ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))))
2635 (save-excursion 2629 (if module
2636 (skip-chars-backward "a-zA-Z0-9_$") 2630 (progn
2637 (if (looking-at idlwave-identifier) 2631 (setq module (idlwave-make-full-name (nth 2 module) (car module)))
2638 (setq module (match-string 0)) 2632 (idlwave-shell-module-source-query module)
2639 (error "No identifier at point"))) 2633 (idlwave-shell-set-bp-in-module module))
2640 (idlwave-shell-send-command 2634 (error "No identifier at point"))))
2641 idlwave-shell-sources-query 2635
2642 `(progn
2643 (idlwave-shell-sources-filter)
2644 (idlwave-shell-set-bp-in-module ,module))
2645 'hide)))
2646 2636
2647(defun idlwave-shell-set-bp-in-module (module) 2637(defun idlwave-shell-set-bp-in-module (module)
2648 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist' 2638 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist'
2649contains an entry for that module." 2639contains an entry for that module."
2650 (let ((source-file (car-safe 2640 (let ((source-file (car-safe
2651 (cdr-safe 2641 (cdr-safe
2652 (assoc (upcase module) 2642 (assoc (upcase module)
2653 idlwave-shell-sources-alist)))) 2643 idlwave-shell-sources-alist))))
@@ -2666,7 +2656,7 @@ contains an entry for that module."
2666 (save-excursion 2656 (save-excursion
2667 (goto-char (point-min)) 2657 (goto-char (point-min))
2668 (let ((case-fold-search t)) 2658 (let ((case-fold-search t))
2669 (if (re-search-forward 2659 (if (re-search-forward
2670 (concat "^[ \t]*\\(pro\\|function\\)[ \t]+" 2660 (concat "^[ \t]*\\(pro\\|function\\)[ \t]+"
2671 (downcase module) 2661 (downcase module)
2672 "[ \t\n,]") nil t) 2662 "[ \t\n,]") nil t)
@@ -2708,7 +2698,7 @@ Sets a breakpoint with count 1 at end of block, then continues."
2708 "Attempt to run until this procedure exits. 2698 "Attempt to run until this procedure exits.
2709Runs to the last statement and then steps 1 statement. Use the .out command." 2699Runs to the last statement and then steps 1 statement. Use the .out command."
2710 (interactive) 2700 (interactive)
2711 (idlwave-shell-send-command ".o" nil 2701 (idlwave-shell-send-command ".o" nil
2712 (if (idlwave-shell-hide-p 'debug) 'mostly) 2702 (if (idlwave-shell-hide-p 'debug) 'mostly)
2713 nil t)) 2703 nil t))
2714 2704
@@ -2755,7 +2745,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2755 (interactive "e") 2745 (interactive "e")
2756 (let ((transient-mark-mode t) 2746 (let ((transient-mark-mode t)
2757 (zmacs-regions t) 2747 (zmacs-regions t)
2758 (tracker (if (featurep 'xemacs) 2748 (tracker (if (featurep 'xemacs)
2759 (if (fboundp 'default-mouse-track-event-is-with-button) 2749 (if (fboundp 'default-mouse-track-event-is-with-button)
2760 'idlwave-xemacs-hack-mouse-track 2750 'idlwave-xemacs-hack-mouse-track
2761 'mouse-track) 2751 'mouse-track)
@@ -2773,7 +2763,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2773 (let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button))) 2763 (let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button)))
2774 (unwind-protect 2764 (unwind-protect
2775 (progn 2765 (progn
2776 (fset 'default-mouse-track-event-is-with-button 2766 (fset 'default-mouse-track-event-is-with-button
2777 'idlwave-default-mouse-track-event-is-with-button) 2767 'idlwave-default-mouse-track-event-is-with-button)
2778 (mouse-track event)) 2768 (mouse-track event))
2779 (fset 'default-mouse-track-event-is-with-button oldfunc)))) 2769 (fset 'default-mouse-track-event-is-with-button oldfunc))))
@@ -2805,7 +2795,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2805(defvar idlwave-shell-examine-completion-list nil) 2795(defvar idlwave-shell-examine-completion-list nil)
2806 2796
2807(defun idlwave-shell-print (arg &optional help ev complete-help-type) 2797(defun idlwave-shell-print (arg &optional help ev complete-help-type)
2808 "Print current expression. 2798 "Print current expression.
2809 2799
2810With HELP non-nil, show help on expression. If HELP is a string, 2800With HELP non-nil, show help on expression. If HELP is a string,
2811the expression will be put in place of ___, e.g.: 2801the expression will be put in place of ___, e.g.:
@@ -2838,11 +2828,11 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2838 (save-excursion 2828 (save-excursion
2839 (let* ((process (get-buffer-process (current-buffer))) 2829 (let* ((process (get-buffer-process (current-buffer)))
2840 (process-mark (if process (process-mark process))) 2830 (process-mark (if process (process-mark process)))
2841 (stack-label 2831 (stack-label
2842 (if (and (integerp idlwave-shell-calling-stack-index) 2832 (if (and (integerp idlwave-shell-calling-stack-index)
2843 (> idlwave-shell-calling-stack-index 0)) 2833 (> idlwave-shell-calling-stack-index 0))
2844 (format " [-%d:%s]" 2834 (format " [-%d:%s]"
2845 idlwave-shell-calling-stack-index 2835 idlwave-shell-calling-stack-index
2846 idlwave-shell-calling-stack-routine))) 2836 idlwave-shell-calling-stack-routine)))
2847 expr beg end cmd examine-hook) 2837 expr beg end cmd examine-hook)
2848 (cond 2838 (cond
@@ -2872,7 +2862,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2872 ;; an array 2862 ;; an array
2873 (forward-sexp)) 2863 (forward-sexp))
2874 (setq end (point))))) 2864 (setq end (point)))))
2875 2865
2876 ;; Get expression, but first move the begin mark if a 2866 ;; Get expression, but first move the begin mark if a
2877 ;; process-mark is inside the region, to keep the overlay from 2867 ;; process-mark is inside the region, to keep the overlay from
2878 ;; wandering in the Shell. 2868 ;; wandering in the Shell.
@@ -2883,61 +2873,61 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2883 2873
2884 ;; Show the overlay(s) and attach any necessary hooks and filters 2874 ;; Show the overlay(s) and attach any necessary hooks and filters
2885 (when (and beg end idlwave-shell-expression-overlay) 2875 (when (and beg end idlwave-shell-expression-overlay)
2886 (move-overlay idlwave-shell-expression-overlay beg end 2876 (move-overlay idlwave-shell-expression-overlay beg end
2887 (current-buffer)) 2877 (current-buffer))
2888 (add-hook 'pre-command-hook 2878 (add-hook 'pre-command-hook
2889 'idlwave-shell-delete-expression-overlay)) 2879 'idlwave-shell-delete-expression-overlay))
2890 (setq examine-hook 2880 (setq examine-hook
2891 (if idlwave-shell-separate-examine-output 2881 (if idlwave-shell-separate-examine-output
2892 'idlwave-shell-examine-display 2882 'idlwave-shell-examine-display
2893 'idlwave-shell-examine-highlight)) 2883 'idlwave-shell-examine-highlight))
2894 (add-hook 'pre-command-hook 2884 (add-hook 'pre-command-hook
2895 'idlwave-shell-delete-output-overlay) 2885 'idlwave-shell-delete-output-overlay)
2896 2886
2897 ;; Remove empty or comment-only lines 2887 ;; Remove empty or comment-only lines
2898 (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr) 2888 (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr)
2899 (setq expr (replace-match "\n" t t expr))) 2889 (setq expr (replace-match "\n" t t expr)))
2900 ;; Concatenate continuation lines 2890 ;; Concatenate continuation lines
2901 (while (string-match "[ \t]*\\$.*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr) 2891 (while (string-match "[ \t]*\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr)
2902 (setq expr (replace-match "" t t expr))) 2892 (setq expr (replace-match "" t t expr)))
2903 ;; Remove final newline 2893 ;; Remove final newline
2904 (if (string-match "\n[ \t\r]*\\'" expr) 2894 (if (string-match "\n[ \t\r]*\\'" expr)
2905 (setq expr (replace-match "" t t expr))) 2895 (setq expr (replace-match "" t t expr)))
2906 2896
2907 (catch 'exit 2897 (catch 'exit
2908 ;; Pop-up or complete on the examine selection list, if appropriate 2898 ;; Pop-up or complete on the examine selection list, if appropriate
2909 (if (or 2899 (if (or
2910 complete-help-type 2900 complete-help-type
2911 (and ev idlwave-shell-examine-alist) 2901 (and ev idlwave-shell-examine-alist)
2912 (consp help)) 2902 (consp help))
2913 (let ((help-cons 2903 (let ((help-cons
2914 (if (consp help) help 2904 (if (consp help) help
2915 (assoc 2905 (assoc
2916 ;; A cons from either a pop-up or mini-buffer completion 2906 ;; A cons from either a pop-up or mini-buffer completion
2917 (if complete-help-type 2907 (if complete-help-type
2918 (idlwave-one-key-select 'idlwave-shell-examine-alist 2908 (idlwave-one-key-select 'idlwave-shell-examine-alist
2919 "Examine with: " 1.5) 2909 "Examine with: " 1.5)
2920;; (idlwave-completing-read 2910;; (idlwave-completing-read
2921;; "Examine with: " 2911;; "Examine with: "
2922;; idlwave-shell-examine-alist nil nil nil 2912;; idlwave-shell-examine-alist nil nil nil
2923;; 'idlwave-shell-examine-completion-list 2913;; 'idlwave-shell-examine-completion-list
2924;; "Print") 2914;; "Print")
2925 (idlwave-popup-select 2915 (idlwave-popup-select
2926 ev 2916 ev
2927 (mapcar 'car idlwave-shell-examine-alist) 2917 (mapcar 'car idlwave-shell-examine-alist)
2928 "Examine with")) 2918 "Examine with"))
2929 idlwave-shell-examine-alist)))) 2919 idlwave-shell-examine-alist))))
2930 (setq help (cdr help-cons)) 2920 (setq help (cdr help-cons))
2931 (if (null help) (throw 'exit nil)) 2921 (if (null help) (throw 'exit nil))
2932 (if idlwave-shell-separate-examine-output 2922 (if idlwave-shell-separate-examine-output
2933 (setq idlwave-shell-examine-label 2923 (setq idlwave-shell-examine-label
2934 (concat 2924 (concat
2935 (format "==>%s<==\n%s:" expr (car help-cons)) 2925 (format "==>%s<==\n%s:" expr (car help-cons))
2936 stack-label "\n")))) 2926 stack-label "\n"))))
2937 ;; The regular help label (no popups, cons cells, etc.) 2927 ;; The regular help label (no popups, cons cells, etc.)
2938 (setq idlwave-shell-examine-label 2928 (setq idlwave-shell-examine-label
2939 (concat 2929 (concat
2940 (format "==>%s<==\n%s:" expr 2930 (format "==>%s<==\n%s:" expr
2941 (cond ((null help) "print") 2931 (cond ((null help) "print")
2942 ((stringp help) help) 2932 ((stringp help) help)
2943 (t (symbol-name help)))) 2933 (t (symbol-name help))))
@@ -2950,9 +2940,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2950 idlwave-shell-calling-stack-index))) 2940 idlwave-shell-calling-stack-index)))
2951 (setq cmd (idlwave-shell-help-statement help expr)) 2941 (setq cmd (idlwave-shell-help-statement help expr))
2952 ;;(idlwave-shell-recenter-shell-window) 2942 ;;(idlwave-shell-recenter-shell-window)
2953 (idlwave-shell-send-command 2943 (idlwave-shell-send-command
2954 cmd 2944 cmd
2955 examine-hook 2945 examine-hook
2956 (if idlwave-shell-separate-examine-output 'hide)))))) 2946 (if idlwave-shell-separate-examine-output 'hide))))))
2957 2947
2958(defvar idlwave-shell-examine-window-alist nil 2948(defvar idlwave-shell-examine-window-alist nil
@@ -2979,9 +2969,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2979 (let* ((end (or 2969 (let* ((end (or
2980 (re-search-backward idlwave-shell-prompt-pattern nil t) 2970 (re-search-backward idlwave-shell-prompt-pattern nil t)
2981 (point-max))) 2971 (point-max)))
2982 (beg (progn 2972 (beg (progn
2983 (goto-char 2973 (goto-char
2984 (or (progn (if (re-search-backward 2974 (or (progn (if (re-search-backward
2985 idlwave-shell-prompt-pattern nil t) 2975 idlwave-shell-prompt-pattern nil t)
2986 (match-end 0))) 2976 (match-end 0)))
2987 (point-min))) 2977 (point-min)))
@@ -2998,21 +2988,21 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2998 (setq buffer-read-only t) 2988 (setq buffer-read-only t)
2999 (move-overlay idlwave-shell-output-overlay cur-beg cur-end 2989 (move-overlay idlwave-shell-output-overlay cur-beg cur-end
3000 (current-buffer)) 2990 (current-buffer))
3001 2991
3002 ;; Look for the examine buffer in all windows. If one is 2992 ;; Look for the examine buffer in all windows. If one is
3003 ;; found in a frame all by itself, use that, otherwise, switch 2993 ;; found in a frame all by itself, use that, otherwise, switch
3004 ;; to or create an examine window in this frame, and resize if 2994 ;; to or create an examine window in this frame, and resize if
3005 ;; it's a newly created window 2995 ;; it's a newly created window
3006 (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible))) 2996 (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible)))
3007 (setq win (idlwave-display-buffer 2997 (setq win (idlwave-display-buffer
3008 "*Examine*" 2998 "*Examine*"
3009 nil 2999 nil
3010 (let ((list winlist) thiswin) 3000 (let ((list winlist) thiswin)
3011 (catch 'exit 3001 (catch 'exit
3012 (save-selected-window 3002 (save-selected-window
3013 (while (setq thiswin (pop list)) 3003 (while (setq thiswin (pop list))
3014 (select-window thiswin) 3004 (select-window thiswin)
3015 (if (one-window-p) 3005 (if (one-window-p)
3016 (throw 'exit (window-frame thiswin))))))))) 3006 (throw 'exit (window-frame thiswin)))))))))
3017 (set-window-start win (point-min)) ; Ensure the point is visible. 3007 (set-window-start win (point-min)) ; Ensure the point is visible.
3018 (save-selected-window 3008 (save-selected-window
@@ -3033,7 +3023,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
3033 ;; And add the new value. 3023 ;; And add the new value.
3034 (if (setq elt (assoc win idlwave-shell-examine-window-alist)) 3024 (if (setq elt (assoc win idlwave-shell-examine-window-alist))
3035 (setcdr elt (window-height)) 3025 (setcdr elt (window-height))
3036 (add-to-list 'idlwave-shell-examine-window-alist 3026 (add-to-list 'idlwave-shell-examine-window-alist
3037 (cons win (window-height))))))))) 3027 (cons win (window-height)))))))))
3038 ;; Recenter for maximum output, after widened 3028 ;; Recenter for maximum output, after widened
3039 (save-selected-window 3029 (save-selected-window
@@ -3051,7 +3041,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
3051 3041
3052(defun idlwave-shell-examine-display-clear () 3042(defun idlwave-shell-examine-display-clear ()
3053 (interactive) 3043 (interactive)
3054 (save-excursion 3044 (save-excursion
3055 (let ((buf (get-buffer "*Examine*"))) 3045 (let ((buf (get-buffer "*Examine*")))
3056 (when (bufferp buf) 3046 (when (bufferp buf)
3057 (set-buffer buf) 3047 (set-buffer buf)
@@ -3072,36 +3062,58 @@ routine_names, there is no guarantee that this will work with future
3072versions of IDL." 3062versions of IDL."
3073 (let ((fetch (- 0 level)) 3063 (let ((fetch (- 0 level))
3074 (start 0) 3064 (start 0)
3075 var rnvar pre post) 3065 var fetch-start fetch-end pre post)
3076 3066
3077 ;; FIXME: In the following we try to find the variables in expression 3067 ;; FIXME: In the following we try to find the variables in expression
3078 ;; This is quite empirical - I don't know in what situations this will 3068 ;; This is quite empirical - I don't know in what situations this will
3079 ;; break. We will look for identifiers and exclude cases where we 3069 ;; break. We will look for identifiers and exclude cases where we
3080 ;; know it is not a variable. To distinguish array references from 3070 ;; know it is not a variable. To distinguish array references from
3081 ;; function calls, we require that arrays use [] instead of () 3071 ;; function calls, we require that arrays use [] instead of ()
3082 3072
3083 (while (string-match 3073 (while (string-match
3084 "\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start) 3074 "\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start)
3085 (setq var (match-string 2 expr) 3075 (setq var (match-string 2 expr)
3086 start (match-beginning 2) 3076 start (match-end 2)
3087 pre (substring expr 0 (match-beginning 2)) 3077 pre (substring expr 0 (match-beginning 2))
3088 post (substring expr (match-end 2))) 3078 post (substring expr (match-end 2)))
3089 (cond 3079 (cond
3090 ;; Exclude identifiers which are not variables 3080 ((or
3091 ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD 3081 ;; Exclude identifiers which are not variables
3092 ((and (string-match "[,(][ \t]*\\'" pre) 3082 (string-match ",[ \t$\n]*/\\'" pre) ;; a `/' KEYWORD
3093 (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD 3083 (and (string-match "[,(][ \t\n]*\\'" pre)
3094 ((string-match "\\`(" post)) ;; a function 3084 (string-match "\\`[ \t]*=" post)) ;; a `=' KEYWORD
3095 ((string-match "->[ \t]*\\'" pre)) ;; a method 3085 (string-match "\\`(" post) ;; a function
3096 ((string-match "\\.\\'" pre)) ;; structure member 3086 (string-match "->[ \t]*\\'" pre) ;; a method
3087 (string-match "\\.\\'" pre))) ;; structure member
3088
3089 ;; Skip over strings
3097 ((and (string-match "\\([\"\']\\)[^\1]*$" pre) 3090 ((and (string-match "\\([\"\']\\)[^\1]*$" pre)
3098 (string-match (concat "^[^" (match-string 1 pre) "]*" 3091 (string-match (concat "^[^" (match-string 1 pre) "]*"
3099 (match-string 1 pre)) post))) 3092 (match-string 1 pre)) post))
3100 (t ;; seems to be a variable - replace its name in the 3093 (setq start (+ start (match-end 0))))
3101 ;; expression with the fetch. 3094
3102 (setq rnvar (format "(routine_names('%s',fetch=%d))" var fetch) 3095
3103 expr (concat pre rnvar post) 3096 ;; seems to be a variable - delimit its name
3104 start (+ start (length rnvar)))))) 3097 (t
3098 (put-text-property start (- start (length var)) 'fetch t expr))))
3099
3100 (setq start 0)
3101 (while (setq fetch-start
3102 (next-single-property-change start 'fetch expr))
3103 (if (get-text-property start 'fetch expr) ; it's on in range
3104 (setq fetch-end fetch-start ;it's off in range
3105 fetch-start start)
3106 (setq fetch-end (next-single-property-change fetch-start 'fetch expr)))
3107 (unless fetch-end (setq fetch-end (length expr)))
3108 (remove-text-properties fetch-start fetch-end '(fetch) expr)
3109 (setq expr (concat (substring expr 0 fetch-start)
3110 (format "(routine_names('%s',fetch=%d))"
3111 (substring expr fetch-start fetch-end)
3112 fetch)
3113 (substring expr fetch-end)))
3114 (setq start fetch-end))
3115 (if (get-text-property 0 'fetch expr) ; Full expression, left over
3116 (setq expr (format "(routine_names('%s',fetch=%d))" expr fetch)))
3105 expr)) 3117 expr))
3106 3118
3107 3119
@@ -3113,13 +3125,13 @@ to insert expression in place of the marker ___, e.g.: print,
3113size(___,/DIMENSIONS)" 3125size(___,/DIMENSIONS)"
3114 (cond 3126 (cond
3115 ((null help) (concat "print, " expr)) 3127 ((null help) (concat "print, " expr))
3116 ((stringp help) 3128 ((stringp help)
3117 (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help) 3129 (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help)
3118 (concat (substring help 0 (match-beginning 2)) 3130 (concat (substring help 0 (match-beginning 2))
3119 expr 3131 expr
3120 (substring help (match-end 2))))) 3132 (substring help (match-end 2)))))
3121 (t (concat "help, " expr)))) 3133 (t (concat "help, " expr))))
3122 3134
3123 3135
3124(defun idlwave-shell-examine-highlight () 3136(defun idlwave-shell-examine-highlight ()
3125 "Highlight the most recent IDL output." 3137 "Highlight the most recent IDL output."
@@ -3127,7 +3139,7 @@ size(___,/DIMENSIONS)"
3127 (process (get-buffer-process buffer)) 3139 (process (get-buffer-process buffer))
3128 (process-mark (if process (process-mark process))) 3140 (process-mark (if process (process-mark process)))
3129 output-begin output-end) 3141 output-begin output-end)
3130 (save-excursion 3142 (save-excursion
3131 (set-buffer buffer) 3143 (set-buffer buffer)
3132 (goto-char process-mark) 3144 (goto-char process-mark)
3133 (beginning-of-line) 3145 (beginning-of-line)
@@ -3135,12 +3147,12 @@ size(___,/DIMENSIONS)"
3135 (re-search-backward idlwave-shell-prompt-pattern nil t) 3147 (re-search-backward idlwave-shell-prompt-pattern nil t)
3136 (beginning-of-line 2) 3148 (beginning-of-line 2)
3137 (setq output-begin (point))) 3149 (setq output-begin (point)))
3138 3150
3139 ;; First make sure the shell window is visible 3151 ;; First make sure the shell window is visible
3140 (idlwave-display-buffer (idlwave-shell-buffer) 3152 (idlwave-display-buffer (idlwave-shell-buffer)
3141 nil (idlwave-shell-shell-frame)) 3153 nil (idlwave-shell-shell-frame))
3142 (if (and idlwave-shell-output-overlay process-mark) 3154 (if (and idlwave-shell-output-overlay process-mark)
3143 (move-overlay idlwave-shell-output-overlay 3155 (move-overlay idlwave-shell-output-overlay
3144 output-begin output-end buffer)))) 3156 output-begin output-end buffer))))
3145 3157
3146(defun idlwave-shell-delete-output-overlay () 3158(defun idlwave-shell-delete-output-overlay ()
@@ -3151,7 +3163,7 @@ size(___,/DIMENSIONS)"
3151 (delete-overlay idlwave-shell-output-overlay)) 3163 (delete-overlay idlwave-shell-output-overlay))
3152 (error nil)) 3164 (error nil))
3153 (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay))) 3165 (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay)))
3154 3166
3155(defun idlwave-shell-delete-expression-overlay () 3167(defun idlwave-shell-delete-expression-overlay ()
3156 (unless (or (eq this-command 'idlwave-shell-mouse-nop) 3168 (unless (or (eq this-command 'idlwave-shell-mouse-nop)
3157 (eq this-command 'handle-switch-frame)) 3169 (eq this-command 'handle-switch-frame))
@@ -3180,7 +3192,7 @@ contains four items:
3180count - number of times to execute breakpoint. When count reaches 0 3192count - number of times to execute breakpoint. When count reaches 0
3181 the breakpoint is cleared and removed from the alist. 3193 the breakpoint is cleared and removed from the alist.
3182 3194
3183command - command to execute when breakpoint is reached, either a 3195command - command to execute when breakpoint is reached, either a
3184 lisp function to be called with `funcall' with no arguments or a 3196 lisp function to be called with `funcall' with no arguments or a
3185 list to be evaluated with `eval'. 3197 list to be evaluated with `eval'.
3186 3198
@@ -3213,11 +3225,11 @@ If there is a prefix argument, display IDL process."
3213 (insert "\nend\n")) 3225 (insert "\nend\n"))
3214 (save-buffer 0))) 3226 (save-buffer 0)))
3215 (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file) 3227 (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file)
3216 nil 3228 nil
3217 (if (idlwave-shell-hide-p 'run) 'mostly) 3229 (if (idlwave-shell-hide-p 'run) 'mostly)
3218 nil t) 3230 nil t)
3219 (if n 3231 (if n
3220 (idlwave-display-buffer (idlwave-shell-buffer) 3232 (idlwave-display-buffer (idlwave-shell-buffer)
3221 nil (idlwave-shell-shell-frame)))) 3233 nil (idlwave-shell-shell-frame))))
3222 3234
3223(defun idlwave-shell-evaluate-region (beg end &optional n) 3235(defun idlwave-shell-evaluate-region (beg end &optional n)
@@ -3228,7 +3240,7 @@ Does not work for a region with multiline blocks - use
3228 (interactive "r\nP") 3240 (interactive "r\nP")
3229 (idlwave-shell-send-command (buffer-substring beg end)) 3241 (idlwave-shell-send-command (buffer-substring beg end))
3230 (if n 3242 (if n
3231 (idlwave-display-buffer (idlwave-shell-buffer) 3243 (idlwave-display-buffer (idlwave-shell-buffer)
3232 nil (idlwave-shell-shell-frame)))) 3244 nil (idlwave-shell-shell-frame))))
3233 3245
3234(defun idlwave-shell-delete-temp-files () 3246(defun idlwave-shell-delete-temp-files ()
@@ -3283,7 +3295,7 @@ Queries IDL using the string in `idlwave-shell-bp-query'."
3283 'hide)) 3295 'hide))
3284 3296
3285(defun idlwave-shell-bp-get (bp &optional item) 3297(defun idlwave-shell-bp-get (bp &optional item)
3286 "Get a value for a breakpoint. 3298 "Get a value for a breakpoint.
3287BP has the form of elements in idlwave-shell-bp-alist. Optional 3299BP has the form of elements in idlwave-shell-bp-alist. Optional
3288second arg ITEM is the particular value to retrieve. ITEM can be 3300second arg ITEM is the particular value to retrieve. ITEM can be
3289'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or 3301'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or
@@ -3318,8 +3330,8 @@ breakpoint overlays."
3318 ;; Searching the breakpoints 3330 ;; Searching the breakpoints
3319 ;; In IDL 5.5, the breakpoint reporting format changed. 3331 ;; In IDL 5.5, the breakpoint reporting format changed.
3320 (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)") 3332 (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)")
3321 (bp-re55 3333 (bp-re55
3322 (concat 3334 (concat
3323 "^\\s-*\\([0-9]+\\)" ; 1 index 3335 "^\\s-*\\([0-9]+\\)" ; 1 index
3324 "\\s-+\\([0-9]+\\)" ; 2 line number 3336 "\\s-+\\([0-9]+\\)" ; 2 line number
3325 "\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name 3337 "\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name
@@ -3334,11 +3346,11 @@ breakpoint overlays."
3334 bp-re indmap) 3346 bp-re indmap)
3335 (setq idlwave-shell-bp-alist (list nil)) 3347 (setq idlwave-shell-bp-alist (list nil))
3336 ;; Search for either header type, and set the correct regexp 3348 ;; Search for either header type, and set the correct regexp
3337 (when (or 3349 (when (or
3338 (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t) 3350 (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t)
3339 (setq bp-re bp-re54 ; versions <= 5.4 3351 (setq bp-re bp-re54 ; versions <= 5.4
3340 indmap '(1 2 3 4))) ;index module line file 3352 indmap '(1 2 3 4))) ;index module line file
3341 (if (re-search-forward 3353 (if (re-search-forward
3342 "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t) 3354 "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t)
3343 (setq bp-re bp-re55 ; versions >= 5.5 3355 (setq bp-re bp-re55 ; versions >= 5.5
3344 indmap '(1 6 2 16)))) ; index module line file 3356 indmap '(1 6 2 16)))) ; index module line file
@@ -3349,12 +3361,12 @@ breakpoint overlays."
3349 line (string-to-number (match-string (nth 2 indmap))) 3361 line (string-to-number (match-string (nth 2 indmap)))
3350 file (idlwave-shell-file-name (match-string (nth 3 indmap)))) 3362 file (idlwave-shell-file-name (match-string (nth 3 indmap))))
3351 (if (eq bp-re bp-re55) 3363 (if (eq bp-re bp-re55)
3352 (setq count (if (match-string 10) 1 3364 (setq count (if (match-string 10) 1
3353 (if (match-string 8) 3365 (if (match-string 8)
3354 (string-to-number (match-string 8)))) 3366 (string-to-number (match-string 8))))
3355 condition (match-string 13) 3367 condition (match-string 13)
3356 disabled (not (null (match-string 15))))) 3368 disabled (not (null (match-string 15)))))
3357 3369
3358 ;; Add the breakpoint info to the list 3370 ;; Add the breakpoint info to the list
3359 (nconc idlwave-shell-bp-alist 3371 (nconc idlwave-shell-bp-alist
3360 (list (cons (list file line) 3372 (list (cons (list file line)
@@ -3364,7 +3376,7 @@ breakpoint overlays."
3364 count nil condition disabled)))))) 3376 count nil condition disabled))))))
3365 (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist)) 3377 (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist))
3366 ;; Update breakpoint data 3378 ;; Update breakpoint data
3367 (if (eq bp-re bp-re54) 3379 (if (eq bp-re bp-re54)
3368 (mapcar 'idlwave-shell-update-bp old-bp-alist) 3380 (mapcar 'idlwave-shell-update-bp old-bp-alist)
3369 (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist)))) 3381 (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist))))
3370 ;; Update the breakpoint overlays 3382 ;; Update the breakpoint overlays
@@ -3379,8 +3391,8 @@ breakpoint overlays."
3379 "Update BP data in breakpoint list. 3391 "Update BP data in breakpoint list.
3380If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data." 3392If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data."
3381 (let ((match (assoc (car bp) idlwave-shell-bp-alist))) 3393 (let ((match (assoc (car bp) idlwave-shell-bp-alist)))
3382 (if match 3394 (if match
3383 (if command-only 3395 (if command-only
3384 (setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match)))) 3396 (setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match))))
3385 (setcdr (cdr match) (cdr (cdr bp))))))) 3397 (setcdr (cdr match) (cdr (cdr bp)))))))
3386 3398
@@ -3405,42 +3417,31 @@ Otherwise return the filename in bp."
3405 (let* 3417 (let*
3406 ((bp-file (idlwave-shell-bp-get bp 'file)) 3418 ((bp-file (idlwave-shell-bp-get bp 'file))
3407 (bp-module (idlwave-shell-bp-get bp 'module)) 3419 (bp-module (idlwave-shell-bp-get bp 'module))
3408 (internal-file-list 3420 (internal-file-list
3409 (cdr (assoc bp-module idlwave-shell-sources-alist)))) 3421 (if bp-module
3422 (cdr (assoc bp-module idlwave-shell-sources-alist)))))
3410 (if (and internal-file-list 3423 (if (and internal-file-list
3411 (equal bp-file (nth 0 internal-file-list))) 3424 (equal bp-file (nth 0 internal-file-list)))
3412 (nth 1 internal-file-list) 3425 (nth 1 internal-file-list)
3413 bp-file))) 3426 bp-file)))
3414 3427
3415(defun idlwave-shell-set-bp (bp &optional no-show) 3428(defun idlwave-shell-set-bp (bp &optional no-show)
3416 "Try to set a breakpoint BP. 3429 "Try to set a breakpoint BP.
3417The breakpoint will be placed at the beginning of the statement on the 3430The breakpoint will be placed at the beginning of the statement on the
3418line specified by BP or at the next IDL statement if that line is not 3431line specified by BP or at the next IDL statement if that line is not
3419a statement. Determines IDL's internal representation for the 3432a statement. Determines IDL's internal representation for the
3420breakpoint, which may have occurred at a different line than 3433breakpoint, which may have occurred at a different line than
3421specified. If NO-SHOW is non-nil, don't do any updating." 3434specified. If NO-SHOW is non-nil, don't do any updating."
3422 ;; Get and save the old breakpoints 3435 ;; Get and save the old breakpoints
3423 (idlwave-shell-send-command 3436 (idlwave-shell-send-command
3424 idlwave-shell-bp-query 3437 idlwave-shell-bp-query
3425 `(progn 3438 `(progn
3426 (idlwave-shell-filter-bp (quote ,no-show)) 3439 (idlwave-shell-filter-bp (quote ,no-show))
3427 (setq idlwave-shell-old-bp idlwave-shell-bp-alist)) 3440 (setq idlwave-shell-old-bp idlwave-shell-bp-alist))
3428 'hide) 3441 'hide)
3429 ;; Get sources for IDL compiled procedures followed by setting
3430 ;; breakpoint.
3431 (idlwave-shell-send-command
3432 idlwave-shell-sources-query
3433 `(progn
3434 (idlwave-shell-sources-filter)
3435 (idlwave-shell-set-bp2 (quote ,bp) (quote ,no-show)))
3436 'hide))
3437 3442
3438(defun idlwave-shell-set-bp2 (bp &optional no-show) 3443 ;; Get sources for this routine in the sources list
3439 "Use results of breakpoint and sources query to set bp. 3444 (idlwave-shell-module-source-query (idlwave-shell-bp-get bp 'module))
3440Use the count argument with IDLs breakpoint command.
3441We treat a count of 1 as a temporary breakpoint.
3442Counts greater than 1 use the IDL AFTER=count keyword to break
3443only after reaching the statement count times."
3444 (let* 3445 (let*
3445 ((arg (idlwave-shell-bp-get bp 'count)) 3446 ((arg (idlwave-shell-bp-get bp 'count))
3446 (key (cond 3447 (key (cond
@@ -3450,32 +3451,35 @@ only after reaching the statement count times."
3450 ((> arg 1) 3451 ((> arg 1)
3451 (format ",after=%d" arg)))) 3452 (format ",after=%d" arg))))
3452 (condition (idlwave-shell-bp-get bp 'condition)) 3453 (condition (idlwave-shell-bp-get bp 'condition))
3453 (key (concat key 3454 (disabled (idlwave-shell-bp-get bp 'disabled))
3455 (key (concat key
3454 (if condition (concat ",CONDITION=\"" condition "\"")))) 3456 (if condition (concat ",CONDITION=\"" condition "\""))))
3457 (key (concat key (if disabled ",/DISABLE")))
3455 (line (idlwave-shell-bp-get bp 'line))) 3458 (line (idlwave-shell-bp-get bp 'line)))
3456 (idlwave-shell-send-command 3459 (idlwave-shell-send-command
3457 (concat "breakpoint,'" 3460 (concat "breakpoint,'"
3458 (idlwave-shell-sources-bp bp) "'," 3461 (idlwave-shell-sources-bp bp) "',"
3459 (if (integerp line) (setq line (int-to-string line))) 3462 (if (integerp line) (setq line (int-to-string line)))
3460 key) 3463 key)
3461 ;; Check for failure and look for breakpoint in IDL's list 3464 ;; Check for failure and adjust breakpoint to match IDL's list
3462 `(progn 3465 `(progn
3463 (if (idlwave-shell-set-bp-check (quote ,bp)) 3466 (if (idlwave-shell-set-bp-check (quote ,bp))
3464 (idlwave-shell-set-bp3 (quote ,bp) (quote ,no-show)))) 3467 (idlwave-shell-set-bp-adjust (quote ,bp) (quote ,no-show))))
3465 ;; hide output? 3468 ;; hide output?
3466 (idlwave-shell-hide-p 'breakpoint) 3469 (idlwave-shell-hide-p 'breakpoint)
3467 'preempt t))) 3470 'preempt t)))
3468 3471
3469(defun idlwave-shell-set-bp3 (bp &optional no-show) 3472(defun idlwave-shell-set-bp-adjust (bp &optional no-show)
3470 "Find the breakpoint in IDL's internal list of breakpoints." 3473 "Find the breakpoint in IDL's internal list of breakpoints."
3471 (idlwave-shell-send-command idlwave-shell-bp-query 3474 (idlwave-shell-send-command
3472 `(progn 3475 idlwave-shell-bp-query
3473 (idlwave-shell-filter-bp (quote ,no-show)) 3476 `(progn
3474 (idlwave-shell-new-bp (quote ,bp)) 3477 (idlwave-shell-filter-bp 'no-show)
3475 (unless (quote ,no-show) 3478 (idlwave-shell-new-bp (quote ,bp))
3476 (idlwave-shell-update-bp-overlays))) 3479 (unless (quote ,no-show)
3477 'hide 3480 (idlwave-shell-update-bp-overlays)))
3478 'preempt)) 3481 'hide
3482 'preempt))
3479 3483
3480(defun idlwave-shell-find-bp (frame) 3484(defun idlwave-shell-find-bp (frame)
3481 "Return breakpoint from `idlwave-shell-bp-alist' for frame. 3485 "Return breakpoint from `idlwave-shell-bp-alist' for frame.
@@ -3526,10 +3530,14 @@ considered the new breakpoint if the file name of frame matches."
3526 "Alist of overlays marking breakpoints") 3530 "Alist of overlays marking breakpoints")
3527(defvar idlwave-shell-bp-glyph) 3531(defvar idlwave-shell-bp-glyph)
3528 3532
3533(defvar idlwave-shell-debug-line-map (make-sparse-keymap))
3534(define-key idlwave-shell-debug-line-map
3535 (if (featurep 'xemacs) [button3] [mouse-3])
3536 'idlwave-shell-mouse-active-bp)
3537
3529(defun idlwave-shell-update-bp-overlays () 3538(defun idlwave-shell-update-bp-overlays ()
3530 "Update the overlays which mark breakpoints in the source code. 3539 "Update the overlays which mark breakpoints in the source code.
3531Existing overlays are recycled, in order to minimize consumption." 3540Existing overlays are recycled, in order to minimize consumption."
3532 ;(message "Updating Overlays")
3533 (when idlwave-shell-mark-breakpoints 3541 (when idlwave-shell-mark-breakpoints
3534 (let ((ov-alist (copy-alist idlwave-shell-bp-overlays)) 3542 (let ((ov-alist (copy-alist idlwave-shell-bp-overlays))
3535 (bp-list idlwave-shell-bp-alist) 3543 (bp-list idlwave-shell-bp-alist)
@@ -3538,14 +3546,14 @@ Existing overlays are recycled, in order to minimize consumption."
3538 ov ov-list bp buf old-buffers win) 3546 ov ov-list bp buf old-buffers win)
3539 3547
3540 ;; Delete the old overlays from their buffers 3548 ;; Delete the old overlays from their buffers
3541 (if ov-alist 3549 (if ov-alist
3542 (while (setq ov-list (pop ov-alist)) 3550 (while (setq ov-list (pop ov-alist))
3543 (while (setq ov (pop (cdr ov-list))) 3551 (while (setq ov (pop (cdr ov-list)))
3544 (add-to-list 'old-buffers (overlay-buffer ov)) 3552 (add-to-list 'old-buffers (overlay-buffer ov))
3545 (delete-overlay ov)))) 3553 (delete-overlay ov))))
3546 3554
3547 (setq ov-alist idlwave-shell-bp-overlays 3555 (setq ov-alist idlwave-shell-bp-overlays
3548 idlwave-shell-bp-overlays 3556 idlwave-shell-bp-overlays
3549 (if idlwave-shell-bp-glyph 3557 (if idlwave-shell-bp-glyph
3550 (mapcar 'list (mapcar 'car idlwave-shell-bp-glyph)) 3558 (mapcar 'list (mapcar 'car idlwave-shell-bp-glyph))
3551 (list (list 'bp)))) 3559 (list (list 'bp))))
@@ -3569,16 +3577,23 @@ Existing overlays are recycled, in order to minimize consumption."
3569 (t 'bp-n))) 3577 (t 'bp-n)))
3570 (t 'bp)) 3578 (t 'bp))
3571 'bp)) 3579 'bp))
3572 (help-list 3580 (help-list
3573 (delq nil 3581 (delq nil
3574 (list 3582 (list
3575 (if count 3583 (if count
3576 (concat "n=" (int-to-string count))) 3584 (concat "after:" (int-to-string count)))
3577 (if condition 3585 (if condition
3578 (concat "condition: " condition)) 3586 (concat "condition:" condition))
3579 (if disabled "disabled")))) 3587 (if disabled "disabled"))))
3580 (help-text (if help-list 3588 (help-text (concat
3581 (mapconcat 'identity help-list ","))) 3589 "BP "
3590 (int-to-string (idlwave-shell-bp-get bp))
3591 (if help-list
3592 (concat
3593 " - "
3594 (mapconcat 'identity help-list ", ")))
3595 (if (and (not count) (not condition))
3596 " (use mouse-3 for breakpoint actions)")))
3582 (full-type (if disabled 3597 (full-type (if disabled
3583 (intern (concat (symbol-name type) 3598 (intern (concat (symbol-name type)
3584 "-disabled")) 3599 "-disabled"))
@@ -3586,9 +3601,10 @@ Existing overlays are recycled, in order to minimize consumption."
3586 (ov-existing (assq full-type ov-alist)) 3601 (ov-existing (assq full-type ov-alist))
3587 (ov (or (and (cdr ov-existing) 3602 (ov (or (and (cdr ov-existing)
3588 (pop (cdr ov-existing))) 3603 (pop (cdr ov-existing)))
3589 (idlwave-shell-make-new-bp-overlay 3604 (idlwave-shell-make-new-bp-overlay type disabled)))
3590 type disabled help-text)))
3591 match) 3605 match)
3606 (if idlwave-shell-breakpoint-popup-menu
3607 (overlay-put ov 'help-echo help-text))
3592 (move-overlay ov beg end) 3608 (move-overlay ov beg end)
3593 (if (setq match (assq full-type idlwave-shell-bp-overlays)) 3609 (if (setq match (assq full-type idlwave-shell-bp-overlays))
3594 (push ov (cdr match)) 3610 (push ov (cdr match))
@@ -3596,7 +3612,7 @@ Existing overlays are recycled, in order to minimize consumption."
3596 (list (list full-type ov))))) 3612 (list (list full-type ov)))))
3597 ;; Take care of margins if using a glyph 3613 ;; Take care of margins if using a glyph
3598 (when use-glyph 3614 (when use-glyph
3599 (if old-buffers 3615 (if old-buffers
3600 (setq old-buffers (delq (current-buffer) old-buffers))) 3616 (setq old-buffers (delq (current-buffer) old-buffers)))
3601 (if (fboundp 'set-specifier) ;; XEmacs 3617 (if (fboundp 'set-specifier) ;; XEmacs
3602 (set-specifier left-margin-width (cons (current-buffer) 2)) 3618 (set-specifier left-margin-width (cons (current-buffer) 2))
@@ -3612,29 +3628,31 @@ Existing overlays are recycled, in order to minimize consumption."
3612 (if (setq win (get-buffer-window buf t)) 3628 (if (setq win (get-buffer-window buf t))
3613 (set-window-buffer win buf)))))))) 3629 (set-window-buffer win buf))))))))
3614 3630
3615 3631(defun idlwave-shell-make-new-bp-overlay (&optional type disabled)
3616(defun idlwave-shell-make-new-bp-overlay (&optional type disabled help) 3632 "Make a new overlay for highlighting breakpoints.
3617 "Make a new overlay for highlighting breakpoints.
3618 3633
3619This stuff is strongly dependant upon the version of Emacs. If TYPE 3634This stuff is strongly dependant upon the version of Emacs. If TYPE
3620is passed, make an overlay of that type ('bp or 'bp-cond, currently 3635is passed, make an overlay of that type ('bp or 'bp-cond, currently
3621only for glyphs). If HELP is set, use it to make a tooltip with that 3636only for glyphs)."
3622text popup."
3623 (let ((ov (make-overlay 1 1)) 3637 (let ((ov (make-overlay 1 1))
3624 (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph)) 3638 (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph))
3625 idlwave-shell-bp-glyph)) 3639 idlwave-shell-bp-glyph))
3626 (type (or type 'bp)) 3640 (type (or type 'bp))
3627 (face (if disabled 3641 (face (if disabled
3628 idlwave-shell-disabled-breakpoint-face 3642 idlwave-shell-disabled-breakpoint-face
3629 idlwave-shell-breakpoint-face))) 3643 idlwave-shell-breakpoint-face)))
3630 (if (featurep 'xemacs) 3644 (if (featurep 'xemacs)
3631 ;; This is XEmacs 3645 ;; This is XEmacs
3632 (progn 3646 (progn
3633 (cond 3647 (when idlwave-shell-breakpoint-popup-menu
3648 (set-extent-property ov 'mouse-face 'highlight)
3649 (set-extent-property ov 'keymap idlwave-shell-debug-line-map))
3650
3651 (cond
3634 ;; tty's cannot display glyphs 3652 ;; tty's cannot display glyphs
3635 ((eq (console-type) 'tty) 3653 ((eq (console-type) 'tty)
3636 (set-extent-property ov 'face face)) 3654 (set-extent-property ov 'face face))
3637 3655
3638 ;; use the glyph 3656 ;; use the glyph
3639 (use-glyph 3657 (use-glyph
3640 (let ((glyph (cdr (assq type idlwave-shell-bp-glyph)))) 3658 (let ((glyph (cdr (assq type idlwave-shell-bp-glyph))))
@@ -3650,22 +3668,23 @@ text popup."
3650 (t nil)) 3668 (t nil))
3651 (set-extent-priority ov -1)) ; make stop line face prevail 3669 (set-extent-priority ov -1)) ; make stop line face prevail
3652 ;; This is Emacs 3670 ;; This is Emacs
3671 (when idlwave-shell-breakpoint-popup-menu
3672 (overlay-put ov 'mouse-face 'highlight)
3673 (overlay-put ov 'keymap idlwave-shell-debug-line-map))
3653 (cond 3674 (cond
3654 (window-system 3675 (window-system
3655 (if use-glyph 3676 (if use-glyph
3656 (let ((image-props (cdr (assq type idlwave-shell-bp-glyph))) 3677 (let ((image-props (cdr (assq type idlwave-shell-bp-glyph)))
3657 string) 3678 string)
3658 3679
3659 (if disabled (setq image-props 3680 (if disabled (setq image-props
3660 (append image-props 3681 (append image-props
3661 (list :conversion 'disabled)))) 3682 (list :conversion 'disabled))))
3662 (setq string 3683 (setq string
3663 (propertize "@" 3684 (propertize "@"
3664 'display 3685 'display
3665 (list (list 'margin 'left-margin) 3686 (list (list 'margin 'left-margin)
3666 image-props) 3687 image-props)))
3667 'mouse-face 'highlight
3668 'help-echo help))
3669 (overlay-put ov 'before-string string)) 3688 (overlay-put ov 'before-string string))
3670 ;; just the face 3689 ;; just the face
3671 (overlay-put ov 'face face))) 3690 (overlay-put ov 'face face)))
@@ -3678,6 +3697,54 @@ text popup."
3678 (t nil))) 3697 (t nil)))
3679 ov)) 3698 ov))
3680 3699
3700(defun idlwave-shell-mouse-active-bp (ev)
3701 "Does right-click mouse action on breakpoint lines."
3702 (interactive "e")
3703 (if ev (mouse-set-point ev))
3704 (let ((bp (idlwave-shell-find-bp (idlwave-shell-current-frame)))
3705 index condition count select cmd disabled)
3706 (unless bp
3707 (error "Breakpoint not found"))
3708 (setq index (int-to-string (idlwave-shell-bp-get bp))
3709 condition (idlwave-shell-bp-get bp 'condition)
3710 cmd (idlwave-shell-bp-get bp 'cmd)
3711 count (idlwave-shell-bp-get bp 'count)
3712 disabled (idlwave-shell-bp-get bp 'disabled))
3713 (setq select (idlwave-popup-select
3714 ev
3715 (delq nil
3716 (list (if disabled "Enable" "Disable")
3717 "Clear"
3718 "Clear All"
3719 (if condition "Remove Condition" "Add Condition")
3720 (if condition "Change Condition")
3721 (if count "Remove Repeat Count"
3722 "Add Repeat Count")
3723 (if count "Change Repeat Count")))
3724 (concat "BreakPoint " index)))
3725 (if select
3726 (cond
3727 ((string-equal select "Clear All")
3728 (idlwave-shell-clear-all-bp))
3729 ((string-equal select "Clear")
3730 (idlwave-shell-clear-current-bp))
3731 ((string-match "Condition" select)
3732 (idlwave-shell-break-here count cmd
3733 (if (or (not condition)
3734 (string-match "Change" select))
3735 (read-string "Break Condition: "))
3736 disabled))
3737 ((string-match "Count" select)
3738 (idlwave-shell-break-here (if (or (not count)
3739 (string-match "Change" select))
3740 (string-to-number
3741 (read-string "Break After Count: ")))
3742 cmd condition disabled))
3743 ((string-match "able$" select)
3744 (idlwave-shell-toggle-enable-current-bp))
3745 (t
3746 (message "Unimplemented: %s" select))))))
3747
3681(defun idlwave-shell-edit-default-command-line (arg) 3748(defun idlwave-shell-edit-default-command-line (arg)
3682 "Edit the current execute command." 3749 "Edit the current execute command."
3683 (interactive "P") 3750 (interactive "P")
@@ -3689,14 +3756,14 @@ text popup."
3689Also with prefix arg, ask for the command. You can also use the command 3756Also with prefix arg, ask for the command. You can also use the command
3690`idlwave-shell-edit-default-command-line' to edit the line." 3757`idlwave-shell-edit-default-command-line' to edit the line."
3691 (interactive "P") 3758 (interactive "P")
3692 (cond 3759 (cond
3693 ((equal arg '(16)) 3760 ((equal arg '(16))
3694 (setq idlwave-shell-command-line-to-execute nil)) 3761 (setq idlwave-shell-command-line-to-execute nil))
3695 ((equal arg '(4)) 3762 ((equal arg '(4))
3696 (setq idlwave-shell-command-line-to-execute 3763 (setq idlwave-shell-command-line-to-execute
3697 (read-string "IDL> " idlwave-shell-command-line-to-execute)))) 3764 (read-string "IDL> " idlwave-shell-command-line-to-execute))))
3698 (idlwave-shell-reset 'hidden) 3765 (idlwave-shell-reset 'hidden)
3699 (idlwave-shell-send-command 3766 (idlwave-shell-send-command
3700 (or idlwave-shell-command-line-to-execute 3767 (or idlwave-shell-command-line-to-execute
3701 (with-current-buffer (idlwave-shell-buffer) 3768 (with-current-buffer (idlwave-shell-buffer)
3702 (ring-ref comint-input-ring 0))) 3769 (ring-ref comint-input-ring 0)))
@@ -3706,7 +3773,7 @@ Also with prefix arg, ask for the command. You can also use the command
3706 "Save file and run it in IDL. 3773 "Save file and run it in IDL.
3707Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL. 3774Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL.
3708When called from the shell buffer, re-run the file which was last handled by 3775When called from the shell buffer, re-run the file which was last handled by
3709one of the save-and-.. commands." 3776one of the save-and-.. commands."
3710 (interactive) 3777 (interactive)
3711 (idlwave-shell-save-and-action 'run)) 3778 (idlwave-shell-save-and-action 'run))
3712 3779
@@ -3722,7 +3789,7 @@ one of the save-and-.. commands."
3722 "Save file and batch it in IDL. 3789 "Save file and batch it in IDL.
3723Runs `save-buffer' and sends a '@file' command for the associated file to IDL. 3790Runs `save-buffer' and sends a '@file' command for the associated file to IDL.
3724When called from the shell buffer, re-batch the file which was last handled by 3791When called from the shell buffer, re-batch the file which was last handled by
3725one of the save-and-.. commands." 3792one of the save-and-.. commands."
3726 (interactive) 3793 (interactive)
3727 (idlwave-shell-save-and-action 'batch)) 3794 (idlwave-shell-save-and-action 'batch))
3728 3795
@@ -3762,7 +3829,7 @@ handled by this command."
3762 'idlwave-shell-maybe-update-routine-info 3829 'idlwave-shell-maybe-update-routine-info
3763 (if (idlwave-shell-hide-p 'run) 'mostly) nil t) 3830 (if (idlwave-shell-hide-p 'run) 'mostly) nil t)
3764 (idlwave-shell-bp-query)) 3831 (idlwave-shell-bp-query))
3765 (let ((msg (format "No such file %s" 3832 (let ((msg (format "No such file %s"
3766 idlwave-shell-last-save-and-action-file))) 3833 idlwave-shell-last-save-and-action-file)))
3767 (setq idlwave-shell-last-save-and-action-file nil) 3834 (setq idlwave-shell-last-save-and-action-file nil)
3768 (error msg)))) 3835 (error msg))))
@@ -3785,17 +3852,42 @@ Elements of the alist have the form:
3785 3852
3786 (module name . (source-file-truename idlwave-internal-filename)).") 3853 (module name . (source-file-truename idlwave-internal-filename)).")
3787 3854
3855(defun idlwave-shell-module-source-query (module)
3856 "Determine the source file for a given module."
3857 (if module
3858 (idlwave-shell-send-command
3859 (format "print,(routine_info('%s',/SOURCE)).PATH" module)
3860 `(idlwave-shell-module-source-filter ,module)
3861 'hide)))
3862
3863(defun idlwave-shell-module-source-filter (module)
3864 "Get module source, and update idlwave-shell-sources-alist."
3865 (let ((old (assoc (upcase module) idlwave-shell-sources-alist))
3866 filename)
3867 (if (string-match "\.PATH *[\n\r]\\([^\r\n]+\\)[\n\r]"
3868 idlwave-shell-command-output)
3869 (setq filename (substring idlwave-shell-command-output
3870 (match-beginning 1) (match-end 1)))
3871 (error "No file matching module found."))
3872 (if old
3873 (setcdr old (list (idlwave-shell-file-name filename) filename))
3874 (setq idlwave-shell-sources-alist
3875 (append idlwave-shell-sources-alist
3876 (list (cons (upcase module)
3877 (list (idlwave-shell-file-name filename)
3878 filename))))))))
3879
3788(defun idlwave-shell-sources-query () 3880(defun idlwave-shell-sources-query ()
3789 "Determine source files for IDL compiled procedures. 3881 "Determine source files for all IDL compiled procedures.
3790Queries IDL using the string in `idlwave-shell-sources-query'." 3882Queries IDL using the string in `idlwave-shell-sources-query'."
3791' (interactive) 3883 (interactive)
3792 (idlwave-shell-send-command idlwave-shell-sources-query 3884 (idlwave-shell-send-command idlwave-shell-sources-query
3793 'idlwave-shell-sources-filter 3885 'idlwave-shell-sources-filter
3794 'hide)) 3886 'hide))
3795 3887
3796(defun idlwave-shell-sources-filter () 3888(defun idlwave-shell-sources-filter ()
3797 "Get source files from `idlwave-shell-sources-query' output. 3889 "Get source files from `idlwave-shell-sources-query' output.
3798Create `idlwave-shell-sources-alist' consisting of 3890Create `idlwave-shell-sources-alist' consisting of
3799list elements of the form: 3891list elements of the form:
3800 (module name . (source-file-truename idlwave-internal-filename))." 3892 (module name . (source-file-truename idlwave-internal-filename))."
3801 (save-excursion 3893 (save-excursion
@@ -3880,7 +3972,7 @@ list elements of the form:
3880 (list 3972 (list
3881 (save-match-data 3973 (save-match-data
3882 (idlwave-shell-file-name 3974 (idlwave-shell-file-name
3883 (buffer-substring (match-beginning 1 ) 3975 (buffer-substring (match-beginning 1 )
3884 (match-end 1)))) 3976 (match-end 1))))
3885 (string-to-number 3977 (string-to-number
3886 (buffer-substring (match-beginning 2) 3978 (buffer-substring (match-beginning 2)
@@ -3947,13 +4039,13 @@ Otherwise, just expand the file name."
3947 4039
3948;; The mouse bindings for PRINT and HELP 4040;; The mouse bindings for PRINT and HELP
3949(idlwave-shell-define-key-both 4041(idlwave-shell-define-key-both
3950 (if (featurep 'xemacs) 4042 (if (featurep 'xemacs)
3951 [(shift button2)] 4043 [(shift button2)]
3952 [(shift down-mouse-2)]) 4044 [(shift down-mouse-2)])
3953 'idlwave-shell-mouse-print) 4045 'idlwave-shell-mouse-print)
3954(idlwave-shell-define-key-both 4046(idlwave-shell-define-key-both
3955 (if (featurep 'xemacs) 4047 (if (featurep 'xemacs)
3956 [(control meta button2)] 4048 [(control meta button2)]
3957 [(control meta down-mouse-2)]) 4049 [(control meta down-mouse-2)])
3958 'idlwave-shell-mouse-help) 4050 'idlwave-shell-mouse-help)
3959(idlwave-shell-define-key-both 4051(idlwave-shell-define-key-both
@@ -3962,14 +4054,14 @@ Otherwise, just expand the file name."
3962 [(control shift down-mouse-2)]) 4054 [(control shift down-mouse-2)])
3963 'idlwave-shell-examine-select) 4055 'idlwave-shell-examine-select)
3964;; Add this one from the idlwave-mode-map 4056;; Add this one from the idlwave-mode-map
3965(define-key idlwave-shell-mode-map 4057(define-key idlwave-shell-mode-map
3966 (if (featurep 'xemacs) 4058 (if (featurep 'xemacs)
3967 [(shift button3)] 4059 [(shift button3)]
3968 [(shift mouse-3)]) 4060 [(shift mouse-3)])
3969 'idlwave-mouse-context-help) 4061 'idlwave-mouse-context-help)
3970 4062
3971;; For Emacs, we need to turn off the button release events. 4063;; For Emacs, we need to turn off the button release events.
3972(defun idlwave-shell-mouse-nop (event) 4064(defun idlwave-shell-mouse-nop (event)
3973 (interactive "e")) 4065 (interactive "e"))
3974(unless (featurep 'xemacs) 4066(unless (featurep 'xemacs)
3975 (idlwave-shell-define-key-both 4067 (idlwave-shell-define-key-both
@@ -3979,7 +4071,7 @@ Otherwise, just expand the file name."
3979 (idlwave-shell-define-key-both 4071 (idlwave-shell-define-key-both
3980 [(control meta mouse-2)] 'idlwave-shell-mouse-nop)) 4072 [(control meta mouse-2)] 'idlwave-shell-mouse-nop))
3981 4073
3982 4074
3983;; The following set of bindings is used to bind the debugging keys. 4075;; The following set of bindings is used to bind the debugging keys.
3984;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the 4076;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the
3985;; first key in the list gets bound the C-c C-d prefix map. If 4077;; first key in the list gets bound the C-c C-d prefix map. If
@@ -3988,10 +4080,10 @@ Otherwise, just expand the file name."
3988;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list 4080;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list
3989;; item, if non-nil, means to bind this as a single key in the 4081;; item, if non-nil, means to bind this as a single key in the
3990;; electric-debug-mode-map. 4082;; electric-debug-mode-map.
3991;; 4083;;
3992;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only 4084;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only
3993;; Used keys: abcdef hijklmnopqrstuvwxyz 4085;; Used keys: abcdef hijklmnopqrstuvwxyz
3994;; Unused keys: g 4086;; Unused keys: g
3995(let* ((specs 4087(let* ((specs
3996 '(([(control ?b)] ?b idlwave-shell-break-here t t) 4088 '(([(control ?b)] ?b idlwave-shell-break-here t t)
3997 ([(control ?i)] ?i idlwave-shell-break-in t t) 4089 ([(control ?i)] ?i idlwave-shell-break-in t t)
@@ -4041,10 +4133,10 @@ Otherwise, just expand the file name."
4041 electric (nth 3 s) 4133 electric (nth 3 s)
4042 only-buffer (nth 4 s) 4134 only-buffer (nth 4 s)
4043 cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2)))) 4135 cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2))))
4044 4136
4045 ;; The regular prefix keymap. 4137 ;; The regular prefix keymap.
4046 (when (and idlwave-shell-activate-prefix-keybindings k1) 4138 (when (and idlwave-shell-activate-prefix-keybindings k1)
4047 (unless only-buffer 4139 (unless only-buffer
4048 (define-key idlwave-shell-mode-prefix-map k1 cmd)) 4140 (define-key idlwave-shell-mode-prefix-map k1 cmd))
4049 (define-key idlwave-mode-prefix-map k1 cmd)) 4141 (define-key idlwave-mode-prefix-map k1 cmd))
4050 ;; The debug modifier map 4142 ;; The debug modifier map
@@ -4058,24 +4150,24 @@ Otherwise, just expand the file name."
4058 (unless only-buffer (define-key idlwave-shell-mode-map k2 cmd)))) 4150 (unless only-buffer (define-key idlwave-shell-mode-map k2 cmd))))
4059 ;; The electric debug single-keystroke map 4151 ;; The electric debug single-keystroke map
4060 (if (and electric (char-or-string-p c2)) 4152 (if (and electric (char-or-string-p c2))
4061 (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) 4153 (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2)
4062 cmd)))) 4154 cmd))))
4063 4155
4064;; A few extras in the electric debug map 4156;; A few extras in the electric debug map
4065(define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step) 4157(define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step)
4066(define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up) 4158(define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up)
4067(define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up) 4159(define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up)
4068(define-key idlwave-shell-electric-debug-mode-map "-" 4160(define-key idlwave-shell-electric-debug-mode-map "-"
4069 'idlwave-shell-stack-down) 4161 'idlwave-shell-stack-down)
4070(define-key idlwave-shell-electric-debug-mode-map "_" 4162(define-key idlwave-shell-electric-debug-mode-map "_"
4071 'idlwave-shell-stack-down) 4163 'idlwave-shell-stack-down)
4072(define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall) 4164(define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall)
4073(define-key idlwave-shell-electric-debug-mode-map "t" 4165(define-key idlwave-shell-electric-debug-mode-map "t"
4074 '(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE"))) 4166 '(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE")))
4075(define-key idlwave-shell-electric-debug-mode-map [(control ??)] 4167(define-key idlwave-shell-electric-debug-mode-map [(control ??)]
4076 'idlwave-shell-electric-debug-help) 4168 'idlwave-shell-electric-debug-help)
4077(define-key idlwave-shell-electric-debug-mode-map "x" 4169(define-key idlwave-shell-electric-debug-mode-map "x"
4078 '(lambda (arg) (interactive "P") 4170 '(lambda (arg) (interactive "P")
4079 (idlwave-shell-print arg nil nil t))) 4171 (idlwave-shell-print arg nil nil t)))
4080 4172
4081 4173
@@ -4096,12 +4188,12 @@ Otherwise, just expand the file name."
4096 (setq idlwave-shell-suppress-electric-debug nil)) 4188 (setq idlwave-shell-suppress-electric-debug nil))
4097 (idlwave-shell-electric-debug-mode)) 4189 (idlwave-shell-electric-debug-mode))
4098 4190
4099(defvar idlwave-shell-electric-debug-read-only) 4191(defvar idlwave-shell-electric-debug-read-only)
4100(defvar idlwave-shell-electric-debug-buffers nil) 4192(defvar idlwave-shell-electric-debug-buffers nil)
4101 4193
4102(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode 4194(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode
4103 "Toggle Electric Debug mode. 4195 "Toggle Electric Debug mode.
4104With no argument, this command toggles the mode. 4196With no argument, this command toggles the mode.
4105Non-null prefix argument turns on the mode. 4197Non-null prefix argument turns on the mode.
4106Null prefix argument turns off the mode. 4198Null prefix argument turns off the mode.
4107 4199
@@ -4111,7 +4203,7 @@ nil
4111" *Debugging*" 4203" *Debugging*"
4112idlwave-shell-electric-debug-mode-map) 4204idlwave-shell-electric-debug-mode-map)
4113 4205
4114(add-hook 4206(add-hook
4115 'idlwave-shell-electric-debug-mode-on-hook 4207 'idlwave-shell-electric-debug-mode-on-hook
4116 (lambda () 4208 (lambda ()
4117 (set (make-local-variable 'idlwave-shell-electric-debug-read-only) 4209 (set (make-local-variable 'idlwave-shell-electric-debug-read-only)
@@ -4119,13 +4211,13 @@ idlwave-shell-electric-debug-mode-map)
4119 (setq buffer-read-only t) 4211 (setq buffer-read-only t)
4120 (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer)) 4212 (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer))
4121 (if idlwave-shell-stop-line-overlay 4213 (if idlwave-shell-stop-line-overlay
4122 (overlay-put idlwave-shell-stop-line-overlay 'face 4214 (overlay-put idlwave-shell-stop-line-overlay 'face
4123 idlwave-shell-electric-stop-line-face)) 4215 idlwave-shell-electric-stop-line-face))
4124 (if (facep 'fringe) 4216 (if (facep 'fringe)
4125 (set-face-foreground 'fringe idlwave-shell-electric-stop-color 4217 (set-face-foreground 'fringe idlwave-shell-electric-stop-color
4126 (selected-frame))))) 4218 (selected-frame)))))
4127 4219
4128(add-hook 4220(add-hook
4129 'idlwave-shell-electric-debug-mode-off-hook 4221 'idlwave-shell-electric-debug-mode-off-hook
4130 (lambda () 4222 (lambda ()
4131 ;; Return to previous read-only state 4223 ;; Return to previous read-only state
@@ -4134,7 +4226,7 @@ idlwave-shell-electric-debug-mode-map)
4134 (setq idlwave-shell-electric-debug-buffers 4226 (setq idlwave-shell-electric-debug-buffers
4135 (delq (current-buffer) idlwave-shell-electric-debug-buffers)) 4227 (delq (current-buffer) idlwave-shell-electric-debug-buffers))
4136 (if idlwave-shell-stop-line-overlay 4228 (if idlwave-shell-stop-line-overlay
4137 (overlay-put idlwave-shell-stop-line-overlay 'face 4229 (overlay-put idlwave-shell-stop-line-overlay 'face
4138 idlwave-shell-stop-line-face) 4230 idlwave-shell-stop-line-face)
4139 (if (facep 'fringe) 4231 (if (facep 'fringe)
4140 (set-face-foreground 'fringe (face-foreground 'default)))))) 4232 (set-face-foreground 'fringe (face-foreground 'default))))))
@@ -4148,6 +4240,7 @@ idlwave-shell-electric-debug-mode-map)
4148 (force-mode-line-update)) 4240 (force-mode-line-update))
4149 4241
4150;; Turn it off in all relevant buffers 4242;; Turn it off in all relevant buffers
4243(defvar idlwave-shell-electric-debug-buffers nil)
4151(defun idlwave-shell-electric-debug-all-off () 4244(defun idlwave-shell-electric-debug-all-off ()
4152 (setq idlwave-shell-suppress-electric-debug nil) 4245 (setq idlwave-shell-suppress-electric-debug nil)
4153 (let ((buffers idlwave-shell-electric-debug-buffers) 4246 (let ((buffers idlwave-shell-electric-debug-buffers)
@@ -4165,7 +4258,7 @@ idlwave-shell-electric-debug-mode-map)
4165;; Show the help text 4258;; Show the help text
4166(defun idlwave-shell-electric-debug-help () 4259(defun idlwave-shell-electric-debug-help ()
4167 (interactive) 4260 (interactive)
4168 (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*" 4261 (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*"
4169 (princ idlwave-shell-electric-debug-help)) 4262 (princ idlwave-shell-electric-debug-help))
4170 (let* ((current-window (selected-window)) 4263 (let* ((current-window (selected-window))
4171 (window (get-buffer-window "*IDLWAVE Electric Debug Help*")) 4264 (window (get-buffer-window "*IDLWAVE Electric Debug Help*"))
@@ -4180,7 +4273,7 @@ idlwave-shell-electric-debug-mode-map)
4180 `("Debug" 4273 `("Debug"
4181 ["Electric Debug Mode" 4274 ["Electric Debug Mode"
4182 idlwave-shell-electric-debug-mode 4275 idlwave-shell-electric-debug-mode
4183 :style toggle :selected idlwave-shell-electric-debug-mode 4276 :style toggle :selected idlwave-shell-electric-debug-mode
4184 :included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"] 4277 :included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"]
4185 "--" 4278 "--"
4186 ("Compile & Run" 4279 ("Compile & Run"
@@ -4196,15 +4289,15 @@ idlwave-shell-electric-debug-mode-map)
4196 "--" 4289 "--"
4197 ["Goto Next Error" idlwave-shell-goto-next-error t] 4290 ["Goto Next Error" idlwave-shell-goto-next-error t]
4198 "--" 4291 "--"
4199 ["Compile and Run Region" idlwave-shell-run-region 4292 ["Compile and Run Region" idlwave-shell-run-region
4200 (eq major-mode 'idlwave-mode)] 4293 (eq major-mode 'idlwave-mode)]
4201 ["Evaluate Region" idlwave-shell-evaluate-region 4294 ["Evaluate Region" idlwave-shell-evaluate-region
4202 (eq major-mode 'idlwave-mode)] 4295 (eq major-mode 'idlwave-mode)]
4203 "--" 4296 "--"
4204 ["Execute Default Cmd" idlwave-shell-execute-default-command-line t] 4297 ["Execute Default Cmd" idlwave-shell-execute-default-command-line t]
4205 ["Edit Default Cmd" idlwave-shell-edit-default-command-line t]) 4298 ["Edit Default Cmd" idlwave-shell-edit-default-command-line t])
4206 ("Breakpoints" 4299 ("Breakpoints"
4207 ["Set Breakpoint" idlwave-shell-break-here 4300 ["Set Breakpoint" idlwave-shell-break-here
4208 :keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)] 4301 :keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)]
4209 ("Set Special Breakpoint" 4302 ("Set Special Breakpoint"
4210 ["Set After Count Breakpoint" 4303 ["Set After Count Breakpoint"
@@ -4215,16 +4308,16 @@ idlwave-shell-electric-debug-mode-map)
4215 ["Set Condition Breakpoint" 4308 ["Set Condition Breakpoint"
4216 (idlwave-shell-break-here '(4)) 4309 (idlwave-shell-break-here '(4))
4217 :active (eq major-mode 'idlwave-mode)]) 4310 :active (eq major-mode 'idlwave-mode)])
4218 ["Break in Module" idlwave-shell-break-in 4311 ["Break in Module" idlwave-shell-break-in
4219 :keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)] 4312 :keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)]
4220 ["Break in this Module" idlwave-shell-break-this-module 4313 ["Break in this Module" idlwave-shell-break-this-module
4221 :keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)] 4314 :keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)]
4222 ["Clear Breakpoint" idlwave-shell-clear-current-bp t] 4315 ["Clear Breakpoint" idlwave-shell-clear-current-bp t]
4223 ["Clear All Breakpoints" idlwave-shell-clear-all-bp t] 4316 ["Clear All Breakpoints" idlwave-shell-clear-all-bp t]
4224 ["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t] 4317 ["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t]
4225 ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp 4318 ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp
4226 :keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)] 4319 :keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)]
4227 ["Goto Next Breakpoint" idlwave-shell-goto-next-bp 4320 ["Goto Next Breakpoint" idlwave-shell-goto-next-bp
4228 :keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)] 4321 :keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)]
4229 ["List All Breakpoints" idlwave-shell-list-all-bp t] 4322 ["List All Breakpoints" idlwave-shell-list-all-bp t]
4230 ["Resync Breakpoints" idlwave-shell-bp-query t]) 4323 ["Resync Breakpoints" idlwave-shell-bp-query t])
@@ -4256,38 +4349,38 @@ idlwave-shell-electric-debug-mode-map)
4256 ["Redisplay and Sync" idlwave-shell-redisplay t]) 4349 ["Redisplay and Sync" idlwave-shell-redisplay t])
4257 ("Show Commands" 4350 ("Show Commands"
4258 ["Everything" (if (eq idlwave-shell-show-commands 'everything) 4351 ["Everything" (if (eq idlwave-shell-show-commands 'everything)
4259 (progn 4352 (progn
4260 (setq idlwave-shell-show-commands 4353 (setq idlwave-shell-show-commands
4261 (get 'idlwave-shell-show-commands 'last-val)) 4354 (get 'idlwave-shell-show-commands 'last-val))
4262 (put 'idlwave-shell-show-commands 'last-val nil)) 4355 (put 'idlwave-shell-show-commands 'last-val nil))
4263 (put 'idlwave-shell-show-commands 'last-val 4356 (put 'idlwave-shell-show-commands 'last-val
4264 idlwave-shell-show-commands) 4357 idlwave-shell-show-commands)
4265 (setq idlwave-shell-show-commands 'everything)) 4358 (setq idlwave-shell-show-commands 'everything))
4266 :style toggle :selected (and (not (listp idlwave-shell-show-commands)) 4359 :style toggle :selected (and (not (listp idlwave-shell-show-commands))
4267 (eq idlwave-shell-show-commands 4360 (eq idlwave-shell-show-commands
4268 'everything))] 4361 'everything))]
4269 "--" 4362 "--"
4270 ["Compiling Commands" (idlwave-shell-add-or-remove-show 'run) 4363 ["Compiling Commands" (idlwave-shell-add-or-remove-show 'run)
4271 :style toggle 4364 :style toggle
4272 :selected (not (idlwave-shell-hide-p 4365 :selected (not (idlwave-shell-hide-p
4273 'run 4366 'run
4274 (get 'idlwave-shell-show-commands 'last-val))) 4367 (get 'idlwave-shell-show-commands 'last-val)))
4275 :active (not (eq idlwave-shell-show-commands 'everything))] 4368 :active (not (eq idlwave-shell-show-commands 'everything))]
4276 ["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint) 4369 ["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint)
4277 :style toggle 4370 :style toggle
4278 :selected (not (idlwave-shell-hide-p 4371 :selected (not (idlwave-shell-hide-p
4279 'breakpoint 4372 'breakpoint
4280 (get 'idlwave-shell-show-commands 'last-val))) 4373 (get 'idlwave-shell-show-commands 'last-val)))
4281 :active (not (eq idlwave-shell-show-commands 'everything))] 4374 :active (not (eq idlwave-shell-show-commands 'everything))]
4282 ["Debug Commands" (idlwave-shell-add-or-remove-show 'debug) 4375 ["Debug Commands" (idlwave-shell-add-or-remove-show 'debug)
4283 :style toggle 4376 :style toggle
4284 :selected (not (idlwave-shell-hide-p 4377 :selected (not (idlwave-shell-hide-p
4285 'debug 4378 'debug
4286 (get 'idlwave-shell-show-commands 'last-val))) 4379 (get 'idlwave-shell-show-commands 'last-val)))
4287 :active (not (eq idlwave-shell-show-commands 'everything))] 4380 :active (not (eq idlwave-shell-show-commands 'everything))]
4288 ["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc) 4381 ["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc)
4289 :style toggle 4382 :style toggle
4290 :selected (not (idlwave-shell-hide-p 4383 :selected (not (idlwave-shell-hide-p
4291 'misc 4384 'misc
4292 (get 'idlwave-shell-show-commands 'last-val))) 4385 (get 'idlwave-shell-show-commands 'last-val)))
4293 :active (not (eq idlwave-shell-show-commands 'everything))]) 4386 :active (not (eq idlwave-shell-show-commands 'everything))])
@@ -4301,7 +4394,7 @@ idlwave-shell-electric-debug-mode-map)
4301 :style toggle :selected idlwave-shell-use-input-mode-magic]) 4394 :style toggle :selected idlwave-shell-use-input-mode-magic])
4302 "--" 4395 "--"
4303 ["Update Working Dir" idlwave-shell-resync-dirs t] 4396 ["Update Working Dir" idlwave-shell-resync-dirs t]
4304 ["Save Path Info" 4397 ["Save Path Info"
4305 (idlwave-shell-send-command idlwave-shell-path-query 4398 (idlwave-shell-send-command idlwave-shell-path-query
4306 'idlwave-shell-get-path-info 4399 'idlwave-shell-get-path-info
4307 'hide) 4400 'hide)
@@ -4313,7 +4406,7 @@ idlwave-shell-electric-debug-mode-map)
4313 4406
4314(if (or (featurep 'easymenu) (load "easymenu" t)) 4407(if (or (featurep 'easymenu) (load "easymenu" t))
4315 (progn 4408 (progn
4316 (easy-menu-define 4409 (easy-menu-define
4317 idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus" 4410 idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus"
4318 idlwave-shell-menu-def) 4411 idlwave-shell-menu-def)
4319 (easy-menu-define 4412 (easy-menu-define
@@ -4333,7 +4426,7 @@ idlwave-shell-electric-debug-mode-map)
4333(defvar idlwave-shell-bp-glyph nil 4426(defvar idlwave-shell-bp-glyph nil
4334 "The glyphs to mark breakpoint lines in the source code.") 4427 "The glyphs to mark breakpoint lines in the source code.")
4335 4428
4336(let ((image-alist 4429(let ((image-alist
4337 '((bp . "/* XPM */ 4430 '((bp . "/* XPM */
4338static char * file[] = { 4431static char * file[] = {
4339\"14 12 3 1\", 4432\"14 12 3 1\",
@@ -4466,7 +4559,7 @@ static char * file[] = {
4466\" .XXXX. \", 4559\" .XXXX. \",
4467\" .... \", 4560\" .... \",
4468\" \"};"))) im-cons im) 4561\" \"};"))) im-cons im)
4469 4562
4470 (while (setq im-cons (pop image-alist)) 4563 (while (setq im-cons (pop image-alist))
4471 (setq im (cond ((and (featurep 'xemacs) 4564 (setq im (cond ((and (featurep 'xemacs)
4472 (featurep 'xpm)) 4565 (featurep 'xpm))
@@ -4479,7 +4572,7 @@ static char * file[] = {
4479 ((and (not (featurep 'xemacs)) 4572 ((and (not (featurep 'xemacs))
4480 (fboundp 'image-type-available-p) 4573 (fboundp 'image-type-available-p)
4481 (image-type-available-p 'xpm)) 4574 (image-type-available-p 'xpm))
4482 (list 'image :type 'xpm :data (cdr im-cons) 4575 (list 'image :type 'xpm :data (cdr im-cons)
4483 :ascent 'center)) 4576 :ascent 'center))
4484 (t nil))) 4577 (t nil)))
4485 (if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph)))) 4578 (if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph))))
@@ -4489,7 +4582,7 @@ static char * file[] = {
4489 4582
4490;;; Load the toolbar when wanted by the user. 4583;;; Load the toolbar when wanted by the user.
4491 4584
4492(autoload 'idlwave-toolbar-toggle "idlw-toolbar" 4585(autoload 'idlwave-toolbar-toggle "idlw-toolbar"
4493 "Toggle the IDLWAVE toolbar") 4586 "Toggle the IDLWAVE toolbar")
4494(autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar" 4587(autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar"
4495 "Add IDLWAVE toolbar") 4588 "Add IDLWAVE toolbar")
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index 48d1a24a091..dfd8c50529f 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -1,9 +1,9 @@
1;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE 1;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE
2;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation 2;; Copyright (c) 1999, 2000, 2001,2002,2004 Free Software Foundation
3 3
4;; Author: Carsten Dominik <dominik@astro.uva.nl> 4;; Author: Carsten Dominik <dominik@astro.uva.nl>
5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 5.5 6;; Version: 5.7_22
7;; Keywords: processes 7;; Keywords: processes
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 273c3296180..a54174c0f5a 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1,12 +1,12 @@
1;; idlwave.el --- IDL editing mode for GNU Emacs 1;; idlwave.el --- IDL editing mode for GNU Emacs
2;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005 2;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005
3;; Free Software Foundation 3;; Free Software Foundation
4 4
5;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 5;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
6;; Carsten Dominik <dominik@science.uva.nl> 6;; Carsten Dominik <dominik@science.uva.nl>
7;; Chris Chase <chase@att.com> 7;; Chris Chase <chase@att.com>
8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
9;; Version: 5.5 9;; Version: 5.7_22
10;; Keywords: languages 10;; Keywords: languages
11 11
12;; This file is part of GNU Emacs. 12;; This file is part of GNU Emacs.
@@ -28,6 +28,8 @@
28 28
29;;; Commentary: 29;;; Commentary:
30 30
31;; IDLWAVE enables feature-rich development and interaction with IDL.
32
31;; In the remotely distant past, based on pascal.el, though bears 33;; In the remotely distant past, based on pascal.el, though bears
32;; little resemblance to it now. 34;; little resemblance to it now.
33;; 35;;
@@ -111,7 +113,7 @@
111;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual 113;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual
112;; Numerics, Inc. is growing less and less complete as the two 114;; Numerics, Inc. is growing less and less complete as the two
113;; languages grow increasingly apart. The mode probably shouldn't 115;; languages grow increasingly apart. The mode probably shouldn't
114;; even have "WAVE" in it's title, but it's catchy, and was required 116;; even have "WAVE" in its title, but it's catchy, and was required
115;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor. 117;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor.
116;; 118;;
117;; Moving the point backwards in conjunction with abbrev expansion 119;; Moving the point backwards in conjunction with abbrev expansion
@@ -159,6 +161,11 @@
159(unless (fboundp 'char-valid-p) 161(unless (fboundp 'char-valid-p)
160 (defalias 'char-valid-p 'characterp)) 162 (defalias 'char-valid-p 'characterp))
161 163
164(if (not (fboundp 'cancel-timer))
165 (condition-case nil
166 (require 'timer)
167 (error nil)))
168
162(eval-and-compile 169(eval-and-compile
163 ;; Kludge to allow `defcustom' for Emacs 19. 170 ;; Kludge to allow `defcustom' for Emacs 19.
164 (condition-case () (require 'custom) (error nil)) 171 (condition-case () (require 'custom) (error nil))
@@ -170,7 +177,7 @@
170 `(defvar ,var ,value ,doc)))) 177 `(defvar ,var ,value ,doc))))
171 178
172(defgroup idlwave nil 179(defgroup idlwave nil
173 "Major mode for editing IDL .pro files" 180 "Major mode for editing IDL .pro files."
174 :tag "IDLWAVE" 181 :tag "IDLWAVE"
175 :link '(url-link :tag "Home Page" 182 :link '(url-link :tag "Home Page"
176 "http://idlwave.org") 183 "http://idlwave.org")
@@ -1377,7 +1384,7 @@ Normally a space.")
1377 "Character which is inserted as a last character on previous line by 1384 "Character which is inserted as a last character on previous line by
1378 \\[idlwave-split-line] to begin a continuation line. Normally $.") 1385 \\[idlwave-split-line] to begin a continuation line. Normally $.")
1379 1386
1380(defconst idlwave-mode-version "5.5") 1387(defconst idlwave-mode-version "5.7_22")
1381 1388
1382(defmacro idlwave-keyword-abbrev (&rest args) 1389(defmacro idlwave-keyword-abbrev (&rest args)
1383 "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args." 1390 "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args."
@@ -1484,12 +1491,13 @@ Capitalize system variables - action only
1484 ;; Add action 1491 ;; Add action
1485 (let* ((table (if select 'idlwave-indent-action-table 1492 (let* ((table (if select 'idlwave-indent-action-table
1486 'idlwave-indent-expand-table)) 1493 'idlwave-indent-expand-table))
1487 (cell (assoc key (eval table)))) 1494 (table-key (regexp-quote key))
1495 (cell (assoc table-key (eval table))))
1488 (if cell 1496 (if cell
1489 ;; Replace action command 1497 ;; Replace action command
1490 (setcdr cell cmd) 1498 (setcdr cell cmd)
1491 ;; New action 1499 ;; New action
1492 (set table (append (eval table) (list (cons key cmd))))))) 1500 (set table (append (eval table) (list (cons table-key cmd)))))))
1493 ;; Make key binding for action 1501 ;; Make key binding for action
1494 (if (or (and (null select) (= (length key) 1)) 1502 (if (or (and (null select) (= (length key) 1))
1495 (equal select 'noaction) 1503 (equal select 'noaction)
@@ -1516,7 +1524,7 @@ Capitalize system variables - action only
1516(define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block) 1524(define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block)
1517(define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block) 1525(define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block)
1518(define-key idlwave-mode-map "\C-c]" 'idlwave-close-block) 1526(define-key idlwave-mode-map "\C-c]" 'idlwave-close-block)
1519(define-key idlwave-mode-map "\M-\C-h" 'idlwave-mark-subprogram) 1527(define-key idlwave-mode-map [(meta control h)] 'idlwave-mark-subprogram)
1520(define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block) 1528(define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block)
1521(define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block) 1529(define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block)
1522(define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block) 1530(define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block)
@@ -1575,6 +1583,7 @@ Capitalize system variables - action only
1575(autoload 'idlwave-shell-run-region "idlw-shell" 1583(autoload 'idlwave-shell-run-region "idlw-shell"
1576 "Compile and run the region." t) 1584 "Compile and run the region." t)
1577(define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module) 1585(define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module)
1586(define-key idlwave-mode-map "\C-c\C-t" 'idlwave-find-module-this-file)
1578(define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info) 1587(define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info)
1579(define-key idlwave-mode-map "\M-?" 'idlwave-context-help) 1588(define-key idlwave-mode-map "\M-?" 'idlwave-context-help)
1580(define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help) 1589(define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help)
@@ -1702,6 +1711,8 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
1702(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1)) 1711(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1))
1703(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1)) 1712(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1))
1704(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0)) 1713(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0))
1714(idlwave-define-abbrev "pv" "ptr_valid()" (idlwave-keyword-abbrev 1))
1715(idlwave-define-abbrev "ipv" "if ptr_valid() then" (idlwave-keyword-abbrev 6))
1705 1716
1706;; This section is reserved words only. (From IDL user manual) 1717;; This section is reserved words only. (From IDL user manual)
1707;; 1718;;
@@ -1756,7 +1767,7 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
1756 1767
1757;;;###autoload 1768;;;###autoload
1758(defun idlwave-mode () 1769(defun idlwave-mode ()
1759 "Major mode for editing IDL source files (version 5.5). 1770 "Major mode for editing IDL source files (version 5.7_22).
1760 1771
1761The main features of this mode are 1772The main features of this mode are
1762 1773
@@ -1935,15 +1946,10 @@ The main features of this mode are
1935 'idlwave-prev-index-position) 1946 'idlwave-prev-index-position)
1936 1947
1937 ;; Make a local post-command-hook and add our hook to it 1948 ;; Make a local post-command-hook and add our hook to it
1938 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1939 (make-local-hook 'post-command-hook)
1940 (add-hook 'post-command-hook 'idlwave-command-hook nil 'local) 1949 (add-hook 'post-command-hook 'idlwave-command-hook nil 'local)
1941 1950
1942 ;; Make local hooks for buffer updates 1951 ;; Make local hooks for buffer updates
1943 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1944 (make-local-hook 'kill-buffer-hook)
1945 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local) 1952 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local)
1946 (make-local-hook 'after-save-hook)
1947 (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local) 1953 (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local)
1948 (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local) 1954 (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local)
1949 1955
@@ -2696,7 +2702,7 @@ See `idlwave-surround'."
2696 (re-search-backward "\\(#\\)\\=" nil t)) 2702 (re-search-backward "\\(#\\)\\=" nil t))
2697 (setq len (1+ (length (match-string 1)))) 2703 (setq len (1+ (length (match-string 1))))
2698 (when (re-search-backward an-ops nil t) 2704 (when (re-search-backward an-ops nil t)
2699 (setq begin nil) ; won't modify begin 2705 ;(setq begin nil) ; won't modify begin
2700 (setq len (1+ (length (match-string 1)))))))) 2706 (setq len (1+ (length (match-string 1))))))))
2701 2707
2702 (if (eq t idlwave-pad-keyword) 2708 (if (eq t idlwave-pad-keyword)
@@ -4267,7 +4273,9 @@ This defines the function `idlwave-sintern-TAG' and the variable
4267(defvar idlwave-user-catalog-routines nil 4273(defvar idlwave-user-catalog-routines nil
4268 "Holds the procedure routine-info from the user scan.") 4274 "Holds the procedure routine-info from the user scan.")
4269(defvar idlwave-library-catalog-routines nil 4275(defvar idlwave-library-catalog-routines nil
4270 "Holds the procedure routine-info from the library catalog files.") 4276 "Holds the procedure routine-info from the .idlwave_catalog library files.")
4277(defvar idlwave-library-catalog-libname nil
4278 "Name of library catalog loaded from .idlwave_catalog files.")
4271(defvar idlwave-path-alist nil 4279(defvar idlwave-path-alist nil
4272 "Alist with !PATH directories and zero or more flags if the dir has 4280 "Alist with !PATH directories and zero or more flags if the dir has
4273been scanned in a user catalog ('user) or discovered in a library 4281been scanned in a user catalog ('user) or discovered in a library
@@ -4384,6 +4392,8 @@ will re-read the catalog."
4384 4392
4385 4393
4386(defvar idlwave-load-rinfo-idle-timer) 4394(defvar idlwave-load-rinfo-idle-timer)
4395(defvar idlwave-shell-path-query)
4396
4387(defun idlwave-update-routine-info (&optional arg no-concatenate) 4397(defun idlwave-update-routine-info (&optional arg no-concatenate)
4388 "Update the internal routine-info lists. 4398 "Update the internal routine-info lists.
4389These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info]) 4399These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info])
@@ -4508,6 +4518,8 @@ information updated immediately, leave NO-CONCATENATE nil."
4508 nil 'idlwave-load-rinfo-next-step))) 4518 nil 'idlwave-load-rinfo-next-step)))
4509 (error nil)))) 4519 (error nil))))
4510 4520
4521(defvar idlwave-library-routines nil "Obsolete variable.")
4522
4511(defun idlwave-load-rinfo-next-step () 4523(defun idlwave-load-rinfo-next-step ()
4512 (let ((inhibit-quit t) 4524 (let ((inhibit-quit t)
4513 (arr idlwave-load-rinfo-steps-done)) 4525 (arr idlwave-load-rinfo-steps-done))
@@ -4816,12 +4828,15 @@ information updated immediately, leave NO-CONCATENATE nil."
4816 4828
4817(defun idlwave-sys-dir () 4829(defun idlwave-sys-dir ()
4818 "Return the syslib directory, or a dummy that never matches." 4830 "Return the syslib directory, or a dummy that never matches."
4819 (if (string= idlwave-system-directory "") 4831 (cond
4820 "@@@@@@@@" 4832 ((and idlwave-system-directory
4821 idlwave-system-directory)) 4833 (not (string= idlwave-system-directory "")))
4834 idlwave-system-directory)
4835 ((getenv "IDL_DIR"))
4836 (t "@@@@@@@@")))
4837
4822 4838
4823 4839
4824(defvar idlwave-shell-path-query)
4825(defun idlwave-create-user-catalog-file (&optional arg) 4840(defun idlwave-create-user-catalog-file (&optional arg)
4826 "Scan all files on selected dirs of IDL search path for routine information. 4841 "Scan all files on selected dirs of IDL search path for routine information.
4827 4842
@@ -5140,6 +5155,9 @@ directories and save the routine info.
5140 5155
5141;;----- Scanning the library catalogs ------------------ 5156;;----- Scanning the library catalogs ------------------
5142 5157
5158
5159
5160
5143(defun idlwave-scan-library-catalogs (&optional message-base no-load) 5161(defun idlwave-scan-library-catalogs (&optional message-base no-load)
5144 "Scan for library catalog files (.idlwave_catalog) and ingest. 5162 "Scan for library catalog files (.idlwave_catalog) and ingest.
5145 5163
@@ -5488,13 +5506,15 @@ When we force a method or a method keyword, CLASS can specify the class."
5488 (isa (format "procedure%s-keyword" (if class "-method" ""))) 5506 (isa (format "procedure%s-keyword" (if class "-method" "")))
5489 (entry (idlwave-best-rinfo-assq 5507 (entry (idlwave-best-rinfo-assq
5490 name 'pro class (idlwave-routines))) 5508 name 'pro class (idlwave-routines)))
5509 (system (if entry (eq (car (nth 3 entry)) 'system)))
5491 (list (idlwave-entry-keywords entry 'do-link))) 5510 (list (idlwave-entry-keywords entry 'do-link)))
5492 (unless (or entry (eq class t)) 5511 (unless (or entry (eq class t))
5493 (error "Nothing known about procedure %s" 5512 (error "Nothing known about procedure %s"
5494 (idlwave-make-full-name class name))) 5513 (idlwave-make-full-name class name)))
5495 (setq list (idlwave-fix-keywords name 'pro class list super-classes)) 5514 (setq list (idlwave-fix-keywords name 'pro class list
5515 super-classes system))
5496 (unless list (error "No keywords available for procedure %s" 5516 (unless list (error "No keywords available for procedure %s"
5497 (idlwave-make-full-name class name))) 5517 (idlwave-make-full-name class name)))
5498 (setq idlwave-completion-help-info 5518 (setq idlwave-completion-help-info
5499 (list 'keyword name type-selector class-selector entry super-classes)) 5519 (list 'keyword name type-selector class-selector entry super-classes))
5500 (idlwave-complete-in-buffer 5520 (idlwave-complete-in-buffer
@@ -5519,12 +5539,14 @@ When we force a method or a method keyword, CLASS can specify the class."
5519 (isa (format "function%s-keyword" (if class "-method" ""))) 5539 (isa (format "function%s-keyword" (if class "-method" "")))
5520 (entry (idlwave-best-rinfo-assq 5540 (entry (idlwave-best-rinfo-assq
5521 name 'fun class (idlwave-routines))) 5541 name 'fun class (idlwave-routines)))
5542 (system (if entry (eq (car (nth 3 entry)) 'system)))
5522 (list (idlwave-entry-keywords entry 'do-link)) 5543 (list (idlwave-entry-keywords entry 'do-link))
5523 msg-name) 5544 msg-name)
5524 (unless (or entry (eq class t)) 5545 (unless (or entry (eq class t))
5525 (error "Nothing known about function %s" 5546 (error "Nothing known about function %s"
5526 (idlwave-make-full-name class name))) 5547 (idlwave-make-full-name class name)))
5527 (setq list (idlwave-fix-keywords name 'fun class list super-classes)) 5548 (setq list (idlwave-fix-keywords name 'fun class list
5549 super-classes system))
5528 ;; OBJ_NEW: Messages mention the proper Init method 5550 ;; OBJ_NEW: Messages mention the proper Init method
5529 (setq msg-name (if (and (null class) 5551 (setq msg-name (if (and (null class)
5530 (string= (upcase name) "OBJ_NEW")) 5552 (string= (upcase name) "OBJ_NEW"))
@@ -5532,7 +5554,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5532 "::Init (via OBJ_NEW)") 5554 "::Init (via OBJ_NEW)")
5533 (idlwave-make-full-name class name))) 5555 (idlwave-make-full-name class name)))
5534 (unless list (error "No keywords available for function %s" 5556 (unless list (error "No keywords available for function %s"
5535 msg-name)) 5557 msg-name))
5536 (setq idlwave-completion-help-info 5558 (setq idlwave-completion-help-info
5537 (list 'keyword name type-selector class-selector nil super-classes)) 5559 (list 'keyword name type-selector class-selector nil super-classes))
5538 (idlwave-complete-in-buffer 5560 (idlwave-complete-in-buffer
@@ -6155,7 +6177,7 @@ This function is not general, can only be used for completion stuff."
6155 ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil)) 6177 ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil))
6156 ((eq (preceding-char) ?\n) 6178 ((eq (preceding-char) ?\n)
6157 (beginning-of-line 0) 6179 (beginning-of-line 0)
6158 (if (looking-at "\\([^;\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n") 6180 (if (looking-at "\\([^\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n")
6159 ;; continuation line 6181 ;; continuation line
6160 (goto-char (match-end 1)) 6182 (goto-char (match-end 1))
6161 (throw 'exit nil))) 6183 (throw 'exit nil)))
@@ -7159,6 +7181,7 @@ Gets set in `idlw-rinfo.el'.")
7159 t)) ; return t to skip other completions 7181 t)) ; return t to skip other completions
7160 (t nil)))) 7182 (t nil))))
7161 7183
7184(defvar link) ;dynamic
7162(defun idlwave-complete-sysvar-help (mode word) 7185(defun idlwave-complete-sysvar-help (mode word)
7163 (let ((word (or (nth 1 idlwave-completion-help-info) word)) 7186 (let ((word (or (nth 1 idlwave-completion-help-info) word))
7164 (entry (assoc word idlwave-system-variables-alist))) 7187 (entry (assoc word idlwave-system-variables-alist)))
@@ -7462,6 +7485,10 @@ With ARG, enforce query for the class of object methods."
7462 '(idlwave-update-routine-info) 7485 '(idlwave-update-routine-info)
7463 nil t)))))) 7486 nil t))))))
7464 7487
7488(defun idlwave-find-module-this-file ()
7489 (interactive)
7490 (idlwave-find-module '(4)))
7491
7465(defun idlwave-find-module (&optional arg) 7492(defun idlwave-find-module (&optional arg)
7466 "Find the source code of an IDL module. 7493 "Find the source code of an IDL module.
7467Works for modules for which IDLWAVE has routine info available. The 7494Works for modules for which IDLWAVE has routine info available. The
@@ -7662,10 +7689,12 @@ appropriate Init method."
7662 (idlwave-sintern-class class))))) 7689 (idlwave-sintern-class class)))))
7663 module)) 7690 module))
7664 7691
7665(defun idlwave-fix-keywords (name type class keywords &optional super-classes) 7692(defun idlwave-fix-keywords (name type class keywords
7693 &optional super-classes system)
7666 "Update a list of keywords. 7694 "Update a list of keywords.
7667Translate OBJ_NEW, adding all super-class keywords, or all keywords 7695Translate OBJ_NEW, adding all super-class keywords, or all keywords
7668from all classes if class equals t." 7696from all classes if class equals t. If SYSTEM is non-nil, don't
7697demand _EXTRA in the keyword list."
7669 (let ((case-fold-search t)) 7698 (let ((case-fold-search t))
7670 7699
7671 ;; If this is the OBJ_NEW function, try to figure out the class and use 7700 ;; If this is the OBJ_NEW function, try to figure out the class and use
@@ -7708,8 +7737,10 @@ from all classes if class equals t."
7708 super-classes 7737 super-classes
7709 idlwave-keyword-class-inheritance 7738 idlwave-keyword-class-inheritance
7710 (stringp class) 7739 (stringp class)
7711 (or (assq (idlwave-sintern-keyword "_extra") keywords) 7740 (or
7712 (assq (idlwave-sintern-keyword "_ref_extra") keywords)) 7741 system
7742 (assq (idlwave-sintern-keyword "_extra") keywords)
7743 (assq (idlwave-sintern-keyword "_ref_extra") keywords))
7713 ;; Check if one of the keyword-class regexps matches the name 7744 ;; Check if one of the keyword-class regexps matches the name
7714 (let ((regexps idlwave-keyword-class-inheritance) re) 7745 (let ((regexps idlwave-keyword-class-inheritance) re)
7715 (catch 'exit 7746 (catch 'exit
@@ -8048,7 +8079,8 @@ Optional args RIGHT and SHIFT indicate, if mouse-3 was used, and if SHIFT
8048was pressed." 8079was pressed."
8049 (interactive "e") 8080 (interactive "e")
8050 (if ev (mouse-set-point ev)) 8081 (if ev (mouse-set-point ev))
8051 (let (data id name type class buf bufwin source word initial-class) 8082 (let (data id name type class buf bufwin source link keyword
8083 word initial-class)
8052 (setq data (get-text-property (point) 'data) 8084 (setq data (get-text-property (point) 'data)
8053 source (get-text-property (point) 'source) 8085 source (get-text-property (point) 'source)
8054 keyword (get-text-property (point) 'keyword) 8086 keyword (get-text-property (point) 'keyword)
@@ -8333,7 +8365,6 @@ routines, and may have been scanned."
8333 (setcar entry 'builtin)) 8365 (setcar entry 'builtin))
8334 (sort alist 'idlwave-routine-twin-compare))) 8366 (sort alist 'idlwave-routine-twin-compare)))
8335 8367
8336(defvar name)
8337(defvar type) 8368(defvar type)
8338(defvar class) 8369(defvar class)
8339(defvar idlwave-sort-prefer-buffer-info t 8370(defvar idlwave-sort-prefer-buffer-info t
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index e4d36244537..252dca5624b 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -61,7 +61,7 @@
61;;; Code: 61;;; Code:
62 62
63(defgroup pascal nil 63(defgroup pascal nil
64 "Major mode for editing Pascal source in Emacs" 64 "Major mode for editing Pascal source in Emacs."
65 :group 'languages) 65 :group 'languages)
66 66
67(defvar pascal-mode-abbrev-table nil 67(defvar pascal-mode-abbrev-table nil
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 73450dec61a..b6c4dd8c662 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -31,7 +31,7 @@
31;;; Code: 31;;; Code:
32 32
33(defgroup prolog nil 33(defgroup prolog nil
34 "Major mode for editing and running Prolog under Emacs" 34 "Major mode for editing and running Prolog under Emacs."
35 :group 'languages) 35 :group 'languages)
36 36
37 37
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 3f556bdb695..d31ac29c01f 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -70,7 +70,7 @@
70(autoload 'compilation-start "compile") 70(autoload 'compilation-start "compile")
71 71
72(defgroup python nil 72(defgroup python nil
73 "Silly walks in the Python language" 73 "Silly walks in the Python language."
74 :group 'languages 74 :group 'languages
75 :version "22.1" 75 :version "22.1"
76 :link '(emacs-commentary-link "python")) 76 :link '(emacs-commentary-link "python"))
@@ -949,6 +949,7 @@ See `python-check-command' for the default."
949 (if name 949 (if name
950 (file-name-nondirectory name)))))))) 950 (file-name-nondirectory name))))))))
951 (setq python-saved-check-command command) 951 (setq python-saved-check-command command)
952 (require 'compile) ;To define compilation-* variables.
952 (save-some-buffers (not compilation-ask-about-save) nil) 953 (save-some-buffers (not compilation-ask-about-save) nil)
953 (let ((compilation-error-regexp-alist 954 (let ((compilation-error-regexp-alist
954 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2) 955 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
@@ -1066,7 +1067,7 @@ For running multiple processes in multiple buffers, see `python-buffer'.
1066 ;; Still required by `comint-redirect-send-command', for instance 1067 ;; Still required by `comint-redirect-send-command', for instance
1067 ;; (and we need to match things like `>>> ... >>> '): 1068 ;; (and we need to match things like `>>> ... >>> '):
1068 (set (make-local-variable 'comint-prompt-regexp) 1069 (set (make-local-variable 'comint-prompt-regexp)
1069 (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\ ))))) 1070 (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\s)))))
1070 (set (make-local-variable 'compilation-error-regexp-alist) 1071 (set (make-local-variable 'compilation-error-regexp-alist)
1071 python-compilation-regexp-alist) 1072 python-compilation-regexp-alist)
1072 (compilation-shell-minor-mode 1)) 1073 (compilation-shell-minor-mode 1))
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index c792b59ad87..4df71e3a2a2 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -82,7 +82,7 @@
82 (modify-syntax-entry ?\n "> " st) 82 (modify-syntax-entry ?\n "> " st)
83 (modify-syntax-entry ?\f " " st) 83 (modify-syntax-entry ?\f " " st)
84 (modify-syntax-entry ?\r " " st) 84 (modify-syntax-entry ?\r " " st)
85 (modify-syntax-entry ? " " st) 85 (modify-syntax-entry ?\s " " st)
86 86
87 ;; These characters are delimiters but otherwise undefined. 87 ;; These characters are delimiters but otherwise undefined.
88 ;; Brackets and braces balance for editing convenience. 88 ;; Brackets and braces balance for editing convenience.
@@ -228,7 +228,7 @@ if that value is non-nil."
228 (run-mode-hooks 'scheme-mode-hook)) 228 (run-mode-hooks 'scheme-mode-hook))
229 229
230(defgroup scheme nil 230(defgroup scheme nil
231 "Editing Scheme code" 231 "Editing Scheme code."
232 :group 'lisp) 232 :group 'lisp)
233 233
234(defcustom scheme-mit-dialect t 234(defcustom scheme-mit-dialect t
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 23d8374818e..faf98f6292f 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -202,12 +202,12 @@
202 202
203 203
204(defgroup sh nil 204(defgroup sh nil
205 "Shell programming utilities" 205 "Shell programming utilities."
206 :group 'unix 206 :group 'unix
207 :group 'languages) 207 :group 'languages)
208 208
209(defgroup sh-script nil 209(defgroup sh-script nil
210 "Shell script mode" 210 "Shell script mode."
211 :group 'sh 211 :group 'sh
212 :prefix "sh-") 212 :prefix "sh-")
213 213
@@ -2370,7 +2370,7 @@ If AND-MOVE is non-nil then move to end of word."
2370 (goto-char where)) 2370 (goto-char where))
2371 (prog1 2371 (prog1
2372 (buffer-substring (point) 2372 (buffer-substring (point)
2373 (progn (skip-chars-forward "^ \t\n;")(point))) 2373 (progn (skip-chars-forward "^ \t\n;&")(point)))
2374 (unless and-move 2374 (unless and-move
2375 (goto-char start))))) 2375 (goto-char start)))))
2376 2376
@@ -3535,7 +3535,7 @@ The document is bounded by `sh-here-document-word'."
3535 (delim (replace-regexp-in-string "['\"]" "" 3535 (delim (replace-regexp-in-string "['\"]" ""
3536 sh-here-document-word))) 3536 sh-here-document-word)))
3537 (insert sh-here-document-word) 3537 (insert sh-here-document-word)
3538 (or (eolp) (looking-at "[ \t]") (insert ? )) 3538 (or (eolp) (looking-at "[ \t]") (insert ?\s))
3539 (end-of-line 1) 3539 (end-of-line 1)
3540 (while 3540 (while
3541 (sh-quoted-p) 3541 (sh-quoted-p)
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 9b819ceae00..1f2e7eb4863 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -221,7 +221,7 @@
221;;; Allow customization 221;;; Allow customization
222 222
223(defgroup SQL nil 223(defgroup SQL nil
224 "Running a SQL interpreter from within Emacs buffers" 224 "Running a SQL interpreter from within Emacs buffers."
225 :version "20.4" 225 :version "20.4"
226 :group 'processes) 226 :group 'processes)
227 227
@@ -2077,7 +2077,7 @@ Inserts SELECT or commas if appropriate."
2077 (insert ", ")) 2077 (insert ", "))
2078 ;; else insert a space 2078 ;; else insert a space
2079 (t 2079 (t
2080 (if (eq (preceding-char) ? ) 2080 (if (eq (preceding-char) ?\s)
2081 nil 2081 nil
2082 (insert " "))))) 2082 (insert " ")))))
2083 ;; in any case, insert the column 2083 ;; in any case, insert the column
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index a3447befa20..2669369645f 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -118,7 +118,7 @@
118;; 118;;
119 119
120(defgroup tcl nil 120(defgroup tcl nil
121 "Major mode for editing Tcl source in Emacs" 121 "Major mode for editing Tcl source in Emacs."
122 :group 'languages) 122 :group 'languages)
123 123
124(defcustom tcl-indent-level 4 124(defcustom tcl-indent-level 4
@@ -1489,7 +1489,7 @@ styles."
1489 (unless (or (bolp) (tcl-real-command-p)) 1489 (unless (or (bolp) (tcl-real-command-p))
1490 (insert ";") 1490 (insert ";")
1491 ;; Try and erase a non-significant char to keep charpos identical. 1491 ;; Try and erase a non-significant char to keep charpos identical.
1492 (if (memq (char-after) '(?\t ?\ )) (delete-char 1)))) 1492 (if (memq (char-after) '(?\t ?\s)) (delete-char 1))))
1493 (funcall (default-value 'comment-indent-function))) 1493 (funcall (default-value 'comment-indent-function)))
1494 1494
1495;; The following was inspired by the Tcl editing mode written by 1495;; The following was inspired by the Tcl editing mode written by
@@ -1533,7 +1533,7 @@ The first line is assumed to look like \"#!.../program ...\"."
1533(defun tcl-quote (string) 1533(defun tcl-quote (string)
1534 "Quote STRING according to Tcl rules." 1534 "Quote STRING according to Tcl rules."
1535 (mapconcat (lambda (char) 1535 (mapconcat (lambda (char)
1536 (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ? ?\;)) 1536 (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ?\s ?\;))
1537 (concat "\\" (char-to-string char)) 1537 (concat "\\" (char-to-string char))
1538 (char-to-string char))) 1538 (char-to-string char)))
1539 string "")) 1539 string ""))
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 54e7ab8a049..95d3d652d67 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -1133,7 +1133,7 @@ If TO STRING is empty, the instance name is queried."
1133 1133
1134 1134
1135(defgroup vhdl-testbench nil 1135(defgroup vhdl-testbench nil
1136 "Customizations for testbench generation ." 1136 "Customizations for testbench generation."
1137 :group 'vhdl-port) 1137 :group 'vhdl-port)
1138 1138
1139(defcustom vhdl-testbench-entity-name '(".*" . "\\&_tb") 1139(defcustom vhdl-testbench-entity-name '(".*" . "\\&_tb")
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index e62ab644a1c..79215f2a8ad 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -10,12 +10,12 @@
10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) 10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
11;; Vinicius Jose Latorre <viniciusjl@ig.com.br> 11;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
12;; Keywords: wp, print, PostScript 12;; Keywords: wp, print, PostScript
13;; Time-stamp: <2005/03/19 00:40:12 vinicius> 13;; Time-stamp: <2005/06/27 00:57:22 vinicius>
14;; Version: 6.6.6 14;; Version: 6.6.7
15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
16 16
17(defconst ps-print-version "6.6.6" 17(defconst ps-print-version "6.6.7"
18 "ps-print.el, v 6.6.6 <2005/03/19 vinicius> 18 "ps-print.el, v 6.6.7 <2005/06/27 vinicius>
19 19
20Vinicius's last change version -- this file may have been edited as part of 20Vinicius's last change version -- this file may have been edited as part of
21Emacs without changes to the version number. When reporting bugs, please also 21Emacs without changes to the version number. When reporting bugs, please also
@@ -1562,13 +1562,13 @@ Please send all bug fixes and enhancements to
1562;;; Interface to the command system 1562;;; Interface to the command system
1563 1563
1564(defgroup postscript nil 1564(defgroup postscript nil
1565 "PostScript Group" 1565 "PostScript Group."
1566 :tag "PostScript" 1566 :tag "PostScript"
1567 :version "20" 1567 :version "20"
1568 :group 'emacs) 1568 :group 'emacs)
1569 1569
1570(defgroup ps-print nil 1570(defgroup ps-print nil
1571 "PostScript generator for Emacs" 1571 "PostScript generator for Emacs."
1572 :link '(emacs-library-link :tag "Source Lisp File" "ps-print.el") 1572 :link '(emacs-library-link :tag "Source Lisp File" "ps-print.el")
1573 :prefix "ps-" 1573 :prefix "ps-"
1574 :version "20" 1574 :version "20"
@@ -1576,42 +1576,42 @@ Please send all bug fixes and enhancements to
1576 :group 'postscript) 1576 :group 'postscript)
1577 1577
1578(defgroup ps-print-horizontal nil 1578(defgroup ps-print-horizontal nil
1579 "Horizontal page layout" 1579 "Horizontal page layout."
1580 :prefix "ps-" 1580 :prefix "ps-"
1581 :tag "Horizontal" 1581 :tag "Horizontal"
1582 :version "20" 1582 :version "20"
1583 :group 'ps-print) 1583 :group 'ps-print)
1584 1584
1585(defgroup ps-print-vertical nil 1585(defgroup ps-print-vertical nil
1586 "Vertical page layout" 1586 "Vertical page layout."
1587 :prefix "ps-" 1587 :prefix "ps-"
1588 :tag "Vertical" 1588 :tag "Vertical"
1589 :version "20" 1589 :version "20"
1590 :group 'ps-print) 1590 :group 'ps-print)
1591 1591
1592(defgroup ps-print-headers nil 1592(defgroup ps-print-headers nil
1593 "Headers & footers layout" 1593 "Headers & footers layout."
1594 :prefix "ps-" 1594 :prefix "ps-"
1595 :tag "Header & Footer" 1595 :tag "Header & Footer"
1596 :version "20" 1596 :version "20"
1597 :group 'ps-print) 1597 :group 'ps-print)
1598 1598
1599(defgroup ps-print-font nil 1599(defgroup ps-print-font nil
1600 "Fonts customization" 1600 "Fonts customization."
1601 :prefix "ps-" 1601 :prefix "ps-"
1602 :tag "Font" 1602 :tag "Font"
1603 :version "20" 1603 :version "20"
1604 :group 'ps-print) 1604 :group 'ps-print)
1605 1605
1606(defgroup ps-print-color nil 1606(defgroup ps-print-color nil
1607 "Color customization" 1607 "Color customization."
1608 :prefix "ps-" 1608 :prefix "ps-"
1609 :tag "Color" 1609 :tag "Color"
1610 :version "20" 1610 :version "20"
1611 :group 'ps-print) 1611 :group 'ps-print)
1612 1612
1613(defgroup ps-print-face nil 1613(defgroup ps-print-face nil
1614 "Faces customization" 1614 "Faces customization."
1615 :prefix "ps-" 1615 :prefix "ps-"
1616 :tag "PS Faces" 1616 :tag "PS Faces"
1617 :version "20" 1617 :version "20"
@@ -1619,42 +1619,42 @@ Please send all bug fixes and enhancements to
1619 :group 'faces) 1619 :group 'faces)
1620 1620
1621(defgroup ps-print-n-up nil 1621(defgroup ps-print-n-up nil
1622 "N-up customization" 1622 "N-up customization."
1623 :prefix "ps-" 1623 :prefix "ps-"
1624 :tag "N-Up" 1624 :tag "N-Up"
1625 :version "20" 1625 :version "20"
1626 :group 'ps-print) 1626 :group 'ps-print)
1627 1627
1628(defgroup ps-print-zebra nil 1628(defgroup ps-print-zebra nil
1629 "Zebra customization" 1629 "Zebra customization."
1630 :prefix "ps-" 1630 :prefix "ps-"
1631 :tag "Zebra" 1631 :tag "Zebra"
1632 :version "20" 1632 :version "20"
1633 :group 'ps-print) 1633 :group 'ps-print)
1634 1634
1635(defgroup ps-print-background nil 1635(defgroup ps-print-background nil
1636 "Background customization" 1636 "Background customization."
1637 :prefix "ps-" 1637 :prefix "ps-"
1638 :tag "Background" 1638 :tag "Background"
1639 :version "20" 1639 :version "20"
1640 :group 'ps-print) 1640 :group 'ps-print)
1641 1641
1642(defgroup ps-print-printer '((lpr custom-group)) 1642(defgroup ps-print-printer '((lpr custom-group))
1643 "Printer customization" 1643 "Printer customization."
1644 :prefix "ps-" 1644 :prefix "ps-"
1645 :tag "Printer" 1645 :tag "Printer"
1646 :version "20" 1646 :version "20"
1647 :group 'ps-print) 1647 :group 'ps-print)
1648 1648
1649(defgroup ps-print-page nil 1649(defgroup ps-print-page nil
1650 "Page customization" 1650 "Page customization."
1651 :prefix "ps-" 1651 :prefix "ps-"
1652 :tag "Page" 1652 :tag "Page"
1653 :version "20" 1653 :version "20"
1654 :group 'ps-print) 1654 :group 'ps-print)
1655 1655
1656(defgroup ps-print-miscellany nil 1656(defgroup ps-print-miscellany nil
1657 "Miscellany customization" 1657 "Miscellany customization."
1658 :prefix "ps-" 1658 :prefix "ps-"
1659 :tag "Miscellany" 1659 :tag "Miscellany"
1660 :version "20" 1660 :version "20"
@@ -3760,7 +3760,7 @@ If `ps-prefix-quote' is nil, it's set to t after generating string."
3760 "(setq ") 3760 "(setq ")
3761 key 3761 key
3762 (if (> col len) 3762 (if (> col len)
3763 (make-string (- col len) ?\ ) 3763 (make-string (- col len) ?\s)
3764 " ") 3764 " ")
3765 (ps-value-string val)))) 3765 (ps-value-string val))))
3766 (t "") 3766 (t "")
@@ -5961,10 +5961,14 @@ XSTART YSTART are the relative position for the first page in a sheet.")
5961 (ps-begin-page)) 5961 (ps-begin-page))
5962 5962
5963 5963
5964(defun ps-end-sheet ()
5965 (and ps-print-page-p (> ps-page-sheet 0)
5966 (ps-output "EndSheet\n")))
5967
5968
5964(defun ps-header-sheet () 5969(defun ps-header-sheet ()
5965 ;; Print only when a new sheet begins. 5970 ;; Print only when a new sheet begins.
5966 (and ps-print-page-p (> ps-page-sheet 0) 5971 (ps-end-sheet)
5967 (ps-output "EndSheet\n"))
5968 (setq ps-page-sheet (1+ ps-page-sheet)) 5972 (setq ps-page-sheet (1+ ps-page-sheet))
5969 (when (ps-print-sheet-p) 5973 (when (ps-print-sheet-p)
5970 (setq ps-page-order (1+ ps-page-order)) 5974 (setq ps-page-order (1+ ps-page-order))
@@ -6689,8 +6693,7 @@ If FACE is not a valid face name, it is used default face."
6689 6693
6690 6694
6691(defun ps-end-job (needs-begin-file) 6695(defun ps-end-job (needs-begin-file)
6692 (let ((previous-print ps-print-page-p) 6696 (let ((ps-print-page-p t))
6693 (ps-print-page-p t))
6694 (ps-flush-output) 6697 (ps-flush-output)
6695 (save-excursion 6698 (save-excursion
6696 (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing)) 6699 (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing))
@@ -6717,8 +6720,7 @@ If FACE is not a valid face name, it is used default face."
6717 (number-to-string ps-lines-printed) " BeginPage\n") 6720 (number-to-string ps-lines-printed) " BeginPage\n")
6718 (ps-end-page))) 6721 (ps-end-page)))
6719 ;; Set end of PostScript file 6722 ;; Set end of PostScript file
6720 (and previous-print 6723 (ps-end-sheet)
6721 (ps-output "EndSheet\n"))
6722 (ps-output "\n%%Trailer\n%%Pages: " 6724 (ps-output "\n%%Trailer\n%%Pages: "
6723 (number-to-string 6725 (number-to-string
6724 (if (and needs-begin-file 6726 (if (and needs-begin-file
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 1ea3ae6ecb2..64af3b1da3f 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -28,18 +28,18 @@
28;;; Commentary: 28;;; Commentary:
29 29
30;; This package maintains a menu for visiting files that were operated 30;; This package maintains a menu for visiting files that were operated
31;; on recently. When enabled a new "Open Recent" submenu is displayed 31;; on recently. When enabled a new "Open Recent" sub menu is
32;; in the "Files" menu. The recent files list is automatically saved 32;; displayed in the "Files" menu. The recent files list is
33;; across Emacs sessions. You can customize the number of recent 33;; automatically saved across Emacs sessions. You can customize the
34;; files displayed, the location of the menu and others options (see 34;; number of recent files displayed, the location of the menu and
35;; the source code for details). 35;; others options (see the source code for details).
36 36
37;;; History: 37;;; History:
38;; 38;;
39 39
40;;; Code: 40;;; Code:
41(require 'easymenu) 41(require 'easymenu)
42(require 'wid-edit) 42(require 'tree-widget)
43(require 'timer) 43(require 'timer)
44 44
45;;; Internal data 45;;; Internal data
@@ -259,7 +259,8 @@ If `file-name-history' is not empty, do nothing."
259It is passed a filename to give a chance to transform it. 259It is passed a filename to give a chance to transform it.
260If it returns nil, the filename is left unchanged." 260If it returns nil, the filename is left unchanged."
261 :group 'recentf 261 :group 'recentf
262 :type 'function) 262 :type '(choice (const :tag "None" nil)
263 function))
263 264
264;;; Utilities 265;;; Utilities
265;; 266;;
@@ -904,30 +905,54 @@ unchanged."
904;; 905;;
905(defun recentf-cancel-dialog (&rest ignore) 906(defun recentf-cancel-dialog (&rest ignore)
906 "Cancel the current dialog. 907 "Cancel the current dialog.
907Used internally by recentf dialogs.
908IGNORE arguments." 908IGNORE arguments."
909 (interactive) 909 (interactive)
910 (kill-buffer (current-buffer)) 910 (kill-buffer (current-buffer))
911 (message "Dialog canceled")) 911 (message "Dialog canceled"))
912 912
913(defun recentf-dialog-goto-first (widget-type)
914 "Move the cursor to the first WIDGET-TYPE in current dialog.
915Go to the beginning of buffer if not found."
916 (goto-char (point-min))
917 (condition-case nil
918 (let (done)
919 (widget-move 1)
920 (while (not done)
921 (if (eq widget-type (widget-type (widget-at (point))))
922 (setq done t)
923 (widget-move 1))))
924 (goto-char (point-min))))
925
913(defvar recentf-dialog-mode-map 926(defvar recentf-dialog-mode-map
914 (let ((km (make-sparse-keymap))) 927 (let ((km (make-sparse-keymap)))
928 (set-keymap-parent km widget-keymap)
915 (define-key km "q" 'recentf-cancel-dialog) 929 (define-key km "q" 'recentf-cancel-dialog)
916 (define-key km [down-mouse-1] 'widget-button-click) 930 (define-key km [down-mouse-1] 'widget-button-click)
917 (set-keymap-parent km widget-keymap)
918 km) 931 km)
919 "Keymap used in recentf dialogs.") 932 "Keymap used in recentf dialogs.")
920 933
921(defun recentf-dialog-mode () 934(define-derived-mode recentf-dialog-mode nil "recentf-dialog"
922 "Major mode of recentf dialogs. 935 "Major mode of recentf dialogs.
923 936
924\\{recentf-dialog-mode-map}" 937\\{recentf-dialog-mode-map}"
925 (interactive) 938 :syntax-table nil
926 (kill-all-local-variables) 939 :abbrev-table nil
927 (setq major-mode 'recentf-dialog-mode) 940 (setq truncate-lines t))
928 (setq mode-name "recentf-dialog") 941
929 (use-local-map recentf-dialog-mode-map) 942(defmacro recentf-dialog (name &rest forms)
930 (run-mode-hooks 'recentf-dialog-mode-hook)) 943 "Show a dialog buffer with NAME, setup with FORMS."
944 (declare (indent 1) (debug t))
945 `(with-current-buffer (get-buffer-create ,name)
946 ;; Cleanup buffer
947 (let ((inhibit-read-only t)
948 (ol (overlay-lists)))
949 (mapc 'delete-overlay (car ol))
950 (mapc 'delete-overlay (cdr ol))
951 (erase-buffer))
952 (recentf-dialog-mode)
953 ,@forms
954 (widget-setup)
955 (switch-to-buffer (current-buffer))))
931 956
932;;; Hooks 957;;; Hooks
933;; 958;;
@@ -976,163 +1001,127 @@ That is, remove a non kept file from the recent list."
976 1001
977;;; Commands 1002;;; Commands
978;; 1003;;
979(defvar recentf-edit-selected-items nil
980 "List of files to be deleted from the recent list.
981Used internally by `recentf-edit-list'.")
982 1004
983(defun recentf-edit-list-action (widget &rest ignore) 1005;;; Edit list dialog
984 "Checkbox WIDGET action that toogles a file selection. 1006;;
985Used internally by `recentf-edit-list'. 1007(defvar recentf-edit-list nil)
1008
1009(defun recentf-edit-list-select (widget &rest ignore)
1010 "Toggle a file selection based on the checkbox WIDGET state.
986IGNORE other arguments." 1011IGNORE other arguments."
987 (let ((value (widget-get widget ':tag))) 1012 (let ((value (widget-get widget :tag))
988 ;; if value is already in the selected items 1013 (check (widget-value widget)))
989 (if (memq value recentf-edit-selected-items) 1014 (if check
990 ;; then remove it 1015 (add-to-list 'recentf-edit-list value)
991 (progn 1016 (setq recentf-edit-list (delq value recentf-edit-list)))
992 (setq recentf-edit-selected-items 1017 (message "%s %sselected" value (if check "" "un"))))
993 (delq value recentf-edit-selected-items)) 1018
994 (message "%s removed from selection" value)) 1019(defun recentf-edit-list-validate (&rest ignore)
995 ;; else add it 1020 "Process the recent list when the edit list dialog is committed.
996 (push value recentf-edit-selected-items) 1021IGNORE arguments."
997 (message "%s added to selection" value)))) 1022 (if recentf-edit-list
1023 (let ((i 0))
1024 (dolist (e recentf-edit-list)
1025 (setq recentf-list (delq e recentf-list)
1026 i (1+ i)))
1027 (kill-buffer (current-buffer))
1028 (message "%S file(s) removed from the list" i)
1029 (recentf-clear-data))
1030 (message "No file selected")))
998 1031
999(defun recentf-edit-list () 1032(defun recentf-edit-list ()
1000 "Show a dialog buffer to edit the recent list. 1033 "Show a dialog to delete selected files from the recent list."
1001That is to select files to be deleted from the recent list."
1002 (interactive) 1034 (interactive)
1003 (with-current-buffer 1035 (recentf-dialog (format "*%s - Edit list*" recentf-menu-title)
1004 (get-buffer-create (format "*%s - Edit list*" recentf-menu-title)) 1036 (set (make-local-variable 'recentf-edit-list) nil)
1005 (switch-to-buffer (current-buffer))
1006 ;; Cleanup buffer
1007 (let ((inhibit-read-only t)
1008 (ol (overlay-lists)))
1009 (erase-buffer)
1010 ;; Delete all the overlays.
1011 (mapc 'delete-overlay (car ol))
1012 (mapc 'delete-overlay (cdr ol)))
1013 (recentf-dialog-mode)
1014 (setq recentf-edit-selected-items nil)
1015 ;; Insert the dialog header
1016 (widget-insert 1037 (widget-insert
1017 "\ 1038 "Click on OK to delete selected files from the recent list.
1018Select the files to be deleted from the recent list.\n\n\ 1039Click on Cancel or type `q' to cancel.\n")
1019Click on Ok to update the list. \
1020Click on Cancel or type \"q\" to quit.\n")
1021 ;; Insert the list of files as checkboxes 1040 ;; Insert the list of files as checkboxes
1022 (dolist (item recentf-list) 1041 (dolist (item recentf-list)
1023 (widget-create 1042 (widget-create 'checkbox
1024 'checkbox 1043 :value nil ; unselected checkbox
1025 :value nil ; unselected checkbox 1044 :format "\n %[%v%] %t"
1026 :format "\n %[%v%] %t" 1045 :tag item
1027 :tag item 1046 :notify 'recentf-edit-list-select))
1028 :notify 'recentf-edit-list-action))
1029 (widget-insert "\n\n") 1047 (widget-insert "\n\n")
1030 ;; Insert the Ok button
1031 (widget-create 1048 (widget-create
1032 'push-button 1049 'push-button
1033 :notify (lambda (&rest ignore) 1050 :notify 'recentf-edit-list-validate
1034 (if recentf-edit-selected-items 1051 :help-echo "Delete selected files from the recent list"
1035 (let ((i 0)) 1052 "Ok")
1036 (kill-buffer (current-buffer))
1037 (dolist (e recentf-edit-selected-items)
1038 (setq recentf-list (delq e recentf-list)
1039 i (1+ i)))
1040 (message "%S file(s) removed from the list" i)
1041 (recentf-clear-data))
1042 (message "No file selected")))
1043 "Ok")
1044 (widget-insert " ") 1053 (widget-insert " ")
1045 ;; Insert the Cancel button
1046 (widget-create 1054 (widget-create
1047 'push-button 1055 'push-button
1048 :notify 'recentf-cancel-dialog 1056 :notify 'recentf-cancel-dialog
1049 "Cancel") 1057 "Cancel")
1050 (widget-setup) 1058 (recentf-dialog-goto-first 'checkbox)))
1051 (goto-char (point-min))))
1052 1059
1060;;; Open file dialog
1061;;
1053(defun recentf-open-files-action (widget &rest ignore) 1062(defun recentf-open-files-action (widget &rest ignore)
1054 "Button WIDGET action that open a file. 1063 "Open the file stored in WIDGET's value when notified.
1055Used internally by `recentf-open-files'.
1056IGNORE other arguments." 1064IGNORE other arguments."
1057 (kill-buffer (current-buffer)) 1065 (kill-buffer (current-buffer))
1058 (funcall recentf-menu-action (widget-value widget))) 1066 (funcall recentf-menu-action (widget-value widget)))
1059 1067
1060(defvar recentf-open-files-item-shift ""
1061 "Amount of space to shift right sub-menu items.
1062Used internally by `recentf-open-files'.")
1063
1064(defun recentf-open-files-item (menu-element) 1068(defun recentf-open-files-item (menu-element)
1065 "Insert an item widget for MENU-ELEMENT in the current dialog buffer. 1069 "Return a widget to display MENU-ELEMENT in a dialog buffer."
1066Used internally by `recentf-open-files'." 1070 (if (consp (cdr menu-element))
1067 (let ((item (car menu-element)) 1071 ;; Represent a sub-menu with a tree widget
1068 (file (cdr menu-element))) 1072 `(tree-widget
1069 (if (consp file) ; This is a sub-menu 1073 :open t
1070 (let* ((shift recentf-open-files-item-shift) 1074 :match ignore
1071 (recentf-open-files-item-shift (concat shift " "))) 1075 :node (item :tag ,(car menu-element)
1072 (widget-create 1076 :sample-face bold
1073 'item 1077 :format "%{%t%}:\n")
1074 :tag item 1078 ,@(mapcar 'recentf-open-files-item
1075 :sample-face 'bold 1079 (cdr menu-element)))
1076 :format (concat shift "%{%t%}:\n")) 1080 ;; Represent a single file with a link widget
1077 (mapc 'recentf-open-files-item file) 1081 `(link :tag ,(car menu-element)
1078 (widget-insert "\n")) 1082 :button-prefix ""
1079 (widget-create 1083 :button-suffix ""
1080 'push-button 1084 :button-face default
1081 :button-face 'default 1085 :format "%[%t%]\n"
1082 :tag item 1086 :help-echo ,(concat "Open " (cdr menu-element))
1083 :help-echo (concat "Open " file) 1087 :action recentf-open-files-action
1084 :format (concat recentf-open-files-item-shift "%[%t%]") 1088 ,(cdr menu-element))))
1085 :notify 'recentf-open-files-action
1086 file)
1087 (widget-insert "\n"))))
1088 1089
1089(defun recentf-open-files (&optional files buffer-name) 1090(defun recentf-open-files (&optional files buffer-name)
1090 "Show a dialog buffer to open a recent file. 1091 "Show a dialog to open a recent file.
1091If optional argument FILES is non-nil, it specifies the list of 1092If optional argument FILES is non-nil, it is a list of recently-opened
1092recently-opened files to choose from. It is the whole recent list 1093files to choose from. It defaults to the whole recent list.
1093otherwise. 1094If optional argument BUFFER-NAME is non-nil, it is a buffer name to
1094If optional argument BUFFER-NAME is non-nil, it specifies which buffer 1095use for the dialog. It defaults to \"*`recentf-menu-title'*\"."
1095name to use for the interaction. It is \"*`recentf-menu-title'*\" by
1096default."
1097 (interactive) 1096 (interactive)
1098 (unless files 1097 (recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title))
1099 (setq files recentf-list)) 1098 (widget-insert "Click on a file to open it.
1100 (unless buffer-name 1099Click on Cancel or type `q' to cancel.\n" )
1101 (setq buffer-name (format "*%s*" recentf-menu-title))) 1100 ;; Use a L&F that looks like the recentf menu.
1102 (with-current-buffer (get-buffer-create buffer-name) 1101 (tree-widget-set-theme "folder")
1103 (switch-to-buffer (current-buffer)) 1102 (apply 'widget-create
1104 ;; Cleanup buffer 1103 `(group
1105 (let ((inhibit-read-only t) 1104 :indent 2
1106 (ol (overlay-lists))) 1105 :format "\n%v\n"
1107 (erase-buffer) 1106 ,@(mapcar 'recentf-open-files-item
1108 ;; Delete all the overlays. 1107 (recentf-apply-menu-filter
1109 (mapc 'delete-overlay (car ol)) 1108 recentf-menu-filter
1110 (mapc 'delete-overlay (cdr ol))) 1109 (mapcar 'recentf-make-default-menu-element
1111 (recentf-dialog-mode) 1110 (or files recentf-list))))))
1112 ;; Insert the dialog header
1113 (widget-insert "Click on a file to open it. ")
1114 (widget-insert "Click on Cancel or type \"q\" to quit.\n\n" )
1115 ;; Insert the list of files as buttons
1116 (let ((recentf-open-files-item-shift ""))
1117 (mapc 'recentf-open-files-item
1118 (recentf-apply-menu-filter
1119 recentf-menu-filter
1120 (mapcar 'recentf-make-default-menu-element files))))
1121 (widget-insert "\n")
1122 ;; Insert the Cancel button
1123 (widget-create 1111 (widget-create
1124 'push-button 1112 'push-button
1125 :notify 'recentf-cancel-dialog 1113 :notify 'recentf-cancel-dialog
1126 "Cancel") 1114 "Cancel")
1127 (widget-setup) 1115 (recentf-dialog-goto-first 'link)))
1128 (goto-char (point-min))))
1129 1116
1130(defun recentf-open-more-files () 1117(defun recentf-open-more-files ()
1131 "Show a dialog buffer to open a recent file that is not in the menu." 1118 "Show a dialog to open a recent file that is not in the menu."
1132 (interactive) 1119 (interactive)
1133 (recentf-open-files (nthcdr recentf-max-menu-items recentf-list) 1120 (recentf-open-files (nthcdr recentf-max-menu-items recentf-list)
1134 (format "*%s - More*" recentf-menu-title))) 1121 (format "*%s - More*" recentf-menu-title)))
1135 1122
1123;;; Save/load/cleanup the recent list
1124;;
1136(defconst recentf-save-file-header 1125(defconst recentf-save-file-header
1137 ";;; Automatically generated by `recentf' on %s.\n" 1126 ";;; Automatically generated by `recentf' on %s.\n"
1138 "Header to be written into the `recentf-save-file'.") 1127 "Header to be written into the `recentf-save-file'.")
@@ -1149,16 +1138,16 @@ Write data into the file specified by `recentf-save-file'."
1149 (interactive) 1138 (interactive)
1150 (condition-case error 1139 (condition-case error
1151 (with-temp-buffer 1140 (with-temp-buffer
1152 (erase-buffer) 1141 (erase-buffer)
1153 (set-buffer-file-coding-system recentf-save-file-coding-system) 1142 (set-buffer-file-coding-system recentf-save-file-coding-system)
1154 (insert (format recentf-save-file-header (current-time-string))) 1143 (insert (format recentf-save-file-header (current-time-string)))
1155 (recentf-dump-variable 'recentf-list recentf-max-saved-items) 1144 (recentf-dump-variable 'recentf-list recentf-max-saved-items)
1156 (recentf-dump-variable 'recentf-filter-changer-state) 1145 (recentf-dump-variable 'recentf-filter-changer-state)
1157 (insert "\n \n;;; Local Variables:\n" 1146 (insert "\n \n;;; Local Variables:\n"
1158 (format ";;; coding: %s\n" recentf-save-file-coding-system) 1147 (format ";;; coding: %s\n" recentf-save-file-coding-system)
1159 ";;; End:\n") 1148 ";;; End:\n")
1160 (write-file (expand-file-name recentf-save-file)) 1149 (write-file (expand-file-name recentf-save-file))
1161 nil) 1150 nil)
1162 (error 1151 (error
1163 (warn "recentf mode: %s" (error-message-string error))))) 1152 (warn "recentf mode: %s" (error-message-string error)))))
1164 1153
@@ -1218,5 +1207,5 @@ that were operated on recently."
1218 1207
1219(run-hooks 'recentf-load-hook) 1208(run-hooks 'recentf-load-hook)
1220 1209
1221;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a 1210;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
1222;;; recentf.el ends here 1211;;; recentf.el ends here
diff --git a/lisp/replace.el b/lisp/replace.el
index 2896ce133de..3b93761a0cc 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -516,21 +516,32 @@ which will run faster and will not set the mark or print anything."
516Prompt for a regexp with PROMPT. 516Prompt for a regexp with PROMPT.
517Value is a list, (REGEXP)." 517Value is a list, (REGEXP)."
518 (list (read-from-minibuffer prompt nil nil nil 518 (list (read-from-minibuffer prompt nil nil nil
519 'regexp-history nil t))) 519 'regexp-history nil t)
520 nil nil t))
520 521
521(defun keep-lines (regexp &optional rstart rend) 522(defun keep-lines (regexp &optional rstart rend interactive)
522 "Delete all lines except those containing matches for REGEXP. 523 "Delete all lines except those containing matches for REGEXP.
523A match split across lines preserves all the lines it lies in. 524A match split across lines preserves all the lines it lies in.
524Applies to all lines after point. 525When called from Lisp (and usually interactively as well, see below)
526applies to all lines starting after point.
525 527
526If REGEXP contains upper case characters (excluding those preceded by `\\'), 528If REGEXP contains upper case characters (excluding those preceded by `\\'),
527the matching is case-sensitive. 529the matching is case-sensitive.
528 530
529Second and third arg RSTART and REND specify the region to operate on. 531Second and third arg RSTART and REND specify the region to operate on.
532This command operates on (the accessible part of) all lines whose
533accessible part is entirely contained in the region determined by RSTART
534and REND. (A newline ending a line counts as part of that line.)
530 535
531Interactively, in Transient Mark mode when the mark is active, operate 536Interactively, in Transient Mark mode when the mark is active, operate
532on the contents of the region. Otherwise, operate from point to the 537on all lines whose accessible part is entirely contained in the region.
533end of the buffer." 538Otherwise, the command applies to all lines starting after point.
539When calling this function from Lisp, you can pretend that it was
540called interactively by passing a non-nil INTERACTIVE argument.
541
542This function starts looking for the next match from the end of
543the previous match. Hence, it ignores matches that overlap
544a previously found match."
534 545
535 (interactive 546 (interactive
536 (progn 547 (progn
@@ -539,10 +550,20 @@ end of the buffer."
539 (if rstart 550 (if rstart
540 (progn 551 (progn
541 (goto-char (min rstart rend)) 552 (goto-char (min rstart rend))
542 (setq rend (copy-marker (max rstart rend)))) 553 (setq rend
543 (if (and transient-mark-mode mark-active) 554 (progn
555 (save-excursion
556 (goto-char (max rstart rend))
557 (unless (or (bolp) (eobp))
558 (forward-line 0))
559 (point-marker)))))
560 (if (and interactive transient-mark-mode mark-active)
544 (setq rstart (region-beginning) 561 (setq rstart (region-beginning)
545 rend (copy-marker (region-end))) 562 rend (progn
563 (goto-char (region-end))
564 (unless (or (bolp) (eobp))
565 (forward-line 0))
566 (point-marker)))
546 (setq rstart (point) 567 (setq rstart (point)
547 rend (point-max-marker))) 568 rend (point-max-marker)))
548 (goto-char rstart)) 569 (goto-char rstart))
@@ -556,7 +577,7 @@ end of the buffer."
556 (if (not (re-search-forward regexp rend 'move)) 577 (if (not (re-search-forward regexp rend 'move))
557 (delete-region start rend) 578 (delete-region start rend)
558 (let ((end (save-excursion (goto-char (match-beginning 0)) 579 (let ((end (save-excursion (goto-char (match-beginning 0))
559 (beginning-of-line) 580 (forward-line 0)
560 (point)))) 581 (point))))
561 ;; Now end is first char preserved by the new match. 582 ;; Now end is first char preserved by the new match.
562 (if (< start end) 583 (if (< start end)
@@ -566,22 +587,34 @@ end of the buffer."
566 ;; If the match was empty, avoid matching again at same place. 587 ;; If the match was empty, avoid matching again at same place.
567 (and (< (point) rend) 588 (and (< (point) rend)
568 (= (match-beginning 0) (match-end 0)) 589 (= (match-beginning 0) (match-end 0))
569 (forward-char 1)))))) 590 (forward-char 1)))))
591 (set-marker rend nil)
592 nil)
570 593
571 594
572(defun flush-lines (regexp &optional rstart rend) 595(defun flush-lines (regexp &optional rstart rend interactive)
573 "Delete lines containing matches for REGEXP. 596 "Delete lines containing matches for REGEXP.
574If a match is split across lines, all the lines it lies in are deleted. 597When called from Lisp (and usually when called interactively as
575Applies to lines after point. 598well, see below), applies to the part of the buffer after point.
599The line point is in is deleted if and only if it contains a
600match for regexp starting after point.
576 601
577If REGEXP contains upper case characters (excluding those preceded by `\\'), 602If REGEXP contains upper case characters (excluding those preceded by `\\'),
578the matching is case-sensitive. 603the matching is case-sensitive.
579 604
580Second and third arg RSTART and REND specify the region to operate on. 605Second and third arg RSTART and REND specify the region to operate on.
606Lines partially contained in this region are deleted if and only if
607they contain a match entirely contained in it.
581 608
582Interactively, in Transient Mark mode when the mark is active, operate 609Interactively, in Transient Mark mode when the mark is active, operate
583on the contents of the region. Otherwise, operate from point to the 610on the contents of the region. Otherwise, operate from point to the
584end of the buffer." 611end of (the accessible portion of) the buffer. When calling this function
612from Lisp, you can pretend that it was called interactively by passing
613a non-nil INTERACTIVE argument.
614
615If a match is split across lines, all the lines it lies in are deleted.
616They are deleted _before_ looking for the next match. Hence, a match
617starting on the same line at which another match ended is ignored."
585 618
586 (interactive 619 (interactive
587 (progn 620 (progn
@@ -591,7 +624,7 @@ end of the buffer."
591 (progn 624 (progn
592 (goto-char (min rstart rend)) 625 (goto-char (min rstart rend))
593 (setq rend (copy-marker (max rstart rend)))) 626 (setq rend (copy-marker (max rstart rend))))
594 (if (and transient-mark-mode mark-active) 627 (if (and interactive transient-mark-mode mark-active)
595 (setq rstart (region-beginning) 628 (setq rstart (region-beginning)
596 rend (copy-marker (region-end))) 629 rend (copy-marker (region-end)))
597 (setq rstart (point) 630 (setq rstart (point)
@@ -603,13 +636,18 @@ end of the buffer."
603 (while (and (< (point) rend) 636 (while (and (< (point) rend)
604 (re-search-forward regexp rend t)) 637 (re-search-forward regexp rend t))
605 (delete-region (save-excursion (goto-char (match-beginning 0)) 638 (delete-region (save-excursion (goto-char (match-beginning 0))
606 (beginning-of-line) 639 (forward-line 0)
607 (point)) 640 (point))
608 (progn (forward-line 1) (point))))))) 641 (progn (forward-line 1) (point))))))
642 (set-marker rend nil)
643 nil)
609 644
610 645
611(defun how-many (regexp &optional rstart rend) 646(defun how-many (regexp &optional rstart rend interactive)
612 "Print number of matches for REGEXP following point. 647 "Print and return number of matches for REGEXP following point.
648When called from Lisp and INTERACTIVE is omitted or nil, just return
649the number, do not print it; if INTERACTIVE is t, the function behaves
650in all respects has if it had been called interactively.
613 651
614If REGEXP contains upper case characters (excluding those preceded by `\\'), 652If REGEXP contains upper case characters (excluding those preceded by `\\'),
615the matching is case-sensitive. 653the matching is case-sensitive.
@@ -618,18 +656,24 @@ Second and third arg RSTART and REND specify the region to operate on.
618 656
619Interactively, in Transient Mark mode when the mark is active, operate 657Interactively, in Transient Mark mode when the mark is active, operate
620on the contents of the region. Otherwise, operate from point to the 658on the contents of the region. Otherwise, operate from point to the
621end of the buffer." 659end of (the accessible portion of) the buffer.
660
661This function starts looking for the next match from the end of
662the previous match. Hence, it ignores matches that overlap
663a previously found match."
622 664
623 (interactive 665 (interactive
624 (keep-lines-read-args "How many matches for (regexp): ")) 666 (keep-lines-read-args "How many matches for (regexp): "))
625 (save-excursion 667 (save-excursion
626 (if rstart 668 (if rstart
627 (goto-char (min rstart rend)) 669 (progn
628 (if (and transient-mark-mode mark-active) 670 (goto-char (min rstart rend))
671 (setq rend (max rstart rend)))
672 (if (and interactive transient-mark-mode mark-active)
629 (setq rstart (region-beginning) 673 (setq rstart (region-beginning)
630 rend (copy-marker (region-end))) 674 rend (region-end))
631 (setq rstart (point) 675 (setq rstart (point)
632 rend (point-max-marker))) 676 rend (point-max)))
633 (goto-char rstart)) 677 (goto-char rstart))
634 (let ((count 0) 678 (let ((count 0)
635 opoint 679 opoint
@@ -641,7 +685,10 @@ end of the buffer."
641 (if (= opoint (point)) 685 (if (= opoint (point))
642 (forward-char 1) 686 (forward-char 1)
643 (setq count (1+ count)))) 687 (setq count (1+ count))))
644 (message "%d occurrences" count)))) 688 (when interactive (message "%d occurrence%s"
689 count
690 (if (= count 1) "" "s")))
691 count)))
645 692
646 693
647(defvar occur-mode-map 694(defvar occur-mode-map
@@ -672,7 +719,7 @@ See `occur-revert-function'.")
672 :group 'matching) 719 :group 'matching)
673 720
674(defcustom occur-hook nil 721(defcustom occur-hook nil
675 "Hook run when `occur' is called." 722 "Hook run by Occur when there are any matches."
676 :type 'hook 723 :type 'hook
677 :group 'matching) 724 :group 'matching)
678 725
@@ -879,7 +926,7 @@ If the value is nil, don't highlight the buffer names specially."
879Here `original-buffer-name' is the buffer name were occur was originally run. 926Here `original-buffer-name' is the buffer name were occur was originally run.
880When given the prefix argument, the renaming will not clobber the existing 927When given the prefix argument, the renaming will not clobber the existing
881buffer(s) of that name, but use `generate-new-buffer-name' instead. 928buffer(s) of that name, but use `generate-new-buffer-name' instead.
882You can add this to `occur-hook' if you always want a separate *Occur* 929You can add this to `occur-mode-hook' if you always want a separate *Occur*
883buffer for each buffer where you invoke `occur'." 930buffer for each buffer where you invoke `occur'."
884 (interactive "P") 931 (interactive "P")
885 (with-current-buffer 932 (with-current-buffer
@@ -892,8 +939,7 @@ buffer for each buffer where you invoke `occur'."
892 939
893(defun occur (regexp &optional nlines) 940(defun occur (regexp &optional nlines)
894 "Show all lines in the current buffer containing a match for REGEXP. 941 "Show all lines in the current buffer containing a match for REGEXP.
895 942This function can not handle matches that span more than one line.
896If a match spreads across multiple lines, all those lines are shown.
897 943
898Each line is displayed with NLINES lines before and after, or -NLINES 944Each line is displayed with NLINES lines before and after, or -NLINES
899before if NLINES is negative. 945before if NLINES is negative.
@@ -996,14 +1042,13 @@ See also `multi-occur'."
996 (if (= count 1) "" "es") 1042 (if (= count 1) "" "es")
997 regexp)) 1043 regexp))
998 (setq occur-revert-arguments (list regexp nlines bufs)) 1044 (setq occur-revert-arguments (list regexp nlines bufs))
999 (if (> count 0) 1045 (if (= count 0)
1000 (progn 1046 (kill-buffer occur-buf)
1001 (display-buffer occur-buf) 1047 (display-buffer occur-buf)
1002 (setq next-error-last-buffer occur-buf)) 1048 (setq next-error-last-buffer occur-buf)
1003 (kill-buffer occur-buf))) 1049 (setq buffer-read-only t)
1004 (setq buffer-read-only t) 1050 (set-buffer-modified-p nil)
1005 (set-buffer-modified-p nil) 1051 (run-hooks 'occur-hook)))))))
1006 (run-hooks 'occur-hook)))))
1007 1052
1008(defun occur-engine-add-prefix (lines) 1053(defun occur-engine-add-prefix (lines)
1009 (mapcar 1054 (mapcar
@@ -1603,15 +1648,15 @@ make, or the user didn't cancel the call."
1603 ;; Change markers to numbers in the match data 1648 ;; Change markers to numbers in the match data
1604 ;; since lots of markers slow down editing. 1649 ;; since lots of markers slow down editing.
1605 (push (list (point) replaced 1650 (push (list (point) replaced
1606;;; If the replacement has already happened, all we need is the 1651;;; If the replacement has already happened, all we need is the
1607;;; current match start and end. We could get this with a trivial 1652;;; current match start and end. We could get this with a trivial
1608;;; match like 1653;;; match like
1609;;; (save-excursion (goto-char (match-beginning 0)) 1654;;; (save-excursion (goto-char (match-beginning 0))
1610;;; (search-forward (match-string 0)) 1655;;; (search-forward (match-string 0))
1611;;; (match-data t)) 1656;;; (match-data t))
1612;;; if we really wanted to avoid manually constructing match data. 1657;;; if we really wanted to avoid manually constructing match data.
1613;;; Adding current-buffer is necessary so that match-data calls can 1658;;; Adding current-buffer is necessary so that match-data calls can
1614;;; return markers which are appropriate for editing. 1659;;; return markers which are appropriate for editing.
1615 (if replaced 1660 (if replaced
1616 (list 1661 (list
1617 (match-beginning 0) 1662 (match-beginning 0)
diff --git a/lisp/ses.el b/lisp/ses.el
index 09f7809752b..bad396bbe94 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -49,7 +49,7 @@
49;;---------------------------------------------------------------------------- 49;;----------------------------------------------------------------------------
50 50
51(defgroup ses nil 51(defgroup ses nil
52 "Simple Emacs Spreadsheet" 52 "Simple Emacs Spreadsheet."
53 :group 'applications 53 :group 'applications
54 :prefix "ses-" 54 :prefix "ses-"
55 :version "21.1") 55 :version "21.1")
@@ -376,7 +376,7 @@ macro to prevent propagate-on-load viruses."
376 ;;print area (excluding the terminating newline) 376 ;;print area (excluding the terminating newline)
377 (setq ses--col-widths widths 377 (setq ses--col-widths widths
378 ses--linewidth (apply '+ -1 (mapcar '1+ widths)) 378 ses--linewidth (apply '+ -1 (mapcar '1+ widths))
379 ses--blank-line (concat (make-string ses--linewidth ? ) "\n")) 379 ses--blank-line (concat (make-string ses--linewidth ?\s) "\n"))
380 t) 380 t)
381 381
382(defmacro ses-column-printers (printers) 382(defmacro ses-column-printers (printers)
@@ -798,7 +798,7 @@ preceding cell has spilled over."
798 (cond 798 (cond
799 ((< len width) 799 ((< len width)
800 ;;Fill field to length with spaces 800 ;;Fill field to length with spaces
801 (setq len (make-string (- width len) ? ) 801 (setq len (make-string (- width len) ?\s)
802 text (if (eq ses-call-printer-return t) 802 text (if (eq ses-call-printer-return t)
803 (concat text len) 803 (concat text len)
804 (concat len text)))) 804 (concat len text))))
@@ -816,7 +816,7 @@ preceding cell has spilled over."
816 maxcol (1+ maxcol))) 816 maxcol (1+ maxcol)))
817 (if (<= len maxwidth) 817 (if (<= len maxwidth)
818 ;;Fill to complete width of all the fields spanned 818 ;;Fill to complete width of all the fields spanned
819 (setq text (concat text (make-string (- maxwidth len) ? ))) 819 (setq text (concat text (make-string (- maxwidth len) ?\s)))
820 ;;Not enough room to end of line or next non-nil field. Truncate 820 ;;Not enough room to end of line or next non-nil field. Truncate
821 ;;if string or decimal; otherwise fill with error indicator 821 ;;if string or decimal; otherwise fill with error indicator
822 (setq sig `(error "Too wide" ,text)) 822 (setq sig `(error "Too wide" ,text))
@@ -906,12 +906,12 @@ printer signaled one (and \"%s\" is used as the default printer), else nil."
906COL=NUMCOLS. Deletes characters if CHANGE < 0. Caller should bind 906COL=NUMCOLS. Deletes characters if CHANGE < 0. Caller should bind
907inhibit-quit to t." 907inhibit-quit to t."
908 (let ((inhibit-read-only t) 908 (let ((inhibit-read-only t)
909 (blank (if (> change 0) (make-string change ? ))) 909 (blank (if (> change 0) (make-string change ?\s)))
910 (at-end (= col ses--numcols))) 910 (at-end (= col ses--numcols)))
911 (ses-set-with-undo 'ses--linewidth (+ ses--linewidth change)) 911 (ses-set-with-undo 'ses--linewidth (+ ses--linewidth change))
912 ;;ses-set-with-undo always returns t for strings. 912 ;;ses-set-with-undo always returns t for strings.
913 (1value (ses-set-with-undo 'ses--blank-line 913 (1value (ses-set-with-undo 'ses--blank-line
914 (concat (make-string ses--linewidth ? ) "\n"))) 914 (concat (make-string ses--linewidth ?\s) "\n")))
915 (dotimes (row ses--numrows) 915 (dotimes (row ses--numrows)
916 (ses-goto-print row col) 916 (ses-goto-print row col)
917 (when at-end 917 (when at-end
@@ -2901,7 +2901,7 @@ columns to include in width (default = 0)."
2901 (let ((printer (or (ses-col-printer col) ses--default-printer)) 2901 (let ((printer (or (ses-col-printer col) ses--default-printer))
2902 (width (ses-col-width col)) 2902 (width (ses-col-width col))
2903 half) 2903 half)
2904 (or fill (setq fill ? )) 2904 (or fill (setq fill ?\s))
2905 (or span (setq span 0)) 2905 (or span (setq span 0))
2906 (setq value (ses-call-printer printer value)) 2906 (setq value (ses-call-printer printer value))
2907 (dotimes (x span) 2907 (dotimes (x span)
diff --git a/lisp/shell.el b/lisp/shell.el
index 7a9f261859d..a8f4790a054 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -108,16 +108,16 @@
108;;; Customization and Buffer Variables 108;;; Customization and Buffer Variables
109 109
110(defgroup shell nil 110(defgroup shell nil
111 "Running shell from within Emacs buffers" 111 "Running shell from within Emacs buffers."
112 :group 'processes 112 :group 'processes
113 :group 'unix) 113 :group 'unix)
114 114
115(defgroup shell-directories nil 115(defgroup shell-directories nil
116 "Directory support in shell mode" 116 "Directory support in shell mode."
117 :group 'shell) 117 :group 'shell)
118 118
119(defgroup shell-faces nil 119(defgroup shell-faces nil
120 "Faces in shell buffers" 120 "Faces in shell buffers."
121 :group 'shell) 121 :group 'shell)
122 122
123;;;###autoload 123;;;###autoload
@@ -178,7 +178,7 @@ This is a fine thing to set in your `.emacs' file.")
178(defvar shell-file-name-quote-list 178(defvar shell-file-name-quote-list
179 (if (memq system-type '(ms-dos windows-nt)) 179 (if (memq system-type '(ms-dos windows-nt))
180 nil 180 nil
181 (append shell-delimiter-argument-list '(?\ ?\* ?\! ?\" ?\' ?\` ?\# ?\\))) 181 (append shell-delimiter-argument-list '(?\s ?\* ?\! ?\" ?\' ?\` ?\# ?\\)))
182 "List of characters to quote when in a file name. 182 "List of characters to quote when in a file name.
183This variable is used to initialize `comint-file-name-quote-list' in the 183This variable is used to initialize `comint-file-name-quote-list' in the
184shell buffer. The value may depend on the operating system or shell. 184shell buffer. The value may depend on the operating system or shell.
diff --git a/lisp/simple.el b/lisp/simple.el
index 1ee4580144b..3ee0a91c87d 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4542,22 +4542,29 @@ With a prefix argument, set VARIABLE to VALUE buffer-locally."
4542 (read-variable "Set variable: "))) 4542 (read-variable "Set variable: ")))
4543 (minibuffer-help-form '(describe-variable var)) 4543 (minibuffer-help-form '(describe-variable var))
4544 (prop (get var 'variable-interactive)) 4544 (prop (get var 'variable-interactive))
4545 (prompt (format "Set %s%s to value: " var 4545 (obsolete (car (get var 'byte-obsolete-variable)))
4546 (prompt (format "Set %s %s to value: " var
4546 (cond ((local-variable-p var) 4547 (cond ((local-variable-p var)
4547 " (buffer-local)") 4548 "(buffer-local)")
4548 ((or current-prefix-arg 4549 ((or current-prefix-arg
4549 (local-variable-if-set-p var)) 4550 (local-variable-if-set-p var))
4550 " buffer-locally") 4551 "buffer-locally")
4551 (t " globally")))) 4552 (t "globally"))))
4552 (val (if prop 4553 (val (progn
4553 ;; Use VAR's `variable-interactive' property 4554 (when obsolete
4554 ;; as an interactive spec for prompting. 4555 (message (concat "`%S' is obsolete; "
4555 (call-interactively `(lambda (arg) 4556 (if (symbolp obsolete) "use `%S' instead" "%s"))
4556 (interactive ,prop) 4557 var obsolete)
4557 arg)) 4558 (sit-for 3))
4558 (read 4559 (if prop
4559 (read-string prompt nil 4560 ;; Use VAR's `variable-interactive' property
4560 'set-variable-value-history))))) 4561 ;; as an interactive spec for prompting.
4562 (call-interactively `(lambda (arg)
4563 (interactive ,prop)
4564 arg))
4565 (read
4566 (read-string prompt nil
4567 'set-variable-value-history))))))
4561 (list var val current-prefix-arg))) 4568 (list var val current-prefix-arg)))
4562 4569
4563 (and (custom-variable-p variable) 4570 (and (custom-variable-p variable)
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el
index 55000391777..9e129c3571d 100644
--- a/lisp/smerge-mode.el
+++ b/lisp/smerge-mode.el
@@ -48,6 +48,9 @@
48(eval-when-compile (require 'cl)) 48(eval-when-compile (require 'cl))
49 49
50 50
51;;; The real definition comes later.
52(defvar smerge-mode)
53
51(defgroup smerge () 54(defgroup smerge ()
52 "Minor mode to resolve diff3 conflicts." 55 "Minor mode to resolve diff3 conflicts."
53 :group 'tools 56 :group 'tools
diff --git a/lisp/startup.el b/lisp/startup.el
index f1cce0325f5..1f7076b535a 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -44,7 +44,7 @@ The value is nil if the selected frame is on a text-only-terminal.")
44(make-variable-frame-local 'window-system) 44(make-variable-frame-local 'window-system)
45 45
46(defgroup initialization nil 46(defgroup initialization nil
47 "Emacs start-up procedure" 47 "Emacs start-up procedure."
48 :group 'internal) 48 :group 'internal)
49 49
50(defcustom inhibit-startup-message nil 50(defcustom inhibit-startup-message nil
@@ -294,6 +294,8 @@ from being initialized."
294 294
295(defvar no-blinking-cursor nil) 295(defvar no-blinking-cursor nil)
296 296
297(defvar default-frame-background-mode)
298
297(defvar pure-space-overflow nil 299(defvar pure-space-overflow nil
298 "Non-nil if building Emacs overflowed pure space.") 300 "Non-nil if building Emacs overflowed pure space.")
299 301
diff --git a/lisp/strokes.el b/lisp/strokes.el
index 644ec2c4f62..396a44cec24 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -208,7 +208,7 @@ static char * stroke_xpm[] = {
208;;; user variables... 208;;; user variables...
209 209
210(defgroup strokes nil 210(defgroup strokes nil
211 "Control Emacs through mouse strokes" 211 "Control Emacs through mouse strokes."
212 :link '(emacs-commentary-link "strokes") 212 :link '(emacs-commentary-link "strokes")
213 :link '(url-link "http://www.mit.edu/people/cadet/strokes-help.html") 213 :link '(url-link "http://www.mit.edu/people/cadet/strokes-help.html")
214 :group 'mouse) 214 :group 'mouse)
@@ -753,7 +753,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
753 (progn 753 (progn
754 (goto-char point) 754 (goto-char point)
755 (subst-char-in-region point (1+ point) 755 (subst-char-in-region point (1+ point)
756 ?\ strokes-character)) 756 ?\s strokes-character))
757 ;; otherwise, we can start drawing the next time... 757 ;; otherwise, we can start drawing the next time...
758 (setq safe-to-draw-p t)) 758 (setq safe-to-draw-p t))
759 (push (cdr (mouse-pixel-position)) 759 (push (cdr (mouse-pixel-position))
@@ -763,7 +763,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
763 ;; clean up strokes buffer and then bury it. 763 ;; clean up strokes buffer and then bury it.
764 (when (equal (buffer-name) strokes-buffer-name) 764 (when (equal (buffer-name) strokes-buffer-name)
765 (subst-char-in-region (point-min) (point-max) 765 (subst-char-in-region (point-min) (point-max)
766 strokes-character ?\ ) 766 strokes-character ?\s)
767 (goto-char (point-min)) 767 (goto-char (point-min))
768 (bury-buffer)))) 768 (bury-buffer))))
769 ;; Otherwise, don't use strokes buffer and read stroke silently 769 ;; Otherwise, don't use strokes buffer and read stroke silently
@@ -813,7 +813,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
813 (when point 813 (when point
814 (goto-char point) 814 (goto-char point)
815 (subst-char-in-region point (1+ point) 815 (subst-char-in-region point (1+ point)
816 ?\ strokes-character)) 816 ?\s strokes-character))
817 (push (cdr (mouse-pixel-position)) 817 (push (cdr (mouse-pixel-position))
818 pix-locs))) 818 pix-locs)))
819 (setq event (read-event))) 819 (setq event (read-event)))
@@ -831,7 +831,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
831 ;; protected 831 ;; protected
832 (when (equal (buffer-name) strokes-buffer-name) 832 (when (equal (buffer-name) strokes-buffer-name)
833 (subst-char-in-region (point-min) (point-max) 833 (subst-char-in-region (point-min) (point-max)
834 strokes-character ?\ ) 834 strokes-character ?\s)
835 (goto-char (point-min)) 835 (goto-char (point-min))
836 (bury-buffer))))))) 836 (bury-buffer)))))))
837 837
@@ -1035,7 +1035,7 @@ o Strokes are a bit computer-dependent in that they depend somewhat on
1035 "Erase the contents of the current buffer and fill it with whitespace." 1035 "Erase the contents of the current buffer and fill it with whitespace."
1036 (erase-buffer) 1036 (erase-buffer)
1037 (loop repeat (frame-height) do 1037 (loop repeat (frame-height) do
1038 (insert-char ?\ (1- (frame-width))) 1038 (insert-char ?\s (1- (frame-width)))
1039 (newline)) 1039 (newline))
1040 (goto-char (point-min))) 1040 (goto-char (point-min)))
1041 1041
@@ -1169,7 +1169,7 @@ the stroke as a character in some language."
1169 (insert strokes-xpm-header) 1169 (insert strokes-xpm-header)
1170 (loop repeat 33 do 1170 (loop repeat 33 do
1171 (insert ?\") 1171 (insert ?\")
1172 (insert-char ?\ 33) 1172 (insert-char ?\s 33)
1173 (insert "\",") 1173 (insert "\",")
1174 (newline) 1174 (newline)
1175 finally 1175 finally
@@ -1195,7 +1195,7 @@ the stroke as a character in some language."
1195 ;; Otherwise, just plot the point... 1195 ;; Otherwise, just plot the point...
1196 (goto-line (+ 17 y)) 1196 (goto-line (+ 17 y))
1197 (forward-char (+ 2 x)) 1197 (forward-char (+ 2 x))
1198 (subst-char-in-region (point) (1+ (point)) ?\ ?\*))) 1198 (subst-char-in-region (point) (1+ (point)) ?\s ?\*)))
1199 ((strokes-lift-p point) 1199 ((strokes-lift-p point)
1200 ;; a lift--tell the loop to X out the next point... 1200 ;; a lift--tell the loop to X out the next point...
1201 (setq lift-flag t)))) 1201 (setq lift-flag t))))
@@ -1286,7 +1286,7 @@ the stroke as a character in some language."
1286;; (command-name (symbol-name (cdr def)))) 1286;; (command-name (symbol-name (cdr def))))
1287;; (strokes-xpm-for-stroke stroke " *strokes-xpm*") 1287;; (strokes-xpm-for-stroke stroke " *strokes-xpm*")
1288;; (newline 2) 1288;; (newline 2)
1289;; (insert-char ?\ 45) 1289;; (insert-char ?\s 45)
1290;; (beginning-of-line) 1290;; (beginning-of-line)
1291;; (insert command-name) 1291;; (insert command-name)
1292;; (beginning-of-line) 1292;; (beginning-of-line)
@@ -1342,7 +1342,7 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
1342 (prin1-to-string (cdr def))))) 1342 (prin1-to-string (cdr def)))))
1343 (strokes-xpm-for-stroke stroke " *strokes-xpm*") 1343 (strokes-xpm-for-stroke stroke " *strokes-xpm*")
1344 (newline 2) 1344 (newline 2)
1345 (insert-char ?\ 45) 1345 (insert-char ?\s 45)
1346 (beginning-of-line) 1346 (beginning-of-line)
1347 (insert command-name) 1347 (insert command-name)
1348 (beginning-of-line) 1348 (beginning-of-line)
@@ -1515,7 +1515,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer],
1515 1515
1516(defsubst strokes-xpm-char-bit-p (char) 1516(defsubst strokes-xpm-char-bit-p (char)
1517 "Non-nil if CHAR represents an `on' or `off' bit in the XPM." 1517 "Non-nil if CHAR represents an `on' or `off' bit in the XPM."
1518 (or (eq char ?\ ) 1518 (or (eq char ?\s)
1519 (eq char ?*))) 1519 (eq char ?*)))
1520 1520
1521;;(defsubst strokes-xor (a b) ### Should I make this an inline function? ### 1521;;(defsubst strokes-xor (a b) ### Should I make this an inline function? ###
@@ -1716,7 +1716,7 @@ Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
1716 (insert-char 1716 (insert-char
1717 (if current-char-is-on-p 1717 (if current-char-is-on-p
1718 ?* 1718 ?*
1719 ?\ ) 1719 ?\s)
1720 (strokes-xpm-decode-char (char-after))) 1720 (strokes-xpm-decode-char (char-after)))
1721 (delete-char 1) 1721 (delete-char 1)
1722 (setq current-char-is-on-p (not current-char-is-on-p))) 1722 (setq current-char-is-on-p (not current-char-is-on-p)))
diff --git a/lisp/subr.el b/lisp/subr.el
index c7b565d48f5..846632d0832 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -937,7 +937,7 @@ the hook's buffer-local value rather than its default value."
937 (set hook hook-value)))))) 937 (set hook hook-value))))))
938 938
939(defun add-to-list (list-var element &optional append) 939(defun add-to-list (list-var element &optional append)
940 "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. 940 "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
941The test for presence of ELEMENT is done with `equal'. 941The test for presence of ELEMENT is done with `equal'.
942If ELEMENT is added, it is added at the beginning of the list, 942If ELEMENT is added, it is added at the beginning of the list,
943unless the optional argument APPEND is non-nil, in which case 943unless the optional argument APPEND is non-nil, in which case
@@ -959,15 +959,18 @@ other hooks, such as major mode hooks, can do the job."
959 959
960 960
961(defun add-to-ordered-list (list-var element &optional order) 961(defun add-to-ordered-list (list-var element &optional order)
962 "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. 962 "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
963The test for presence of ELEMENT is done with `eq'. 963The test for presence of ELEMENT is done with `eq'.
964 964
965The resulting list is reordered so that the elements are in the 965The resulting list is reordered so that the elements are in the
966order given by each element's numeric list order. Elements 966order given by each element's numeric list order. Elements
967without a numeric list order are placed at the end of the list. 967without a numeric list order are placed at the end of the list.
968 968
969If the third optional argument ORDER is non-nil, set the 969If the third optional argument ORDER is a number (integer or
970element's list order to the given value. 970float), set the element's list order to the given value. If
971ORDER is nil or omitted, do not change the numeric order of
972ELEMENT. If ORDER has any other value, remove the numeric order
973of ELEMENT if it has one.
971 974
972The list order for each element is stored in LIST-VAR's 975The list order for each element is stored in LIST-VAR's
973`list-order' property. 976`list-order' property.
diff --git a/lisp/term.el b/lisp/term.el
index 3295c87da14..122953af124 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -405,7 +405,7 @@
405(require 'ehelp) 405(require 'ehelp)
406 406
407(defgroup term nil 407(defgroup term nil
408 "General command interpreter in a window" 408 "General command interpreter in a window."
409 :group 'processes 409 :group 'processes
410 :group 'unix) 410 :group 'unix)
411 411
@@ -1574,7 +1574,7 @@ See also `term-read-input-ring'."
1574 (sit-for 0) 1574 (sit-for 0)
1575 (message "Hit space to flush") 1575 (message "Hit space to flush")
1576 (let ((ch (read-event))) 1576 (let ((ch (read-event)))
1577 (if (eq ch ?\ ) 1577 (if (eq ch ?\s)
1578 (set-window-configuration conf) 1578 (set-window-configuration conf)
1579 (setq unread-command-events (list ch))))))) 1579 (setq unread-command-events (list ch)))))))
1580 1580
@@ -4045,7 +4045,7 @@ Typing SPC flushes the help buffer."
4045 (progn 4045 (progn
4046 (mouse-choose-completion first) 4046 (mouse-choose-completion first)
4047 (set-window-configuration conf)) 4047 (set-window-configuration conf))
4048 (if (eq first ?\ ) 4048 (if (eq first ?\s)
4049 (set-window-configuration conf) 4049 (set-window-configuration conf)
4050 (setq unread-command-events (listify-key-sequence key))))))) 4050 (setq unread-command-events (listify-key-sequence key)))))))
4051 4051
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index f5937701d1d..6e45cced2d3 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -160,7 +160,7 @@ for the currently selected frame."
160 "Set background mode as appropriate for the default rxvt colors." 160 "Set background mode as appropriate for the default rxvt colors."
161 (let ((fgbg (server-getenv "COLORFGBG")) 161 (let ((fgbg (server-getenv "COLORFGBG"))
162 bg rgb) 162 bg rgb)
163 (setq frame-background-mode 'light) ; default 163 (setq default-frame-background-mode 'light)
164 (when (and fgbg 164 (when (and fgbg
165 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) 165 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
166 (setq bg (string-to-number (substring fgbg (match-beginning 1)))) 166 (setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -173,7 +173,7 @@ for the currently selected frame."
173 ;; The following line assumes that white is the 15th 173 ;; The following line assumes that white is the 15th
174 ;; color in rxvt-standard-colors. 174 ;; color in rxvt-standard-colors.
175 (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6)) 175 (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
176 (setq frame-background-mode 'dark))) 176 (setq default-frame-background-mode 'dark)))
177 (frame-set-background-mode (selected-frame)))) 177 (frame-set-background-mode (selected-frame))))
178 178
179;; Do it! 179;; Do it!
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index af4e065779a..6465b08daf1 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -376,7 +376,7 @@ versions of xterm."
376 "Set background mode as appropriate for the default rxvt colors." 376 "Set background mode as appropriate for the default rxvt colors."
377 (let ((fgbg (server-getenv "COLORFGBG")) 377 (let ((fgbg (server-getenv "COLORFGBG"))
378 bg rgb) 378 bg rgb)
379 (setq frame-background-mode 'light) ; default 379 (setq default-frame-background-mode 'light)
380 (when (and fgbg 380 (when (and fgbg
381 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) 381 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
382 (setq bg (string-to-number (substring fgbg (match-beginning 1)))) 382 (setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -389,7 +389,7 @@ versions of xterm."
389 ;; The following line assumes that white is the 15th 389 ;; The following line assumes that white is the 15th
390 ;; color in xterm-standard-colors. 390 ;; color in xterm-standard-colors.
391 (* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6)) 391 (* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6))
392 (setq frame-background-mode 'dark))) 392 (setq default-frame-background-mode 'dark)))
393 (frame-set-background-mode (selected-frame)))) 393 (frame-set-background-mode (selected-frame))))
394 394
395;; Do it! 395;; Do it!
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 2d40d6da026..3729453b82f 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -502,7 +502,18 @@ This variable is initialized by the artist-make-prev-next-op-alist function.")
502(if artist-picture-compatibility 502(if artist-picture-compatibility
503 (require 'picture)) 503 (require 'picture))
504 504
505 505;; Variables that are made local in artist-mode-init
506(defvar artist-key-is-drawing nil)
507(defvar artist-key-endpoint1 nil)
508(defvar artist-key-poly-point-list nil)
509(defvar artist-key-shape nil)
510(defvar artist-key-draw-how nil)
511(defvar artist-popup-menu-table nil)
512(defvar artist-key-compl-table nil)
513(defvar artist-rb-save-data nil)
514(defvar artist-arrow-point-1 nil)
515(defvar artist-arrow-point-2 nil)
516
506(defvar artist-mode-map 517(defvar artist-mode-map
507 (let ((map (make-sparse-keymap))) 518 (let ((map (make-sparse-keymap)))
508 (setq artist-mode-map (make-sparse-keymap)) 519 (setq artist-mode-map (make-sparse-keymap))
@@ -1370,21 +1381,6 @@ Keymap summary
1370 minor-mode-map-alist))) 1381 minor-mode-map-alist)))
1371 1382
1372 1383
1373
1374(eval-when-compile
1375 ;; Variables that are made local in artist-mode-init
1376 (defvar artist-key-is-drawing nil)
1377 (defvar artist-key-endpoint1 nil)
1378 (defvar artist-key-poly-point-list nil)
1379 (defvar artist-key-shape nil)
1380 (defvar artist-key-draw-how nil)
1381 (defvar artist-popup-menu-table nil)
1382 (defvar artist-key-compl-table nil)
1383 (defvar artist-rb-save-data nil)
1384 (defvar artist-arrow-point-1 nil)
1385 (defvar artist-arrow-point-2 nil))
1386
1387
1388;; Init and exit 1384;; Init and exit
1389(defun artist-mode-init () 1385(defun artist-mode-init ()
1390 "Init Artist mode. This will call the hook `artist-mode-init-hook'." 1386 "Init Artist mode. This will call the hook `artist-mode-init-hook'."
@@ -2875,7 +2871,7 @@ Returns a list of strings."
2875 2871
2876(defun artist-figlet-get-extra-args () 2872(defun artist-figlet-get-extra-args ()
2877 "Read any extra arguments for figlet." 2873 "Read any extra arguments for figlet."
2878 (let ((extra-args (read-input "Extra args to figlet: "))) 2874 (let ((extra-args (read-string "Extra args to figlet: ")))
2879 (if (string= extra-args "") 2875 (if (string= extra-args "")
2880 nil 2876 nil
2881 extra-args))) 2877 extra-args)))
@@ -2916,7 +2912,7 @@ This is done by calling the function specified by `artist-text-renderer',
2916which must return a list of strings, to be inserted in the buffer. 2912which must return a list of strings, to be inserted in the buffer.
2917 2913
2918Text already in the buffer ``shines thru'' blanks in the rendered text." 2914Text already in the buffer ``shines thru'' blanks in the rendered text."
2919 (let* ((input-text (read-input "Type text to render: ")) 2915 (let* ((input-text (read-string "Type text to render: "))
2920 (rendered-text (artist-funcall artist-text-renderer input-text))) 2916 (rendered-text (artist-funcall artist-text-renderer input-text)))
2921 (artist-text-insert-see-thru x y rendered-text))) 2917 (artist-text-insert-see-thru x y rendered-text)))
2922 2918
@@ -2927,7 +2923,7 @@ This is done by calling the function specified by `artist-text-renderer',
2927which must return a list of strings, to be inserted in the buffer. 2923which must return a list of strings, to be inserted in the buffer.
2928 2924
2929Blanks in the rendered text overwrites any text in the buffer." 2925Blanks in the rendered text overwrites any text in the buffer."
2930 (let* ((input-text (read-input "Type text to render: ")) 2926 (let* ((input-text (read-string "Type text to render: "))
2931 (rendered-text (artist-funcall artist-text-renderer input-text))) 2927 (rendered-text (artist-funcall artist-text-renderer input-text)))
2932 (artist-text-insert-overwrite x y rendered-text))) 2928 (artist-text-insert-overwrite x y rendered-text)))
2933 2929
@@ -3850,8 +3846,8 @@ Optional argument STATE can be used to set state (default is nil)."
3850 (x2 (artist-endpoint-get-x ep2)) 3846 (x2 (artist-endpoint-get-x ep2))
3851 (y2 (artist-endpoint-get-y ep2)) 3847 (y2 (artist-endpoint-get-y ep2))
3852 (dir1 (artist-find-direction x2 y2 x1 y1)) 3848 (dir1 (artist-find-direction x2 y2 x1 y1))
3853 (epn (artist-last point-list)) 3849 (epn (last point-list))
3854 (epn-1 (artist-last point-list 2)) 3850 (epn-1 (last point-list 2))
3855 (xn (artist-endpoint-get-x epn)) 3851 (xn (artist-endpoint-get-x epn))
3856 (yn (artist-endpoint-get-y epn)) 3852 (yn (artist-endpoint-get-y epn))
3857 (xn-1 (artist-endpoint-get-x epn-1)) 3853 (xn-1 (artist-endpoint-get-x epn-1))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 5f4a83b07eb..956d2947456 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -48,12 +48,12 @@
48;; User Options: 48;; User Options:
49 49
50(defgroup bibtex nil 50(defgroup bibtex nil
51 "BibTeX mode" 51 "BibTeX mode."
52 :group 'tex 52 :group 'tex
53 :prefix "bibtex-") 53 :prefix "bibtex-")
54 54
55(defgroup bibtex-autokey nil 55(defgroup bibtex-autokey nil
56 "Generate automatically a key from the author/editor and the title field" 56 "Generate automatically a key from the author/editor and the title field."
57 :group 'bibtex 57 :group 'bibtex
58 :prefix "bibtex-autokey-") 58 :prefix "bibtex-autokey-")
59 59
@@ -2800,7 +2800,7 @@ if that value is non-nil.
2800 (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field) 2800 (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field)
2801 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset 2801 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset
2802 bibtex-contline-indentation) 2802 bibtex-contline-indentation)
2803 ? )) 2803 ?\s))
2804 (set (make-local-variable 'font-lock-defaults) 2804 (set (make-local-variable 'font-lock-defaults)
2805 '(bibtex-font-lock-keywords 2805 '(bibtex-font-lock-keywords
2806 nil t ((?$ . "\"") 2806 nil t ((?$ . "\"")
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index b1b5abc488f..b6bcb83e2a3 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -47,7 +47,7 @@
47;;; 47;;;
48 48
49(defgroup enriched nil 49(defgroup enriched nil
50 "Read and save files in text/enriched format" 50 "Read and save files in text/enriched format."
51 :group 'wp) 51 :group 'wp)
52 52
53(defcustom enriched-verbose t 53(defcustom enriched-verbose t
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 8c2d0937a5a..fc74fc67041 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -66,10 +66,6 @@
66 'emacs)) 66 'emacs))
67 "The type of Emacs we are currently running.") 67 "The type of Emacs we are currently running.")
68 68
69(defvar flyspell-use-local-map
70 (or (eq flyspell-emacs 'xemacs)
71 (not (string< emacs-version "20"))))
72
73;*---------------------------------------------------------------------*/ 69;*---------------------------------------------------------------------*/
74;* User configuration ... */ 70;* User configuration ... */
75;*---------------------------------------------------------------------*/ 71;*---------------------------------------------------------------------*/
@@ -403,34 +399,22 @@ property of the major mode name.")
403;*---------------------------------------------------------------------*/ 399;*---------------------------------------------------------------------*/
404;* The minor mode declaration. */ 400;* The minor mode declaration. */
405;*---------------------------------------------------------------------*/ 401;*---------------------------------------------------------------------*/
406(eval-when-compile (defvar flyspell-local-mouse-map))
407
408(defvar flyspell-mouse-map 402(defvar flyspell-mouse-map
409 (let ((map (make-sparse-keymap))) 403 (let ((map (make-sparse-keymap)))
410 (if flyspell-use-meta-tab
411 (define-key map "\M-\t" #'flyspell-auto-correct-word))
412 (define-key map (if (featurep 'xemacs) [button2] [down-mouse-2]) 404 (define-key map (if (featurep 'xemacs) [button2] [down-mouse-2])
413 #'flyspell-correct-word) 405 #'flyspell-correct-word)
414 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) 406 map)
415 (define-key map [(control \,)] 'flyspell-goto-next-error) 407 "Keymap for Flyspell to put on erroneous words.")
416 (define-key map [(control \.)] 'flyspell-auto-correct-word)
417 map))
418 408
419(defvar flyspell-mode-map 409(defvar flyspell-mode-map
420 (let ((map (make-sparse-keymap))) 410 (let ((map (make-sparse-keymap)))
421 ;; mouse, keyboard bindings and misc definition
422 (if flyspell-use-meta-tab 411 (if flyspell-use-meta-tab
423 (define-key map "\M-\t" 'flyspell-auto-correct-word)) 412 (define-key map "\M-\t" 'flyspell-auto-correct-word))
424 (cond 413 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
425 ;; I don't understand this test, so I left it as is. --Stef 414 (define-key map [(control ?\,)] 'flyspell-goto-next-error)
426 ((or (featurep 'xemacs) flyspell-use-local-map) 415 (define-key map [(control ?\.)] 'flyspell-auto-correct-word)
427 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) 416 map)
428 (define-key map [(control ?\,)] 'flyspell-goto-next-error) 417 "Minor mode keymap for Flyspell mode--for the whole buffer.")
429 (define-key map [(control ?\.)] 'flyspell-auto-correct-word)))
430 map))
431
432;; the name of the overlay property that defines the keymap
433(defvar flyspell-overlay-keymap-property-name 'keymap)
434 418
435;; dash character machinery 419;; dash character machinery
436(defvar flyspell-consider-dash-as-word-delimiter-flag nil 420(defvar flyspell-consider-dash-as-word-delimiter-flag nil
@@ -569,22 +553,6 @@ in your .emacs file.
569 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate))) 553 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
570 (if mode-predicate 554 (if mode-predicate
571 (setq flyspell-generic-check-word-p mode-predicate))) 555 (setq flyspell-generic-check-word-p mode-predicate)))
572 ;; work around the fact that the `local-map' text-property replaces the
573 ;; buffer's local map rather than shadowing it.
574 (set (make-local-variable 'flyspell-mouse-map)
575 (let ((map (copy-keymap flyspell-mouse-map)))
576 (set-keymap-parent map (current-local-map))
577 (if (and (eq flyspell-emacs 'emacs)
578 (not (string< emacs-version "20")))
579 (define-key map '[tool-bar] nil))
580 map))
581 (set (make-local-variable 'flyspell-mode-map)
582 (let ((map (copy-keymap flyspell-mode-map)))
583 (set-keymap-parent map (current-local-map))
584 (if (and (eq flyspell-emacs 'emacs)
585 (not (string< emacs-version "20")))
586 (define-key map '[tool-bar] nil))
587 map))
588 ;; the welcome message 556 ;; the welcome message
589 (if (and flyspell-issue-message-flag 557 (if (and flyspell-issue-message-flag
590 flyspell-issue-welcome-flag 558 flyspell-issue-welcome-flag
@@ -1570,10 +1538,7 @@ for the overlay."
1570 (overlay-put flyspell-overlay 'flyspell-overlay t) 1538 (overlay-put flyspell-overlay 'flyspell-overlay t)
1571 (overlay-put flyspell-overlay 'evaporate t) 1539 (overlay-put flyspell-overlay 'evaporate t)
1572 (overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point") 1540 (overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point")
1573 (if flyspell-use-local-map 1541 (overlay-put flyspell-overlay 'keymap flyspell-mouse-map)
1574 (overlay-put flyspell-overlay
1575 flyspell-overlay-keymap-property-name
1576 flyspell-mouse-map))
1577 (when (eq face 'flyspell-incorrect) 1542 (when (eq face 'flyspell-incorrect)
1578 (and (stringp flyspell-before-incorrect-word-string) 1543 (and (stringp flyspell-before-incorrect-word-string)
1579 (overlay-put flyspell-overlay 'before-string 1544 (overlay-put flyspell-overlay 'before-string
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index afdfc951b96..5d966c07abf 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1468,80 +1468,79 @@ quit spell session exited."
1468 end (car (cdr (cdr word))) 1468 end (car (cdr (cdr word)))
1469 word (car word)) 1469 word (car word))
1470 1470
1471 ;; now check spelling of word if it has 3 or more characters. 1471 ;; At this point it used to ignore 2-letter words.
1472 (cond 1472 ;; But that is silly; if the user asks for it, we should do it. - rms.
1473 ((> (length word) 2) 1473 (or quietly
1474 (or quietly 1474 (message "Checking spelling of %s..."
1475 (message "Checking spelling of %s..." 1475 (funcall ispell-format-word word)))
1476 (funcall ispell-format-word word))) 1476 (ispell-send-string "%\n") ; put in verbose mode
1477 (ispell-send-string "%\n") ; put in verbose mode 1477 (ispell-send-string (concat "^" word "\n"))
1478 (ispell-send-string (concat "^" word "\n")) 1478 ;; wait until ispell has processed word
1479 ;; wait until ispell has processed word 1479 (while (progn
1480 (while (progn 1480 (ispell-accept-output)
1481 (ispell-accept-output) 1481 (not (string= "" (car ispell-filter)))))
1482 (not (string= "" (car ispell-filter))))) 1482 ;;(ispell-send-string "!\n") ;back to terse mode.
1483 ;;(ispell-send-string "!\n") ;back to terse mode. 1483 (setq ispell-filter (cdr ispell-filter)) ; remove extra \n
1484 (setq ispell-filter (cdr ispell-filter)) ; remove extra \n 1484 (if (and ispell-filter (listp ispell-filter))
1485 (if (and ispell-filter (listp ispell-filter)) 1485 (if (> (length ispell-filter) 1)
1486 (if (> (length ispell-filter) 1) 1486 (error "Ispell and its process have different character maps")
1487 (error "Ispell and its process have different character maps") 1487 (setq poss (ispell-parse-output (car ispell-filter)))))
1488 (setq poss (ispell-parse-output (car ispell-filter))))) 1488 (cond ((eq poss t)
1489 (cond ((eq poss t) 1489 (or quietly
1490 (or quietly 1490 (message "%s is correct"
1491 (message "%s is correct" 1491 (funcall ispell-format-word word)))
1492 (funcall ispell-format-word word))) 1492 (and (fboundp 'extent-at)
1493 (and (fboundp 'extent-at) 1493 (extent-at start)
1494 (extent-at start) 1494 (delete-extent (extent-at start))))
1495 (delete-extent (extent-at start)))) 1495 ((stringp poss)
1496 ((stringp poss) 1496 (or quietly
1497 (or quietly 1497 (message "%s is correct because of root %s"
1498 (message "%s is correct because of root %s" 1498 (funcall ispell-format-word word)
1499 (funcall ispell-format-word word) 1499 (funcall ispell-format-word poss)))
1500 (funcall ispell-format-word poss))) 1500 (and (fboundp 'extent-at)
1501 (and (fboundp 'extent-at) 1501 (extent-at start)
1502 (extent-at start) 1502 (delete-extent (extent-at start))))
1503 (delete-extent (extent-at start)))) 1503 ((null poss) (message "Error in ispell process"))
1504 ((null poss) (message "Error in ispell process")) 1504 (ispell-check-only ; called from ispell minor mode.
1505 (ispell-check-only ; called from ispell minor mode. 1505 (if (fboundp 'make-extent)
1506 (if (fboundp 'make-extent) 1506 (let ((ext (make-extent start end)))
1507 (let ((ext (make-extent start end))) 1507 (set-extent-property ext 'face ispell-highlight-face)
1508 (set-extent-property ext 'face ispell-highlight-face) 1508 (set-extent-property ext 'priority 2000))
1509 (set-extent-property ext 'priority 2000)) 1509 (beep)
1510 (beep) 1510 (message "%s is incorrect"(funcall ispell-format-word word))))
1511 (message "%s is incorrect"(funcall ispell-format-word word)))) 1511 (t ; prompt for correct word.
1512 (t ; prompt for correct word. 1512 (save-window-excursion
1513 (save-window-excursion 1513 (setq replace (ispell-command-loop
1514 (setq replace (ispell-command-loop 1514 (car (cdr (cdr poss)))
1515 (car (cdr (cdr poss))) 1515 (car (cdr (cdr (cdr poss))))
1516 (car (cdr (cdr (cdr poss)))) 1516 (car poss) start end)))
1517 (car poss) start end))) 1517 (cond ((equal 0 replace)
1518 (cond ((equal 0 replace) 1518 (ispell-add-per-file-word-list (car poss)))
1519 (ispell-add-per-file-word-list (car poss))) 1519 (replace
1520 (replace 1520 (setq new-word (if (atom replace) replace (car replace))
1521 (setq new-word (if (atom replace) replace (car replace)) 1521 cursor-location (+ (- (length word) (- end start))
1522 cursor-location (+ (- (length word) (- end start)) 1522 cursor-location))
1523 cursor-location)) 1523 (if (not (equal new-word (car poss)))
1524 (if (not (equal new-word (car poss))) 1524 (progn
1525 (progn 1525 (delete-region start end)
1526 (delete-region start end) 1526 (setq start (point))
1527 (setq start (point)) 1527 (ispell-insert-word new-word)
1528 (ispell-insert-word new-word) 1528 (setq end (point))))
1529 (setq end (point)))) 1529 (if (not (atom replace)) ;recheck spelling of replacement
1530 (if (not (atom replace)) ;recheck spelling of replacement 1530 (progn
1531 (progn 1531 (if (car (cdr replace)) ; query replace requested
1532 (if (car (cdr replace)) ; query replace requested 1532 (save-window-excursion
1533 (save-window-excursion 1533 (query-replace word new-word t)))
1534 (query-replace word new-word t))) 1534 (goto-char start)
1535 (goto-char start) 1535 ;; single word could be split into multiple words
1536 ;; single word could be split into multiple words 1536 (setq ispell-quit (not (ispell-region start end)))
1537 (setq ispell-quit (not (ispell-region start end))) 1537 ))))
1538 )))) 1538 ;; keep if rechecking word and we keep choices win.
1539 ;; keep if rechecking word and we keep choices win. 1539 (if (get-buffer ispell-choices-buffer)
1540 (if (get-buffer ispell-choices-buffer) 1540 (kill-buffer ispell-choices-buffer))))
1541 (kill-buffer ispell-choices-buffer)))) 1541 (ispell-pdict-save ispell-silently-savep)
1542 (ispell-pdict-save ispell-silently-savep) 1542 ;; NB: Cancels ispell-quit incorrectly if called from ispell-region
1543 ;; NB: Cancels ispell-quit incorrectly if called from ispell-region 1543 (if ispell-quit (setq ispell-quit nil replace 'quit))
1544 (if ispell-quit (setq ispell-quit nil replace 'quit))))
1545 (goto-char cursor-location) ; return to original location 1544 (goto-char cursor-location) ; return to original location
1546 replace))) 1545 replace)))
1547 1546
diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el
index 9136cb52202..7327cf9840a 100644
--- a/lisp/textmodes/makeinfo.el
+++ b/lisp/textmodes/makeinfo.el
@@ -50,7 +50,7 @@
50(require 'info) 50(require 'info)
51 51
52(defgroup makeinfo nil 52(defgroup makeinfo nil
53 "Run makeinfo conveniently" 53 "Run makeinfo conveniently."
54 :group 'docs) 54 :group 'docs)
55 55
56 56
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 635bb6b5a98..1551738050b 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -1,11 +1,11 @@
1;;; org.el --- Outline-based notes management and organizer 1;; org.el --- Outline-based notes management and organizer
2;; Carstens outline-mode for keeping track of everything. 2;; Carstens outline-mode for keeping track of everything.
3;; Copyright (c) 2004, 2005 Free Software Foundation 3;; Copyright (c) 2004, 2005 Free Software Foundation
4;; 4;;
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar 6;; Keywords: outlines, hypermedia, calendar
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 3.11 8;; Version: 3.12
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -80,10 +80,20 @@
80;; 80;;
81;; Changes: 81;; Changes:
82;; ------- 82;; -------
83;; Version 3.12
84;; - Tables can store formulas (one per column) and compute fields.
85;; Not quite like a full spreadsheet, but very powerful.
86;; - table.el keybinding is now `C-c ~'.
87;; - Numeric argument to org-cycle does `show-subtree' above on level ARG.
88;; - Small changes to keys in agenda buffer. Affected keys:
89;; [w] weekly view; [d] daily view; [D] toggle diary inclusion.
90;; - Bug fixes.
91;;
83;; Version 3.11 92;; Version 3.11
84;; - Links inserted with C-c C-l are now by default enclosed in angle 93;; - Links inserted with C-c C-l are now by default enclosed in angle
85;; brackets. See the new variable `org-link-format'. 94;; brackets. See the new variable `org-link-format'.
86;; - ">" terminates a link, this is a way to have several links in a line. 95;; - ">" terminates a link, this is a way to have several links in a line.
96;; Both "<" and ">" are no longer allowed as characters in a link.
87;; - Archiving of finished tasks. 97;; - Archiving of finished tasks.
88;; - C-<up>/<down> bindings removed, to allow access to paragraph commands. 98;; - C-<up>/<down> bindings removed, to allow access to paragraph commands.
89;; - Compatibility with CUA-mode (see variable `org-CUA-compatible'). 99;; - Compatibility with CUA-mode (see variable `org-CUA-compatible').
@@ -168,7 +178,7 @@
168 178
169;;; Customization variables 179;;; Customization variables
170 180
171(defvar org-version "3.11" 181(defvar org-version "3.12"
172 "The version number of the file org.el.") 182 "The version number of the file org.el.")
173(defun org-version () 183(defun org-version ()
174 (interactive) 184 (interactive)
@@ -183,7 +193,7 @@
183 "Are we using the new outline mode?") 193 "Are we using the new outline mode?")
184 194
185(defgroup org nil 195(defgroup org nil
186 "Outline-based notes management and organizer " 196 "Outline-based notes management and organizer."
187 :tag "Org" 197 :tag "Org"
188 :group 'outlines 198 :group 'outlines
189 :group 'hypermedia 199 :group 'hypermedia
@@ -584,7 +594,7 @@ When nil, only the days which actually have entries are shown."
584;; require a variable ndays treatment. 594;; require a variable ndays treatment.
585(defcustom org-agenda-start-on-weekday 1 595(defcustom org-agenda-start-on-weekday 1
586 "Non-nil means, start the overview always on the specified weekday. 596 "Non-nil means, start the overview always on the specified weekday.
5870 Denotes Sunday, 1 denotes Monday etc. 5970 denotes Sunday, 1 denotes Monday etc.
588When nil, always start on the current day." 598When nil, always start on the current day."
589 :group 'org-agenda 599 :group 'org-agenda
590 :type '(choice (const :tag "Today" nil) 600 :type '(choice (const :tag "Today" nil)
@@ -613,8 +623,8 @@ the entries for specific days."
613(defcustom org-calendar-to-agenda-key [?c] 623(defcustom org-calendar-to-agenda-key [?c]
614 "The key to be installed in `calendar-mode-map' for switching to the agenda. 624 "The key to be installed in `calendar-mode-map' for switching to the agenda.
615The command `org-calendar-goto-agenda' will be bound to this key. The 625The command `org-calendar-goto-agenda' will be bound to this key. The
616default is the character `c' because then`c' can be used to switch back and 626default is the character `c' because then `c' can be used to switch back and
617force between agenda and calendar." 627forth between agenda and calendar."
618 :group 'org-agenda 628 :group 'org-agenda
619 :type 'sexp) 629 :type 'sexp)
620 630
@@ -622,7 +632,7 @@ force between agenda and calendar."
622 "Sorting structure for the agenda items of a single day. 632 "Sorting structure for the agenda items of a single day.
623This is a list of symbols which will be used in sequence to determine 633This is a list of symbols which will be used in sequence to determine
624if an entry should be listed before another entry. The following 634if an entry should be listed before another entry. The following
625symbols are recognized. 635symbols are recognized:
626 636
627time-up Put entries with time-of-day indications first, early first 637time-up Put entries with time-of-day indications first, early first
628time-down Put entries with time-of-day indications first, late first 638time-down Put entries with time-of-day indications first, late first
@@ -715,9 +725,9 @@ of `org-agenda-prefix-format' or `org-timeline-prefix-format'.")
715(defcustom org-agenda-use-time-grid t 725(defcustom org-agenda-use-time-grid t
716 "Non-nil means, show a time grid in the agenda schedule. 726 "Non-nil means, show a time grid in the agenda schedule.
717A time grid is a set of lines for specific times (like every two hours between 727A time grid is a set of lines for specific times (like every two hours between
7188:00 and 20:00. The items scheduled for a day at specific times are 7288:00 and 20:00). The items scheduled for a day at specific times are
719sorted in between these lines. 729sorted in between these lines.
720For deails about when the grid will be shown, and what it will look like, see 730For details about when the grid will be shown, and what it will look like, see
721the variable `org-agenda-time-grid'." 731the variable `org-agenda-time-grid'."
722 :group 'org-agenda 732 :group 'org-agenda
723 :type 'boolean) 733 :type 'boolean)
@@ -838,7 +848,7 @@ unnecessary clutter."
838This string consists of two parts, separated by a double-colon. 848This string consists of two parts, separated by a double-colon.
839 849
840The first part is a file name - when omitted, archiving happens in the same 850The first part is a file name - when omitted, archiving happens in the same
841file. %s will be replaced by the current file name (without directory part). 851file. `%s' will be replaced by the current file name (without directory part).
842Archiving to a different file is useful to keep archived entries from 852Archiving to a different file is useful to keep archived entries from
843contributing to the Org-mode Agenda. 853contributing to the Org-mode Agenda.
844 854
@@ -905,7 +915,7 @@ recommend an additional URL: prefix, so the format would be \"<URL:%s>\"."
905When nil, it becomes possible to put several links into a line. 915When nil, it becomes possible to put several links into a line.
906Note that in tables, a link never extends accross fields, so in a table 916Note that in tables, a link never extends accross fields, so in a table
907it is always possible to put several links into a line. 917it is always possible to put several links into a line.
908Changing this varable requires a re-launch of Emacs of become effective." 918Changing this variable requires a re-launch of Emacs to become effective."
909 :group 'org-link 919 :group 'org-link
910 :type 'boolean) 920 :type 'boolean)
911 921
@@ -970,7 +980,7 @@ another window."
970 (const find-file-other-frame))))) 980 (const find-file-other-frame)))))
971 981
972(defcustom org-usenet-links-prefer-google nil 982(defcustom org-usenet-links-prefer-google nil
973 "Non-nil means, `org-store-link' will create web links to google groups. 983 "Non-nil means, `org-store-link' will create web links to Google groups.
974When nil, Gnus will be used for such links. 984When nil, Gnus will be used for such links.
975Using a prefix arg to the command \\[org-store-link] (`org-store-link') 985Using a prefix arg to the command \\[org-store-link] (`org-store-link')
976negates this setting for the duration of the command." 986negates this setting for the duration of the command."
@@ -1109,13 +1119,13 @@ When nil, new notes will be filed to the end of a file or entry."
1109When nil, such lines will be treated like ordinary lines. 1119When nil, such lines will be treated like ordinary lines.
1110 1120
1111When equal to the symbol `optimized', the table editor will be optimized to 1121When equal to the symbol `optimized', the table editor will be optimized to
1112do the following 1122do the following:
1113- Use automatic overwrite mode in front of whitespace in table fields. 1123- Use automatic overwrite mode in front of whitespace in table fields.
1114 This make the structure of the table stay in tact as long as the edited 1124 This makes the structure of the table stay intact as long as the edited
1115 field does not exceed the column width. 1125 field does not exceed the column width.
1116- Minimize the number of realigns. Normally, the table is aligned each time 1126- Minimize the number of realigns. Normally, the table is aligned each time
1117 TAB or RET are pressed to move to another field. With optimization this 1127 TAB or RET are pressed to move to another field. With optimization this
1118 happens only if changes to a field might have changed the column width. 1128 happens only if changes to a field might have changed the column width.
1119Optimization requires replacing the functions `self-insert-command', 1129Optimization requires replacing the functions `self-insert-command',
1120`delete-char', and `backward-delete-char' in Org-mode buffers, with a 1130`delete-char', and `backward-delete-char' in Org-mode buffers, with a
1121slight (in fact: unnoticeable) speed impact for normal typing. Org-mode is 1131slight (in fact: unnoticeable) speed impact for normal typing. Org-mode is
@@ -1201,9 +1211,70 @@ line will be formatted with <th> tags."
1201 :group 'org-table 1211 :group 'org-table
1202 :type 'boolean) 1212 :type 'boolean)
1203 1213
1214
1215(defgroup org-table-calculation nil
1216 "Options concerning tables in Org-mode."
1217 :tag "Org Table Calculation"
1218 :group 'org)
1219
1204(defcustom org-table-copy-increment t 1220(defcustom org-table-copy-increment t
1205 "Non-nil means, increment when copying current field with \\[org-table-copy-down]." 1221 "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
1206 :group 'org-table 1222 :group 'org-table-calculation
1223 :type 'boolean)
1224
1225(defcustom org-calc-default-modes
1226 '(calc-internal-prec 12
1227 calc-float-format (float 5)
1228 calc-angle-mode deg
1229 calc-prefer-frac nil
1230 calc-symbolic-mode nil)
1231 "List with Calc mode settings for use in calc-eval for table formulas.
1232The list must contain alternating symbols (calc modes variables and values.
1233Don't remove any of the default settings, just change the values. Org-mode
1234relies on the variables to be present in the list."
1235 :group 'org-table-calculation
1236 :type 'plist)
1237
1238(defcustom org-table-formula-evaluate-inline t
1239 "Non-nil means, TAB and RET evaluate a formula in current table field.
1240If the current field starts with an equal sign, it is assumed to be a formula
1241which should be evaluated as described in the manual and in the documentation
1242string of the command `org-table-eval-formula'. This feature requires the
1243Emacs calc package.
1244When this variable is nil, formula calculation is only available through
1245the command \\[org-table-eval-formula]."
1246 :group 'org-table-calculation
1247 :type 'boolean)
1248
1249
1250(defcustom org-table-formula-use-constants t
1251 "Non-nil means, interpret constants in formulas in tables.
1252A constant looks like `$c' or `$Grav' and will be replaced before evaluation
1253by the value given in `org-table-formula-constants', or by a value obtained
1254from the `constants.el' package."
1255 :group 'org-table-calculation
1256 :type 'boolean)
1257
1258(defcustom org-table-formula-constants nil
1259 "Alist with constant names and values, for use in table formulas.
1260The car of each element is a name of a constant, without the `$' before it.
1261The cdr is the value as a string. For example, if you'd like to use the
1262speed of light in a formula, you would configure
1263
1264 (setq org-table-formula-constants '((\"c\" . \"299792458.\")))
1265
1266and then use it in an equation like `$1*$c'."
1267 :group 'org-table-calculation
1268 :type '(repeat
1269 (cons (string :tag "name")
1270 (string :tag "value"))))
1271
1272(defcustom org-table-formula-numbers-only nil
1273 "Non-nil means, calculate only with numbers in table formulas.
1274Then all input fields will be converted to a number, and the result
1275must also be a number. When nil, calc's full potential is available
1276in table calculations, including symbolics etc."
1277 :group 'org-table-calculation
1207 :type 'boolean) 1278 :type 'boolean)
1208 1279
1209(defcustom org-table-tab-recognizes-table.el t 1280(defcustom org-table-tab-recognizes-table.el t
@@ -1259,7 +1330,7 @@ or use the +OPTION lines for a per-file setting."
1259 1330
1260(defcustom org-export-default-language "en" 1331(defcustom org-export-default-language "en"
1261 "The default language of HTML export, as a string. 1332 "The default language of HTML export, as a string.
1262This should have an association in `org-export-language-setup'" 1333This should have an association in `org-export-language-setup'."
1263 :group 'org-export 1334 :group 'org-export
1264 :type 'string) 1335 :type 'string)
1265 1336
@@ -1427,12 +1498,11 @@ Otherwise the buffer will just be saved to a file and stay hidden."
1427 :type 'boolean) 1498 :type 'boolean)
1428 1499
1429(defcustom org-export-html-show-new-buffer nil 1500(defcustom org-export-html-show-new-buffer nil
1430 "Non-nil means, popup buffer containing the exported html text. 1501 "Non-nil means, popup buffer containing the exported HTML text.
1431Otherwise, the buffer will just be saved to a file and stay hidden." 1502Otherwise, the buffer will just be saved to a file and stay hidden."
1432 :group 'org-export 1503 :group 'org-export
1433 :type 'boolean) 1504 :type 'boolean)
1434 1505
1435
1436(defgroup org-faces nil 1506(defgroup org-faces nil
1437 "Faces for highlighting in Org-mode." 1507 "Faces for highlighting in Org-mode."
1438 :tag "Org Faces" 1508 :tag "Org Faces"
@@ -1556,6 +1626,15 @@ When this is non-nil, the headline after the keyword is set to the
1556 "Face for items scheduled previously, and not yet done." 1626 "Face for items scheduled previously, and not yet done."
1557 :group 'org-faces) 1627 :group 'org-faces)
1558 1628
1629(defface org-formula
1630 '((((type tty pc) (class color) (background light)) (:foreground "red"))
1631 (((type tty pc) (class color) (background dark)) (:foreground "red1"))
1632 (((class color) (background light)) (:foreground "Firebrick"))
1633 (((class color) (background dark)) (:foreground "chocolate1"))
1634 (t (:bold t :italic t)))
1635 "Face for items scheduled previously, and not yet done."
1636 :group 'org-faces)
1637
1559(defface org-link 1638(defface org-link
1560 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) 1639 '((((type tty) (class color)) (:foreground "cyan" :weight bold))
1561 (((class color) (background light)) (:foreground "Purple")) 1640 (((class color) (background light)) (:foreground "Purple"))
@@ -1585,7 +1664,7 @@ When this is non-nil, the headline after the keyword is set to the
1585 (((class color) (background light)) (:foreground "DarkGoldenrod")) 1664 (((class color) (background light)) (:foreground "DarkGoldenrod"))
1586 (((class color) (background dark)) (:foreground "LightGoldenrod")) 1665 (((class color) (background dark)) (:foreground "LightGoldenrod"))
1587 (t (:bold t :italic t))) 1666 (t (:bold t :italic t)))
1588 "Face used for level 2 headlines." 1667 "Face used for time grids."
1589 :group 'org-faces) 1668 :group 'org-faces)
1590 1669
1591(defvar org-level-faces 1670(defvar org-level-faces
@@ -1649,6 +1728,7 @@ When this is non-nil, the headline after the keyword is set to the
1649 1728
1650(defvar org-struct-menu) 1729(defvar org-struct-menu)
1651(defvar org-org-menu) 1730(defvar org-org-menu)
1731(defvar org-tbl-menu)
1652 1732
1653;; We use a before-change function to check if a table might need 1733;; We use a before-change function to check if a table might need
1654;; an update. 1734;; an update.
@@ -1656,7 +1736,6 @@ When this is non-nil, the headline after the keyword is set to the
1656 "Indicates of a table might need an update. 1736 "Indicates of a table might need an update.
1657This variable is set by `org-before-change-function'. `org-table-align' 1737This variable is set by `org-before-change-function'. `org-table-align'
1658sets it back to nil.") 1738sets it back to nil.")
1659
1660(defvar org-mode-hook nil) 1739(defvar org-mode-hook nil)
1661(defvar org-inhibit-startup nil) ; Dynamically-scoped param. 1740(defvar org-inhibit-startup nil) ; Dynamically-scoped param.
1662 1741
@@ -1681,6 +1760,7 @@ The following commands are available:
1681 1760
1682\\{org-mode-map}" 1761\\{org-mode-map}"
1683 (easy-menu-add org-org-menu) 1762 (easy-menu-add org-org-menu)
1763 (easy-menu-add org-tbl-menu)
1684 (org-install-agenda-files-menu) 1764 (org-install-agenda-files-menu)
1685 (setq outline-regexp "\\*+") 1765 (setq outline-regexp "\\*+")
1686 (if org-startup-truncated (setq truncate-lines t)) 1766 (if org-startup-truncated (setq truncate-lines t))
@@ -1693,11 +1773,11 @@ The following commands are available:
1693 (add-hook 'before-change-functions 'org-before-change-function nil 1773 (add-hook 'before-change-functions 'org-before-change-function nil
1694 'local) 1774 'local)
1695 ;; Paragraph regular expressions 1775 ;; Paragraph regular expressions
1696 (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$") 1776 (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$\\|\\([*\f]+\\)")
1697 (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)") 1777 (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)")
1698 ;; Inhibit auto-fill for headers, tables and fixed-width lines. 1778 ;; Inhibit auto-fill for headers, tables and fixed-width lines.
1699 (set (make-local-variable 'auto-fill-inhibit-regexp) 1779 (set (make-local-variable 'auto-fill-inhibit-regexp)
1700 (concat "\\*" 1780 (concat "\\*\\|#"
1701 (if (or org-enable-table-editor org-enable-fixed-width-editor) 1781 (if (or org-enable-table-editor org-enable-fixed-width-editor)
1702 (concat 1782 (concat
1703 "\\|[ \t]*[" 1783 "\\|[ \t]*["
@@ -1709,6 +1789,20 @@ The following commands are available:
1709 (interactive-p) 1789 (interactive-p)
1710 (= (point-min) (point-max))) 1790 (= (point-min) (point-max)))
1711 (insert " -*- mode: org -*-\n\n")) 1791 (insert " -*- mode: org -*-\n\n"))
1792
1793 ;; Get rid of Outline menus, they are not needed
1794 ;; Need to do this here because define-derived-mode sets up
1795 ;; the keymap so late.
1796 (if org-xemacs-p
1797 (progn
1798 (delete-menu-item '("Headings"))
1799 (delete-menu-item '("Show"))
1800 (delete-menu-item '("Hide"))
1801 (set-menubar-dirty-flag))
1802 (define-key org-mode-map [menu-bar headings] 'undefined)
1803 (define-key org-mode-map [menu-bar hide] 'undefined)
1804 (define-key org-mode-map [menu-bar show] 'undefined))
1805
1712 (unless org-inhibit-startup 1806 (unless org-inhibit-startup
1713 (if org-startup-with-deadline-check 1807 (if org-startup-with-deadline-check
1714 (call-interactively 'org-check-deadlines) 1808 (call-interactively 'org-check-deadlines)
@@ -1720,11 +1814,14 @@ The following commands are available:
1720 (org-cycle '(4)) (org-cycle '(4)))))))) 1814 (org-cycle '(4)) (org-cycle '(4))))))))
1721 1815
1722(defun org-fill-paragraph (&optional justify) 1816(defun org-fill-paragraph (&optional justify)
1723 "Re-align a table, pass through to fill-paragraph if no table." 1817 "Re-align a table, pass through to `fill-paragraph' if no table."
1724 (save-excursion 1818 (save-excursion
1725 (beginning-of-line 1) 1819 (beginning-of-line 1)
1726 (looking-at "\\s-*\\(|\\|\\+-+\\)"))) 1820 (looking-at "\\s-*\\(|\\|\\+-+\\)")))
1727 1821
1822(defsubst org-current-line (&optional pos)
1823 (+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point)))))
1824
1728;;; Font-Lock stuff 1825;;; Font-Lock stuff
1729 1826
1730(defvar org-mouse-map (make-sparse-keymap)) 1827(defvar org-mouse-map (make-sparse-keymap))
@@ -1808,7 +1905,6 @@ The following commands are available:
1808 ;; (3 'italic)) 1905 ;; (3 'italic))
1809 ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)" 1906 ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
1810 ;; (3 'underline)) 1907 ;; (3 'underline))
1811 '("\\<FIXME\\>" (0 'org-warning t))
1812 (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") 1908 (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
1813 '(1 'org-warning t)) 1909 '(1 'org-warning t))
1814 '("^#.*" (0 'font-lock-comment-face t)) 1910 '("^#.*" (0 'font-lock-comment-face t))
@@ -1819,7 +1915,10 @@ The following commands are available:
1819 '(1 'org-done t))) 1915 '(1 'org-done t)))
1820 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" 1916 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
1821 (1 'org-table t)) 1917 (1 'org-table t))
1822 '("^[ \t]*\\(:.*\\)" (1 'org-table t))))) 1918 '("^[ \t]*\\(:.*\\)" (1 'org-table t))
1919 '("| *\\(=[^|\n]*\\)" (1 'org-formula t))
1920 '("^[ \t]*| *\\([#!$*]\\) *|" (1 'org-formula t))
1921 )))
1823 (set (make-local-variable 'org-font-lock-keywords) 1922 (set (make-local-variable 'org-font-lock-keywords)
1824 (append 1923 (append
1825 (if org-noutline-p ; FIXME: I am not sure if eval will work 1924 (if org-noutline-p ; FIXME: I am not sure if eval will work
@@ -1857,21 +1956,22 @@ The following commands are available:
1857 "Visibility cycling for Org-mode. 1956 "Visibility cycling for Org-mode.
1858 1957
1859- When this function is called with a prefix argument, rotate the entire 1958- When this function is called with a prefix argument, rotate the entire
1860 buffer through 3 states (global cycling) 1959 buffer through 3 states (global cycling):
1861 1. OVERVIEW: Show only top-level headlines. 1960 1. OVERVIEW: Show only top-level headlines.
1862 2. CONTENTS: Show all headlines of all levels, but no body text. 1961 2. CONTENTS: Show all headlines of all levels, but no body text.
1863 3. SHOW ALL: Show everything. 1962 3. SHOW ALL: Show everything.
1864 1963
1865- When point is at the beginning of a headline, rotate the subtree started 1964- When point is at the beginning of a headline, rotate the subtree started
1866 by this line through 3 different states (local cycling) 1965 by this line through 3 different states (local cycling):
1867 1. FOLDED: Only the main headline is shown. 1966 1. FOLDED: Only the main headline is shown.
1868 2. CHILDREN: The main headline and the direct children are shown. From 1967 2. CHILDREN: The main headline and the direct children are shown. From
1869 this state, you can move to one of the children and 1968 this state, you can move to one of the children and
1870 zoom in further. 1969 zoom in further.
1871 3. SUBTREE: Show the entire subtree, including body text. 1970 3. SUBTREE: Show the entire subtree, including body text.
1872 1971
1873- When there is a numeric prefix, go ARG levels up and do a `show-subtree', 1972- When there is a numeric prefix, go up to a heading with level ARG, do
1874 keeping cursor position. 1973 a `show-subtree' and return to the previous cursor position. If ARG
1974 is negative, go up that many levels.
1875 1975
1876- When point is not at the beginning of a headline, execute 1976- When point is not at the beginning of a headline, execute
1877 `indent-relative', like TAB normally does. See the option 1977 `indent-relative', like TAB normally does. See the option
@@ -1937,7 +2037,8 @@ The following commands are available:
1937 ;; Show-subtree, ARG levels up from here. 2037 ;; Show-subtree, ARG levels up from here.
1938 (save-excursion 2038 (save-excursion
1939 (org-back-to-heading) 2039 (org-back-to-heading)
1940 (outline-up-heading arg) 2040 (outline-up-heading (if (< arg 0) (- arg)
2041 (- (outline-level) arg)))
1941 (org-show-subtree))) 2042 (org-show-subtree)))
1942 2043
1943 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) 2044 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp))
@@ -2117,14 +2218,14 @@ or nil."
2117 2218
2118;; FIXME: It may not be a good idea to temper with the prefix argument... 2219;; FIXME: It may not be a good idea to temper with the prefix argument...
2119(defun org-goto-ret (&optional arg) 2220(defun org-goto-ret (&optional arg)
2120 "Finish org-goto by going to the new location." 2221 "Finish `org-goto' by going to the new location."
2121 (interactive "P") 2222 (interactive "P")
2122 (setq org-selected-point (point) 2223 (setq org-selected-point (point)
2123 current-prefix-arg arg) 2224 current-prefix-arg arg)
2124 (throw 'exit nil)) 2225 (throw 'exit nil))
2125 2226
2126(defun org-goto-left () 2227(defun org-goto-left ()
2127 "Finish org-goto by going to the new location." 2228 "Finish `org-goto' by going to the new location."
2128 (interactive) 2229 (interactive)
2129 (if (org-on-heading-p) 2230 (if (org-on-heading-p)
2130 (progn 2231 (progn
@@ -2135,7 +2236,7 @@ or nil."
2135 (error "Not on a heading"))) 2236 (error "Not on a heading")))
2136 2237
2137(defun org-goto-right () 2238(defun org-goto-right ()
2138 "Finish org-goto by going to the new location." 2239 "Finish `org-goto' by going to the new location."
2139 (interactive) 2240 (interactive)
2140 (if (org-on-heading-p) 2241 (if (org-on-heading-p)
2141 (progn 2242 (progn
@@ -2147,7 +2248,7 @@ or nil."
2147 (error "Not on a heading"))) 2248 (error "Not on a heading")))
2148 2249
2149(defun org-goto-quit () 2250(defun org-goto-quit ()
2150 "Finish org-goto without cursor motion." 2251 "Finish `org-goto' without cursor motion."
2151 (interactive) 2252 (interactive)
2152 (setq org-selected-point nil) 2253 (setq org-selected-point nil)
2153 (throw 'exit nil)) 2254 (throw 'exit nil))
@@ -2273,8 +2374,6 @@ in the region."
2273 (save-excursion 2374 (save-excursion
2274 (setq end (copy-marker end)) 2375 (setq end (copy-marker end))
2275 (goto-char beg) 2376 (goto-char beg)
2276 ;; (if (fboundp 'deactivate-mark) (deactivate-mark))
2277 ;; (if (fboundp 'zmacs-deactivate-region) (zmacs-deactivate-region))
2278 (if (and (re-search-forward (concat "^" outline-regexp) nil t) 2377 (if (and (re-search-forward (concat "^" outline-regexp) nil t)
2279 (< (point) end)) 2378 (< (point) end))
2280 (funcall fun)) 2379 (funcall fun))
@@ -2605,9 +2704,10 @@ At all other locations, this simply calls `ispell-complete-word'."
2605 (let* ((end (point)) 2704 (let* ((end (point))
2606 (beg (save-excursion 2705 (beg (save-excursion
2607 (if (equal (char-before (point)) ?\ ) (backward-char 1)) 2706 (if (equal (char-before (point)) ?\ ) (backward-char 1))
2608 (skip-chars-backward "a-zA-Z0-9_:") 2707 (skip-chars-backward "a-zA-Z0-9_:$")
2609 (point))) 2708 (point)))
2610 (texp (equal (char-before beg) ?\\)) 2709 (texp (equal (char-before beg) ?\\))
2710 (form (equal (char-before beg) ?=))
2611 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2)) 2711 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
2612 beg) 2712 beg)
2613 "#+")) 2713 "#+"))
@@ -2624,6 +2724,9 @@ At all other locations, this simply calls `ispell-complete-word'."
2624 (texp 2724 (texp
2625 (setq type :tex) 2725 (setq type :tex)
2626 org-html-entities) 2726 org-html-entities)
2727 (form
2728 (setq type :form)
2729 '(("sum") ("sumv") ("sumh")))
2627 ((string-match "\\`\\*+[ \t]*\\'" 2730 ((string-match "\\`\\*+[ \t]*\\'"
2628 (buffer-substring (point-at-bol) beg)) 2731 (buffer-substring (point-at-bol) beg))
2629 (setq type :todo) 2732 (setq type :todo)
@@ -2776,7 +2879,7 @@ to modify it to the correct date."
2776The tree will show the lines where the regexp matches, and all higher 2879The tree will show the lines where the regexp matches, and all higher
2777headlines above the match. It will also show the heading after the match, 2880headlines above the match. It will also show the heading after the match,
2778to make sure editing the matching entry is easy. 2881to make sure editing the matching entry is easy.
2779if CALLBACK is non-nil, it is a function which is called to confirm 2882If CALLBACK is non-nil, it is a function which is called to confirm
2780that the match should indeed be shown." 2883that the match should indeed be shown."
2781 (interactive "sRegexp: ") 2884 (interactive "sRegexp: ")
2782 (setq regexp (org-check-occur-regexp regexp)) 2885 (setq regexp (org-check-occur-regexp regexp))
@@ -3047,7 +3150,7 @@ used to insert the time stamp into the buffer to include the time."
3047 3150
3048(defun org-eval-in-calendar (form) 3151(defun org-eval-in-calendar (form)
3049 "Eval FORM in the calendar window and return to current window. 3152 "Eval FORM in the calendar window and return to current window.
3050Also, store the cursor date in variable ans2." 3153Also, store the cursor date in variable `ans2'."
3051 (let ((sw (selected-window))) 3154 (let ((sw (selected-window)))
3052 (select-window (get-buffer-window "*Calendar*")) 3155 (select-window (get-buffer-window "*Calendar*"))
3053 (eval form) 3156 (eval form)
@@ -3221,7 +3324,7 @@ With prefix ARG, change that many days."
3221 (>= (match-end n) pos))) 3324 (>= (match-end n) pos)))
3222 3325
3223(defun org-at-timestamp-p () 3326(defun org-at-timestamp-p ()
3224 "Determine if the cursor is or at a timestamp." 3327 "Determine if the cursor is at a timestamp."
3225 (interactive) 3328 (interactive)
3226 (let* ((tsr org-ts-regexp2) 3329 (let* ((tsr org-ts-regexp2)
3227 (pos (point)) 3330 (pos (point))
@@ -3378,7 +3481,8 @@ The following commands are available:
3378(define-key org-agenda-mode-map "l" 'org-agenda-recenter) 3481(define-key org-agenda-mode-map "l" 'org-agenda-recenter)
3379(define-key org-agenda-mode-map "t" 'org-agenda-todo) 3482(define-key org-agenda-mode-map "t" 'org-agenda-todo)
3380(define-key org-agenda-mode-map "." 'org-agenda-goto-today) 3483(define-key org-agenda-mode-map "." 'org-agenda-goto-today)
3381(define-key org-agenda-mode-map "w" 'org-agenda-toggle-week-view) 3484(define-key org-agenda-mode-map "d" 'org-agenda-day-view)
3485(define-key org-agenda-mode-map "w" 'org-agenda-week-view)
3382(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later) 3486(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later)
3383(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier) 3487(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier)
3384 3488
@@ -3388,7 +3492,7 @@ The following commands are available:
3388 (int-to-string (pop l)) 'digit-argument))) 3492 (int-to-string (pop l)) 'digit-argument)))
3389 3493
3390(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode) 3494(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode)
3391(define-key org-agenda-mode-map "d" 'org-agenda-toggle-diary) 3495(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary)
3392(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid) 3496(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
3393(define-key org-agenda-mode-map "r" 'org-agenda-redo) 3497(define-key org-agenda-mode-map "r" 'org-agenda-redo)
3394(define-key org-agenda-mode-map "q" 'org-agenda-quit) 3498(define-key org-agenda-mode-map "q" 'org-agenda-quit)
@@ -3454,8 +3558,11 @@ The following commands are available:
3454 ["Next Dates" org-agenda-later (local-variable-p 'starting-day)] 3558 ["Next Dates" org-agenda-later (local-variable-p 'starting-day)]
3455 ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)] 3559 ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)]
3456 "--" 3560 "--"
3457 ["Week/Day View" org-agenda-toggle-week-view 3561 ["Day View" org-agenda-day-view :active (local-variable-p 'starting-day)
3458 (local-variable-p 'starting-day)] 3562 :style radio :selected (equal org-agenda-ndays 1)]
3563 ["Week View" org-agenda-week-view :active (local-variable-p 'starting-day)
3564 :style radio :selected (equal org-agenda-ndays 7)]
3565 "--"
3459 ["Include Diary" org-agenda-toggle-diary 3566 ["Include Diary" org-agenda-toggle-diary
3460 :style toggle :selected org-agenda-include-diary :active t] 3567 :style toggle :selected org-agenda-include-diary :active t]
3461 ["Use Time Grid" org-agenda-toggle-time-grid 3568 ["Use Time Grid" org-agenda-toggle-time-grid
@@ -3784,19 +3891,29 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3784 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil) 3891 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil)
3785 (- starting-day (* arg org-agenda-ndays)))) 3892 (- starting-day (* arg org-agenda-ndays))))
3786 3893
3787(defun org-agenda-toggle-week-view () 3894(defun org-agenda-week-view ()
3788 "Toggle weekly/daily view for aagenda." 3895 "Switch to weekly view for agenda."
3896 (interactive)
3897 (unless (boundp 'starting-day)
3898 (error "Not allowed"))
3899 (setq org-agenda-ndays 7)
3900 (org-agenda include-all-loc
3901 (or (get-text-property (point) 'day)
3902 starting-day))
3903 (org-agenda-set-mode-name)
3904 (message "Switched to week view"))
3905
3906(defun org-agenda-day-view ()
3907 "Switch to daily view for agenda."
3789 (interactive) 3908 (interactive)
3790 (unless (boundp 'starting-day) 3909 (unless (boundp 'starting-day)
3791 (error "Not allowed")) 3910 (error "Not allowed"))
3792 (setq org-agenda-ndays 3911 (setq org-agenda-ndays 1)
3793 (if (equal org-agenda-ndays 1) 7 1))
3794 (org-agenda include-all-loc 3912 (org-agenda include-all-loc
3795 (or (get-text-property (point) 'day) 3913 (or (get-text-property (point) 'day)
3796 starting-day)) 3914 starting-day))
3797 (org-agenda-set-mode-name) 3915 (org-agenda-set-mode-name)
3798 (message "Switched to %s view" 3916 (message "Switched to day view"))
3799 (if (equal org-agenda-ndays 1) "day" "week")))
3800 3917
3801(defun org-agenda-next-date-line (&optional arg) 3918(defun org-agenda-next-date-line (&optional arg)
3802 "Jump to the next line indicating a date in agenda buffer." 3919 "Jump to the next line indicating a date in agenda buffer."
@@ -3840,7 +3957,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3840 (if org-agenda-follow-mode "on" "off"))) 3957 (if org-agenda-follow-mode "on" "off")))
3841 3958
3842(defun org-agenda-toggle-diary () 3959(defun org-agenda-toggle-diary ()
3843 "Toggle follow mode in an agenda buffer." 3960 "Toggle diary inclusion in an agenda buffer."
3844 (interactive) 3961 (interactive)
3845 (setq org-agenda-include-diary (not org-agenda-include-diary)) 3962 (setq org-agenda-include-diary (not org-agenda-include-diary))
3846 (org-agenda-redo) 3963 (org-agenda-redo)
@@ -3849,7 +3966,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3849 (if org-agenda-include-diary "on" "off"))) 3966 (if org-agenda-include-diary "on" "off")))
3850 3967
3851(defun org-agenda-toggle-time-grid () 3968(defun org-agenda-toggle-time-grid ()
3852 "Toggle follow mode in an agenda buffer." 3969 "Toggle time-grid in an agenda buffer."
3853 (interactive) 3970 (interactive)
3854 (setq org-agenda-use-time-grid (not org-agenda-use-time-grid)) 3971 (setq org-agenda-use-time-grid (not org-agenda-use-time-grid))
3855 (org-agenda-redo) 3972 (org-agenda-redo)
@@ -3917,10 +4034,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3917 entries))))) 4034 entries)))))
3918 4035
3919(defun org-agenda-cleanup-fancy-diary () 4036(defun org-agenda-cleanup-fancy-diary ()
3920 "Remove unwanted stuff in buffer created by fancy-diary-display. 4037 "Remove unwanted stuff in buffer created by `fancy-diary-display'.
3921This gets rid of the date, the underline under the date, and 4038This gets rid of the date, the underline under the date, and
3922the dummy entry installed by `org-mode' to ensure non-empty diary for each 4039the dummy entry installed by `org-mode' to ensure non-empty diary for each
3923date. Itt also removes lines that contain only whitespace." 4040date. It also removes lines that contain only whitespace."
3924 (goto-char (point-min)) 4041 (goto-char (point-min))
3925 (if (looking-at ".*?:[ \t]*") 4042 (if (looking-at ".*?:[ \t]*")
3926 (progn 4043 (progn
@@ -4091,7 +4208,7 @@ The function expects the lisp variables `entry' and `date' to be provided
4091by the caller, because this is how the calendar works. Don't use this 4208by the caller, because this is how the calendar works. Don't use this
4092function from a program - use `org-agenda-get-day-entries' instead." 4209function from a program - use `org-agenda-get-day-entries' instead."
4093 (org-agenda-maybe-reset-markers) 4210 (org-agenda-maybe-reset-markers)
4094 (org-compile-agenda-prefix-format org-agenda-prefix-format) 4211 (org-compile-prefix-format org-agenda-prefix-format)
4095 (setq args (or args '(:deadline :scheduled :timestamp))) 4212 (setq args (or args '(:deadline :scheduled :timestamp)))
4096 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) 4213 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
4097 (list entry) 4214 (list entry)
@@ -4214,7 +4331,7 @@ the documentation of `org-diary'."
4214 (nreverse ee))) 4331 (nreverse ee)))
4215 4332
4216(defconst org-agenda-no-heading-message 4333(defconst org-agenda-no-heading-message
4217 "No heading for this item in buffer or region") 4334 "No heading for this item in buffer or region.")
4218 4335
4219(defun org-agenda-get-timestamps () 4336(defun org-agenda-get-timestamps ()
4220 "Return the date stamp information for agenda display." 4337 "Return the date stamp information for agenda display."
@@ -4625,7 +4742,7 @@ HH:MM."
4625 (mapconcat 'identity (sort list 'org-entries-lessp) "\n")) 4742 (mapconcat 'identity (sort list 'org-entries-lessp) "\n"))
4626 4743
4627(defsubst org-cmp-priority (a b) 4744(defsubst org-cmp-priority (a b)
4628 "Compare the priorities of string a and b." 4745 "Compare the priorities of strings A and B."
4629 (let ((pa (or (get-text-property 1 'priority a) 0)) 4746 (let ((pa (or (get-text-property 1 'priority a) 0))
4630 (pb (or (get-text-property 1 'priority b) 0))) 4747 (pb (or (get-text-property 1 'priority b) 0)))
4631 (cond ((> pa pb) +1) 4748 (cond ((> pa pb) +1)
@@ -4633,7 +4750,7 @@ HH:MM."
4633 (t nil)))) 4750 (t nil))))
4634 4751
4635(defsubst org-cmp-category (a b) 4752(defsubst org-cmp-category (a b)
4636 "Compare the string values of categories of strings a and b." 4753 "Compare the string values of categories of strings A and B."
4637 (let ((ca (or (get-text-property 1 'category a) "")) 4754 (let ((ca (or (get-text-property 1 'category a) ""))
4638 (cb (or (get-text-property 1 'category b) ""))) 4755 (cb (or (get-text-property 1 'category b) "")))
4639 (cond ((string-lessp ca cb) -1) 4756 (cond ((string-lessp ca cb) -1)
@@ -4641,7 +4758,7 @@ HH:MM."
4641 (t nil)))) 4758 (t nil))))
4642 4759
4643(defsubst org-cmp-time (a b) 4760(defsubst org-cmp-time (a b)
4644 "Compare the time-of-day values of strings a and b." 4761 "Compare the time-of-day values of strings A and B."
4645 (let* ((def (if org-sort-agenda-notime-is-late 2401 -1)) 4762 (let* ((def (if org-sort-agenda-notime-is-late 2401 -1))
4646 (ta (or (get-text-property 1 'time-of-day a) def)) 4763 (ta (or (get-text-property 1 'time-of-day a) def))
4647 (tb (or (get-text-property 1 'time-of-day b) def))) 4764 (tb (or (get-text-property 1 'time-of-day b) def)))
@@ -4777,7 +4894,7 @@ the same tree node, and the headline of the tree node in the Org-mode file."
4777 (move-to-column col))) 4894 (move-to-column col)))
4778 4895
4779(defun org-agenda-change-all-lines (newhead hdmarker &optional fixface) 4896(defun org-agenda-change-all-lines (newhead hdmarker &optional fixface)
4780 "Change all lines in the agenda buffer which match hdmarker. 4897 "Change all lines in the agenda buffer which match HDMARKER.
4781The new content of the line will be NEWHEAD (as modified by 4898The new content of the line will be NEWHEAD (as modified by
4782`org-format-agenda-item'). HDMARKER is checked with 4899`org-format-agenda-item'). HDMARKER is checked with
4783`equal' against all `org-hd-marker' text properties in the file. 4900`equal' against all `org-hd-marker' text properties in the file.
@@ -4899,7 +5016,7 @@ be used to request time specification in the time stamp."
4899 5016
4900(defun org-agenda-diary-entry () 5017(defun org-agenda-diary-entry ()
4901 "Make a diary entry, like the `i' command from the calendar. 5018 "Make a diary entry, like the `i' command from the calendar.
4902All the standard commands work: block, weekly etc" 5019All the standard commands work: block, weekly etc."
4903 (interactive) 5020 (interactive)
4904 (require 'diary-lib) 5021 (require 'diary-lib)
4905 (let* ((char (progn 5022 (let* ((char (progn
@@ -5437,7 +5554,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5437 (if a (not b) b)) 5554 (if a (not b) b))
5438 5555
5439(defun org-get-header (header) 5556(defun org-get-header (header)
5440 "Find a header field in the current buffer." 5557 "Find a HEADER field in the current buffer."
5441 (save-excursion 5558 (save-excursion
5442 (goto-char (point-min)) 5559 (goto-char (point-min))
5443 (let ((case-fold-search t) s) 5560 (let ((case-fold-search t) s)
@@ -5546,7 +5663,7 @@ conventions in Org-mode. This function returns such a link."
5546UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store 5663UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store
5547RET at beg-of-buf -> Append to file as level 2 headline 5664RET at beg-of-buf -> Append to file as level 2 headline
5548RET on headline -> Store as sublevel entry to current headline 5665RET on headline -> Store as sublevel entry to current headline
5549<left>/<right> -> before/after current headline, same headings level") 5666<left>/<right> -> Before/after current headline, same headings level")
5550 5667
5551;;;###autoload 5668;;;###autoload
5552(defun org-remember-handler () 5669(defun org-remember-handler ()
@@ -5687,6 +5804,10 @@ See also the variable `org-reverse-note-order'."
5687 "Detects an org-type table line.") 5804 "Detects an org-type table line.")
5688(defconst org-table-dataline-regexp "^[ \t]*|[^-]" 5805(defconst org-table-dataline-regexp "^[ \t]*|[^-]"
5689 "Detects an org-type table line.") 5806 "Detects an org-type table line.")
5807(defconst org-table-auto-recalculate-regexp "^[ \t]*| *# *\\(|\\|$\\)"
5808 "Detects a table line marked for automatic recalculation.")
5809(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)"
5810 "Detects a table line marked for automatic recalculation.")
5690(defconst org-table-hline-regexp "^[ \t]*|-" 5811(defconst org-table-hline-regexp "^[ \t]*|-"
5691 "Detects an org-type table hline.") 5812 "Detects an org-type table hline.")
5692(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]" 5813(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]"
@@ -5752,7 +5873,7 @@ SIZE is a string Columns x Rows like for example \"3x2\"."
5752The region goes from BEG0 to END0, but these borders will be moved 5873The region goes from BEG0 to END0, but these borders will be moved
5753slightly, to make sure a beginning of line in the first line is included. 5874slightly, to make sure a beginning of line in the first line is included.
5754When NSPACE is non-nil, it indicates the minimum number of spaces that 5875When NSPACE is non-nil, it indicates the minimum number of spaces that
5755separate columns (default: just one space)" 5876separate columns (default: just one space)."
5756 (let* ((beg (min beg0 end0)) 5877 (let* ((beg (min beg0 end0))
5757 (end (max beg0 end0)) 5878 (end (max beg0 end0))
5758 (tabsep t) 5879 (tabsep t)
@@ -5843,6 +5964,7 @@ This is being used to correctly align a single field after TAB or RET.")
5843 "List of max width of fields in each column. 5964 "List of max width of fields in each column.
5844This is being used to correctly align a single field after TAB or RET.") 5965This is being used to correctly align a single field after TAB or RET.")
5845 5966
5967(defvar org-last-recalc-line nil)
5846 5968
5847(defun org-table-align () 5969(defun org-table-align ()
5848 "Align the table at point by aligning all vertical bars." 5970 "Align the table at point by aligning all vertical bars."
@@ -5878,7 +6000,12 @@ This is being used to correctly align a single field after TAB or RET.")
5878 (if (string-match "^ *" (car lines)) 6000 (if (string-match "^ *" (car lines))
5879 (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ ))) 6001 (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
5880 ;; Mark the hlines 6002 ;; Mark the hlines
5881 (setq lines (mapcar (lambda (l) (if (string-match "^ *|-" l) nil l)) 6003 (setq lines (mapcar (lambda (l)
6004 (if (string-match "^ *|-" l)
6005 nil
6006 (if (string-match "[ \t]+$" l)
6007 (substring l 0 (match-beginning 0))
6008 l)))
5882 lines)) 6009 lines))
5883 ;; Get the data fields 6010 ;; Get the data fields
5884 (setq fields (mapcar 6011 (setq fields (mapcar
@@ -5994,15 +6121,17 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
5994 (let* ((pos (point)) s org-table-may-need-update 6121 (let* ((pos (point)) s org-table-may-need-update
5995 (col (org-table-current-column)) 6122 (col (org-table-current-column))
5996 (num (nth (1- col) org-table-last-alignment)) 6123 (num (nth (1- col) org-table-last-alignment))
5997 l f) 6124 l f n o)
5998 (when (> col 0) 6125 (when (> col 0)
5999 (skip-chars-backward "^|\n") 6126 (skip-chars-backward "^|\n")
6000 (if (looking-at " *\\([^|\n]*?\\) *|") 6127 (if (looking-at " *\\([^|\n]*?\\) *|")
6001 (progn 6128 (progn
6002 (setq s (match-string 1) 6129 (setq s (match-string 1)
6130 o (match-string 0)
6003 l (max 1 (- (match-end 0) (match-beginning 0) 3))) 6131 l (max 1 (- (match-end 0) (match-beginning 0) 3)))
6004 (setq f (format (if num " %%%ds |" " %%-%ds |") l)) 6132 (setq f (format (if num " %%%ds |" " %%-%ds |") l)
6005 (replace-match (format f s t t))) 6133 n (format f s t t))
6134 (or (equal n o) (replace-match n)))
6006 (setq org-table-may-need-update t)) 6135 (setq org-table-may-need-update t))
6007 (goto-char pos)))))) 6136 (goto-char pos))))))
6008 6137
@@ -6010,6 +6139,8 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
6010 "Go to the next field in the current table. 6139 "Go to the next field in the current table.
6011Before doing so, re-align the table if necessary." 6140Before doing so, re-align the table if necessary."
6012 (interactive) 6141 (interactive)
6142 (org-table-maybe-eval-formula)
6143 (org-table-maybe-recalculate-line)
6013 (if (and org-table-automatic-realign 6144 (if (and org-table-automatic-realign
6014 org-table-may-need-update) 6145 org-table-may-need-update)
6015 (org-table-align)) 6146 (org-table-align))
@@ -6032,6 +6163,8 @@ Before doing so, re-align the table if necessary."
6032 "Go to the previous field in the table. 6163 "Go to the previous field in the table.
6033Before doing so, re-align the table if necessary." 6164Before doing so, re-align the table if necessary."
6034 (interactive) 6165 (interactive)
6166 (org-table-justify-field-maybe)
6167 (org-table-maybe-recalculate-line)
6035 (if (and org-table-automatic-realign 6168 (if (and org-table-automatic-realign
6036 org-table-may-need-update) 6169 org-table-may-need-update)
6037 (org-table-align)) 6170 (org-table-align))
@@ -6048,6 +6181,8 @@ Before doing so, re-align the table if necessary."
6048 "Go to the next row (same column) in the current table. 6181 "Go to the next row (same column) in the current table.
6049Before doing so, re-align the table if necessary." 6182Before doing so, re-align the table if necessary."
6050 (interactive) 6183 (interactive)
6184 (org-table-maybe-eval-formula)
6185 (org-table-maybe-recalculate-line)
6051 (if (or (looking-at "[ \t]*$") 6186 (if (or (looking-at "[ \t]*$")
6052 (save-excursion (skip-chars-backward " \t") (bolp))) 6187 (save-excursion (skip-chars-backward " \t") (bolp)))
6053 (newline) 6188 (newline)
@@ -6081,23 +6216,29 @@ integer, it will be incremented while copying."
6081 (beg (org-table-begin)) 6216 (beg (org-table-begin))
6082 txt) 6217 txt)
6083 (org-table-check-inside-data-field) 6218 (org-table-check-inside-data-field)
6084 (if non-empty (progn (org-table-next-row) (org-table-blank-field))) 6219 (if non-empty
6085 (if (save-excursion 6220 (progn
6086 (setq txt 6221 (setq txt (org-trim field))
6087 (catch 'exit 6222 (org-table-next-row)
6088 (while (progn (beginning-of-line 1) 6223 (org-table-blank-field))
6089 (re-search-backward org-table-dataline-regexp 6224 (save-excursion
6090 beg t)) 6225 (setq txt
6091 (org-table-goto-column colpos t) 6226 (catch 'exit
6092 (if (and (looking-at 6227 (while (progn (beginning-of-line 1)
6093 "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") 6228 (re-search-backward org-table-dataline-regexp
6094 (= (setq n (1- n)) 0)) 6229 beg t))
6095 (throw 'exit (match-string 1))))))) 6230 (org-table-goto-column colpos t)
6231 (if (and (looking-at
6232 "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|")
6233 (= (setq n (1- n)) 0))
6234 (throw 'exit (match-string 1))))))))
6235 (if txt
6096 (progn 6236 (progn
6097 (if (and org-table-copy-increment 6237 (if (and org-table-copy-increment
6098 (string-match "^[0-9]+$" txt)) 6238 (string-match "^[0-9]+$" txt))
6099 (setq txt (format "%d" (+ (string-to-int txt) 1)))) 6239 (setq txt (format "%d" (+ (string-to-int txt) 1))))
6100 (insert txt) 6240 (insert txt)
6241 (org-table-maybe-recalculate-line)
6101 (org-table-align)) 6242 (org-table-align))
6102 (error "No non-empty field found")))) 6243 (error "No non-empty field found"))))
6103 6244
@@ -6119,10 +6260,10 @@ I.e. not on a hline or before the first or after the last column?"
6119 (org-table-check-inside-data-field) 6260 (org-table-check-inside-data-field)
6120 (if (and (interactive-p) (org-region-active-p)) 6261 (if (and (interactive-p) (org-region-active-p))
6121 (let (org-table-clip) 6262 (let (org-table-clip)
6122 (org-table-cut-region)) 6263 (org-table-cut-region (region-beginning) (region-end)))
6123 (skip-chars-backward "^|") 6264 (skip-chars-backward "^|")
6124 (backward-char 1) 6265 (backward-char 1)
6125 (if (looking-at "|[^|]+") 6266 (if (looking-at "|[^|\n]+")
6126 (let* ((pos (match-beginning 0)) 6267 (let* ((pos (match-beginning 0))
6127 (match (match-string 0)) 6268 (match (match-string 0))
6128 (len (length match))) 6269 (len (length match)))
@@ -6136,15 +6277,16 @@ N defaults to current field.
6136If REPLACE is a string, replace field with this value. The return value 6277If REPLACE is a string, replace field with this value. The return value
6137is always the old value." 6278is always the old value."
6138 (and n (org-table-goto-column n)) 6279 (and n (org-table-goto-column n))
6139 (skip-chars-backward "^|") 6280 (skip-chars-backward "^|\n")
6140 (backward-char 1) 6281 (backward-char 1)
6141 (if (looking-at "|[^|\r\n]*") 6282 (if (looking-at "|[^|\r\n]*")
6142 (let* ((pos (match-beginning 0)) 6283 (let* ((pos (match-beginning 0))
6143 (val (buffer-substring (1+ pos) (match-end 0)))) 6284 (val (buffer-substring (1+ pos) (match-end 0))))
6144 (if replace 6285 (if replace
6145 (replace-match (concat "|" replace))) 6286 (replace-match (concat "|" replace)))
6146 (goto-char (+ 2 pos)) 6287 (goto-char (min (point-at-eol) (+ 2 pos)))
6147 val))) 6288 val)
6289 (forward-char 1) ""))
6148 6290
6149(defun org-table-current-column () 6291(defun org-table-current-column ()
6150 "Find out which column we are in. 6292 "Find out which column we are in.
@@ -6173,17 +6315,17 @@ However, when FORCE is non-nil, create new columns if necessary."
6173 (and force 6315 (and force
6174 (progn (end-of-line 1) 6316 (progn (end-of-line 1)
6175 (skip-chars-backward "^|") 6317 (skip-chars-backward "^|")
6176 (insert " |") 6318 (insert " | "))))))
6177 (backward-char 2) t))))) 6319; (backward-char 2) t)))))
6178 (when (and force (not (looking-at ".*|"))) 6320 (when (and force (not (looking-at ".*|")))
6179 (save-excursion (end-of-line 1) (insert "|"))) 6321 (save-excursion (end-of-line 1) (insert " | ")))
6180 (if on-delim 6322 (if on-delim
6181 (backward-char 1) 6323 (backward-char 1)
6182 (if (looking-at " ") (forward-char 1)))))) 6324 (if (looking-at " ") (forward-char 1))))))
6183 6325
6184(defun org-at-table-p (&optional table-type) 6326(defun org-at-table-p (&optional table-type)
6185 "Return t if the cursor is inside an org-type table. 6327 "Return t if the cursor is inside an org-type table.
6186If TABLE-TYPE is non-nil, also chack for table.el-type tables." 6328If TABLE-TYPE is non-nil, also check for table.el-type tables."
6187 (if org-enable-table-editor 6329 (if org-enable-table-editor
6188 (save-excursion 6330 (save-excursion
6189 (beginning-of-line 1) 6331 (beginning-of-line 1)
@@ -6255,8 +6397,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6255 (beginning-of-line 2)) 6397 (beginning-of-line 2))
6256 (move-marker end nil) 6398 (move-marker end nil)
6257 (goto-line linepos) 6399 (goto-line linepos)
6258 (org-table-goto-column colpos)) 6400 (org-table-goto-column colpos)
6259 (org-table-align)) 6401 (org-table-align)
6402 (org-table-modify-formulas 'insert col)))
6260 6403
6261(defun org-table-find-dataline () 6404(defun org-table-find-dataline ()
6262 "Find a dataline in the current table, which is needed for column commands." 6405 "Find a dataline in the current table, which is needed for column commands."
@@ -6300,8 +6443,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6300 (beginning-of-line 2)) 6443 (beginning-of-line 2))
6301 (move-marker end nil) 6444 (move-marker end nil)
6302 (goto-line linepos) 6445 (goto-line linepos)
6303 (org-table-goto-column colpos)) 6446 (org-table-goto-column colpos)
6304 (org-table-align)) 6447 (org-table-align)
6448 (org-table-modify-formulas 'remove col)))
6305 6449
6306(defun org-table-move-column-right () 6450(defun org-table-move-column-right ()
6307 "Move column to the right." 6451 "Move column to the right."
@@ -6340,8 +6484,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6340 (beginning-of-line 2)) 6484 (beginning-of-line 2))
6341 (move-marker end nil) 6485 (move-marker end nil)
6342 (goto-line linepos) 6486 (goto-line linepos)
6343 (org-table-goto-column colpos)) 6487 (org-table-goto-column colpos)
6344 (org-table-align)) 6488 (org-table-align)
6489 (org-table-modify-formulas 'swap col (if left (1- col) (1+ col)))))
6345 6490
6346(defun org-table-move-row-down () 6491(defun org-table-move-row-down ()
6347 "Move table row down." 6492 "Move table row down."
@@ -6380,13 +6525,18 @@ With prefix ARG, insert below the current line."
6380 (interactive "P") 6525 (interactive "P")
6381 (if (not (org-at-table-p)) 6526 (if (not (org-at-table-p))
6382 (error "Not at a table")) 6527 (error "Not at a table"))
6383 (let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))) 6528 (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))
6529 new)
6384 (if (string-match "^[ \t]*|-" line) 6530 (if (string-match "^[ \t]*|-" line)
6385 (setq line (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line)) 6531 (setq new (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line))
6386 (setq line (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line))) 6532 (setq new (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line)))
6533 ;; Fix the first field if necessary
6534 (setq new (concat new))
6535 (if (string-match "^[ \t]*| *[#$] *|" line)
6536 (setq new (replace-match (match-string 0 line) t t new)))
6387 (beginning-of-line (if arg 2 1)) 6537 (beginning-of-line (if arg 2 1))
6388 (let (org-table-may-need-update) 6538 (let (org-table-may-need-update)
6389 (apply 'insert-before-markers line) 6539 (insert-before-markers new)
6390 (insert-before-markers "\n")) 6540 (insert-before-markers "\n"))
6391 (beginning-of-line 0) 6541 (beginning-of-line 0)
6392 (re-search-forward "| ?" (point-at-eol) t) 6542 (re-search-forward "| ?" (point-at-eol) t)
@@ -6431,20 +6581,17 @@ With prefix ARG, insert above the current line."
6431 (move-to-column col))) 6581 (move-to-column col)))
6432 6582
6433 6583
6434(defun org-table-cut-region () 6584(defun org-table-cut-region (beg end)
6435 "Copy region in table to the clipboard and blank all relevant fields." 6585 "Copy region in table to the clipboard and blank all relevant fields."
6436 (interactive) 6586 (interactive "r")
6437 (org-table-copy-region 'cut)) 6587 (org-table-copy-region beg end 'cut))
6438 6588
6439(defun org-table-copy-region (&optional cut) 6589(defun org-table-copy-region (beg end &optional cut)
6440 "Copy rectangular region in table to clipboard. 6590 "Copy rectangular region in table to clipboard.
6441A special clipboard is used which can only be accessed 6591A special clipboard is used which can only be accessed
6442with `org-table-paste-rectangle'" 6592with `org-table-paste-rectangle'."
6443 (interactive "P") 6593 (interactive "rP")
6444 (unless (org-region-active-p) (error "No active region")) 6594 (let* (l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
6445 (let* ((beg (region-beginning))
6446 (end (region-end))
6447 l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
6448 region cols 6595 region cols
6449 (rpl (if cut " " nil))) 6596 (rpl (if cut " " nil)))
6450 (goto-char beg) 6597 (goto-char beg)
@@ -6470,7 +6617,8 @@ with `org-table-paste-rectangle'"
6470 (push (nreverse cols) region) 6617 (push (nreverse cols) region)
6471 (setq l1 (1+ l1))))) 6618 (setq l1 (1+ l1)))))
6472 (setq org-table-clip (nreverse region)) 6619 (setq org-table-clip (nreverse region))
6473 (if cut (org-table-align)))) 6620 (if cut (org-table-align))
6621 org-table-clip))
6474 6622
6475(defun org-table-paste-rectangle () 6623(defun org-table-paste-rectangle ()
6476 "Paste a rectangular region into a table. 6624 "Paste a rectangular region into a table.
@@ -6574,7 +6722,7 @@ blank, and the content is appended to the field above."
6574 ;; There is a region: fill as a paragraph 6722 ;; There is a region: fill as a paragraph
6575 (let ((beg (region-beginning)) 6723 (let ((beg (region-beginning))
6576 nlines) 6724 nlines)
6577 (org-table-cut-region) 6725 (org-table-cut-region (region-beginning) (region-end))
6578 (if (> (length (car org-table-clip)) 1) 6726 (if (> (length (car org-table-clip)) 1)
6579 (error "Region must be limited to single column")) 6727 (error "Region must be limited to single column"))
6580 (setq nlines (if arg 6728 (setq nlines (if arg
@@ -6611,7 +6759,8 @@ blank, and the content is appended to the field above."
6611(defun org-trim (s) 6759(defun org-trim (s)
6612 "Remove whitespace at beginning and end of string." 6760 "Remove whitespace at beginning and end of string."
6613 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s))) 6761 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s)))
6614 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))) 6762 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))
6763 s)
6615 6764
6616(defun org-wrap (string &optional width lines) 6765(defun org-wrap (string &optional width lines)
6617 "Wrap string to either a number of lines, or a width in characters. 6766 "Wrap string to either a number of lines, or a width in characters.
@@ -6701,7 +6850,7 @@ and end of string."
6701 "Toggle the visibility of table vertical lines. 6850 "Toggle the visibility of table vertical lines.
6702The effect is immediate and on all tables in the file. 6851The effect is immediate and on all tables in the file.
6703With prefix ARG, make lines invisible when ARG is positive, make lines 6852With prefix ARG, make lines invisible when ARG is positive, make lines
6704visible when ARG is not positive" 6853visible when ARG is not positive."
6705 (interactive "P") 6854 (interactive "P")
6706 (let ((action (cond 6855 (let ((action (cond
6707 ((and arg (> (prefix-numeric-value arg) 0)) 'on) 6856 ((and arg (> (prefix-numeric-value arg) 0)) 'on)
@@ -6734,7 +6883,7 @@ visible when ARG is not positive"
6734 (save-excursion (funcall function))) 6883 (save-excursion (funcall function)))
6735 (re-search-forward org-table-any-border-regexp nil 1))))) 6884 (re-search-forward org-table-any-border-regexp nil 1)))))
6736 6885
6737(defun org-table-sum () 6886(defun org-table-sum (&optional beg end nlast)
6738 "Sum numbers in region of current table column. 6887 "Sum numbers in region of current table column.
6739The result will be displayed in the echo area, and will be available 6888The result will be displayed in the echo area, and will be available
6740as kill to be inserted with \\[yank]. 6889as kill to be inserted with \\[yank].
@@ -6746,35 +6895,38 @@ column.
6746 6895
6747If at least one number looks like a time HH:MM or HH:MM:SS, all other 6896If at least one number looks like a time HH:MM or HH:MM:SS, all other
6748numbers are assumed to be times as well (in decimal hours) and the 6897numbers are assumed to be times as well (in decimal hours) and the
6749numbers are added as such." 6898numbers are added as such.
6899
6900If NLAST is a number, only the NLAST fields will actually be summed."
6750 (interactive) 6901 (interactive)
6751 (save-excursion 6902 (save-excursion
6752 (let (beg end col (timecnt 0) diff h m s) 6903 (let (col (timecnt 0) diff h m s org-table-clip)
6753 (if (org-region-active-p) 6904 (cond
6754 (setq beg (region-beginning) end (region-end)) 6905 ((and beg end)) ; beg and end given explicitly
6906 ((org-region-active-p)
6907 (setq beg (region-beginning) end (region-end)))
6908 (t
6755 (setq col (org-table-current-column)) 6909 (setq col (org-table-current-column))
6756 (goto-char (org-table-begin)) 6910 (goto-char (org-table-begin))
6757 (unless (re-search-forward "^[ \t]*|[^-]" nil t) 6911 (unless (re-search-forward "^[ \t]*|[^-]" nil t)
6758 (error "No table data")) 6912 (error "No table data"))
6759 (org-table-goto-column col) 6913 (org-table-goto-column col)
6760 (skip-chars-backward "^|") 6914;not needed? (skip-chars-backward "^|")
6761 (setq beg (point)) 6915 (setq beg (point))
6762 (goto-char (org-table-end)) 6916 (goto-char (org-table-end))
6763 (unless (re-search-backward "^[ \t]*|[^-]" nil t) 6917 (unless (re-search-backward "^[ \t]*|[^-]" nil t)
6764 (error "No table data")) 6918 (error "No table data"))
6765 (org-table-goto-column col) 6919 (org-table-goto-column col)
6766 (skip-chars-forward "^|") 6920;not needed? (skip-chars-forward "^|")
6767 (setq end (point))) 6921 (setq end (point))))
6768 (let* ((l1 (progn (goto-char beg) 6922 (let* ((items (apply 'append (org-table-copy-region beg end)))
6769 (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) 6923 (items1 (cond ((not nlast) items)
6770 (l2 (progn (goto-char end) 6924 ((>= nlast (length items)) items)
6771 (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) 6925 (t (setq items (reverse items))
6772 (items (if (= l1 l2) 6926 (setcdr (nthcdr (1- nlast) items) nil)
6773 (split-string (buffer-substring beg end)) 6927 (nreverse items))))
6774 (split-string
6775 (mapconcat 'identity (extract-rectangle beg end) " "))))
6776 (numbers (delq nil (mapcar 'org-table-get-number-for-summing 6928 (numbers (delq nil (mapcar 'org-table-get-number-for-summing
6777 items))) 6929 items1)))
6778 (res (apply '+ numbers)) 6930 (res (apply '+ numbers))
6779 (sres (if (= timecnt 0) 6931 (sres (if (= timecnt 0)
6780 (format "%g" res) 6932 (format "%g" res)
@@ -6784,9 +6936,11 @@ numbers are added as such."
6784 s diff) 6936 s diff)
6785 (format "%d:%02d:%02d" h m s)))) 6937 (format "%d:%02d:%02d" h m s))))
6786 (kill-new sres) 6938 (kill-new sres)
6787 (message (substitute-command-keys 6939 (if (interactive-p)
6788 (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)" 6940 (message (substitute-command-keys
6789 (length numbers) sres))))))) 6941 (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)"
6942 (length numbers) sres))))
6943 sres))))
6790 6944
6791(defun org-table-get-number-for-summing (s) 6945(defun org-table-get-number-for-summing (s)
6792 (let (n) 6946 (let (n)
@@ -6808,15 +6962,136 @@ numbers are added as such."
6808 ((equal n 0) nil) 6962 ((equal n 0) nil)
6809 (t n)))) 6963 (t n))))
6810 6964
6811(defvar org-table-current-formula nil)
6812(defvar org-table-formula-history nil) 6965(defvar org-table-formula-history nil)
6813(defun org-table-get-formula (current) 6966
6814 (if (and current (not (equal "" org-table-current-formula))) 6967(defun org-table-get-formula (&optional equation)
6815 org-table-current-formula 6968 "Read a formula from the minibuffer, offer stored formula as default."
6816 (setq org-table-current-formula 6969 (let* ((col (org-table-current-column))
6817 (read-string 6970 (stored-list (org-table-get-stored-formulas))
6818 "Formula [last]: " "" 'org-table-formula-history 6971 (stored (cdr (assoc col stored-list)))
6819 org-table-current-formula)))) 6972 (eq (cond
6973 ((and stored equation (string-match "^ *= *$" equation))
6974 stored)
6975 ((stringp equation)
6976 equation)
6977 (t (read-string
6978 "Formula: " (or stored "") 'org-table-formula-history
6979 stored)))))
6980 (if (not (string-match "\\S-" eq))
6981 (error "Empty formula"))
6982 (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq)))
6983 (if (string-match " *$" eq) (setq eq (replace-match "" t t eq)))
6984 (if stored
6985 (setcdr (assoc col stored-list) eq)
6986 (setq stored-list (cons (cons col eq) stored-list)))
6987 (if (not (equal stored eq))
6988 (org-table-store-formulas stored-list))
6989 eq))
6990
6991(defun org-table-store-formulas (alist)
6992 "Store the list of formulas below the current table."
6993 (setq alist (sort alist (lambda (a b) (< (car a) (car b)))))
6994 (save-excursion
6995 (goto-char (org-table-end))
6996 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?")
6997 (delete-region (point) (match-end 0)))
6998 (insert "#+TBLFM: "
6999 (mapconcat (lambda (x)
7000 (concat "$" (int-to-string (car x)) "=" (cdr x)))
7001 alist "::")
7002 "\n")))
7003
7004(defun org-table-get-stored-formulas ()
7005 "Return an alist with the stored formulas directly after current table."
7006 (interactive)
7007 (let (col eq eq-alist strings string)
7008 (save-excursion
7009 (goto-char (org-table-end))
7010 (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)")
7011 (setq strings (org-split-string (match-string 2) " *:: *"))
7012 (while (setq string (pop strings))
7013 (if (string-match "\\$\\([0-9]+\\) *= *\\(.*[^ \t]\\)" string)
7014 (setq col (string-to-number (match-string 1 string))
7015 eq (match-string 2 string)
7016 eq-alist (cons (cons col eq) eq-alist))))))
7017 eq-alist))
7018
7019(defun org-table-modify-formulas (action &rest columns)
7020 "Modify the formulas stored below the current table.
7021ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
7022expected, for the other action only a single column number is needed."
7023 (let ((list (org-table-get-stored-formulas))
7024 (nmax (length (org-split-string (buffer-substring (point-at-bol) (point-at-eol))
7025 "|")))
7026 col col1 col2)
7027 (cond
7028 ((null list)) ; No action needed if there are no stored formulas
7029 ((eq action 'remove)
7030 (setq col (car columns))
7031 (org-table-replace-in-formulas list col "INVALID")
7032 (if (assoc col list) (setq list (delq (assoc col list) list)))
7033 (loop for i from (1+ col) upto nmax by 1 do
7034 (org-table-replace-in-formulas list i (1- i))
7035 (if (assoc i list) (setcar (assoc i list) (1- i)))))
7036 ((eq action 'insert)
7037 (setq col (car columns))
7038 (loop for i from nmax downto col by 1 do
7039 (org-table-replace-in-formulas list i (1+ i))
7040 (if (assoc i list) (setcar (assoc i list) (1+ i)))))
7041 ((eq action 'swap)
7042 (setq col1 (car columns) col2 (nth 1 columns))
7043 (org-table-replace-in-formulas list col1 "Z")
7044 (org-table-replace-in-formulas list col2 col1)
7045 (org-table-replace-in-formulas list "Z" col2)
7046 (if (assoc col1 list) (setcar (assoc col1 list) "Z"))
7047 (if (assoc col2 list) (setcar (assoc col2 list) col1))
7048 (if (assoc "Z" list) (setcar (assoc "Z" list) col2)))
7049 (t (error "Invalid action in `org-table-modify-formulas'")))
7050 (if list (org-table-store-formulas list))))
7051
7052(defun org-table-replace-in-formulas (list s1 s2)
7053 (let (elt re s)
7054 (setq s1 (concat "$" (if (integerp s1) (int-to-string s1) s1))
7055 s2 (concat "$" (if (integerp s2) (int-to-string s2) s2))
7056 re (concat (regexp-quote s1) "\\>"))
7057 (while (setq elt (pop list))
7058 (setq s (cdr elt))
7059 (while (string-match re s)
7060 (setq s (replace-match s2 t t s)))
7061 (setcdr elt s))))
7062
7063(defvar org-table-column-names nil
7064 "Alist with column names, derived from the `!' line.")
7065(defvar org-table-column-name-regexp nil
7066 "Regular expression matching the current column names.")
7067(defvar org-table-local-parameters nil
7068 "Alist with parameter names, derived from the `$' line.")
7069
7070(defun org-table-get-specials ()
7071 "Get the column names and local parameters for this table."
7072 (save-excursion
7073 (let ((beg (org-table-begin)) (end (org-table-end))
7074 names name fields field cnt)
7075 (setq org-table-column-names nil
7076 org-table-local-parameters nil)
7077 (goto-char beg)
7078 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
7079 (setq names (org-split-string (match-string 1) " *| *")
7080 cnt 1)
7081 (while (setq name (pop names))
7082 (setq cnt (1+ cnt))
7083 (if (string-match "^[a-zA-Z][a-zA-Z0-9]*$" name)
7084 (push (cons name (int-to-string cnt)) org-table-column-names))))
7085 (setq org-table-column-names (nreverse org-table-column-names))
7086 (setq org-table-column-name-regexp
7087 (concat "\\$\\(" (mapconcat 'car org-table-column-names "\\|") "\\)\\>"))
7088 (goto-char beg)
7089 (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t)
7090 (setq fields (org-split-string (match-string 1) " *| *"))
7091 (while (setq field (pop fields))
7092 (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\) *= *\\(.*\\)" field)
7093 (push (cons (match-string 1 field) (match-string 2 field))
7094 org-table-local-parameters)))))))
6820 7095
6821(defun org-this-word () 7096(defun org-this-word ()
6822 ;; Get the current word 7097 ;; Get the current word
@@ -6825,24 +7100,157 @@ numbers are added as such."
6825 (end (progn (skip-chars-forward "^ \t\n") (point)))) 7100 (end (progn (skip-chars-forward "^ \t\n") (point))))
6826 (buffer-substring-no-properties beg end)))) 7101 (buffer-substring-no-properties beg end))))
6827 7102
6828(defun org-table-eval-formula (&optional ndown) 7103(defun org-table-maybe-eval-formula ()
7104 "Check if the current field starts with \"=\" and evaluate the formula."
7105 ;; We already know we are in a table. Get field will only return a formula
7106 ;; when appropriate. It might return a separator line, but no problem.
7107 (when org-table-formula-evaluate-inline
7108 (let* ((field (org-trim (or (org-table-get-field) "")))
7109 (dfield (downcase field))
7110 col bolpos nlast)
7111 (when (equal (string-to-char field) ?=)
7112 (if (string-match "^\\(=sum[vh]?\\)\\([0-9]+\\)$" dfield)
7113 (setq nlast (1+ (string-to-number (match-string 2 dfield)))
7114 dfield (match-string 1 dfield)))
7115 (cond
7116 ((equal dfield "=sumh")
7117 (org-table-get-field
7118 nil (org-table-sum
7119 (save-excursion (org-table-goto-column 1) (point))
7120 (point) nlast)))
7121 ((member dfield '("=sum" "=sumv"))
7122 (setq col (org-table-current-column)
7123 bolpos (point-at-bol))
7124 (org-table-get-field
7125 nil (org-table-sum
7126 (save-excursion
7127 (goto-char (org-table-begin))
7128 (if (re-search-forward org-table-dataline-regexp bolpos t)
7129 (progn
7130 (goto-char (match-beginning 0))
7131 (org-table-goto-column col)
7132 (point))
7133 (error "No datalines above current")))
7134 (point) nlast)))
7135 ((and (string-match "^ *=" field)
7136 (fboundp 'calc-eval))
7137 (org-table-eval-formula nil field)))))))
7138
7139(defvar org-last-recalc-undo-list nil)
7140(defcustom org-table-allow-line-recalculation t
7141 "FIXME:"
7142 :group 'org-table
7143 :type 'boolean)
7144
7145(defvar org-recalc-commands nil
7146 "List of commands triggering the recalculation of a line.
7147Will be filled automatically during use.")
7148
7149(defvar org-recalc-marks
7150 '((" " . "Unmarked: no special line, no automatic recalculation")
7151 ("#" . "Automatically recalculate this line upon TAB, RET, and C-c C-c in the line")
7152 ("*" . "Recalculate only when entire table is recalculated with `C-u C-c *'")
7153 ("!" . "Column name definition line. Reference in formula as $name.")
7154 ("$" . "Parameter definition line name=value. Reference in formula as $name.")))
7155
7156(defun org-table-rotate-recalc-marks (&optional newchar)
7157 "Rotate the recalculation mark in the first column.
7158If in any row, the first field is not consistent with a mark,
7159insert a new column for the makers.
7160When there is an active region, change all the lines in the region,
7161after prompting for the marking character.
7162After each change, a message will be displayed indication the meaning
7163of the new mark."
7164 (interactive)
7165 (unless (org-at-table-p) (error "Not at a table"))
7166 (let* ((marks (append (mapcar 'car org-recalc-marks) '(" ")))
7167 (beg (org-table-begin))
7168 (end (org-table-end))
7169 (l (org-current-line))
7170 (l1 (if (org-region-active-p) (org-current-line (region-beginning))))
7171 (l2 (if (org-region-active-p) (org-current-line (region-end))))
7172 (have-col
7173 (save-excursion
7174 (goto-char beg)
7175 (not (re-search-forward "^[ \t]*|[^-|][^|]*[^#!$*| \t][^|]*|" end t))))
7176 (col (org-table-current-column))
7177 (forcenew (car (assoc newchar org-recalc-marks)))
7178 epos new)
7179 (if l1 (setq newchar (char-to-string (read-char-exclusive "Change region to what mark? Type # * ! $ or SPC: "))
7180 forcenew (car (assoc newchar org-recalc-marks))))
7181 (if (and newchar (not forcenew))
7182 (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'"
7183 newchar))
7184 (if l1 (goto-line l1))
7185 (save-excursion
7186 (beginning-of-line 1)
7187 (unless (looking-at org-table-dataline-regexp)
7188 (error "Not at a table data line")))
7189 (unless have-col
7190 (org-table-goto-column 1)
7191 (org-table-insert-column)
7192 (org-table-goto-column (1+ col)))
7193 (setq epos (point-at-eol))
7194 (save-excursion
7195 (beginning-of-line 1)
7196 (org-table-get-field
7197 1 (if (looking-at "^[ \t]*| *\\([#!$* ]\\) *|")
7198 (concat " "
7199 (setq new (or forcenew
7200 (cadr (member (match-string 1) marks))))
7201 " ")
7202 " # ")))
7203 (if (and l1 l2)
7204 (progn
7205 (goto-line l1)
7206 (while (progn (beginning-of-line 2) (not (= (org-current-line) l2)))
7207 (and (looking-at org-table-dataline-regexp)
7208 (org-table-get-field 1 (concat " " new " "))))
7209 (goto-line l1)))
7210 (if (not (= epos (point-at-eol))) (org-table-align))
7211 (goto-line l)
7212 (and (interactive-p) (message (cdr (assoc new org-recalc-marks))))))
7213
7214(defun org-table-maybe-recalculate-line ()
7215 "Recompute the current line if marked for it, and if we haven't just done it."
7216 (interactive)
7217 (and org-table-allow-line-recalculation
7218 (not (and (memq last-command org-recalc-commands)
7219 (equal org-last-recalc-line (org-current-line))))
7220 (save-excursion (beginning-of-line 1)
7221 (looking-at org-table-auto-recalculate-regexp))
7222 (fboundp 'calc-eval)
7223 (org-table-recalculate) t))
7224
7225(defvar org-table-formula-debug nil
7226 "Non-nil means, debug table formulas.
7227When nil, simply write \"#ERROR\" in corrupted fields.")
7228
7229(defvar modes)
7230(defsubst org-set-calc-mode (var value)
7231 (setcar (or (cdr (memq var modes)) (cons nil nil)) value))
7232
7233(defun org-table-eval-formula (&optional ndown equation
7234 suppress-align suppress-const
7235 suppress-store)
6829 "Replace the table field value at the cursor by the result of a calculation. 7236 "Replace the table field value at the cursor by the result of a calculation.
6830 7237
6831This function makes use of Dave Gillespie's calc package, arguably the most 7238This function makes use of Dave Gillespie's calc package, in my view the
6832exciting program ever written for GNU Emacs. So you need to have calc 7239most exciting program ever written for GNU Emacs. So you need to have calc
6833installed in order to use this function. 7240installed in order to use this function.
6834 7241
6835In a table, this command replaces the value in the current field with the 7242In a table, this command replaces the value in the current field with the
6836result of a formula. While nowhere near the computation options of a 7243result of a formula. While nowhere near the computation options of a
6837spreadsheet program, this is still very useful. Note that there is no 7244spreadsheet program, this is still very useful. There is no automatic
6838automatic updating of a calculated field, nor will the field remember the 7245updating of a calculated field, but the table will remember the last
6839formula. The command needs to be applied again after changing input 7246formula for each column. The command needs to be applied again after
6840fields. 7247changing input fields.
6841 7248
6842When called, the command first prompts for a formula, which is read in the 7249When called, the command first prompts for a formula, which is read in the
6843minibuffer. Previously entered formulae are available through the history 7250minibuffer. Previously entered formulas are available through the history
6844list, and the last used formula is the default, reachable by simply 7251list, and the last used formula for each column is offered as a default.
6845pressing RET. 7252These stored formulas are adapted correctly when moving, inserting, or
7253deleting columns with the corresponding commands.
6846 7254
6847The formula can be any algebraic expression understood by the calc package. 7255The formula can be any algebraic expression understood by the calc package.
6848Before evaluation, variable substitution takes place: \"$\" is replaced by 7256Before evaluation, variable substitution takes place: \"$\" is replaced by
@@ -6852,50 +7260,113 @@ here, so the command supports only horizontal computing. The formula can
6852contain an optional printf format specifier after a semicolon, to reformat 7260contain an optional printf format specifier after a semicolon, to reformat
6853the result. 7261the result.
6854 7262
6855A few examples for formulae: 7263A few examples for formulas:
6856 $1+$2 Sum of first and second field 7264 $1+$2 Sum of first and second field
6857 $1+$2;%.2f Same, and format result to two digits after dec.point 7265 $1+$2;%.2f Same, and format result to two digits after dec.point
6858 exp($2)+exp($1) Math functions can be used 7266 exp($2)+exp($1) Math functions can be used
6859 $;%.1f Reformat current cell to 1 digit after dec.point 7267 $;%.1f Reformat current cell to 1 digit after dec.point
6860 ($3-32)*5/9 degrees F -> C conversion 7268 ($3-32)*5/9 Degrees F -> C conversion
6861 7269
6862When called with a raw \\[universal-argument] prefix, the formula is applied to the current 7270When called with a raw \\[universal-argument] prefix, the formula is applied to the current
6863field, and to the same same column in all following rows, until reaching a 7271field, and to the same same column in all following rows, until reaching a
6864horizontal line or the end of the table. When the command is called with a 7272horizontal line or the end of the table. When the command is called with a
6865numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied 7273numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied
6866to the current row, and to the following n-1 rows (but not beyond a 7274to the current row, and to the following n-1 rows (but not beyond a
6867separator line)." 7275separator line).
7276
7277This function can also be called from Lisp programs and offers two additional
7278Arguments: EQUATION can be the formula to apply. If this argument is given,
7279the user will not be prompted. SUPPRESS-ALIGN is used to speed-up
7280recursive calls by by-passing unnecessary aligns. SUPPRESS-CONST suppresses
7281the interpretation of constants in the formula. SUPPRESS-STORE means the
7282formula should not be stored, either because it is already stored, or because
7283it is a modified equation that should not overwrite the stored one."
6868 (interactive "P") 7284 (interactive "P")
6869 (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown))) 7285 (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown)))
6870 (require 'calc) 7286 (require 'calc)
6871 (org-table-check-inside-data-field) 7287 (org-table-check-inside-data-field)
7288 (org-table-get-specials)
6872 (let* (fields 7289 (let* (fields
6873 (org-table-automatic-realign nil) 7290 (org-table-automatic-realign nil)
7291 (case-fold-search nil)
6874 (down (> ndown 1)) 7292 (down (> ndown 1))
6875 (formula (org-table-get-formula nil)) 7293 (formula (if (and equation suppress-store)
7294 equation
7295 (org-table-get-formula equation)))
6876 (n0 (org-table-current-column)) 7296 (n0 (org-table-current-column))
6877 n form fmt x ev) 7297 (modes (copy-sequence org-calc-default-modes))
7298 n form fmt x ev orig c)
7299 ;; Parse the format
6878 (if (string-match ";" formula) 7300 (if (string-match ";" formula)
6879 (let ((tmp (org-split-string formula ";"))) 7301 (let ((tmp (org-split-string formula ";")))
6880 (setq formula (car tmp) fmt (nth 1 tmp)))) 7302 (setq formula (car tmp) fmt (or (nth 1 tmp) ""))
7303 (while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt)
7304 (setq c (string-to-char (match-string 1 fmt))
7305 n (string-to-number (or (match-string 1 fmt) "")))
7306 (if (= c ?p) (org-set-calc-mode 'calc-internal-prec n)
7307 (org-set-calc-mode 'calc-float-format
7308 (list (cdr (assoc c '((?n. float) (?f. fix)
7309 (?s. sci) (?e. eng))))
7310 n)))
7311 (setq fmt (replace-match "" t t fmt)))
7312 (when (string-match "[DR]" fmt)
7313 (org-set-calc-mode 'calc-angle-mode
7314 (if (equal (match-string 0 fmt) "D")
7315 'deg 'rad))
7316 (setq fmt (replace-match "" t t fmt)))
7317 (when (string-match "F" fmt)
7318 (org-set-calc-mode 'calc-prefer-frac t)
7319 (setq fmt (replace-match "" t t fmt)))
7320 (when (string-match "S" fmt)
7321 (org-set-calc-mode 'calc-symbolic-mode t)
7322 (setq fmt (replace-match "" t t fmt)))
7323 (unless (string-match "\\S-" fmt)
7324 (setq fmt nil))))
7325 (if (and (not suppress-const) org-table-formula-use-constants)
7326 (setq formula (org-table-formula-substitute-names formula)))
7327 (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
6881 (while (> ndown 0) 7328 (while (> ndown 0)
6882 (setq fields (org-split-string 7329 (setq fields (org-split-string
6883 (concat " " (buffer-substring 7330 (buffer-substring
6884 (point-at-bol) (point-at-eol))) "|")) 7331 (point-at-bol) (point-at-eol)) " *| *"))
7332 (if org-table-formula-numbers-only
7333 (setq fields (mapcar
7334 (lambda (x) (number-to-string (string-to-number x)))
7335 fields)))
6885 (setq ndown (1- ndown)) 7336 (setq ndown (1- ndown))
6886 (setq form (copy-sequence formula)) 7337 (setq form (copy-sequence formula))
6887 (while (string-match "\\$\\([0-9]+\\)?" form) 7338 (while (string-match "\\$\\([0-9]+\\)?" form)
6888 (setq n (if (match-beginning 1) 7339 (setq n (if (match-beginning 1)
6889 (string-to-int (match-string 1 form)) 7340 (string-to-int (match-string 1 form))
6890 n0) 7341 n0)
6891 x (nth n fields)) 7342 x (nth (1- n) fields))
6892 (unless x (error "Invalid field specifier \"%s\"" 7343 (unless x (error "Invalid field specifier \"%s\""
6893 (match-string 0 form))) 7344 (match-string 0 form)))
6894 (if (equal (string-to-number x) 0) (setq x "0")) 7345 (if (equal x "") (setq x "0"))
6895 (setq form (replace-match x t t form))) 7346 (setq form (replace-match (concat "(" x ")") t t form)))
6896 (setq ev (calc-eval (list form) 'num)) 7347 (setq ev (calc-eval (cons form modes)
7348 (if org-table-formula-numbers-only 'num)))
7349
7350 (when org-table-formula-debug
7351 (with-output-to-temp-buffer "*Help*"
7352 (princ (format "Substitution history of formula
7353Orig: %s
7354$xyz-> %s
7355$1-> %s\n" orig formula form))
7356 (if (listp ev)
7357 (princ (format " %s^\nError: %s"
7358 (make-string (car ev) ?\-) (nth 1 ev)))
7359 (princ (format "Result: %s" ev))))
7360 (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
7361 (unless (and (interactive-p) (not ndown))
7362 (unless (let (inhibit-redisplay)
7363 (y-or-n-p "Debugging Formula. Continue to next? "))
7364 (org-table-align)
7365 (error "Abort"))
7366 (delete-window (get-buffer-window "*Help*"))
7367 (message "")))
6897 (if (listp ev) 7368 (if (listp ev)
6898 (error "Invalid expression: %s (%s at %d)" form (nth 1 ev) (car ev))) 7369 (setq fmt nil ev "#ERROR"))
6899 (org-table-blank-field) 7370 (org-table-blank-field)
6900 (if fmt 7371 (if fmt
6901 (insert (format fmt (string-to-number ev))) 7372 (insert (format fmt (string-to-number ev)))
@@ -6903,7 +7374,96 @@ separator line)."
6903 (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]")) 7374 (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]"))
6904 (call-interactively 'org-return) 7375 (call-interactively 'org-return)
6905 (setq ndown 0))) 7376 (setq ndown 0)))
6906 (org-table-align))) 7377 (or suppress-align (org-table-align))))
7378
7379(defun org-table-recalculate (&optional all noalign)
7380 "Recalculate the current table line by applying all stored formulas."
7381 (interactive "P")
7382 (or (memq this-command org-recalc-commands)
7383 (setq org-recalc-commands (cons this-command org-recalc-commands)))
7384 (unless (org-at-table-p) (error "Not at a table"))
7385 (org-table-get-specials)
7386 (let* ((eqlist (sort (org-table-get-stored-formulas)
7387 (lambda (a b) (< (car a) (car b)))))
7388 (inhibit-redisplay t)
7389 (line-re org-table-dataline-regexp)
7390 (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point))))
7391 (thiscol (org-table-current-column))
7392 beg end entry eql (cnt 0))
7393 ;; Insert constants in all formulas
7394 (setq eqlist
7395 (mapcar (lambda (x)
7396 (setcdr x (org-table-formula-substitute-names (cdr x)))
7397 x)
7398 eqlist))
7399 (if all
7400 (progn
7401 (setq end (move-marker (make-marker) (1+ (org-table-end))))
7402 (goto-char (setq beg (org-table-begin)))
7403 (if (re-search-forward org-table-recalculate-regexp end t)
7404 (setq line-re org-table-recalculate-regexp)
7405 (if (and (re-search-forward org-table-dataline-regexp end t)
7406 (re-search-forward org-table-hline-regexp end t)
7407 (re-search-forward org-table-dataline-regexp end t))
7408 (setq beg (match-beginning 0))
7409 nil))) ;; just leave beg where it is
7410 (setq beg (point-at-bol)
7411 end (move-marker (make-marker) (1+ (point-at-eol)))))
7412 (goto-char beg)
7413 (and all (message "Re-applying formulas to full table..."))
7414 (while (re-search-forward line-re end t)
7415 (unless (string-match "^ *[!$] *$" (org-table-get-field 1))
7416 ;; Unprotected line, recalculate
7417 (and all (message "Re-applying formulas to full table...(line %d)"
7418 (setq cnt (1+ cnt))))
7419 (setq org-last-recalc-line (org-current-line))
7420 (setq eql eqlist)
7421 (while (setq entry (pop eql))
7422 (goto-line org-last-recalc-line)
7423 (org-table-goto-column (car entry) nil 'force)
7424 (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
7425 (goto-line thisline)
7426 (org-table-goto-column thiscol)
7427 (or noalign (org-table-align)
7428 (and all (message "Re-applying formulas to %d lines...done" cnt)))))
7429
7430(defun org-table-formula-substitute-names (f)
7431 "Replace $const with values in string F."
7432 (let ((start 0) a n1 n2 nn1 nn2 s (f1 f))
7433 ;; First, check for column names
7434 (while (setq start (string-match org-table-column-name-regexp f start))
7435 (setq start (1+ start))
7436 (setq a (assoc (match-string 1 f) org-table-column-names))
7437 (setq f (replace-match (concat "$" (cdr a)) t t f)))
7438 ;; Expand ranges to vectors
7439 (while (string-match "\\$\\([0-9]+\\)\\.\\.\\.?\\$\\([0-9]+\\)" f)
7440 (setq n1 (string-to-number (match-string 1 f))
7441 n2 (string-to-number (match-string 2 f))
7442 nn1 (1+ (min n1 n2)) nn2 (max n1 n2)
7443 s (concat "[($" (number-to-string (1- nn1)) ")"))
7444 (loop for i from nn1 upto nn2 do
7445 (setq s (concat s ",($" (int-to-string i) ")")))
7446 (setq s (concat s "]"))
7447 (if (< n2 n1) (setq s (concat "rev(" s ")")))
7448 (setq f (replace-match s t t f)))
7449 ;; Parameters and constants
7450 (setq start 0)
7451 (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start))
7452 (setq start (1+ start))
7453 (if (setq a (save-match-data
7454 (org-table-get-constant (match-string 1 f))))
7455 (setq f (replace-match (concat "(" a ")") t t f))))
7456 (if org-table-formula-debug
7457 (put-text-property 0 (length f) :orig-formula f1 f))
7458 f))
7459
7460(defun org-table-get-constant (const)
7461 "Find the value for a parameter or constant in a formula.
7462Parameters get priority."
7463 (or (cdr (assoc const org-table-local-parameters))
7464 (cdr (assoc const org-table-formula-constants))
7465 (and (fboundp 'constants-get) (constants-get const))
7466 "#UNDEFINED_NAME"))
6907 7467
6908;;; The orgtbl minor mode 7468;;; The orgtbl minor mode
6909 7469
@@ -6972,6 +7532,11 @@ table editor in arbitrary modes.")
6972 (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode))) 7532 (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode)))
6973 (if orgtbl-mode 7533 (if orgtbl-mode
6974 (progn 7534 (progn
7535 (and (orgtbl-setup) (defun orgtbl-setup () nil))
7536 ;; Make sure we are first in minor-mode-map-alist
7537 (let ((c (assq 'orgtbl-mode minor-mode-map-alist)))
7538 (and c (setq minor-mode-map-alist
7539 (cons c (delq c minor-mode-map-alist)))))
6975 (set (make-local-variable (quote org-table-may-need-update)) t) 7540 (set (make-local-variable (quote org-table-may-need-update)) t)
6976 (make-local-hook (quote before-change-functions)) 7541 (make-local-hook (quote before-change-functions))
6977 (add-hook 'before-change-functions 'org-before-change-function 7542 (add-hook 'before-change-functions 'org-before-change-function
@@ -6994,81 +7559,134 @@ table editor in arbitrary modes.")
6994(put 'orgtbl-mode :menu-tag "Org Table Mode") 7559(put 'orgtbl-mode :menu-tag "Org Table Mode")
6995(add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map) 7560(add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map)
6996 7561
6997(defun orgtbl-make-binding (fun &rest keys) 7562(defun orgtbl-make-binding (fun n &rest keys)
6998 "Create a function for binding in the table minor mode." 7563 "Create a function for binding in the table minor mode.
6999 (list 'lambda '(arg) 7564FUN is the command to call inside a table. N is used to create a unique
7000 (concat "Run `" (symbol-name fun) "' or the default binding.") 7565command name. KEYS are keys that should be checked in for a command
7001 '(interactive "p") 7566to execute outside of tables."
7002 (list 'if 7567 (eval
7003 '(org-at-table-p) 7568 (list 'defun
7004 (list 'call-interactively (list 'quote fun)) 7569 (intern (concat "orgtbl-hijacker-command-" (int-to-string n)))
7005 (list 'let '(orgtbl-mode) 7570 '(arg)
7006 (list 'call-interactively 7571 (concat "In tables, run `" (symbol-name fun) "'.\n"
7007 (append '(or) 7572 "Outside of tables, run the binding of `"
7008 (mapcar (lambda (k) 7573 (mapconcat (lambda (x) (format "%s" x)) keys "' or `")
7009 (list 'key-binding k)) 7574 "'.")
7010 keys) 7575 '(interactive "p")
7011 '('orgtbl-error))))))) 7576 (list 'if
7577 '(org-at-table-p)
7578 (list 'call-interactively (list 'quote fun))
7579 (list 'let '(orgtbl-mode)
7580 (list 'call-interactively
7581 (append '(or)
7582 (mapcar (lambda (k)
7583 (list 'key-binding k))
7584 keys)
7585 '('orgtbl-error))))))))
7012 7586
7013(defun orgtbl-error () 7587(defun orgtbl-error ()
7014 "Error when there is no default binding for a table key." 7588 "Error when there is no default binding for a table key."
7015 (interactive) 7589 (interactive)
7016 (error "This key is has no function outside tables")) 7590 (error "This key has no function outside tables"))
7017 7591
7018;; Keybindings for the minor mode 7592(defun orgtbl-setup ()
7019(let ((bindings 7593 "Setup orgtbl keymaps."
7020 (list 7594 (let ((nfunc 0)
7021 '([(meta shift left)] org-table-delete-column) 7595 (bindings
7022 '([(meta left)] org-table-move-column-left) 7596 (list
7023 '([(meta right)] org-table-move-column-right) 7597 '([(meta shift left)] org-table-delete-column)
7024 '([(meta shift right)] org-table-insert-column) 7598 '([(meta left)] org-table-move-column-left)
7025 '([(meta shift up)] org-table-kill-row) 7599 '([(meta right)] org-table-move-column-right)
7026 '([(meta shift down)] org-table-insert-row) 7600 '([(meta shift right)] org-table-insert-column)
7027 '([(meta up)] org-table-move-row-up) 7601 '([(meta shift up)] org-table-kill-row)
7028 '([(meta down)] org-table-move-row-down) 7602 '([(meta shift down)] org-table-insert-row)
7029 '("\C-c\C-w" org-table-cut-region) 7603 '([(meta up)] org-table-move-row-up)
7030 '("\C-c\M-w" org-table-copy-region) 7604 '([(meta down)] org-table-move-row-down)
7031 '("\C-c\C-y" org-table-paste-rectangle) 7605 '("\C-c\C-w" org-table-cut-region)
7032 '("\C-c-" org-table-insert-hline) 7606 '("\C-c\M-w" org-table-copy-region)
7033 '([(shift tab)] org-table-previous-field) 7607 '("\C-c\C-y" org-table-paste-rectangle)
7034 '("\C-c\C-c" org-table-align) 7608 '("\C-c-" org-table-insert-hline)
7035 '("\C-m" org-table-next-row) 7609 '([(shift tab)] org-table-previous-field)
7036 (list (org-key 'S-return) 'org-table-copy-down) 7610 '("\C-c\C-c" org-ctrl-c-ctrl-c)
7037 '([(meta return)] org-table-wrap-region) 7611 '("\C-m" org-table-next-row)
7038 '("\C-c\C-q" org-table-wrap-region) 7612 (list (org-key 'S-return) 'org-table-copy-down)
7039 '("\C-c?" org-table-current-column) 7613 '([(meta return)] org-table-wrap-region)
7040 '("\C-c " org-table-blank-field) 7614 '("\C-c\C-q" org-table-wrap-region)
7041 '("\C-c+" org-table-sum) 7615 '("\C-c?" org-table-current-column)
7042 '("\C-c|" org-table-toggle-vline-visibility) 7616 '("\C-c " org-table-blank-field)
7043 '("\C-c=" org-table-eval-formula))) 7617 '("\C-c+" org-table-sum)
7044 elt key fun cmd) 7618 '("\C-c|" org-table-toggle-vline-visibility)
7045 (while (setq elt (pop bindings)) 7619 '("\C-c=" org-table-eval-formula)
7046 (setq key (car elt) 7620 '("\C-c*" org-table-recalculate)
7047 fun (nth 1 elt) 7621 '([(control ?#)] org-table-rotate-recalc-marks)))
7048 cmd (orgtbl-make-binding fun key)) 7622 elt key fun cmd)
7049 (define-key orgtbl-mode-map key cmd))) 7623 (while (setq elt (pop bindings))
7050 7624 (setq nfunc (1+ nfunc))
7051;; Special treatment needed for TAB and RET 7625 (setq key (car elt)
7052 7626 fun (nth 1 elt)
7053(define-key orgtbl-mode-map [(return)] 7627 cmd (orgtbl-make-binding fun nfunc key))
7054 (orgtbl-make-binding 'orgtbl-ret [(return)] "\C-m")) 7628 (define-key orgtbl-mode-map key cmd))
7055(define-key orgtbl-mode-map "\C-m" 7629 ;; Special treatment needed for TAB and RET
7056 (orgtbl-make-binding 'orgtbl-ret "\C-m" [(return)])) 7630 (define-key orgtbl-mode-map [(return)]
7057(define-key orgtbl-mode-map [(tab)] 7631 (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m"))
7058 (orgtbl-make-binding 'orgtbl-tab [(tab)] "\C-i")) 7632 (define-key orgtbl-mode-map "\C-m"
7059(define-key orgtbl-mode-map "\C-i" 7633 (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)]))
7060 (orgtbl-make-binding 'orgtbl-tab "\C-i" [(tab)])) 7634 (define-key orgtbl-mode-map [(tab)]
7061 7635 (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i"))
7062(when orgtbl-optimized 7636 (define-key orgtbl-mode-map "\C-i"
7063 ;; If the user wants maximum table support, we need to hijack 7637 (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)])))
7064 ;; some standard editing functions 7638 (when orgtbl-optimized
7065 (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command 7639 ;; If the user wants maximum table support, we need to hijack
7066 orgtbl-mode-map global-map) 7640 ;; some standard editing functions
7067 (substitute-key-definition 'delete-char 'orgtbl-delete-char 7641 (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command
7068 orgtbl-mode-map global-map) 7642 orgtbl-mode-map global-map)
7069 (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char 7643 (substitute-key-definition 'delete-char 'orgtbl-delete-char
7070 orgtbl-mode-map global-map) 7644 orgtbl-mode-map global-map)
7071 (define-key org-mode-map "|" 'self-insert-command)) 7645 (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char
7646 orgtbl-mode-map global-map)
7647 (define-key org-mode-map "|" 'self-insert-command))
7648 (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
7649 '("OrgTbl"
7650 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
7651 ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
7652 ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
7653 ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
7654 "--"
7655 ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
7656 ["Copy Field from Above"
7657 org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
7658 "--"
7659 ("Column"
7660 ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
7661 ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
7662 ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
7663 ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
7664 ("Row"
7665 ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
7666 ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
7667 ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
7668 ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
7669 "--"
7670 ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
7671 ("Rectangle"
7672 ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
7673 ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
7674 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
7675 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
7676 "--"
7677 ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
7678 ["Eval Formula Down " (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
7679 ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"]
7680 ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"]
7681 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"]
7682 ["Sum Column/Rectangle" org-table-sum
7683 :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
7684 ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
7685 ["Debug Formulas"
7686 (setq org-table-formula-debug (not org-table-formula-debug))
7687 :style toggle :selected org-table-formula-debug]
7688 ))
7689 t)
7072 7690
7073(defun orgtbl-tab () 7691(defun orgtbl-tab ()
7074 "Justification and field motion for `orgtbl-mode'." 7692 "Justification and field motion for `orgtbl-mode'."
@@ -7108,13 +7726,13 @@ reduced column width."
7108 (interactive "p") 7726 (interactive "p")
7109 (if (and (org-at-table-p) 7727 (if (and (org-at-table-p)
7110 (eq N 1) 7728 (eq N 1)
7729 (string-match "|" (buffer-substring (point-at-bol) (point)))
7111 (looking-at ".*?|")) 7730 (looking-at ".*?|"))
7112 (let ((pos (point))) 7731 (let ((pos (point)))
7113 (backward-delete-char N) 7732 (backward-delete-char N)
7114 (skip-chars-forward "^|") 7733 (skip-chars-forward "^|")
7115 (insert " ") 7734 (insert " ")
7116 (goto-char (1- pos))) 7735 (goto-char (1- pos)))
7117 (message "%s" last-input-event) (sit-for 1)
7118 (delete-backward-char N))) 7736 (delete-backward-char N)))
7119 7737
7120(defun orgtbl-delete-char (N) 7738(defun orgtbl-delete-char (N)
@@ -7125,6 +7743,8 @@ will still be marked for re-alignment, because a narrow field may lead to
7125a reduced column width." 7743a reduced column width."
7126 (interactive "p") 7744 (interactive "p")
7127 (if (and (org-at-table-p) 7745 (if (and (org-at-table-p)
7746 (not (bolp))
7747 (not (= (char-after) ?|))
7128 (eq N 1)) 7748 (eq N 1))
7129 (if (looking-at ".*?|") 7749 (if (looking-at ".*?|")
7130 (let ((pos (point))) 7750 (let ((pos (point)))
@@ -7134,41 +7754,6 @@ a reduced column width."
7134 (goto-char pos))) 7754 (goto-char pos)))
7135 (delete-char N))) 7755 (delete-char N)))
7136 7756
7137(easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
7138 '("Tbl"
7139 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
7140 ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
7141 ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
7142 ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
7143 "--"
7144 ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
7145 ["Copy Field from Above"
7146 org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
7147 "--"
7148 ("Column"
7149 ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
7150 ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
7151 ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
7152 ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
7153 ("Row"
7154 ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
7155 ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
7156 ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
7157 ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
7158 "--"
7159 ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
7160 ("Rectangle"
7161 ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
7162 ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
7163 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
7164 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
7165 "--"
7166 ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
7167 ["Sum Column/Rectangle" org-table-sum
7168 :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
7169 ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
7170 ))
7171
7172;;; Exporting 7757;;; Exporting
7173 7758
7174(defconst org-level-max 20) 7759(defconst org-level-max 20)
@@ -7503,7 +8088,7 @@ Entries can be like (\"ent\"), in which case \"\\ent\" will be translated to
7503In that case, \"\\ent\" will be translated to \"&other;\". 8088In that case, \"\\ent\" will be translated to \"&other;\".
7504The list contains HTML entities for Latin-1, Greek and other symbols. 8089The list contains HTML entities for Latin-1, Greek and other symbols.
7505It is supplemented by a number of commonly used TeX macros with appropriate 8090It is supplemented by a number of commonly used TeX macros with appropriate
7506translations.") 8091translations. There is currently no way for users to extend this.")
7507 8092
7508(defvar org-last-level nil) ; dynamically scoped variable 8093(defvar org-last-level nil) ; dynamically scoped variable
7509 8094
@@ -8095,7 +8680,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
8095 (org-format-table-table-html-using-table-generate-source olines))))) 8680 (org-format-table-table-html-using-table-generate-source olines)))))
8096 8681
8097(defun org-format-org-table-html (lines) 8682(defun org-format-org-table-html (lines)
8098 "Format a table into html." 8683 "Format a table into HTML."
8099 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) 8684 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
8100 (setq lines (nreverse lines)) 8685 (setq lines (nreverse lines))
8101 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) 8686 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
@@ -8138,7 +8723,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
8138 newstr)) 8723 newstr))
8139 8724
8140(defun org-format-table-table-html (lines) 8725(defun org-format-table-table-html (lines)
8141 "Format a table generated by table.el into html. 8726 "Format a table generated by table.el into HTML.
8142This conversion does *not* use `table-generate-source' from table.el. 8727This conversion does *not* use `table-generate-source' from table.el.
8143This has the advantage that Org-mode's HTML conversions can be used. 8728This has the advantage that Org-mode's HTML conversions can be used.
8144But it has the disadvantage, that no cell- or row-spanning is allowed." 8729But it has the disadvantage, that no cell- or row-spanning is allowed."
@@ -8182,7 +8767,7 @@ But it has the disadvantage, that no cell- or row-spanning is allowed."
8182 html)) 8767 html))
8183 8768
8184(defun org-format-table-table-html-using-table-generate-source (lines) 8769(defun org-format-table-table-html-using-table-generate-source (lines)
8185 "Format a table into html, using `table-generate-source' from table.el. 8770 "Format a table into HTML, using `table-generate-source' from table.el.
8186This has the advantage that cell- or row-spanning is allowed. 8771This has the advantage that cell- or row-spanning is allowed.
8187But it has the disadvantage, that Org-mode's HTML conversions cannot be used." 8772But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
8188 (require 'table) 8773 (require 'table)
@@ -8413,10 +8998,10 @@ When LEVEL is non-nil, increase section numbers on that level."
8413 8998
8414;; - Bindings in Org-mode map are currently 8999;; - Bindings in Org-mode map are currently
8415;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet 9000;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet
8416;; abcd fgh j lmnopqrstuvwxyz ? # -+ /= [] ; |,.<> \t necessary bindings 9001;; abcd fgh j lmnopqrstuvwxyz ? #$ -+*/= [] ; |,.<>~ \t necessary bindings
8417;; e (?) useful from outline-mode 9002;; e (?) useful from outline-mode
8418;; i k @ expendable from outline-mode 9003;; i k @ expendable from outline-mode
8419;; 0123456789 ! $%^& * ()_{} " ~`' free 9004;; 0123456789 ! %^& ()_{} " `' free
8420 9005
8421(define-key org-mode-map "\C-i" 'org-cycle) 9006(define-key org-mode-map "\C-i" 'org-cycle)
8422(define-key org-mode-map [(meta tab)] 'org-complete) 9007(define-key org-mode-map [(meta tab)] 'org-complete)
@@ -8476,7 +9061,9 @@ When LEVEL is non-nil, increase section numbers on that level."
8476(define-key org-mode-map "\C-c+" 'org-table-sum) 9061(define-key org-mode-map "\C-c+" 'org-table-sum)
8477(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility) 9062(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility)
8478(define-key org-mode-map "\C-c=" 'org-table-eval-formula) 9063(define-key org-mode-map "\C-c=" 'org-table-eval-formula)
8479(define-key org-mode-map "\C-c#" 'org-table-create-with-table.el) 9064(define-key org-mode-map "\C-c*" 'org-table-recalculate)
9065(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
9066(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el)
8480(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) 9067(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region)
8481(define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) 9068(define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii)
8482(define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) 9069(define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii)
@@ -8489,12 +9076,7 @@ When LEVEL is non-nil, increase section numbers on that level."
8489(define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) 9076(define-key org-mode-map "\C-c\C-xh" 'org-export-as-html)
8490(define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open) 9077(define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open)
8491 9078
8492(defsubst org-table-p () 9079(defsubst org-table-p () (org-at-table-p))
8493 (if (and (eq major-mode 'org-mode) font-lock-mode)
8494 (eq (get-text-property (point) 'face) 'org-table)
8495 ;; (save-match-data (org-at-table-p)))) ; FIXME: OK to not use this?
8496 (org-at-table-p)))
8497
8498 9080
8499(defun org-self-insert-command (N) 9081(defun org-self-insert-command (N)
8500 "Like `self-insert-command', use overwrite-mode for whitespace in tables. 9082 "Like `self-insert-command', use overwrite-mode for whitespace in tables.
@@ -8525,6 +9107,7 @@ reduced column width."
8525 (interactive "p") 9107 (interactive "p")
8526 (if (and (org-table-p) 9108 (if (and (org-table-p)
8527 (eq N 1) 9109 (eq N 1)
9110 (string-match "|" (buffer-substring (point-at-bol) (point)))
8528 (looking-at ".*?|")) 9111 (looking-at ".*?|"))
8529 (let ((pos (point))) 9112 (let ((pos (point)))
8530 (backward-delete-char N) 9113 (backward-delete-char N)
@@ -8541,6 +9124,8 @@ will still be marked for re-alignment, because a narrow field may lead to
8541a reduced column width." 9124a reduced column width."
8542 (interactive "p") 9125 (interactive "p")
8543 (if (and (org-table-p) 9126 (if (and (org-table-p)
9127 (not (bolp))
9128 (not (= (char-after) ?|))
8544 (eq N 1)) 9129 (eq N 1))
8545 (if (looking-at ".*?|") 9130 (if (looking-at ".*?|")
8546 (let ((pos (point))) 9131 (let ((pos (point)))
@@ -8655,16 +9240,14 @@ a reduced column width."
8655(defun org-copy-special () 9240(defun org-copy-special ()
8656 "Call either `org-table-copy' or `org-copy-subtree'." 9241 "Call either `org-table-copy' or `org-copy-subtree'."
8657 (interactive) 9242 (interactive)
8658 (if (org-at-table-p) 9243 (call-interactively
8659 (org-table-copy-region) 9244 (if (org-at-table-p) 'org-table-copy-region 'org-copy-subtree)))
8660 (org-copy-subtree)))
8661 9245
8662(defun org-cut-special () 9246(defun org-cut-special ()
8663 "Call either `org-table-copy' or `org-cut-subtree'." 9247 "Call either `org-table-copy' or `org-cut-subtree'."
8664 (interactive) 9248 (interactive)
8665 (if (org-at-table-p) 9249 (call-interactively
8666 (org-table-cut-region) 9250 (if (org-at-table-p) 'org-table-cut-region 'org-cut-subtree)))
8667 (org-cut-subtree)))
8668 9251
8669(defun org-paste-special (arg) 9252(defun org-paste-special (arg)
8670 "Call either `org-table-paste-rectangle' or `org-paste-subtree'." 9253 "Call either `org-table-paste-rectangle' or `org-paste-subtree'."
@@ -8674,23 +9257,37 @@ a reduced column width."
8674 (org-paste-subtree arg))) 9257 (org-paste-subtree arg)))
8675 9258
8676(defun org-ctrl-c-ctrl-c (&optional arg) 9259(defun org-ctrl-c-ctrl-c (&optional arg)
8677 "Call realign table, or recognize a table.el table. 9260 "Call realign table, or recognize a table.el table, or update keywords.
8678When the cursor is inside a table created by the table.el package, 9261When the cursor is inside a table created by the table.el package,
8679activate that table. Otherwise, if the cursor is at a normal table 9262activate that table. Otherwise, if the cursor is at a normal table
8680created with org.el, re-align that table. This command works even if 9263created with org.el, re-align that table. This command works even if
8681the automatic table editor has been turned off." 9264the automatic table editor has been turned off.
9265If the cursor is in one of the special #+KEYWORD lines, this triggers
9266scanning the buffer for these lines and updating the information."
8682 (interactive "P") 9267 (interactive "P")
8683 (let ((org-enable-table-editor t)) 9268 (let ((org-enable-table-editor t))
8684 (cond 9269 (cond
8685 ((org-at-table.el-p) 9270 ((org-at-table.el-p)
8686 (require 'table) 9271 (require 'table)
8687 (beginning-of-line 1) 9272 (beginning-of-line 1)
8688 (re-search-forward "|" (save-excursion (end-of-line 2) (point))) ;FIXME: line-end-position? 9273 (re-search-forward "|" (save-excursion (end-of-line 2) (point)))
8689 (table-recognize-table)) 9274 (table-recognize-table))
8690 ((org-at-table-p) 9275 ((org-at-table-p)
9276 (org-table-maybe-eval-formula)
9277 (if arg
9278 (org-table-recalculate t)
9279 (org-table-maybe-recalculate-line))
8691 (org-table-align)) 9280 (org-table-align))
8692 ((save-excursion (beginning-of-line 1) (looking-at "#\\+[A-Z]+")) 9281 ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
8693 (let ((org-inhibit-startup t)) (org-mode))) 9282 (cond
9283 ((equal (match-string 1) "TBLFM")
9284 ;; Recalculate the table before this line
9285 (save-excursion
9286 (beginning-of-line 1)
9287 (skip-chars-backward " \r\n\t")
9288 (if (org-at-table-p) (org-table-recalculate t))))
9289 (t
9290 (let ((org-inhibit-startup t)) (org-mode)))))
8694 ((org-region-active-p) 9291 ((org-region-active-p)
8695 (org-table-convert-region (region-beginning) (region-end) arg)) 9292 (org-table-convert-region (region-beginning) (region-end) arg))
8696 ((and (region-beginning) (region-end)) 9293 ((and (region-beginning) (region-end))
@@ -8718,18 +9315,59 @@ the automatic table editor has been turned off."
8718 9315
8719;;; Menu entries 9316;;; Menu entries
8720 9317
8721;; First, remove the outline menus. Org-mode does not neede these commands.
8722(if org-xemacs-p
8723 (add-hook 'org-mode-hook
8724 (lambda ()
8725 (delete-menu-item '("Headings"))
8726 (delete-menu-item '("Show"))
8727 (delete-menu-item '("Hide"))
8728 (set-menubar-dirty-flag)))
8729 (setq org-mode-map (delq (assoc 'menu-bar (cdr org-mode-map))
8730 org-mode-map)))
8731
8732;; Define the Org-mode menus 9318;; Define the Org-mode menus
9319(easy-menu-define org-tbl-menu org-mode-map "Tbl menu"
9320 '("Tbl"
9321 ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
9322 ["Next Field" org-cycle (org-at-table-p)]
9323 ["Previous Field" org-shifttab (org-at-table-p)]
9324 ["Next Row" org-return (org-at-table-p)]
9325 "--"
9326 ["Blank Field" org-table-blank-field (org-at-table-p)]
9327 ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
9328 "--"
9329 ("Column"
9330 ["Move Column Left" org-metaleft (org-at-table-p)]
9331 ["Move Column Right" org-metaright (org-at-table-p)]
9332 ["Delete Column" org-shiftmetaleft (org-at-table-p)]
9333 ["Insert Column" org-shiftmetaright (org-at-table-p)])
9334 ("Row"
9335 ["Move Row Up" org-metaup (org-at-table-p)]
9336 ["Move Row Down" org-metadown (org-at-table-p)]
9337 ["Delete Row" org-shiftmetaup (org-at-table-p)]
9338 ["Insert Row" org-shiftmetadown (org-at-table-p)]
9339 "--"
9340 ["Insert Hline" org-table-insert-hline (org-at-table-p)])
9341 ("Rectangle"
9342 ["Copy Rectangle" org-copy-special (org-at-table-p)]
9343 ["Cut Rectangle" org-cut-special (org-at-table-p)]
9344 ["Paste Rectangle" org-paste-special (org-at-table-p)]
9345 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
9346 "--"
9347 ("Calculate"
9348 ["Eval Formula" org-table-eval-formula (org-at-table-p)]
9349 ["Eval Formula Down" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
9350 ["Recalculate line" org-table-recalculate (org-at-table-p)]
9351 ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
9352 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
9353 ["Sum Column/Rectangle" org-table-sum
9354 (or (org-at-table-p) (org-region-active-p))]
9355 ["Which Column?" org-table-current-column (org-at-table-p)])
9356 ["Debug Formulas"
9357 (setq org-table-formula-debug (not org-table-formula-debug))
9358 :style toggle :selected org-table-formula-debug]
9359 "--"
9360 ["Invisible Vlines" org-table-toggle-vline-visibility
9361 :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
9362 "--"
9363 ["Create" org-table-create (and (not (org-at-table-p))
9364 org-enable-table-editor)]
9365 ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
9366 ["Import from File" org-table-import (not (org-at-table-p))]
9367 ["Export to File" org-table-export (org-at-table-p)]
9368 "--"
9369 ["Create/Convert from/to table.el" org-table-create-with-table.el t]))
9370
8733(easy-menu-define org-org-menu org-mode-map "Org menu" 9371(easy-menu-define org-org-menu org-mode-map "Org menu"
8734 '("Org" 9372 '("Org"
8735 ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))] 9373 ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))]
@@ -8794,49 +9432,6 @@ the automatic table editor has been turned off."
8794 ["Insert Link" org-insert-link t] 9432 ["Insert Link" org-insert-link t]
8795 ["Follow Link" org-open-at-point t]) 9433 ["Follow Link" org-open-at-point t])
8796 "--" 9434 "--"
8797 ("Table"
8798 ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
8799 ["Next Field" org-cycle (org-at-table-p)]
8800 ["Previous Field" org-shifttab (org-at-table-p)]
8801 ["Next Row" org-return (org-at-table-p)]
8802 "--"
8803 ["Blank Field" org-table-blank-field (org-at-table-p)]
8804 ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
8805 "--"
8806 ("Column"
8807 ["Move Column Left" org-metaleft (org-at-table-p)]
8808 ["Move Column Right" org-metaright (org-at-table-p)]
8809 ["Delete Column" org-shiftmetaleft (org-at-table-p)]
8810 ["Insert Column" org-shiftmetaright (org-at-table-p)])
8811 ("Row"
8812 ["Move Row Up" org-metaup (org-at-table-p)]
8813 ["Move Row Down" org-metadown (org-at-table-p)]
8814 ["Delete Row" org-shiftmetaup (org-at-table-p)]
8815 ["Insert Row" org-shiftmetadown (org-at-table-p)]
8816 "--"
8817 ["Insert Hline" org-table-insert-hline (org-at-table-p)])
8818 ("Rectangle"
8819 ["Copy Rectangle" org-copy-special (org-at-table-p)]
8820 ["Cut Rectangle" org-cut-special (org-at-table-p)]
8821 ["Paste Rectangle" org-paste-special (org-at-table-p)]
8822 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
8823 "--"
8824 ["Which Column?" org-table-current-column (org-at-table-p)]
8825 ["Sum Column/Rectangle" org-table-sum
8826 (or (org-at-table-p) (org-region-active-p))]
8827 ["Eval Formula" org-table-eval-formula (org-at-table-p)]
8828 "--"
8829 ["Invisible Vlines" org-table-toggle-vline-visibility
8830 :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
8831 "--"
8832 ["Create" org-table-create (and (not (org-at-table-p))
8833 org-enable-table-editor)]
8834 ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
8835 ["Import from File" org-table-import (not (org-at-table-p))]
8836 ["Export to File" org-table-export (org-at-table-p)]
8837 "--"
8838 ["Create/Convert from/to table.el" org-table-create-with-table.el t])
8839 "--"
8840 ("Export" 9435 ("Export"
8841 ["ASCII" org-export-as-ascii t] 9436 ["ASCII" org-export-as-ascii t]
8842 ["Extract Visible Text" org-export-copy-visible t] 9437 ["Extract Visible Text" org-export-copy-visible t]
@@ -8878,7 +9473,7 @@ With optional NODE, go directly to that node."
8878;;; Documentation 9473;;; Documentation
8879 9474
8880(defun org-customize () 9475(defun org-customize ()
8881 "Call the customize function with org as argument." 9476 "Call the customize function with `org' as argument."
8882 (interactive) 9477 (interactive)
8883 (customize-browse 'org)) 9478 (customize-browse 'org))
8884 9479
@@ -9017,7 +9612,7 @@ to a visible line beginning. This makes the function of C-a more intuitive."
9017 (equal (char-before) ?\r)))) 9612 (equal (char-before) ?\r))))
9018 9613
9019(defun org-back-to-heading (&optional invisible-ok) 9614(defun org-back-to-heading (&optional invisible-ok)
9020 "Move to previous heading line, or beg of this line if it's a heading. 9615 "Move to previous heading line, or beginning of this line if it's a heading.
9021Only visible heading lines are considered, unless INVISIBLE-OK is non-nil." 9616Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
9022 (if org-noutline-p 9617 (if org-noutline-p
9023 (outline-back-to-heading invisible-ok) 9618 (outline-back-to-heading invisible-ok)
diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el
index b3c69ca657f..34b661afcc4 100644
--- a/lisp/textmodes/picture.el
+++ b/lisp/textmodes/picture.el
@@ -359,7 +359,7 @@ With positive argument insert that many lines."
359 (point)))) 359 (point))))
360 (replace-match newtext fixedcase literal) 360 (replace-match newtext fixedcase literal)
361 (if (< change 0) 361 (if (< change 0)
362 (insert-char ?\ (- change))))) 362 (insert-char ?\s (- change)))))
363 363
364;; Picture Tabs 364;; Picture Tabs
365 365
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 8e83a8fe90f..a4b5787981d 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -40,7 +40,7 @@
40 (require 'cl)) 40 (require 'cl))
41 41
42(defgroup sgml nil 42(defgroup sgml nil
43 "SGML editing mode" 43 "SGML editing mode."
44 :group 'languages) 44 :group 'languages)
45 45
46(defcustom sgml-basic-offset 2 46(defcustom sgml-basic-offset 2
@@ -670,12 +670,12 @@ If QUIET, do not print a message when there are no attributes for TAG."
670 (message "No attributes configured.")) 670 (message "No attributes configured."))
671 (if (stringp (car alist)) 671 (if (stringp (car alist))
672 (progn 672 (progn
673 (insert (if (eq (preceding-char) ? ) "" ? ) 673 (insert (if (eq (preceding-char) ?\s) "" ?\s)
674 (funcall skeleton-transformation (car alist))) 674 (funcall skeleton-transformation (car alist)))
675 (sgml-value alist)) 675 (sgml-value alist))
676 (setq i (length alist)) 676 (setq i (length alist))
677 (while (> i 0) 677 (while (> i 0)
678 (insert ? ) 678 (insert ?\s)
679 (insert (funcall skeleton-transformation 679 (insert (funcall skeleton-transformation
680 (setq attribute 680 (setq attribute
681 (skeleton-read '(completing-read 681 (skeleton-read '(completing-read
@@ -685,7 +685,7 @@ If QUIET, do not print a message when there are no attributes for TAG."
685 (setq i 0) 685 (setq i 0)
686 (sgml-value (assoc (downcase attribute) alist)) 686 (sgml-value (assoc (downcase attribute) alist))
687 (setq i (1- i)))) 687 (setq i (1- i))))
688 (if (eq (preceding-char) ? ) 688 (if (eq (preceding-char) ?\s)
689 (delete-backward-char 1))) 689 (delete-backward-char 1)))
690 car))) 690 car)))
691 691
@@ -701,7 +701,7 @@ With prefix argument, only self insert."
701 (eq (aref tag 0) ?/)) 701 (eq (aref tag 0) ?/))
702 (self-insert-command (prefix-numeric-value arg)) 702 (self-insert-command (prefix-numeric-value arg))
703 (sgml-attributes tag) 703 (sgml-attributes tag)
704 (setq last-command-char ? ) 704 (setq last-command-char ?\s)
705 (or (> (point) point) 705 (or (> (point) point)
706 (self-insert-command 1))))) 706 (self-insert-command 1)))))
707 707
@@ -1875,7 +1875,7 @@ The third `match-string' will be the used in the menu.")
1875 (setq toc-index 1875 (setq toc-index
1876 (cons (cons (concat (make-string 1876 (cons (cons (concat (make-string
1877 (* 2 (1- (string-to-number (match-string 1)))) 1877 (* 2 (1- (string-to-number (match-string 1))))
1878 ?\ ) 1878 ?\s)
1879 (match-string 3)) 1879 (match-string 3))
1880 (line-beginning-position)) 1880 (line-beginning-position))
1881 toc-index)))) 1881 toc-index))))
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index af13c2fe61c..d220d6b85e9 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -650,7 +650,7 @@ See `table-insert' for examples about how to use."
650 :version "22.1") 650 :version "22.1")
651 651
652(defgroup table-hooks nil 652(defgroup table-hooks nil
653 "Hooks for table manipulation utilities" 653 "Hooks for table manipulation utilities."
654 :group 'table) 654 :group 'table)
655 655
656(defcustom table-time-before-update 0.2 656(defcustom table-time-before-update 0.2
@@ -1678,7 +1678,7 @@ Inside a table cell has a special keymap.
1678 (setq i 0) 1678 (setq i 0)
1679 (while (< i columns) 1679 (while (< i columns)
1680 (let ((beg (point))) 1680 (let ((beg (point)))
1681 (insert (make-string (car cw) ?\ )) 1681 (insert (make-string (car cw) ?\s))
1682 (insert table-cell-vertical-char) 1682 (insert table-cell-vertical-char)
1683 (table--put-cell-line-property beg (1- (point)))) 1683 (table--put-cell-line-property beg (1- (point))))
1684 (if (cdr cw) (setq cw (cdr cw))) 1684 (if (cdr cw) (setq cw (cdr cw)))
@@ -2247,7 +2247,7 @@ table structure."
2247 (end (table--goto-coordinate (cons (cadr this) bottom-border-y))) 2247 (end (table--goto-coordinate (cons (cadr this) bottom-border-y)))
2248 (rect (extract-rectangle beg end)) 2248 (rect (extract-rectangle beg end))
2249 (height (+ (- (cddr this) (cdar this)) 1)) 2249 (height (+ (- (cddr this) (cdar this)) 1))
2250 (blank-line (make-string (- (cadr this) (caar this)) ?\ ))) 2250 (blank-line (make-string (- (cadr this) (caar this)) ?\s)))
2251 ;; delete lines from the bottom of the cell 2251 ;; delete lines from the bottom of the cell
2252 (setcdr (nthcdr (- height bottom-budget 1) rect) (nthcdr height rect)) 2252 (setcdr (nthcdr (- height bottom-budget 1) rect) (nthcdr height rect))
2253 ;; delete lines from the top of the cell 2253 ;; delete lines from the top of the cell
@@ -3363,7 +3363,7 @@ Currently this method is for LaTeX only."
3363 ;; insert a column separator and column/multicolumn contents 3363 ;; insert a column separator and column/multicolumn contents
3364 (with-current-buffer dest-buffer 3364 (with-current-buffer dest-buffer
3365 (unless first-p 3365 (unless first-p
3366 (insert (if (eq (char-before) ?\ ) "" " ") "& ")) 3366 (insert (if (eq (char-before) ?\s) "" " ") "& "))
3367 (if (> span 1) 3367 (if (> span 1)
3368 (insert (format "\\multicolumn{%d}{%sl|}{%s}" span (if first-p "|" "") line)) 3368 (insert (format "\\multicolumn{%d}{%sl|}{%s}" span (if first-p "|" "") line))
3369 (insert line))) 3369 (insert line)))
@@ -3379,7 +3379,7 @@ Currently this method is for LaTeX only."
3379 (setq i (1+ i))) 3379 (setq i (1+ i)))
3380 (funcall insert-column start x1)) 3380 (funcall insert-column start x1))
3381 (with-current-buffer dest-buffer 3381 (with-current-buffer dest-buffer
3382 (insert (if (eq (char-before) ?\ ) "" " ") "\\\\\n")))) 3382 (insert (if (eq (char-before) ?\s) "" " ") "\\\\\n"))))
3383 (setq y (1+ y))) 3383 (setq y (1+ y)))
3384 (with-current-buffer dest-buffer 3384 (with-current-buffer dest-buffer
3385 (insert "\\hline\n")) 3385 (insert "\\hline\n"))
@@ -3534,7 +3534,7 @@ consists from cells of same height."
3534 ;; insert the remaining area while appending blank lines below it 3534 ;; insert the remaining area while appending blank lines below it
3535 (table--insert-rectangle 3535 (table--insert-rectangle
3536 (append rect (make-list (+ 2 (- (cdr rb-coord) (cdr lu-coord))) 3536 (append rect (make-list (+ 2 (- (cdr rb-coord) (cdr lu-coord)))
3537 (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\ )))) 3537 (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\s))))
3538 ;; remove the appended blank lines below the table if they are unnecessary 3538 ;; remove the appended blank lines below the table if they are unnecessary
3539 (table--goto-coordinate (cons 0 (- (cdr bt-coord) (- (cdr rb-coord) (cdr lu-coord))))) 3539 (table--goto-coordinate (cons 0 (- (cdr bt-coord) (- (cdr rb-coord) (cdr lu-coord)))))
3540 (table--remove-blank-lines (+ 2 (- (cdr rb-coord) (cdr lu-coord)))) 3540 (table--remove-blank-lines (+ 2 (- (cdr rb-coord) (cdr lu-coord))))
@@ -4014,7 +4014,7 @@ converts a table into plain text without frames. It is a companion to
4014 (unless (eolp) 4014 (unless (eolp)
4015 (delete-char 1))) 4015 (delete-char 1)))
4016 (delete-char -1) 4016 (delete-char -1)
4017 (insert ?\ ) 4017 (insert ?\s)
4018 (forward-char -1))) 4018 (forward-char -1)))
4019 (setq n (1+ n))) 4019 (setq n (1+ n)))
4020 (setq table-inhibit-auto-fill-paragraph t)) 4020 (setq table-inhibit-auto-fill-paragraph t))
@@ -4446,16 +4446,16 @@ Replace frame characters with spaces."
4446 (move-to-column col) 4446 (move-to-column col)
4447 (table--spacify-frame)))) 4447 (table--spacify-frame))))
4448 (delete-char 1) 4448 (delete-char 1)
4449 (insert-before-markers ?\ )) 4449 (insert-before-markers ?\s))
4450 ((table--cell-horizontal-char-p (char-after)) 4450 ((table--cell-horizontal-char-p (char-after))
4451 (while (progn 4451 (while (progn
4452 (delete-char 1) 4452 (delete-char 1)
4453 (insert-before-markers ?\ ) 4453 (insert-before-markers ?\s)
4454 (table--cell-horizontal-char-p (char-after))))) 4454 (table--cell-horizontal-char-p (char-after)))))
4455 ((eq (char-after) table-cell-vertical-char) 4455 ((eq (char-after) table-cell-vertical-char)
4456 (while (let ((col (current-column))) 4456 (while (let ((col (current-column)))
4457 (delete-char 1) 4457 (delete-char 1)
4458 (insert-before-markers ?\ ) 4458 (insert-before-markers ?\s)
4459 (and (zerop (forward-line 1)) 4459 (and (zerop (forward-line 1))
4460 (zerop (current-column)) 4460 (zerop (current-column))
4461 (move-to-column col) 4461 (move-to-column col)
@@ -4611,7 +4611,7 @@ list. This list can be any vertical list within the table."
4611 (table--untabify-line) 4611 (table--untabify-line)
4612 (delete-char columns-to-extend)) 4612 (delete-char columns-to-extend))
4613 (table--untabify-line (point)) 4613 (table--untabify-line (point))
4614 (insert (make-string columns-to-extend ?\ ))) 4614 (insert (make-string columns-to-extend ?\s)))
4615 (setcdr coord (1- (cdr coord))))) 4615 (setcdr coord (1- (cdr coord)))))
4616 (table--goto-coordinate (caar (last top-to-bottom-coord-list))) 4616 (table--goto-coordinate (caar (last top-to-bottom-coord-list)))
4617 (let ((coord (table--get-coordinate (cdr (table--horizontal-cell-list nil 'first-only 'bottom))))) 4617 (let ((coord (table--get-coordinate (cdr (table--horizontal-cell-list nil 'first-only 'bottom)))))
@@ -4625,7 +4625,7 @@ list. This list can be any vertical list within the table."
4625 (table--untabify-line) 4625 (table--untabify-line)
4626 (delete-char columns-to-extend)) 4626 (delete-char columns-to-extend))
4627 (table--untabify-line (point)) 4627 (table--untabify-line (point))
4628 (insert (make-string columns-to-extend ?\ ))) 4628 (insert (make-string columns-to-extend ?\s)))
4629 (setcdr coord (1+ (cdr coord))))) 4629 (setcdr coord (1+ (cdr coord)))))
4630 (while (<= (cdr beg-coord) (cdr end-coord)) 4630 (while (<= (cdr beg-coord) (cdr end-coord))
4631 (table--untabify-line (table--goto-coordinate beg-coord 'no-extension)) 4631 (table--untabify-line (table--goto-coordinate beg-coord 'no-extension))
@@ -4854,7 +4854,7 @@ in the list."
4854 (insert char) 4854 (insert char)
4855 (unless (eolp) 4855 (unless (eolp)
4856 (delete-char 1)))) 4856 (delete-char 1))))
4857 (if (not (eq char ?\ )) 4857 (if (not (eq char ?\s))
4858 (if char (insert char)) 4858 (if char (insert char))
4859 (if (not (looking-at "\\s *$")) 4859 (if (not (looking-at "\\s *$"))
4860 (if (and table-fixed-width-mode 4860 (if (and table-fixed-width-mode
@@ -5398,7 +5398,7 @@ works better than the previous versions however not fully compatible.
5398 5398
5399(defun table--cell-blank-str (&optional n) 5399(defun table--cell-blank-str (&optional n)
5400 "Return blank table cell string of length N." 5400 "Return blank table cell string of length N."
5401 (let ((str (make-string (or n 1) ?\ ))) 5401 (let ((str (make-string (or n 1) ?\s)))
5402 (table--put-cell-content-property 0 (length str) str) 5402 (table--put-cell-content-property 0 (length str) str)
5403 str)) 5403 str))
5404 5404
@@ -5481,7 +5481,7 @@ chopped location is indicated with table-word-continuation-char."
5481 (and (zerop (forward-line 1)) 5481 (and (zerop (forward-line 1))
5482 (< (point) end))) 5482 (< (point) end)))
5483 (t (forward-char -1) 5483 (t (forward-char -1)
5484 (insert-before-markers (if (equal (char-before) ?\ ) ?\ table-word-continuation-char) 5484 (insert-before-markers (if (equal (char-before) ?\s) ?\s table-word-continuation-char)
5485 "\n") 5485 "\n")
5486 t))))) 5486 t)))))
5487 5487
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 7d04464346a..e0f1d78bb31 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -40,17 +40,17 @@
40(require 'compile) 40(require 'compile)
41 41
42(defgroup tex-file nil 42(defgroup tex-file nil
43 "TeX files and directories" 43 "TeX files and directories."
44 :prefix "tex-" 44 :prefix "tex-"
45 :group 'tex) 45 :group 'tex)
46 46
47(defgroup tex-run nil 47(defgroup tex-run nil
48 "Running external commands from TeX mode" 48 "Running external commands from TeX mode."
49 :prefix "tex-" 49 :prefix "tex-"
50 :group 'tex) 50 :group 'tex)
51 51
52(defgroup tex-view nil 52(defgroup tex-view nil
53 "Viewing and printing TeX files" 53 "Viewing and printing TeX files."
54 :prefix "tex-" 54 :prefix "tex-"
55 :group 'tex) 55 :group 'tex)
56 56
@@ -1114,7 +1114,7 @@ inserts \" characters."
1114 (delete-char (length tex-open-quote)) 1114 (delete-char (length tex-open-quote))
1115 t))) 1115 t)))
1116 (self-insert-command (prefix-numeric-value arg)) 1116 (self-insert-command (prefix-numeric-value arg))
1117 (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ )) 1117 (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
1118 tex-open-quote tex-close-quote)))) 1118 tex-open-quote tex-close-quote))))
1119 1119
1120(defun tex-validate-buffer () 1120(defun tex-validate-buffer ()
@@ -2421,7 +2421,7 @@ There might be text before point."
2421 (+ indent (current-column) tex-indent-item)) 2421 (+ indent (current-column) tex-indent-item))
2422 (t 2422 (t
2423 (let ((col (current-column))) 2423 (let ((col (current-column)))
2424 (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\()) 2424 (if (or (not (eq (char-syntax (or (char-after pos) ?\s)) ?\())
2425 ;; Can't be an arg if there's an empty line inbetween. 2425 ;; Can't be an arg if there's an empty line inbetween.
2426 (save-excursion (re-search-forward "^[ \t]*$" pos t))) 2426 (save-excursion (re-search-forward "^[ \t]*$" pos t)))
2427 ;; If the first char was not an open-paren, there's 2427 ;; If the first char was not an open-paren, there's
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index 2be01d630f9..048dfa99f31 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -44,7 +44,7 @@
44(eval-when-compile (require 'tex-mode) (require 'cl)) 44(eval-when-compile (require 'tex-mode) (require 'cl))
45 45
46(defgroup texinfo nil 46(defgroup texinfo nil
47 "Texinfo Mode" 47 "Texinfo Mode."
48 :group 'docs) 48 :group 'docs)
49 49
50;;;###autoload 50;;;###autoload
@@ -701,7 +701,7 @@ With prefix argument or inside @code or @example, inserts a plain \"."
701 (setq in-env t))))) 701 (setq in-env t)))))
702 (self-insert-command (prefix-numeric-value arg)) 702 (self-insert-command (prefix-numeric-value arg))
703 (insert 703 (insert
704 (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ )) 704 (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
705 texinfo-open-quote 705 texinfo-open-quote
706 texinfo-close-quote))))) 706 texinfo-close-quote)))))
707 707
@@ -816,7 +816,7 @@ Otherwise, follow with a newline."
816 (texinfo-last-unended-begin) 816 (texinfo-last-unended-begin)
817 (match-string 1))) 817 (match-string 1)))
818 "table") 818 "table")
819 ? ;space 819 ?\s
820 ?\n))) 820 ?\n)))
821 821
822(defun texinfo-insert-@kbd (&optional arg) 822(defun texinfo-insert-@kbd (&optional arg)
diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el
index 71687f431c0..dc50cc68aa9 100644
--- a/lisp/textmodes/two-column.el
+++ b/lisp/textmodes/two-column.el
@@ -200,7 +200,7 @@
200;;;;; variable declarations ;;;;; 200;;;;; variable declarations ;;;;;
201 201
202(defgroup two-column nil 202(defgroup two-column nil
203 "Minor mode for editing of two-column text" 203 "Minor mode for editing of two-column text."
204 :prefix "2C-" 204 :prefix "2C-"
205 :group 'frames) 205 :group 'frames)
206 206
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index cb668f9cd00..6b78acd0597 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -136,6 +136,8 @@ the last mouse movement event that occurred.")
136(defvar tooltip-hide-time nil 136(defvar tooltip-hide-time nil
137 "Time when the last tooltip was hidden.") 137 "Time when the last tooltip was hidden.")
138 138
139(defvar gud-tooltip-mode) ;; Prevent warning.
140
139;;; Event accessors 141;;; Event accessors
140 142
141(defun tooltip-event-buffer (event) 143(defun tooltip-event-buffer (event)
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index 792a81f3221..e9b8b1e1da2 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -90,7 +90,7 @@
90;;; User-visible variables 90;;; User-visible variables
91 91
92(defgroup uniquify nil 92(defgroup uniquify nil
93 "Unique buffer names dependent on file name" 93 "Unique buffer names dependent on file name."
94 :group 'applications) 94 :group 'applications)
95 95
96 96
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 4da3d22584a..7e1f8c1fe24 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,36 @@
12005-07-04 Juanma Barranquero <lekktu@gmail.com>
2
3 * url-history.el (url-history-track): Doc fix.
4 (url-history): Finish `defgroup' description with period.
5
6 * url-cookie.el (url-cookie):
7 * url-gw.el (url-gateway):
8 * url-news.el (url-news):
9 * url-vars.el (url, url-file, url-cache, url-mime, url-hairy):
10 Finish `defgroup' description with period.
11
122005-06-28 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
13
14 * url-http.el (url-http-create-request): Call url-recreate-url
15 in proxy case.
16
172005-06-27 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
18
19 * url-http.el (url-http-create-request): When computing real-fname,
20 call url-filename in both cases.
21
222005-06-27 Richard M. Stallman <rms@gnu.org>
23
24 * url-cookie.el (url-cookie-store): Rename arg PATH to LOCALPART.
25 (url-cookie-retrieve): Likewise.
26 (url-cookie-generate-header-lines): Likewise.
27 (url-cookie-handle-set-cookie): Likewise.
28 (url-cookie-create): Expect :localpart instead of :path.
29 (url-cookie-localpart): Renamed from url-cookie-path.
30 (url-cookie-set-localpart): Renamed from url-cookie-set-path.
31 (url-cookie-file): Doc fix.
32 (url-cookie-p): Add doc string.
33
12005-06-23 Richard M. Stallman <rms@gnu.org> 342005-06-23 Richard M. Stallman <rms@gnu.org>
2 35
3 * url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie. 36 * url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie.
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index db50f289521..039e3b0150b 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -34,46 +34,60 @@
34;; 'open standard' defining this crap. 34;; 'open standard' defining this crap.
35;; 35;;
36;; A cookie is stored internally as a vector of 7 slots 36;; A cookie is stored internally as a vector of 7 slots
37;; [ 'cookie name value expires path domain secure ] 37;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
38 38
39(defsubst url-cookie-name (cookie) (aref cookie 1)) 39(defsubst url-cookie-name (cookie) (aref cookie 1))
40(defsubst url-cookie-value (cookie) (aref cookie 2)) 40(defsubst url-cookie-value (cookie) (aref cookie 2))
41(defsubst url-cookie-expires (cookie) (aref cookie 3)) 41(defsubst url-cookie-expires (cookie) (aref cookie 3))
42(defsubst url-cookie-path (cookie) (aref cookie 4)) 42(defsubst url-cookie-localpart (cookie) (aref cookie 4))
43(defsubst url-cookie-domain (cookie) (aref cookie 5)) 43(defsubst url-cookie-domain (cookie) (aref cookie 5))
44(defsubst url-cookie-secure (cookie) (aref cookie 6)) 44(defsubst url-cookie-secure (cookie) (aref cookie 6))
45 45
46(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val)) 46(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
47(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val)) 47(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
48(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val)) 48(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
49(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val)) 49(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
50(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val)) 50(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
51(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val)) 51(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
52(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args))) 52(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
53 53
54(defsubst url-cookie-create (&rest args) 54(defsubst url-cookie-create (&rest args)
55 "Create a cookie vector object from keyword-value pairs ARGS.
56The keywords allowed are
57 :name NAME
58 :value VALUE
59 :expires TIME
60 :localpart LOCALPAR
61 :domain DOMAIN
62 :secure ???
63Could someone fill in more information?"
55 (let ((retval (make-vector 7 nil))) 64 (let ((retval (make-vector 7 nil)))
56 (aset retval 0 'cookie) 65 (aset retval 0 'cookie)
57 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args)) 66 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
58 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args)) 67 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
59 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args)) 68 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
60 (url-cookie-set-path retval (url-cookie-retrieve-arg :path args)) 69 (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
61 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args)) 70 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
62 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args)) 71 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
63 retval)) 72 retval))
64 73
65(defun url-cookie-p (obj) 74(defun url-cookie-p (obj)
75 "Return non-nil if OBJ is a cookie vector object.
76These objects represent cookies in the URL package.
77A cookie vector object is a vector of 7 slots:
78 [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
66 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie))) 79 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
67 80
68(defgroup url-cookie nil 81(defgroup url-cookie nil
69 "URL cookies" 82 "URL cookies."
70 :prefix "url-" 83 :prefix "url-"
71 :prefix "url-cookie-" 84 :prefix "url-cookie-"
72 :group 'url) 85 :group 'url)
73 86
74(defvar url-cookie-storage nil "Where cookies are stored.") 87(defvar url-cookie-storage nil "Where cookies are stored.")
75(defvar url-cookie-secure-storage nil "Where secure cookies are stored.") 88(defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
76(defcustom url-cookie-file nil "*Where cookies are stored on disk." 89(defcustom url-cookie-file nil
90 "*File where cookies are stored on disk."
77 :type '(choice (const :tag "Default" :value nil) file) 91 :type '(choice (const :tag "Default" :value nil) file)
78 :group 'url-file 92 :group 'url-file
79 :group 'url-cookie) 93 :group 'url-cookie)
@@ -154,7 +168,7 @@ telling Microsoft that."
154 (write-file fname) 168 (write-file fname)
155 (kill-buffer (current-buffer)))))) 169 (kill-buffer (current-buffer))))))
156 170
157(defun url-cookie-store (name value &optional expires domain path secure) 171(defun url-cookie-store (name value &optional expires domain localpart secure)
158 "Store a netscape-style cookie." 172 "Store a netscape-style cookie."
159 (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage)) 173 (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
160 (tmp storage) 174 (tmp storage)
@@ -173,7 +187,7 @@ telling Microsoft that."
173 (while storage 187 (while storage
174 (setq cur (car storage) 188 (setq cur (car storage)
175 storage (cdr storage)) 189 storage (cdr storage))
176 (if (and (equal path (url-cookie-path cur)) 190 (if (and (equal localpart (url-cookie-localpart cur))
177 (equal name (url-cookie-name cur))) 191 (equal name (url-cookie-name cur)))
178 (progn 192 (progn
179 (url-cookie-set-expires cur expires) 193 (url-cookie-set-expires cur expires)
@@ -186,7 +200,7 @@ telling Microsoft that."
186 :value value 200 :value value
187 :expires expires 201 :expires expires
188 :domain domain 202 :domain domain
189 :path path 203 :localpart localpart
190 :secure secure) 204 :secure secure)
191 (cdr found-domain))))) 205 (cdr found-domain)))))
192 ;; Need to add a new top-level domain 206 ;; Need to add a new top-level domain
@@ -194,7 +208,7 @@ telling Microsoft that."
194 :value value 208 :value value
195 :expires expires 209 :expires expires
196 :domain domain 210 :domain domain
197 :path path 211 :localpart localpart
198 :secure secure)) 212 :secure secure))
199 (cond 213 (cond
200 (storage 214 (storage
@@ -235,8 +249,8 @@ telling Microsoft that."
235 (> (- cur-norm exp-norm) 1)))))) 249 (> (- cur-norm exp-norm) 1))))))
236 250
237;;;###autoload 251;;;###autoload
238(defun url-cookie-retrieve (host path &optional secure) 252(defun url-cookie-retrieve (host localpart &optional secure)
239 "Retrieve all the netscape-style cookies for a specified HOST and PATH." 253 "Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."
240 (let ((storage (if secure 254 (let ((storage (if secure
241 (append url-cookie-secure-storage url-cookie-storage) 255 (append url-cookie-secure-storage url-cookie-storage)
242 url-cookie-storage)) 256 url-cookie-storage))
@@ -244,7 +258,7 @@ telling Microsoft that."
244 (cookies nil) 258 (cookies nil)
245 (cur nil) 259 (cur nil)
246 (retval nil) 260 (retval nil)
247 (path-regexp nil)) 261 (localpart-regexp nil))
248 (while storage 262 (while storage
249 (setq cur (car storage) 263 (setq cur (car storage)
250 storage (cdr storage) 264 storage (cdr storage)
@@ -255,26 +269,26 @@ telling Microsoft that."
255 (while cookies 269 (while cookies
256 (setq cur (car cookies) 270 (setq cur (car cookies)
257 cookies (cdr cookies) 271 cookies (cdr cookies)
258 path-regexp (concat "^" (regexp-quote 272 localpart-regexp (concat "^" (regexp-quote
259 (url-cookie-path cur)))) 273 (url-cookie-localpart cur))))
260 (if (and (string-match path-regexp path) 274 (if (and (string-match localpart-regexp localpart)
261 (not (url-cookie-expired-p cur))) 275 (not (url-cookie-expired-p cur)))
262 (setq retval (cons cur retval)))))) 276 (setq retval (cons cur retval))))))
263 retval)) 277 retval))
264 278
265;;;###autoload 279;;;###autoload
266(defun url-cookie-generate-header-lines (host path secure) 280(defun url-cookie-generate-header-lines (host localpart secure)
267 (let* ((cookies (url-cookie-retrieve host path secure)) 281 (let* ((cookies (url-cookie-retrieve host localpart secure))
268 (retval nil) 282 (retval nil)
269 (cur nil) 283 (cur nil)
270 (chunk nil)) 284 (chunk nil))
271 ;; Have to sort this for sending most specific cookies first 285 ;; Have to sort this for sending most specific cookies first
272 (setq cookies (and cookies 286 (setq cookies (and cookies
273 (sort cookies 287 (sort cookies
274 (function 288 (function
275 (lambda (x y) 289 (lambda (x y)
276 (> (length (url-cookie-path x)) 290 (> (length (url-cookie-localpart x))
277 (length (url-cookie-path y)))))))) 291 (length (url-cookie-localpart y))))))))
278 (while cookies 292 (while cookies
279 (setq cur (car cookies) 293 (setq cur (car cookies)
280 cookies (cdr cookies) 294 cookies (cdr cookies)
@@ -340,9 +354,9 @@ telling Microsoft that."
340 (trusted url-cookie-trusted-urls) 354 (trusted url-cookie-trusted-urls)
341 (untrusted url-cookie-untrusted-urls) 355 (untrusted url-cookie-untrusted-urls)
342 (expires (cdr-safe (assoc-string "expires" args t))) 356 (expires (cdr-safe (assoc-string "expires" args t)))
343 (path (or (cdr-safe (assoc-string "path" args t)) 357 (localpart (or (cdr-safe (assoc-string "path" args t))
344 (file-name-directory 358 (file-name-directory
345 (url-filename url-current-object)))) 359 (url-filename url-current-object))))
346 (rest nil)) 360 (rest nil))
347 (while args 361 (while args
348 (if (not (member (downcase (car (car args))) 362 (if (not (member (downcase (car (car args)))
@@ -422,7 +436,7 @@ telling Microsoft that."
422 (while rest 436 (while rest
423 (setq cur (pop rest)) 437 (setq cur (pop rest))
424 (url-cookie-store (car cur) (cdr cur) 438 (url-cookie-store (car cur) (cdr cur)
425 expires domain path secure)))) 439 expires domain localpart secure))))
426 (t 440 (t
427 (message "%s tried to set a cookie for domain %s - rejected." 441 (message "%s tried to set a cookie for domain %s - rejected."
428 (url-host url-current-object) domain))))) 442 (url-host url-current-object) domain)))))
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 153d146b608..35104821782 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -34,7 +34,7 @@
34(autoload 'open-tls-stream "tls") 34(autoload 'open-tls-stream "tls")
35 35
36(defgroup url-gateway nil 36(defgroup url-gateway nil
37 "URL gateway variables" 37 "URL gateway variables."
38 :group 'url) 38 :group 'url)
39 39
40(defcustom url-gateway-local-host-regexp nil 40(defcustom url-gateway-local-host-regexp nil
diff --git a/lisp/url/url-history.el b/lisp/url/url-history.el
index 3f9a82b9afd..9483b255d8e 100644
--- a/lisp/url/url-history.el
+++ b/lisp/url/url-history.el
@@ -32,14 +32,14 @@
32(autoload 'url-do-setup "url") 32(autoload 'url-do-setup "url")
33 33
34(defgroup url-history nil 34(defgroup url-history nil
35 "History variables in the URL package" 35 "History variables in the URL package."
36 :prefix "url-history" 36 :prefix "url-history"
37 :group 'url) 37 :group 'url)
38 38
39(defcustom url-history-track nil 39(defcustom url-history-track nil
40 "*Controls whether to keep a list of all the URLS being visited. 40 "*Controls whether to keep a list of all the URLS being visited.
41If non-nil, url will keep track of all the URLS visited. 41If non-nil, url will keep track of all the URLS visited.
42If eq to `t', then the list is saved to disk at the end of each emacs 42If set to t, then the list is saved to disk at the end of each Emacs
43session." 43session."
44 :type 'boolean 44 :type 'boolean
45 :group 'url-history) 45 :group 'url-history)
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index f5bbf4a7bf4..0b7e2cef8a1 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -156,8 +156,7 @@ request.
156 (let ((url-basic-auth-storage 156 (let ((url-basic-auth-storage
157 'url-http-proxy-basic-auth-storage)) 157 'url-http-proxy-basic-auth-storage))
158 (url-get-authentication url nil 'any nil)))) 158 (url-get-authentication url nil 'any nil))))
159 (real-fname (if proxy-obj (url-recreate-url proxy-obj) 159 (real-fname (url-filename (or proxy-obj url)))
160 (url-filename url)))
161 (host (url-host (or proxy-obj url))) 160 (host (url-host (or proxy-obj url)))
162 (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers)) 161 (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers))
163 nil 162 nil
@@ -200,7 +199,9 @@ request.
200 (setq request 199 (setq request
201 (concat 200 (concat
202 ;; The request 201 ;; The request
203 (or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n" 202 (or url-request-method "GET") " "
203 (if proxy-obj (url-recreate-url proxy-obj) real-fname)
204 " HTTP/" url-http-version "\r\n"
204 ;; Version of MIME we speak 205 ;; Version of MIME we speak
205 "MIME-Version: 1.0\r\n" 206 "MIME-Version: 1.0\r\n"
206 ;; (maybe) Try to keep the connection open 207 ;; (maybe) Try to keep the connection open
diff --git a/lisp/url/url-news.el b/lisp/url/url-news.el
index 9d7f64bb4a4..21dd13ec17a 100644
--- a/lisp/url/url-news.el
+++ b/lisp/url/url-news.el
@@ -32,7 +32,7 @@
32(eval-when-compile (require 'cl)) 32(eval-when-compile (require 'cl))
33 33
34(defgroup url-news nil 34(defgroup url-news nil
35 "News related options" 35 "News related options."
36 :group 'url) 36 :group 'url)
37 37
38(defun url-news-open-host (host port user pass) 38(defun url-news-open-host (host port user pass)
@@ -105,7 +105,7 @@
105 nntp-open-connection-function) 105 nntp-open-connection-function)
106 nil 106 nil
107 (cons (current-buffer) 'browse))) 107 (cons (current-buffer) 'browse)))
108 108
109;;;###autoload 109;;;###autoload
110(defun url-news (url) 110(defun url-news (url)
111 ;; Find a news reference 111 ;; Find a news reference
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 53b144f0f98..1921a6e295f 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -29,28 +29,28 @@
29 "Version number of URL package.") 29 "Version number of URL package.")
30 30
31(defgroup url nil 31(defgroup url nil
32 "Uniform Resource Locator tool" 32 "Uniform Resource Locator tool."
33 :version "22.1" 33 :version "22.1"
34 :group 'hypermedia) 34 :group 'hypermedia)
35 35
36(defgroup url-file nil 36(defgroup url-file nil
37 "URL storage" 37 "URL storage."
38 :prefix "url-" 38 :prefix "url-"
39 :group 'url) 39 :group 'url)
40 40
41(defgroup url-cache nil 41(defgroup url-cache nil
42 "URL cache" 42 "URL cache."
43 :prefix "url-" 43 :prefix "url-"
44 :prefix "url-cache-" 44 :prefix "url-cache-"
45 :group 'url) 45 :group 'url)
46 46
47(defgroup url-mime nil 47(defgroup url-mime nil
48 "MIME options of URL" 48 "MIME options of URL."
49 :prefix "url-" 49 :prefix "url-"
50 :group 'url) 50 :group 'url)
51 51
52(defgroup url-hairy nil 52(defgroup url-hairy nil
53 "Hairy options of URL" 53 "Hairy options of URL."
54 :prefix "url-" 54 :prefix "url-"
55 :group 'url) 55 :group 'url)
56 56
diff --git a/lisp/w32-vars.el b/lisp/w32-vars.el
index 1877e159ae7..30dae3f9987 100644
--- a/lisp/w32-vars.el
+++ b/lisp/w32-vars.el
@@ -28,7 +28,7 @@
28 28
29;; Custom group for w32 specific settings 29;; Custom group for w32 specific settings
30(defgroup w32 nil 30(defgroup w32 nil
31 "MS-Windows specific features" 31 "MS-Windows specific features."
32 :group 'environment 32 :group 'environment
33 :version "22.1" 33 :version "22.1"
34 :prefix "w32") 34 :prefix "w32")
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 6e6e8f4a9ed..b06aaa2f869 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,47 @@
12005-07-03 Luc Teirlinck <teirllm@auburn.edu>
2
3 * display.texi (The Echo Area): Correct menu.
4
52005-07-03 Richard M. Stallman <rms@gnu.org>
6
7 * elisp.texi (Top): Update subnode menu for Display.
8
9 * display.texi (Displaying Messages): New node, with most
10 of what was in The Echo Area.
11 (Progress): Moved under The Echo Area.
12 (Logging Messages): New node with new text.
13 (Echo Area Customization): New node, the rest of what was
14 in The Echo Area. Document message-truncate-lines with @defvar.
15 (Display): Update menu.
16
17 * windows.texi (Textual Scrolling): Doc 3 values for
18 scroll-preserve-screen-position.
19
20 * text.texi (Special Properties): Change hook functions
21 should bind inhibit-modification-hooks around altering buffer text.
22
23 * keymaps.texi (Key Binding Commands): Call binding BINDING
24 rather than DEFINITION.
25
262005-06-29 Juanma Barranquero <lekktu@gmail.com>
27
28 * variables.texi (Defining Variables): `user-variable-p' returns t
29 for aliases of user options, nil for alias loops.
30
312005-06-28 Richard M. Stallman <rms@gnu.org>
32
33 * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
34 make-keymap.
35
362005-06-27 Luc Teirlinck <teirllm@auburn.edu>
37
38 * variables.texi (Setting Variables): Correct and clarify
39 description of `add-to-ordered-list'.
40
412005-06-26 Richard M. Stallman <rms@gnu.org>
42
43 * display.texi (Faces): Minor cleanup.
44
12005-06-25 Luc Teirlinck <teirllm@auburn.edu> 452005-06-25 Luc Teirlinck <teirllm@auburn.edu>
2 46
3 * display.texi (Faces): `facep' returns t for strings that are 47 * display.texi (Faces): `facep' returns t for strings that are
diff --git a/lispref/display.texi b/lispref/display.texi
index fe0797f1a1c..958ca0325e9 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -14,9 +14,8 @@ that Emacs presents to the user.
14* Refresh Screen:: Clearing the screen and redrawing everything on it. 14* Refresh Screen:: Clearing the screen and redrawing everything on it.
15* Forcing Redisplay:: Forcing redisplay. 15* Forcing Redisplay:: Forcing redisplay.
16* Truncation:: Folding or wrapping long text lines. 16* Truncation:: Folding or wrapping long text lines.
17* The Echo Area:: Where messages are displayed. 17* The Echo Area:: Displaying messages at the bottom of the screen.
18* Warnings:: Displaying warning messages for the user. 18* Warnings:: Displaying warning messages for the user.
19* Progress:: Informing user about progress of a long operation.
20* Invisible Text:: Hiding part of the buffer text. 19* Invisible Text:: Hiding part of the buffer text.
21* Selective Display:: Hiding part of the buffer text (the old way). 20* Selective Display:: Hiding part of the buffer text (the old way).
22* Temporary Displays:: Displays that go away automatically. 21* Temporary Displays:: Displays that go away automatically.
@@ -184,7 +183,7 @@ This variable is automatically buffer-local in every buffer.
184@cindex error display 183@cindex error display
185@cindex echo area 184@cindex echo area
186 185
187The @dfn{echo area} is used for displaying error messages 186 The @dfn{echo area} is used for displaying error messages
188(@pxref{Errors}), for messages made with the @code{message} primitive, 187(@pxref{Errors}), for messages made with the @code{message} primitive,
189and for echoing keystrokes. It is not the same as the minibuffer, 188and for echoing keystrokes. It is not the same as the minibuffer,
190despite the fact that the minibuffer appears (when active) in the same 189despite the fact that the minibuffer appears (when active) in the same
@@ -193,9 +192,22 @@ specifies the rules for resolving conflicts between the echo area and
193the minibuffer for use of that screen space (@pxref{Minibuffer,, The 192the minibuffer for use of that screen space (@pxref{Minibuffer,, The
194Minibuffer, emacs, The GNU Emacs Manual}). 193Minibuffer, emacs, The GNU Emacs Manual}).
195 194
196You can write output in the echo area by using the Lisp printing 195 You can write output in the echo area by using the Lisp printing
197functions with @code{t} as the stream (@pxref{Output Functions}), or as 196functions with @code{t} as the stream (@pxref{Output Functions}), or
198follows: 197explicitly.
198
199@menu
200* Displaying Messages:: Explicitly displaying text in the echo area.
201* Progress:: Informing user about progress of a long operation.
202* Logging Messages:: Echo area messages are logged for the user.
203* Echo Area Customization:: Controlling the echo area.
204@end menu
205
206@node Displaying Messages
207@subsection Displaying Messages in the Echo Area
208
209 This section describes the functions for explicitly producing echo
210area messages. Many other Emacs features display messages there, too.
199 211
200@defun message string &rest arguments 212@defun message string &rest arguments
201This function displays a message in the echo area. The 213This function displays a message in the echo area. The
@@ -216,12 +228,6 @@ the echo area has been expanded automatically, this brings it back to
216its normal size. If the minibuffer is active, this brings the 228its normal size. If the minibuffer is active, this brings the
217minibuffer contents back onto the screen immediately. 229minibuffer contents back onto the screen immediately.
218 230
219@vindex message-truncate-lines
220Normally, displaying a long message resizes the echo area to display
221the entire message. But if the variable @code{message-truncate-lines}
222is non-@code{nil}, the echo area does not resize, and the message is
223truncated to fit it, as in Emacs 20 and before.
224
225@example 231@example
226@group 232@group
227(message "Minibuffer depth is %d." 233(message "Minibuffer depth is %d."
@@ -241,12 +247,6 @@ To automatically display a message in the echo area or in a pop-buffer,
241depending on its size, use @code{display-message-or-buffer} (see below). 247depending on its size, use @code{display-message-or-buffer} (see below).
242@end defun 248@end defun
243 249
244@defopt max-mini-window-height
245This variable specifies the maximum height for resizing minibuffer
246windows. If a float, it specifies a fraction of the height of the
247frame. If an integer, it specifies a number of lines.
248@end defopt
249
250@tindex with-temp-message 250@tindex with-temp-message
251@defmac with-temp-message message &rest body 251@defmac with-temp-message message &rest body
252This construct displays a message in the echo area temporarily, during 252This construct displays a message in the echo area temporarily, during
@@ -303,23 +303,130 @@ This function returns the message currently being displayed in the
303echo area, or @code{nil} if there is none. 303echo area, or @code{nil} if there is none.
304@end defun 304@end defun
305 305
306@defvar cursor-in-echo-area 306@node Progress
307This variable controls where the cursor appears when a message is 307@subsection Reporting Operation Progress
308displayed in the echo area. If it is non-@code{nil}, then the cursor 308@cindex progress reporting
309appears at the end of the message. Otherwise, the cursor appears at
310point---not in the echo area at all.
311 309
312The value is normally @code{nil}; Lisp programs bind it to @code{t} 310 When an operation can take a while to finish, you should inform the
313for brief periods of time. 311user about the progress it makes. This way the user can estimate
314@end defvar 312remaining time and clearly see that Emacs is busy working, not hung.
315 313
316@defvar echo-area-clear-hook 314 Functions listed in this section provide simple and efficient way of
317This normal hook is run whenever the echo area is cleared---either by 315reporting operation progress. Here is a working example that does
318@code{(message nil)} or for any other reason. 316nothing useful:
319@end defvar 317
318@smallexample
319(let ((progress-reporter
320 (make-progress-reporter "Collecting mana for Emacs..."
321 0 500)))
322 (dotimes (k 500)
323 (sit-for 0.01)
324 (progress-reporter-update progress-reporter k))
325 (progress-reporter-done progress-reporter))
326@end smallexample
327
328@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
329This function creates and returns a @dfn{progress reporter}---an
330object you will use as an argument for all other functions listed
331here. The idea is to precompute as much data as possible to make
332progress reporting very fast.
333
334When this progress reporter is subsequently used, it will display
335@var{message} in the echo area, followed by progress percentage.
336@var{message} is treated as a simple string. If you need it to depend
337on a filename, for instance, use @code{format} before calling this
338function.
339
340@var{min-value} and @var{max-value} arguments stand for starting and
341final states of your operation. For instance, if you scan a buffer,
342they should be the results of @code{point-min} and @code{point-max}
343correspondingly. It is required that @var{max-value} is greater than
344@var{min-value}. If you create progress reporter when some part of
345the operation has already been completed, then specify
346@var{current-value} argument. But normally you should omit it or set
347it to @code{nil}---it will default to @var{min-value} then.
348
349Remaining arguments control the rate of echo area updates. Progress
350reporter will wait for at least @var{min-change} more percents of the
351operation to be completed before printing next message.
352@var{min-time} specifies the minimum time in seconds to pass between
353successive prints. It can be fractional. Depending on Emacs and
354system capabilities, progress reporter may or may not respect this
355last argument or do it with varying precision. Default value for
356@var{min-change} is 1 (one percent), for @var{min-time}---0.2
357(seconds.)
320 358
321Almost all the messages displayed in the echo area are also recorded 359This function calls @code{progress-reporter-update}, so the first
322in the @samp{*Messages*} buffer. 360message is printed immediately.
361@end defun
362
363@defun progress-reporter-update reporter value
364This function does the main work of reporting progress of your
365operation. It displays the message of @var{reporter}, followed by
366progress percentage determined by @var{value}. If percentage is zero,
367or close enough according to the @var{min-change} and @var{min-time}
368arguments, then it is omitted from the output.
369
370@var{reporter} must be the result of a call to
371@code{make-progress-reporter}. @var{value} specifies the current
372state of your operation and must be between @var{min-value} and
373@var{max-value} (inclusive) as passed to
374@code{make-progress-reporter}. For instance, if you scan a buffer,
375then @var{value} should be the result of a call to @code{point}.
376
377This function respects @var{min-change} and @var{min-time} as passed
378to @code{make-progress-reporter} and so does not output new messages
379on every invocation. It is thus very fast and normally you should not
380try to reduce the number of calls to it: resulting overhead will most
381likely negate your effort.
382@end defun
383
384@defun progress-reporter-force-update reporter value &optional new-message
385This function is similar to @code{progress-reporter-update} except
386that it prints a message in the echo area unconditionally.
387
388The first two arguments have the same meaning as for
389@code{progress-reporter-update}. Optional @var{new-message} allows
390you to change the message of the @var{reporter}. Since this functions
391always updates the echo area, such a change will be immediately
392presented to the user.
393@end defun
394
395@defun progress-reporter-done reporter
396This function should be called when the operation is finished. It
397prints the message of @var{reporter} followed by word ``done'' in the
398echo area.
399
400You should always call this function and not hope for
401@code{progress-reporter-update} to print ``100%.'' Firstly, it may
402never print it, there are many good reasons for this not to happen.
403Secondly, ``done'' is more explicit.
404@end defun
405
406@defmac dotimes-with-progress-reporter (var count [result]) message body...
407This is a convenience macro that works the same way as @code{dotimes}
408does, but also reports loop progress using the functions described
409above. It allows you to save some typing.
410
411You can rewrite the example in the beginning of this node using
412this macro this way:
413
414@example
415(dotimes-with-progress-reporter
416 (k 500)
417 "Collecting some mana for Emacs..."
418 (sit-for 0.01))
419@end example
420@end defmac
421
422@node Logging Messages
423@subsection Logging Messages in @samp{*Messages*}
424@cindex logging echo-area messages
425
426 Almost all the messages displayed in the echo area are also recorded
427in the @samp{*Messages*} buffer so that the user can refer back to
428them. This includes all the messages that are output with
429@code{message}.
323 430
324@defopt message-log-max 431@defopt message-log-max
325This variable specifies how many lines to keep in the @samp{*Messages*} 432This variable specifies how many lines to keep in the @samp{*Messages*}
@@ -333,6 +440,48 @@ how to display a message and prevent it from being logged:
333@end example 440@end example
334@end defopt 441@end defopt
335 442
443 To make @samp{*Messages*} more convenient for the user, the logging
444facility combines successive identical messages. It also combines
445successive related messages for the sake of two cases: question
446followed by answer, and a series of progress messages.
447
448 A ``question followed by an answer'' means two messages like the
449ones produced by @code{y-or-n-p}: the first is @samp{@var{question}},
450and the second is @samp{@var{question}...@var{answer}}. The first
451message conveys no additional information beyond what's in the second,
452so logging the second message discards the first from the log.
453
454 A ``series of progress messages'' means successive messages like
455those produced by @code{make-progress-reporter}. They have the form
456@samp{@var{base}...@var{how-far}}, where @var{base} is the same each
457time, while @var{how-far} varies. Logging each message in the series
458discards the previous one, provided they are consecutive.
459
460 The functions @code{make-progress-reporter} and @code{y-or-n-p}
461don't have to do anything special to activate the message log
462combination feature. It operates whenever two consecutive messages
463are logged that share a common prefix ending in @samp{...}.
464
465@node Echo Area Customization
466@subsection Echo Area Customization
467
468 These variables control details of how the echo area works.
469
470@defvar cursor-in-echo-area
471This variable controls where the cursor appears when a message is
472displayed in the echo area. If it is non-@code{nil}, then the cursor
473appears at the end of the message. Otherwise, the cursor appears at
474point---not in the echo area at all.
475
476The value is normally @code{nil}; Lisp programs bind it to @code{t}
477for brief periods of time.
478@end defvar
479
480@defvar echo-area-clear-hook
481This normal hook is run whenever the echo area is cleared---either by
482@code{(message nil)} or for any other reason.
483@end defvar
484
336@defvar echo-keystrokes 485@defvar echo-keystrokes
337This variable determines how much time should elapse before command 486This variable determines how much time should elapse before command
338characters echo. Its value must be an integer or floating point number, 487characters echo. Its value must be an integer or floating point number,
@@ -346,6 +495,19 @@ sequence are echoed immediately.)
346If the value is zero, then command input is not echoed. 495If the value is zero, then command input is not echoed.
347@end defvar 496@end defvar
348 497
498@defopt max-mini-window-height
499This variable specifies the maximum height for resizing minibuffer
500windows. If a float, it specifies a fraction of the height of the
501frame. If an integer, it specifies a number of lines.
502@end defopt
503
504@defvar message-truncate-lines
505Normally, displaying a long message resizes the echo area to display
506the entire message. But if the variable @code{message-truncate-lines}
507is non-@code{nil}, the echo area does not resize, and the message is
508truncated to fit it, as in Emacs 20 and before.
509@end defvar
510
349@node Warnings 511@node Warnings
350@section Reporting Warnings 512@section Reporting Warnings
351@cindex warnings 513@cindex warnings
@@ -535,122 +697,6 @@ symbols. If it matches the first few elements in a warning type, then
535that warning is not logged. 697that warning is not logged.
536@end defopt 698@end defopt
537 699
538@node Progress
539@section Reporting Operation Progress
540@cindex progress reporting
541
542 When an operation can take a while to finish, you should inform the
543user about the progress it makes. This way the user can estimate
544remaining time and clearly see that Emacs is busy working, not hung.
545
546 Functions listed in this section provide simple and efficient way of
547reporting operation progress. Here is a working example that does
548nothing useful:
549
550@smallexample
551(let ((progress-reporter
552 (make-progress-reporter "Collecting mana for Emacs..."
553 0 500)))
554 (dotimes (k 500)
555 (sit-for 0.01)
556 (progress-reporter-update progress-reporter k))
557 (progress-reporter-done progress-reporter))
558@end smallexample
559
560@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
561This function creates and returns a @dfn{progress reporter}---an
562object you will use as an argument for all other functions listed
563here. The idea is to precompute as much data as possible to make
564progress reporting very fast.
565
566When this progress reporter is subsequently used, it will display
567@var{message} in the echo area, followed by progress percentage.
568@var{message} is treated as a simple string. If you need it to depend
569on a filename, for instance, use @code{format} before calling this
570function.
571
572@var{min-value} and @var{max-value} arguments stand for starting and
573final states of your operation. For instance, if you scan a buffer,
574they should be the results of @code{point-min} and @code{point-max}
575correspondingly. It is required that @var{max-value} is greater than
576@var{min-value}. If you create progress reporter when some part of
577the operation has already been completed, then specify
578@var{current-value} argument. But normally you should omit it or set
579it to @code{nil}---it will default to @var{min-value} then.
580
581Remaining arguments control the rate of echo area updates. Progress
582reporter will wait for at least @var{min-change} more percents of the
583operation to be completed before printing next message.
584@var{min-time} specifies the minimum time in seconds to pass between
585successive prints. It can be fractional. Depending on Emacs and
586system capabilities, progress reporter may or may not respect this
587last argument or do it with varying precision. Default value for
588@var{min-change} is 1 (one percent), for @var{min-time}---0.2
589(seconds.)
590
591This function calls @code{progress-reporter-update}, so the first
592message is printed immediately.
593@end defun
594
595@defun progress-reporter-update reporter value
596This function does the main work of reporting progress of your
597operation. It displays the message of @var{reporter}, followed by
598progress percentage determined by @var{value}. If percentage is zero,
599or close enough according to the @var{min-change} and @var{min-time}
600arguments, then it is omitted from the output.
601
602@var{reporter} must be the result of a call to
603@code{make-progress-reporter}. @var{value} specifies the current
604state of your operation and must be between @var{min-value} and
605@var{max-value} (inclusive) as passed to
606@code{make-progress-reporter}. For instance, if you scan a buffer,
607then @var{value} should be the result of a call to @code{point}.
608
609This function respects @var{min-change} and @var{min-time} as passed
610to @code{make-progress-reporter} and so does not output new messages
611on every invocation. It is thus very fast and normally you should not
612try to reduce the number of calls to it: resulting overhead will most
613likely negate your effort.
614@end defun
615
616@defun progress-reporter-force-update reporter value &optional new-message
617This function is similar to @code{progress-reporter-update} except
618that it prints a message in the echo area unconditionally.
619
620The first two arguments have the same meaning as for
621@code{progress-reporter-update}. Optional @var{new-message} allows
622you to change the message of the @var{reporter}. Since this functions
623always updates the echo area, such a change will be immediately
624presented to the user.
625@end defun
626
627@defun progress-reporter-done reporter
628This function should be called when the operation is finished. It
629prints the message of @var{reporter} followed by word ``done'' in the
630echo area.
631
632You should always call this function and not hope for
633@code{progress-reporter-update} to print ``100%.'' Firstly, it may
634never print it, there are many good reasons for this not to happen.
635Secondly, ``done'' is more explicit.
636@end defun
637
638@defmac dotimes-with-progress-reporter (var count [result]) message body...
639This is a convenience macro that works the same way as @code{dotimes}
640does, but also reports loop progress using the functions described
641above. It allows you to save some typing.
642
643You can rewrite the example in the beginning of this node using
644this macro this way:
645
646@example
647(dotimes-with-progress-reporter
648 (k 500)
649 "Collecting some mana for Emacs..."
650 (sit-for 0.01))
651@end example
652@end defmac
653
654@node Invisible Text 700@node Invisible Text
655@section Invisible Text 701@section Invisible Text
656 702
@@ -1628,7 +1674,7 @@ particular parts of the text or the frame.
1628@cindex face id 1674@cindex face id
1629Each face has its own @dfn{face number}, which distinguishes faces at 1675Each face has its own @dfn{face number}, which distinguishes faces at
1630low levels within Emacs. However, for most purposes, you refer to 1676low levels within Emacs. However, for most purposes, you refer to
1631faces in Lisp programs by the symbol that names them. 1677faces in Lisp programs by the symbols that name them.
1632 1678
1633@defun facep object 1679@defun facep object
1634This function returns @code{t} if @var{object} is a face name string 1680This function returns @code{t} if @var{object} is a face name string
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index 9e52b39223e..f954cdc220e 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -984,11 +984,10 @@ Emacs Display
984* Refresh Screen:: Clearing the screen and redrawing everything on it. 984* Refresh Screen:: Clearing the screen and redrawing everything on it.
985* Forcing Redisplay:: Forcing redisplay. 985* Forcing Redisplay:: Forcing redisplay.
986* Truncation:: Folding or wrapping long text lines. 986* Truncation:: Folding or wrapping long text lines.
987* The Echo Area:: Where messages are displayed. 987* The Echo Area:: Displaying messages at the bottom of the screen.
988* Warnings:: Displaying warning messages for the user. 988* Warnings:: Displaying warning messages for the user.
989* Progress:: Informing user about progress of a long operation.
990* Invisible Text:: Hiding part of the buffer text. 989* Invisible Text:: Hiding part of the buffer text.
991* Selective Display:: Hiding part of the buffer text. 990* Selective Display:: Hiding part of the buffer text (the old way).
992* Temporary Displays:: Displays that go away automatically. 991* Temporary Displays:: Displays that go away automatically.
993* Overlays:: Use overlays to highlight parts of the buffer. 992* Overlays:: Use overlays to highlight parts of the buffer.
994* Width:: How wide a character or string is on the screen. 993* Width:: How wide a character or string is on the screen.
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index 79cbe478ea2..895ca48109b 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -257,18 +257,16 @@ satisfies @code{keymapp}.
257 257
258 Here we describe the functions for creating keymaps. 258 Here we describe the functions for creating keymaps.
259 259
260@c ??? This should come after make-sparse-keymap 260@defun make-sparse-keymap &optional prompt
261@defun make-keymap &optional prompt 261This function creates and returns a new sparse keymap with no entries.
262This function creates and returns a new full keymap. That keymap 262(A sparse keymap is the kind of keymap you usually want.) The new
263contains a char-table (@pxref{Char-Tables}) with slots for all 263keymap does not contain a char-table, unlike @code{make-keymap}, and
264characters without modifiers. The new keymap initially binds all 264does not bind any events.
265these characters to @code{nil}, and does not bind any other kind of
266event.
267 265
268@example 266@example
269@group 267@group
270(make-keymap) 268(make-sparse-keymap)
271 @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap]) 269 @result{} (keymap)
272@end group 270@end group
273@end example 271@end example
274 272
@@ -277,18 +275,23 @@ the keymap. The prompt string should be provided for menu keymaps
277(@pxref{Defining Menus}). 275(@pxref{Defining Menus}).
278@end defun 276@end defun
279 277
280@defun make-sparse-keymap &optional prompt 278@defun make-keymap &optional prompt
281This function creates and returns a new sparse keymap with no entries. 279This function creates and returns a new full keymap. That keymap
282The new keymap does not contain a char-table, unlike @code{make-keymap}, 280contains a char-table (@pxref{Char-Tables}) with slots for all
283and does not bind any events. The argument @var{prompt} specifies a 281characters without modifiers. The new keymap initially binds all
284prompt string, as in @code{make-keymap}. 282these characters to @code{nil}, and does not bind any other kind of
283event. The argument @var{prompt} specifies a
284prompt string, as in @code{make-sparse-keymap}.
285 285
286@example 286@example
287@group 287@group
288(make-sparse-keymap) 288(make-keymap)
289 @result{} (keymap) 289 @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
290@end group 290@end group
291@end example 291@end example
292
293A full keymap is more efficient than a sparse keymap when it holds
294lots of bindings; for just a few, the sparse keymap is better.
292@end defun 295@end defun
293 296
294@defun copy-keymap keymap 297@defun copy-keymap keymap
@@ -1435,15 +1438,15 @@ input. One way to do this is by using an appropriate input method
1435construct the key sequence string using @code{multibyte-char-to-unibyte} 1438construct the key sequence string using @code{multibyte-char-to-unibyte}
1436or @code{string-make-unibyte} (@pxref{Converting Representations}). 1439or @code{string-make-unibyte} (@pxref{Converting Representations}).
1437 1440
1438@deffn Command global-set-key key definition 1441@deffn Command global-set-key key binding
1439This function sets the binding of @var{key} in the current global map 1442This function sets the binding of @var{key} in the current global map
1440to @var{definition}. 1443to @var{binding}.
1441 1444
1442@smallexample 1445@smallexample
1443@group 1446@group
1444(global-set-key @var{key} @var{definition}) 1447(global-set-key @var{key} @var{binding})
1445@equiv{} 1448@equiv{}
1446(define-key (current-global-map) @var{key} @var{definition}) 1449(define-key (current-global-map) @var{key} @var{binding})
1447@end group 1450@end group
1448@end smallexample 1451@end smallexample
1449@end deffn 1452@end deffn
@@ -1479,15 +1482,15 @@ This function is implemented simply using @code{define-key}:
1479@end smallexample 1482@end smallexample
1480@end deffn 1483@end deffn
1481 1484
1482@deffn Command local-set-key key definition 1485@deffn Command local-set-key key binding
1483This function sets the binding of @var{key} in the current local 1486This function sets the binding of @var{key} in the current local
1484keymap to @var{definition}. 1487keymap to @var{binding}.
1485 1488
1486@smallexample 1489@smallexample
1487@group 1490@group
1488(local-set-key @var{key} @var{definition}) 1491(local-set-key @var{key} @var{binding})
1489@equiv{} 1492@equiv{}
1490(define-key (current-local-map) @var{key} @var{definition}) 1493(define-key (current-local-map) @var{key} @var{binding})
1491@end group 1494@end group
1492@end smallexample 1495@end smallexample
1493@end deffn 1496@end deffn
diff --git a/lispref/text.texi b/lispref/text.texi
index 3d668738250..5b9b4259a1c 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -3152,6 +3152,10 @@ particular modification hook function appears on several characters
3152being modified by a single primitive, you can't predict how many times 3152being modified by a single primitive, you can't predict how many times
3153the function will be called. 3153the function will be called.
3154 3154
3155If these functions modify the buffer, they should bind
3156@code{inhibit-modification-hooks} to @code{t} around doing so, to
3157avoid confusing the internal mechanism that calls these hooks.
3158
3155@item insert-in-front-hooks 3159@item insert-in-front-hooks
3156@itemx insert-behind-hooks 3160@itemx insert-behind-hooks
3157@kindex insert-in-front-hooks @r{(text property)} 3161@kindex insert-in-front-hooks @r{(text property)}
diff --git a/lispref/variables.texi b/lispref/variables.texi
index 31e42b59c79..38fb929c16d 100644
--- a/lispref/variables.texi
+++ b/lispref/variables.texi
@@ -569,7 +569,7 @@ though being declared using @code{defcustom}@footnote{They may also be
569declared equivalently in @file{cus-start.el}.} or by the first character 569declared equivalently in @file{cus-start.el}.} or by the first character
570of their @code{variable-documentation} property. If the property exists 570of their @code{variable-documentation} property. If the property exists
571and is a string, and its first character is @samp{*}, then the variable 571and is a string, and its first character is @samp{*}, then the variable
572is a user option. 572is a user option. Aliases of user options are also user options.
573@end defun 573@end defun
574 574
575@kindex variable-interactive 575@kindex variable-interactive
@@ -909,18 +909,25 @@ This function sets the variable @var{symbol} by inserting
909position specified by @var{order}. If @var{element} is already a 909position specified by @var{order}. If @var{element} is already a
910member of the list, its position in the list is adjusted according 910member of the list, its position in the list is adjusted according
911to @var{order}. Membership is tested using @code{eq}. 911to @var{order}. Membership is tested using @code{eq}.
912The valued returned is the resulting list, whether updated or not. 912This function returns the resulting list, whether updated or not.
913 913
914The @var{order} is a number, and the elements on list are sorted in 914The @var{order} is typically a number (integer or float), and the
915increasing numerical order. Elements without a numeric list order are 915elements of the list are sorted in non-decreasing numerical order.
916placed at the end of @var{symbol}. 916
917@var{order} may also be omitted or @code{nil}. Then the numeric order
918of @var{element} stays unchanged if it already has one; otherwise,
919@var{element} has no numeric order. Elements without a numeric list
920order are placed at the end of the list, in no particular order.
921
922Any other value for @var{order} removes the numeric order of @var{element}
923if it already has one; otherwise, it is equivalent to @code{nil}.
917 924
918The argument @var{symbol} is not implicitly quoted; 925The argument @var{symbol} is not implicitly quoted;
919@code{add-to-ordered-list} is an ordinary function, like @code{set} 926@code{add-to-ordered-list} is an ordinary function, like @code{set}
920and unlike @code{setq}. Quote the argument yourself if that is what 927and unlike @code{setq}. Quote the argument yourself if that is what
921you want. 928you want.
922 929
923The ordering information is stored in an alist on @var{symbol}'s 930The ordering information is stored in a hash table on @var{symbol}'s
924@code{list-order} property. 931@code{list-order} property.
925@end defun 932@end defun
926 933
@@ -945,11 +952,11 @@ Here's a scenario showing how to use @code{add-to-ordered-list}:
945(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.} 952(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.}
946 @result{} (a c b d) 953 @result{} (a c b d)
947 954
948(add-to-ordered-list 'foo 'b 2) ;; @r{Move @code{b}.} 955(add-to-ordered-list 'foo 'e) ;; @r{Add @code{e}}.
949 @result{} (a b c d) 956 @result{} (a c b e d)
950 957
951foo ;; @r{@code{foo} was changed.} 958foo ;; @r{@code{foo} was changed.}
952 @result{} (a b c d) 959 @result{} (a c b e d)
953@end example 960@end example
954 961
955@node Variable Scoping 962@node Variable Scoping
diff --git a/lispref/windows.texi b/lispref/windows.texi
index 5a58c31f39a..ec372d98aa8 100644
--- a/lispref/windows.texi
+++ b/lispref/windows.texi
@@ -1523,9 +1523,12 @@ does not work with @code{scroll-margin}. The default value is zero.
1523@end defopt 1523@end defopt
1524 1524
1525@defopt scroll-preserve-screen-position 1525@defopt scroll-preserve-screen-position
1526If this option is non-@code{nil}, the scroll functions move point so 1526If this option is @code{t}, scrolling which would move the current
1527that the vertical position of the cursor is unchanged, when that is 1527point position out of the window chooses the new position of point
1528possible. 1528so that the vertical position of the cursor is unchanged, if possible.
1529
1530If it is non-@code{nil} and not @code{t}, then the scrolling functions
1531always preserve the vertical position of point, if possible.
1529@end defopt 1532@end defopt
1530 1533
1531@defopt next-screen-context-lines 1534@defopt next-screen-context-lines
diff --git a/lwlib/COPYING b/lwlib/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/lwlib/COPYING
+++ b/lwlib/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/mac/COPYING b/mac/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/mac/COPYING
+++ b/mac/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/man/ChangeLog b/man/ChangeLog
index 1357692cc6c..11dc6f1b5cb 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,16 @@
12005-07-03 Richard M. Stallman <rms@gnu.org>
2
3 * flymake.texi (Example -- Configuring a tool called directly):
4 Update name of flymake-build-relative-filename.
5
62005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
7
8 * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
9
102005-06-29 Carsten Dominik <dominik@science.uva.nl>
11
12 * org.texi: Version 3.12
13
12005-06-24 Richard M. Stallman <rms@gnu.org> 142005-06-24 Richard M. Stallman <rms@gnu.org>
2 15
3 * display.texi (Text Display): Change index entries. 16 * display.texi (Text Display): Change index entries.
@@ -422,8 +435,7 @@
422 435
4232005-04-12 Luc Teirlinck <teirllm@auburn.edu> 4362005-04-12 Luc Teirlinck <teirllm@auburn.edu>
424 437
425 * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by 438 * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default.
426 default.
427 439
4282005-04-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 4402005-04-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
429 441
@@ -451,8 +463,7 @@
4512005-04-10 Luc Teirlinck <teirllm@auburn.edu> 4632005-04-10 Luc Teirlinck <teirllm@auburn.edu>
452 464
453 * rmail.texi (Rmail Basics): Clarify description of `q' and `b'. 465 * rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
454 (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric 466 (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric arg.
455 argument.
456 (Rmail Inbox): Give full name of `rmail-primary-inbox-list'. 467 (Rmail Inbox): Give full name of `rmail-primary-inbox-list'.
457 (Rmail Output): Clarify which statements apply to `o', `C-o' and 468 (Rmail Output): Clarify which statements apply to `o', `C-o' and
458 `w', respectively. 469 `w', respectively.
@@ -462,7 +473,7 @@
462 473
4632005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 4742005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
464 475
465 * xresources.texi (Lucid Resources): Added fonSet resource. 476 * xresources.texi (Lucid Resources): Add fonSet resource.
466 477
4672005-04-06 Katsumi Yamaoka <yamaoka@jpl.org> 4782005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
468 479
@@ -570,8 +581,7 @@
570 581
571 * programs.texi (ForIndent Vars): `fortran-if-indent' does other 582 * programs.texi (ForIndent Vars): `fortran-if-indent' does other
572 constructs as well. 583 constructs as well.
573 (Fortran Motion): Add fortran-end-of-block, 584 (Fortran Motion): Add fortran-end-of-block, fortran-beginning-of-block.
574 fortran-beginning-of-block.
575 585
5762005-03-29 Kenichi Handa <handa@m17n.org> 5862005-03-29 Kenichi Handa <handa@m17n.org>
577 587
@@ -636,8 +646,8 @@
636 (Special Diary Entries, Importing Diary): Change some xrefs to 646 (Special Diary Entries, Importing Diary): Change some xrefs to
637 point to emacs-xtra rather than elisp. 647 point to emacs-xtra rather than elisp.
638 648
639 * emacs-xtra.texi (Calendar Customizing): Move 649 * emacs-xtra.texi (Calendar Customizing):
640 view-diary-entries-initially, view-calendar-holidays-initially, 650 Move view-diary-entries-initially, view-calendar-holidays-initially,
641 mark-diary-entries-in-calendar, mark-holidays-in-calendar to main 651 mark-diary-entries-in-calendar, mark-holidays-in-calendar to main
642 Emacs Manual. 652 Emacs Manual.
643 (Appt Customizing): Merge entire section into main Emacs Manual. 653 (Appt Customizing): Merge entire section into main Emacs Manual.
@@ -683,8 +693,8 @@
683 693
6842005-03-26 Jay Belanger <belanger@truman.edu> 6942005-03-26 Jay Belanger <belanger@truman.edu>
685 695
686 * calc.texi (Simplifying Formulas, Rewrite Rules): Change 696 * calc.texi (Simplifying Formulas, Rewrite Rules):
687 description of top and bottom of fraction. 697 Change description of top and bottom of fraction.
688 (Modulo Forms): Move description of how to create modulo forms to 698 (Modulo Forms): Move description of how to create modulo forms to
689 earlier in the section. 699 earlier in the section.
690 (Fraction Mode): Suggest using : to get a fraction by dividing. 700 (Fraction Mode): Suggest using : to get a fraction by dividing.
@@ -730,8 +740,8 @@
730 740
7312005-03-25 Werner Lemberg <wl@gnu.org> 7412005-03-25 Werner Lemberg <wl@gnu.org>
732 742
733 * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi: Replace 743 * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi:
734 `legal' with `valid'. 744 Replace `legal' with `valid'.
735 745
7362005-03-25 Werner Lemberg <wl@gnu.org> 7462005-03-25 Werner Lemberg <wl@gnu.org>
737 747
@@ -740,7 +750,7 @@
7402005-03-24 Jay Belanger <belanger@truman.edu> 7502005-03-24 Jay Belanger <belanger@truman.edu>
741 751
742 * calc.texi (General Mode Commands) 752 * calc.texi (General Mode Commands)
743 (Mode Settings in Embedded Mode): Added some explanation of 753 (Mode Settings in Embedded Mode): Add some explanation of
744 recording mode settings. 754 recording mode settings.
745 755
7462005-03-24 Richard M. Stallman <rms@gnu.org> 7562005-03-24 Richard M. Stallman <rms@gnu.org>
diff --git a/man/flymake.texi b/man/flymake.texi
index bf224b28fde..7a9ca11f4d5 100644
--- a/man/flymake.texi
+++ b/man/flymake.texi
@@ -422,7 +422,7 @@ First, we write the @code{init-function}:
422(defun flymake-perl-init (buffer) 422(defun flymake-perl-init (buffer)
423 (let* ((temp-file (flymake-init-create-temp-buffer-copy 423 (let* ((temp-file (flymake-init-create-temp-buffer-copy
424 buffer 'flymake-create-temp-inplace)) 424 buffer 'flymake-create-temp-inplace))
425 (local-file (concat (flymake-build-relative-path 425 (local-file (concat (flymake-build-relative-filename
426 (file-name-directory 426 (file-name-directory
427 (buffer-file-name 427 (buffer-file-name
428 (current-buffer))) 428 (current-buffer)))
diff --git a/man/gnus.texi b/man/gnus.texi
index f386297e925..b1d5be22651 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -21750,27 +21750,18 @@ The specs are applied left-to-right.
21750 21750
21751@item gnus-nocem-verifyer 21751@item gnus-nocem-verifyer
21752@vindex gnus-nocem-verifyer 21752@vindex gnus-nocem-verifyer
21753@findex mc-verify 21753@findex pgg-verify
21754This should be a function for verifying that the NoCeM issuer is who she 21754This should be a function for verifying that the NoCeM issuer is who she
21755says she is. The default is @code{mc-verify}, which is a Mailcrypt 21755says she is. The default is @code{pgg-verify}, which returns
21756function. If this is too slow and you don't care for verification 21756non-@code{nil} if the verification is successful, otherwise (including
21757(which may be dangerous), you can set this variable to @code{nil}. 21757the case the NoCeM message was not signed) returns @code{nil}. If this
21758 21758is too slow and you don't care for verification (which may be dangerous),
21759If you want signed NoCeM messages to be verified and unsigned messages 21759you can set this variable to @code{nil}.
21760not to be verified (but used anyway), you could do something like: 21760
21761 21761Formerly the default was @code{mc-verify}, which is a Mailcrypt
21762@lisp 21762function. While you can still use it, you can change it into
21763(setq gnus-nocem-verifyer 'my-gnus-mc-verify) 21763@code{pgg-verify} running with GnuPG if you are willing to add the
21764 21764@acronym{PGP} public keys to GnuPG's keyring.
21765(defun my-gnus-mc-verify ()
21766 (not (eq 'forged
21767 (ignore-errors
21768 (if (mc-verify)
21769 t
21770 'forged)))))
21771@end lisp
21772
21773This might be dangerous, though.
21774 21765
21775@item gnus-nocem-directory 21766@item gnus-nocem-directory
21776@vindex gnus-nocem-directory 21767@vindex gnus-nocem-directory
diff --git a/man/org.texi b/man/org.texi
index e3d35cf19fa..1c1ac5ae4f9 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,8 +4,8 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 3.11 7@set VERSION 3.13
8@set DATE June 2005 8@set DATE July 2005
9 9
10@dircategory Emacs 10@dircategory Emacs
11@direntry 11@direntry
@@ -109,8 +109,16 @@ Document Structure
109Tables 109Tables
110 110
111* Built-in table editor:: Simple tables 111* Built-in table editor:: Simple tables
112* table.el:: Complex tables 112* Table calculations:: Compute a field from other fields
113* orgtbl-mode:: The table editor as minor mode 113* orgtbl-mode:: The table editor as minor mode
114* table.el:: Complex tables
115
116Calculations in tables
117
118* Formula syntax:: How to write a formula
119* Applying a formula:: How to get a formula executed
120* Recalculation:: Re-applying all formulas in a table
121* Summing:: Summing columns and rows
114 122
115Hyperlinks 123Hyperlinks
116 124
@@ -203,6 +211,7 @@ different levels and in different ways, for example
203@example 211@example
204@r{@bullet{} as an outline extension with visibility cycling and structure editing} 212@r{@bullet{} as an outline extension with visibility cycling and structure editing}
205@r{@bullet{} as an ASCII system and table editor to take structured notes} 213@r{@bullet{} as an ASCII system and table editor to take structured notes}
214@r{@bullet{} as an ASCII table editor with some spreadsheet-like capabilities}
206@r{@bullet{} as a simple hypertext system, with HTML export} 215@r{@bullet{} as a simple hypertext system, with HTML export}
207@r{@bullet{} as a TODO list editor} 216@r{@bullet{} as a TODO list editor}
208@r{@bullet{} as a full agenda and planner with deadlines and work scheduling} 217@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
@@ -384,7 +393,7 @@ Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
384Show all. 393Show all.
385@end table 394@end table
386 395
387When Emacs firsts visits a Org-mode file, the global state is set to 396When Emacs first visits an Org-mode file, the global state is set to
388OVERVIEW, i.e. only the top level headlines are visible. This can be 397OVERVIEW, i.e. only the top level headlines are visible. This can be
389configured through the variable @code{org-startup-folded}, or on a 398configured through the variable @code{org-startup-folded}, or on a
390per-file basis by adding one of the following lines anywhere in the 399per-file basis by adding one of the following lines anywhere in the
@@ -435,9 +444,9 @@ visible.
435@cindex promotion, of subtrees 444@cindex promotion, of subtrees
436@cindex demotion, of subtrees 445@cindex demotion, of subtrees
437@cindex subtree, cut and paste 446@cindex subtree, cut and paste
438@cindex pasting, subtrees 447@cindex pasting, of subtrees
439@cindex cutting, subtrees 448@cindex cutting, of subtrees
440@cindex copying, subtrees 449@cindex copying, of subtrees
441 450
442@table @kbd 451@table @kbd
443@kindex M-@key{RET} 452@kindex M-@key{RET}
@@ -493,11 +502,11 @@ functionality.
493@section Archiving 502@section Archiving
494@cindex archiving 503@cindex archiving
495 504
496When an project represented by a (sub)tree is finished, you may want 505When a project represented by a (sub)tree is finished, you may want
497to move the tree to an Archive place, either in the same file under a 506to move the tree to an archive place, either in the same file under a
498special top-level heading, or even to a different file. 507special top-level heading, or even to a different file.
499@table @kbd 508@table @kbd
500@kindex @kbd{C-c $} 509@kindex C-c $
501@item @kbd{C-c $} 510@item @kbd{C-c $}
502Archive the subtree starting at the cursor position to the location 511Archive the subtree starting at the cursor position to the location
503given by @code{org-archive-location}. 512given by @code{org-archive-location}.
@@ -524,7 +533,7 @@ An important feature of Org-mode is the ability to construct
524sparse tree means that the entire document is folded as much as 533sparse tree means that the entire document is folded as much as
525possible, but the selected information is made visible along with the 534possible, but the selected information is made visible along with the
526headline structure above it@footnote{See also the variable 535headline structure above it@footnote{See also the variable
527@code{org-show-following-heading}}. Just try it out and you will see 536@code{org-show-following-heading}.}. Just try it out and you will see
528immediately how it works. 537immediately how it works.
529 538
530Org-mode contains several commands creating such trees. The most 539Org-mode contains several commands creating such trees. The most
@@ -549,7 +558,7 @@ C-v} creates a sparse TODO tree (@pxref{TODO basics}).
549@cindex visible text, printing 558@cindex visible text, printing
550To print a sparse tree, you can use the Emacs command 559To print a sparse tree, you can use the Emacs command
551@code{ps-print-buffer-with-faces} which does not print invisible parts 560@code{ps-print-buffer-with-faces} which does not print invisible parts
552of the document @footnote{this does not work under XEmacs, because 561of the document @footnote{This does not work under XEmacs, because
553XEmacs uses selective display for outlining, not text properties}. 562XEmacs uses selective display for outlining, not text properties}.
554Or you can use the command @kbd{C-c C-x v} to copy the visible part of 563Or you can use the command @kbd{C-c C-x v} to copy the visible part of
555the document to another file (extension @file{.txt}) which then can be 564the document to another file (extension @file{.txt}) which then can be
@@ -559,18 +568,18 @@ printed in any desired way.
559@chapter Tables 568@chapter Tables
560@cindex tables 569@cindex tables
561 570
562For taking notes, tables are an essential tool because they allow 571Org-mode has a very fast and intuitive table editor built-in.
563immediate and clear structuring of data. Org-mode has a very fast and 572Spreadsheet-like calculations are supported in connection with the
564intuitive table editor built-in. More complex tables can be created 573Emacs @file{calc} package.
565with the Emacs table.el package.
566 574
567@menu 575@menu
568* Built-in table editor:: Simple tables 576* Built-in table editor:: Simple tables
569* table.el:: Complex tables 577* Table calculations:: Compute a field from other fields
570* orgtbl-mode:: The table editor as minor mode 578* orgtbl-mode:: The table editor as minor mode
579* table.el:: Complex tables
571@end menu 580@end menu
572 581
573@node Built-in table editor, table.el, Tables, Tables 582@node Built-in table editor, Table calculations, Tables, Tables
574@section The built-in table editor 583@section The built-in table editor
575@cindex table editor, builtin 584@cindex table editor, builtin
576 585
@@ -587,13 +596,13 @@ like this:
587@end example 596@end example
588 597
589A table is re-aligned automatically each time you press @key{TAB} or 598A table is re-aligned automatically each time you press @key{TAB} or
590@key{RET} inside the table. @key{TAB} also moves to the next field 599@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
591(@key{RET} to the next row) and creates new table rows at the end of the 600the next field (@key{RET} to the next row) and creates new table rows
592table or before horizontal lines. The indentation of the table is set 601at the end of the table or before horizontal lines. The indentation
593by the first line. Any line starting with @samp{|-} is considered as a 602of the table is set by the first line. Any line starting with
594horizontal separator line and will be expanded on the next re-align to 603@samp{|-} is considered as a horizontal separator line and will be
595span the whole table width. So, to create the above table, you would 604expanded on the next re-align to span the whole table width. So, to
596only type 605create the above table, you would only type
597 606
598@example 607@example
599|Name|Phone|Age 608|Name|Phone|Age
@@ -605,10 +614,9 @@ fields.
605 614
606@table @kbd 615@table @kbd
607@tsubheading{Creation and conversion} 616@tsubheading{Creation and conversion}
608@kindex C-c C-c 617@item M-x org-table-create
609@item C-c C-c 618Creates an empty Org-mode table. However, it is much easier to just
610Recognize @file{table.el} table. Works when the cursor is in a 619start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
611table.el table
612 620
613@kindex C-c C-c 621@kindex C-c C-c
614@item C-c C-c 622@item C-c C-c
@@ -619,10 +627,6 @@ separated. If not, lines are split at whitespace into fields. You
619can use a prefix argument to indicate how many consecutive spaces are 627can use a prefix argument to indicate how many consecutive spaces are
620at least required to indicate a field separator (default: just one). 628at least required to indicate a field separator (default: just one).
621 629
622@item M-x org-table-create
623Creates an empty Org-mode table. However, it is much easier to just
624start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
625
626@tsubheading{Re-aligning and field motion} 630@tsubheading{Re-aligning and field motion}
627@kindex C-c C-c 631@kindex C-c C-c
628@item C-c C-c 632@item C-c C-c
@@ -635,7 +639,7 @@ necessary.
635 639
636@kindex S-@key{TAB} 640@kindex S-@key{TAB}
637@item S-@key{TAB} 641@item S-@key{TAB}
638Move to previous field. 642Re-align, move to previous field.
639 643
640@kindex @key{RET} 644@kindex @key{RET}
641@item @key{RET} 645@item @key{RET}
@@ -674,19 +678,19 @@ Insert a new row above (with arg: below) the current row.
674 678
675@kindex C-c - 679@kindex C-c -
676@item C-c - 680@item C-c -
677Insert a horizontal line below current row. With prefix arg, line is 681Insert a horizontal line below current row. With prefix arg, the line
678created above the current line. 682is created above the current line.
679 683
680@tsubheading{Regions} 684@tsubheading{Regions}
681@kindex C-c C-h M-w 685@kindex C-c C-h M-w
682@item C-c C-h M-w 686@item C-c C-h M-w
683Copy an rectangular region from a table to a special clipboard. Point 687Copy a rectangular region from a table to a special clipboard. Point
684and mark determine edge fields of the rectangle. The process ignores 688and mark determine edge fields of the rectangle. The process ignores
685horizontal separator lines. 689horizontal separator lines.
686@kindex C-c C-h C-w 690@kindex C-c C-h C-w
687@item C-c C-h C-w 691@item C-c C-h C-w
688Copy an rectangular region from a table to a special clipboard, and 692Copy a rectangular region from a table to a special clipboard, and
689blank all fields in the rectangle. 693blank all fields in the rectangle. So this is the ``cut'' operation.
690@kindex C-c C-h C-y 694@kindex C-c C-h C-y
691@item C-c C-h C-y 695@item C-c C-h C-y
692Paste a rectangular region into a table. 696Paste a rectangular region into a table.
@@ -707,6 +711,29 @@ current field gets blank, and the content is appended to the field
707above. 711above.
708 712
709@tsubheading{Calculations} 713@tsubheading{Calculations}
714@cindex formula, in tables
715@cindex calculations, in tables
716@kindex C-c =
717@item C-c =
718Replace current field with the result of a formula. When called with a
719@kbd{C-u} prefix, apply the equation in the current field and down
720through the current column to a horizonal separator line or the end of
721the table. For details, see @ref{Table calculations}.
722
723@kindex C-c *
724@item C-c *
725Recalculate the current row by applying the stored formulas from left
726to right. When called with a @kbd{C-u} prefix, recalculate the
727entire table, starting with the first non-header line (i.e. below the
728first horizontal separator line). For details, see @ref{Table calculations}.
729
730@kindex C-#
731@item C-#
732Rotate the recalculation mark in first column through the states
733@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
734these marks see @ref{Table calculations}. When there is an active
735region, change all marks in the region.
736
710@kindex C-c ? 737@kindex C-c ?
711@item C-c ? 738@item C-c ?
712Which table column is the cursor in? Displays number >0 in echo 739Which table column is the cursor in? Displays number >0 in echo
@@ -718,7 +745,7 @@ area.
718@kindex C-c + 745@kindex C-c +
719@item C-c + 746@item C-c +
720Sum the numbers in the current column, or in the rectangle defined by 747Sum the numbers in the current column, or in the rectangle defined by
721the active region. The result is displayed in the echo area and can 748the active region. The result is shown in the echo area and can
722be inserted with @kbd{C-y}. 749be inserted with @kbd{C-y}.
723 750
724@kindex S-@key{RET} 751@kindex S-@key{RET}
@@ -730,23 +757,12 @@ along with it. Depending on the variable
730incremented during copy. This key is also used by CUA-mode 757incremented during copy. This key is also used by CUA-mode
731(@pxref{Interaction}). 758(@pxref{Interaction}).
732 759
733@cindex formula, in tables
734@cindex calculations, in tables
735@kindex C-c =
736@item C-c =
737Replace current field with the result of a formula. Requires the
738Emacs calc package. The formula can access the current field with
739@samp{$}, and the other fields in the current row
740with @samp{$1}, @samp{$2},... For details see the documentation of the
741command @command{org-table-eval-formula}.
742
743@tsubheading{Miscellaneous} 760@tsubheading{Miscellaneous}
744@kindex C-c | 761@kindex C-c |
745@item C-c | 762@item C-c |
746Toggle the visibility of vertical lines in tables. The lines are 763Toggle the visibility of vertical lines in tables. The lines are
747still there, only made invisible with a text property. Any @samp{|} 764still there, only made invisible with a text property. Any @samp{|}
748added by hand will become invisible on the next align. 765added by hand will become invisible on the next align.
749Typographically it is good style to have no vertical lines in tables.
750 766
751@item M-x org-table-import 767@item M-x org-table-import
752Import a file as a table. The table should be TAB- or whitespace 768Import a file as a table. The table should be TAB- or whitespace
@@ -771,23 +787,237 @@ it off with
771@noindent The only table command which then still works is 787@noindent The only table command which then still works is
772@kbd{C-c C-c} to do a manual re-align. 788@kbd{C-c C-c} to do a manual re-align.
773 789
774@node table.el, orgtbl-mode, Built-in table editor, Tables 790@node Table calculations, orgtbl-mode, Built-in table editor, Tables
791@section Calculations in tables
792@cindex calculations, in tables
793
794While the Org-mode table editor misses many features of a full
795spreadsheet, it nevertheless has very useful capabilities to compute
796fields. In horizontal direction, it can use complex expressions to
797compute a field from other fields @emph{in the same row}, using named
798columns, constants and parameters. The Emacs @file{calc} package is
799required for this feature to work. In vertical direction, only
800summing is supported.
801
802@menu
803* Formula syntax:: How to write a formula
804* Applying a formula:: How to get a formula executed
805* Recalculation:: Re-applying all formulas in a table
806* Summing:: Summing columns and rows
807@end menu
808
809@node Formula syntax, Applying a formula, Table calculations, Table calculations
810@subsection Formula syntax
811
812A formula for horizontal computations can be any algebraic expression
813understood by the Emacs @file{calc} package. Before evaluation,
814variable substitution takes place: @samp{$} is replaced by the field
815the cursor is currently in, and $1..$n reference the fields in the
816current row. @samp{$name} is interpreted as the name of a column,
817parameter or constant. Constants are defined globally through the
818variable @code{org-table-formula-constants}. If you have the
819@file{constants.el} package, it will also be used to resolve
820constants, including natural constants like @samp{$k} for Plancks
821constant, units like @samp{$km} for kilometers. Column names and
822parameters can be specified in special table lines. These are
823described below, see @ref{Recalculation}.
824
825A formula can contain an optional mode string after a semicolon. This
826string consists of flags to influence calc's modes@footnote{By
827default, Org-mode uses the standard calc modes (precision 12, angular
828units degrees, fraction and symbolic modes off). However, the display
829format which has been changed to @code{(float 5)} to keep tables
830compact. The default settings can be configured using the variable
831@code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
832switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
833@samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
834or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
835and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
836respectively. In addition, you may provide a @code{printf} specifier
837to reformat the final result. A few examples:
838@example
839 $1+$2 @r{Sum of first and second field}
840 $1+$2;%.2f @r{Same, format result to two decimals}
841 exp($2)+exp($1) @r{Math functions can be used}
842 $;%.1f @r{Reformat current cell to 1 decimal}
843 ($3-32)*5/9 @r{degrees F -> C conversion}
844 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
845 tan($1);Dp3s1 @r{compute in degrees, precision 3, display SCI 1}
846 vmean($2..$7) @r{compute column range mean, using vector function}
847 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
848@end example
849
850@node Applying a formula, Recalculation, Formula syntax, Table calculations
851@subsection Applying a formula
852
853To apply a formula to a field, type it directly into the field,
854preceded by an equal sign, like @samp{=$1+$2}. When you press
855@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
856field, the formula will be evaluated and replaced with the result. If
857the field contains only @samp{=}, the formula most recently applied
858anywhere in the @emph{same column} will be used.
859
860For each column, Org-mode will remember the most recently used
861formula. The information is stored in a special line directly below
862the table. When adding/deleting/moving columns with the appropriate
863commands, the stored equations will be modified accordingly. When a
864column used in a calculation is removed, references to this column
865become invalid and will cause an error upon applying the equation.
866
867Instead of typing an equation into the field, you may also use the
868command @kbd{C-c =}. It prompts for a formula (with default taken
869from the @samp{#+TBLFM:} line) and applies it to the current field.
870If you use a prefix argument (i.e. @kbd{C-u C-c =}), the formula will
871be applied to the current field and down to the next separator line
872or the end of the table. A numerical prefix will apply it to that
873many fields in the current column.
874
875When the evaluation of a formula leads to an error, the field content
876becomes the string @samp{#ERROR}. If you would like see what is going
877on during variable substitution and calculation in order to find a
878bug, turn on formula debugging in the menu and repeat the calculation
879by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
880Detailed information will be displayed.
881
882@node Recalculation, Summing, Applying a formula, Table calculations
883@subsection Recalculation
884
885To recompute all the fields in a line, use the command @kbd{C-c *}.
886It re-applies all stored equations to the current row, from left to
887right. With a @kbd{C-u} prefix, this will be done to every line in
888the table, so use this command it you want to make sure the entire
889table is up-to-date. A more automatic way of recalculating the
890current line requires marking the line: If the first column of a row
891contains only @samp{#}, the row will be re-computed with every
892@key{TAB}, @key{RET}, and @kbd{C-c C-c} in this row. Here is an
893example of a table that collects exam results of students, with some
894rows activated for semi-automatic computations.
895
896@example
897@group
898|---+---------+--------+--------+--------+-------+------|
899| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
900|---+---------+--------+--------+--------+-------+------|
901| ! | | P1 | P2 | P3 | Tot | |
902| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
903| ^ | | m1 | m2 | m3 | mt | |
904|---+---------+--------+--------+--------+-------+------|
905| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
906| # | Sara | 7 | 14 | 19 | 40 | 8.0 |
907| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
908|---+---------+--------+--------+--------+-------+------|
909| $ | max=50 | | | | | |
910|---+---------+--------+--------+--------+-------+------|
911#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f
912@end group
913@end example
914@noindent
915The example also demonstrates a number of features:
916@enumerate
917@item
918If the first field of a row contains only @samp{!}, this row defines
919@emph{names} for the different columns so that you can write
920@samp{$Tot} instead of @samp{$6} --- useful in larger tables,
921when counting columns becomes error prone.
922@item
923If the first field of a row contains only @samp{$}, fields in this row
924can define @emph{parameters} for formulas. For example, if a field in
925a @samp{$} row contains @samp{max=50}, then formulas in this table can
926refer to the value 50 using @samp{$max}. Parameters work exactly like
927constants, only that they can be defined on a per-table basis.
928Changing a parameter and then recalculating the table can be useful
929and fun.
930@item
931It the first field contains only @samp{^}, fields in this row define
932names for the fields in the row above, for example @samp{$m1} for
933@samp{10}. Similarly, if the marking character is @samp{_}, the names
934are valie for the fields in the row below.
935@item
936A column range @samp{$P1..$P3} is expanded to a vector, so that calc's
937vector functions (in this case @samp{vsum}, but there are many more)
938can be applied to ranges. For a range, columns may be referenced by
939name or number, in either sequence.
940@end enumerate
941
942@noindent If a table contains any line with @samp{#} as the
943first field, @kbd{C-u C-c *} will only change the marked lines and
944leave all unmarked lines alone. You can also mark a line with
945@samp{*}. These lines will also be recalculated with @kbd{C-u C-c *},
946but not upon @key{TAB} and @key{RET}. Use this for lines which are
947slow to calculate.
948
949Just to wet your appetite on what can be done with the fantastic
950@file{calc} package, here is a table that computes the Taylor series
951for a couple of functions (homework: try that with Excel :-)
952
953@example
954@group
955|---+-------------+---+-----+--------------------------------------|
956| | Func | n | x | Result |
957|---+-------------+---+-----+--------------------------------------|
958| # | exp(x) | 1 | x | 1 + x |
959| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
960| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
961| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
962| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
963| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
964|---+-------------+---+-----+--------------------------------------|
965#+TBLFM: $5=taylor($2,$4,$3);n3
966@end group
967@end example
968
969@node Summing, , Recalculation, Table calculations
970@subsection Summing
971
972Finally, when typing a formula into a field, a number of special
973keywords execute predefined sums over the current row or column and
974enter the result into the current field. These calculations are
975one-off, the formula is not stored, and you will neet to re-enter it
976in order to compute again.
977
978@example
979= @r{Execute the stored formula valid in this column.}
980=sum @r{Sum all fields above the current (alias @code{=sumv}).}
981=sumh @r{Sum all fields to the left of the current field.}
982=sum3 @r{Same as @samp{=sum}, but use just 3 fields above current.}
983@end example
984
985@node orgtbl-mode, table.el, Table calculations, Tables
986@section The Orgtbl minor mode
987@cindex orgtbl-mode
988@cindex minor mode for tables
989
990If you like the intuitive way the Org-mode table editor works, you
991might want to use it also in other modes like text-mode or mail-mode.
992The minor mode Orgtbl-mode makes this possible. You can always toggle
993the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
994example in mail mode, use
995@lisp
996(add-hook 'mail-mode-hook 'turn-on-orgtbl)
997@end lisp
998
999@node table.el, , orgtbl-mode, Tables
775@section The @file{table.el} package 1000@section The @file{table.el} package
776@kindex C-c C-c 1001@kindex C-c C-c
777@cindex table editor, table.el 1002@cindex table editor, @file{table.el}
778@cindex @file{table.el} 1003@cindex @file{table.el}
779 1004
780More complex ASCII tables (with automatic line wrapping, column- and 1005Complex ASCII tables with automatic line wrapping, column- and
781row-spanning, and alignment) can be created using the Emacs table 1006row-spanning, and alignment can be created using the Emacs table
782package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}). 1007package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
783When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode 1008When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
784will call @command{table-recognize-table} and move the cursor into the 1009will call @command{table-recognize-table} and move the cursor into the
785table. Inside a table, the keymap of Org-mode is inactive. In order 1010table. Inside a table, the keymap of Org-mode is inactive. In order
786to execute org-related commands, leave the table. 1011to execute Org-mode-related commands, leave the table.
787 1012
788@table @kbd 1013@table @kbd
789@kindex C-c # 1014@kindex C-c C-c
790@item C-c # 1015@item C-c C-c
1016Recognize @file{table.el} table. Works when the cursor is in a
1017table.el table.
1018
1019@kindex C-c ~
1020@item C-c ~
791Insert a table.el table. If there is already a table at point, this 1021Insert a table.el table. If there is already a table at point, this
792command converts it between the table.el format and the Org-mode 1022command converts it between the table.el format and the Org-mode
793format. See the documentation string of the command 1023format. See the documentation string of the command
@@ -795,20 +1025,6 @@ format. See the documentation string of the command
795possible. 1025possible.
796@end table 1026@end table
797 1027
798@node orgtbl-mode, , table.el, Tables
799@section The Orgtbl minor mode
800@cindex orgtbl-mode
801@cindex Minor mode for tables
802
803If you like the intuitive way the Org-mode table editor works, you
804might want to use it also in other modes like text-mode or mail-mode.
805The minor mode Orgtbl-mode makes this possible. You can always toggle
806the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
807example in mail mode, use
808@lisp
809(add-hook 'mail-mode-hook 'turn-on-orgtbl)
810@end lisp
811
812@node Hyperlinks, TODO items, Tables, Top 1028@node Hyperlinks, TODO items, Tables, Top
813@chapter Hyperlinks 1029@chapter Hyperlinks
814@cindex hyperlinks 1030@cindex hyperlinks
@@ -826,6 +1042,8 @@ articles, emails and much more.
826@cindex links 1042@cindex links
827@cindex GNUS links 1043@cindex GNUS links
828@cindex BBDB links 1044@cindex BBDB links
1045@cindex URL links
1046@cindex file links
829@cindex VM links 1047@cindex VM links
830@cindex RMAIL links 1048@cindex RMAIL links
831@cindex WANDERLUST links 1049@cindex WANDERLUST links
@@ -877,6 +1095,8 @@ The key binding @kbd{C-c l} is only a suggestion - see
877@ref{Installation and Activation}. 1095@ref{Installation and Activation}.
878 1096
879@kindex C-c C-l 1097@kindex C-c C-l
1098@cindex completion, of links
1099@cindex completion, of file names
880@item C-c C-l 1100@item C-c C-l
881Insert a link. This prompts for a link to be inserted into the 1101Insert a link. This prompts for a link to be inserted into the
882buffer. You can just type a link, using one of the link type prefixes 1102buffer. You can just type a link, using one of the link type prefixes
@@ -969,8 +1189,8 @@ Before inserting the text into a tree, the function ensures that the
969text has a headline, i.e. a first line that starts with a @samp{*}. 1189text has a headline, i.e. a first line that starts with a @samp{*}.
970If not, a headline is constructed from the current date and some 1190If not, a headline is constructed from the current date and some
971additional data. If the variable @code{org-adapt-indentation} is 1191additional data. If the variable @code{org-adapt-indentation} is
972non-@code{nil}, the entire text is also indented so that it starts in 1192non-nil, the entire text is also indented so that it starts in the
973the same column as the headline (after the asterisks). 1193same column as the headline (after the asterisks).
974 1194
975@node TODO items, Timestamps, Hyperlinks, Top 1195@node TODO items, Timestamps, Hyperlinks, Top
976@chapter TODO items 1196@chapter TODO items
@@ -1057,6 +1277,7 @@ of working on an item, for example
1057 org-todo-interpretation 'sequence) 1277 org-todo-interpretation 'sequence)
1058@end lisp 1278@end lisp
1059 1279
1280@cindex completion, of TODO keywords
1060With this setup, the command @kbd{C-c C-t} will cycle an entry from 1281With this setup, the command @kbd{C-c C-t} will cycle an entry from
1061TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also 1282TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also
1062use a prefix argument to quickly select a specific state. For example 1283use a prefix argument to quickly select a specific state. For example
@@ -1084,9 +1305,9 @@ would be set up like this:
1084 1305
1085In this case, different keywords do not indicate a sequence, but 1306In this case, different keywords do not indicate a sequence, but
1086rather different types. So it is normally not useful to change from 1307rather different types. So it is normally not useful to change from
1087one type to another. Therefore, in this case the the behavior of the 1308one type to another. Therefore, in this case the behavior of the
1088command @kbd{C-c C-t} is changed slightly@footnote{This is also true 1309command @kbd{C-c C-t} is changed slightly@footnote{This is also true
1089for the @kbd{t} command in the timeline and agenda buffers}. When 1310for the @kbd{t} command in the timeline and agenda buffers.}. When
1090used several times in succession, it will still cycle through all 1311used several times in succession, it will still cycle through all
1091names. But when when you return to the item after some time and 1312names. But when when you return to the item after some time and
1092execute @kbd{C-c C-t} again, it will switch from each name directly to 1313execute @kbd{C-c C-t} again, it will switch from each name directly to
@@ -1111,7 +1332,7 @@ anywhere in the file:
1111#+TYP_TODO: Fred Sara Lucy Mike DONE 1332#+TYP_TODO: Fred Sara Lucy Mike DONE
1112@end example 1333@end example
1113 1334
1114@cindex Completing option keywords 1335@cindex Completion, of option keywords
1115@kindex M-@key{TAB} 1336@kindex M-@key{TAB}
1116@noindent To make sure you are using the correct keyword, type 1337@noindent To make sure you are using the correct keyword, type
1117@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion. 1338@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
@@ -1171,7 +1392,7 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
1171@itemx S-@key{down} 1392@itemx S-@key{down}
1172Increase/decrease priority of current item. Note that these keys are 1393Increase/decrease priority of current item. Note that these keys are
1173also used to modify time stamps (@pxref{Creating timestamps}). 1394also used to modify time stamps (@pxref{Creating timestamps}).
1174Furthermore, these keys is also used by CUA-mode 1395Furthermore, these keys are also used by CUA-mode
1175(@pxref{Interaction}). 1396(@pxref{Interaction}).
1176@end table 1397@end table
1177 1398
@@ -1221,27 +1442,27 @@ example:
1221@end example 1442@end example
1222 1443
1223@item DEADLINE 1444@item DEADLINE
1224@cindex deadline 1445@cindex DEADLINE keyword
1225If a time stamp is preceded by the word @samp{DEADLINE:}, the task 1446If a time stamp is preceded by the word @samp{DEADLINE:}, the task
1226(most likely a TODO item) is supposed to be finished on that date, and 1447(most likely a TODO item) is supposed to be finished on that date, and
1227it will be listed then. In addition, the compilation for the 1448it will be listed then. In addition, the compilation for @emph{today}
1228@emph{current day} will carry a warning about the approaching or 1449will carry a warning about the approaching or missed deadline,
1229missed deadline, starting @code{org-deadline-warning-days} before the 1450starting @code{org-deadline-warning-days} before the due date, and
1230due date, and continuing until the entry is marked DONE. An example: 1451continuing until the entry is marked DONE. An example:
1231 1452
1232@example 1453@example
1233*** TODO write article about the Earth for the Guide 1454*** TODO write article about the Earth for the Guide
1234 The editor in charge is bbdb:Ford Prefect 1455 The editor in charge is <bbdb:Ford Prefect>
1235 DEADLINE: <2004-02-29 Sun> 1456 DEADLINE: <2004-02-29 Sun>
1236@end example 1457@end example
1237 1458
1238@item SCHEDULED 1459@item SCHEDULED
1239@cindex scheduled 1460@cindex DEADLINE keyword
1240If a time stamp is preceded by the word @samp{SCHEDULED:}, it means 1461If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
1241you are planning to start working on that task on the given date. The 1462you are planning to start working on that task on the given date. The
1242headline will be listed under the given date. In addition, a reminder 1463headline will be listed under the given date. In addition, a reminder
1243that the scheduled date has passed will be present in the compilation 1464that the scheduled date has passed will be present in the compilation
1244for the @emph{current day}, until the entry is marked DONE. I.e., the 1465for @emph{today}, until the entry is marked DONE. I.e., the
1245task will automatically be forwarded. 1466task will automatically be forwarded.
1246@end table 1467@end table
1247 1468
@@ -1310,7 +1531,7 @@ CUA-mode (@pxref{Interaction}).
1310Change the item under the cursor in a timestamp. The cursor can be on 1531Change the item under the cursor in a timestamp. The cursor can be on
1311a year, month, day, hour or minute. Note that if the cursor is not at 1532a year, month, day, hour or minute. Note that if the cursor is not at
1312a time stamp, these same keys modify the priority of an item. 1533a time stamp, these same keys modify the priority of an item.
1313(@pxref{Priorities}). These key bindings conflict with CUA-mode 1534(@pxref{Priorities}). The key bindings also conflict with CUA-mode
1314(@pxref{Interaction}). 1535(@pxref{Interaction}).
1315 1536
1316 1537
@@ -1325,9 +1546,9 @@ into the following column).
1325@cindex date, reading in minibuffer 1546@cindex date, reading in minibuffer
1326@cindex time, reading in minibuffer 1547@cindex time, reading in minibuffer
1327@cindex calendar, for selecting date 1548@cindex calendar, for selecting date
1328When org prompts for a date/time, the function reading your input will 1549When Org-mode prompts for a date/time, the function reading your input
1329replace anything you choose not to specify with the current date and 1550will replace anything you choose not to specify with the current date
1330time. For details, see the documentation string of 1551and time. For details, see the documentation string of
1331@command{org-read-date}. Also, a calender will pop up to allow 1552@command{org-read-date}. Also, a calender will pop up to allow
1332selecting a date. The calendar can be fully controlled from the 1553selecting a date. The calendar can be fully controlled from the
1333minibuffer, and a date can be selected with the following commands: 1554minibuffer, and a date can be selected with the following commands:
@@ -1487,12 +1708,12 @@ Emacs.
1487The display in the agenda buffer looks best if the category is not 1708The display in the agenda buffer looks best if the category is not
1488longer than 10 characters. 1709longer than 10 characters.
1489 1710
1490@subsection Time Specifications 1711@subsection Time-of-Day Specifications
1491 1712
1492Org-mode checks each agenda item for a time specification. The time 1713Org-mode checks each agenda item for a time-of-day specification. The
1493can be part of the time stamp that triggered inclusion into the agenda, 1714time can be part of the time stamp that triggered inclusion into the
1494for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time ranges can 1715agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
1495be specified with two time stamps, like 1716ranges can be specified with two time stamps, like
1496@c 1717@c
1497@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}. 1718@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
1498 1719
@@ -1608,10 +1829,14 @@ Delete other windows.
1608 1829
1609@kindex w 1830@kindex w
1610@item w 1831@item w
1611Toggle between weekly and daily view. 1832Switch to weekly view (7 days displayed together)
1612 1833
1613@kindex d 1834@kindex d
1614@item d 1835@item d
1836Switch to daily view (just one day displayed)
1837
1838@kindex D
1839@item D
1615Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}. 1840Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
1616 1841
1617@kindex g 1842@kindex g
@@ -1663,7 +1888,7 @@ Display weighted priority of current item.
1663@kindex + 1888@kindex +
1664@kindex S-@key{up} 1889@kindex S-@key{up}
1665@item + 1890@item +
1666@item S-@key{up} 1891@itemx S-@key{up}
1667Increase the priority of the current item. The priority is changed in 1892Increase the priority of the current item. The priority is changed in
1668the original buffer, but the agenda is not resorted. Use the @kbd{r} 1893the original buffer, but the agenda is not resorted. Use the @kbd{r}
1669key for this. 1894key for this.
@@ -1671,7 +1896,7 @@ key for this.
1671@kindex - 1896@kindex -
1672@kindex S-@key{down} 1897@kindex S-@key{down}
1673@item - 1898@item -
1674@item S-@key{down} 1899@itemx S-@key{down}
1675Decrease the priority of the current item. 1900Decrease the priority of the current item.
1676 1901
1677@kindex S-@key{right} 1902@kindex S-@key{right}
@@ -1782,12 +2007,12 @@ agenda, you only need to customize the variable
1782entries including holidays, anniversaries etc will be included in the 2007entries including holidays, anniversaries etc will be included in the
1783agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and 2008agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
1784@key{RET} can be used from the agenda buffer to jump to the diary 2009@key{RET} can be used from the agenda buffer to jump to the diary
1785file, in order to edit existing diary entries. Also the @kbd{i} 2010file, in order to edit existing diary entries. The @kbd{i} command to
1786command to insert new entries for the current date works in the agenda 2011insert new entries for the current date works in the agenda buffer, as
1787buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to 2012well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
1788display Sunrise/Sunset times, show lunar phases and to convert to 2013Sunrise/Sunset times, show lunar phases and to convert to other
1789other calendars, respectively. @kbd{c} can be used to switch back and 2014calendars, respectively. @kbd{c} can be used to switch back and forth
1790forth between calendar and agenda. 2015between calendar and agenda.
1791 2016
1792@node Agenda to diary, , Diary to agenda, Calendar/Diary integration 2017@node Agenda to diary, , Diary to agenda, Calendar/Diary integration
1793@subsection Including the agenda into the diary 2018@subsection Including the agenda into the diary
@@ -1827,9 +2052,8 @@ also the documentation of the @command{org-diary} function.
1827@node Exporting, Miscellaneous, Timeline and Agenda, Top 2052@node Exporting, Miscellaneous, Timeline and Agenda, Top
1828@chapter Exporting 2053@chapter Exporting
1829@cindex exporting 2054@cindex exporting
1830@cindex ASCII file 2055@cindex ASCII export
1831@cindex HTML 2056@cindex HTML export
1832
1833 2057
1834@cindex headline levels, for exporting 2058@cindex headline levels, for exporting
1835For printing and sharing of notes, an Org-mode document can be 2059For printing and sharing of notes, an Org-mode document can be
@@ -1896,6 +2120,7 @@ You can make words @b{*bold*}, @i{/italic/}, and _underlined_
1896@item 2120@item
1897Simple @TeX{}-like math constructs are interpreted: 2121Simple @TeX{}-like math constructs are interpreted:
1898 2122
2123@cindex completion, of @TeX{} symbols
1899@itemize @minus 2124@itemize @minus
1900@item 2125@item
1901@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote 2126@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
@@ -1931,6 +2156,7 @@ they can all be turned off with corresponding variables.
1931@section Export options 2156@section Export options
1932@cindex options, for export 2157@cindex options, for export
1933 2158
2159@cindex completion, of option keywords
1934The exporter recognizes special lines in the buffer which provide 2160The exporter recognizes special lines in the buffer which provide
1935additional information. These lines may be put anywhere in the file. 2161additional information. These lines may be put anywhere in the file.
1936The whole set of lines can be inserted into the buffer with @kbd{C-c 2162The whole set of lines can be inserted into the buffer with @kbd{C-c
@@ -1953,7 +2179,7 @@ you can
1953@cindex headline levels 2179@cindex headline levels
1954@cindex section-numbers 2180@cindex section-numbers
1955@cindex table of contents 2181@cindex table of contents
1956@cindex linebreak-preservation 2182@cindex linebreak preservation
1957@cindex quoted html tags 2183@cindex quoted html tags
1958@cindex fixed-width sections 2184@cindex fixed-width sections
1959@cindex tables 2185@cindex tables
@@ -2003,10 +2229,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
2003 2229
2004@node Completion, Customization, Miscellaneous, Miscellaneous 2230@node Completion, Customization, Miscellaneous, Miscellaneous
2005@section Completion 2231@section Completion
2006@cindex complete @TeX{} symbols 2232@cindex completion, of @TeX{} symbols
2007@cindex complete TODO keywords 2233@cindex completion, of TODO keywords
2008@cindex complete dictionary words 2234@cindex completion, of dictionary words
2009@cindex complete option keywords 2235@cindex completion, of option keywords
2236@cindex completion, of keyword formulas
2010 2237
2011Org-mode supports in-buffer completion. This type of completion does 2238Org-mode supports in-buffer completion. This type of completion does
2012not make use of the minibuffer. You simply type a few letters into 2239not make use of the minibuffer. You simply type a few letters into
@@ -2027,6 +2254,8 @@ After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
2027option keyword is already complete, pressing @kbd{M-@key{TAB}} again 2254option keyword is already complete, pressing @kbd{M-@key{TAB}} again
2028will insert example settings for this keyword. 2255will insert example settings for this keyword.
2029@item 2256@item
2257After @samp{=}, complete keyword formulas for tables.
2258@item
2030Elsewhere, complete dictionary words using ispell. 2259Elsewhere, complete dictionary words using ispell.
2031@end itemize 2260@end itemize
2032@end table 2261@end table
@@ -2047,7 +2276,7 @@ Group} from the @code{Org->Customization} menu.
2047@section Frequently asked questions 2276@section Frequently asked questions
2048 2277
2049@enumerate 2278@enumerate
2050@item @b{Org-mode seems to be useful default mode for the various 2279@item @b{Org-mode seems to be a useful default mode for the various
2051@file{README} files I have scattered through my directories. How do I 2280@file{README} files I have scattered through my directories. How do I
2052turn it on for all @file{README} files?} 2281turn it on for all @file{README} files?}
2053@example 2282@example
@@ -2065,8 +2294,8 @@ possible because of the different outline implementation.
2065 2294
2066@item @b{Is there an easy way to insert links to web locations?}@* 2295@item @b{Is there an easy way to insert links to web locations?}@*
2067@cindex URL, paste into buffer 2296@cindex URL, paste into buffer
2068Sure, just paste them into the buffer. A plain-text URL-like string 2297Sure, just type or paste them into the buffer. A plain-text URL-like
2069is directly interpreted as a link. 2298string is directly interpreted as a link.
2070 2299
2071@item @b{When I export my TODO list, every TODO item becomes a 2300@item @b{When I export my TODO list, every TODO item becomes a
2072separate section. How do I enforce these items to be exported as an 2301separate section. How do I enforce these items to be exported as an
@@ -2107,6 +2336,13 @@ To insert an empty table template, just type @samp{|-} and use
2107@code{org-table-default-size}. However, just starting to type the 2336@code{org-table-default-size}. However, just starting to type the
2108first line is usually much easier. 2337first line is usually much easier.
2109 2338
2339@item @b{One of my table columns has started to fill up with
2340@samp{#ERROR}. What is going on?}@*
2341Org-mode tried to compute the column from other fields using a
2342formula stored in the @samp{#+TBLFMT:} line just below the table, and
2343the evaluation of the formula fails. Fix the fields used in the
2344formula, or fix the formula, or remove it!
2345
2110@item @b{When I am in the last column of a table and just above a 2346@item @b{When I am in the last column of a table and just above a
2111horizontal line in the table, pressing TAB creates a new table line 2347horizontal line in the table, pressing TAB creates a new table line
2112@i{before} the horizontal line. How can I quickly move to the line 2348@i{before} the horizontal line. How can I quickly move to the line
@@ -2125,34 +2361,42 @@ indentation of the first line and realign with @key{TAB}.
2125@node Interaction, Bugs, FAQ, Miscellaneous 2361@node Interaction, Bugs, FAQ, Miscellaneous
2126@section Interaction with other packages 2362@section Interaction with other packages
2127@cindex packages, interaction with other 2363@cindex packages, interaction with other
2128@cindex @file{planner.el} 2364Org-mode can cooperate with the following packages:
2129@cindex @file{remember.el}
2130@cindex @file{table.el}
2131@file{Org.el} can cooperate with the following packages:
2132 2365
2133@table @asis 2366@table @asis
2134@cindex @file{remember.el}
2135@item @file{remember.el} by John Wiegley
2136Org mode cooperates with remember, see @ref{Remember}.
2137@cindex @file{plannner.el}
2138@item @file{planner.el} by John Wiegley
2139Planner is another tool to plan work and keep track of tasks. Planner
2140uses a multi-file approach with project pages and day pages. Is based
2141on Emacs-Wiki. It can be useful to display the agenda entries
2142resulting from org files in day-pages of the planner. This can be
2143done through the diary of the calendar: Integrate org files into the
2144diary as described above, and then turn on the diary support of
2145planner.
2146@cindex @file{table.el} 2367@cindex @file{table.el}
2147@item @file{table.el} by Takaaki Ota 2368@item @file{table.el} by Takaaki Ota
2148Org mode cooperates with table.el, see @ref{table.el}. 2369Org mode cooperates with table.el, see @ref{table.el}.
2370@cindex @file{calc.el}
2371@item @file{calc.el} by Dave Gillespie
2372Org-mode uses the calc package for implementing spreadsheet
2373functionality in its tables (@pxref{Table calculations}). Org-modes
2374checks for the availability of calc by looking for the function
2375@code{calc-eval} which should be autoloaded in your setup if calc has
2376been installed properly. As of Emacs 22, calc is part of the Emacs
2377distribution. Another possibility for interaction between the two
2378packages is using calc for embedded calculations. @xref{Embedded Mode,
2379, Embedded Mode, calc, The calc maanual}.
2380@cindex @file{constants.el}
2381@item @file{constants.el} by Carsten Dominik
2382In a table formula (@pxref{Table calculations}), it is possible to use
2383names for natural constants or units. Instead of defining you own
2384constants in the variable @code{org-table-formula-constants}, install
2385the @file{constants} package which defines a large number of constants
2386and units, and lets you use unit prefixes like @samp{M} for
2387@samp{Mega} etc. You will need version 2.0 of this package, available
2388at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
2389the function @code{constants-get}, which has to be autoloaded in your
2390setup. See the installation instructions in the file
2391@file{constants.el}.
2392@cindex @file{remember.el}
2149@cindex @file{CUA.el} 2393@cindex @file{CUA.el}
2150@item @file{CUA.el} by Kim. F. Storm 2394@item @file{CUA.el} by Kim. F. Storm
2151Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys 2395Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
2152used by CUA-mode (as well as pc-select-mode and s-region-mode) to 2396used by CUA-mode (as well as pc-select-mode and s-region-mode) to
2153select and extend the region. If you want to use one of these 2397select and extend the region. If you want to use one of these
2154packages along with Org-mode, configure the variable 2398packages along with Org-mode, configure the variable
2155@code{org-CUA-compatible}. When set, Org-mode will move the folowing 2399@code{org-CUA-compatible}. When set, Org-mode will move the following
2156keybindings in org-mode files, and in the agenda buffer (but not 2400keybindings in org-mode files, and in the agenda buffer (but not
2157during date selection). 2401during date selection).
2158@example 2402@example
@@ -2163,7 +2407,17 @@ S-RET -> C-S-RET
2163Yes, these are unfortunately more difficult to remember. If you want 2407Yes, these are unfortunately more difficult to remember. If you want
2164to have other replacement keys, look at the variable 2408to have other replacement keys, look at the variable
2165@code{org-disputed-keys}. 2409@code{org-disputed-keys}.
2166 2410@item @file{remember.el} by John Wiegley
2411Org mode cooperates with remember, see @ref{Remember}.
2412@cindex @file{planner.el}
2413@item @file{planner.el} by John Wiegley
2414Planner is another tool to plan work and keep track of tasks. Planner
2415uses a multi-file approach with project pages and day pages. Is based
2416on Emacs-Wiki. If Planner is your primary tool, it can be useful to
2417display the agenda entries resulting from org files in day-pages of
2418the planner. This can be done through the diary of the calendar:
2419Integrate org files into the diary as described above, and then turn
2420on the diary support of planner.
2167@end table 2421@end table
2168 2422
2169@node Bugs, Acknowledgments, Interaction, Miscellaneous 2423@node Bugs, Acknowledgments, Interaction, Miscellaneous
@@ -2177,7 +2431,7 @@ have found too hard to fix.
2177@item 2431@item
2178If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the 2432If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
2179filling is correctly disabled. However, if some text directly 2433filling is correctly disabled. However, if some text directly
2180(without an empty line in between) preceeds or follws a table, calling 2434(without an empty line in between) preceeds or follows a table, calling
2181@code{fill-paragraph} in that text will also fill the table like 2435@code{fill-paragraph} in that text will also fill the table like
2182normal text. Also, @code{fill-region} does bypass the 2436normal text. Also, @code{fill-region} does bypass the
2183@code{fill-paragraph} code and will fill tables like normal text. 2437@code{fill-paragraph} code and will fill tables like normal text.
@@ -2186,6 +2440,10 @@ When the application called by @kbd{C-c C-o} to open a file link fails
2186(for example because the application does not exits or refuses to open 2440(for example because the application does not exits or refuses to open
2187the file), it does so silently. No error message is displayed. 2441the file), it does so silently. No error message is displayed.
2188@item 2442@item
2443Recalculating a table line applies the formulas from left to right.
2444If a formula calculated fields further down the row, multiple
2445recalculation may be needed to get all fields consistent.
2446@item
2189Under XEmacs, if Org-mode entries are included into the diary, it is 2447Under XEmacs, if Org-mode entries are included into the diary, it is
2190not possible to jump back from the diary to the org file. Apparently, 2448not possible to jump back from the diary to the org file. Apparently,
2191the text properties are lost when the fancy-diary-display is used. 2449the text properties are lost when the fancy-diary-display is used.
@@ -2214,8 +2472,8 @@ suggestions and patches.
2214 2472
2215@itemize @bullet 2473@itemize @bullet
2216@item 2474@item
2217Matthias Rempe (Oelde) provided ideas and suggestions, a patch 2475Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
2218introducing Windows NT/2000 support, and quality control. 2476NT/2000 support, and quality control.
2219@item 2477@item
2220Kevin Rogers contributed code to access VM files on remote hosts. 2478Kevin Rogers contributed code to access VM files on remote hosts.
2221@item 2479@item
@@ -2229,8 +2487,8 @@ his ideas have found their way into the agenda.
2229Philip Rooke created the Org-mode reference card. He also helped with 2487Philip Rooke created the Org-mode reference card. He also helped with
2230beta testing and contributed a number of very useful ideas. 2488beta testing and contributed a number of very useful ideas.
2231@item 2489@item
2232Christian Schlauer proposed angular brackets around links, and some 2490Christian Schlauer proposed angular brackets around links, among other
2233other useful stuff. 2491things.
2234@item 2492@item
2235David Wainberg suggested to implement an archiving mechanism. 2493David Wainberg suggested to implement an archiving mechanism.
2236@item 2494@item
@@ -2269,7 +2527,6 @@ conflict with other packages.
2269 2527
2270@bye 2528@bye
2271 2529
2272
2273@ignore 2530@ignore
2274 arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac 2531 arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
2275@end ignore 2532@end ignore
diff --git a/msdos/COPYING b/msdos/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/msdos/COPYING
+++ b/msdos/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/nt/COPYING b/nt/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/nt/COPYING
+++ b/nt/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/src/COPYING b/src/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/src/COPYING
+++ b/src/COPYING
@@ -2,7 +2,7 @@
2 Version 2, June 1991 2 Version 2, June 1991
3 3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies 6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed. 7 of this license document, but changing it is not allowed.
8 8
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
305 305
306 You should have received a copy of the GNU General Public License 306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software 307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309 309
310 310
311Also add information on how to contact you by electronic and paper mail. 311Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
313If the program is interactive, make it output a short notice like this 313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode: 314when it starts in an interactive mode:
315 315
316 Gnomovision version 69, Copyright (C) year name of author 316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it 318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details. 319 under certain conditions; type `show c' for details.
diff --git a/src/ChangeLog b/src/ChangeLog
index 046d1a321fe..3753d88a0e8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,81 @@
12005-07-03 Richard M. Stallman <rms@gnu.org>
2
3 * xdisp.c (try_window): Fix previous change in how it handles
4 a partially-visible line or one only partly past the margin.
5
6 * window.c (window_scroll_pixel_based): Take account
7 of this_scroll_margin when finding point when scrolling up.
8
92005-06-29 Ralf Angeli <angeli@iwi.uni-sb.de>
10
11 * window.c (window_scroll_pixel_based, window_scroll_line_based):
12 Handle `scroll-preserve-screen-position' non-nil, non-t specially.
13 (syms_of_window): <scroll-preserve-screen-position>: Doc fix.
14
152005-07-02 Juri Linkov <juri@jurta.org>
16
17 * w32term.c (w32_draw_vertical_window_border): Use foreground of
18 VERTICAL_BORDER_FACE_ID for vertical border line.
19
202005-07-02 Eli Zaretskii <eliz@gnu.org>
21
22 * fileio.c (Fcopy_file): Rearrange the code that calls fchown and
23 fchmod so that chmod doesn't get called on MSDOS before the file
24 is closed.
25
262005-07-01 Jason Rumney <jasonr@gnu.org>
27
28 * w32term.c (cleartype_active): New flag for enabling sub-pixel
29 workaround.
30 (w32_initialize): Initialize it.
31 (w32_native_per_char_metric): Allow a couple of extra pixels when
32 Cleartype is active.
33
34 * w32term.c (w32_initialize): Move check for screen reader here
35 from syms_of_w32term.
36
372005-06-30 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
38
39 * xterm.c (handle_one_xevent): bzero compose_status when nbytes
40 is not zero.
41
422005-07-01 Masatake YAMATO <jet@gyve.org>
43
44 * emacs.c (main): Passing ADD_NO_RANDOMIZE to
45 `personality'.
46
472005-06-30 Juri Linkov <juri@jurta.org>
48
49 * xdisp.c (x_draw_vertical_border): If left fringe is not present
50 decrease x coord of vertical border by 1 pixel to not occupy text
51 area of the right window.
52
53 * xterm.c (x_draw_vertical_window_border): Use foreground of
54 VERTICAL_BORDER_FACE_ID for vertical border line.
55
56 * term.c (turn_on_face): In standout mode apply specified
57 fg to bg, and specified bg to fg (this makes the logic of
58 inversion on terminal consistent with X).
59
602005-06-29 Juanma Barranquero <lekktu@gmail.com>
61
62 * eval.c (user_variable_p_eh): New function.
63 (Fuser_variable_p): Use it. Clarify docstring.
64 Return t for aliases of user options, nil for alias loops.
65
662005-06-27 Richard M. Stallman <rms@gnu.org>
67
68 * eval.c (Fdefvar): Improve error message.
69
702005-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
71
72 * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
73 change.
74
752005-06-27 Juanma Barranquero <lekktu@gmail.com>
76
77 * eval.c (Fdefvar): Don't try to set constant symbols.
78
12005-06-25 Richard M. Stallman <rms@gnu.org> 792005-06-25 Richard M. Stallman <rms@gnu.org>
2 80
3 * macfns.c (Fx_show_tip): Pass new arg to try_window. 81 * macfns.c (Fx_show_tip): Pass new arg to try_window.
@@ -46,17 +124,16 @@
46 * xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix. 124 * xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
47 (syms_of_xdisp) <void-text-area-pointer>: Doc fix. 125 (syms_of_xdisp) <void-text-area-pointer>: Doc fix.
48 126
49 * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on 127 * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
50 MSDOS/Windows.
51 128
522005-06-23 Richard M. Stallman <rms@gnu.org> 1292005-06-23 Richard M. Stallman <rms@gnu.org>
53 130
54 * xdisp.c (get_next_display_element): Finish reversing the tests of 131 * xdisp.c (get_next_display_element): Finish reversing the tests of
55 Vnobreak_char_display. 132 Vnobreak_char_display.
56 133
57 * xdisp.c (Vnobreak_char_display): Renamed from Vshow_nonbreak_escape. 134 * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
58 All uses changed. 135 All uses changed.
59 (Qnobreak_space): Renamed from Qno_break_space. All uses changed. 136 (Qnobreak_space): Rename from Qno_break_space. All uses changed.
60 (syms_of_xdisp): Define nobreak-char-display and nobreak-space. 137 (syms_of_xdisp): Define nobreak-char-display and nobreak-space.
61 138
62 * fileio.c (Frename_file): Preserve owner and group, if possible, 139 * fileio.c (Frename_file): Preserve owner and group, if possible,
@@ -352,8 +429,7 @@
352 429
3532005-06-06 Eli Zaretskii <eliz@gnu.org> 4302005-06-06 Eli Zaretskii <eliz@gnu.org>
354 431
355 * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): 432 * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
356 Remove macros.
357 433
358 * unexw32.c (RVA_TO_PTR): Move here from w32heap.h. 434 * unexw32.c (RVA_TO_PTR): Move here from w32heap.h.
359 435
diff --git a/src/emacs.c b/src/emacs.c
index c26dc9de9e3..5e0f42981f7 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -919,7 +919,13 @@ main (argc, argv
919 { 919 {
920 /* Set this so we only do this once. */ 920 /* Set this so we only do this once. */
921 putenv("EMACS_HEAP_EXEC=true"); 921 putenv("EMACS_HEAP_EXEC=true");
922 personality (PER_LINUX32); 922
923 /* A flag to turn off address randomization which is introduced
924 in linux kernel shipped with fedora core 4 */
925#define ADD_NO_RANDOMIZE 0x0040000
926 personality (PER_LINUX32 | ADD_NO_RANDOMIZE);
927#undef ADD_NO_RANDOMIZE
928
923 execvp (argv[0], argv); 929 execvp (argv[0], argv);
924 930
925 /* If the exec fails, try to dump anyway. */ 931 /* If the exec fails, try to dump anyway. */
diff --git a/src/eval.c b/src/eval.c
index c33021da7b7..17e9f7f4360 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -806,6 +806,10 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
806 register Lisp_Object sym, tem, tail; 806 register Lisp_Object sym, tem, tail;
807 807
808 sym = Fcar (args); 808 sym = Fcar (args);
809 if (SYMBOL_CONSTANT_P (sym))
810 error ("Constant symbol `%s' specified in defvar",
811 SDATA (SYMBOL_NAME (sym)));
812
809 tail = Fcdr (args); 813 tail = Fcdr (args);
810 if (!NILP (Fcdr (Fcdr (tail)))) 814 if (!NILP (Fcdr (Fcdr (tail))))
811 error ("Too many arguments"); 815 error ("Too many arguments");
@@ -885,12 +889,24 @@ usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */)
885 return sym; 889 return sym;
886} 890}
887 891
892/* Error handler used in Fuser_variable_p. */
893static Lisp_Object
894user_variable_p_eh (ignore)
895 Lisp_Object ignore;
896{
897 return Qnil;
898}
899
888DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0, 900DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0,
889 doc: /* Returns t if VARIABLE is intended to be set and modified by users. 901 doc: /* Return t if VARIABLE is intended to be set and modified by users.
890\(The alternative is a variable used internally in a Lisp program.) 902\(The alternative is a variable used internally in a Lisp program.)
891Determined by whether the first character of the documentation 903A variable is a user variable if
892for the variable is `*' or if the variable is customizable (has a non-nil 904\(1) the first character of its documentation is `*', or
893value of `standard-value' or of `custom-autoload' on its property list). */) 905\(2) it is customizable (its property list contains a non-nil value
906 of `standard-value' or `custom-autoload'), or
907\(3) it is an alias for another user variable.
908Return nil if VARIABLE is an alias and there is a loop in the
909chain of symbols. */)
894 (variable) 910 (variable)
895 Lisp_Object variable; 911 Lisp_Object variable;
896{ 912{
@@ -899,23 +915,37 @@ value of `standard-value' or of `custom-autoload' on its property list). */)
899 if (!SYMBOLP (variable)) 915 if (!SYMBOLP (variable))
900 return Qnil; 916 return Qnil;
901 917
902 documentation = Fget (variable, Qvariable_documentation); 918 /* If indirect and there's an alias loop, don't check anything else. */
903 if (INTEGERP (documentation) && XINT (documentation) < 0) 919 if (XSYMBOL (variable)->indirect_variable
904 return Qt; 920 && NILP (internal_condition_case_1 (indirect_variable, variable,
905 if (STRINGP (documentation) 921 Qt, user_variable_p_eh)))
906 && ((unsigned char) SREF (documentation, 0) == '*')) 922 return Qnil;
907 return Qt; 923
908 /* If it is (STRING . INTEGER), a negative integer means a user variable. */ 924 while (1)
909 if (CONSP (documentation) 925 {
910 && STRINGP (XCAR (documentation)) 926 documentation = Fget (variable, Qvariable_documentation);
911 && INTEGERP (XCDR (documentation)) 927 if (INTEGERP (documentation) && XINT (documentation) < 0)
912 && XINT (XCDR (documentation)) < 0) 928 return Qt;
913 return Qt; 929 if (STRINGP (documentation)
914 /* Customizable? See `custom-variable-p'. */ 930 && ((unsigned char) SREF (documentation, 0) == '*'))
915 if ((!NILP (Fget (variable, intern ("standard-value")))) 931 return Qt;
916 || (!NILP (Fget (variable, intern ("custom-autoload"))))) 932 /* If it is (STRING . INTEGER), a negative integer means a user variable. */
917 return Qt; 933 if (CONSP (documentation)
918 return Qnil; 934 && STRINGP (XCAR (documentation))
935 && INTEGERP (XCDR (documentation))
936 && XINT (XCDR (documentation)) < 0)
937 return Qt;
938 /* Customizable? See `custom-variable-p'. */
939 if ((!NILP (Fget (variable, intern ("standard-value"))))
940 || (!NILP (Fget (variable, intern ("custom-autoload")))))
941 return Qt;
942
943 if (!XSYMBOL (variable)->indirect_variable)
944 return Qnil;
945
946 /* An indirect variable? Let's follow the chain. */
947 variable = XSYMBOL (variable)->value;
948 }
919} 949}
920 950
921DEFUN ("let*", FletX, SletX, 1, UNEVALLED, 0, 951DEFUN ("let*", FletX, SletX, 1, UNEVALLED, 0,
diff --git a/src/fileio.c b/src/fileio.c
index ac81f73df16..24820f6d3f9 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2523,7 +2523,7 @@ uid and gid of FILE to NEWNAME. */)
2523 copyable by us. */ 2523 copyable by us. */
2524 input_file_statable_p = (fstat (ifd, &st) >= 0); 2524 input_file_statable_p = (fstat (ifd, &st) >= 0);
2525 2525
2526#if !defined (DOS_NT) || __DJGPP__ > 1 2526#if !defined (MSDOS) || __DJGPP__ > 1
2527 if (out_st.st_mode != 0 2527 if (out_st.st_mode != 0
2528 && st.st_dev == out_st.st_dev && st.st_ino == out_st.st_ino) 2528 && st.st_dev == out_st.st_dev && st.st_ino == out_st.st_ino)
2529 { 2529 {
@@ -2576,25 +2576,16 @@ uid and gid of FILE to NEWNAME. */)
2576 report_file_error ("I/O error", Fcons (newname, Qnil)); 2576 report_file_error ("I/O error", Fcons (newname, Qnil));
2577 immediate_quit = 0; 2577 immediate_quit = 0;
2578 2578
2579 /* Preserve the owner and group, if requested. */ 2579#ifndef MSDOS
2580 if (input_file_statable_p && ! NILP (preserve_uid_gid)) 2580 /* Preserve the original file modes, and if requested, also its
2581 fchown (ofd, st.st_uid, st.st_gid); 2581 owner and group. */
2582
2583 if (input_file_statable_p) 2582 if (input_file_statable_p)
2584 { 2583 {
2585#ifndef MSDOS 2584 if (! NILP (preserve_uid_gid))
2585 fchown (ofd, st.st_uid, st.st_gid);
2586 fchmod (ofd, st.st_mode & 07777); 2586 fchmod (ofd, st.st_mode & 07777);
2587#else /* MSDOS */
2588#if defined (__DJGPP__) && __DJGPP__ > 1
2589 /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
2590 and if it can't, it tells so. Otherwise, under MSDOS we usually
2591 get only the READ bit, which will make the copied file read-only,
2592 so it's better not to chmod at all. */
2593 if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
2594 chmod (SDATA (encoded_newname), st.st_mode & 07777);
2595#endif /* DJGPP version 2 or newer */
2596#endif /* MSDOS */
2597 } 2587 }
2588#endif /* not MSDOS */
2598 2589
2599 /* Closing the output clobbers the file times on some systems. */ 2590 /* Closing the output clobbers the file times on some systems. */
2600 if (emacs_close (ofd) < 0) 2591 if (emacs_close (ofd) < 0)
@@ -2616,7 +2607,19 @@ uid and gid of FILE to NEWNAME. */)
2616 } 2607 }
2617 2608
2618 emacs_close (ifd); 2609 emacs_close (ifd);
2619#endif /* WINDOWSNT */ 2610
2611#if defined (__DJGPP__) && __DJGPP__ > 1
2612 if (input_file_statable_p)
2613 {
2614 /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
2615 and if it can't, it tells so. Otherwise, under MSDOS we usually
2616 get only the READ bit, which will make the copied file read-only,
2617 so it's better not to chmod at all. */
2618 if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
2619 chmod (SDATA (encoded_newname), st.st_mode & 07777);
2620 }
2621#endif /* DJGPP version 2 or newer */
2622#endif /* not WINDOWSNT */
2620 2623
2621 /* Discard the unwind protects. */ 2624 /* Discard the unwind protects. */
2622 specpdl_ptr = specpdl + count; 2625 specpdl_ptr = specpdl + count;
diff --git a/src/macterm.c b/src/macterm.c
index f5c71ab2c24..a97dc6203f6 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -7640,6 +7640,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
7640 default: 7640 default:
7641 break; 7641 break;
7642 } 7642 }
7643 break;
7643 7644
7644 case kEventClassKeyboard: 7645 case kEventClassKeyboard:
7645 switch (GetEventKind (eventRef)) 7646 switch (GetEventKind (eventRef))
@@ -7662,6 +7663,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
7662 default: 7663 default:
7663 break; 7664 break;
7664 } 7665 }
7666 break;
7665 7667
7666 default: 7668 default:
7667 break; 7669 break;
diff --git a/src/term.c b/src/term.c
index 1d165d36aca..4fbf87daba8 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1850,14 +1850,20 @@ turn_on_face (f, face_id)
1850 1850
1851 if (fg >= 0 && tty->TS_set_foreground) 1851 if (fg >= 0 && tty->TS_set_foreground)
1852 { 1852 {
1853 p = tparam (tty->TS_set_foreground, NULL, 0, (int) fg); 1853 if (tty->standout_mode)
1854 p = tparam (tty->TS_set_background, NULL, 0, (int) fg);
1855 else
1856 p = tparam (tty->TS_set_foreground, NULL, 0, (int) fg);
1854 OUTPUT (tty, p); 1857 OUTPUT (tty, p);
1855 xfree (p); 1858 xfree (p);
1856 } 1859 }
1857 1860
1858 if (bg >= 0 && tty->TS_set_background) 1861 if (bg >= 0 && tty->TS_set_background)
1859 { 1862 {
1860 p = tparam (tty->TS_set_background, NULL, 0, (int) bg); 1863 if (tty->standout_mode)
1864 p = tparam (tty->TS_set_foreground, NULL, 0, (int) bg);
1865 else
1866 p = tparam (tty->TS_set_background, NULL, 0, (int) bg);
1861 OUTPUT (tty, p); 1867 OUTPUT (tty, p);
1862 xfree (p); 1868 xfree (p);
1863 } 1869 }
diff --git a/src/w32term.c b/src/w32term.c
index 57f27d70e4d..9e6f50e9c21 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -138,6 +138,9 @@ int w32_use_visible_system_caret;
138 for Far East languages. */ 138 for Far East languages. */
139int w32_enable_unicode_output; 139int w32_enable_unicode_output;
140 140
141/* Flag to enable Cleartype hack for font metrics. */
142static int cleartype_active;
143
141DWORD dwWindowsThreadId = 0; 144DWORD dwWindowsThreadId = 0;
142HANDLE hWindowsThread = NULL; 145HANDLE hWindowsThread = NULL;
143DWORD dwMainThreadId = 0; 146DWORD dwMainThreadId = 0;
@@ -507,6 +510,7 @@ w32_draw_vertical_window_border (w, x, y0, y1)
507 struct frame *f = XFRAME (WINDOW_FRAME (w)); 510 struct frame *f = XFRAME (WINDOW_FRAME (w));
508 RECT r; 511 RECT r;
509 HDC hdc; 512 HDC hdc;
513 struct face *face;
510 514
511 r.left = x; 515 r.left = x;
512 r.right = x + 1; 516 r.right = x + 1;
@@ -514,7 +518,12 @@ w32_draw_vertical_window_border (w, x, y0, y1)
514 r.bottom = y1; 518 r.bottom = y1;
515 519
516 hdc = get_frame_dc (f); 520 hdc = get_frame_dc (f);
517 w32_fill_rect (f, hdc, FRAME_FOREGROUND_PIXEL (f), &r); 521 face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
522 if (face)
523 w32_fill_rect (f, hdc, face->foreground, &r);
524 else
525 w32_fill_rect (f, hdc, FRAME_FOREGROUND_PIXEL (f), &r);
526
518 release_frame_dc (f, hdc); 527 release_frame_dc (f, hdc);
519} 528}
520 529
@@ -907,6 +916,16 @@ w32_native_per_char_metric (font, char2b, font_type, pcm)
907 int real_width; 916 int real_width;
908 GetCharWidth (hdc, *char2b, *char2b, &real_width); 917 GetCharWidth (hdc, *char2b, *char2b, &real_width);
909#endif 918#endif
919 if (cleartype_active)
920 {
921 /* Cleartype antialiasing causes characters to overhang
922 by a pixel on each side compared with what GetCharABCWidths
923 reports. */
924 char_widths.abcA -= 1;
925 char_widths.abcC -= 1;
926 char_widths.abcB += 2;
927 }
928
910 pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC; 929 pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC;
911#if 0 930#if 0
912 /* As far as I can tell, this is the best way to determine what 931 /* As far as I can tell, this is the best way to determine what
@@ -6404,6 +6423,12 @@ w32_initialize ()
6404 w32_system_caret_x = 0; 6423 w32_system_caret_x = 0;
6405 w32_system_caret_y = 0; 6424 w32_system_caret_y = 0;
6406 6425
6426 /* Initialize w32_use_visible_system_caret based on whether a screen
6427 reader is in use. */
6428 if (!SystemParametersInfo (SPI_GETSCREENREADER, 0,
6429 &w32_use_visible_system_caret, 0))
6430 w32_use_visible_system_caret = 0;
6431
6407 last_tool_bar_item = -1; 6432 last_tool_bar_item = -1;
6408 any_help_event_p = 0; 6433 any_help_event_p = 0;
6409 6434
@@ -6448,6 +6473,8 @@ w32_initialize ()
6448 /* Dynamically link to optional system components. */ 6473 /* Dynamically link to optional system components. */
6449 { 6474 {
6450 HANDLE user_lib = LoadLibrary ("user32.dll"); 6475 HANDLE user_lib = LoadLibrary ("user32.dll");
6476 UINT smoothing_type;
6477 BOOL smoothing_enabled;
6451 6478
6452#define LOAD_PROC(fn) pfn##fn = (void *) GetProcAddress (user_lib, #fn) 6479#define LOAD_PROC(fn) pfn##fn = (void *) GetProcAddress (user_lib, #fn)
6453 6480
@@ -6468,6 +6495,28 @@ w32_initialize ()
6468 effectively form the border of the main scroll bar range. */ 6495 effectively form the border of the main scroll bar range. */
6469 vertical_scroll_bar_top_border = vertical_scroll_bar_bottom_border 6496 vertical_scroll_bar_top_border = vertical_scroll_bar_bottom_border
6470 = GetSystemMetrics (SM_CYVSCROLL); 6497 = GetSystemMetrics (SM_CYVSCROLL);
6498
6499 /* Constants that are not always defined by the system headers
6500 since they only exist on certain versions of Windows. */
6501#ifndef SPI_GETFONTSMOOTHING
6502#define SPI_GETFONTSMOOTHING 0x4A
6503#endif
6504#ifndef SPI_GETFONTSMOOTHINGTYPE
6505#define SPI_GETFONTSMOOTHINGTYPE 0x0200A
6506#endif
6507#ifndef FE_FONTSMOOTHINGCLEARTYPE
6508#define FE_FONTSMOOTHINGCLEARTYPE 0x2
6509#endif
6510
6511 /* Determine if Cleartype is in use. Used to enable a hack in
6512 the char metric calculations which adds extra pixels to
6513 compensate for the "sub-pixels" that are not counted by the
6514 system APIs. */
6515 cleartype_active =
6516 SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &smoothing_enabled, 0)
6517 && smoothing_enabled
6518 && SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, 0, &smoothing_type, 0)
6519 && smoothing_type == FE_FONTSMOOTHINGCLEARTYPE;
6471 } 6520 }
6472} 6521}
6473 6522
@@ -6537,11 +6586,7 @@ software is running as it starts up.
6537When this variable is set, other variables affecting the appearance of 6586When this variable is set, other variables affecting the appearance of
6538the cursor have no effect. */); 6587the cursor have no effect. */);
6539 6588
6540 /* Initialize w32_use_visible_system_caret based on whether a screen 6589 w32_use_visible_system_caret = 0;
6541 reader is in use. */
6542 if (!SystemParametersInfo (SPI_GETSCREENREADER, 0,
6543 &w32_use_visible_system_caret, 0))
6544 w32_use_visible_system_caret = 0;
6545 6590
6546 /* We don't yet support this, but defining this here avoids whining 6591 /* We don't yet support this, but defining this here avoids whining
6547 from cus-start.el and other places, like "M-x set-variable". */ 6592 from cus-start.el and other places, like "M-x set-variable". */
diff --git a/src/window.c b/src/window.c
index df284420ddf..38d680fbc72 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4785,7 +4785,9 @@ window_scroll_pixel_based (window, n, whole, noerror)
4785 /* We moved the window start towards ZV, so PT may be now 4785 /* We moved the window start towards ZV, so PT may be now
4786 in the scroll margin at the top. */ 4786 in the scroll margin at the top. */
4787 move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); 4787 move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
4788 if (IT_CHARPOS (it) == PT && it.current_y >= this_scroll_margin) 4788 if (IT_CHARPOS (it) == PT && it.current_y >= this_scroll_margin
4789 && (NILP (Vscroll_preserve_screen_position)
4790 || EQ (Vscroll_preserve_screen_position, Qt)))
4789 /* We found PT at a legitimate height. Leave it alone. */ 4791 /* We found PT at a legitimate height. Leave it alone. */
4790 ; 4792 ;
4791 else if (preserve_y >= 0) 4793 else if (preserve_y >= 0)
@@ -4822,7 +4824,9 @@ window_scroll_pixel_based (window, n, whole, noerror)
4822 /* We moved the window start towards BEGV, so PT may be now 4824 /* We moved the window start towards BEGV, so PT may be now
4823 in the scroll margin at the bottom. */ 4825 in the scroll margin at the bottom. */
4824 move_it_to (&it, PT, -1, 4826 move_it_to (&it, PT, -1,
4825 it.last_visible_y - this_scroll_margin - 1, -1, 4827 (it.last_visible_y - CURRENT_HEADER_LINE_HEIGHT (w)
4828 - this_scroll_margin - 1),
4829 -1,
4826 MOVE_TO_POS | MOVE_TO_Y); 4830 MOVE_TO_POS | MOVE_TO_Y);
4827 4831
4828 /* Save our position, in case it's correct. */ 4832 /* Save our position, in case it's correct. */
@@ -4838,7 +4842,9 @@ window_scroll_pixel_based (window, n, whole, noerror)
4838 partial_p = it.current_y > it.last_visible_y; 4842 partial_p = it.current_y > it.last_visible_y;
4839 } 4843 }
4840 4844
4841 if (charpos == PT && !partial_p) 4845 if (charpos == PT && !partial_p
4846 && (NILP (Vscroll_preserve_screen_position)
4847 || EQ (Vscroll_preserve_screen_position, Qt)))
4842 /* We found PT before we found the display margin, so PT is ok. */ 4848 /* We found PT before we found the display margin, so PT is ok. */
4843 ; 4849 ;
4844 else if (preserve_y >= 0) 4850 else if (preserve_y >= 0)
@@ -4953,7 +4959,8 @@ window_scroll_line_based (window, n, whole, noerror)
4953 the window-scroll-functions. */ 4959 the window-scroll-functions. */
4954 w->force_start = Qt; 4960 w->force_start = Qt;
4955 4961
4956 if (whole && !NILP (Vscroll_preserve_screen_position)) 4962 if (!NILP (Vscroll_preserve_screen_position)
4963 && (whole || !EQ (Vscroll_preserve_screen_position, Qt)))
4957 { 4964 {
4958 SET_PT_BOTH (pos, pos_byte); 4965 SET_PT_BOTH (pos, pos_byte);
4959 Fvertical_motion (make_number (original_vpos), window); 4966 Fvertical_motion (make_number (original_vpos), window);
@@ -6916,9 +6923,13 @@ If there is only one window, it is split regardless of this value. */);
6916 6923
6917 DEFVAR_LISP ("scroll-preserve-screen-position", 6924 DEFVAR_LISP ("scroll-preserve-screen-position",
6918 &Vscroll_preserve_screen_position, 6925 &Vscroll_preserve_screen_position,
6919 doc: /* *Non-nil means scroll commands move point to keep its screen line unchanged. 6926 doc: /* *Controls if scroll commands move point to keep its screen line unchanged.
6920This is only when it is impossible to keep point fixed and still 6927A value of nil means point does not keep its screen position except
6921scroll as specified. */); 6928at the scroll margin or window boundary respectively.
6929A value of t means point keeps its screen position if the scroll
6930command moved it vertically out of the window, e.g. when scrolling
6931by full screens.
6932Any other value means point always keeps its screen position. */);
6922 Vscroll_preserve_screen_position = Qnil; 6933 Vscroll_preserve_screen_position = Qnil;
6923 6934
6924 DEFVAR_LISP ("window-configuration-change-hook", 6935 DEFVAR_LISP ("window-configuration-change-hook",
diff --git a/src/xdisp.c b/src/xdisp.c
index 1fc5a8b277c..40eaaa46779 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12748,11 +12748,11 @@ try_window (window, pos, check_margins)
12748 12748
12749 if ((w->cursor.y < this_scroll_margin 12749 if ((w->cursor.y < this_scroll_margin
12750 && CHARPOS (pos) > BEGV) 12750 && CHARPOS (pos) > BEGV)
12751 /* Old redisplay didn't take scroll margin into account at the bottom, 12751 /* rms: considering make_cursor_line_fully_visible_p here
12752 but then global-hl-line-mode doesn't scroll. KFS 2004-06-14 */ 12752 seems to give wrong results. We don't want to recenter
12753 || (w->cursor.y + (make_cursor_line_fully_visible_p 12753 when the last line is partly visible, we want to allow
12754 ? cursor_height + this_scroll_margin 12754 that case to be handled in the usual way. */
12755 : 1)) > it.last_visible_y) 12755 || (w->cursor.y + 1) > it.last_visible_y)
12756 { 12756 {
12757 w->cursor.vpos = -1; 12757 w->cursor.vpos = -1;
12758 clear_glyph_matrix (w->desired_matrix); 12758 clear_glyph_matrix (w->desired_matrix);
@@ -22409,6 +22409,9 @@ x_draw_vertical_border (w)
22409 window_box_edges (w, -1, &x0, &y0, &x1, &y1); 22409 window_box_edges (w, -1, &x0, &y0, &x1, &y1);
22410 y1 -= 1; 22410 y1 -= 1;
22411 22411
22412 if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
22413 x1 -= 1;
22414
22412 FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1); 22415 FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1);
22413 } 22416 }
22414 else if (!WINDOW_LEFTMOST_P (w) 22417 else if (!WINDOW_LEFTMOST_P (w)
@@ -22419,6 +22422,9 @@ x_draw_vertical_border (w)
22419 window_box_edges (w, -1, &x0, &y0, &x1, &y1); 22422 window_box_edges (w, -1, &x0, &y0, &x1, &y1);
22420 y1 -= 1; 22423 y1 -= 1;
22421 22424
22425 if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
22426 x0 -= 1;
22427
22422 FRAME_RIF (f)->draw_vertical_window_border (w, x0, y0, y1); 22428 FRAME_RIF (f)->draw_vertical_window_border (w, x0, y0, y1);
22423 } 22429 }
22424} 22430}
diff --git a/src/xterm.c b/src/xterm.c
index 68d2e46cc77..1a52e0e5893 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -546,6 +546,12 @@ x_draw_vertical_window_border (w, x, y0, y1)
546 int x, y0, y1; 546 int x, y0, y1;
547{ 547{
548 struct frame *f = XFRAME (WINDOW_FRAME (w)); 548 struct frame *f = XFRAME (WINDOW_FRAME (w));
549 struct face *face;
550
551 face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
552 if (face)
553 XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
554 face->foreground);
549 555
550 XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 556 XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
551 f->output_data.x->normal_gc, x, y0, x, y1); 557 f->output_data.x->normal_gc, x, y0, x, y1);
@@ -6294,6 +6300,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6294 if (compose_status.chars_matched > 0 && nbytes == 0) 6300 if (compose_status.chars_matched > 0 && nbytes == 0)
6295 break; 6301 break;
6296 6302
6303 bzero (&compose_status, sizeof (compose_status));
6297 orig_keysym = keysym; 6304 orig_keysym = keysym;
6298 6305
6299 /* Common for all keysym input events. */ 6306 /* Common for all keysym input events. */