summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2005-07-05 22:12:55 +0000
committerKaroly Lorentey <lorentey@elte.hu>2005-07-05 22:12:55 +0000
commitf7f16d197cffee4d5d5d9f1538333edc4a8ffffb (patch)
tree119937ea381647a18a3183b5b99bdc364dbe3d1d
parentbf346e5cb9864715149e48254381e543d2e8cd0b (diff)
parentcb612bbbacba6b192a39741f054aa19d71c5840e (diff)
downloademacs-f7f16d197cffee4d5d5d9f1538333edc4a8ffffb.tar.gz
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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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.
gracefully if something isn't supported over Tramp.
To be done by Andre Spiegel <spiegel@gnu.org>.
-** define-minor-mode should not put :require into defcustom.
-See msg from rms to emacs-devel on 21 Dec.
-
** Update Speedbar.
** Update vhdl-mode.el based on changes in
http://opensource.ethz.ch/emacs/vhdl-mode.html.
+** Debug custom themes.
* FATAL ERRORS
-** Make unexec handle memory mapping policy of the latest versions of Linux.
-This includes exec_shield and a memory-layout randomization feature.
-
** Investigate reported crashes in compact_small_strings.
** Investigate reported crashes related to using an
@@ -45,6 +40,8 @@ invalid pointer from string_free_list.
* BUGS
+** Fix those modes that still use compile-internal, to not use it.
+
** Bug in ebrowse
Date: 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
time to make anfe-ftp more intelligent.
+* FSF's ADDRESS
+
+** Update the FSF's address in all files.
+Lute Kamstra is working on this.
+
+
* DOCUMENTATION
** 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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index d9519432fcb..fa93354eca8 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,17 @@
+2005-07-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping):
+ Added it again.
+
+2005-06-29 Carsten Dominik <dominik@science.uva.nl>
+
+ * NEWS: Added an entry for Org-mode, and a change entry for
+ reftex-mode.
+
+2005-06-28 Richard M. Stallman <rms@gnu.org>
+
+ * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping): New.
+
2005-06-11 Eli Zaretskii <eliz@gnu.org>
* DEBUG: Mention emacs-buffer.gdb.
@@ -58,7 +72,7 @@
2005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change)
- * TUTORIAL.pl: Updated header.
+ * TUTORIAL.pl: Updated header.
2005-05-02 Richard M. Stallman <rms@gnu.org>
@@ -101,8 +115,8 @@
2005-04-10 Masatake YAMATO <jet@gyve.org>
- * compilation.txt (symbol): Added gcov-file
- gcov-bb-file gcov-never-called-line gcov-called-line .
+ * compilation.txt (symbol): Add gcov-file
+ gcov-bb-file gcov-never-called-line gcov-called-line.
2005-04-08 Kenichi Handa <handa@m17n.org>
@@ -119,7 +133,7 @@
2005-04-05 Marcelo Toledo <marcelo@gnu.org>
- * TUTORIAL.translators: Added the field Maintainer.
+ * TUTORIAL.translators: Added the field Maintainer.
2005-04-04 Thien-Thi Nguyen <ttn@gnu.org>
@@ -140,22 +154,21 @@
2005-04-01 Marcelo Toledo <marcelo@gnu.org>
- * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
- * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko,
- * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru,
- * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title
- line.
+ * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
+ * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko,
+ * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru,
+ * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title line.
2005-04-01 Ognyan Kulev <ogi@fmi.uni-sofia.bg>
- * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in
- revision 1.59, "Emacs" is not transliterated to cyrillic anymore;
- Minor fixes.
+ * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in
+ revision 1.59, "Emacs" is not transliterated to cyrillic anymore;
+ Minor fixes.
2005-04-01 Mats Lidell <matsl@contactor.se>
- * TUTORIAL.sv: Sync some other changes with the TUTORIAL version
- 1.61 in CVS.
+ * TUTORIAL.sv: Sync some other changes with the TUTORIAL version
+ 1.61 in CVS.
2005-04-01 Lute Kamstra <lute@gnu.org>
@@ -289,7 +302,7 @@
* e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc.
Reformat.
- * e/eterm: Regenerate.
+ * e/eterm: Regenerate.
2004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
@@ -298,7 +311,7 @@
2004-09-16 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Change the strings for smso and rmso.
- e/eterm: Regenerate.
+ e/eterm: Regenerate.
2004-09-09 Thien-Thi Nguyen <ttn@gnu.org>
@@ -307,7 +320,7 @@
2004-09-07 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Add `op' entry to enable colors in term.
- * e/eterm: Regenerate.
+ * e/eterm: Regenerate.
2004-09-04 Eric S. Raymond <esr@thyrsus.com>
@@ -379,7 +392,7 @@
2004-07-08 David Kastrup <dak@gnu.org>
- * NEWS (Lisp changes in 21.4): document (match-data t) change.
+ * NEWS (Lisp changes in 21.4): Document (match-data t) change.
2002-06-26 Eli Zaretskii <eliz@is.elta.co.il>
@@ -389,8 +402,8 @@
* NEWS: Move description from new paragraph-start and
indent-line-function defaults to general news instead of new
- packages. Same for query-replace-skip-read-only. Add
- description of new `\,' and `\?' replacement string features.
+ packages. Same for query-replace-skip-read-only.
+ Add description of new `\,' and `\?' replacement string features.
2004-06-23 Luc Teirlinck <teirllm@auburn.edu>
@@ -417,8 +430,7 @@
2004-05-14 David Ponce <david@dponce.com>
- * tree-widget: New directory containing tree-widget themes and
- images.
+ * tree-widget: New directory containing tree-widget themes and images.
2004-04-13 Marcelo Toledo <marcelo@gnu.org>
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
loading and customization of those packages from the .emacs file.
+++
+** Org mode is now part of the Emacs distribution
+
+Org mode is a mode for keeping notes, maintaining ToDo lists, and
+doing project planning with a fast and effective plain-text system.
+It also contains a plain-text table editor with spreadsheet-like
+capabilities.
+
+The Org mode table editor can be integrated into any major mode by
+activating the minor Orgtbl-mode.
+
+The documentation for org-mode is in a separate manual; within Emacs,
+type "C-h i m org RET" to read that manual. A reference card is
+available in `etc/orgcard.tex' and `etc/orgcard.ps'.
+
++++
** The new package dns-mode.el add syntax highlight of DNS master files.
The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
to increment the SOA serial.
@@ -2202,6 +2217,80 @@ majority.
the syntax of backslashes in F90 buffers.
---
+** Reftex mode changes
++++
+*** Changes to RefTeX's table of contents
+
+The new command keys "<" and ">" in the TOC buffer promote/demote the
+section at point or all sections in the current region, with full
+support for multifile documents.
+
+The new command `reftex-toc-recenter' (`C-c -') shows the current
+section in the TOC buffer without selecting the TOC window.
+Recentering can happen automatically in idle time when the option
+`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
+buffer stays when the focus moves to a different window. A dedicated
+frame can show the TOC with the current section always automatically
+highlighted. The frame is created and deleted from the toc buffer
+with the `d' key.
+
+The toc window can be split off horizontally instead of vertically.
+See new option `reftex-toc-split-windows-horizontally'.
+
+Labels can be renamed globally from the table of contents using the
+key `M-%'.
+
+The new command `reftex-goto-label' jumps directly to a label
+location.
+
++++
+*** Changes related to citations and BibTeX database files
+
+Commands that insert a citation now prompt for optional arguments when
+called with a prefix argument. Related new options are
+`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
+
+The new command `reftex-create-bibtex-file' creates a BibTeX database
+with all entries referenced in the current document. The keys "e" and
+"E" allow to produce a BibTeX database file from entries marked in a
+citation selection buffer.
+
+The command `reftex-citation' uses the word in the buffer before the
+cursor as a default search string.
+
+The support for chapterbib has been improved. Different chapters can
+now use BibTeX or an explicit `thebibliography' environment.
+
+The macros which specify the bibliography file (like \bibliography)
+can be configured with the new option `reftex-bibliography-commands'.
+
+Support for jurabib has been added.
+
++++
+*** Global index matched may be verified with a user function
+
+During global indexing, a user function can verify an index match.
+See new option `reftex-index-verify-function'.
+
++++
+*** Parsing documents with many labels can be sped up.
+
+Operating in a document with thousands of labels can be sped up
+considerably by allowing RefTeX to derive the type of a label directly
+from the label prefix like `eq:' or `fig:'. The option
+`reftex-trust-label-prefix' needs to be configured in order to enable
+this feature. While the speed-up is significant, this may reduce the
+quality of the context offered by RefTeX to describe a label.
+
++++
+*** Miscellaneous changes
+
+The macros which input a file in LaTeX (like \input, \include) can be
+configured in the new option `reftex-include-file-commands'.
+
+RefTeX supports global incremental search.
+
++++
** Prolog mode has a new variable `prolog-font-lock-keywords'
to support use of font-lock.
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.
*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
With certain recent Linux kernels (like the one of Redhat Fedora Core
-1 and 2), the new "Exec-shield" functionality is enabled by default, which
-creates a different memory layout that breaks the emacs dumper.
+1 and newer), the new "Exec-shield" functionality is enabled by default, which
+creates a different memory layout that breaks the emacs dumper. Emacs tries
+to handle this at build time, but if the workaround used fails, these
+instructions can be useful.
+The work-around explained here is not enough on Fedora Core 4 (and possible
+newer). Read the next item.
Configure can overcome the problem of exec-shield if the architecture is
x86 and the program setarch is present. On other architectures no
@@ -2404,6 +2408,21 @@ command when running temacs like this:
setarch i386 ./temacs --batch --load loadup [dump|bootstrap]
+
+*** Fedora Core 4 GNU/Linux: Segfault during dumping.
+
+In addition to exec-shield explained above "Linux: Segfault during
+`make bootstrap' under certain recent versions of the Linux kernel"
+item, Linux kernel shipped with Fedora Core 4 randomizes the virtual
+address space of a process. As the result dumping may fail even if
+you turn off exec-shield. In this case, use the -R option to the setarch
+command:
+
+ setarch -R i386 ./temacs --batch --load loadup [dump|bootstrap]
+
+or
+
+ setarch -R i386 make bootstrap
*** Fatal signal in the command temacs -l loadup inc dump.
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>
* TUTORIAL.pl:
Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl>
-Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
- Janusz S. Bien <jsbien@mail.uw.edu.pl>
+Maintainer: Radoslaw Moszczynski <rm@banita.pl>
* TUTORIAL.pt_BR:
Author: 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 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: org-ref.dvi
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Landscape
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMSY8 CMBX8 CMTI8 CMR6 CMSY6
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -t landscape -o org-ref.ps org-ref.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2005.07.04:0825
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: f7b6d320.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
+% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
+% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
+% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
+%
+/TeXf7b6d320Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
+/period /slash /zero /one /two /three /four /five /six /seven /eight
+/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
+/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
+/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 09fbbfac.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
+/TeX09fbbfacEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
+/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
+/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 74afc74c.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
+%
+/TeX74afc74cEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /sterling /percent
+/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
+/hyphen /period /slash /zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMSY6
+%!PS-AdobeFont-1.1: CMSY6 1.0
+%%CreationDate: 1991 Aug 15 07:21:34
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -948 1329 786}readonly def
+/UniqueID 5000816 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
+49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
+9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
+1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
+6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
+007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
+F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
+C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
+CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
+85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
+6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
+0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
+AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
+72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
+4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
+2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
+E97F71E04BB623E0BC9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueID 5000789 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
+BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
+CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
+C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
+D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
+23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
+D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
+93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
+6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
+EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
+CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
+D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
+00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
+B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
+6D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
+CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
+0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
+08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
+588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
+C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
+CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
+AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
+C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
+85D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
+91430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
+2E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
+342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
+ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
+C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
+10B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
+0FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE
+AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557
+EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895
+3925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141
+F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36
+2B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16
+057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A
+91F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324
+80F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC
+1D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3
+8377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F
+D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A
+3AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306
+F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6
+1A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E
+F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F
+1B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2
+20701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6
+5A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4
+84D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959
+5F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D
+96AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558
+C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7
+47C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5
+7444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603
+6671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01
+864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC
+111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850
+B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C
+6B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C
+9970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A
+421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095
+BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF
+F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC
+8EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372
+3634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448
+9E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3
+A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191
+A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C
+1CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF
+51D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D
+0F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450
+4760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7
+AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53
+8ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA
+D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB
+99515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4
+481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52
+1B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA
+D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586
+E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF
+B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB
+56BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB
+F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4
+61C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574
+9098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D
+FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3
+049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA
+5506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59
+620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8
+E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477
+ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE
+9F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA
+B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431
+DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994
+322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0
+4296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501
+CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792
+2C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7
+22946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595
+376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC
+C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4
+2CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C
+FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E
+6B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262
+C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A
+AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228
+028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5
+A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD
+2AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193
+9967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058
+C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC
+1C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A
+DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D
+C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE
+EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285
+AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89
+00BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190
+F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD
+A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD
+8C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB
+35BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C
+7B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC
+43990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5
+0D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E
+F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A
+E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821
+02C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55
+0B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5
+8B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9
+AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446
+9769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134
+8F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26
+CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360
+0A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E
+8582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089
+A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267
+6940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F
+16715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E
+9E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6
+64145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C
+C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481
+05558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92
+920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11
+4842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D
+67EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4
+BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718
+A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D
+65C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E
+7F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5
+CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC
+0C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA
+4DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824
+6F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333
+43E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026
+B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79
+497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4
+12173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5
+5A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6
+33EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F
+1055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD
+114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45
+24391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1
+C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C
+C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516
+E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB
+5EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA
+B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062
+86032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49
+BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C
+D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6
+07EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF
+D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723
+5E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A
+DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D
+75071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480
+E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D
+A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C
+4921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176
+B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2
+689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38
+087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259
+7E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175
+9DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98
+47E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4
+6D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D
+35F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66
+E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B
+D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4
+C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85
+121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81
+BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8
+1BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE
+6259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB
+5D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB
+776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A
+C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B
+5FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99
+F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083
+DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE
+345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92
+892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C
+FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8
+FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38
+FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924
+9BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E
+9480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766
+6A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23
+16B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B
+823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54
+79E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685
+6A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4
+A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187
+2825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390
+FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22
+27B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88
+67332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D
+ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A
+B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941
+8437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE
+D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D
+C48D5145E2C6AA7D7FD787BC0D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTI8
+%!PS-AdobeFont-1.1: CMTI8 1.0
+%%CreationDate: 1991 Aug 18 21:07:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-35 -250 1190 750}readonly def
+/UniqueID 5000826 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
+F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
+84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
+0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
+06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
+5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
+D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
+93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
+FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
+E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
+46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
+8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
+4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
+1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
+9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
+BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
+09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
+3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
+E8929A4BBA0EC700D5662AAD9EB38047C6C7C63EB3FA03B5EA9E56DF0E30B3AC
+058198429E22081FFD4CCC1F3A7A88AB8A22C7C6C6448934DEC2212E89998259
+653D779091F4F7F6C0A76024363A9001817B1D572847779F98F02FF9A1B45270
+2F7E42A25C687D6E56C89BBB580DE865D7372A02F329E71E0BDDA2CC8CEE41B7
+FE95846B78982FAF79E544CEF8D72A94FA73E69ED3A5F834BBE082CE0E8D4EA0
+2F619CF8441B5E057482D71D834BC6D93BF9F7777FDD2A5216911D31D34CDD76
+8D0F805FF6A71D77AED0D540ABF995DC77C30ACB207DB2513D691105199B2555
+CA9418777932A54E99E56E5171261B3708D8646A28803DEC8EABB44E80F3132A
+B273B74A56B5770C09508637BE122DEFA8A0B3438403DF67AD2FE9641009CF03
+44E39E8A56E244C56B8777F486C958C5196286F36761F2568FE1A8A6E74D6891
+19F7E393FB94388DE651E078D4D40DFD141A0FC074ACB3384BE70073C08E2EE6
+065EEF9768D260C08E40B2461EB226D820BC43EBCC49A943528B8E5FFA474300
+BEE3AE339C2E0C4B247A4F8F9CE588AC67CB6FF85ABAE18AE0F77219E44DBBF0
+C6B5958D89EA19BCA780BEBC7C29EC8919CB9754753DCF4781F34FF4F75FB52D
+C00A65650B9AEA0411B117D2DB6A813F17569F8D0BD600FF94F063EED10A9F10
+72B6FF606A4778CD73CE7A03EC5F31B6B4C9D93B80921FB7109C1E9926C77113
+5AAF1CA527E5D262674D0B05681E38FE2F14916248E81C52079AE46C4AA3C1F6
+9BDE6B8A497600BF36E594079AD3637D27E2F4FB0E89F80CD10A1991CDFABF46
+C36D32D5309D24024BF22F920D954E50EF667272BFB5CAAD0824641634CA4CB5
+E7491D66A5ADE670AEF9C5B1F1B45497FF99C2361EDB1FB5C8F5D9EDAE288C68
+EA3337F3AC1EC76037252B7107C3F96746EB0A6BB2DD05F1D372B0ED5C3F56B9
+CD6BB3EE200D9A60372D4EFAC7739E2629151FDB2BC336A95260119FCE6A9511
+2937DC9F522CC0CC6DDFDDF5673A962E2DFE6EA3923A5CFE9C4EC0C69BD1DEE6
+9F56420E6E8F972A3B7462F4DFACDE97B4F821E1109099298C77FC831E6837D0
+5BEA4AE2D59CBD525A79C96E491C20EFE0138F1F9A9AA1B30367982357719380
+EDDD75F4547F1997BEADCB8B7FA9227DD211433CC05C0B804E8BAAE95171EAEC
+EFB60DBB8399E83709895D5B4DC11E11FF91E2A39861B12FFA587E8D752D74F8
+71456FE15C7B6A885F2BE67C63B2D9CDC1EE5688CE99156821183B552DF78DAD
+64F178CDF98390D8C1967CE7D9BDBA99AFD5A9908A950A11FBED22FF6A61D0B9
+3BF4842A22E2295DD259B0DCE2773F9D672B217B7F19A4D22BACD2DF929FFDED
+EEF43C052D515BF739EB5B397F9B8762083965A85F96E6BD48E0402C85FA03CC
+5CBB51BF4CDD01B891BDF1959AB822E9E6A8B9CD914EC25E861DAB64C443641C
+BC2F1ECFDF4C3966E11F137787AAE702564B3EC4754982726AD67DB2A98E2EA6
+3B843D824EE3FB92888AF133ED29CA1B92A87C50E71640E418A5ABFFF469F972
+8AAE580B2E255272870AF5BBF923F9805104847880113BBFEA1FFED8B19915E0
+A0F0436BBE20C7E3FA1DCECFF072B8FBE3A100A33B181C0816CD4E28A8E432AF
+BF308B89336A8710EE740E1583A9ED41C97F96D546DD7613CC7B214501E14087
+1E8F1002BDBDC12DBC8F4CDB5D2E62EEC19007B3D89407B865721C28C7579845
+04CB6EE7A3AD6032D3DCF9D01F83DE750BC8F0DFDFF13FD400AACEC35690983F
+B5E04373CCBF469472B8AA0FA6A398BEBEFA8D914D548D0BB5589E1C40D7F625
+4F8E0FC08108C2288DECAC258D819FF92AFCB63954960A5B194934FAB5F4E757
+FAB4AF44176447EFE9E20B44F0E8BDCCC0925DD4703F6DA0B2E61E3121CB737E
+9E5FAE5B899987C8851CCE11408B5B12D5F67DE0552ABEAC69596F377AC65A83
+25E8ED90ACA8DD09D0D9AC984C2EB9A01F3502CC81422C68456A9B15796C8B08
+0060EDCACA5CAA76549D613EE7CFF973E9091B2B8EE4B1DD0117DC140C16527B
+47B335576E75C4E558E3777AA9EEDD3DA21B63E7DDDC10CBA609090099118E86
+37A4AAA5300E6DCB887E36A60601D4A02E98A547AE834960BFE45F644A23211A
+3D039D63BE8A49BC421B19E6FCD8132DD37D65E88C685B1775B1D05FEB41C705
+E3DEEA6307A5B44AF3153407B8042099128F867D3924B477FE258B3A23A47757
+B8F09B52A747698DD84E7EE65C4B30ADC97F7D6A63BB621E9EA9CD76BF8F3408
+0FF1D4AAB7A5F1417EDD399AD210F59E06B606A26C69368CC896616E802BFBB1
+613B4CD2AC76FB267B7EB1178B703F33B8D199BFB0968A82B193A1A32325442D
+C4FEA2BB70F971AACFB0722724724FEE9041A3232BEA3A9870939C5F0A5C00D2
+B292BEB07201BA6FF9B43D887E7F18A28AC2B9C998419378DCFFD57DAA9A88BB
+B97758828F0CFD6B810FF4D2A0B2D62D06110F2C804EB4E555E1B2E0E316E503
+D30F7878704FD816B6F19D49A1F9B37CAFCEDBA771421CE1C43DF0BCF2B2912C
+2E9F1105A4A91EB3BE467C8D4B3312D204915C237E09327BEBE496031CA2BD42
+EEF53F0ED5CE1F9D6496624A97042B0B45B3E59D01D41ED3DD16399C6279A9A3
+491272AE972C2F332CA37E1D074B97C62E7308EC803C251DD44A2B9B2317FC72
+345F338F335BA8A1C0F4E6BCFF7DA5CEEC539C08B26384F70724118E3D6BFC45
+608966E2FAAEA78A14234FE7547DA9C2D02EB4EA39835064BA994175B8BEFB61
+D0450C331985D54E2B1602D85EFE3A09FDA2346D13E203F3A52C2AF678ACBC01
+3980E95BDC04F2BC968C1341FCD4463783167C3361AF4777333EA568DA52D2FD
+A2B34B7064477C2B455385ABCC88BCDF277A1B33C90D3A6A431DEC8BB5863B70
+E1C769932C49EC1540B1139F1300003F59042EF79953930CC90C087370B46999
+0CCA827C1F1AE29E1CE29098CB4B3CCB91A61052071A550DC52284DA71169D75
+EB5B418A7CAB2DD4D9245615DAF8D846D45EF49C331E11EF875B2C62E470B0F2
+01BA91B2141C4380CCF5773C0C7B90B4447DBA415A2372B2DA4AB109D13DA0C0
+6E5E54C9DBA4FC967F0350E655425D1A896A2E6FF676657F4241A76F9F018190
+6AC7B8F53052B8DCD54168874304FCF0530E38EA0A422D292DC6E310495B5AF2
+E2F54210227F0FE30576CD6EC8E8BA26A398BE076716C20F0972F153C404D539
+ABDFE8BCB69D8E9A7D7733A7123BDB6E7755E35B10C233DE30BCB34227D7E550
+56DAF2DC5ED812C1127B1EECE52E1485FF2DD092984B0DC1E58F13115E939B3C
+9639DD3B13604CE8DCD603A13E8DCB7520461CFD6EC06F7B0B729CBDDDBB89CC
+9A70CDA0840B9098C39A01DFD556E3DF37966F07921067DE045A80D5716C8F11
+BDACA5F2AF25C7527440BAACA8C5F211A3C30FE38DDF87F34FE9E3DA9BD3ADB1
+7C151D5AD23BE78FB5672C9339F8BD904AFAD6674453A3BB589C1AF295358C1E
+4F6F89BB020E1A146B5855B46A366773B65CC0C449319CCDBE75B3D8AED76104
+E4C4ECC307FBAD006E98A40268DA58CFB135869C0DF12F3D9F96AE010BBD2AFA
+5297D587D5C599DB3687EDFE865BF7AB530C8396A7DCBF84D196D65055E078FF
+CF1BA51EDE702BCDE009D9903EA7658E906887C4BD16E91D9FD49FCA8F75517A
+332077D8284E564D84789C561E93E27CA36D32DF337713FF2E91861683F6DA40
+C5E8F505640B8CE65895FACF142565AAB691F7C9376978F98B679CBE1C163029
+1E49797740BF747243A3A569811EBAC9119E7FDE8026E752C198D116BEA29A14
+03F40F6C30C571146C72E6AB8F581AA24D24B639BE55E925DB8640CCEEBF1277
+C5628599AAF6D1858ACBDA07C56A7AA9009221D0DA3B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX8
+%!PS-AdobeFont-1.1: CMBX8 1.0
+%%CreationDate: 1991 Aug 20 16:36:07
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-59 -250 1235 750}readonly def
+/UniqueID 5000766 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
+7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
+EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
+7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
+AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
+E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
+4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
+5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
+611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
+D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
+EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
+35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
+ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
+7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
+C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
+B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
+3E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
+64E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
+A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
+6475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
+13F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
+689FD4E84B455C7EC6C5BFEEBEB422E156C67D7E56B8267EA704318ECE801014
+D563FBF79D9AE4F8C41CC649EFA07C8FF9FDF6109E05FE58B92CCA7E26204CE8
+05A20B86CE43C9EF809DCCC2E28021EF11EDBF36F6EF75E9AEF7FA793CB81E47
+E2618947764B7CE6C3B94321D6FB8B824794362CC8CB6BE9EB3FE6C601820830
+E7C6F16E48574F329A642AF235347CD0017155299B70CD489095443A726C89B2
+7F7110D2C8643B1FA3A938D53C087EA3491B9EC4E5B213815A281C03E8936424
+614FF39012545B995E60E3FDCB92E45F51BB69F8683F62668FED702AED16E709
+8FAAD0CD9355995820FE80C4496D133F1714114FC89E871E2F6A994A4CFE14A0
+0CB974E2ADCDD20F11FAC0101A90C215E40234B027DAFD9D31530B96239816B3
+6006A6A69E800D7EC779FD10C721F7A476C02BFE5FFFB04DDF1B12D0779080A0
+0279EFC2D4BD5A8F224083C15008218EADFD8D6089E79A4BD0EFAC995EEFECE0
+83ACF32C0790A54F6D04C945ACDF739E06690A00AE579B5DB9C91D21731DD420
+5E2891FE9E43F0F78B797C299F8C6EB6B0AA2808E28E5A01A2BA1FCFCB54598A
+E5C49FB68DEE2A0101CA67B827122072AD6E53E0DD6B62AA4A41EDF0A3C13DBB
+B42D8C0FB4BED03ED493F38EFDBD7157D84183E726CA215005699ADF49B6A5EA
+2A2F0B7599A783CBE0FFA0AA965969AA222977A13F88EBFB3C134B4445EED5AB
+80C9882E54A5E1DDB9014DB04FAD3D159857FEBC2CD56EAC237BAC2177E02C74
+0AB0C3195B3847D5D21EAC3AA0F3B916664370D6B366F877DA0BFE4A282E96AA
+F804B144DF7DE52415E39877B8D85D55D40E3B8BE0809BD5AA0E58278A9F5EE3
+33FCB97E79EDA72DF08A258DD09E18D69E8B2EA33E4E1131D58EE27B80FBE72C
+3F513A556AB5A7A4C00C6332D373E96BD0B9F037BF86ADCE6481C7CD44A0141B
+419DE72F671FAD0C4041A819F9313FC7357F775FA341F290FA4F15DD9F5742CF
+B969D56DB370C3A8F94818A1728B00B44FF035CCF32AA1F31BCCFCE4FF49FEA6
+813943645ABA47BC8E8E51A709EF55D7125156925FF994974EFA2E9BF696B153
+B5189911933C09246BA6AA23282496C2551C4F879D2A556217DCAB15EE185070
+840051E3F27BC72676B39817AB3A2AF8824151395B50DBC3999549F9AE1B6D90
+47EE409A7E1816B588A4864C783FFE112D73928193B1DD3359D9FF1ABC73C3A8
+B29027ED24B04E3AA855DC1F719AC8746BA11FA5B676BC09DBC80574114F4290
+65C30DE7F659BC1A2E5FBFB5286624B1AC8767508B0F178B3665B53BAD6363C4
+816D94B542F6AEE1E824420080AA591D66F6348A7C1225C098309DC1C491E80B
+5B1EDC8B75DD42A89BE2C598E58A3E4DC4B0B8944318006D207699E492031E15
+FBA791B235D7F677D14AC516B76700859974FB8820438F7BCD3D3B3D7D7D008F
+3880F72358A882ECB76BFAE04C1B8E0977155AB62D07D7AE038C00C267C6D9C8
+FB31C40D91A6371C0A3B0A8B7E4C92242A924D48BF3335E80C33EAB8B8B11571
+A817D8993A9C238DD5D8A6B91BDD18223B0C21A864F190E012AFB44216A9983E
+5191F4D77F7A6EE8E2967438C8975EEF92E6A436717FE2B13B2B65B1D4BA6E58
+48F4E97D41910B3C79E72B84B23D446B96EA9E74A502049A6A670F40BA362A74
+8920731738746163937EC778B249AFFC20603A6BC546E139DEA7F5FAC96723F8
+6544F0BF630B274977966135115497C1AFF7E581AA7B1B4C456CB15474929C2A
+796E752106F068D3B232D3979B27BB4C28098A657E1D4C76CB470D42BFA072A3
+1E0A1952C2DD97FAF260EA58C755DBFDC679E0CB0F20B8A25C8DCC86BA990031
+F16B1F3AF1714386545B42ED4F0CEDB0B3935D3BF86FA4D884A58A56A0737792
+094F830BD1255B695BD756987CFA4AE5030E1B24E9565289AF240C76D78D7E6E
+6299436C5853BC086D5F22A5CCEF4234E2FFAFBAF3F4F0B4B5299D47A2C6DF9C
+22EFA43E822B6140EB66BAB6268F66DF737764E84134DB9AA6BAF0663BC73421
+B7888BE30321CF239AD0AEE6B1803EF817F8B6B6A6F274D87E88EA67135BF116
+B2BBB8E8C9EFCD757A6ABCD2F799CA0CB381628507118D1082904B728534C129
+07DC200EF69A137D09D5B31A8E3EEF61C1AAA3DAAC733CDABBEA7577201938EC
+8C58115FDE70557319A6E6F7B3A746CE653AD77660FCA75ADCD1FE75C1D42DB4
+FF0CCF21DCB92274CAEEAE47782B0033BE1A5F08F98427C38FD7D337BA2DBEB0
+473157DF41B432B3859823FC2EB912C3B10FBD381CE5F4B7712B1FCE8D9AF5C3
+9FD44A255163880A8104069DAE3199515D813BDC58B0348BE7C1BBEB4105B1E8
+D33431E5F536FD5FA5C60ECB139F47402BF42E1228C2E08C7CAE985C9EB7E3D5
+1A98D830DF57DE98548ACA2C748C18FD938F30CE93F112410CC35C8D76690715
+7A0D8F4726F2E31A722E8F76DFAF3A88AE7969FAE1EDEF99EA90A19A9692899F
+A4A6F4E9C5724B5D8688A0EFA7D2FE4565B05FF5906046BD1AEDE1E992C84289
+E9BDD813EA9E87791229ED1E267A3023B53F808F1F96EE21049F02E6703A22EB
+A1ACA6DBB4310D15DC12192150BAE79EC915281ECBEC904A49301438F53986DF
+E7EB0EFC44985266EC846A4A12AA7B9A90E3799FFFF4110D311643B2E2EF8961
+A61CBA357C947A91056C798B23641C2CF30FB4B38BD53E7DB9AFB0B8F69F1074
+7CB154A179B796DF230D1ECD4E6569EE80190C6361593946BCC005EE3732D343
+16935D2FE49856756B9F87DD6B8DE288AA3A3201FC7E77F75A42CD95BFB42236
+0C1DE3177DA2B50F1C68DC36BFC189EAFE388116160F65EA2626D9B7CE44C375
+7D5FD83F8E9B8E9609A9B46777932A21B73ED98B8C714A954EEB2DD9FA3937A3
+DF41FE76D214E9C9D8DB712B275E91F9E32F31D98E30A7D0B3CF718A52134F86
+D1E088F91FF3D86490EE0852AF23D9856F271A1617F6B06E0CE1C163D7886908
+77E5C0C522E0F0AF8E7B05205FEBB92C68FF99DA858BE00E6C7CBFDEF8ACCC60
+FF9E48E4F5B1FB95DDB11AB4CB09D9E59E4B981E2A59F77881E2CB31057A6416
+5208B180D301DC13F842CEBBF97AE7A3523EA8C6FEB5DBC96437EDBA53F78730
+93EAE0A81715E303894E12977EA37DA3559AE4B5AC49B84E44B71DA99F487A55
+CF35FD75E5EDAC5397F373B018CBFF45E00F704D3AD2CBA79F1119C31EA1475E
+3289FF427407ACC5F516CF88F3F762543D765609CB618ECD786425F54CC509F7
+7734B0E217F638A61D169706EEA92A552766FC0ADB2D87AD46D8EEA079CC96FE
+8CEC5B7E61A87FD26BDA35F8508177C74B42B694A6BAA8BE7A906B30C5CECCD5
+C0CC4857450612B69DAB66EDD6BE13E9B106A26DAFF419095859D5D1D01641B5
+B34155887DB441C5ED0BCE1A7B9E12497F681BD03FAD87AFC6BAAFE23B406427
+763455BB4B9DA86CEFA6484BE30BEA1E43FF8C3007147745A35F283CEEFE1866
+26DAD4A22200F50E638BBA2EFF73C1DC358CB9C1D377E6EE9E9A18B8ADCCA028
+FDD4BB09DDB37C0DE0E56512AF00C57D4FD02B6DB966ECFD0BC122A55BB9FE05
+F20D682CF3FE2954F32BE305CAA9E50BD652D52460152B9149E891D419FCC078
+E9EBC6A940048EA2173C0CA463D7DE339CCAB9A86467CD1548066788C54FCF5D
+8C87CC51FAF946C75EDA7F6A9165D42E5F5BD629B84F298D790523D5AFB2FE10
+C2B9D578FAF1748BC0EB868D498BA46999F36722A7C38A6A7B34B85238F4A640
+ED5327411CA5D44E22219BE1157F163C145DA6E93ABC5D0DE2B3A7AB01EA33F1
+2B46502148336F06D6501AAC93717117BCE587FA86DA114DD9E264F5B1120A08
+AC1CF7C42992AFE0DBEA926A731FDB4996BC9405BD35245A6D08FAD20D3FBB49
+3075948A25C1634F0290D5AAFFCD7ABBEDDD607A7250D3023BCF2D2002395BBA
+B252F6D039EF1FBA7C71C94F45029FD935F5CC48F6277B5C843881569C5C4AD3
+7B54E2248A81B42FAE507F105CFEB1C3EA4D99C9451A05829733D2AB14F26B26
+C02D1496C8EBB12425A2B90E94E76C507C14673665DDBAB34668C44BD1834992
+3542D09B76604E40F61B2869D09E568E03003F15752B066E4CE03836F49E699D
+9A4AE3C95AA7C73CDB829E7384288A696CFBB0169BD6A38AFA1D514CA7F1145A
+9ABA828991D7C553A30F340FD31ED6C6FBE5403E983ED3792A3B4BD34BAEA85B
+2171D8C91E3B6D8C44E9B464B1723D035BD38F65561AD340C1396CF2153E166D
+EC384FDF9BEEFC97CD9542FC26601AC4CFF9AD232AAC0C2E36FBBA289DF156F8
+B5872E75BA8D7947433A935387F49100C80213EE8F55622A7BDA1531FF68E5E3
+6810922DCEAEA6D335021087F623FC7FFCF401C40D848AB54951788FBD03D87D
+6CB419871FCB786D3E9B3C67A0F9473D1437B207904ABC36532D01FEFD1CE90D
+45E201D5A119F18F22A820A28D74FDA3B36D4560AAA27C7DB2881BE51D8B9D5F
+D8BB25D3CDF776CA9EFD032B9EA3D4337A393289B02EBFF68727F8511CADB4A8
+82C08DB25B1193AE786E9AAD1A929519A93CCD44D1FED5C82D5FC461A9B19852
+48E075C46A8C00A10CC95F32B2E63367F95971CD81B60CB3D5820E7C0A14E2B0
+00681E53305C074E6DCF4F2C0E4D7F5468868ED3ED09C1CF7D19ABBDF904D2B2
+5250126EB91E19F24EFF107D86BD4D5AA7BE3B23E2782C7EB3018D1E23E11526
+03B929656A4ABF84CBD36304951204FA43CCD202225B59E6EEAB55BE99894501
+6FCB70F8F01113CBD194AADC48250D1DC39C07D578D3B883796D2AA489D197F0
+CB13E7BCF91121B7019F92431786E58CDBDD29E46463DFBC06BC43254E7D5EF6
+8377EAADD1F4B6C80C6CEFED86924F4B9BC4FFB42250ABB944862C39E9498CBC
+744E6838E7AC0BFC57B1857898D586C3D1CC2F5C344A39CCF0955D95649962B3
+9B2FE61EB993FC2A0FD2DAE84F26CE93489B12B921ED8F7B06F08BD1D3967366
+255B1E5C01D7E1999EFEB6D5522901650DAE91AF9179787DE84D036469ADA85B
+8A4BC32248E176EEEE808C72D095F941BE5E6BD14D1C82D5402FE177C6EC2069
+842B7073935BA15F5C49F275F878C344BE880F01DE28C735B1B30424F63D8670
+C4CF154CC98F030B2259798F9E62F14B5FF3DF856B7BFF262B88F0EB12C7AD29
+03D0C3AA02A3D51011057FA9C1D06D56BE593137A8532A60B6DEB05BCAE23DF5
+02F05CE14181B7F00ED410ADE26B070C1FA51C22562698CC442BB5BC1E2007E5
+BA70DA947C0D4613C0B1925E7BB88A7B82383D165B3D8A045EBD8DF273F5E174
+E7F66051FDD55E9560102CFCC1D5523BCD843038A46C8BBD7142AA2BE7B22A11
+D822E93F01F25DF7F1F89833B166F3CD0B1631EF2B15DE9E33F4220AD53D7291
+E43FE0BD7B47CD0B89199E206B36FEDA5B471BB5F4B14D96529FA3B053DBD9AC
+3F0D45357F2008EC4A4194A6EA0497E1977D6F4E5C35C013DAC1281CB16307FE
+2888BE19CC22892556C9D8B1B2BAB7DEDE89F39F00AB6C6B1AB3C6C61FD98009
+A8DD8E2BD378B724B72D866CDB1C497EB3A270C6BC423BAAEB11BECD4079F28D
+5111F14CBE73EDB6F327316641BEB1E987779D42C71F95E8E00BD3E205427215
+E2EA543A83124CBAC0F79347F9C801E255D553EEC4A62B718D4AC2F54EBF31BA
+5522AF73E9680E62B122390743D879CF0E69DE4F4C3DE374EE3CEFF1E3759407
+2CED877D736F939D30774F24A24C9F83473F9BE23AC56BC67BCF3D29A18D28F8
+5BA0C2AE83A41DC4C3EF4F74A4AA78787D0B9146BB375F3322FE40E994C0E12E
+CD0AE0A276911061FD23186374BE6EC5833E6ABC09E1AB5C46B098B1A1AF33FF
+E11B1E730819A27A2C768C003D7E5E3325AC3D51AC9DFD993F74DA68CD1A7698
+D4BA04DA1A690A595FE3340D702D57678187ED6459A8C8128F164F7851871D91
+B922F2F30A99286EBB3EC8E1501599109B4575096B89AB5D86201FE35E193295
+886322EF4F72623A7903FC8AD577C70D80ADEA4570DE5BF89455CF407275F7ED
+7265752232EF39EB140725C03B25B832EED91CFBED42042CD6482B161A649891
+F12A097ED1A99B77B42459A69017D113E14788ED463571086D293EB9A29762C9
+CC304629324B48E67631AC2A56D246B4A77746029DF182DEB8DA0D9D2D845CAC
+69FB6D6CC03C0C1C021F6BD8838520008882C2FF0D7D5B5AD98D3869E5C263E9
+A4E83BDB6C1074CF2501247498DF02449A1215F4345E1024F9877FF86D441F17
+7C3487D6B2B7D07BFD0B33EBB519ACC3E7411DD4D2C096CB9BAFADEC8EFDC904
+0ED54AEEFECF1E96D0614784B1B9DC8F1D856F390D2C0273FE99FCC892763317
+A26940B09B46D79342E159D2B5B4B307C5BC1523EFB1968504B2FD69AFB37B20
+A787F7295B6586626D9D0F480E34D366011E99FB01F44C45CCEABF9F24B52502
+C4FBDE3790BBC0B9A4B8579294E692363B4A496EB236F77F319C0B661C42FB4C
+3849B8E338AE185E904AE8922341CC0CC18604290526483394D43947F34F534E
+8A1A0C028771267B757EC2E356BEEA3C0C42C19CFC53F84D9C81D03CAFFB8944
+0AE6B68D15CDADE9FE4B31F9DCF7999EA3D70A3EB09E20D2DD5119A4425E83D0
+825BF77EF18C6CB6A134D513FB9B6E623CCC3482B52DCE326C6AA77BC464B8C9
+AE0D7A0E9D9D96838B2612A1C56DD1DC475A146DCC08918537F7D7D8CFB4C632
+384F9591649CCD36887163FCAFAD51207D00C7567C81C72EF4FD7079C322BDB4
+9F92D883A7230B55AE2B7CB33224843B8080A748CBA3338038E3CAFE39759254
+8C25295A497199F99F66DE767BA520FA0889CA2947FA4E28AE74FDF80472D5B1
+5047D83CD272ADE577283B6FB785FB10043E7BCE5090912D544CABE81A784EE9
+27CB0525FB5461D84A221C8A66432D8C0F3D11801B08B5A0A6E81BB30567D0CA
+B58D2C33D90C300B03D494008433071BA6A245EFA16EE229CE4A94DE6DFC1A41
+AF69154DD23AEA4972EA5067E894ECF9EEF3E4671D00B947BEA81DBAB8CC01DB
+37AF810B5DE58EF5B0089C6AB06E8DAB6A71887741C0CBE58F9864B7E4FF3013
+D6CE6A489DC5729AE9E21863FA566A00F573E63F172748D8F6231C0F211947FB
+8DE5AC7D3C4397A24974BECAD814F9FCCE56B89CA779F39B5C73242B0D6BC5FF
+0DF7FF155DE8180122FFD2C2ADA2689DBADD7D26C78586DD0310C838923EF309
+7429A96FCBCCF22F968875B92AD7FE9716823C54D50CE987DE5F487342BF69D5
+EDE136B7E2C92C55B3A378298225A525C1D04E187997302B4F75D0672547F227
+06F9A21C16B40CB112B3D1E0E02B701E657666E4A16E227578B68A9DED734A1C
+32AEC59EE64DEC565BB123C481AB0AB941A14FB66667148F1C13BA3C48817735
+207D0A17F0860C7A2E82C5F4E1201635BFA79AC0E6CC7A77071D32DEB1E35EA7
+5CBB675DF5D68E4A88CD8DF04DA8D6CE1156BA93967E4DD90A5C1E72E3A228BA
+50BD4A3AC049E501F76E76F55909368A8F76E0EB8D85741F8CD9B9D5C6BD424B
+C25889D930B3A6EC36170A4CEF7E3E274DE7616000C14BDFDC726F323B4E3429
+74B7280C12FE3332FAFEF006A7BD47E97134EF23D3E83DE9A8E04D3E914F3510
+15016B4489959321E320E0BBA88D58B2732EF3655703C58B64CF71C1D5A2723D
+AB7C59AF13AB1ED12A39ED877BD06E1748FDC97300976CBBD128BB054CCD8405
+6F495791F69588AF6298279D065341A47CC018CB76EF3A1F7B78C16450E06D1F
+879107BA9926202B55FA95FF7F685D7BDF1D893FEC66DF13CBCB1FF992D0998D
+87B62C35DC4991014E64F9BDBF5D47A64949EFE4F076C5F5610EA4A743378116
+A6739DCF540EFF064EAB053B9ED34743C724E7D2C6CA542D150EF887CA78D53C
+A96ED7F1340B2ED6D5A67F5513DA63D4909E1F8CBC25ACC24B743A3B49058633
+B605A132FE9F9B01EB75243BFB248FDCE25E82FA7B589E5403B8C1B822931D03
+ADEC24EBFA8AE740E7692AB5418E71ED25885FDB38087E3755227BF9D7D14CE0
+9DDF48A7CE11128AB6B0A53A75C0AB7B9CD68FDD2A4B29217443CEC5C8680222
+CBFE6EC20F17193ADBAACD485D8333A95276C071B0A8385E43E9D7CAAECDD39A
+D649CFB1EC72212C5296D1AACB75EDE6D4360F2EC9F441A73AA7BC2AA04ED028
+4B95F1264DF0F21A969494A1E959372937C624058A1B37414254BB718BBE99E8
+5DEFA7C0EC0D741D7612F73044AC37BA46564ED2307CBA6E22264B3539020A93
+E2685648B95216CBBD4B22EDFE51F4BD6C91F41828A00F844660B32A5BF9C5C7
+D68A46412DABD78659AA24A4D6BF67D2147972C47AC2C3217C55F95A992205E0
+68199AF701DB276C7A53D7104560A645E89EE2CABE14B5DBA333859D81C20293
+84EA8DF06BA4AA429FFA34E5C87CCA5525D360C5848AD2CE6051564B9FD6B454
+A2E4C1913E0EA6F7B5E4119026CF2C8488D5DDB905C64D5F07378B05B9DCF5F7
+552EDE447A018DA29A677BE310D0B6B22469F97353ED39C6BF5526605EE7941B
+9773DA131070B75AC8F50177659EB138A07DECE0524EB34DA9F3EAAFC01C0374
+728B0202ABACCD138A1E7F1A4B3C006D794A19596641959CE10A5E83F848A919
+E6C0101EC00465563F1BB028A0882D619CC2D923E9CC4B1C85BDCA479F188E52
+2A90133B45626B6623D039B471F9D9FC144E5228207DF1A8035BFC0301CD173A
+7A7B828D27CDAD2A0B4BCAF8C99C62310B04F72EBBBC458C785E5F23BE9D1459
+8773C9C0648E11D92B73D49BC7D587E4E1CE1C0E93FDB67B432C35A21253775F
+754EFA2148EC95CE33B6686BEA49224E818533235E8493364C6078513FCFB982
+4155EFAA41B59986DADBE962285C9E842AD3DF0DF9E9075D28E1B45BE27A2AFE
+2CF48B90ED76F75C4D40A48649177285FD19340660BB45564D70D179772CEB69
+D701FD356CF5A551CB8B36EA1E30DAECED401294B7715509417F08BF1CB7277E
+C73392AE92C0DEA0E8D08E0E4ECE92334ECED69508B32C565F1E54B227F57B9A
+BC49EFA298E8364979C63AAF76F1129836C32F04286271DFD85C5EB08BA45FB9
+097409B5491F3FD6A921E5385EE763B6F9867EF2BBA496AA64529CBBCC534AB9
+165C59BE8A43CB0BC47DDF1F6127A9A9DE5E69126B5B1C54B396C9EFA01BE602
+3A7165A39E8F80E58EE14E6AB9A8EAC5EEEED389ED027319E66974B710E887C3
+9EE4AF6AA8387E81CF302D8D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueID 5000818 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
+5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
+80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
+1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
+DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
+9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
+CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
+F83C7D393392BCBC227771CDCB976E933025375FFCDD9E2FD073678A57A333F9
+6BDA68191ED103DB904FC6A75017A9939B1F14A711BC0B140F6C4E6C217EEADC
+2B649171318049FC272C351B1417B517204D5DBE34FA6D6B93E1E6086F880CF6
+401E7F67B5A91AD4822EF4FFFBB79015651EAAF84024DFD7A74045CA18515E88
+7EE363BCB8BF9D97ED631D5C1CD97006AB3AC94DA76099C945488544974B0FE8
+A3F15D97A0BE56338625A0D0CFE8566B8FB3A70AE8CEC759E7B52084939014AC
+604115957B2FB7E97BAFEE38905AA81476D225B96F0379A68BF3270503F3B605
+A77CCFC93318E4C44A1C17F011F4BB61E95E82A0FB39A886C2CABDCD59D5A7A4
+02936AD8819B50869E5B3080E67ACB7DF8FAA4DE4F95E8679063A8A442696EF4
+E0F13F9F966B536A4BF33A36A9A43B025255B682726E76504D03A6724E62BAD6
+63F90049D953A490976D70C6B1E9B8EB268C452EE5DE8387D12C679EE0BD9CA7
+FD250629BC87CB357480E70C655668AD8DB83DD15E4D4FD79FE1B857D70F2B36
+D49659715E1985E9945F4C694D004220D03FF36AA87F37F403654BEFFF0730C4
+FF9D5D6D172B12C72B56F4EF01F647E79C2C2FF41D8D8209CB316FE7CFF71F6E
+5200D1F92FD7928FB8E90B3B0D6C51F2757B30DB38C12874628ABF1159B244A8
+0957D756FE6AF818421A7D15AFBB29D24FDCB4BF305BF5C7D2AB5ECD83E3E1C0
+1C2AF2321C8B497AC074CBD0EC5879AC61E5F0549F39BF447A4B6A88870FAEF8
+3F4BD675FF5F0901E3B88DB5C6BD3F6BAAF9A842C2724D007121E63F33CE21D5
+37D3F50B33FBB92C371BCC73C7071D4EC40C8E0E5F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueID 5000790 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4A78141CA32C
+B3C74E1A0AE0520B950B826B0ABD81766035058ED1654D00FE541CAD1D246C0E
+DE85FCD3C0BF7A70B913487B1A527EA823C00C39DB61FD6641B140FCED8580D8
+046741D2494B4E7CA1F120CBB0A532BE049CABEB70A39018E8212F8178E93C98
+B377AE2880FE39BA0EE29451857DB34964DA26ACA4CD23CE284ACE37D89571FF
+CB67DE7AE379B74B32ECACC5F3DE0566CE9EE820E96F27653C75935851CD9360
+A83C7EE8270383CB8A80715BC2B62B1F709235A5A73D99710D7665182D461095
+B98C8A0FEA44F0F1959055D50BABC7880E7BA1CA4CD72531A240A622663A0A1F
+DBE4FB907F97515CB1100282C9A0241F65F84EBAB1701FC105BD25F82807F4CB
+6A5EDB5CB156A7D55F64146818245C112DB0FEE9E0AC96B4B2AEB27F89FE0560
+727D85FE6CFF5C457EB1EE5D7E2A09979684E2611BA57A1BC7BA4E37DC4BA761
+557D986F9A8B495CB7212507AA79C297B0665CB5883F2332DF5CB088A92E24BD
+1EBADCAA515B567FAA9E15E7B8DA60C1BBEEF5A2E0D4C0C67EDAD822B5E8D81C
+6D29928726D36EF0A9238476FE54D4990E8D75FE0109C0336DD50F9021307213
+F69C700D2291C546007CF3A5DF3BF5ABEEB640D3AEF585055A65EB2CA7AD7F11
+22182523EAA8FCF029C604212529C03F179566E6B731FFE2283D6402A350EAB9
+3C7FFF41383A9398B33C48FB2F9A8241D65425FC5E49DC9BB97521D91E44B3C8
+B2EB1BA8D532BBF175486D1DDB914BCB92968D342B5C1FD6FC72DA462FF68992
+464BF0E00D05C2AC3729E598991C6EE7354F0C400296356ABAB37A16FA504DC9
+B6369F88BDB7061D5EEB761527E588B4A6C83169B517991789D664BB543A0E57
+6F2529BDC7838AFB93D53D5794E57B65A7DB00584492C046F72CE19E4D1B177D
+1D951362B2F7CE2B720B305D45B7FC74183C1DE46073D8E20FDF8027FBFCDF40
+5F0950F5AAC19AC8E8D9A57A271C0BB212822798DCD068B4F05DBAC2AF7BB25F
+5DFBFBFB5A51ED26ACB22541E1971002A5D97B5E148F8F087A3229C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTT8
+%!PS-AdobeFont-1.1: CMTT8 1.0
+%%CreationDate: 1991 Aug 20 16:46:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-5 -232 545 699}readonly def
+/UniqueID 5000830 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
+3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
+ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
+C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
+F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
+4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
+61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
+6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
+B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
+6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
+C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
+BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
+52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
+48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
+351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
+C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
+5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
+1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
+3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
+F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
+6501DA7E6D96E227068E993DBB0072F037CA411E429252586CA153360490EC5E
+2AA8727E9605FB75714E22C232C05DA77FE4B12630E21C745889A8ADC706FD27
+831F980EAC18330D5D2E46563316C36CB25F50875F7848978142575A3D2784BD
+C9C3A029D9600CA3E9D7A26A5DDB8567F8BF48DA2B08CBE7B76EA261CD180CF3
+3385CDAD915A90244C5660C6F9E32E6027D730681B88FC02E6C9B401E93072DD
+6E018048D22EE65F0A03018F444194BDEA833D8EAE56C2E5E03FBC7558684C32
+C1353169FC072C0A217D2CD18C4FEF6F6EE2E1D687939244014B09DDD8CF6193
+034D71F007EC89B97005E00A81721503C87B875A6BA33B4D6B2D65AE32141AD4
+160293043FC5425EECEA875CE6F87E7C6F6200B9D52C0E285891C0FF88A0E361
+E7A51574CEE3918B9CBC83B37DEE303859B4545A7F1EEA33C7A4459E6EF15953
+A57D7DE99C7BD953B7DE84BC5C0A60A1768EFBA317849A4A8436F6364BE2F323
+4C99478E2B7C83BFF1AEB394C489CD87D7606181C61D15C85760761DC7F3A81F
+AB9F63366378809931F10710C8A595966590AE5A85DFE5DF86D59853546C87D9
+957992FF7C0D11FBA2193EAF02356A1D08F2C8A7AB2FE92001E0EE2AEC0ACD52
+E52D961E65B79F613F0F9B51EB31F244087B484697C3D4DC28550B173BA7E4CD
+8D0B0FBE866090BEAF95403D5D03D90AEB48688A8BDDA8AA0E8AB89DD3EB27F0
+99622F21C77FFAA3A8A5A67DD6F16AFF35C2B96957216B0021F2D6415A0F5730
+D179FACB55678F5976010A20EF3C0B4EF5CADEE4C4DDE59A3DD93A87881DAD14
+5E9438F095C9970B2DE2AA6CC85D26471A93BF7D9ABF0253FACFAEC66AC40563
+24CE6C4DEF61D3855985116CCDB53A70AA7B5F941DD21A2DE52FE42AD35E08CD
+0FDED28B65290948030C5F40DCFAC51F51E4AA828CDBC114060B7370DA18F7C9
+12378ED10D192F3BDD11375603EC90EE421E4781A41549555F35021C57813161
+145511117E96E829386BF43423099250C8695DB2B891D68B4DB7D949F481CBBA
+1DDE08680F7FBC05F9F00FF10ABD21032FC71E7EE2EB4BD97F48842FBCB00E73
+BA581330A21BEEF313BA3E5B8729459393B15B5FF7B63D985F6B0DDF3C90F3D0
+75691B2628BB9D93049A634FABC67137F727E13CA04481820112D953881ACBD7
+9A85175D2394FE355A4A6E485F3B1D69D8C06EE532CB2508D8F3F1E65C0369F5
+F10B3D86E8333AA1228560C37614F8F924585323FF0AA91465B288F5BA39AB56
+27CB01ED906DF594DF3BDE610AE97315B6E0C0786691CA63CD16F32C883B5FB6
+DAE4A1C028BF5D935A377C317C2AC0F738BF2F5001BB6347B1EE4E851B7D4264
+20EAA262FF69C8C01A4361C9CD7558F4D57E14C0F631D4576C0754191CEBAD26
+2598FA77F1B5F8C511953EAD4A92ECE452C5EC23065C812C7C355AA448F429D5
+99D4B28A65F539333EFBC3CADD3F0824F8D04368A12F309A71917FFD1CB30364
+CF98DCC3BD50B0B30CB8E07348267B834EA740352F90312B24BBC22D30D28C0D
+2E571EB8C6B7BD316C311D84B168CB4E95C4AB2D6A1351EDD204696C2D728E73
+5352F0CF2504B6A32D07F207AB5207E465239EB916A77EB60ABA8D3BB42A207C
+468068A6E9820747D8F4DA73D8352B70F1284545A66D4A5128B96F48AD7F24E4
+5978B267C2E65E0EA8BCE8A8CC397F50C5E0946842F0AFAC4D058D93D5125836
+0FF4BCCA05CB3C4AE932E73878A04D07D431B8940466E58690DB3824BA18AB19
+6A4154392C85B170BFB08A4E2B20A22971BB62BB54BC5476B70FB2A36D319917
+49A7138FCBD505B64FE319DB6B160B1C55450F7C3EB1AE1C1E1596B9FB4601B0
+8293C6D340C9A301F0B3A16BEA8EE0B593E1442E802AAC63BB90B7069D758E9D
+183E3B753D8872EF6F584673E41838C891DA7B2931FCB41C2AABA22CDEC44AA5
+23646E86239A2A638EC8E0D7AF8A060F6932C10C7C933FE4C3B8FD2FE068CF15
+B0A0D71564C70C420B3443D8038A2D42EAD34FA04B405970223376E59B8A6DEA
+314520BFA5ED90353E0A8DF082478ABAD2AB826BF12EEF1918C1BADC6AA043E0
+90A8DA3A412917629A1CBBF535C2E0DC90929DE932CC286CEE95228B73031E77
+3B0B87E4BA3E539FC92A2730B03E6DF5F947C09B9E99400D5E081BA931FE79E2
+306FE667D7C94545C0311F3D9939F315A586BDF6AE2FEDE5F32861DF838567F7
+530FF07F5A3210373C39C6A63B03CDF708EAF7229ACF271D0C78E02550B0A51F
+68B9235465D181CAA18607B10F23597AF69510A74EEA27ACE4EB74EDFDE2DEF1
+93A0DC2E47252E4CEA86790164EF264EFF54519DA5AD87A12177B15776140E86
+D5CE9F213FF3E3ADFD8CD77FAEFEDB903761EC61BBFB2D4E04DBCE5E2A25EB81
+973F8158177C0DCA0426E27E048FF3726702B4ED43053B1ABBFF23DF91720A8F
+2233266ACB4850A51F94644F90BFBB9573DCA298C47E77D111489D8B8DA44DAF
+4B943A5373AC74CD66A0572A173F85B959A511D0C3EC4A2C339A0157255C8DF8
+7F6E8C1DCB677CC115006ABBF37E4DF57E67F1B6E2D061995F31DADF8618E596
+FBE25F8E0E89EBDD6456E4CC212F0BBE2DEB6E67F64B599D810680DCB4F1AB73
+87016A9ACBCBE0F369DC9E5FFB1E10D6972BCCB70B708DFF31D680AC7440658A
+23A460F7AE49361DB66264638C63DFAAE5FD596B78D5B67366694FBD5E0F5D46
+23BE41CFBF87BB1516F1292F4C0CD729C65BA9CA1CDDC19E3B61B015024C21AF
+751DE2EBC67F4C2C3141B0356D0143C7A980AF68FF61C30DB9CAA9D037D880A4
+1B456B6811B6FE5E452DBE16ABC3FECD679DFAB214951C5E77581BD007BCDD6B
+1E266FED7A65200B8AA2950E73A061775385A6E519A53BCEA85193EAB87D286F
+751457CBA382189086E34FE5714F4899E38ECBD456F243D235B9E8472DD8F40D
+14D5B68BEDBA0E21DF657524EDAC18DE0B09CF7876E0408F69851B98717754A6
+4B2C1957EE4370920647A67C66B95DE345D6D5718C05132A86BC3256425493C4
+C83E23014A7988E89F223B2A123041BFDB762BE64061DF119440A1256FC72AD4
+2F4F3F979042288CE008E1BDF144FDCCD0BB26F467BBA9E8B2ACE438E4EB7F2D
+98B82CA0E129CBE7E21453AD0EE151C4D9D09AE6B32E29CF82F64E2DE3C76827
+099B86E2B64F1B4A2705A259301B221C6C5A1ADE04BE8A1F8022A0D3C1E4F601
+37AFB8D973ADE45BA343DEC97919298B12DAF45D41A36C886A1573071A30A0F8
+0FACAA8F25D8B3035EFC3C1C6A2BEF12A387368C790FC900FC9F74A61C7D4C3D
+23400F710573A56685325CA26B23461BF8D1123E16A9A2C107B9EE8DCD39E138
+0E10E36A6467BD5046B6BC967D981B598BFBE2AD90FDCBA7015609344924544A
+11E86E02FC9727B2770B732E60C21A7C60EAA31C14DF51BAF8A525041D15D1AB
+685B03E7B74A1B97F2D77448F02B3BE93316C49C07B4EE31E7195043D05D7C10
+88C1847E54896977A09E3A1BAD475A3F812EC64FC99A1E86EB3CFC01391E5C7D
+8696BA362A7DA2172FB0EF99185C01741F97D66FF795B10E84385B6C9E996853
+5C72B3A226E18AB4EE7FAC1D4C5141C716BCA627E3305245A04D7EE11A7AC97F
+59862F5577EAC9D9976FA5F6C3514D296454AFFAB78EB568DB11DDCB1AC4BCDC
+0CB0CE0A02AE97380F9978FF55B10C9882279AD6314FBDC587FD9A7E6E443773
+72EB7C52A118F79EB4CE3FDB2F666D43227B3059999CA25DC06ACD657F4768D8
+C82CE400837C08A2935F430987348A27CAD51AC8639CDBDC4C911ECE62CFE94F
+2A1F28F10EC80A3946566FB09F6B8731EEC4571522ABB2A90792339331F3FB1E
+EF0BB328C57D30E5B1849B6937698E49ACA84FFF48F716EC81025091EEE4CD06
+A3404843DF013CCDFE867C7CF2A29C1DFE96DFDC47B65E916070E6D019C0A62E
+3A1D5EA282B3702B1B20729F4791D90E6968342C440622EB34D774BEA2339FBE
+F52C4655ADA9515B0A79A2C4E628E6539E57D2BEE0D7084F74BFC2B3C4B36F55
+7B9003ECFDAA58BC265C1E8ECDC78CD47038ACF5F0C37E7A076A8B16F9F712BF
+E16240917C281C41EA3CE87CE4C1C976711D83374974D37A00FFA7B280D76FDF
+79D1BF415CE8686414CAEE79D2FDE623D40A789A98DC2A6B88255A67717EBE54
+8E0FABA8082EDC2AEAA66F509CDCB5E73BDA6E20CA603B83446213A967B77C99
+2D6A58FBBE0159CBF46E368A28956E45816173719983CD1B775C940CDC769E71
+3331680DEAC9FCE0C9FC2B1CFCBC6C6638E02F93B4F51219A6FD277024F8A61F
+1641A540CCDAF1CC25EF0429A0C9D403F6A31852249D3ACCCF14E4110A58399F
+12FF0DCB0B4FA1AAE66F52C9A6C6718FEFBA51292F2D48A762197034B06FE1C6
+B784B4DC6AD9578BE38A33896B6C528208C33BB5482E1D2DE4217743A4DE46E4
+1C2F02BC25B4BD8F2037D362E9DC6F7878B77AB6D3DEDA9C7E1EDCFF9257C7EA
+B42065CC8BC029FA1AE9570B17811DFCFA0E23A12B9C7A42444A02A8A2CFF5C4
+5013A984668C3BAA0B4186182054E8CE7EEB9B09DFE7A4F081BF16A57D26169B
+EFA22E7BA38AAE8D01B1A894904AAE56B79DC018E63030B58849FFF875A675D8
+A52F9606650450A452EC0C0D3B494506903DB65BF4BFC8BF6C8B79033737BD1C
+1915A4451B10CA2C5195458B4E6D193CB1AC7386730AEECD1184A69B07B418FF
+B0E5620F8D2ADFF93CEA7F5DD4E71FC497FA6F64AB31D16BC00EC5F8A01FE192
+4E7EF5104EEB6D098D617268E79A4A2B9F4869EC952B4D6887FE9BDB61D26397
+69AB66F43996DFE771736F081719B6987C5DFA86B91F07CF1FADEA6390AA9B4D
+53093D427DA39F08096161E1742740639C332FCC40DF91A295A671782CF8C713
+0FA36B95A55406BD18FDCBE9D1AF9492CC5C3DB7DCCDACC1DA5D40F2CC2C365E
+F99EDC21B3EDC564D282029AAF62A49B6BA5C6937DD1BB15E68BFA698549EDFF
+BF0D4FB2645885BEC5B79E8475C43E5DABA6B60E72E31174054724F711FF3884
+36B27B2DB7677F04A704E7427B00FBF8880C0482E98893E23AE0ABB7CE35F2B0
+3662B322718BFFE777F395D551E13CDB3179756FD85B1F132E62C44A11340E7D
+B8B274D22D0493F70E8D587356B84D4238439F2E816D589B04831E8F8CF691B5
+98DF446720310D929B1C8E29C51F2FD1C70AB8F8FF4AF21A05D3A520D44554DF
+736DFD865EF1B73A0C06BC9E2ED21C9D1444D3F41CADC2A666045ABE51203C6E
+BAE3CC3C3F6A482868951970747C45270070D2FF52C5C9B1953F845AEA12C02A
+DB5AE7B1E9ECEEC8B533182B46B8ABA08D587806E88B87C1272877C3DDC6B14A
+2CDD31A1F0B8555F59C5CF6A73244B70F5022683A789F7E0BAE3457337B709AB
+CA88BE9ECA5D0389275946CEE8BCA349889E64D8240FF5AF76EE020223AE5E25
+59A007E200CE8576C2A5646F0B1F35E4004D132A123CBCAB8522F2E0CDDF17F3
+4BAF1FCC0BA38648EEEBAA38C1A783033951C59F5D52F3262DFE4C6E9E6D8E16
+F23015385A1C4E06ED360BD33579A6B1D1B119665B24294A69B4ACD82B5C801B
+5162AFDA181F01C80AE0148867FC419C7D536D3ADB336780838F34CAF311279A
+E4FFBF6809892F0BB1D090C678C1254A9C10DDF87B3DAC22305907C982AEDA69
+32366E4F2AC672D65A2F71A842C3D6694640DD821BD4D9C4E96E49799322EDC5
+4FFCC0D50EE4FFF6F09C935542FFFB8D8B7EA6B647BAAF44BCABA88520DE7AAC
+2A4001008C5CD2A973129B418D800F9B8BC24675C800713195C4C2DD36DF73CF
+35D69E71B10D31C8DCD84A0E2FD96EE6CC79F08F4DE10E04B7F2E6145C2B7409
+D52C6E3089D6DE31BA5062113DE1063F954A03B80540EF62D4F9F41A957A90A5
+E2E64323671EAFF01D2A5B93928F6346C41B99B866B08AB6420396EDC8320DB1
+ADA75B667AF93D1CCFA9EEFC5BC0C889ABEF879138A86EBB2D5620E8621B924C
+F60AC2456F0FE9E6762330CE743DA37D2CD9EC859A61521D6BF6D3B3FBABE3C4
+E7EFBAB21F0694697B87FFCF6089E585B8CD57F4D7C22A5E1A2AAEEFA4FD8623
+333F90E77DCA57BFF970D593B3EDCD64B40EE3C27326661B4413BEB7714F152A
+935427525E08E248193142B91CEEDB3B0209C70ED9FFF57971F524026EB4A194
+5622DCBA91A6BC854B3B3272769AFCC4D2B64B7D71619FC1F39F435835C0AA10
+0FF412ED58C0CCC0BB1888A883C56864912E693441902E66DB83C56956C2E7BC
+F98621BBAD7F5117FEE6CF287A5BEEFE3F5959108A88B76365A5ED6039B6A798
+408FCDE095A872463F33D417EDE584D34B721118D3C29D22E6AFA7BE5D141139
+46F3E6BBC0AF1CAB844822AF1AB941681481F4E763AE6A1F7CCE0CBFE337364B
+3174464E6C21DAD8F3BCFA5CFCDD2F5FBE00394C6BEB1157580707CCE8A81DD0
+9E3D37025413C47F77BFF4B275EB40FF05F3EAAF70AF8D4B9420AE2E1DD66A46
+A44BA9C7E6991DAA7CFFB406AD98CBB1177775A1D6629FCBB6F60C3942199455
+70B3B93579338C424AD1642B9109502B232B42E50A58A7055068E43F56B9BB78
+5D387FEEE382A33A97A3A7C29DA4DAD8CE9F503FBB85893E7FCF18238A83525D
+1958B38A24817BDC440EDEB913BC3C61EB2022A71E7F1D8D683A36FC1D84C570
+2BCFC3A3218C9C6FA9657980BFD482DE8DC4867959CA93B46F2887B1329DB496
+F69C4A43641ED3842145BB868A430E03EAFBE786B98355527882CCC8B4EF734E
+BD0DAAD6CAA8B36A4405E5CA9FDB69FAB8C5D85480D81A83EF6038AA3FA8D687
+017741F80B94CE67F86A1C4DE3E3C197320568238C7A7A1056520646A674C3B0
+BBA0CAF9413FC95E938F46D8588A94FF77079DB1698082601DE0D71003C74392
+68D48A8BDAEECDCD2138BAA3CC43F83532F27F4B20AFD658109BC2A26D8B6C07
+5DF873C2114531AE6E98753DFED7214D634A453239990329F08B6F22C32D097F
+85FB45CBCC189ED8FFA918DF0EF2B81CE018B93374A5BEE3653336C68AFC21C5
+77BF87F75199D869B68DC72A22274D883D836974E0AE8A74FA8BA55EBB024688
+3EFFFE119F54B75E5BBBBB66B46B7E77227E680870DE9EA2BC4B7867AD7F3512
+AA3DC6E37E89E420CF097F26C7CD717869DD8CA401DDE7375FFF18A35CADDBEF
+DD027E352DD8B99893C37F1F84C5920EF3B3B2CC254EC794FCE1C8B154866B5E
+E3ECA7870521BA860031931B924E082AF12DED9962E5E9E59C1FC08DF1258462
+6A5BD8BF23648D1131C67BAD67F17E5276E82EF31C44A5A9A5CD664EE85F9CA3
+FFEB95982ED1FCC1EE9DBC11368EFFF6C53AE3AC805D78D3EE4BED7DBE490920
+C5542128E68F9A6CF46D1693345C9822C77303397822C3B3F7CF5B7C39A9B606
+C5C57B4723A3B9F15C4B4B1BBB4D7267EEE3098285772B1D4CF1E15277EAFA84
+3B54EDC3753F347AD7EFD7BD292539FAD422EA17240A8377D894475E6ED70094
+7648F9850E1F8F2BD5F7C3AB23BF64C692762DB1727E10CE0E6AE83295B91349
+28617E2F90124BD97F19951C55E895767AC141C421380AE9C311D41E7CFF7DEC
+880263507BBF160AFC57F931995CA3CD773DFA34654899BF1FB5FACB5D39E67B
+FCF44618A2F553ABB7707FCA8C118001D9A541D0FBAE34DD4978FD40362E03EA
+F9C9AC0A6B23E3911F8E869E06271640C2E9A0F6F810E1E8E6F35099EB5D238E
+78CF6CDD08B6CA7895BEAA8A3F42546B7BBD19E99518E94D83CBC5AD2028487E
+FC3E8037D954767EA744A08388A946BF6B48399BAC6552DD0D6D81C4639D4E4D
+FB3AF3F09AEFE96C24D5A73B839AA47AF5C2B6A1C2ADA3B5299B59C4D39FC3E4
+F537A1D9739BE21DDA12247DD50EC83A24B335BFBE60A307583DE9EDC6A4B41E
+F95306F407890B11FF762DB110C81F1C40558E23FB49ABB698CD00AFE090F590
+BD55F31056D5499B2C5D8B838421291EF18646A5791164ED41061DB6B44744C1
+BCDFEE00A092033DEDB0CCFEFDCC484A08C7AE206821883BF5EC194FDD158C18
+EC56D2891C5517D274303F10AACA8524C43E88108FB59626DAC8252A30AA3A63
+CCDAF5D7F2BD922EDBE80B219706E22E6F4EA6C6ED2BDA5FDBA42C3C7E615F7E
+85A9CE4784CE32BCC4FF9F14EC3233E7728DEDFE0A65F36B43CD100DFC0D9257
+F027C0F1D42B79ADCC90FDD53C50B092CCB89BC737A0212AA7C7B2F1E234D97B
+7CD5651919685521D8799FBC97CDB2E6718E4840A88CC6BA5CCC9F8BB4DC2B7F
+13EF9948947FF035E9DD4CC81994F22CC588A08E3DB3BF1808B1B8ACD5DEC501
+DFEBF7B9F0C1E9098710F18BB28324A09730F819D2A1346962011E3325A06EC5
+0CDE3B13A2B2AFC1E88AD6AE109841216AE9C0E34BD4180D31D500C22A2A4D56
+15F720C054CBC6FC0CCB252010B9D1B30995A9DCB50F3F15FC4A2ED963279754
+A51603672403C6143D57E5FC97CB977C9B561F50F73F2A17365A12FB5606D75C
+F85679CE7A4CA183915EEB79008942DDEDF0CB51FD786C7F4EF8AD0DBE291D8B
+235160320998FF12783922D32C29244763F9B7B5894BED6B5C7793AE22AC11B5
+1E5D1F3BCC402237B9506589E6B8DB0638E730958A8F9517D051FA07D98882E0
+4E4C3AA9E031515DE0F413B9ACF75685ED1D8CDFE44B21FF5ADB57FE6D109E63
+F201F8FF8734B60FDA2275BEDC077308652AF9EE34674455D9C5FBEC15363D30
+973F411544C35F6581D7F135BB3A2B2DE6B286DCBC29AD9B1F28A9B25934DC4C
+2DB7BBC6D6B4D1B4459370E29A15A7728061DE3070205FB5D6524521995DC28F
+AA9514F37FA6D55DA2482E56C995E5063755123D151959DEC4E406C18ED4B052
+A8992EF41208C4F6AC5539380EFD70240CB1F6A46B451690B32A91757EBEF5DB
+4A94DCC49AD7EF038E87BB6F3DAC2B4D2707BEE805BDDBE96D0249C55BD4C140
+77173BADFEF9F85BB4D0E2194BC65483EE34CAAC79530023369275768BB8846E
+CDD21414F0FCA20913EDEF6160623E28B6CB22EBD429778E7AA44D20EE944DF0
+D0047258E71110ED3A398DF018009C92D3B694337CB5FA99071B9B1DA40CF5DD
+DD478551634ED561834104A01B7F6E49529237262080A001D121DACA8B5FE018
+B8C3565E1292A66B341CB33B1B30BC9A8E6B9682B0598B4AAEB34F080D58E008
+242D14D34AC61F925D0208EB26E47985FC45B1B870AD1AA618DBC877A4947F97
+0BC57C1A9A8816072B36222FB66F29B54BAE35BDE6809ED17CB6440DD4FA6F70
+7679B10C2BED86B468DB104141A1837665E512DC97F592550E85AF86BFFF3F99
+AC12ACB75B2ED3336B1D17EEADDB4ABE03D0F1658A57EA4861F041346EE2CA40
+A729730123EC61186295ABA4134F1DF5722DF186546D2906ECBC3430E7E3BD03
+CA0D6159091024728783D68001DE7187171E28DB5907F084A94D2462E703EDE9
+590583BBA61BEA4B1161BD4C41FE39BFC93B0FBCC5EC9FF4AFB5939F0CEEE032
+FE5AEE66D56547CF94D88C2EA7BE5C78D4BF227A02AA229FEED9BC5DB1340B02
+1B9E8FB9729564C3EFAF35411B7B28941960E5DD45C9DB122AE3DE1076E5AA31
+F7C6DEA00FC2E4E72059547CD89389E8C7C980829C896FBFC2DDF77EB3206BC3
+F1E21347942EA591DC3FB59BC8E2BBC4C3C657305F30A2D18DF93CFC0F0F0216
+4F19A938BCF2A4BB8FD1F1B965F22C9729E94D040585936C020B24289066E742
+D1DD955A35056402B40B3EEAB83A29F47EF3B229EB5EC517177862FC86EF08C8
+BC4D9FD57A0D8FECE71A4439DB8954D836071130964105DA82607FBF2C9A1810
+3BB2D7EBA820809E677FC5952AADECADE3AF4AA90BC15F40BC86F071875E0C2B
+0BE47794B817AE5FEADE9E4092425312A71087A7CAFD886CD39069BE426671B7
+CE8E4FC97F7C16A702C6F8FB677483D7299BB4BB06EFC04B7A32DC93075B79F1
+BDF4470621FF49D372AB3C5213E5A070E27BFAF7169FB18582BB796671D539D7
+CA7F0E072B5A394FC2B6587187E1349F69848D5DCF048E71531B13F73895CD7B
+7D81B338AD6D445C27EB4C4D76C0B5E64A07D03BD7D8CD3A3DB491C2794CB031
+E56618C5E0D65F562ED857B81FB384228FF762CD2718C723B7B261750E25D0D0
+D26060723382911F867F46AE73AD67C943C44196997F574FB36D1FBA79E61A32
+D53145364DAB0E0C6922CB21CC3B03418747546E48397A7DBCE9AD89193709A6
+B85AC7F6167D7DF1A6B72D876C4AFF990CFB68B83B0C4C494C7F8CBC60B1E7A6
+7B3695A2CC0FA011FADD2527FF4D47726782C19CDBBE2D55BADAE4350B053B8A
+1EF6B385ED4A0A00E1D0DE7E4F74BDE3497F13D80A6C30E833DC6FCB3E597454
+68EFAE3D397D4C8817EB082DCE98A0F4BBE0F39C79F22021C84270AACE7E2E12
+617F4FD655B9F5BBA5D4F8AC935F6E2F5007DEC58A1929188A9D5FE5F4C4AB03
+662ECD86676D7CCB50C0546426C8B92864019A2DBCD4247BFB904D8559F2A9D2
+0993D260CF293B40550AC6DB3A93EEEFDDF7D8EF947E1B487104E0D0E4365BC3
+62FCE7CCF52930C429532AA2E3FE62AAE9425A97EFC23EFAF6DA75C98CDDFB18
+175006EFFDC2A6ADC9B8A8B1D343FCA0155D476E5AA2362F404B00F493D97DCB
+3AB5CC9ED868D00939AA1B55E0824C09A1B7D8B38B98ABD0966E73B5019504EE
+7C3A6EB0F094A3760C96658CACDAC422442B04957FE7A61544A5F99C6F7BC695
+4658AC5403D3395CEDAE6ABADCE9F4EC6311FD92B340952DCC23AA72B514E163
+2E87B7F5588F4EC9DC915BC3E6BD8994BD380F0ED79C4E47DC0DD89828D65709
+29F085518387CF2EAC62D2505DF0CB47D307E1DE4F0A147979C6D5B93327B7DA
+4BA34DD209946E8022C11A4E0767FD809A2F628C73B0A79201C40281BE044CDD
+5F9130EDAD2CB86B1A324B824C8A1A60D34FD32558089C4FC8E70AAF7AAEAD06
+48C7F711B33C7A421C1B4C0FDA2392ACF4C850315283E86B0DCCE689AC9AD3B5
+91E91329B5CC58DC2CB4466D669E956488262A12DEAD838577743D7867030F25
+BD5B2B0A04C9DDB6C904E40AAA82B54542321711ED1D80348797F35A093D3D77
+3560B459F177D388F4855C82C277179834A94D5B9F4C974DFDF3929A1BA0B301
+CB3558D6BA4BE0B1EFFDC2101352FDAEEAC17D60BBDADE15FC093161B872F98D
+71BCE512AE88BF012B3F96E02EED08A7CE8802D409A07C27F1F3AB40589CDEAC
+99642D6C6133BFD2F6B1B86A80CBA0CC62347644D25BA14C9E24A53DA2DCCD1E
+8B0EABC4B0500D18AAAF3D634D5D1E3D23775FC02C91B1D5C600986E72185A65
+F6C926A5E48E4EDBB4862D9CEA4F491C0FE2DE07B9055975A6FAF60B692D5310
+B6EFE781BF90EED228709404DAF22172D7CA8B050EC477B6ABDE89E6A53CA72C
+5B6FE5A099DC209AF9DE1318FC114ED28E871B705DA184114CDEC65EF79D489E
+347718519EBEB40CE19D3CAA1288413FFF08D1D6B42A8B24E5B00E259BF2EF56
+600EC9C721981559BD0A443F1EDB12DD99401AC2C5F84593FDBBB1C1DD654A84
+562D8ECED1A1E456D56D47D60DE039639ADD3FB1A342F4C3A5071ACC35CBC60E
+F6F10ED429606609B68BD3B3D19F02F652B2DA1EB2884C4246BFC49108D3B95B
+62102EE49D5FB31929C0DF59F98F5F36F07C5C7E9D0244991D2A1BF8ADBF158D
+9D21B928B484102F7882D8A0DD1B66B9C0DF4C95A6ACDDB70619FE403AF8AB12
+56334E17E1E4CDA7E4E006CD042D9FC9F83694B83D45C9C34CC0B945E13ECBBB
+1C74BD8E12558E49A5875A64012B7B5F9C2EB2D50B51C21B9645BE62CF32FA34
+72E85AC778705A888355E9DF59DE3CA815264513E20B9F211D5CFF80C39A3DBB
+D4602AA4C81461514E74AEBE92E88B8DF861465ADB524AEC40C630CD7DCE9A54
+22FF67D94F13612679717BD4012C52A614BFC5E7D6D067A478BD19B6B25BA513
+2589E8B402A4DF511A3239B1E657FD93B3918F05D6AEDE1A27B640F4CF54E698
+820368D069F5376EB9E9486288FEF0F64683096850A6305B648A527E10BAEB5C
+D1660D266731950CC130D634AED2CC2031CF18A9E29E1D1AE56F6A449EC3C4C5
+54EB55F42637D974407202438467C45808958670D5A597883591F81F69B9AAE7
+F95ABD2C94F0F233ECFDEB7CB4C876E2B0279F07786686E1D55652011495C4FF
+5C09DD11E6AC3419E53E778FC951592E6871964CF182963CD3E2E2ED54B0387D
+A65CBF4C3786B9FFB4FC9BE817BA5ADF7C56904E49D76C050F739D8269A0F367
+C07D29ECE96EE7EC9409A5F815F8BB27CD8ABA52DD41D8406271C2BA96F9AD78
+039042C71ECC942D7898AF8DFEECEF2B7D93230FF418B589EABE2CA606B24263
+AF595EA9A092FA271102B6B4A5C2A67E5B06CE6691D36B49A07F1616C79DC6D6
+E86D6734E7C3C50F5D879606627A8F22D92661567C0EF73A1A67657C09493699
+49C7A748B0DE88E6C99528AC4D6BAC414EB025B58CBE163B38308BAC4E08B9C2
+BE464858A6F6450954DA2E5782B78BCC63A28795E07D2C60C10806E21B90B2CD
+CFB625AA73BF95A30AB31EE4172EE9976B307C002BE02BF9955F0193507E5071
+316AD5A467DEAE1A1AEF879C7DAC1B5205EC133DDEB5DD6A9E41D9BA6FE56C88
+CC865D56E2F305979AEB7FCDA4A3C98EA941B09A0AABF4AE5EADC62F1B0B92FF
+0D856E7EB38F355A30B38F39872813261E71A3D1338A8A5BBCE26B874993AA09
+DEB4FF1D4C3F43FCB1972F703BB7140C348A64FB02B5E29A07CDE55883E4F2C5
+702D5D9FD05EACBB3411584715ADAFC54DC38155A17FE2C4D471EBEF717482D2
+10DF613440926BE3DCC427CB106727B12B04464E3A50A49575321F84F64B708E
+86FCFA5921A52B2D459240AD0DB45300715069CFA36E6FB4BA47CCE6856E8B93
+D6A2A43BCFD748872304AC3BE3D905A54A47D303CC1A087B03A33C0763010F56
+AB46520CEDF84F146EE5FB86BE086A472D5C0684FE9A1A633DCFACB6E79CD0C3
+0B1A3B29611306F024F34AFAEBBAD8C18631A68C49FAD20E9DFEE55D14EC95E5
+B5B4A5089A2ED0EF848F88B421857631FA651DD99D87706F4F0FF196ABAC6BC8
+8F7CF1268BE748CAD300D6298BD43283C487D0D6E340E5ADA956498D28AB457B
+46F2DF314922B58CBFDA49200F47676319039A68899BE5D2C78EA7A507640402
+418C8A6F8ABD38723F19E856774316EE90E92C3AF1677D083398D640DD20AE37
+C88DF64010339DB844B5BD2A61B298BBE52B0B2251F16668F8E94D6A95DB778F
+9B4BF7654EA0CA2A418893E8CA6B6BBEE0BBB1347D3F3B56577C5AB1E76AB97A
+E48BC675922974A24E0A75122F5ED8CB912B883A949E9535D41AB4426AEAFAA7
+4CDB413079D7D5C72D9433B8DF1C046E1157849FF78D2C1FD45BC4B4E2927154
+D168E4E33323D2703300F7991165B48F1F95B419B0DC01764F0BE63D861E0E77
+D339CE777BD531C527DDF660AE1AB5E7DD90C430F66E8584BF40D5DF54AF911B
+B39EAFB983AA0D038D227B66021DD587EB51FE1DB18858BC362C438F51774198
+10F1EE25B8896097AC44B0E56AB1B341EC95AB570BE4700DCFD82DEA4664BCBA
+46E0A9E7C7C99C397E97EA27A5AAE8F6260158235A148C849D9992563F401019
+6460B3526AED81B45B9932700C0D1270689EFB94A5E47A6AA094D9F7F2FC581B
+D164CBCBC08CE9A04DB525224D2731265E6E54E278D2BA3E91C3AE6DE2BECC5C
+8FBF58627D29CC1662704DC08735F36038E54D783CED5E60DC2CC7D731CCE092
+DED3F30E3B363E588E714F8A3FD537EB4C95B00FED97F9265114181ECFB39A00
+8E060643C6D238C0F8806D9C8810A545620F7AFB5CF3B504CAA7EC13B13BA1EB
+04F754834D150B942FEC94DD8A5A6E3AC6ED86E1681BA52E9D910D68E31C0FE9
+6E28DBC93BB5A6111E524D04DDC2B49B8DB82883028CEE5EA40C65CC5ED0D886
+1AFB444D05B58E67408321EBE3D4D17905459D71712F81C6BD43F46D11EF6AF9
+5046036ECA41AC72338AEFB1B6F0EF3CBCF089655C12F564451C605B2DBC0E08
+F3235BB3DEC9322BD75A9928A53DA829647DDB8F2795D9CCD76E764EAA2202F6
+01D1C65FF46D5C8B1044B6860D22BE8B98B56B56F3B54EE8A9C2169DD2DDC73F
+94EF440A000DCE60581E409C49165D676E6A32CF9D1B23299991493DBA38614F
+76B6A5703FC9C27ED286B5897DD5539FFA1979915D1A768A6D0C40EEA679C048
+D9D870879EE9C46E1575E815E3842D1F1150ECED41F60A30BCC20D53E8629799
+04B60E21FEA41F1D3084E7A26FE0ABC0555C5AD4A92F2B3F691D60D0424BC7B6
+13CF40D7C615FB767A9DA0AC4582AE0C1B67D62E20F3C698D66D7BAC2592E9A7
+F38F683804AA0052527C0D3889E21D6E9DFD8600A3257F80DCCE0D128CE442F7
+0CF351B360DB45B7D04CCEB3457E444E0C54FC5D337531E4131866D6836F33EF
+066937C7706617311CE8E1BC54D3195B4CE7B1EDAF7EF57DCE8BF17FEC2F3157
+BCC8A5751EA89F5F9578299504D344C1A5951083609B60C8C83FA67F5F44154D
+862DBECFF7016083BDBAA480CFD5C63ABFADB534A7CC8691C40DAB5EDF4331A5
+A3F055929456774257BF44BC31C383E43C3C8E37E18A4E7C499F72FB29A63A23
+9662649680CD9009B1CF9D5A38322832AC98BCBA05C4351007CB2549B8008576
+4B496AC8487B43F3702D58834F0A0477340C9FAC8C4FF9D7D4C20CBCBFD915F5
+F55617D851317330636B302D38140E465F3782F45561C18875BCB2FDA48CA6EA
+71B88FA9A87918A343E1F2E0E759884C1DF5FF3E7A51069FC427D7DCB3CB162C
+2AE28D41F5CE96FCFA37A5E5750CB88FEE027F97E978EAB9326C64B87FF19626
+9EA9B6A7316CF6FAB3A49AEA2433FFBDC202F6564953AD3546101E295C2CBDFE
+A758DFD9912E8096C22C0308AD6705F7807F151628CA9D66FD36B48D49860F53
+064096525B0028D3D6279306872A42BCEE965FD73F9F41FAD18ACC569BA23F3A
+F72CCF9A09A69F49A1AD5EE5A8B62360E363E0B1113E008B16D94AAD5551DD1D
+E689CD903DB992FE50775033CC10A091FCEB9692D875F7DC7BD179BA5E8FC955
+ED7F6B3A08453B03F75D825C5815815915EA89276251D1D03787EE0ADD5B7144
+4076D29801085C7B128C5491C7A2DDEAC62B54330DEC660403FDB73A8B267094
+DA5BCC57E428FF59EA99900E59A4296C676CBCD11C3EDBCE68077224D7715999
+36F3D3FC2240BC2CB58A5EB06C5BA59EBF9823AF6FCDBDE93CE2E1A5A16B02D6
+F5ECB676FFE824061B02FBA31FE7FB7B9E9E065B9AC4CB23C96DD0764A6C568A
+D858FE44B23F04284F9009BB75751D98BFE5147A1F7184FF8D36AA1CA978D694
+F72DBA10074ED7A82B322387A91E1A4F0070B8426074A584ACC462D284860457
+C9BF4790C5FA7941183F4D9C6D0C7017F3C288A8E2DD5367499B1DA0D2A88925
+3F2A2E5AA0FF572681B1C92E2589DA97AA2FB527285ED3633C6F289C67B0390D
+50B884BD5759E7EA412F75592791848B2D9F3CD06497440B1093EC93095A7C86
+6AB1E8752CAD96C0076B0F9EB4CE2220B630EED701D1A3796A4BD3FF35293934
+A69CBB8A74CF22836CE5200DC14E5295D6DA56A3AA44A004357F575E5547ACED
+A1982AE3CE7EB7A59840DF825F970A11E563AAF3974F547F806AFDFC6F0F4BAD
+88F56A4F8510E0AE842B9BF551230FAE47803AC5A959DB6B62F291C6A040584E
+2C4A02D41EC7DDE254F21D6091D62D8598B6697744966BFF5E86CCE46D9AF24B
+6C9AA017F944D42AA02F6775CAC2671BF2D4EFAFD3E529EFE3A5595F01D66408
+9513C728725B3CF6211808898E4C28A3F643B6E537D883A738CFC13B97FB3D23
+9AAD448F38C6267D36C0FA594AB6FBB577ADFDA1722A9E0B598432C8B4E2AFF0
+38DEE9F21CB910657C1AD8BA2C821767C0158D7AE3DEEC883372DEAC9CE7A2DD
+C440B233FE7093E2B03E702F57A082F438EDACE37F29FE29849958C5079DEABD
+7954EEA31EC67B0CAF068FF58C731AE5A77607D6FE13472C5A70C111177C1E99
+2657B20BB0D01C7C638A1E588CFAE59CB3171B685522FCFBD4330C941079C9C3
+AB5D5FACCC98BF9691DA89AF9691D20154B1805AED841931700A3F7F25924981
+F6521B0C6E55C98AD91ADEB1174786A6412671C602DFBD482462AE2F1DFCFE28
+7AD206FD98F5238665DFA789A4EDCC298C64B4E72C0C1B457BD64B4479413356
+2DB85E29E862C2AD57F150E1CA943D85D71E82219E735C7D8EBACFEF4DA9C725
+EF436AEC25D36C9E9D32C67A062605E963BD036886CD9688F7EFE6434A29A2C7
+730F1C610F3DBD29A4A71EBC3D179E3BC1F48657E2DD6800E5B1EA7508A8D439
+11C3CB84980DCBFC33875E20784CA711B061AB5957CA59B43AE4E4A44B361349
+823D45AA26B51ADE783ABF1C32E49DACEC7DEDBDCF2648ACD5A0DF02BF7256F5
+FA2F054B79A548996442DF9205F4F3F2C27607D11B5EB4080B3FC1BBAAF8CFE7
+5FBB35B87B540546203FBD90341CF38AEC32B6BB46ABA368EA42C69BC9834A8D
+E915C163692174A5D51136308383FA693024DBE6552DC525BAD6CFBF9B61D2B3
+61FBB94AF1507EC144591C621B8DAD5452BD53B0BFEF03F6B9D53736FDA5689B
+A9FF78255396DF20AEE452D5D3D2978B2D681BC60506ED10145ABE6B719CA44B
+6535DF1E593498F8C6742B84BE204883ED8D8D624D52F0FDC9C8AFE1B7808519
+1E056CB591B6A2DFC4AA44604AFC512151FB0D3A3187FE57F409F04092035DC6
+1164C06205083E54B6036D9AAB673FEE23A3688591DA15FF698B25C5B8890540
+17869CDEC5D3B4F12E83F75C164F26FB41A0919A412A447E6DBED19843A0581D
+B73610113FD75D28EAA34F2A47D99C13EBCACF96DBDB867D83EEB53488E3478A
+63A2EC583536A3FB63CB406078595F220F5BF53956116F9FDB05A226FE01EE4D
+C28A48A250CED2AFE801BE10029013C9685D60F6F74628A5F5961E4708EBF3F7
+1EB5DF7837356E20C075DFBD15D9891A1A9934A585C0F881D104BA927A70B832
+5CD9EDC7E9CDADAC7BBC4DB1ABAF6547C3BC08C6AC73CA345AB18A9651151CF7
+4752C8E74157D3A3575D4D81FB937D0061192D1643741CEF3E218272FCDA17BA
+2B9FB73A7A008F91248F5C57C91266CFD1E7119ED0BBB80D009330DC501CD8FF
+423AC58BC8E1AD0813D11354BCE3DD1F511115C9F571E25A58E1A42D4B2F5C6B
+F39BBD15B1CCAB68D7C8E75634C69BAC05D3DA6A2D54976CC3BDC370F3274326
+98CB0EF0B999032718381A4BA16220F8088E87F3B0282C8011BF2A8BE5B0624F
+10C83F79C1623AB3D1D62F1A030DBDD3B400D64BD7D1EE88695B5EA257094B71
+38806AE74E3CBB7615710E2D75428930EAB82417B11008D3278C035152B527B4
+44DFDA85769635DB0650CFFFC6650ACF0E7873A53464C5BD41889A2A89F3ED47
+0C4DEB5AE511FE61870B9EAC40952E531FB6216E8D6CAC1A480774C0EDBDE9C0
+B7C880E28F9FC77F853183B4444EB15880E8EE0AA9BFC908CD9CAF6E16921BB5
+8675F3B3A4FCE2B60EA3A11CEAE4D0512F383998001BFDB48EEC41A6767B55B5
+2786A2D2A35A1CE437A29B023AE6301D85B5773A31348976AD970556AA208158
+970360327DB5F65E210A9D76525E44FE9051E71C0262B84F2C54E0EF4F280FA7
+69511C576842AFE25D4FDD651E286A94728CB56DE3C79FEB6B4727A11502F876
+FAABD8DDB97AC18F3F19B272C4541D1807DED62466389F92AFAFAB9FED162630
+6104796F4B2C9F26BF46F94100BF569BD3755C35CDC08A1C5F03A4324EBA28DA
+B2A41FB6562BBB85B6444B98C90DBAD78D79FF7293280894AD326FC95E28B435
+BB74C1B7DC963D201F2CC9B5C224023D77C0B2C69A497C5314DC418B6519E25A
+197D85EF1430FEB760478E29AF6D9530817F777384D3EA17FD4AC22AB1F81B5A
+19C853EDCDE39174062A4A6D0DD5A0206D6C577D148E103EB5BC30890110367D
+537186A9E8D70AFD70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueID 5000768 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
+6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
+DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
+12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
+46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
+F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
+B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
+C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
+94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759FD67200DFF251DB7C95C09E
+89EA1F66EADC3439C7234E50DEE5F62AD67768C3A5127E31DC8BEACE15EB5666
+437B94525E34FA2D35B51730CB8CC9D763F1A56F65B8FC21FEC40F4059C2EA3D
+EE94D79A8E322FA0DAEAE3B82721F771106F21B7497099A15DADD8CDAF70AB71
+7FC1A9CE6AA0E05ACF6E210DE1CA0418BA7012183FD6BEA93DD38776C68CEF54
+75145C4C0AAFD684964295D68EF8E7CE0AAF272EAB35BE26334C6A2F63D89425
+F6DC7F49F63A53152DA883E46105D8F21F7368F9CA04B7F4BFB67ED9FD13987E
+816BC3741FAE1D8630479927F6636F084ACE881372BF695E55747B9354674443
+AC79EF734025EB13E3336B807B6D75D86A801BCF860EF78BFE0C76227875AD31
+49638E7070152E16CFF32B2DE735F7BD089186F1FF68A2CC558B26C7D3416AD6
+0FD3E8929011C8635279CB1D64F3C8FECAF89DF0469DD890E8CD6EF325DCAE4E
+8804DAADC647BA4F6A96E27D5F1716A800104777374DFB8AFEFA19F230BE8C1E
+2B1DA5B9F504BED3487D1FC3E2A11BBD869AD3E2131253789C00651A03320D8C
+F3B2844347AC9860ABA40A83030FB4F567761548607BB01FBE2086AC1BEF4F61
+48AA7B421BFEFE6EBCBA9042FA4AD9530EE7A9A7E11D9BD9AE3FB217F2A9B5D5
+1FA941494B11A4CDE8973C1CED5062F6CB666FD32E4CEC15CA9DE1721D4E6E10
+D78756DFCACD3A41E50C6BAE9A9A5F044BA599F1EDFAE61CFB8B7B0DF5BCCE17
+4D88512A8506E97204457F2D12533BAE1B552F23340D4AD7AF3029FB6C6583B2
+67A9B299882EBEDE6696B97D7E89B0C397D61D4417079D426B29246910F4DE84
+7C5D48C72126F80CB5B135D6D2CC719968C1924EA4BD6E305B7FCB06520983CC
+6741DE803E5B6EB1E7F5517A8600491A4957645949701EBFEB42716542EABF2C
+16B955D4A1EB29BAD152EC888572C3D4E2F02309DC60E94272D2F2EBCFE32969
+5180EDCE322BDD38E3B34D24819E03ED61C913A9FAFE2DA1822A660C246B1132
+D2C18F76CC413D4AD1BB8F7A6719FDC7C7E54307495BC0E671CC6F4257C82574
+5FFC9C7EACE612207FC80AD04F0CE33A9308DD615A4307677F9ADF6B98D66A77
+2510BB8B5C985DA4658F7637BB4C7643AC9CC424E2571EE4CF5C15C7EDD306DA
+C41DED0B1339553A5F8265DBD9DA06374B37D77A9C9E4AEBCB4ACA8B909E9C48
+70C16A5A042CBC8825CF675BF574B16254541B69E203D5E3CE29C339C907D11B
+28F9AD8DF700C945FF11B0C99172FE6B25D131526C31E19D5637FF4249440651
+86C1D4C8A7B60CCA184FAA3E27F7244698A99CCF94E9135769C726307F940449
+48239486ED7BA4B8DCAF87EB1D2A8D1753E7EFA9468924DC0BEEA33484830DF0
+2CC726EB379B5668550B61B2D401C5D1012B16B9E2BF0A336073544F65124481
+F23611E8675B40FB28F393A1A8DFFDC13AD08A67AF396D454E3CCE141925D9A7
+9CCCA2D829E4DB2467F2F8CA1BE3FDC5E13120BFCDD7F0DDCA66E65FA69CC475
+866C8A62DBD00D09D867D0040BD804A1D7F17F3B8AAAB21FD48B11BD96C13774
+0BCB85CBA1E12A459B221ABEA106D74BC0EAED03ACBC0120CD47294D9D0F3B96
+CB570779E46519DA8854697AB48089B56025D3787243666855333F0AF2625DAC
+502DEDFD5529924E50B1740A93E8B58C54DE09BEDA69B4FDA8A37AA6E32F1ED9
+B323763F9DA9A59BD9F179A567BAD612B8634FB8463FFB073184294038307E22
+BD0D05B160331B848E7D7243DC7EFAF26F8E6518855F679372B94938E90E7D40
+9A45E12A3203ED0047D4E2CBAF8D5AF2191EAE42CCF2E2939022FAA57FA90CEE
+1FAE7BE6E23C4E32D372908E149B2096D480B82C143A26C604AF950FFACF596E
+3CBD6C5C86EDE699622F50FF70D278E11741D18CBC6EC804F7803FA00BB693CE
+2CBA9437C5041EE62CDDA5B5E4DA501C6841614AB271633E748AEEF52AB40E2E
+245080043BF749542EDA7FF6B74C41FA8B61640E4DBA1C44226785F2E3DDC7D3
+B6B33B44E511C0152B679FADE241F0857C3CFDA8FF5E0FA4A7BA26A1A428387E
+1CE83E956CD8AC28EE4F4A818B2F64C72FC65D4D5054781B6177E54C75AE1396
+505E5562B7F6CABC9515CAC5670A69AB00668ED859DFDB673378080BB5539A18
+8D347ED0D06DF019859CED07566B5B51376C5AF5876D3232DE8DADE7909B13CC
+8086DAA5B7AC78759D0998A0AC451CB7B9491A681A58D4FC3CD45555B20EB170
+31466D6B09ED870E735606D2E91201F85809A24027035B2BC5761B71FDF655B2
+63FA45D0633E9A8D6890B6C4CE4A5E237CB48B72A2A2BD8D2176408BD8F6B2E5
+A39668D92EF921178190DB989A5C6E3FE318A56D799CC42B6B58DCF3FE6E8ABC
+7662CAC717B368F886D44F0ACACCC4AB8E8C24D35869D9BAA91C64917796D2CF
+DEB05E44A43074F1A53ABDE558457687B2D9FFF1AD7A33E64625B35E994FC613
+5F66CE83ECFE45777AFDF7C9DE3284C06670B8BE2C7CA2DC73244378FA73CDFB
+02C7DA8AE1E57FD5FB6F41707D4D90C2A4E3D0E77D78867976FC53589FE4D0B7
+DD6AC71C010C15B3A8FEC1E5673EA53D928D9A90040FF6E3C30BABAC5CF8BBAC
+5BBF3814E9709FF2C8B59C7C732B0C7BA597E00E61232B4B433A74646203F260
+CF694D67E878159FB571D766C398AC5755082BBA1B2A5E71546FCC94999E4262
+F18BE1A41E919FA7A53013621A6399A39C74181FEE13D4003468C7A343BDD085
+FFCF2E1EFEC20119FD923E97CE26A66780BD8BF09D66DAD588ED91DC369B0863
+C22BB347374EF5FD616A70CA07C91E5F48849D09F4823C8A02A6D80E4DA5DCEB
+33D190D72702A78FBF7328A7D5ECC822D907B7908CA44BAB4A959F21ACD2A1C4
+6C6069DEE6B2F208628DF65FC40A05ECD8956505D43F883E7992A2B7621551FD
+34C580D14136445DB52C9843BBF00F92537A65704B0DD575B1BA7863F971F2EE
+479A9657AAE6627A321309A4A12DEAFA0C0B2EF5EE8C0F75ECACDD58E610938A
+5907433061E78FC48581B87AFDA9226ED79555ADF9F0443D60996A1084B0B4B4
+C9E01EC092279E300CED0D34EDFD946C5660ED85CC0512F8A8982A7DF771E24A
+D57B07A67D2745521178BE4C259EB3DEE7D6F820C40A2D939A4A484559207C1E
+0719083EACBA076020776AF7C45DA52CB7173B54237942CC063E5491B8527185
+15E7B30ECAAA49124B9915D9AFEDDB98513CC30EFC161C9D1F2371D8E0BAAAD7
+44AD4BA2CE425A0B8ADDE7A5056645F9FF0F305E43E8CCB0869E03F0F510FC75
+EDA9CA416F5E14E6FF577CEA44706C2BDBCE79E7C692DDB097BD6A852A33925C
+8A30E83FC93CA7FF3D60062F06DCBDC9AB390622768B7F2370D4FBCAD40CFC1F
+061899B30F760D58E9787EA232AF7305F2E178BB101FE1C172D5011378B93437
+D19B7F3505A8A758C9B0C2E395EB48F13A5DE5B81C085344E3E57EE6FDC6BF35
+6CE8B2B48A59AAA519D2014818724948FDE669EFA9DD4BFA76319E84B6928C00
+CCCF36793E1A533E3E9822684C4F0B1A60297EAF24D79FD1B728145C2F2EB2D7
+7F0CEA0F72B6ADE7E8AB02501EF56772DA610E1A6D855AE4BC828BFB3F36E5DF
+E1087B9732BADC3DCF7B72C1FA15A1517DE3DB6360630E55952A0DE142EC11C7
+0DA0B033C405457DE4F619647B623EDEDA588A29D9D457C835320A1FE2E879AA
+18E5125E95D48EA5E1886C7C8B353CC3B5C3C91333E48EE9E6866E23107C24D7
+738BA7F34A9B9AE25C3DF1DDB072AF68202EE17413929E4B39C0F165441BA9CE
+7587D7C6F181EDC1F55C51B7D8D04FFC47CB79038680FA609360A9BDD44F3787
+14CFBDB4F730BECB4876871DCF0811991151113C3C8F27BE0651F0B97FA21B6F
+CCD040F39A945AA4549C0327A380F6F2D498CD074168EE3180DC205D18EEA359
+C24E06EEAA49F08474F7E441F4A2C7B11C6BE15FF0777661064B66A33DD45EAC
+63B97B312E4B93C10F8E583D3827E6CB814EF8B73A6AABF11D638C707750A765
+92D5BF3C59B961569D9BC007DA19AC308EB09045F79D29BD970C4943E4ECBD7C
+0C9148378BFC202102B297A6511E956BDDAF5A64B84BCC16BB6C4C747BA8D422
+508DF34DBB3F36B9EC0188EBE1A1288C1E3AA548B0D799D73DBD6584FC4F795E
+1A4B0DE9D930B4ABFC9CB303CC0380C8664F21595EB9EA9983B21A4F3FB46D1B
+E5A16D5C58C12323CBE9CA9AB79DF7A2776E1993CF3AB4A6177BCCF147117DEA
+5304FEEC5903A4982A77793C4B360453F865540F5B0EADD4FDD40F85C72712C5
+07A6F447BE494A85494BA59B241540E84510B3BDF3B6927E69B006567C04BA6F
+AC056E315F53971769687A314C874D8E62A383394A8C1359C9254432CE771A3A
+61655E881B22D7FA0BCBE24C46EAC022992FD5904555D84612A168BDED0B365C
+EE54FD4CDB9DBD9AFBC3EB392400446D3A125D3C375EDAB7D551876345FF6343
+1D31E6A4E82AC340B16B1266D9E90418E8F3796F1A43DDB762F03F828981CA31
+2DFB4BE9ACCEB2FBAA4882520B01D36B1A7A98602E9D3951B23D3E5634EFB973
+485C863847E780463B29F61C4FAA11250331A5C0D4A2E03A1FDA25D8FB40E464
+5384691A0CF3B929561C6F3E225DFE52C651B541B719FD7D60F1D23C8405741A
+70FA5024A86039E1B2BC64DC37AD27464ADA20B980ADF292B0F53BC7E5E2F9D3
+C40C4D5FF6EB094A1CA0159EC547F0A19020E580A94A4833F4CA7B94190D5DB2
+20530215E33B34AC25C7BB38158C9369EA2EEA2EAB6A29499DEABDAFE5243255
+CDE450920F62BCD0C8B6455C3EF9BB44D987A2754B8D5253D1E02DBBF3A740D9
+A502CDADF38BDC4ED9CBF33E966CA6D81CD9DDE1DBA86A768EA720868AE9FEFA
+3586048721720633D9B73F16A5E0BA13644A44D64C8C7F2E7B22E488D77B9177
+F27E7A960A65DB9674C9471175F136E436E908D10DE577F8E318769DE0934EB5
+15C9AC907F2799A2123A745D3813FD5CFBC260A454797E8EDAABC2A727B23DE8
+96026CE2CD0FD891197D1751AD87F1DD61F2B5406B3390E67AA7A942FE0F746D
+0444E21D51A6A103FECFE2FD2863EB1BF9FB55BC75EDE6D3192FCEB8267C656D
+7186ADE66BA749E1AE37BCF784A1E467D0B83C73ABE2550510AA57007771DE91
+04485B4601D14ACBD97C4BE879FDDF748AF1429ACBF3D41FD918A4D238D26F95
+9F86669789C9D03A04FAB2308419482DAAA77C47EE164B276257F0114D370F41
+82D109A24A95107695F87C6459A7EA5A28A83CA6F45029E32DE497E76DA7F99B
+2A87C4936275DE2DFD7DA865B8FF52668493ACCBA80AD419443D1B2C0659EA69
+D16680F63A27DB05409EAA1E94613A6100E0CC78F8EA507144C9BB13E29CB482
+5A813BDA35C973616778E273A01943FD5FDDDF7489FA4D49C50396B07A06C86C
+F2CDA26CEDB033B50E06F817A4F0631E0659E49726DC4A88F6A4D3A355F9966F
+AAF445EA2B16C547B1EFF050879B3EABAF2B868613E9B47AF1AE7E90847123A9
+F4E09E7D25D6778A87011AF3E42B8F05AAA2989AE67FD8DB9A560D4C75E79196
+602996F939A0121A321DD323706068FE1CB46B0E95DC45845F14C06D9437EE31
+2BCE925B8742D0A1A226F225D7EC6A7A807DC1977C9195D91771BF8A5B2BE31A
+15D4D206107421213AD41CA456E3025F069432F21C4AB291D9A548C65A49EC2F
+7A1C5A640FF17D8BC4C04487D0CAD2E08DF0F0524B67CE49379A1E81DA971A8C
+CC237FBBA08A90BD4A882DA93F915C7F3248569BA03794B9C2F12D51691B4CFB
+CA5AA67E71599B33585E21593CA83ECB9CFDD5C547DD87694206B0AE32372B06
+8825223E060F1BECE3FCF5E76B5C0F963B7637EF59EB389F12B5B0CC5DD91286
+0673258290FDD422C4450B4A9329D0017FC2105E09DC969232489507B76CF9F7
+E18550397EAF067B3A9E0347970994A6507C177EDB973A69EF7C382A941E69DD
+BFDB14F5B3299BDFAE7CCC331CFB83FCCEEA55026AAF4757121A2F577F2EF618
+ED54EF62FADDB76D4FBCE11FBDDB7F4FD6B919E046B5A0346A0539C598CD9A22
+BD414EA34E25FAB77D3769E05EEB5A0FD51EA9C7A2433DB5AE9955127C403910
+2B6A66262BC8B0657A3973F1482138AF77E9F8774C2658F15645660C90973B23
+9C30EA7DA830BA0C55671AEDFAF0FD96AD60098E768EAD067F0A63E06B0CEA3B
+B7E6B4F2D00F575DB0A6B078962B4CB9709A343EA520E57E826C9E89375D7F4C
+1231463A236751F69E097A994E4043DBA8692D7E9B16E214575D0F2978518E66
+397FCA66BEFE1F4A7A1B7CB123DD85A90E1A0E88185EED105D7995D0EBB936A5
+76CDD7B4791AE48A7368912404F3A34A2AD049E694CE9B3F3C648143C7C2D6C6
+E78B173E08B7129A1C443B6D4A307341184919EC3FACAA11B3DE39B10E855749
+99FF4ABB58030091CE8F975FF327D2A824B95437D993702700EDD7850A7A01EE
+3DDC985BE66619EEADDCD13B328CA490DE02087FDC35C1290C2F5D58E1ECE85D
+2BF79955108608606229028ADDC9EB448CCC54D7381C7EA8F9590E1BE3551FD8
+8D8BEF116597CD277E1A6DA692F84C83513E4E671D6F48EE46A78B7BD2056948
+CFA4DD257747BFD38E6813A3D83FAF54FE128ADCCAE38D74CD0486ACFA15A6B0
+1D8469984101347A4F34DE18417F089C197DAE1E9E3CD5D8D8FF7A09DB77BD00
+986359424222FFA593449F7CE00221DAD4731B341B11066FD3DB5138D163EC82
+9D89F5CEA8EBD5B9BC2FF6A7577E696A3787B6A07A8562648EBF9C1435B0272D
+995814A9B100631205ED935D0A50866E74A8E332E31654A57C031541B0DA849D
+9B8221773B03527FC9B32F327842CC6285BDC49350501D8F7B728CCA5AE742CF
+010F8A859E411DEA98F1ACEEB0F27890157F804AC9CD2B3DF5BBD1EA4C72BB26
+0133A4E0B21D07277D7792E076D7F11EBE47E673972DF8A2AB1DC562B0CBD324
+712A40198D448E0E5AC50F6AF123DDA23DF6AD4587030AE9AB358A64E3D175F7
+D278603073AA2DCB65626788B2919F675A5D41432DB8DC56B946D2EAD7D29B7F
+A564E0CA7E8D37EE506C87D574B56E32503734D1A8B90BB97E47CB057FE58799
+603EC3F828B7A5AC3863CC169C0D8B40C204716528F4FF3BB206DA9CF7A0C325
+176939038B142297A349CB7BFD48022CD351FB7C99D2827A5F51F4772C437B6D
+8BC7DFFF5A46DCAC13BBF46CF14A5D8F1E9CE23FF35614F408BFC9DE7F36EE5F
+4947F4F664D5CF47E53377A4F9179C83D62EB8BD87F133BF2E4DA3E4443D8BE1
+2F206585D371003CEFC9BADC4547C28D21773D2853459EA4E7790743E1D0A144
+56C80938A89879D0724B79C8F883896099B9399BA2D7696225332A1EAF8C1365
+D582481D1F93A28459D60DA6220F602CF121CE16F62C22B4F98F379CA401ABB6
+1843F2A4E7096D3982CCB6DB6DDB9ABE784EE9B2762D3A8E5768558755C63698
+7F02DECF75D2FCC99CD93494E8C5021D3B48F10E153020A5E1EB547311E3265F
+109263954E7DB3409462351B6311ACF63053ED32904B98701A6B99F59915E9B6
+2AD813EDA9523A4BF3E430D8793D10E830E6E620892CCBA72BF9D437EBBDAC7B
+B237AC58DDF7A684F5A338713C78396FFD6B92816647444BE9BCDD8CA0BB2E56
+4531639B3D74D2C2B369A79AE166109F5FE26A55AC2E4F7FB25A0D4FABD0FE99
+621A447278BE95EE1D72D60B5B5572CD302B01989DBA8056CF701E4C59FAE8A8
+D8853CD5E21952882001BC6CEDD8E195DE5EFEAD54C7CD2B4D1E0AE4893BFED3
+6F5A4E156D3B4415EB827F7515405C825CA42C75B9E9761FD797078A81997863
+99D1A40F45A65BEADEFF5B1818C8DF726B7129E984C33516CE9DC16547C158CD
+9DBDA49082C9693C10A08C3B623ED921EA5F4BF064CA812607AD44B779C9ADBF
+5C7EA8BD6F0DBA23B2F8505EE65D2DC384ACFF2D1ACEA8E6C6B6F18149D48D19
+96B365FA505B474B7C9292701736A0D48EDFA11152F622178EB33156291EB6B9
+BA958F5ECB78F96BCEA8D7DAC90803001513FF64E4251C48FA3F4AECB8CECA8F
+A3247EE067044CF459EE80D7DAD8F02BD6608C27A6FD5BB9880514A7B1FDB33A
+9AB70A3700CC5DE44973D1103EAAC669DE3B41E53F9D6F40F65580FC1365E0A9
+6303A8545B34A00A20AFC15851942FE866CC3F1FCEBB71C9673B5B5A086108A8
+FFE0B0B51DB22813E11BBBC2EA53383DCF2D7B719680795E05541B026B41B6C9
+CDE5B88522A362C908D0E65A1FE1073068507C63AB8FF157832AEE7228BDCF26
+7207EFB3A82CED3A2411064B24C50A24579A2A66A6FC70B7AE48E544B790D375
+7317DA0432E4893F70087D68F8B382FAF770C3B0AE74119A7474265BD6356FEF
+CF9AB053E9F2F53E49E800969C7D6F128C69DBFABE01D464494CA06C24E0DDD6
+93FC8E0C026D68DFD3FF29A6F6D5D40928E1DE1351D457A6750F1A75DDBB0B13
+343B3EA6791AC35A8D72E685073B01C0DDBCA8E07D8ED48EBA8E6EA2CB380118
+6D65D5C3D1C081058FC9CC54E9F49EA02A8FAB4CC126CF85E51960C402CD7A55
+E8FFE2F22EDB8D6458F97E48A901CDB89BBCA78AC0DC93C1AF4D4A91D730FDA0
+577B7F5E5540528E36DC29A5EA4E99C3D8A3D95B2E9926CFE3B29FEF6D55333E
+B87C4B28FFA9A582203ACC9528DACF226E78041B2E675AFCB823ED7B01619F5C
+7E5EE4F4B800040F96F2693CB79F41A375D8C502E1253D74210ACC226BDE60CA
+F7431720D00720D3C900098D13D9775A4E94A91801C5D460DFF396319F49AC57
+D9318CD4DA5B30FE4A2AF67CFC34961EEA35B985D02F41B4AF51679CF1131327
+78C0A045D5D259494F86B486767B0835259C9976314CDB29F0E70DA314611903
+BB43B448C7E0FDDCE42BD623D2919B0EB1B0D5C92C0C6D44FF220B12612A6E9D
+087D4EC32DC0164C3C1EEBB4D42C24403DDFA87BD9397B34F4129BBC1F5DCED2
+EC698ABBBCD76137BA92DC8FF989299B5AE9B0C9FE7A7C4C6AB9A98BB4D9F86B
+EBB1A5ECCBA6633459814589DB7BEE88CEC1C1C4BE0792027C736C74AE0ABBA9
+B7AB5AD51FAEADA4A53684D2BC12E6F60C3C19899D6DA7A0691CAE19306FEE5E
+C3E3AF07D6D6D1921DC57C02DF25F3CEFFC56AA2A284FA26C99C467A603F410C
+38642DDBDA66623FD2FCF0A3BF49252E1F3B1EDCA0C39D6466998A06ED2D59D6
+33984620E4C5190365AC6A15852E9F114B7C6BE44631184E620CFC547B061DC1
+B0F28EA6198560D45E951FE8CC2F375B3F29954C14E7DC2F1804218C28AFF3A8
+B01643302DA4D47DD87E5C54BC270A012E3109526E5E78406DAEF9D91F410B7B
+06400A2A08E2096A391AA15D3863A7D276AC17FD6936833A707395DADB969E29
+ADD9E78E54BDD88E66292953ED2783010B32CCF920349E866428533680CCE907
+F6F0E92F2747FB8A090F33B2ABE187D25DFE64B65B333CC84D730A58DD47BD30
+D55755AF60625D867503C5E5E5AE2B2526E7CFC602754DD6AC4CB2BA2B81F160
+10147BE356D1F8DCAF71FBBCE217456605FC236B8CD696B617E4091889DD5481
+FD861F9571C92DF7B4BDBA694A36B23FECCBBB8D44E51FBF37ACED02CA5C9409
+2E8ED9A632E1DC490D7166A23F71572EE8670C8A718DFC74ACA4A28409EE1A67
+FE3CEFA903307D670CE1C938D2958E26ED0497F4BFBA845EF1EC62A3C97AFAC9
+D37A9785B4F9C6CA19BD85D5166C4035FB1806A7480451D6AEAFA0D64803792C
+E0B184FAC3BF110C337218585C4EA31D4E76E292328A93194BA54AE22515FCF4
+EFCCD3A6BB35164AE4DAFFF7CCC786D9E90BFA2478566F41A5ECCD277DA32B7A
+10ED094F6E7F054393986B8B7E1A08179F6FA3935BEA925CC8C7EB0661105B64
+07F9A35DD203B9D5688A1DBE7E4F52A57F439EB54401D191F0AF6F9B73E45FC7
+0409361F3A7608C499DE7BDDDF831D4FC1C7442E1E713AB71A4D38210B3612B6
+15F9AB3921999286C3CE9271F36D738EF691E06468B06E3FFD19CA3181CF5693
+A0E7C2CCE9B01724AB154D6510343784B3EF0DA3316E65CB37EEE337BA295447
+7ADFA6BE5D314DB0F596999279BD833E280FF84A94EFA52030033023A42F932E
+CA1F9A2177C83A6E9F7ED2FB89D4AAE5BE8F2C4175FFA039B8DD7FD9604DA38F
+8F1A2D98B7143D09A27CB1AE73E58DC9FF4CE1971E6ACB3FE713D3DFA13E7C53
+B2454417A5DAFDAFB094C0811D9A12AD6B212A4FA2DE5A09E4FEC5D99BEC5222
+F8BE9EB2B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueID 5000791 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
+48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
+9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
+0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
+8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
+EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
+FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
+9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
+D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
+9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
+ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
+10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
+83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
+2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
+044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
+A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
+23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
+19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
+1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
+8BF32D2E5635B6583D04BC0AA187D10FE773067ACF3B528CD412ED96902B0056
+567103E3FD911A099ADDB9EAEB3C08F1B36A918FE865B7DAE1C49F21650E65F0
+C6845C15740631BCB7618A3266D83E54976BCDC707883E531F3F833AD0DE88A0
+CDB84D8384602B992263C3C223D1B5393DC98C75EFF9AD8D98A764228C70A303
+28D87B1A5510A579D01088C26D9667DB86F72FA302A3A8EEF7E05DD1835E72C0
+66A0728CB0DD8C34BA1D772886333BC78C79374026347FAC9CED39B7FBA84DEC
+E70EABA29B80B4E813C0E6D5ECA5E9ECDF0413AF7556EA458C3C3B49A4B14A05
+3034C04E1F8665532D053F810683C957050FCF44C5D4040CF09893DBF641D68C
+0969D67BEBBA6DA451D446DCF87B8243365E7158D89332FB33CA28F0A83A7A63
+D22A0948A46F0AB9B2CDECECDA40FA75B046CED41C017FF79FBD7380CF33D726
+B03304BF8EE1EE450C065BC8B83643AA74F8D45924181D1D0C52CE78C36DFE66
+99CFBD08406AB9FDCC61242472612AF009F8625C966AC9A7228B85912CA77A9C
+832F9D14190A1DC798D4E99B5D067A020FAD7E13E2E5A155A94E46853CB93619
+39183DAAB590F1BE12C3C4B0209A93CB015E58EEA72C0F71E68EDF1CAD4CA776
+9320076D70BD2874A166F2CF735BD5154F9FBB219C868A568A7C176060F78092
+1E3661E66B7E0A8DCF294E09D487AD7F7D1ABEF83E7E0E5BDC60D672A4D8F5A2
+4C33479DB4FB7105158E19C62FB0E1B9749E6A9D4BFDF7884B1922C4C48265FB
+7851C1116696C02337B64F1A0445396102B541EE1CA10D8311F79CC58F2106D0
+12FF6B1D274B810AF318BEF04467B5066889896BBF019F63DD5DAC53EDB1CD7F
+AD10D90B2D3CE615546860B11AFD0D6B705DAC7545579DDD3ED867F31615CF4E
+F3E4BBD8527C9C3CB4DEBE71F1AC965A69A1C6E244BD5A49FC81135A587EA904
+A863FF7D421C407EDE08825D78924635E6968CAC4399D231C785C9048FD8C916
+0B2676DB4D91487B862B25F68DBBD03B604BD875420565855CCBEF9AF0793964
+4FD45E490EFE697A470FA3C60192E660C45083E27B9E569DD1DBE07706975B9C
+9AF2851279A7630999C92E9867F55D56CBBA0CA13A0F041CD0F3ADB318A0D298
+ED48F8288691BB2CE08B6A73E9FA89DAF661F201947BD64C1EB769EA3A0C6FC0
+3DC343AEF2379881E46627AD2F653B4C6BC37E8D8452C3A7E399C0B6B3D93671
+F51A92EEA7712A872D0BEBEBB071C83D9254A24C8799CCB5D2FF4DB31075483F
+3743AE4BD1CEECE6B9432BB89399FE62B87DAB3B19FA924FCC1F6C3DCA1B0049
+51024011B8670DCE537387069A8732AC4ADDD77B2A0D5D97105810854595C4E8
+0663FD917B5B587B8ADA22351D79F5E5AD494FADE90336AFC27FF9FE8BC770D6
+0A8D6FBE6E45B3D4DB20E91A53D84C8B100813CEB9A81B03E142748475EEE77A
+892B3458A3AAD744A20ACD28C7AA6C5A996C9A9900F2D6B3C1169DF3BF2B1A9A
+56EF83195431EE89A89CCA5A0EB6A59D7D89179B6C127BA0981FE0122E4184A8
+FA9094D9C3D54BB7CBA31FD03C7048A09AE67C956A5363F5D51ABB19CA264D9D
+5D515F61DBD9C35D259950530A95350A313CFA8CF06413ABEF844771BF99590E
+F9A2F28975AFD00D700E83A59A3F0B7238CC74A8C1C9DB059C84DD91F1E07580
+C4C1311FF1C4AF2AFAA07CDCE72B0928663109CB31DE1548C72EA321F0EAFE9A
+ACE0E0BBD840254E30D9A46162DACC79A07F21BA056BD90AD312A2D728CB94F5
+FDD65516843523741D2430C5338FDB4274162B8C0409ABF94581C1A3D8636BCB
+78A98069466C0C869BA08047E9C154DC6FF00A1DDCC2C4AF4D5DA5437BD02616
+C0139731CAA7817984BE614D6D41E9C21AEA1CBC9E56C783F68364023CB95387
+C71A72D9DCD59222964D04650181988D140295091175DD985F5B53B070D20B89
+5E4B621C848C9370E0687B45EB1070A688A94BE949D242AA6266ED2D64C2518C
+4A5E75442F030E137D2E3BD654C4E4EDAFF7B46EEDCC9090D537B6CE01DD6D0F
+1872A47A04ECDED2421B511118B0628148D2289B74B79B3A68CA7A2547D644B5
+2ABB83CBBFFE319957FD2189E272DA2C2E35DACA8EE229F37EB4C94C920A65C7
+165A2ACFF7B92CE4338F3030E157CC75281E1F33AF00386FBE6003C4C8CDB57C
+4EA70A31E2CD15FE6732F98BE47354C2F92AF632B5BA1C7ACCA3633ED13919BA
+106E6ABCBDC11006BA4560AFB17C7091BC1A632E7870B65717656A89EE550576
+B5D3BD5DD829886BA59D186770871C3D293EBED70D66EE3AEA926F2AE6AC6CEE
+30CE46B99DCEA2D15384C53D08C6F1A083A24C025D92832E16E816B893B3F2F6
+68BDF430788D1167B14633E0AD0FD74951C5826BE0F4B8CDD23CFAA88907C43D
+1678FB2C4053E0E2056BC4B33F36A896D1BC212B0262B6CB59AB3A5ADCC027C9
+EA6A2C0F1EA2DC6B88517BF08AF54C9B1A4A7B0A4BB9A66ABECB539BB6BA1F9F
+313F2A5619949D0FEF977DFB87ABB8B8DD420F3097B2B8BEC00EA5A3E8C207CF
+508C7CA5133CA63B98A14E11FB57BB7C461D7C8C767DB10E68BCEA1D5A4B7F29
+7AE639BFD660B1CFC78DEF00CD1278833E48A65BE281C9438976BBB475AC6818
+C533FB4D2F4D3727B68F533D03554393D66FEFDAD1A3BE79FCEF05B98A5D9EF3
+71F4D16E531408B2D866286CB89B50DAAE9978B96C8BEA869F9E90B780F0C98C
+1618C4F6FDDA21820BBA795B0AF3D00F96635FC5062544317A62A37060F965CF
+3BF8A9C7B5C3D74914E0AF04AFFDA0FB1D1E644E2FB8125E94C480B4ED41FF6B
+DE326A771B82A9C44B4DAA194D3C2A8855CA293787D7D5F466A2587860B64408
+6F14F78C085F63E6B63AC41FE7574E5E22C723202B7D42A1BE0D14A299231F75
+66FB900C2A030D0E09EF5107F9905A5C66E6A5648FBA2B8E80217160EB797496
+FE3D4904C8E3B6FDE528D1B931C369AE5115114B3701CD40B57457341D735576
+ABE1907500771C3EC5F562B63DCA85FAF5769ABF0F8F74A678E508A59802F1E1
+B11545E6C8697D1A7FBD4ED7A5DE57778DF66E04AD354E5A45E199615C6CBFC7
+7F6C232D710E8CD5F9953DDFE922B2CF50F02F65A96E1BEF0C1FE6B5C52415B9
+052B9C062B532A6B83260D13AB6D3B2A48D780E03B4519F4A2152B82D1A90359
+7CC62EBC5F26608232CDB89D2CD44F0E889AF80B1A9F8C0B9DE0EED9787D70AA
+AFE3DEF464503D9E56674C9BCD0BC65876F2F455C83412E8FCAC08ADE7F8E2AE
+CDA7A57425C7ACEF0D58CC85F71D8512B32D9C06AC001382A4095FEA02E2BF2B
+A7EB6C298B10CD398780A7120CE9A31DE391C349AA273C890F620172CC434C23
+33265359372A5451C4DACF0C859BA6D37AAAADD08D2F85DCDA2399D894840D7D
+AD9870DD307B9D602661D7ACA2F84FAFDFFABF5A89AFA9973161DC1CF3A3943D
+CB84A9C241C8B6D6CBAFD2DDC75166C3C2D5994DF4D2C60739F34E7805582A15
+76191F4150309E55FA04EF8A59C4DF8EF1C95E57F0C255B63C82A7775D4CF3BD
+A3C56600BB869D411A5ABE7EC6C67437B328DFF2F2BD6267A43D69B6788802B9
+249DAE42336C2A3DE75816951644C742C36C51F120943DE8B75052EE4405A346
+E157546DCB7D845D81AEB84E70B857B9152C3FA6D5F3BAEC8611C14F67B54DAC
+F58BBDBAD4C473C0DA872330902A46610865EB0EF8F97078841AF74758F0E6E6
+3DBA2B1659FB937AADD1C8A612C61F0C1A9636F0624E64D6D92966D892F44F09
+48A4BDFC9A83C267ACEF143585C51ED45F59126AF7EBCEC2B9584B0FC6C1E670
+FC382E476B6C33071A9FD3FC2D0F943DBE055BAEDAD6702DC0F474F9B2DAFFFB
+C0AF48B326EC447E31210586B7DCD517FB61F4D4870A5E467492F40CCEAA4F2D
+B06BF4FD8B31D9650D032A0A28E1D413162C649352784A0414C474A82DC471FF
+1FFBDAE7795DDB8BF3DF22C393E939F5634C540DFE2590D71BC1444BBD79A9D9
+7261CAC5207814AAA58D8B135A52A3D3174110FAE364257A6F79AB3B73B52A0A
+EF08DC05593BD0327BEA4697339E45996E5D6812D166165790D8E4543C130DC5
+34725E44BB037555803390CAF9F94FD6BC08AFC3ACE747B9728D8CF0128D5B4E
+1275C4BD7E50AB5F980DB3C3281E3FC4A500FC6DD0038D35F4F5589679647238
+FD7EE68BFA9AE20EB140B7277073E6F26C7EF556FD311D510C92E89B70762F42
+410ED318AFD46F66F605E98D1EF12F00727B3B3F21F695241B4B5863FB1C27E9
+6BBD4365B9AEEFE8A18AFE350731AAA0ED817498539433027D50C8D38284E888
+1E6A1E6CD54F851B264E2FC4597A6A4FE03C7CFFF7D1F75CEF43E97B22096A1B
+D8BE2DC4A899E64492359B346D9C0051361B6AE9DF079BDF21FBD274597B3C02
+4D0FB1C66B8AE0AAFCE0C1CAC54BEFE069C0BE9505EB0B1AE60869B63C396698
+EF594E1C8E5995AD22DAD027BDBA4BF2FA9B570E8F0FA3CAEECEF6DB8C4819E4
+AEBD7165A655F1B7828527DCA9D01324FBFEEDD6797C8E3E9E17B760C70D7AF8
+8EC0AEBBB2C448DFDA6B6B4BEB43291772174F1C369DBD1C4183C8E00A4DB46F
+208C324163E0BDE572A84B85393892545249DB26457AF5FB311CD5EAA11D7F9C
+3E491B0D49C77898AD873381077DF84EF4498C012D7752B22F0660810B6EC0F8
+B66D447775AD659C51D3893CD2B4509E8B9D1413A99527F720571784E7B9302B
+92175F1FCA726E8AD6D82B9B7E853FFA5739D0DE0A02BB115DABF83B1E4DE706
+C23532EE82BD57109F9A7A4E6A87DB4FF5C698B04003312F1BA23AEEE22162EF
+F22F7D338554AB08625B26D74F7D23772532A371AEDA9CC2962B0B665393FF04
+0B032502628AC491E593D0D450757AB016B2C74C6AD44594E0FEC2F880B578CB
+5C4D6A409FD6B64B9F1BD7CD8B69676814D169609D2ADB2F1E98F6C8F1A16D90
+63FEB3C8FC663DE0CCA1C5CFF03828FD1DF28678492DA710EA61B9096A173CA5
+FA8A85DCE00EA42ACCA03EF856F3F17FA32A69DF9F73C46944705C5DC20A7535
+34CCC3878E878A0BAC55B7D56CE2C43C102D0AB841BD4A3C5EA0379D321413C8
+6C2DF639D4EEA521E0A1C68D8B60319EB999707001795562E8AED4ABFAA486FD
+C11D4F12ED45A04DC72264A882C97510C91F2DD77E3D5685DB2CE52C4746F613
+AD98EF16AA9773CB00735151B7D4B9315441BC3B8BDDA5ACF619F49B6052AFAB
+0F19D9ACFC8D6E0CA79A25A8360F9749EF39FB60404E318BB1A98EEAD98FA0E8
+40DFD76BC3A84404F7D3904BFB2EE3597D8364EA556E4F7D18F32F1D86D10287
+8AE46984461ED91AE22B6EFE0CE5511921B539122DA3EB48707B8ABFCCF2E6F3
+9408D626EBD0C2A1A87827ABAAF02873B675AB54BC6CB5B40E697471320BB686
+9D845AD686DCA663AB31B4C2A1915C55A814FBA82E77736F7F258C1AE7B42449
+FD341CE08D65E648A3FB4DE280353F79FD70578A0C38C963461BE98100EE4084
+CC1DEF4E35B10BB81C632FF1AB4511B80C881A729EAB34C9E9D217E3A57EFC52
+6B73AAB4911830A00BA599013AD3BB83BD3DBC7445C316172B3B8A22B8148ADC
+FF33379CBA195094D2C2CCAE0E260D8DFEC35153BB3533BE014F456A108C9D62
+5C21C1BCD3CB9D7AA0DB74AE571A88AF6BEDDB6DE3DAF92AE60187819E8EB8A6
+7CC1CCBB5F23E63A107EC8143F0F69B62CFC95605231FE605A989407218AE464
+C2B566EB86E1075B0D8FF788B726FDA5F5F2D8743C39224C2231A46426F3B6AC
+747E69C46AC322733DC052641526E775F10924F0AF404C37BD47369986746AEE
+ECC7CAAC1B2CF6E5D86A46F4F6AAA2BB7707BA4D89F1B46DA3024A84228E1A5C
+BA5EDB68205AE6971A255381FC06BC03644D67B082FD503F502B28141D437C84
+E809F5C78BA5FBD5B8D51C012C3EFCA915505897C8099F0938EC15464FF4EAAD
+2012A1239E0251BB126F4E400C170BD1C47656CC010235236733633CE22A43D6
+3E043B687B32BAC9EDB90DEA0D0B0015E8C1DE4EE0B0E0C10F2F50F4E35B31BC
+915A1D984614AC0B10AF2FF1B28FC135D07072C0530C50FB6ABEBC1592CAB0C7
+2FF36245ECB609DD787852E5509AA57B3EC5F6186B16A4EF52ADF58D7ECD1D34
+B2BDC2BA556F7915F5293A8CB3F44E707A57F6CDBD91E90F9146874311F25B80
+A7348FA90D09459843F842FCCECFE4025D12B2BF2B61CA32E6F72B8618390560
+0157F80C82BC6A54B9F0289215D94C662CCFA55EFD0650B0ED761D98C65BD47C
+F7CD595FEF1C7DA57F3B79FD55ABBCE8D30B1D0DE32994D52F8885A87F0C109B
+D90052BCEF87DE36DB4A852E910C792C094D0D0228C53D20ADA83280C79E9100
+8AF8888CAB9835D6CE65D7FE36B18F365C4F6324DD5670157B37AF55B205F460
+D10A0D16CDCDA78539CF166ACECEF425A1740B7C8F02D13F2A86070416AD9AF7
+BD30314C6DC920E3CB78117564ABB1195397CD66FC92F54B5F1535C15E02F763
+C92A2F3F4CD1FEAD965306DF3614D0362B0191492905777B75D8D1C6F5064A1F
+111B7EFE43756B4F0996030C00503EFC5351D388C150BEC0FDA5AB0E218423E5
+78F87F1B7684AFA6DC450EF115ACF8AC2C8DFF33AD39FEA1008A46EA9D6BABBF
+B5F220B209770EF010154C87A4BC067315192ACEECE255BC6A5896C2F4963170
+576E250C3F8520E1E413A30A1C17F50F6E8D2DD87EC02320176F355709D75320
+D1747ABB9EA215793CAF3BDAC8F5C0812A630FE85D7FFC3AD199E5D83B068C44
+B757C8A127C3993C01E25FD94725415298FCFA762ED456DD7DBEDDA2F7AB71E6
+A289E0F59FAF62E3A2CB6A0995CC06838C8F9A6E19226B0E0953E2BA3764BBDC
+257212FA3143D2B67D308AD49A0B245F0A97B09919C307B326D575F1F865ADBC
+E292206795305174C193A4CABB0044936E51BF95D0B13E81F2C64248F1D9749E
+CEC22448489B2AC1D766933B570E3471B4917ECB1D66E0A4779B084B1D22074D
+108867FEC1329F5B30FA344C19FABB7C09A50F49A5B0A1C42413B3ED9FC39B36
+500AD32B07AEE4A5C0DFE29DAC2C6FEC431842A473EB710293F23774FB448E51
+3EB6B4A27D98078B2A4DF3A5F0F41308374765C86C0A879641FAD025EB77D7BC
+9328E717E2EE4AEF31A3FD23573DDB8E81F20F6499FC2BB4C94D3F1054785E0E
+6F3B8D6176EDA6E386FCBB034F6E82F6FE43CB83AA1147B05D51BBB03C477F54
+38FC98086DE0E04722C5F0CBF9270E0DFB928EC7387710118513A3C97C0D6A9C
+D67BBC5AA5DA3A33BB0F534096582355E0B3BFF7E6536FBF496FE4E05F006F88
+C7C28672CC58838790821AA48534FCFB8DFD4EBA9C94E4F50E0B9E046651F779
+E11B8915503682E7FDD90F05DFFCC5A009CE64FBBD223E2634DC95803805F4D1
+C27B4D543FA3EF2B222DAAACF40C526B2A1563C0968E7F2FB22489810A530519
+100FB442B5F972F960FF6BD86A19A1F297F93DDFF83CE2347EA3F861596B961D
+4FEDC423B8262ED0F0352DA19F07ED09117CA72EFF0CA7B666EA45493D1E1317
+559D4B5D278F107042D276C9AFA6A093ED696867BC1041E5F25B11C1687C8C1A
+72DB2FCD4B632FC212D774785F2D3579BC0DBDDBC8CCFBCF7B686ED3BD92D4F5
+378CDE86406399B059198B66E88BB9EF7E572C6460C36B0F2FA3E19AC56F93EE
+60F1F7BCE76F0AF284C3F41C8BB69F7D34B4644AECA4E9324CE2EE4E4044F4EE
+7B9C28E8B454D894445AB47B05F7B4B94529808A007A5E3A7D323F661F9D9C0B
+B5BF1C24FAE9D951AF26493C3C9302C4C040A33E94E6596246511185628C7A02
+15D33184493337E2543B1D82FD5ABF4F47E894E809C51DE0ABE163D378910FF1
+717FA82AD420E076611F5559AA027F1F82433B4B103CC1541D342330D9BE4592
+9B9112E1FAACB0FFD59326ABB3A352C54D097E0B79A91A0CB39B77AABC40D191
+C895ECDE7E9439DD2098E2D81E56F13F178CB8DFDCA5759C4580BF1DCF7AA3AE
+83F2D998FF3B9789DDD4B2A3E1F5CEEEAB48CB410F5C07DD3FBB4C362BE0D32B
+5BEA9A428692EC6585A20F11A5C73FA22D023131B1B416AC0B2F4A4C801863BB
+D43B180F82391830064FBCC5A233E3ABC5B30C1FF8155C61E589604EC6C16E48
+F3C676C95C57B8E9D4305C1B1C7ECD75B3A5C7F8B8849AA1B46FDDD928D92B21
+D0B6FFBAD0B71D101EC153669E32324C497CD26093D0D2E4AA197F9D5E459C50
+709C64D20552A3B9DA9475D3658C302B5E7EAE0DAD3F9270A327A6644AF5C3FB
+8338C062F33478E38E82C09510F27C2FD1FB2D304355F28B35C9EDFA0AAED925
+F2D1493BECA291483EB47FF0442C3692D29D10FA92ADF3C9AD85D5AC09D35949
+166DBEBAF7D425DBDF179F8BCF21912C5A2123E869DE9A9CEB4803F2C04414BE
+45DF573DB40F5B9E42406F49862C7B23826CCCB05E76BA23BAA5A17CDA93D4EB
+59569951158FC068E32ABDD8930D6C4C58A7DE1D39030E3B818E3382938F466E
+47E8189A6B902AEE4798286CF0C032E0F2AD018380C904C2F4EC61ED98CCDF25
+9E2C691BE9812FD5E0CE01F2C94134C9F0C05F4B7F1260DEC20B9907E1B5D372
+8677FB4F0485ED87A3F6EA1A647072D635F7E2838649CFE37A4FF8182882BF7E
+9474583F4E9D3548795E0A63D4859BD27B662D156DD893B3799371DB1BC75A38
+0F454EBF825D683CF2CBC8B308AEE9D8FF8EBB8A7DEA067AEFE8CC77331156CB
+20210ADE2B5DD0A9F77BB6E98F3630800BF33915E73E515B34E58516D1AD87B5
+00A8969EE2595D2365AD69FA4F67CCAA7D243B8D03FB39CA136DC1E5FD434750
+8A329F7D11DC4D33F6A0BEC9A23E5EE1A18FD5C3640E3F30FC2D8CCE5630E618
+A273CACED00DA6F094148C5D6751DD983A2823418223E715DBE8ED167B2D1999
+650D0FD8685884BCF1D6147C162BDBBB6597DCEAED3B5CAA75F301D46F2F770A
+CA1C8997E99D16CC0A58572FE1D68383D87335A38AF8C27556FF19CC421B8BE1
+8AF89CDBB98273BF4E43025A710B4ACB5D7F2C77249CF1756282B74CE43F037B
+F62DEC52EA41330A2783B5E64F72392EE25FCE9A7E872F4A9AA7BB41E5368888
+6DC531A2E602696EDA1CD3DCF808F62176E9198AAE9CA8925038D41E17570FD2
+E976F627F7213AC8EE1B2BC240871B7CC1C61B81BAA031B8396536AA62A67DE7
+63FBDFCFD363DB5CE786230B302B786A859C48BBA8CC27EADB1FBC84F1059FA1
+3A02148B4CEF5DA6D90664E72DC6F3EA267E4102102F18D79FFBE4E2A642E94E
+F3D9376838236476B1030A0C47D28F4E7EF6358D213AC0A95391659FE736010D
+355826A83F7FBEDF3164FF177C16C41789E84F375C6FEFEA767DF654B0533E98
+A1430FEE50F41D39D41DC2ED6EA7EE1FCAB31FCE526D5556E89D36F3B402C5E1
+C0CCEAFA157772B77556AAC8F874A019EAE0A797BCF85655A7834D4DC32D388F
+F3E48C0F7B338BBA1C9E949C5C0BC1A727A77FEBE57E1421FF81FE4AA81869FE
+86EF313CAD75613726AB3F7508BC904A7E55F092A16D605802D36509525EE2E0
+18B8CE25A0BEC74D167F9E766E30C4EB0D7914F4DA044FD895F3A9C196E23256
+9033CF1E352E82193458B6CFD32238CC93CCBB0E05E8E6AED8CB27157BB148C5
+C644977C16D7F4FC50DA22A28CF8F945B5E0209C8D715E8E7D9D80F32FEACD13
+E6928F4BB60E9684C0F865C9D0C2EEA5EDB0A355FB16426A2405D124F3A01977
+1DE108F66E30EE01ECAA74FE0DEC9A6D485B084FA8A38EC3A59B23FD35B72F87
+ABC6B7D73EDA44DEAC4AA7285D15339EAC0B54B52FEC5B7EA723622704A3DE1C
+AAD548509991E18B3AD4CAC7FCBA320ED3989A185CAFA4E22A42E1B5C209F774
+F5FDE4CF0FD23978F3C37BC3EB97A0AA9B9CBC66538FF705F8F7E2C3CD58A359
+40958DC811EBBD7F16902417BC1C97C3D409E4039E0569C6826D22923806BBCA
+E601CFEB9B249597BF69BB74FA9607EA9CAC2DE0C8B958574B715D64D5E2AE19
+DF262825913DE26CB598B36E6F8168F7641A58018B9ADBF73237113B9FBB958F
+1A3CF592672A51EE2463CD7F22F058597DB9C7316CCD49EFAEFB6A20646E0DDF
+794C0A9DFB62A42FC95483D7F578BA3163317AEB14561F49F6E2A909B7C92370
+2592FF0614A1AAB9AC39E93A2DE2D38330AA56BD51D1FD225D0DDA8E91B94267
+127CADEC25E9769512EE28557E051F516329445C31D75E19711CEFDF77224F25
+8B590ABB3BCACF4C3620142B0401F7218BA00C67A748A2DA5F784EF53521F536
+7110D64B659B7BCD26E03F6D35A6EA3452A8F33B4A4E580AEDBC83E7D882BF65
+AACBDB77189BD88AD8A0CAB62EA74CD673A9B37AD1C40065C309BB399045594D
+7BCACB882630E12489BD5E049F217C8498287D768B4D0BF904BF0BE1C6340D18
+C14229DE0AC87C1FB28EAF752A2C88FB5B80A4EA1066F11DD918A2FB2E18DBD8
+384E38D2B645EB843A019723C71FEA7C4D02621308D92FD72A10522EFB409D8B
+9A5E51F4AA9D768ED428750A6F34FBFEF6FDBF163B13F6FF96450BC2DE22D65D
+F7F0F5223CFD29524C61D0070228ED1113C58F48FA3154E53E67567B46F7040F
+B03DAD476D4B4A2705ED9521BD22F48AE00AD101CD53BD79B7172ADBB6D4C4CD
+951D9CB787F957A1177A7F967A3B867D48A74A0EFF9ACB491BAAB6C997896895
+2F3A1DCFFDC2D71659F916C1630ECE089BF7318201DAEE72972A8AFD0C69D5BE
+B5DBBF85ACF39AEEEB8CD634A58D4AD84A49E75E39A5799D53DDAACB7CC08310
+23D44AEEC34D256B1C6C208CF20E986B5F52A866FBE4221FF02A77459AA91933
+4DDA62FD7070BBA306D113FFE2F96090AD748C09470FEB4FFD0CF8C72EA68FB9
+3F00F3F93A56DE5659A40ECAFEDF5E3CF327CBF8DAC7DF31F0F02EC416863D12
+2787C56399B9BE4AB5DEF7D7E185FF02521844F75C48D1ADEA4C0D8436B3A780
+8A55EB846C5CFFFC5D207B0F269DB3DAA7E06FFFAD34ED5A49BFFE73CAA09B6D
+AF0C693F71CE69B77FC1378A3C4790CBE8B5546FFF134AE8CB103DD6376EF16E
+03501532E3F725E58F36089E3718C635EF95FE9921EEDB08F0CFAEDDFBFB3336
+517AE8ECA540F6918563EAB9D1B5E5BFFAAADC83D0867125E2050A05EF871ED8
+CD0AAACE7D95D37065EA0C92E46115A732F468AA43FF12337839C206157A96BF
+A8DFD01BFDF8E2D76E4D46C5B9AEF23193156FE4B535C6155F79149384737DB6
+BAFDB4DC69A64056EEE87A1186B137B6D9D394EB8811AADAE996D67EC403083A
+86771A4CDF9AC65678A65DCF46CD1EA9CBE4C1D839CD7F166BA2CA8521F698FD
+4CDEF798D360867ADC4C8FD100DC3AB3B62C5BF2527A688D3DB498AB5F407879
+970F2EF1EEBDBC4521CFCBC3E621F992F3EAD3E9737976CDB56596E661129545
+2EBE036A72F668E809D454DACA709F2C0531CCB26910652CCBF94EFC3A4B3852
+B144EB820877E7A55B33B3E9B2B1786729B0643517AD956A7A4779334D0A342A
+3DD38F70100854C0B3032397BCDA640CD12C985BB2B5835AA83D442166613350
+BACB4CA9F706141A9E9EB3DFF314B1A82113CA28B74B6603D67AA2D15A36972B
+1D8B0057D3D8EB92A1809023EB95762577BD753193DCAF7021366943AFF53A8B
+A9ECCB74BF27EE70B1D0B73078CA5CB5AACC1BEE0A61A75981F8A0A3253035FA
+1D5D6A1D47DF111693DD9A1D35D9B865C06BD05A688B0D9BC285C0EBB1DF7B2F
+2CEA26CFF7583EFED470D4BF02CAE6E4CCFE5347F61F669BF8E82ECD2112E672
+86D10C529DDB600B5237C11BEE28BC3120A0E212E2ED4F52BDF6980675D7DE7C
+89FBE11E19865B1C163EE5F4D410F95A434056202DB1BDD10B3A75FA3C091D5B
+E3E2F888A6509E1755BFB39F9EE35AEACEDE970EAF42BBFB0D441BED621A8E20
+F504AAB0F511661754B03BFBDEE9E5D704B1FFC70E429E97B8C5651C90044269
+58BB39683838446D49507DCB70AB0DEDEFB73F05E621BC7371D21465AC659AA8
+90786F8CF2A0B0ECA4B40774D7143F92F2B0A95417C475DA5308B5BDCEC67A74
+A425CD76801FF2E115FA3A95818D088392C84FCBC00D3B3C7D683253414D4C5D
+74446BBFD130AC89A0C9B68BB1CD772A1BFE8776D0772ED8C00C13C8D0412D7B
+526A73A0E38885B79551DAC3E1060537C0EE8FFE574C4B9E8155E2CD83FD85BE
+191BDD6ACAEE898A02717A9725196FA59E41FB45D2733CE77289FD178AF07D7A
+FEF8D6BABC7DA5425A45AB8EF3C2E369432252E497B172A6FFD4D3DD957C0E26
+0D3D402EAD21FB3E404DB8082DF2ED2C300A0AEC0DA12B7FB571F415017D44E2
+57509A41CFC2284455635F50F06937D23699B43084728FCA9DD25A7264B9D1F4
+2E086976B56237887470653AC62DE323911A64507B40DBF281BB060AE635F37D
+BB4F9EF7456EF62EAACAB52F0606DFA777D2965BF03D7CDA312AE654EBFA92C7
+580B7C2A2E604389152704BDF3008ED2F58200D825D0F60C7BF39AF14816B2DA
+5738DE7338132B7E7E92424B7FDFB15D8E1EC176CBB7E15F3FA064CF04E357DC
+72FDD1E8AF8079B1134EAE3E5CB6A7262994C71714691E8BD7CFF2676EA4D0C2
+A5FCD6C622B3B34469E3B2FCD810AE0252B2814EB02C544B0458CF12DAACAC5F
+4A2E078844AC2AC74543F4763CDC6FC081073CD60E276AA6E7F1D948EFA02C23
+2FC1567CD952C837AA1ABD3E3077F5AA7F9986F01B0A9EE91C0EEA3895260CB6
+3B4EA5F58F8C8C23D42C81764E72399D2EDF40C8F18EFAF113AD16E753263943
+55EEC4F01AA885DCBCDB7C9E251210AB2B9382EE45050CC1184F592BBD65D6FD
+44D9EA6BC7583CA725A1DCD28EA77A085B0A47CFCF5A847C5D29C4F64F2A17DB
+BEAD7B3BA43BAF8548B65DFB4814135A2A789E7E76C978DEAE0138AF8A0AE4BD
+B4D22A02C169BB0DA5215B2B91A10ED3A2A9797E5C5FBD11BB295B02C7498B13
+6D90D8CD79D4606007D408E8D336D75D42519BACFB7164C2797F0E9FCD98F178
+D82372F263BAF8B2D1F185E549BA63428E2B8DBCCDD243AD605DD10666F367C2
+3EB98C9157E068FCAB8D91AF9683EEE87A1158A562C911574136CFC172D50C4F
+70BC388C728E821395579A081CC946F528CE6F3471B7615F67623F9138DF8FD0
+CAADC4E42AEBF892B36AC169C716DDA724300E9378B809DC6739929C3108A812
+F9C116118E9AE1B066E1928A4A442CE02B2D3BFE18D406AAAC1603E754224AEE
+1B802E92CCDCDEF94BAA8955F389B7565AB67D73CED601FA7BFF438717EAD65B
+449941F0C87F048B9186C9C78A3D43A3D4C372B5F8DA74DAE6DD2A2816E44303
+790F04C13F08E0815B43FCD837A67BF4A2A86FECB6ED6FFA56018961A0C528FB
+472971A8E4C47C974DE12133616F3CBBFA20CE57B572F751649D9AE64A61F271
+0DDE783CF2509DFC2ED2CE7467574AAF79101D56D3D2664DDA30FC7DD5B5C6B7
+0BD084CA516A72E6D3F8B7FEDF0F11EF9CA594C2318EEA3CC266A2F4C2F2AC2C
+AB1ABDC5F7419F46308865F1FA63CF2AF4AEBB8319372B3305AA052477ACD838
+7A35218A6CD4A7C0ADE0C3F8B005D6E30C8A208A3518C1134DC34D0E64F804A4
+258A995097F17642E97FE9CC38A34C250B8828B4FBA1840EECBD06D427FE7E10
+4EFAFEBBC934AA295E12F25D6FA3D277C7C88DA60D818A8A303364BD6B2C0288
+6E94BD8E474F28BFB951BE4ABC493AB0EA6EFF110193105DF8E9CEAE1CE549D0
+A907F7A7CF1AD20E121FA6547F93CC10D7957B36ACAF213EE436C92A00AB1A24
+540E535440938E748DAA6401133235D1CC74EC8FF80F9E297FB6C56C12B4E0A4
+D53AB28F11618F2C793F6EACB593E56B8370ED5CFF467B5FFF04AD11BC5A3AF0
+A6EF110B540CD2C87070FFCA3AA0776FF070C384BCDACB0FBD4921C06E24C8F0
+CE590D788FB8C1BCF9E083B4778818F92269C274B0CC6565E2D70FFFA2480381
+040C5CA012341D51427A59C3FC9B5121956B4323872E67BA499876052131B266
+C21F0B8B37902C7C3156FAEB668AE6A7851BC7AA62FE60D792B35B6A38183B23
+E5FB11DBBAF1E60B0D9DF0E84B9EA6F1EA6C37B84736FE657F4A29E92F7DD89D
+3473C81FD7F595770BA69C91DAA3154425278D323C3E50A14FF72A02BF3820D6
+6621B91A96A1D2F76710143D41C8305E02810780D868D822DC6056DFA4690F24
+90BE5BB4F14902B97F5FB4CF31A6C8B346A76B95D82EEF610AAFF9F6B88E782C
+F0E46DD18BD1CD53C92075AFEA0C1F0870DA52455847B22A638DABEA04C90ACF
+0D89E8345F118E5E26A3934AC0C0C9F1269946E17F1AF5759123CE2359B60ED6
+3FB22A23380A34DF818CDA8570B36B92C4634A80AA4ABEFFFE36865AFB384DA8
+70E5CB4829052F8BEB962841C2030BBBF874EDEFE149EB8A38DE0ED59903FCBC
+25788EFBB825265AFD7FF2F8D5F9A947EA94A368C52986E8640A6D6A11B14DFD
+CF435B2F1F7C168D1E9C7B84B2C2D9E235DC59799B99971FE9E6D9780EAC653C
+981FBDF083B949310FF20F7B383BD10737136E88B9D294677C7C63CC50A41AC1
+B4649631134034DB9FF76E0B19799396A232809A5BE397B63B528A0E860D38AD
+A90BF0D4246F012E19CEABC74F21E2BD46FACF96D5F033B6023A98DA51653D59
+C306875AA02EDC3DB78060D72B0A00596BE36367A1681ECFEEFA447DB8DE6879
+18962C974B55038A8F67AA553ECD27C6C72D46CEADA75D68D7DACB40B063F9F7
+464401B0AE4CC61A1F55A7E40FBD0FEB890DD2FE36D9641E40BD2F6D20C54353
+C3B282E7F46D61EF3A41F8BCB31FA38EE2B99B671841DA2FAD644C11AE20B6F8
+C7D5D99806643412273F874273FBD04C65F048D76086EA1156F07A47CA0FE349
+391E906747C833320E84E18781C61DEA8FACB8D9DDF08D29E5983F2E1FDC8C72
+C200B63415529A45978010EA5C150BA9D70CF4F5799DA551A1CF7041A17DD5F4
+153A868BD4B81A25551784E2A6EE42996F4D6CFAED97725C940C0FE9FFE0AA31
+FB2A32941E6C555FCF33B4B8E802C40B423599C8E88C6DF1AEEC28938FCF3BAB
+B6846C20D7EC7278A909073BD15BA75F470F82237BBFF6E7287A3771378A944C
+8CA6215F95437DCC9EA67F7A8721FA63614CA7BC5054EF5E5716FD4B7DEFDE48
+FA8D2AF9F0B3BD92BF5F48A0DCC8406B0A940FBB5D35B56A49B7D4605A00F82D
+495AEBF2B413F19FE37AECED8060D5C32E9FE0EE9C0FB14045AE87D04B92A734
+0A35DBFFE12CB1ED64C924E4ADEE0AD635BFC70CCEC92FB07B1DE13E3D14B09C
+94590CE5F2F4B7D0C697F6F30E217ED09B35917714712B1182D687302770C205
+C3D17944AC1CC6AE2A023707E13DC1299256DB1211650F76A969D74F940CA580
+6B499C40B76BA77D12688A8CF75E90A19AA3E368D6C99FCF8163450CAD6EA028
+84D4E9A5279013354D9C8D7FB8BCF3FD31433C822F0A412A3115B0E5E71079F6
+60C6BBE10380872D5D75F1BE9BB6DE755103E4B376458B97E0B50BF8932940AE
+F95D4002737966FF15A0B67C5B717AFF0E95B9F8F3498D7CCB538FF133A977EF
+3471FCE3B83D5395F282D1982B2A6CDBD1C0DE44B3CA286E7E3F3E82B3561635
+6E462A4ABFAE8DE9331FEABA97AE7E7C93F0A30F4E3FDF4DFD66E5CBE234ADD8
+0AEFB354B80ADBDC128EAE328AF10FFDEF587B462A88F62F463D640C4F8898D4
+1AAECA8EAE36639F6CC17B68BC1F1202F462BF7CB20CBD42FF2DEC420B4A7001
+90A1F1499D49731DBC0C5DD4AADC4C32A7349219F25150117D733A0D51A7E51D
+88712AF2AC91D73A906CCFFAEA98C68DB967D96DA69E38A0406F2DD149B3E771
+68D65EF65F99A4AD33BB5B15672E57433BC84C9023BA77997E82473C557D18A9
+60F7064934EDDA12E614186A092930690D2DF97E1955FA75CA3CA077EC39A561
+27FC8DCBF13DC183774AF61C2B1B65E5E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 55380996 39158280 1000 600 600 (org-ref.dvi)
+@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
+49.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
+30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
+1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30
+30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
+49.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
+2[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
+66.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
+41 45 68 23 43 1[23 45 41 25 37 45 36 45 40 10[61 1[57
+45 61 61 55 61 63 77 49 2[30 63 2[53 1[59 8[23 12[27
+32[45 47 11[{ TeXf7b6d320Encoding ReEncodeFont }41 66.4176
+/CMBX8 rf /Fe 219[71 2[71 32[55{ TeXbbad153fEncoding ReEncodeFont }3
+66.4176 /CMSY8 rf /Ff 203[33 33 33 33 49[{
+ TeXf7b6d320Encoding ReEncodeFont }4 58.1154 /CMR7 rf
+/Fg 129[35 1[35 1[35 35 35 35 35 35 35 35 35 35 35 35
+35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35 35
+35 35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+3[35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+35 35 34[{ TeX09fbbfacEncoding ReEncodeFont }85 66.4176
+/CMTT8 rf /Fh 134[60 60 2[64 45 45 47 1[64 57 64 95 32
+60 1[32 1[57 1[53 64 51 64 56 10[87 88 80 64 86 2[86
+90 109 69 2[43 1[90 72 75 88 83 1[87 19[38 45[{
+ TeXf7b6d320Encoding ReEncodeFont }36 99.6264 /CMBX10
+rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
+20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72
+53 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54
+51 50 53 6[20 6[35 35 35 1[35 20 24 20 55 35 27 27 20
+2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }70
+66.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
+1[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
+53 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
+/CMBX10 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+ @landscape end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
+b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
+(3.13\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
+Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
+102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
+(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
+(diary)f(entries"\))-150 338 y(\(autoload)i('org-agenda)g("org")f
+("Agenda)g(from)g(Org)f(files")h(t\))-150 408 y(\(autoload)h
+('org-store-link)h("org")e("Store)g(org)f(link")h(t\))-150
+478 y(\(autoload)h('orgtbl-mode)h("org")d("Orgtbl)i(minor)e(mode")h
+(t\))-150 547 y(\(autoload)h('turn-on-orgtbl)h("org")e("Orgtbl)g(minor)
+g(mode"\))-150 617 y(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")
+e(.)e(org-mode\)\))-150 699 y(\(define-key)i(global-map)h("\\C-cl")e
+('org-store-link\))1504 676 y Ff(2)-150 782 y Fg(\(define-key)h
+(global-map)h("\\C-ca")e('org-agenda\))1364 758 y Ff(2)-150
+879 y Fi(F)-6 b(or)23 b(the)i(man)n(y)f(customization)h(options)g(try)
+68 b Fg(M-x)36 b(org-customize)-150 948 y Fi(T)-6 b(o)24
+b(read)g(the)g(on-line)g(do)r(cumen)n(tation)i(try)111
+b Fg(M-x)36 b(org-info)-150 1147 y Fh(Visibilit)m(y)h(Cycling)-150
+1297 y Fi(rotate)25 b(curren)n(t)f(subtree)g(b)r(et)n(w)n(een)i(states)
+291 b Fg(TAB)-150 1367 y Fi(rotate)25 b(en)n(tire)f(bu\013er)g(b)r(et)n
+(w)n(een)h(states)384 b Fg(S-TAB)-150 1436 y Fi(sho)n(w)24
+b(the)g(whole)g(\014le)854 b Fg(C-c)36 b(C-a)-150 1614
+y Fh(Motion)-150 1764 y Fi(next)25 b(heading)1043 b Fg(C-c)36
+b(C-n)-150 1834 y Fi(previous)24 b(heading)921 b Fg(C-c)36
+b(C-p)-150 1904 y Fi(next)25 b(heading,)f(same)g(lev)n(el)685
+b Fg(C-c)36 b(C-f)-150 1973 y Fi(previous)24 b(heading,)g(same)g(lev)n
+(el)563 b Fg(C-c)36 b(C-b)-150 2043 y Fi(bac)n(kw)n(ard)25
+b(to)f(higher)g(lev)n(el)f(heading)424 b Fg(C-c)36 b(C-u)-150
+2113 y Fi(jump)23 b(to)i(another)f(place)h(in)e(do)r(cumen)n(t)350
+b Fg(C-c)36 b(C-j)-150 2311 y Fh(Structure)g(Editing)-150
+2462 y Fi(insert)23 b(new)i(heading)f(at)g(same)g(lev)n(el)g(as)g
+(curren)n(t)104 b Fg(M-RET)-150 2531 y Fi(insert)23 b(new)i(TODO)e(en)n
+(try)700 b Fg(M-S-RET)-150 2628 y Fi(promote)24 b(curren)n(t)h(heading)
+f(up)g(one)h(lev)n(el)285 b Fg(M-LEFT)-150 2698 y Fi(demote)25
+b(curren)n(t)f(heading)h(do)n(wn)f(one)g(lev)n(el)233
+b Fg(M-RIGHT)-150 2768 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g
+(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2838 y Fi(demote)25
+b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248
+b Fg(M-S-RIGHT)-150 2935 y Fi(mo)n(v)n(e)24 b(subtree)h(up)932
+b Fg(M-S-UP)-150 3004 y Fi(mo)n(v)n(e)24 b(subtree)h(do)n(wn)848
+b Fg(M-S-DOWN)-150 3074 y Fi(kill)23 b(subtree)1097 b
+Fg(C-c)36 b(C-h)g(C-w)-150 3144 y Fi(cop)n(y)25 b(subtree)1052
+b Fg(C-c)36 b(C-h)g(M-w)-150 3213 y Fi(y)n(ank)25 b(subtree)1046
+b Fg(C-c)36 b(C-h)g(C-y)-150 3310 y Fi(arc)n(hiv)n(e)24
+b(subtree)976 b Fg(C-c)36 b($)-150 3380 y Fi(T)-6 b(o)24
+b(set)g(arc)n(hiv)n(e)g(lo)r(cation)h(for)e(curren)n(t)h(\014le,)f(add)
+h(a)g(line)f(lik)n(e)1495 3357 y Ff(3)1533 3380 y Fi(:)-150
+3454 y Fg(#+ARCHIVE:)38 b(archfile::*)h(Archived)e(Tasks)-150
+3631 y Fh(Filtering)g(and)g(Sparse)g(T)-10 b(rees)-150
+3781 y Fi(sho)n(w)24 b(sparse)f(tree)i(for)d(all)h(matc)n(hes)i(of)f(a)
+g(regexp)92 b Fg(C-c)36 b(/)-150 3851 y Fi(view)24 b(TODO's)e(in)i
+(sparse)f(tree)580 b Fg(C-c)36 b(C-v)-150 3921 y Fi(create)25
+b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b
+Fg(C-c)36 b(C-w)-150 3991 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n
+(t)h(org)g(\014le)367 b Fg(C-c)36 b(C-r)-150 4060 y Fi(agenda)25
+b(for)e(the)i(w)n(eek)823 b Fg(C-c)36 b(a)p Fi(1)-150
+4130 y(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
+b(C-o)2046 -364 y Fh(TODO)i(Items)2046 -216 y Fi(rotate)25
+b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354 b Fg(C-c)36
+b(C-t)2046 -147 y Fi(view)24 b(TODO)f(items)g(in)h(a)g(sparse)f(tree)
+380 b Fg(C-c)36 b(C-v)2046 -50 y Fi(set)24 b(the)h(priorit)n(y)e(of)g
+(the)i(curren)n(t)f(item)369 b Fg(C-c)36 b(,)g([ABC])2046
+19 y Fi(remo)n(v)n(e)24 b(priorit)n(y)f(co)r(okie)i(from)d(curren)n(t)j
+(item)179 b Fg(C-c)36 b(,)g(SPC)2046 100 y Fi(raise)23
+b(priorit)n(y)g(of)g(curren)n(t)i(item)557 b Fg(S-UP)3626
+76 y Ff(4)2046 180 y Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)
+g(item)538 b Fg(S-DOWN)3696 157 y Ff(4)2046 311 y Fi(p)r(er-\014le)23
+b(TODO)g(w)n(ork\015o)n(w)h(states:)33 b(add)24 b(line\(s\))g(lik)n(e)
+3505 288 y Ff(3)3542 311 y Fi(:)2046 384 y Fg(#+SEQ_TODO:)38
+b(TODO)f(PROCRASTINATE)i(BLUFF)e(DONE)2046 464 y Fi(p)r(er-\014le)23
+b(TODO)g(k)n(eyw)n(ords:)32 b(add)24 b(line\(s\))g(lik)n(e)3314
+440 y Ff(3)3351 464 y Fi(:)2046 536 y Fg(#+TYP_TODO:)38
+b(Phil)f(home)f(work)h(DONE)2046 723 y Fh(Timestamps)2046
+871 y Fi(prompt)24 b(for)f(date)i(and)f(insert)f(timestamp)266
+b Fg(C-c)36 b(.)2046 940 y Fi(lik)n(e)23 b Fg(C-c)i Fi(.)31
+b(but)24 b(insert)g(date)g(and)h(time)e(format)144 b
+Fg(C-u)36 b(C-c)g(.)2046 1010 y Fi(insert)23 b(DEADLINE)h(timestamp)516
+b Fg(C-c)36 b(C-d)2046 1080 y Fi(insert)23 b(SCHEDULED)h(timestamp)451
+b Fg(C-c)36 b(C-s)2046 1150 y Fi(create)25 b(sparse)e(tree)i(with)e
+(all)g(deadlines)i(due)204 b Fg(C-c)36 b(C-w)2046 1219
+y Fi(the)25 b(time)e(b)r(et)n(w)n(een)j(2)e(dates)g(in)g(a)f(time)h
+(range)172 b Fg(C-c)36 b(C-y)2046 1328 y Fi(c)n(hange)25
+b(timestamp)g(at)f(cursor)f(b)n(y)h Fe(\000)p Fi(1)g(da)n(y)238
+b Fg(S-LEFT)3696 1305 y Ff(4)2046 1409 y Fi(c)n(hange)25
+b(timestamp)g(at)f(cursor)f(b)n(y)h(+1)g(da)n(y)238 b
+Fg(S-RIGHT)3731 1385 y Ff(4)2046 1489 y Fi(c)n(hange)25
+b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h Fe(\000)p
+Fi(1)189 b Fg(S-DOWN)3696 1466 y Ff(4)2046 1573 y Fi(c)n(hange)25
+b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h(+1)189
+b Fg(S-UP)3626 1550 y Ff(4)2046 1670 y Fi(access)25 b(the)f(calendar)g
+(for)f(the)i(curren)n(t)f(date)221 b Fg(C-c)36 b(>)2046
+1739 y Fi(insert)23 b(timestamp)i(matc)n(hing)g(date)f(in)g(calendar)89
+b Fg(C-c)36 b(<)2046 1809 y Fi(access)25 b(agenda)g(for)e(curren)n(t)h
+(date)507 b Fg(C-c)36 b(C-o)2046 1905 y Fi(While)24 b(prompted)g(for)f
+(a)h(date:)2046 1975 y(...)30 b(select)25 b(date)f(in)g(calendar)660
+b Fg(mouse-1/RET)2046 2045 y Fi(...)30 b(scroll)23 b(calendar)h(bac)n
+(k/forw)n(ard)h(one)f(mon)n(th)121 b Fg(<)36 b(/)f(>)2046
+2115 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(da)n(y)525
+b Fg(S-LEFT/RIGHT)2046 2184 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24
+b(one)h(w)n(eek)486 b Fg(S-UP/DOWN)2046 2254 y Fi(...)30
+b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(mon)n(th)437 b
+Fg(M-S-LEFT/RIGT)2046 2451 y Fh(Links)2046 2599 y Fi(globally)24
+b(store)g(link)f(to)h(the)h(curren)n(t)f(lo)r(cation)166
+b Fg(C-c)36 b(l)3662 2575 y Ff(2)2046 2668 y Fi(insert)23
+b(a)h(link)f(\(T)-6 b(AB)24 b(completes)h(stored)f(links\))138
+b Fg(C-c)36 b(C-l)2046 2738 y Fi(insert)23 b(\014le)h(link)f(with)h
+(\014le)g(name)g(completion)192 b Fg(C-u)36 b(C-c)g(C-l)2046
+2834 y Fi(op)r(en)25 b(link)e(at)h(p)r(oin)n(t)884 b
+Fg(C-c)36 b(C-o)2046 2904 y Fi(op)r(en)25 b(\014le)e(links)g(in)h
+(emacs)722 b Fg(C-u)36 b(C-c)g(C-o)2046 2974 y Fi(op)r(en)25
+b(link)e(at)h(p)r(oin)n(t)884 b Fg(mouse-2)2046 3044
+y Fi(op)r(en)25 b(\014le)e(links)g(in)h(emacs)722 b Fg(mouse-3)2046
+3140 y Fd(Link)27 b(t)n(yp)r(es)2046 3236 y Fg(<http://www.astro.uva.n)
+q(l/~d)q(omi)q(nik>)247 b Fi(on)24 b(the)h(w)n(eb)2046
+3306 y Fg(<mailto:adent@galaxy.ne)q(t>)564 b Fi(EMail)23
+b(address)2046 3376 y Fg(<news:comp.emacs>)845 b Fi(Usenet)25
+b(group)2046 3446 y Fg(<file:/home/dominik/img)q(/mar)q(s.j)q(pg>)282
+b Fi(\014le,)23 b(absolute)2046 3515 y Fg(<file:papers/last.pdf>)670
+b Fi(\014le,)23 b(relativ)n(e)2046 3585 y Fg(<file:~/code/main.c:255)q
+(>)599 b Fi(\014le)19 b(with)g(line)g(nr.)2046 3655 y
+Fg(<bbdb:Richard)39 b(Stallman>)631 b Fi(BBDB)23 b(p)r(erson)2046
+3725 y Fg(<shell:ls)38 b(*.org>)877 b Fi(shell)23 b(command)2046
+3794 y Fg(<gnus:group>)1020 b Fi(GNUS)24 b(group)2046
+3864 y Fg(<gnus:group#id>)915 b Fi(GNUS)24 b(message)2046
+3934 y Fg(<vm:folder>)1055 b Fi(VM)23 b(folder)2046 4004
+y Fg(<vm:folder#id>)950 b Fi(VM)23 b(message)2046 4073
+y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105
+b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b
+Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242
+-364 y Fh(T)-10 b(ables)4242 -255 y Fd(Creating)25 b(a)i(table)4242
+-168 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330
+b Fg(M-x)36 b(org-table-create)4242 -98 y Fi(...)30 b(or)23
+b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39
+b(RET)d(|-)g(TAB)4242 -28 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
+741 b Fg(C-c)36 b(C-c)4242 41 y Fi(...)30 b(separator)24
+b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242
+128 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242
+215 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
+(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 285
+y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
+(e)h(other)g(functionalit)n(y)-6 b(.)4242 371 y Fd(Re-aligning)25
+b(and)i(\014eld)h(motion)4242 458 y Fi(re-align)22 b(the)i(table)g
+(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242
+528 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
+311 b Fg(TAB)4242 598 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
+b Fg(S-TAB)4242 667 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
+(next)h(ro)n(w)328 b Fg(RET)4242 754 y Fd(Ro)n(w)26 b(and)h(column)g
+(editing)4242 841 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
+544 b Fg(M-LEFT)4242 911 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
+(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 980 y Fi(kill)23
+b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1050
+y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
+104 b Fg(M-S-RIGHT)4242 1137 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
+(ro)n(w)f(up)678 b Fg(M-UP)4242 1207 y Fi(mo)n(v)n(e)24
+b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242
+1276 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
+(line)291 b Fg(M-S-UP)4242 1346 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
+n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242
+1433 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h
+(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1503 y
+Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n
+(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1589 y Fd(Regions)4242
+1676 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36
+b(C-h)g(C-w)4242 1746 y Fi(cop)n(y)25 b(rectangular)f(region)715
+b Fg(C-c)36 b(C-h)g(M-w)4242 1816 y Fi(paste)25 b(rectangular)f(region)
+695 b Fg(C-c)36 b(C-h)g(C-y)4242 1885 y Fi(\014ll)23
+b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36
+b(C-q)4242 1972 y Fd(Calculations)4242 2059 y Fi(Except)31
+b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242
+2129 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2215
+y(replace)e(curren)n(t)g(\014eld)g(with)g(result)f(of)h(form)n(ula)129
+b Fg(C-c)36 b(=)4242 2285 y Fi(...)30 b(same)24 b(calculation)h(for)e
+(rest)g(of)h(column)267 b Fg(C-u)36 b(C-c)g(=)4242 2355
+y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96
+b Fg(C-c)36 b(*)4242 2425 y Fi(re-apply)23 b(all)g(stored)i(equations)g
+(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242
+2511 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28
+b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242
+2581 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242
+2668 y(rotate)23 b(recalculation)f(mark)g(through)g(#)g(*)g(!)30
+b(^)p 5533 2668 22 4 v 47 w($)71 b Fg(C-#)4242 2755 y
+Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)354
+b Fg(C-c)36 b(?)4242 2824 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren)
+n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242 2908
+y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b
+Fg(S-RET)5857 2885 y Ff(4)4242 2995 y Fi(A)27 b(form)n(ula)g(can)h
+(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)g(in)n(to)f(a)h
+(\014eld.)42 b(It)28 b(will)4242 3065 y(b)r(e)c(executed)i(b)n(y)e
+Fg(TAB)p Fi(,)g Fg(RET)h Fi(and)f Fg(C-c)36 b(C-c)p Fi(:)4242
+3152 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522 b
+Fg(=$1+$2)4242 3221 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r
+(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3291 y Fi(...)30
+b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352
+b Fg(=$1/$c/$cm)4242 3361 y Fi(Apply)24 b(curren)n(t)g(\(for)f(this)h
+(column\))g(form)n(ula)200 b Fg(=)4242 3431 y Fi(Sum)24
+b(all)f(n)n(um)n(b)r(ers)g(ab)r(o)n(v)n(e/left)j(of)d(cursor)292
+b Fg(=sum)36 b(/)g(=sumh)4242 3500 y Fi(Sum)24 b(just)f(the)i(3)f
+(\014elds)f(closest)i(to)f(cursor)279 b Fg(=sum3/=sumh3)4242
+3587 y Fd(Miscellaneous)4242 3674 y Fi(toggle)25 b(visibilit)n(y)d(of)i
+(v)n(ertical)g(lines)474 b Fg(C-c)36 b(|)4242 3744 y
+Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370 b Fg(M-x)36
+b(org-table-export)4242 3813 y Fi(imp)r(ort)23 b(tab-separated)j
+(\014le)447 b Fg(M-x)36 b(org-table-import)4242 3900
+y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
+Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g
+Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057
+y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
+Fg(C-c)36 b(C-c)4242 4126 y Fi(con)n(v)n(ert)25 b(table)f(\(Org-mo)r
+(de)g Fe($)f Fi(table.el\))312 b Fg(C-c)36 b(~)p eop
+end
+%%Page: 2 2
+TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
+b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
+(3.13\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
+120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
+b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793
+b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g
+(to)g(y)n(our)g(agenda)483 b Fg(C-c)36 b([)-150 358 y
+Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g(from)f(y)n(our)g(agenda)299
+b Fg(C-c)36 b(])-150 438 y Fi(compile)24 b(agenda)h(for)e(the)h(curren)
+n(t)g(w)n(eek)320 b Fg(C-c)36 b(a)1466 415 y Ff(2)-150
+508 y Fi(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
+b(C-o)-150 641 y Fi(T)-6 b(o)24 b(set)g(category)h(for)e(curren)n(t)h
+(\014le,)g(add)g(line)1082 617 y Ff(3)1119 641 y Fi(:)-150
+715 y Fg(#+CATEGORY:)38 b(MyCateg)-150 814 y Fd(Commands)26
+b(a)n(v)-5 b(ailable)25 b(in)i(an)g(agenda)g(bu\013er)-150
+912 y Fi(The)g(agenda)h(bu\013er)f(is)f(electric:)38
+b(single)26 b(k)n(ey)i(presses)e(execute)j(com-)-150
+982 y(mands.)-150 1080 y Fd(View)e(org)f(\014le)-150
+1178 y Fi(sho)n(w)e(original)f(lo)r(cation)h(of)g(item)524
+b Fg(SPC)-150 1248 y Fi(...)30 b(also)24 b(a)n(v)l(ailable)g(with)781
+b Fg(mouse-3)-150 1318 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)n(w)
+626 b Fg(l)-150 1388 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g
+(other)g(windo)n(w)260 b Fg(TAB)-150 1457 y Fi(...)30
+b(also)24 b(a)n(v)l(ailable)g(with)781 b Fg(mouse-2)-150
+1527 y Fi(goto)25 b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n
+(ws)91 b Fg(RET)-150 1597 y Fi(toggle)25 b(follo)n(w-mo)r(de)861
+b Fg(f)-150 1695 y Fd(Change)27 b(displa)n(y)-150 1794
+y Fi(delete)e(other)f(windo)n(ws)791 b Fg(o)-150 1863
+y Fi(switc)n(h)24 b(to)g(w)n(eekly)h(view)767 b Fg(w)-150
+1933 y Fi(switc)n(h)24 b(to)g(daily)g(view)822 b Fg(d)-150
+2003 y Fi(toggle)25 b(inclusion)e(of)h(diary)f(en)n(tries)473
+b Fg(D)-150 2072 y Fi(toggle)25 b(time)f(grid)f(for)g(daily)g(sc)n
+(hedule)388 b Fg(g)-150 2142 y Fi(refresh)23 b(agenda)i(bu\013er)f
+(with)g(an)n(y)g(c)n(hanges)239 b Fg(r)-150 2212 y Fi(displa)n(y)24
+b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)-150
+2282 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238
+b(LEFT)-150 2351 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)-150
+2450 y Fd(Remote)27 b(editing)-150 2548 y Fi(digit)d(argumen)n(t)984
+b Fg(0-9)-150 2646 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f
+(item)333 b Fg(t)-150 2716 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t)
+i(item)612 b Fg(p)-150 2798 y Fi(raise)23 b(priorit)n(y)g(of)g(curren)n
+(t)i(item)557 b Fg(S-UP)1430 2775 y Ff(4)-150 2879 y
+Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)g(item)538
+b Fg(S-DOWN)1500 2855 y Ff(4)-150 2949 y Fi(displa)n(y)24
+b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h(item)189
+b Fg(P)-150 3058 y Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h
+(earlier)315 b Fg(S-LEFT)1500 3034 y Ff(4)-150 3138 y
+Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h(later)367
+b Fg(S-RIGHT)1535 3115 y Ff(4)-150 3208 y Fi(c)n(hange)25
+b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)-150 3306 y
+Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b
+Fg(i)-150 3405 y Fd(Calendar)26 b(commands)-150 3503
+y Fi(\014nd)e(agenda)h(cursor)f(date)g(in)g(calendar)350
+b Fg(c)-150 3573 y Fi(compute)25 b(agenda)g(for)e(calendar)i(cursor)e
+(date)180 b Fg(c)-150 3642 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r
+(on)669 b Fg(M)-150 3712 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636
+b Fg(S)-150 3782 y Fi(sho)n(w)24 b(holida)n(ys)1014 b
+Fg(H)-150 3852 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars)
+478 b Fg(C)-150 3950 y Fd(Quit)27 b(and)g(Exit)-150 4048
+y Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376
+b Fg(q)-150 4118 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i
+(bu\013ers)258 b Fg(x)2046 -364 y Fh(Exp)s(orting)2046
+-208 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f(extensions)i
+Fc(.txt)k Fi(and)32 b Fc(.html)38 b Fi(in)31 b(the)2046
+-139 y(curren)n(t)24 b(directory)-6 b(.)2046 -40 y(exp)r(ort)25
+b(as)e(ASCI)r(I)i(\014le)820 b Fg(C-c)36 b(C-x)g(a)2046
+29 y Fi(exp)r(ort)25 b(visible)e(text)i(only)e(\(e.g.)32
+b(for)23 b(prin)n(ting\))152 b Fg(C-c)36 b(C-x)g(v)2046
+99 y Fi(exp)r(ort)25 b(as)e(HTML)g(\014le)804 b Fg(C-c)36
+b(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
+(bro)n(wser)266 b Fg(C-c)36 b(C-x)g(C-h)2046 239 y Fi(pre\014x)24
+b(arg)g(sets)g(n)n(b.)31 b(of)23 b(headline)i(lev)n(els,)e(e.g.)182
+b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 337 y Fi(insert)23 b(template)j(of)d
+(exp)r(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 435
+y Fi(toggle)25 b(\014xed)f(width)g(for)f(line)g(or)h(region)346
+b Fg(C-c)36 b(:)2046 534 y Fd(HTML)27 b(formatting)2046
+632 y Fi(mak)n(e)d(w)n(ords)g Fd(b)r(old)897 b Fg(*bold*)2046
+702 y Fi(mak)n(e)24 b(w)n(ords)g Fc(italic)898 b Fg(/italic/)2046
+771 y Fi(mak)n(e)24 b(w)n(ords)g(underlined)p 2433 784
+326 4 v 728 w Fg(_underlined_)2046 841 y Fi(sub-)f(and)i(sup)r
+(erscripts)781 b Fg(x^3,)36 b(J_dust)2046 911 y Fi(T)2085
+925 y(E)2124 911 y(X-lik)n(e)23 b(macros)940 b Fg(\\alpha,)37
+b(\\to)2046 981 y Fi(t)n(yp)r(eset)25 b(lines)f(in)f(\014xed)h(width)g
+(fon)n(t)460 b Fg(start)37 b(with)f(:)2046 1050 y Fi(tables)24
+b(are)g(exp)r(orted)h(as)f(HTML)f(tables)321 b Fg(start)37
+b(with)f(|)2046 1120 y Fi(links)23 b(b)r(ecome)i(HTML)e(links)640
+b Fg(http:...)73 b(etc)2046 1190 y Fi(include)24 b(h)n(tml)g(tags)905
+b Fg(@<b>...@</b>)2046 1288 y Fd(Exp)r(ort)27 b(options)2046
+1386 y Fi(Include)20 b(additional)f(information)g(for)f(exp)r(ort)i(b)n
+(y)f(putting)h(these)g(an)n(y-)2046 1456 y(where)g(in)f(the)h(org)g
+(\014le.)30 b(Use)19 b Fg(M-TAB)i Fi(completion)f(to)g(mak)n(e)h(sure)e
+(to)h(get)2046 1526 y(the)i(righ)n(t)e(k)n(eyw)n(ords.)31
+b Fg(M-TAB)22 b Fi(again)f(just)g(after)g(k)n(eyw)n(ord)g(is)g
+(complete)2046 1596 y(inserts)i(examples.)2046 1694 y(the)i(title)f(to)
+g(b)r(e)g(sho)n(wn)797 b Fg(#+TITLE:)2046 1764 y Fi(the)25
+b(author)1115 b Fg(#+AUTHOR:)2046 1834 y Fi(authors)24
+b(email)f(address)769 b Fg(#+EMAIL:)2046 1903 y Fi(language)25
+b(co)r(de)g(for)e(h)n(tml)732 b Fg(#+LANGUAGE:)2046 1973
+y Fi(free)23 b(text)i(description)f(of)g(\014le)626 b
+Fg(#+TEXT:)2046 2043 y Fi(...)30 b(whic)n(h)24 b(can)g(carry)g(o)n(v)n
+(er)g(m)n(ultiple)f(lines)271 b Fg(#+TEXT:)2046 2112
+y Fi(settings)25 b(for)d(the)j(exp)r(ort)f(pro)r(cess)g(-)f(see)h(b)r
+(elo)n(w)145 b Fg(#+OPTIONS:)2046 2211 y Fd(Settings)26
+b(for)h(the)g(OPTIONS)i(line)2046 2309 y Fi(set)24 b(n)n(um)n(b)r(er)g
+(of)f(headline)i(lev)n(els)e(for)g(exp)r(ort)219 b Fg(H:2)2046
+2379 y Fi(turn)24 b(on/o\013)h(section)f(n)n(um)n(b)r(ers)577
+b Fg(num:t)2046 2449 y Fi(turn)24 b(on/o\013)h(table)f(of)f(con)n(ten)n
+(ts)564 b Fg(toc:t)2046 2518 y Fi(turn)24 b(on/o\013)h(linebreak)f
+(preserv)l(ation)395 b Fg(\\n:nil)2046 2588 y Fi(turn)24
+b(on/o\013)h(quoted)g(h)n(tml)f(tags)548 b Fg(@:t)2046
+2658 y Fi(turn)24 b(on/o\013)h(\014xed)f(width)g(sections)464
+b Fg(::t)2046 2728 y Fi(turn)24 b(on/o\013)h(tables)893
+b Fg(|:t)2046 2797 y Fi(turn)20 b(on/o\013)h(T)2444 2811
+y(E)2484 2797 y(X)e(syn)n(tax)i(for)f(sub/sup)r(er-scripts)70
+b Fg(^:t)2046 2867 y Fi(turn)24 b(on/o\013)h(emphasised)f(text)578
+b Fg(*:nil)2046 2937 y Fi(turn)24 b(on/o\013)h(T)2452
+2951 y(E)2491 2937 y(X)e(macros)703 b Fg(TeX:t)2046 3035
+y Fd(Commen)n(ts:)35 b(T)-7 b(ext)27 b(not)f(b)r(eing)i(exp)r(orted)
+2046 3133 y Fi(T)-6 b(ext)22 b(b)r(efore)f(the)h(\014rst)f(headline)g
+(is)f(not)i(considered)g(part)f(of)g(the)h(do)r(c-)2046
+3203 y(umen)n(t)29 b(and)f(is)f(therefore)h(nev)n(er)g(exp)r(orted.)44
+b(Lines)28 b(starting)g(with)g Fg(#)2046 3273 y Fi(are)j(commen)n(ts)g
+(and)h(are)e(not)i(exp)r(orted.)53 b(Subtrees)32 b(whose)f(header)2046
+3343 y(starts)24 b(with)g(COMMENT)e(are)i(nev)n(er)g(exp)r(orted.)2046
+3441 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285
+b Fg(C-c)36 b(;)2046 3644 y Fh(Completion)2046 3800 y
+Fi(In-bu\013er)e(completion)g(completes)h(TODO)d(k)n(eyw)n(ords)i(at)g
+(headline)2046 3869 y(start,)26 b(T)-6 b(eX)26 b(macros)f(after)h(\\)p
+Fg(\\)p Fi(",)h(option)f(k)n(eyw)n(ords)g(after)g(\\)p
+Fg(#-)p Fi(",)h(k)n(ey-)2046 3939 y(w)n(ord)d(form)n(ulas)e(after)i(\\)
+p Fg(=)p Fi(",)g(and)g(dictionary)g(w)n(ords)g(elsewhere.)2046
+4037 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702 b Fg(M-TAB)4242
+-364 y Fh(Calendar)36 b(and)h(Diary)i(In)m(tegration)4242
+-208 y Fi(T)-6 b(o)35 b(include)g(en)n(tries)g(from)f(the)i(Emacs)f
+(diary)g(in)f(y)n(our)h(Org-mo)r(de)4242 -139 y(agenda:)4242
+-40 y Fg(\(setq)i(org-agenda-include-diary)42 b(t\))4242
+58 y Fi(T)-6 b(o)24 b(include)h(y)n(our)f(Org-mo)r(de)f(agenda)j(in)d
+(y)n(our)h(normal)g(diary)-6 b(,)23 b(mak)n(e)4242 128
+y(sure)i(y)n(ou're)g(using)g(the)h(fancy)g(diary)f(displa)n(y)g(and)h
+(in)f(y)n(our)g Fg(~/diary)4242 197 y Fi(\014le)f(add)4242
+296 y Fg(&\045\045\(org-diary\))4242 394 y Fi(to)30 b(include)g(all)f
+(the)h(\014les)f(listed)h(in)f Fg(org-agenda-files)p
+Fi(.)53 b(F)-6 b(or)29 b(more)4242 464 y(selectiv)n(e)c(\014le)e
+(inclusion)h(use)g(a)g(line)f(for)g(eac)n(h)i(\014le:)4242
+562 y Fg(&\045\045\(org-diary\))39 b(~/path/to/some/org-fil)q(e.or)q(g)
+4242 767 y Fh(Remem)m(b)s(er-mo)s(de)f(In)m(tegration)4242
+923 y Fi(See)32 b(the)g(man)n(ual)g(for)e(ho)n(w)i(to)g(mak)n(e)g
+(remem)n(b)r(er.el)f(use)g(Org-mo)r(de)4242 992 y(links)25
+b(and)g(\014les.)36 b(The)25 b(note-\014nishing)h(command)g
+Fg(C-c)36 b(C-c)26 b Fi(will)e(\014rst)4242 1062 y(prompt)g(for)f(an)h
+(org)f(\014le.)32 b(In)24 b(the)g(\014le,)g(\014nd)g(a)g(lo)r(cation)g
+(with:)4242 1160 y(rotate)h(subtree)f(visibilit)n(y)719
+b Fg(TAB)4242 1230 y Fi(next)25 b(heading)1043 b Fg(DOWN)4242
+1300 y Fi(previous)24 b(heading)921 b Fg(UP)4242 1398
+y Fi(Insert)24 b(the)h(note)g(with)e(one)i(of)e(the)i(follo)n(wing:)
+4242 1497 y(as)f(sublev)n(el)g(of)f(heading)i(at)f(cursor)468
+b Fg(RET)4242 1566 y Fi(righ)n(t)24 b(here)g(\(cursor)f(not)i(on)f
+(heading\))388 b Fg(RET)4242 1636 y Fi(b)r(efore)24 b(curren)n(t)g
+(heading)745 b Fg(LEFT)4242 1706 y Fi(after)24 b(curren)n(t)g(heading)
+790 b Fg(RIGHT)4242 1776 y Fi(shortcut)20 b(to)f(end)h(of)f(bu\013er)g
+(\(cursor)g(at)g(buf-start\))71 b Fg(RET)4242 1845 y
+Fi(Ab)r(ort)1256 b Fg(q)4242 2050 y Fh(CUA)38 b(and)f(p)s(c-select)g
+(compatibilit)m(y)4242 2206 y Fi(Con\014gure)31 b(the)f(v)l(ariable)g
+Fg(org-CUA-compatibility)35 b Fi(to)c(mak)n(e)f(Org-)4242
+2276 y(mo)r(de)38 b(a)n(v)n(oid)g(the)g Fg(S-<cursor>)i
+Fi(bindings)d(used)h(b)n(y)g(these)g(mo)r(des.)4242 2345
+y(When)h(set,)j(Org-mo)r(de)c(will)e(c)n(hange)k(the)f(follo)n(wing)e
+(k)n(eybindings)4242 2415 y(\(also)25 b(in)f(the)h(agenda)h(bu\013er,)e
+(but)h(not)g(during)f(date)i(selection\).)34 b(See)4242
+2499 y(note)25 b(mark)e(four)4705 2476 y Ff(4)4766 2499
+y Fi(throughout)i(the)g(reference)f(card.)4242 2667 y
+Fg(S-UP)142 b Fe(!)35 b Fg(M-p)460 b(S-DOWN)72 b Fe(!)35
+b Fg(M-n)4242 2737 y(S-LEFT)72 b Fe(!)35 b Fg(M--)460
+b(S-RIGHT)37 b Fe(!)e Fg(M-+)4242 2807 y(S-RET)107 b
+Fe(!)35 b Fg(C-S-RET)4242 2991 y Fh(Notes)4242 3123 y
+Ff(1)4307 3146 y Fi(The)28 b(six)f(autoload)i(forms)e(are)h(only)g
+(needed)h(if)e(Org-mo)r(de)g(is)g(not)4242 3216 y(part)d(of)f(Emacs,)h
+(or)f(an)h(XEmacs)g(pac)n(k)l(age.)4242 3302 y Ff(2)4313
+3325 y Fi(This)34 b(is)f(only)h(a)h(suggestion)g(for)e(a)h(binding)h
+(of)e(this)h(command.)4242 3395 y(Cho)r(ose)24 b(y)n(ou)h(o)n(wn)f(k)n
+(ey)g(as)g(sho)n(wn)g(under)g(INST)-6 b(ALLA)g(TION.)4242
+3481 y Ff(3)4300 3504 y Fi(After)21 b(c)n(hanging)h(a)f
+Fg(#+KEYWORD)j Fi(line,)d(press)f Fg(C-c)37 b(C-c)21
+b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
+(mak)n(e)h(Org-mo)r(de)e(notice)i(the)f(c)n(hange.)4242
+3659 y Ff(4)4303 3683 y Fi(Keybinding)g(a\013ected)i(b)n(y)e
+Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
+3768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
+b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
+y(v3.13)h(for)h(Org-Mo)r(de)e(3.13,)i(2005)4912 3882
+y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
+(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
+4022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
+(distribute)f(copies)j(of)f(this)f(card)h(pro-)4242 4077
+y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
+(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4242 4133
+y(all)20 b(copies.)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%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 @@
+% Reference Card for Org Mode 3.13
+%
+%**start of header
+\newcount\columnsperpage
+
+% This file can be printed with 1, 2, or 3 columns per page (see below).
+% At the moment this card works quite nicely in 3 column format and
+% currently takes most of 2 pages. It is thus suited to producing one
+% double-side page when printed.
+
+% There are a couple of tweaks in the format of this card which make it work
+% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
+% are commented below. Revert the changes if you want letter sized paper.
+
+% Try running something like
+% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
+% to print the card
+
+\columnsperpage=3
+
+% Copyright (c) 2004 Philip Rooke, 2005 Free Software Foundation
+
+% GNU Emacs is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2, or (at your option)
+% any later version.
+
+% GNU Emacs is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+
+% You should have received a copy of the GNU General Public License
+% along with GNU Emacs; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+
+% This file is intended to be processed by plain TeX (TeX82).
+%
+% The final reference card has six columns, three on each side.
+% This file can be used to produce it in any of three ways:
+% 1 column per page
+% produces six separate pages, each of which needs to be reduced to 80%.
+% This gives the best resolution.
+% 2 columns per page
+% produces three already-reduced pages.
+% You will still need to cut and paste.
+% 3 columns per page
+% produces two pages which must be printed sideways to make a
+% ready-to-use 8.5 x 11 inch reference card.
+% For this you need a dvi device driver that can print sideways.
+% Which mode to use is controlled by setting \columnsperpage above.
+%
+% Author:
+% Stephen Gildea
+% Internet: gildea@stop.mail-abuse.org
+%
+% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
+% for their many good ideas.
+
+\def\orgversionnumber{3.13}
+\def\year{2005}
+
+\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
+ \centerline{\small \copyright\ 2004, 2005\ Free Software Foundation, Inc.
+ Permissions on back. v\orgversionnumber}}
+
+\def\copyrightnotice{
+\vskip 1ex plus 100 fill\begingroup\small
+\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
+\centerline{v\orgversionnumber{} for Org-Mode \orgversionnumber{}, \year}
+\centerline{Author: Philip Rooke}
+\centerline{based on refcard design and format by Stephen Gildea}
+
+Permission is granted to make and distribute copies of
+this card provided the copyright notice and this permission notice
+are preserved on all copies.
+
+\endgroup}
+
+% make \bye not \outer so that the \def\bye in the \else clause below
+% can be scanned without complaint.
+\def\bye{\par\vfill\supereject\end}
+
+\newdimen\intercolumnskip %horizontal space between columns
+\newbox\columna %boxes to hold columns already built
+\newbox\columnb
+
+\def\ncolumns{\the\columnsperpage}
+
+\message{[\ncolumns\space
+ column\if 1\ncolumns\else s\fi\space per page]}
+
+\def\scaledmag#1{ scaled \magstep #1}
+
+% This multi-way format was designed by Stephen Gildea October 1986.
+% Note that the 1-column format is fontfamily-independent.
+\if 1\ncolumns %one-column format uses normal size
+ \hsize 4in
+ \vsize 10in
+ \voffset -.7in
+ \font\titlefont=\fontname\tenbf \scaledmag3
+ \font\headingfont=\fontname\tenbf \scaledmag2
+ \font\smallfont=\fontname\sevenrm
+ \font\smallsy=\fontname\sevensy
+
+ \footline{\hss\folio}
+ \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
+\else %2 or 3 columns uses prereduced size
+ \hsize 3.2in
+
+% FIXME - Try to make things more A4 friendly
+% \vsize 7.95in
+ \vsize 7.65in
+% \hoffset -.75in
+ \hoffset -.25in
+ \voffset -.745in
+ \font\titlefont=cmbx10 \scaledmag2
+ \font\headingfont=cmbx10 \scaledmag1
+ \font\smallfont=cmr6
+ \font\smallsy=cmsy6
+ \font\eightrm=cmr8
+ \font\eightbf=cmbx8
+ \font\eightit=cmti8
+ \font\eighttt=cmtt8
+ \font\eightmi=cmmi8
+ \font\eightsy=cmsy8
+ \textfont0=\eightrm
+ \textfont1=\eightmi
+ \textfont2=\eightsy
+ \def\rm{\eightrm}
+ \def\bf{\eightbf}
+ \def\it{\eightit}
+ \def\tt{\eighttt}
+
+% FIXME - Try to make things more A4 friendly
+% \normalbaselineskip=.8\normalbaselineskip
+ \normalbaselineskip=.7\normalbaselineskip
+ \normallineskip=.8\normallineskip
+ \normallineskiplimit=.8\normallineskiplimit
+ \normalbaselines\rm %make definitions take effect
+
+ \if 2\ncolumns
+ \let\maxcolumn=b
+ \footline{\hss\rm\folio\hss}
+ \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
+ \else \if 3\ncolumns
+ \let\maxcolumn=c
+ \nopagenumbers
+ \else
+ \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
+ \errmessage{Illegal number of columns per page}
+ \fi\fi
+
+ \intercolumnskip=.46in
+ \def\abc{a}
+ \output={% %see The TeXbook page 257
+ % This next line is useful when designing the layout.
+ %\immediate\write16{Column \folio\abc\space starts with \firstmark}
+ \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
+ \else\if a\abc
+ \global\setbox\columna\columnbox \global\def\abc{b}
+ %% in case we never use \columnb (two-column mode)
+ \global\setbox\columnb\hbox to -\intercolumnskip{}
+ \else
+ \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
+ \def\multicolumnformat{\shipout\vbox{\makeheadline
+ \hbox{\box\columna\hskip\intercolumnskip
+ \box\columnb\hskip\intercolumnskip\columnbox}
+ \makefootline}\advancepageno}
+ \def\columnbox{\leftline{\pagebody}}
+
+ \def\bye{\par\vfill\supereject
+ \if a\abc \else\null\vfill\eject\fi
+ \if a\abc \else\null\vfill\eject\fi
+ \end}
+\fi
+
+% we won't be using math mode much, so redefine some of the characters
+% we might want to talk about
+%\catcode`\^=12
+\catcode`\_=12
+
+% we also need the tilde, for file names.
+\catcode`\~=12
+
+\chardef\\=`\\
+\chardef\{=`\{
+\chardef\}=`\}
+
+\hyphenation{mini-buf-fer}
+
+\parindent 0pt
+\parskip 1ex plus .5ex minus .5ex
+
+\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
+
+% newcolumn - force a new column. Use sparingly, probably only for
+% the first column of a page, which should have a title anyway.
+\outer\def\newcolumn{\vfill\eject}
+
+% title - page title. Argument is title text.
+\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
+
+% section - new major section. Argument is section name.
+\outer\def\section#1{\par\filbreak
+ \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
+ \vskip 2ex plus 1ex minus 1.5ex}
+
+\newdimen\keyindent
+
+% beginindentedkeys...endindentedkeys - key definitions will be
+% indented, but running text, typically used as headings to group
+% definitions, will not.
+\def\beginindentedkeys{\keyindent=1em}
+\def\endindentedkeys{\keyindent=0em}
+\endindentedkeys
+
+% paralign - begin paragraph containing an alignment.
+% If an \halign is entered while in vertical mode, a parskip is never
+% inserted. Using \paralign instead of \halign solves this problem.
+\def\paralign{\vskip\parskip\halign}
+
+% \<...> - surrounds a variable name in a code example
+\def\<#1>{{\it #1\/}}
+
+% kbd - argument is characters typed literally. Like the Texinfo command.
+\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
+
+% beginexample...endexample - surrounds literal text, such a code example.
+% typeset in a typewriter font with line breaks preserved
+\def\beginexample{\par\leavevmode\begingroup
+ \obeylines\obeyspaces\parskip0pt\tt}
+{\obeyspaces\global\let =\ }
+\def\endexample{\endgroup}
+
+% key - definition of a key.
+% \key{description of key}{key-name}
+% prints the description left-justified, and the key-name in a \kbd
+% form near the right margin.
+\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
+ {\hsize=.75\hsize\rightskip=1em
+ \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
+
+\newbox\metaxbox
+\setbox\metaxbox\hbox{\kbd{M-x }}
+\newdimen\metaxwidth
+\metaxwidth=\wd\metaxbox
+
+% metax - definition of a M-x command.
+% \metax{description of command}{M-x command-name}
+% Tries to justify the beginning of the command name at the same place
+% as \key starts the key name. (The "M-x " sticks out to the left.)
+\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
+ {\hskip\keyindent\relax#1\hfil}%
+ \hskip -\metaxwidth minus 1fil
+ \kbd{#2}\hfil}}
+
+% threecol - like "key" but with two key names.
+% for example, one for doing the action backward, and one for forward.
+\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
+ &\kbd{#3}\hfil\quad\cr}
+
+%**end of header
+
+
+\title{Org-Mode Reference Card (1/2)}
+
+\centerline{(for version \orgversionnumber)}
+
+\section{Getting Started}
+%
+Put the following in your \kbd{~/.emacs}$^1$
+\vskip -1mm
+\beginexample%
+(autoload 'org-mode "org" "Org mode" t)
+(autoload 'org-diary "org" "Org mode diary entries")
+(autoload 'org-agenda "org" "Agenda from Org files" t)
+(autoload 'org-store-link "org" "Store org link" t)
+(autoload 'orgtbl-mode "org" "Orgtbl minor mode" t)
+(autoload 'turn-on-orgtbl "org" "Orgtbl minor mode")
+(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
+(define-key global-map "\\C-cl" 'org-store-link)$^2$
+(define-key global-map "\\C-ca" 'org-agenda)$^2$
+\endexample
+%
+\metax{For the many customization options try}{M-x org-customize}
+\metax{To read the on-line documentation try}{M-x org-info}
+
+\section{Visibility Cycling}
+
+\key{rotate current subtree between states}{TAB}
+\key{rotate entire buffer between states}{S-TAB}
+\key{show the whole file}{C-c C-a}
+%\key{show branches}{C-c C-k}
+
+\section{Motion}
+
+\key{next heading}{C-c C-n}
+\key{previous heading}{C-c C-p}
+\key{next heading, same level}{C-c C-f}
+\key{previous heading, same level}{C-c C-b}
+\key{backward to higher level heading}{C-c C-u}
+\key{jump to another place in document}{C-c C-j}
+
+\section{Structure Editing}
+
+\key{insert new heading at same level as current}{M-RET}
+\key{insert new TODO entry}{M-S-RET}
+
+\key{promote current heading up one level}{M-LEFT}
+\key{demote current heading down one level}{M-RIGHT}
+\key{promote current subtree up one level}{M-S-LEFT}
+\key{demote current subtree down one level}{M-S-RIGHT}
+
+\key{move subtree up}{M-S-UP}
+\key{move subtree down}{M-S-DOWN}
+\key{kill subtree}{C-c C-h C-w}
+\key{copy subtree}{C-c C-h M-w}
+\key{yank subtree}{C-c C-h C-y}
+
+\key{archive subtree}{C-c \$}
+To set archive location for current file, add a line like$^3$:
+\vskip -1mm
+\beginexample%
+\#+ARCHIVE: archfile::* Archived Tasks
+\endexample
+
+\section{Filtering and Sparse Trees}
+
+\key{show sparse tree for all matches of a regexp}{C-c /}
+\key{view TODO's in sparse tree}{C-c C-v}
+\key{create sparse tree with all deadlines due}{C-c C-w}
+\key{time sorted view of current org file}{C-c C-r}
+\key{agenda for the week}{C-c a$1$}
+\key{agenda for date at cursor}{C-c C-o}
+
+\section{TODO Items}
+
+\key{rotate the state of the current item}{C-c C-t}
+\key{view TODO items in a sparse tree}{C-c C-v}
+
+\key{set the priority of the current item}{C-c , [ABC]}
+\key{remove priority cookie from current item}{C-c , SPC}
+\key{raise priority of current item}{S-UP$^4$}
+\key{lower priority of current item}{S-DOWN$^4$}
+
+\vskip 1mm
+per-file TODO workflow states: add line(s) like$^3$:
+\vskip -1mm
+\beginexample%
+\#+SEQ_TODO: TODO PROCRASTINATE BLUFF DONE
+\endexample
+\vskip -1mm
+per-file TODO keywords: add line(s) like$^3$:
+\vskip -1mm
+\beginexample%
+\#+TYP_TODO: Phil home work DONE
+\endexample
+
+\section{Timestamps}
+
+\key{prompt for date and insert timestamp}{C-c .}
+\key{like \kbd{C-c} . but insert date and time format}{C-u C-c .}
+\key{insert DEADLINE timestamp}{C-c C-d}
+\key{insert SCHEDULED timestamp}{C-c C-s}
+\key{create sparse tree with all deadlines due}{C-c C-w}
+\key{the time between 2 dates in a time range}{C-c C-y}
+
+\key{change timestamp at cursor by $-1$ day}{S-LEFT$^4$}
+\key{change timestamp at cursor by $+1$ day}{S-RIGHT$^4$}
+\key{change year/month/day at cursor by $-1$}{S-DOWN$^4$}
+\key{change year/month/day at cursor by $+1$}{S-UP$^4$}
+
+\key{access the calendar for the current date}{C-c >}
+\key{insert timestamp matching date in calendar}{C-c <}
+\key{access agenda for current date}{C-c C-o}
+
+\key{While prompted for a date:}{}
+\key{... select date in calendar}{mouse-1/RET}
+\key{... scroll calendar back/forward one month}{< / >}
+\key{... forward/backward one day}{S-LEFT/RIGHT}
+\key{... forward/backward one week}{S-UP/DOWN}
+\key{... forward/backward one month}{M-S-LEFT/RIGT}
+
+\section{Links}
+
+\key{globally store link to the current location}{C-c l$^2$}
+\key{insert a link (TAB completes stored links)}{C-c C-l}
+\key{insert file link with file name completion}{C-u C-c C-l}
+
+\key{open link at point}{C-c C-o}
+\key{open file links in emacs}{C-u C-c C-o}
+\key{open link at point}{mouse-2}
+\key{open file links in emacs}{mouse-3}
+
+{\bf Link types}
+
+\key{\kbd{<http://www.astro.uva.nl/~dominik>}}{\rm on the web}
+\key{\kbd{<mailto:adent@galaxy.net>}}{\rm EMail address}
+\key{\kbd{<news:comp.emacs>}}{\rm Usenet group}
+\key{\kbd{<file:/home/dominik/img/mars.jpg>}}{\rm file, absolute}
+\key{\kbd{<file:papers/last.pdf>}}{\rm file, relative}
+\key{\kbd{<file:~/code/main.c:255>}}{\rm file with line nr.}
+\key{\kbd{<bbdb:Richard Stallman>}}{\rm BBDB person}
+\key{\kbd{<shell:ls *.org>}}{\rm shell command}
+\key{\kbd{<gnus:group>}}{\rm GNUS group}
+\key{\kbd{<gnus:group\#id>}}{\rm GNUS message}
+\key{\kbd{<vm:folder>}}{\rm VM folder}
+\key{\kbd{<vm:folder\#id>}}{\rm VM message}
+\key{\kbd{<vm://myself@some.where.org/folder\#id>}}{\rm VM remote}
+Wanderlust \kbd{<wl:...>} and RMAIL \kbd{<rmail:...>} like VM
+%\key{\kbd{<wl:folder>}}{\rm Wanderlust f.}
+%\key{\kbd{<wl:folder\#id>}}{\rm Wanderlust m.}
+%\key{\kbd{<rmail:folder>}}{\rm RMAIL folder}
+%\key{\kbd{<rmail:folder\#id>}}{\rm RMAIL msg}
+
+\section{Tables}
+
+%Org-mode has its own built-in intuitive table editor with unique
+%capabilities.
+
+{\bf Creating a table}
+
+\metax{insert a new Org-mode table}{M-x org-table-create}
+\metax{... or just start typing, e.g.}{|Name|Phone|Age RET |- TAB}
+\key{convert region to table}{C-c C-c}
+\key{... separator at least 3 spaces}{C-3 C-c C-c}
+%\key{... prompt for separator regexp}{C-u C-c C-c}
+
+{\bf Commands available inside tables}
+
+The following commands work when the cursor is {\it inside a table}.
+Outside of tables, the same keys may have other functionality.
+
+{\bf Re-aligning and field motion}
+
+\key{re-align the table without moving the cursor}{C-c C-c}
+\key{re-align the table, move to next field}{TAB}
+\key{move to previous field}{S-TAB}
+\key{re-align the table, move to next row}{RET}
+
+{\bf Row and column editing}
+
+\key{move the current column left}{M-LEFT}
+\key{move the current column right}{M-RIGHT}
+\key{kill the current column}{M-S-LEFT}
+\key{insert new column to left of cursor position}{M-S-RIGHT}
+
+\key{move the current row up}{M-UP}
+\key{move the current row down}{M-DOWN}
+\key{kill the current row or horizontal line}{M-S-UP}
+\key{insert new row above the current row}{M-S-DOWN}
+
+\key{insert horizontal line below the current row}{C-c -}
+\key{insert horizontal line above the current row}{C-u C-c -}
+
+{\bf Regions}
+
+\key{cut rectangular region}{C-c C-h C-w}
+\key{copy rectangular region}{C-c C-h M-w}
+\key{paste rectangular region}{C-c C-h C-y}
+\key{fill paragraph across selected cells}{C-c C-q}
+
+{\bf Calculations}
+
+Except for the summation commands, these need the Emacs calc package
+installed.
+
+\key{replace current field with result of formula}{C-c =}
+\key{... same calculation for rest of column}{C-u C-c =}
+\key{re-apply all stored equations to current line}{C-c *}
+\key{re-apply all stored equations to entire table}{C-u C-c *}
+
+\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
+in lines starting with: {\tt | \# |}.
+
+\key{rotate recalculation mark through \# * ! \^ \_ \$}{C-\#}
+
+\key{display column number cursor is in}{C-c ?}
+\key{sum numbers in current column/rectangle}{C-c +}
+\key{copy down with increment}{S-RET$^4$}
+
+A formula can also be typed directly into into a field. It will be
+executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}:
+
+\key{Example: Add Col1 and Col2}{=\$1+\$2}
+\key{... with printf format specification}{=\$1+\$2;\%.2f}
+\key{... with constants from constants.el}{=\$1/\$c/\$cm}
+\key{Apply current (for this column) formula}{=}
+\key{Sum all numbers above/left of cursor}{=sum / =sumh}
+\key{Sum just the 3 fields closest to cursor}{=sum3/=sumh3}
+
+{\bf Miscellaneous}
+
+\key{toggle visibility of vertical lines}{C-c |}
+\metax{export as tab-separated file}{M-x org-table-export}
+\metax{import tab-separated file}{M-x org-table-import}
+
+{\bf Tables created with the \kbd{table.el} package}
+
+\key{insert a new \kbd{table.el} table}{C-c ~}
+\key{recognize existing table.el table}{C-c C-c}
+\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
+
+\newcolumn
+\title{Org-Mode Reference Card (2/2)}
+
+\centerline{(for version \orgversionnumber)}
+
+\section{Timeline and Agenda}
+
+\key{show timeline of current org file}{C-c C-r}
+\key{... include past dates}{C-u C-c C-r}
+
+\key{add current file to your agenda}{C-c [}
+\key{remove current file from your agenda}{C-c ]}
+\key{compile agenda for the current week}{C-c a$^2$}
+\key{agenda for date at cursor}{C-c C-o}
+\vskip 1mm
+To set category for current file, add line$^3$:
+\vskip -1mm
+\beginexample%
+\#+CATEGORY: MyCateg
+\endexample
+
+{\bf Commands available in an agenda buffer}
+
+The agenda buffer is electric: single key presses execute commands.
+
+{\bf View org file}
+
+\key{show original location of item}{SPC}
+\key{... also available with}{mouse-3}
+\key{show and recenter window}{l}
+\key{goto original location in other window}{TAB}
+\key{... also available with}{mouse-2}
+\key{goto original location, delete other windows}{RET}
+\key{toggle follow-mode}{f}
+
+{\bf Change display}
+
+\key{delete other windows}{o}
+\key{switch to weekly view}{w}
+\key{switch to daily view}{d}
+\key{toggle inclusion of diary entries}{D}
+\key{toggle time grid for daily schedule}{g}
+\key{refresh agenda buffer with any changes}{r}
+\key{display the following \kbd{org-agenda-ndays}}{RIGHT}
+\key{display the previous \kbd{org-agenda-ndays}}{LEFT}
+\key{goto today}{.}
+
+{\bf Remote editing}
+
+\key{digit argument}{0-9}
+
+\key{change state of current TODO item}{t}
+\key{set priority of current item}{p}
+\key{raise priority of current item}{S-UP$^4$}
+\key{lower priority of current item}{S-DOWN$^4$}
+\key{display weighted priority of current item}{P}
+
+\key{change timestamp to one day earlier}{S-LEFT$^4$}
+\key{change timestamp to one day later}{S-RIGHT$^4$}
+\key{change timestamp to today}{>}
+
+\key{insert new entry into diary}{i}
+
+{\bf Calendar commands}
+
+\key{find agenda cursor date in calendar}{c}
+\key{compute agenda for calendar cursor date}{c}
+\key{show phases of the moon}{M}
+\key{show sunrise/sunset times}{S}
+\key{show holidays}{H}
+\key{convert date to other calendars}{C}
+
+{\bf Quit and Exit}
+
+\key{quit agenda, remove agenda buffer}{q}
+\key{exit agenda, remove all agenda buffers}{x}
+
+\section{Exporting}
+
+Exporting creates files with extensions {\it .txt\/} and {\it .html\/}
+in the current directory.
+
+\key{export as ASCII file}{C-c C-x a}
+\key{export visible text only (e.g. for printing)}{C-c C-x v}
+\key{export as HTML file}{C-c C-x h}
+\key{export as HTML and open in browser}{C-c C-x C-h}
+\key{prefix arg sets nb. of headline levels, e.g.}{C-3 C-c C-x h}
+
+\key{insert template of export options}{C-c C-x t}
+
+\key{toggle fixed width for line or region}{C-c :}
+
+{\bf HTML formatting}
+
+\key{make words {\bf bold}}{*bold*}
+\key{make words {\it italic}}{/italic/}
+\key{make words \underbar{underlined}}{_underlined_}
+\key{sub- and superscripts}{x\^{}3, J_dust}
+\key{\TeX{}-like macros}{\\alpha, \\to}
+\key{typeset lines in fixed width font}{start with :}
+\key{tables are exported as HTML tables}{start with |}
+\key{links become HTML links}{http:... etc}
+\key{include html tags}{@<b>...@</b>}
+
+{\bf Export options}
+
+Include additional information for export by putting these anywhere in the
+org file. Use {\tt M-TAB} completion to make sure to get the right
+keywords. {\tt M-TAB} again just after keyword is complete inserts examples.
+
+\key{the title to be shown}{\#+TITLE:}
+\key{the author}{\#+AUTHOR:}
+\key{authors email address}{\#+EMAIL:}
+\key{language code for html}{\#+LANGUAGE:}
+\key{free text description of file}{\#+TEXT:}
+\key{... which can carry over multiple lines}{\#+TEXT:}
+\key{settings for the export process - see below}{\#+OPTIONS:}
+
+{\bf Settings for the OPTIONS line}
+
+\key{set number of headline levels for export}{H:2}
+\key{turn on/off section numbers}{num:t}
+\key{turn on/off table of contents}{toc:t}
+\key{turn on/off linebreak preservation}{\\n:nil}
+\key{turn on/off quoted html tags}{@:t}
+\key{turn on/off fixed width sections}{::t}
+\key{turn on/off tables}{|:t}
+\key{turn on/off \TeX\ syntax for sub/super-scripts}{\^{}:t}
+\key{turn on/off emphasised text}{*:nil}
+\key{turn on/off \TeX\ macros}{TeX:t}
+
+{\bf Comments: Text not being exported}
+
+Text before the first headline is not considered part of the document
+and is therefore never exported.
+Lines starting with \kbd{\#} are comments and are not exported.
+Subtrees whose header starts with COMMENT are never exported.
+
+\key{toggle COMMENT keyword on entry}{C-c ;}
+
+\section{Completion}
+
+In-buffer completion completes TODO keywords at headline start, TeX
+macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'',
+keyword formulas after ``{\tt =}'', and dictionary words elsewhere.
+
+\key{Complete word at point}{M-TAB}
+
+\newcolumn
+
+\section{Calendar and Diary Integration}
+
+To include entries from the Emacs diary in your Org-mode agenda:
+\beginexample%
+(setq org-agenda-include-diary t)
+\endexample
+
+To include your Org-mode agenda in your normal diary, make sure you're
+using the fancy diary display
+%
+%\beginexample%
+%(add-hook 'diary-display-hook 'fancy-diary-display)
+%\endexample
+%
+and in your \kbd{~/diary} file add
+
+\beginexample%
+\&\%\%(org-diary)
+\endexample
+
+to include all the files listed in \kbd{org-agenda-files}. For more
+selective file inclusion use a line for each file:
+
+\beginexample%
+\&\%\%(org-diary) ~/path/to/some/org-file.org
+\endexample
+
+\section{Remember-mode Integration}
+
+See the manual for how to make remember.el use Org-mode links and
+files. The note-finishing command \kbd{C-c C-c} will first prompt for
+an org file. In the file, find a location with:
+
+\key{rotate subtree visibility}{TAB}
+\key{next heading}{DOWN}
+\key{previous heading}{UP}
+
+Insert the note with one of the following:
+
+\key{as sublevel of heading at cursor}{RET}
+\key{right here (cursor not on heading)}{RET}
+\key{before current heading}{LEFT}
+\key{after current heading}{RIGHT}
+\key{shortcut to end of buffer (cursor at buf-start)}{RET}
+\key{Abort}{q}
+
+\section{CUA and pc-select compatibility}
+
+Configure the variable {\tt org-CUA-compatibility} to make Org-mode
+avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
+Org-mode will change the following keybindings (also in the agenda
+buffer, but not during date selection). See note mark four$^4$
+throughout the reference card.
+%\vskip-mm
+\beginexample
+S-UP $\to$ M-p S-DOWN $\to$ M-n
+S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
+S-RET $\to$ C-S-RET
+\endexample
+
+\section{Notes}
+$^1$ The six autoload forms are only needed if Org-mode is not part of
+Emacs, or an XEmacs package.
+
+$^2$ This is only a suggestion for a binding of this command. Choose
+you own key as shown under INSTALLATION.
+
+$^3$ After changing a \kbd{\#+KEYWORD} line, press \kbd{C-c C-c} with
+the cursor still in a line to make Org-mode notice the change.
+
+$^4$ Keybinding affected by {\tt org-CUA-compatibility}.
+
+\copyrightnotice
+
+\bye
+
+% Local variables:
+% compile-command: "tex ord-mode-ref"
+% TeX-master: t
+% End:
+
+% 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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
+2005-06-28 Kenichi Handa <handa@m17n.org>
+
+ * leim-ext.el: Add rules for inserting full-width space for
+ quail/Punct and quail/Punct-b5.
+
2005-06-04 Eli Zaretskii <eliz@gnu.org>
* 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 @@
(eval-after-load "quail/PY-b5"
'(quail-defrule "ling2" ?$(0!r(B nil t))
+;; Enable inputting full-width space (U+3000).
+(eval-after-load "quail/Punct"
+ '(quail-defrule " " ?$A!!(B nil t))
+(eval-after-load "quail/Punct-b5"
+ '(quail-defrule " " ?$(0!!(B nil t))
+
(autoload 'ucs-input-activate "quail/uni-input"
"Activate UCS input method.
With 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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index cf5fa2667fe..fe8fe83fc90 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,641 @@
+2005-07-04 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el: Leading space replaced by TABS.
+ (org-recalc-marks, org-table-rotate-recalc-marks)
+ (org-table-get-specials): Treat "^" and "_" marks.
+ (org-table-justify-field-maybe): Optional argument NEW.
+ (org-table-eval-formula): Parsing of the format simplified. New
+ modes C,I. Honor the %= parameter in the current table. Avoid
+ unnecessary re-align by using the NEW argument to
+ `org-table-justify-field-maybe'.
+ (org-calc-default-modes): Default for date-format mimicks
+ org-mode.
+ (org-agenda, org-timeline): Quote argument in
+ `org-agenda-redo-command'.
+
+2005-07-03 Luc Teirlinck <teirllm@auburn.edu>
+
+ * cus-face.el (custom-theme-set-faces): Make it handle face
+ aliases whose alias declarations are pre- or autoloaded.
+
+2005-07-04 Juri Linkov <juri@jurta.org>
+
+ * faces.el (read-face-name): Put the code for getting a face name
+ from the buffer before adding the faces from the `face' property.
+ Use `completing-read-multiple' instead of `completing-read'.
+ Require `crm'. Add default value and post-process the returned
+ list of faces.
+
+ * emacs-lisp/crm.el (crm-find-current-element)
+ (crm-minibuffer-complete-and-exit): Handle minibuffer prompt.
+
+ * emacs-lisp/lisp-mode.el (eval-defun-1):
+ * emacs-lisp/edebug.el (edebug-eval-defun):
+ Remove unnecessary quotes.
+
+2005-07-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * add-log.el (add-change-log-entry):
+ * comint.el (comint-dynamic-list-input-ring)
+ (comint-dynamic-list-completions):
+ * dabbrev.el (dabbrev-expand):
+ * delim-col.el (delimit-columns-rectangle-line):
+ * diff-mode.el (diff-context->unified, diff-reverse-direction)
+ (diff-unified->context):
+ * ediff-init.el (ediff-abbrev-jobname):
+ * ediff-mult.el (ediff-replace-session-status-in-meta-buffer)
+ (ediff-replace-session-activity-marker-in-meta-buffer):
+ * info.el (Info-summary):
+ * lpr.el (printify-region):
+ * printing.el (pr-create-interface):
+ * ps-print.el (ps-print-quote):
+ * ses.el (ses-column-widths, ses-print-cell)
+ (ses-adjust-print-width, ses-center):
+ * shell.el (shell-file-name-quote-list):
+ * strokes.el (strokes-read-stroke, strokes-read-complex-stroke)
+ (strokes-fill-current-buffer-with-whitespace)
+ (strokes-xpm-for-stroke, strokes-list-strokes)
+ (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string):
+ * term.el (term-dynamic-list-input-ring)
+ (term-dynamic-list-completions):
+ * calc/calc.el (math-format-stack-value):
+ * emacs-lisp/edebug.el (edebug-display-freq-count):
+ * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment)
+ (delphi-new-comment-line):
+ * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right):
+ * progmodes/executable.el (executable-set-magic):
+ * progmodes/python.el (inferior-python-mode):
+ * progmodes/scheme.el (scheme-mode-syntax-table):
+ * progmodes/sh-script.el (sh-maybe-here-document):
+ * progmodes/sql.el (sql-copy-column):
+ * progmodes/tcl.el (tcl-comment-indent, tcl-quote):
+ * textmodes/bibtex.el (bibtex-mode):
+ * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes)
+ (sgml-auto-attributes):
+ * textmodes/table.el (table-insert, table-shorten-cell)
+ (table--generate-source-scan-lines, table-delete-row)
+ (*table--cell-delete-char, table--spacify-frame)
+ (table--horizontally-shift-above-and-below)
+ (table--cell-insert-char, table--cell-blank-str)
+ (table--fill-region-strictly):
+ * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent):
+ * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s".
+
+ * add-log.el (change-log):
+ * apropos.el (apropos):
+ * comint.el (comint-completion, comint-source):
+ * dabbrev.el (dabbrev):
+ * delim-col.el (columns):
+ * diff-mode.el (diff-mode):
+ * ediff.el (ediff):
+ * ediff-diff.el (ediff-diff):
+ * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook):
+ * ediff-mult.el (ediff-mult):
+ * ediff-ptch.el (ediff-ptch):
+ * ediff-wind.el (ediff-window):
+ * facemenu.el (facemenu):
+ * indent.el (indent):
+ * info.el (info):
+ * jka-cmpr-hook.el (compression, jka-compr):
+ * lpr.el (lpr):
+ * outline.el (outlines):
+ * pcmpl-cvs.el (pcmpl-cvs):
+ * pcmpl-rpm.el (pcmpl-rpm):
+ * printing.el (printing):
+ * ps-print.el (postscript, ps-print, ps-print-horizontal)
+ (ps-print-vertical, ps-print-headers, ps-print-font)
+ (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra)
+ (ps-print-background, ps-print-printer, ps-print-page)
+ (ps-print-miscellany):
+ * ses.el (ses):
+ * shell.el (shell, shell-directories, shell-faces):
+ * startup.el (initialization):
+ * strokes.el (strokes):
+ * term.el (term):
+ * uniquify.el (uniquify):
+ * w32-vars.el (w32):
+ * calc/calc.el (calc):
+ * emacs-lisp/bytecomp.el (bytecomp):
+ * emacs-lisp/cl-indent.el (lisp-indent):
+ * emacs-lisp/edebug.el (edebug):
+ * emacs-lisp/elp.el (elp):
+ * emacs-lisp/testcover.el (testcover):
+ * emacs-lisp/trace.el (trace):
+ * emulation/viper-ex.el (viper-ex):
+ * emulation/viper-mous.el (viper-mouse):
+ * mail/mailalias.el (mailalias):
+ * mail/supercite.el (supercite, supercite-frames)
+ (supercite-attr, supercite-cite, supercite-hooks):
+ * net/rcompile.el (remote-compile):
+ * net/rlogin.el (rlogin):
+ * obsolete/ooutline.el (outlines):
+ * progmodes/delphi.el (delphi):
+ * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special)
+ (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal)
+ (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic)
+ (ebnf-optimization):
+ * progmodes/etags.el (etags):
+ * progmodes/executable.el (executable):
+ * progmodes/idlwave.el (idlwave):
+ * progmodes/pascal.el (pascal):
+ * progmodes/prolog.el (prolog):
+ * progmodes/python.el (python):
+ * progmodes/scheme.el (scheme):
+ * progmodes/sh-script.el (sh, sh-script):
+ * progmodes/sql.el (SQL):
+ * progmodes/tcl.el (tcl):
+ * textmodes/bibtex.el (bibtex, bibtex-autokey):
+ * textmodes/enriched.el (enriched):
+ * textmodes/makeinfo.el (makeinfo):
+ * textmodes/sgml-mode.el (sgml):
+ * textmodes/table.el (table-hooks):
+ * textmodes/tex-mode.el (tex-file, tex-run, tex-view):
+ * textmodes/texinfo.el (texinfo):
+ * textmodes/two-column.el (two-column):
+ Finish `defgroup' description with period.
+
+ * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking):
+ * eshell/esh-var.el (eshell-var):
+ * progmodes/vhdl-mode.el (vhdl-testbench):
+ * textmodes/org.el (org): Fix typos in docstrings.
+
+ * emacs-lisp/timer.el (with-timeout): Improve argument/docstring
+ consistency.
+
+ * progmodes/flymake.el (flymake-find-file): Remove.
+ (flymake-float-time): Use `with-no-warnings'.
+ (flymake-check-start-time, flymake-check-was-interrupted)
+ (flymake-err-info, flymake-is-running, flymake-last-change-time)
+ (flymake-new-err-info): `defvar' at compile time.
+
+2005-07-03 Juanma Barranquero <lekktu@gmail.com>
+
+ * replace.el (occur-hook): Doc fix.
+ (occur-1): Don't call `occur-hook' if there are no matches.
+
+2005-07-03 Richard M. Stallman <rms@gnu.org>
+
+ * emulation/tpu-edt.el (tpu-original-global-map): Don't copy
+ global-map, save the same map.
+ (global-map): Don't alter it at top level.
+ (tpu-edt-on): Save global map in tpu-original-global-map, then copy.
+ Then alter it here instead.
+ (tpu-edt-off): Set global-map to the saved one.
+
+ * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted.
+ All references simplified.
+ (tpu-lucid-emacs-p): Renamed from tpu-lucid-emacs19-p. Uses changed.
+ (zmacs-regions): Add defvar.
+ (repeat-complex-command-map): Everything about that deleted.
+
+ * textmodes/artist.el (artist-key-is-drawing)
+ (artist-key-endpoint1, artist-key-poly-point-list)
+ (artist-key-shape, artist-key-draw-how, artist-popup-menu-table)
+ (artist-key-compl-table, artist-rb-save-data)
+ (artist-arrow-point-1, artist-arrow-point-2): Move defvars up.
+ Don't put them in eval-when-compile.
+ (artist-set-arrow-points-for-poly): Use `last', not `artist-last'.
+
+ * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file):
+ Use with-no-warnings.
+
+ * net/browse-url.el (dos-windows-version): Add defvar.
+
+ * mail/supercite.el (filladapt-prefix-table): Add defvar.
+
+ * mail/rmailsum.el (rmail-summary-redo): Add defvar.
+ (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up.
+ (rmail-new-summary-line-count): Renamed from new-summary-line-count.
+ Add defvar.
+ (rmail-summary-beginning-of-message): Use with-no-warnings.
+ (rmail-summary-first-message, rmail-summary-last-message): Likewise.
+
+ * emulation/vip.el (vip-replace-string, ex-map, ex-read):
+ Use with-no-warnings.
+
+ * emulation/vi.el (vi-mark-region): Use c-mark-function.
+ (c-mark-function): Add point-moving-unit property.
+ (vi-goto-line): Use with-no-warnings.
+
+ * emulation/edt.el (edt-last-copied-word): Add defvar.
+ (zmacs-region-stays): Likewise.
+ (edt-mark-section-wisely): Use c-mark-function for C.
+ Use makr-defun for Fortran.
+ (time-string): defvar deleted.
+ (edt-display-the-time): Don't set time-string.
+
+ * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list.
+
+ * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
+ Don't warn when name is not constant
+ or for defining the group `emacs'.
+
+ * tooltip.el (gud-tooltip-mode): Add defvar.
+
+ * startup.el (default-frame-background-mode): Add defvar.
+
+ * smerge-mode.el (smerge-mode): Add duplicate defvar near top.
+
+ * info.el (tool-bar-map): Add defvar.
+
+ * dired.el (dnd-protocol-alist): Add defvar.
+
+ * dired-aux.el (dired-query): Display question with answer, when
+ the user answers.
+
+ * custom.el (custom-add-option): Doc fix.
+
+ * bookmark.el (Info-current-node, Info-suffix-list): Add defvars.
+
+2005-07-03 Eli Zaretskii <eliz@gnu.org>
+
+ * font-lock.el (font-lock-regexp-grouping-construct): Fix the
+ bogus name from the last change.
+
+2005-07-02 Luc Teirlinck <teirllm@auburn.edu>
+
+ * custom.el (custom-declare-variable): Fix typos in comment.
+ (custom-known-themes): Doc fix.
+ (custom-theme-directory): New defcustom.
+ (require-theme): Make it check `custom-theme-directory'.
+
+ * cus-theme.el (custom-new-theme-mode): New function.
+ (custom-theme-name, custom-theme-variables, custom-theme-faces)
+ (custom-theme-description): Add compiler defvars.
+ (customize-create-theme): Add doc to the "*New Custom Theme*"
+ buffer. Use `custom-new-theme-mode'.
+ (custom-theme-write): Put the created buffer in emacs-lisp-mode
+ and save it to the `custom-theme-directory'. Make this the
+ default directory of the buffer.
+
+2005-07-02 David Hunter <hunterd_42@comcast.net> (tiny change)
+
+ * progmodes/flymake.el (flymake-mode, flymake-mode-off):
+ Fix unbalanced parentheses.
+
+2005-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body
+ into flymake-mode and delegate to flymake-mode.
+
+ * find-file.el (ff-which-function-are-we-in): Clean up.
+
+2005-07-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * replace.el (occur-rename-buffer): Fix docstring.
+
+ * emulation/edt.el (*EDT-keys*, edt-default-global-map)
+ (edt-last-copied-word, edt-learn-macro-count)
+ (edt-orig-page-delimiter, edt-orig-transient-mark-mode)
+ (edt-rect-start-point, edt-user-global-map, rect-start-point)
+ (time-string, zmacs-region-stays):
+ * emulation/edt-mapper.el (edt-save-function-key-map)
+ (EDT-key-name): `defvar' to silence the byte-compiler.
+
+2005-07-02 Martin Rudalics <rudalics@gmx.at> (tiny change)
+
+ * font-lock.el (font-lock-regexp-grouping-backslash): Rename from
+ font-lock-regexp-backslash. Doc fix.
+ (font-lock-regexp-backslash-grouping-construct): Rename from
+ font-lock-regexp-backslash-construct. Doc fix.
+ (lisp-font-lock-keywords-2): Fix highlighting of ELisp regexp
+ grouping constructs.
+
+2005-07-02 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after
+ updating all the prerequisites.
+
+2005-07-01 Juanma Barranquero <lekktu@gmail.com>
+
+ * textmodes/org.el (org-agenda-start-on-weekday)
+ (org-calendar-to-agenda-key, org-agenda-sorting-strategy)
+ (org-agenda-use-time-grid, org-archive-location)
+ (org-allow-space-in-links, org-usenet-links-prefer-google)
+ (org-enable-table-editor, org-export-default-language)
+ (org-export-html-show-new-buffer, org-fill-paragraph)
+ (org-cycle, org-goto-ret, org-goto-left, org-goto-right)
+ (org-goto-quit, org-occur, org-eval-in-calendar)
+ (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message)
+ (org-agenda-diary-entry, org-remember-help)
+ (org-table-convert-region, org-at-table-p)
+ (org-table-move-row-down, org-table-move-row-up)
+ (org-table-copy-region, org-table-toggle-vline-visibility)
+ (org-table-get-stored-formulas, org-table-get-specials)
+ (org-recalc-commands, org-table-eval-formula)
+ (org-table-formula-substitute-names, orgtbl-make-binding)
+ (org-format-org-table-html, org-format-table-table-html)
+ (org-format-table-table-html-using-table-generate-source)
+ (org-customize): Fix typos in docstrings.
+ (org-level-2, org-at-timestamp-p, org-agenda-day-view)
+ (org-agenda-toggle-diary, org-agenda-toggle-time-grid)
+ (org-back-to-heading): Doc fixes.
+ (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time)
+ (org-agenda-change-all-lines, org-get-header):
+ Improve argument/docstring consistency.
+ (orgtbl-error): Fix error message.
+
+ * progmodes/flymake.el (flymake-find-possible-master-files)
+ (flymake-master-file-compare, flymake-get-line-err-count)
+ (flymake-highlight-line, flymake-gui-warnings-enabled):
+ Fix typos in docstrings.
+ (flymake-parse-line, flymake-get-project-include-dirs-function)
+ (flymake-get-prev-err-line-no, flymake-goto-prev-error):
+ Doc fixes.
+ (flymake-get-project-include-dirs-function)
+ (flymake-make-err-menu-data):
+ Improve argument/docstring consistency.
+
+2005-07-01 Lute Kamstra <lute@gnu.org>
+
+ * battery.el (battery-linux-proc-apm): Fix typo in docstring.
+ Catch errors with ignore-errors. Use temporary buffer.
+ (battery-linux-proc-acpi): Fix typo in docstring. Document `%r'.
+
+ * facemenu.el (facemenu-unlisted-faces): Delete foreground and
+ background color faces.
+ (facemenu-set-foreground, facemenu-set-background):
+ Use facemenu-set-face-from-menu.
+ (facemenu-set-face-from-menu): Treat face names that start with
+ "fg:" or "bg:" as special.
+ (facemenu-add-new-color): Don't create faces. Simplify.
+
+2005-06-30 Richard M. Stallman <rms@gnu.org>
+
+ * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt.
+ (crm-find-current-element): Likewise.
+
+2005-06-30 Johan Bockg,Ae(Brd <bojohan@users.sourceforge.net>
+
+ * help-fns.el (help-do-arg-highlight): Regexp-quote argument names.
+
+2005-06-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * arc-mode.el (archive-extract): Make it work as a mouse binding.
+ (archive-mouse-extract): Make it an obsolete alias.
+ (archive-mode-map): Don't use archive-mouse-extract any more.
+ (archive-mode, archive-extract): write-contents-hooks ->
+ write-contents-functions.
+ (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused
+ first arg.
+ (archive-rename-entry): Update the call.
+ (archive-zip-summarize): Remove unused var `method'.
+ (archive-lzh-summarize): Remove unused var `creator'.
+
+ * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the
+ dedicated frame upon exit.
+
+ * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only.
+ (archive-zip-extract, archive-zip-expunge)
+ (archive-zip-update, archive-zip-update-case): Use executable-find.
+ (archive-resummarize, archive-flag-deleted, archive-unmark-all-files):
+ Use restore-buffer-modified-p.
+ (archive-extract, archive-add-new-member, archive-write-file-member):
+ Use with-current-buffer.
+ (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist.
+
+2005-06-30 Andreas Schwab <schwab@suse.de>
+
+ * progmodes/gud.el (gud-filter): Remove unneeded progn.
+
+2005-06-30 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * progmodes/sh-script.el (sh-get-kw): `&' also separates words.
+
+2005-06-30 Juri Linkov <juri@jurta.org>
+
+ * faces.el (vertical-border): Inherit from mode-line-inactive
+ only on tty.
+
+2005-06-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for
+ example, -NLINES in the `occur' docstring).
+
+ * replace.el (occur-1): When no matches are found, do not set the
+ `buffer-read-only' and modified flags for the occur buffer,
+ because it is deleted.
+
+ * emulation/cua-base.el (cua-check-pending-input)
+ (cua-repeat-replace-region, cua-mode, cua-debug)
+ (cua-auto-tabify-rectangles, cua-inhibit-cua-keys):
+ Fix typos in docstrings.
+
+ * emulation/cua-gmrk.el (cua-toggle-global-mark)
+ (cua-cut-region-to-global-mark)
+ (cua--cut-rectangle-to-global-mark):
+ Remove period from end of messages.
+
+ * emulation/cua-rect.el (cua-do-rectangle-padding):
+ Remove period from end of messages.
+ (cua--rectangle-seq-format): Fix typo in docstring.
+ (cua-sequence-rectangle, cua-fill-char-rectangle):
+ Improve argument/docstring consistency.
+
+2005-06-29 Juri Linkov <juri@jurta.org>
+
+ * faces.el (default-frame-background-mode): New internal variable.
+ (frame-set-background-mode): Use it.
+
+ * startup.el (normal-top-level): Set default-frame-background-mode
+ instead of frame-background-mode. Before setting it, test for its
+ nil value. Remove tests for frame-background-mode and frame
+ parameter `reverse'. Add test for "unspecified-fg".
+
+ * term/xterm.el (xterm-rxvt-set-background-mode):
+ * term/rxvt.el (rxvt-set-background-mode):
+ Set default-frame-background-mode instead of frame-background-mode.
+
+2005-06-29 Juanma Barranquero <lekktu@gmail.com>
+
+ * simple.el (set-variable): Warn about obsolete user variables.
+
+ * imenu.el (imenu--completion-buffer):
+ * mouse.el (mouse-buffer-menu-alist):
+ * msb.el (msb-invisible-buffer-p):
+ * calendar/diary-lib.el (diary-header-line-format):
+ * emacs-lisp/pp.el (pp-buffer):
+ * progmodes/cperl-mode.el (cperl-do-auto-fill):
+ * textmodes/picture.el (picture-replace-match):
+ Change space constants followed by a sexp to "?\s ".
+
+ * play/decipher.el (decipher-loop-with-breaks):
+ * textmodes/texinfo.el (texinfo-insert-@item): Change space
+ constants "protected" from end of line by a comment to "?\s".
+
+2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * font-lock.el (save-buffer-state): Use `declare'.
+
+ * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
+ reset the syntax-table to cperl-mode-syntax-table.
+ (cperl-mode): Make _ into word-syntax during font-locking so "print" in
+ "foo_print_bar" is not matched as a reserved keyword.
+
+2005-06-29 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (orgtbl-setup): New function, for delayed
+ setup for the orgtbl commands.
+ (org-calc-default-modes): New option.
+ (orgtbl-make-binding): Use `defun' to get better help display.
+ (org-diary): Call `org-compile-prefix-format'.
+ (org-table-formula-substitute-names): New function.
+ (org-agenda-day-view, org-agenda-week-view): New commands.
+ (org-agenda-toggle-week-view): Command removed.
+ (org-tbl-menu): Split off from org-org-menu.
+ (org-mode): Move removal of outline-mode menus to here.
+ (org-table-formula-debug): New option.
+ (org-table-insert-row): Keep first field if just "#" or "*".
+ (org-mode): Paragraph regexps fixed.
+ (org-table-recalculate-regexp): New constant.
+ (org-table-justify-field-maybe): Avoid replace if not necessary.
+ (org-copy-special, org-cut-special): Use `call-interactively'.
+ (org-table-copy-region): Take region from `interactive' call.
+ (org-trim): Return string even if no match.
+ (org-formula): New face.
+ (org-set-font-lock-defaults): No longer highlight "FIXME".
+ But highlight formula-related fields in table.
+ (org-table-p): Use regexp, not fontification.
+ (org-table-align): Handle white space at end of line.
+ (org-table-formula-evaluate-inline): New option.
+ (org-mode): Auto-wrapping in comment lines turned off.
+ (org-table-copy-down): Evaluate only in copied field, not in
+ destination.
+ (org-table-current-formula): Variable removed.
+ (org-table-store-formulas, org-table-get-stored-formulas)
+ (org-table-modify-formulas, org-table-replace-in-formulas)
+ (org-table-maybe-eval-formula): New functions.
+ (org-table-get-formula): Modify to use stored formulas.
+ (org-table-insert-column, org-table-delete-column)
+ (org-table-move-column): Call `org-table-modify-formulas'.
+ (org-complete): Add completion for keyword formulas.
+ (orgtbl-mode): Pull orgtbl-mode-map to start of
+ minor-mode-map-alist.
+
+2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/python.el (python-check): Require `compile' before
+ modifying its variables.
+
+ * newcomment.el (comment-indent-default): Don't get fooled by an early
+ end of buffer.
+
+2005-06-28 Vinicius Jose Latorre <viniciusjl@ig.com.br>
+
+ * ps-print.el (ps-print-version): Fix version number.
+
+2005-06-28 Luc Teirlinck <teirllm@auburn.edu>
+
+ * textmodes/ispell.el (ispell-word): Remove stray parenthesis.
+
+2005-06-28 Richard M. Stallman <rms@gnu.org>
+
+ * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
+ (flyspell-local-mouse-map): Declaration deleted.
+ (flyspell-mouse-map): Bind only mouse-2.
+ (flyspell-mode-map): Don't test flyspell-use-local-map.
+ (flyspell-overlay-keymap-property-name): Var deleted.
+ (flyspell-mode-on): Don't make local bindings for
+ flyspell-mouse-map and flyspell-mode-map.
+ (make-flyspell-overlay): Unconditionally put on `keymap' text prop.
+
+ * textmodes/ispell.el (ispell-word): Do not ignore short words.
+
+ * progmodes/compile.el (compilation-next-error-function):
+ Don't switch buffers; operate on the current buffer.
+
+ * facemenu.el (facemenu-add-face): Warn when font-lock is active.
+
+ * comint.el (comint-password-prompt-regexp): Accept ", try again".
+
+ * bindings.el (global-map): Bind insertchar and its variants.
+
+2005-06-27 Richard M. Stallman <rms@gnu.org>
+
+ * textmodes/artist.el (artist-text-overwrite)
+ (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
+
+2005-06-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
+
+ * ps-print.el: It was not working the page selection for printing.
+ Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
+ (ps-print-version): New version 6.6.7.
+ (ps-end-sheet): New fun.
+ (ps-header-sheet, ps-end-job): Call it.
+
+2005-06-27 Luc Teirlinck <teirllm@auburn.edu>
+
+ * subr.el (add-to-list, add-to-ordered-list): Doc fixes.
+
+2005-06-27 Lute Kamstra <lute@gnu.org>
+
+ * facemenu.el (facemenu-unlisted-faces): Add foreground and
+ background color faces.
+ (facemenu-get-face): Delete function.
+ (facemenu-set-face-from-menu): Don't call facemenu-get-face.
+ (facemenu-add-new-color): Make second argument mandatory.
+ Create the approprate face and return it. Simplify.
+ (facemenu-set-foreground, facemenu-set-background): Don't check if
+ color is defined. Use return value of facemenu-add-new-color.
+
+2005-06-26 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gud-filter): Add missing argument to
+ with-selected-window.
+
+2005-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
+ a :require to the defcustom.
+
+ * emacs-lisp/autoload.el (make-autoload): Add the :setter for
+ defcustoms corresponding to minor modes.
+
+2005-06-26 David Ponce <david@dponce.com>
+
+ * recentf.el: Require tree-widget instead of wid-edit.
+ (recentf-filename-handler): Fix widget :type.
+ (recentf-cancel-dialog, recentf-open-more-files)
+ (recentf-open-files-action): Doc fix.
+ (recentf-dialog-goto-first): New function.
+ (recentf-dialog-mode-map): Set parent keymap first.
+ (recentf-dialog-mode): Define with define-derived-mode.
+ Don't display continuation lines in dialogs.
+ (recentf-edit-list): Rename from recentf-edit-selected-items.
+ (recentf-edit-list-select): Rename from recentf-edit-list-action.
+ Simplify.
+ (recentf-edit-list-validate): New function.
+ (recentf-edit-list): Update accordingly.
+ (recentf-open-files-item-shift): Remove.
+ (recentf-open-files-item): Convert menu elements into tree and
+ link widgets. Don't create the widgets.
+ (recentf-open-files): Update accordingly.
+ (recentf-save-list): Untabify.
+
2005-06-25 Luc Teirlinck <teirllm@auburn.edu>
+ * replace.el (keep-lines-read-args): Add INTERACTIVE arg.
+ (keep-lines): Add INTERACTIVE arg. Never delete lines only
+ partially contained in the active region. Do not take active
+ region into account when called from Lisp, unless INTERACTIVE arg
+ is non-nil. Use `forward-line' instead of `beginning-of-line' to
+ avoid trouble with fields. Make marker point nowhere when no
+ longer used. Always return nil. Doc fix.
+ (flush-lines): Add INTERACTIVE arg. Do not take active region
+ into account when called from Lisp, unless INTERACTIVE arg is
+ non-nil. Use `forward-line' instead of `beginning-of-line' to
+ avoid trouble with fields. Make marker point nowhere when no
+ longer used. Always return nil. Doc fix.
+ (how-many): Add INTERACTIVE arg. Make RSTART and REND args
+ interchangeable. Do not take active region into account when
+ called from Lisp, unless INTERACTIVE arg is non-nil. Do not print
+ message in echo area when called from Lisp, unless INTERACTIVE arg
+ is non-nil. Avoid saying "1 occurrences". Do not use markers.
+ Return the number of matches. Doc fix.
+ (occur): Doc fix.
+ (perform-replace): Make comment follow double space convention for
+ the sake of `outline-minor-mode'.
+
* faces.el (facep): Doc fix.
2005-06-25 Richard M. Stallman <rms@gnu.org>
@@ -54,7 +690,7 @@
(line-move-1): When there are overlays around, use vertical-motion.
* faces.el (escape-glyph): Use brown against light background.
- (nobreak-space): Renamed from no-break-space.
+ (nobreak-space): Rename from no-break-space.
Fix previous change.
* dired-aux.el (dired-do-copy): Fix arg prompt.
@@ -108,7 +744,7 @@
* bindings.el (propertized-buffer-identification): Use renamed
`Buffer-menu-buffer' face.
- * faces.el (vertical-border): Renamed from `vertical-divider'.
+ * faces.el (vertical-border): Rename from `vertical-divider'.
(escape-glyph): Change dark-background color back to `cyan'.
2005-06-21 Juri Linkov <juri@jurta.org>
@@ -194,8 +830,7 @@
2005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl>
- * progmodes/ps-mode.el: Update version and maintainer's email
- address.
+ * progmodes/ps-mode.el: Update version and maintainer's email address.
2005-06-18 Steve Youngs <steve@xemacs.org>
@@ -283,8 +918,8 @@
New backward-compatibility aliases for renamed faces.
(eshell-ls-decorated-name): Use renamed eshell-ls faces.
- * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove
- "-face" suffix from face name.
+ * progmodes/cc-fonts.el (c-nonbreakable-space-face):
+ Remove "-face" suffix from face name.
(c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
instead of literal face.
@@ -412,8 +1047,8 @@
ido-incomplete-regexp.
(ido-incomplete-regexp): New face.
(ido-completions): Use it.
- (ido-complete, ido-exit-minibuffer, ido-completions): Handle
- incomplete regexps.
+ (ido-complete, ido-exit-minibuffer, ido-completions):
+ Handle incomplete regexps.
(ido-completions): Add check for complete match when entering a regexp.
2005-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -442,6 +1077,11 @@
* progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
faces instead of (non-existent) variables.
+2005-06-14 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
+ (iswitchb-get-matched-buffers): Likewise. Simplify.
+
2005-06-14 Miles Bader <miles@gnu.org>
* 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 @@
(require 'timezone))
(defgroup change-log nil
- "Change log maintenance"
+ "Change log maintenance."
:group 'tools
:link '(custom-manual "(emacs)Change Log")
:prefix "change-log-"
@@ -607,13 +607,13 @@ non-nil, otherwise in local time."
(beginning-of-line 1)
(looking-at "\\s *\\(\\*\\s *\\)?$"))
(insert ": ")
- (if version (insert version ?\ )))
+ (if version (insert version ?\s)))
;; Make it easy to get rid of the function name.
(undo-boundary)
(unless (save-excursion
(beginning-of-line 1)
(looking-at "\\s *$"))
- (insert ?\ ))
+ (insert ?\s))
;; See if the prev function name has a message yet or not.
;; If not, merge the two items.
(let ((pos (point-marker)))
@@ -633,7 +633,7 @@ non-nil, otherwise in local time."
(insert "("))
(set-marker pos nil))
(insert defun "): ")
- (if version (insert version ?\ )))))
+ (if version (insert version ?\s)))))
;;;###autoload
(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 @@
(eval-when-compile (require 'cl))
(defgroup apropos nil
- "Apropos commands for users and programmers"
+ "Apropos commands for users and programmers."
:group 'help
:prefix "apropos")
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 @@
(make-temp-name
(expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp")
temporary-file-directory))
- "*Directory for temporary files made by arc-mode.el"
+ "Directory for temporary files made by arc-mode.el."
:type 'directory
:group 'archive)
@@ -218,11 +218,10 @@ Archive and member name will be added."
;; Zip archive configuration
(defcustom archive-zip-extract
- (if (locate-file "unzip" nil 'file-executable-p)
- '("unzip" "-qq" "-c")
- (if (locate-file "pkunzip" nil 'file-executable-p)
- '("pkunzip" "-e" "-o-")
- '("unzip" "-qq" "-c")))
+ (if (and (not (executable-find "unzip"))
+ (executable-find "pkunzip"))
+ '("pkunzip" "-e" "-o-")
+ '("unzip" "-qq" "-c"))
"*Program and its options to run in order to extract a zip file member.
Extraction should happen to standard output. Archive and member name will
be 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."
;; names.
(defcustom archive-zip-expunge
- (if (locate-file "zip" nil 'file-executable-p)
- '("zip" "-d" "-q")
- (if (locate-file "pkzip" nil 'file-executable-p)
- '("pkzip" "-d")
- '("zip" "-d" "-q")))
+ (if (and (not (executable-find "zip"))
+ (executable-find "pkzip"))
+ '("pkzip" "-d")
+ '("zip" "-d" "-q"))
"*Program and its options to run in order to delete zip file members.
Archive and member names will be added."
:type '(list (string :tag "Program")
@@ -253,11 +251,10 @@ Archive and member names will be added."
:group 'archive-zip)
(defcustom archive-zip-update
- (if (locate-file "zip" nil 'file-executable-p)
- '("zip" "-q")
- (if (locate-file "pkzip" nil 'file-executable-p)
- '("pkzip" "-u" "-P")
- '("zip" "-q")))
+ (if (and (not (executable-find "zip"))
+ (executable-find "pkzip"))
+ '("pkzip" "-u" "-P")
+ '("zip" "-q"))
"*Program and its options to run in order to update a zip file member.
Options should ensure that specified directory will be put into the zip
file. Archive and member name will be added."
@@ -268,11 +265,10 @@ file. Archive and member name will be added."
:group 'archive-zip)
(defcustom archive-zip-update-case
- (if (locate-file "zip" nil 'file-executable-p)
- '("zip" "-q" "-k")
- (if (locate-file "pkzip" nil 'file-executable-p)
- '("pkzip" "-u" "-P")
- '("zip" "-q" "-k")))
+ (if (and (not (executable-find "zip"))
+ (executable-find "pkzip"))
+ '("pkzip" "-u" "-P")
+ '("zip" "-q" "-k"))
"*Program and its options to run in order to update a case fiddled zip member.
Options should ensure that specified directory will be put into the zip file.
Archive and member name will be added."
@@ -371,7 +367,7 @@ Archive and member name will be added."
(substitute-key-definition 'undo 'archive-undo map global-map))
(define-key map
- (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-mouse-extract)
+ (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-extract)
(if (featurep 'xemacs)
() ; out of luck
@@ -637,8 +633,7 @@ archive.
;; Remote archives are not written by a hook.
(if archive-remote nil
- (make-local-variable 'write-contents-hooks)
- (add-hook 'write-contents-hooks 'archive-write-file))
+ (add-hook 'write-contents-functions 'archive-write-file nil t))
(make-local-variable 'require-final-newline)
(setq require-final-newline nil)
@@ -715,7 +710,7 @@ Optional argument SHUT-UP, if non-nil, means don't print messages
when parsing the archive."
(widen)
(set-buffer-multibyte nil)
- (let (buffer-read-only)
+ (let ((inhibit-read-only t))
(or shut-up
(message "Parsing archive file..."))
(buffer-disable-undo (current-buffer))
@@ -733,11 +728,11 @@ when parsing the archive."
"Recreate the contents listing of an archive."
(let ((modified (buffer-modified-p))
(no (archive-get-lineno))
- buffer-read-only)
+ (inhibit-read-only t))
(widen)
(delete-region (point-min) archive-proper-file-start)
(archive-summarize t)
- (set-buffer-modified-p modified)
+ (restore-buffer-modified-p modified)
(goto-char archive-file-list-start)
(archive-next-line no)))
@@ -751,19 +746,18 @@ when parsing the archive."
(apply
(function concat)
(mapcar
- (function
- (lambda (fil)
- ;; Using `concat' here copies the text also, so we can add
- ;; properties without problems.
- (let ((text (concat (aref fil 0) "\n")))
- (if (featurep 'xemacs)
- () ; out of luck
- (add-text-properties
- (aref fil 1) (aref fil 2)
- '(mouse-face highlight
- help-echo "mouse-2: extract this file into a buffer")
- text))
- text)))
+ (lambda (fil)
+ ;; Using `concat' here copies the text also, so we can add
+ ;; properties without problems.
+ (let ((text (concat (aref fil 0) "\n")))
+ (if (featurep 'xemacs)
+ () ; out of luck
+ (add-text-properties
+ (aref fil 1) (aref fil 2)
+ '(mouse-face highlight
+ help-echo "mouse-2: extract this file into a buffer")
+ text))
+ text))
files)))
(setq archive-file-list-end (point-marker)))
@@ -832,7 +826,7 @@ using `make-temp-file', and the generated name is returned."
(modified (buffer-modified-p))
(coding-system-for-read 'no-conversion)
(lno (archive-get-lineno))
- buffer-read-only)
+ (inhibit-read-only t))
(if unchanged nil
(setq archive-files nil)
(erase-buffer)
@@ -898,18 +892,12 @@ using `make-temp-file', and the generated name is returned."
(kill-local-variable 'buffer-file-coding-system)
(after-insert-file-set-coding (- (point-max) (point-min))))))
-(defun archive-mouse-extract (event)
- "Extract a file whose name you click on."
- (interactive "e")
- (mouse-set-point event)
- (switch-to-buffer
- (save-excursion
- (archive-extract)
- (current-buffer))))
+(define-obsolete-function-alias 'archive-mouse-extract 'archive-extract "22.1")
-(defun archive-extract (&optional other-window-p)
+(defun archive-extract (&optional other-window-p event)
"In archive mode, extract this entry of the archive into its own buffer."
- (interactive)
+ (interactive (list nil last-input-event))
+ (if event (mouse-set-point event))
(let* ((view-p (eq other-window-p 'view))
(descr (archive-get-descr))
(ename (aref descr 0))
@@ -932,8 +920,7 @@ using `make-temp-file', and the generated name is returned."
(setq archive (archive-maybe-copy archive))
(setq buffer (get-buffer-create bufname))
(setq just-created t)
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(setq buffer-file-name
(expand-file-name (concat arcname ":" iname)))
(setq buffer-file-truename
@@ -942,8 +929,7 @@ using `make-temp-file', and the generated name is returned."
(setq default-directory arcdir)
(make-local-variable 'archive-superior-buffer)
(setq archive-superior-buffer archive-buffer)
- (make-local-variable 'local-write-file-hooks)
- (add-hook 'local-write-file-hooks 'archive-write-file-member)
+ (add-hook 'write-file-functions 'archive-write-file-member nil t)
(setq archive-subfile-mode descr)
(if (and
(null
@@ -977,26 +963,22 @@ using `make-temp-file', and the generated name is returned."
(setq buffer-saved-size (buffer-size))
(normal-mode)
;; Just in case an archive occurs inside another archive.
- (if (eq major-mode 'archive-mode)
- (progn
- (setq archive-remote t)
- (if read-only-p (setq archive-read-only t))
- ;; We will write out the archive ourselves if it is
- ;; part of another archive.
- (remove-hook 'write-contents-hooks 'archive-write-file t)))
- (run-hooks 'archive-extract-hooks)
+ (when (derived-mode-p 'archive-mode)
+ (setq archive-remote t)
+ (if read-only-p (setq archive-read-only t))
+ ;; We will write out the archive ourselves if it is
+ ;; part of another archive.
+ (remove-hook 'write-contents-functions 'archive-write-file t))
+ (run-hooks 'archive-extract-hooks)
(if archive-read-only
(message "Note: altering this archive is not implemented."))))
(archive-maybe-update t))
(or (not (buffer-name buffer))
- (progn
- (if view-p
- (view-buffer buffer (and just-created 'kill-buffer))
- (if (eq other-window-p 'display)
- (display-buffer buffer)
- (if other-window-p
- (switch-to-buffer-other-window buffer)
- (switch-to-buffer buffer))))))))
+ (cond
+ (view-p (view-buffer buffer (and just-created 'kill-buffer)))
+ ((eq other-window-p 'display) (display-buffer buffer))
+ (other-window-p (switch-to-buffer-other-window buffer))
+ (t (switch-to-buffer buffer))))))
(defun archive-*-extract (archive name command)
(let* ((default-directory (file-name-as-directory archive-tmpdir))
@@ -1056,11 +1038,10 @@ using `make-temp-file', and the generated name is returned."
(read-buffer "Buffer containing archive: "
;; Find first archive buffer and suggest that
(let ((bufs (buffer-list)))
- (while (and bufs (not (eq (save-excursion
- (set-buffer (car bufs))
- major-mode)
- 'archive-mode)))
- (setq bufs (cdr bufs)))
+ (while (and bufs
+ (not (with-current-buffer (car bufs)
+ (derived-mode-p 'archive-mode))))
+ (setq bufs (cdr bufs)))
(if bufs
(car bufs)
(error "There are no archive buffers")))
@@ -1069,8 +1050,7 @@ using `make-temp-file', and the generated name is returned."
(if buffer-file-name
(file-name-nondirectory buffer-file-name)
""))))
- (save-excursion
- (set-buffer arcbuf)
+ (with-current-buffer arcbuf
(or (eq major-mode 'archive-mode)
(error "Buffer is not an archive buffer"))
(if archive-read-only
@@ -1079,12 +1059,11 @@ using `make-temp-file', and the generated name is returned."
(error "An archive buffer cannot be added to itself"))
(if (string= name "")
(error "Archive members may not be given empty names"))
- (let ((func (save-excursion (set-buffer arcbuf)
- (archive-name "add-new-member")))
+ (let ((func (with-current-buffer arcbuf
+ (archive-name "add-new-member")))
(membuf (current-buffer)))
(if (fboundp func)
- (save-excursion
- (set-buffer arcbuf)
+ (with-current-buffer arcbuf
(funcall func buffer-file-name membuf name))
(error "Adding a new member is not supported for this archive type"))))
;; -------------------------------------------------------------------------
@@ -1095,10 +1074,10 @@ using `make-temp-file', and the generated name is returned."
(save-restriction
(message "Updating archive...")
(widen)
- (let ((writer (save-excursion (set-buffer archive-superior-buffer)
- (archive-name "write-file-member")))
- (archive (save-excursion (set-buffer archive-superior-buffer)
- (archive-maybe-copy (buffer-file-name)))))
+ (let ((writer (with-current-buffer archive-superior-buffer
+ (archive-name "write-file-member")))
+ (archive (with-current-buffer archive-superior-buffer
+ (archive-maybe-copy (buffer-file-name)))))
(if (fboundp writer)
(funcall writer archive archive-subfile-mode)
(archive-*-write-file-member archive
@@ -1167,7 +1146,7 @@ With a prefix argument, mark that many files."
(beginning-of-line)
(let ((sign (if (>= p 0) +1 -1))
(modified (buffer-modified-p))
- buffer-read-only)
+ (inhibit-read-only t))
(while (not (zerop p))
(if (archive-get-descr t)
(progn
@@ -1175,7 +1154,7 @@ With a prefix argument, mark that many files."
(insert type)))
(forward-line sign)
(setq p (- p sign)))
- (set-buffer-modified-p modified))
+ (restore-buffer-modified-p modified))
(archive-next-line 0))
(defun archive-unflag (p)
@@ -1194,14 +1173,14 @@ With a prefix argument, un-mark that many members backward."
"Remove all marks."
(interactive)
(let ((modified (buffer-modified-p))
- buffer-read-only)
+ (inhibit-read-only t))
(save-excursion
(goto-char archive-file-list-start)
(while (< (point) archive-file-list-end)
(or (= (following-char) ? )
(progn (delete-char 1) (insert ? )))
(forward-line 1)))
- (set-buffer-modified-p modified)))
+ (restore-buffer-modified-p modified)))
(defun archive-mark (p)
"In archive mode, mark this member for group operations.
@@ -1306,7 +1285,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
(append (cdr command) (cons archive files))))
(defun archive-rename-entry (newname)
- "Change the name associated with this entry in the tar file."
+ "Change the name associated with this entry in the archive file."
(interactive "sNew name: ")
(if archive-read-only (error "Archive is read-only"))
(if (string= newname "")
@@ -1315,7 +1294,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
(descr (archive-get-descr)))
(if (fboundp func)
(progn
- (funcall func (buffer-file-name)
+ (funcall func
(if enable-multibyte-characters
(encode-coding-string newname file-name-coding-system)
newname)
@@ -1339,7 +1318,7 @@ as a relative change like \"g+rw\" as for chmod(2)"
"Undo in an archive buffer.
This doesn't recover lost files, it just undoes changes in the buffer itself."
(interactive)
- (let (buffer-read-only)
+ (let ((inhibit-read-only t))
(undo)))
;; -------------------------------------------------------------------------
;; Section: Arc Archives
@@ -1391,14 +1370,14 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
"\n"))
(apply 'vector (nreverse files))))
-(defun archive-arc-rename-entry (archive newname descr)
+(defun archive-arc-rename-entry (newname descr)
(if (string-match "[:\\\\/]" newname)
(error "File names in arc files must not contain a directory component"))
(if (> (length newname) 12)
(error "File names in arc files are limited to 12 characters"))
(let ((name (concat newname (substring "\0\0\0\0\0\0\0\0\0\0\0\0\0"
(length newname))))
- buffer-read-only)
+ (inhibit-read-only t))
(save-restriction
(save-excursion
(widen)
@@ -1425,7 +1404,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
(hdrlvl (char-after (+ p 20))) ;header level
thsize ;total header size (base + extensions)
- fnlen efnname fiddle ifnname width p2 creator
+ fnlen efnname fiddle ifnname width p2
neh ;beginning of next extension header (level 1 and 2)
mode modestr uid gid text dir prname
gname uname modtime moddate)
@@ -1438,13 +1417,9 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(string-as-multibyte str))))
(setq p2 (+ p 22 fnlen))) ;
(if (= hdrlvl 1)
- (progn ;specific to level 1 header
- (setq creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0))
- (setq neh (+ p2 3)))
+ (setq neh (+ p2 3)) ;specific to level 1 header
(if (= hdrlvl 2)
- (progn ;specific to level 2 header
- (setq creator (char-after (+ p 23)) )
- (setq neh (+ p 24)))))
+ (setq neh (+ p 24)))) ;specific to level 2 header
(if neh ;if level 1 or 2 we expect extension headers to follow
(let* ((ehsize (archive-l-e neh 2)) ;size of the extension header
(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."
p (1+ p)))
(logand sum 255)))
-(defun archive-lzh-rename-entry (archive newname descr)
+(defun archive-lzh-rename-entry (newname descr)
(save-restriction
(save-excursion
(widen)
@@ -1570,7 +1545,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(oldfnlen (char-after (+ p 21)))
(newfnlen (length newname))
(newhsize (+ oldhsize newfnlen (- oldfnlen)))
- buffer-read-only)
+ (inhibit-read-only t))
(if (> newhsize 255)
(error "The file name is too long"))
(goto-char (+ p 21))
@@ -1585,14 +1560,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(save-excursion
(widen)
(set-buffer-multibyte nil)
- (while files
- (let* ((fil (car files))
- (p (+ archive-proper-file-start (aref fil 4)))
+ (dolist (fil files)
+ (let* ((p (+ archive-proper-file-start (aref fil 4)))
(hsize (char-after p))
(fnlen (char-after (+ p 21)))
(p2 (+ p 22 fnlen))
(creator (if (>= (- hsize fnlen) 24) (char-after (+ p2 2)) 0))
- buffer-read-only)
+ (inhibit-read-only t))
(if (= creator ?U)
(progn
(or (numberp newval)
@@ -1604,8 +1578,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(delete-char 1)
(insert (archive-lzh-resum (1+ p) hsize)))
(message "Member %s does not have %s field"
- (aref fil 1) errtxt)))
- (setq files (cdr files))))))
+ (aref fil 1) errtxt)))))))
(defun archive-lzh-chown-entry (newuid files)
(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."
(defun archive-lzh-chmod-entry (newmode files)
(archive-lzh-ogm
;; This should work even though newmode will be dynamically accessed.
- (function (lambda (old) (archive-calc-mode old newmode t)))
+ (lambda (old) (archive-calc-mode old newmode t))
files "a unix-style mode" 8))
;; -------------------------------------------------------------------------
;; Section: Zip Archives
@@ -1631,7 +1604,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
visual)
(while (string= "PK\001\002" (buffer-substring p (+ p 4)))
(let* ((creator (char-after (+ p 5)))
- (method (archive-l-e (+ p 10) 2))
+ ;; (method (archive-l-e (+ p 10) 2))
(modtime (archive-l-e (+ p 12) 2))
(moddate (archive-l-e (+ p 14) 2))
(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."
(save-excursion
(widen)
(set-buffer-multibyte nil)
- (while files
- (let* ((fil (car files))
- (p (+ archive-proper-file-start (car (aref fil 4))))
+ (dolist (fil files)
+ (let* ((p (+ archive-proper-file-start (car (aref fil 4))))
(creator (char-after (+ p 5)))
(oldmode (aref fil 3))
(newval (archive-calc-mode oldmode newmode t))
- buffer-read-only)
+ (inhibit-read-only t))
(cond ((memq creator '(2 3)) ; Unix + VMS
(goto-char (+ p 40))
(delete-char 2)
@@ -1726,7 +1698,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(logand (logxor 1 (lsh newval -7)) 1)))
(delete-char 1))
(t (message "Don't know how to change mode for this member"))))
- (setq files (cdr files))))))
+ ))))
;; -------------------------------------------------------------------------
;; Section: Zoo Archives
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:
%B Battery status (verbose)
%b Battery status, empty means high, `-' means low,
`!' means critical, and `+' means charging
-%p battery load percentage
+%p Battery load percentage
%s Remaining time in seconds
%m Remaining time in minutes
%h Remaining time in hours
%t Remaining time in the form `h:min'"
(let (driver-version bios-version bios-interface line-status
battery-status battery-status-symbol load-percentage
- seconds minutes hours remaining-time buffer tem)
- (unwind-protect
- (save-excursion
- (setq buffer (get-buffer-create " *battery*"))
- (set-buffer buffer)
- (erase-buffer)
- (insert-file-contents "/proc/apm")
- (re-search-forward battery-linux-proc-apm-regexp)
- (setq driver-version (match-string 1))
- (setq bios-version (match-string 2))
- (setq tem (string-to-number (match-string 3) 16))
- (if (not (logand tem 2))
- (setq bios-interface "not supported")
- (setq bios-interface "enabled")
- (cond ((logand tem 16) (setq bios-interface "disabled"))
- ((logand tem 32) (setq bios-interface "disengaged")))
- (setq tem (string-to-number (match-string 4) 16))
- (cond ((= tem 0) (setq line-status "off-line"))
- ((= tem 1) (setq line-status "on-line"))
- ((= tem 2) (setq line-status "on backup")))
- (setq tem (string-to-number (match-string 6) 16))
- (if (= tem 255)
- (setq battery-status "N/A")
- (setq tem (string-to-number (match-string 5) 16))
- (cond ((= tem 0) (setq battery-status "high"
- battery-status-symbol ""))
- ((= tem 1) (setq battery-status "low"
- battery-status-symbol "-"))
- ((= tem 2) (setq battery-status "critical"
- battery-status-symbol "!"))
- ((= tem 3) (setq battery-status "charging"
- battery-status-symbol "+")))
- (setq load-percentage (match-string 7))
- (setq seconds (string-to-number (match-string 8)))
- (and (string-equal (match-string 9) "min")
- (setq seconds (* 60 seconds)))
- (setq minutes (/ seconds 60)
- hours (/ seconds 3600))
- (setq remaining-time
- (format "%d:%02d" hours (- minutes (* 60 hours))))))))
+ seconds minutes hours remaining-time tem)
+ (with-temp-buffer
+ (ignore-errors (insert-file-contents "/proc/apm"))
+ (when (re-search-forward battery-linux-proc-apm-regexp)
+ (setq driver-version (match-string 1))
+ (setq bios-version (match-string 2))
+ (setq tem (string-to-number (match-string 3) 16))
+ (if (not (logand tem 2))
+ (setq bios-interface "not supported")
+ (setq bios-interface "enabled")
+ (cond ((logand tem 16) (setq bios-interface "disabled"))
+ ((logand tem 32) (setq bios-interface "disengaged")))
+ (setq tem (string-to-number (match-string 4) 16))
+ (cond ((= tem 0) (setq line-status "off-line"))
+ ((= tem 1) (setq line-status "on-line"))
+ ((= tem 2) (setq line-status "on backup")))
+ (setq tem (string-to-number (match-string 6) 16))
+ (if (= tem 255)
+ (setq battery-status "N/A")
+ (setq tem (string-to-number (match-string 5) 16))
+ (cond ((= tem 0) (setq battery-status "high"
+ battery-status-symbol ""))
+ ((= tem 1) (setq battery-status "low"
+ battery-status-symbol "-"))
+ ((= tem 2) (setq battery-status "critical"
+ battery-status-symbol "!"))
+ ((= tem 3) (setq battery-status "charging"
+ battery-status-symbol "+")))
+ (setq load-percentage (match-string 7))
+ (setq seconds (string-to-number (match-string 8)))
+ (and (string-equal (match-string 9) "min")
+ (setq seconds (* 60 seconds)))
+ (setq minutes (/ seconds 60)
+ hours (/ seconds 3600))
+ (setq remaining-time
+ (format "%d:%02d" hours (- minutes (* 60 hours))))))))
(list (cons ?v (or driver-version "N/A"))
(cons ?V (or bios-version "N/A"))
(cons ?I (or bios-interface "N/A"))
@@ -240,12 +236,13 @@ in Linux version 2.4.20 and 2.6.0.
The following %-sequences are provided:
%c Current capacity (mAh)
+%r Current rate
%B Battery status (verbose)
%b Battery status, empty means high, `-' means low,
`!' means critical, and `+' means charging
%d Temperature (in degrees Celsius)
%L AC line status (verbose)
-%p battery load percentage
+%p Battery load percentage
%m Remaining time in minutes
%h Remaining time in hours
%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."
(define-key global-map [insert] 'overwrite-mode)
(define-key global-map [C-insert] 'kill-ring-save)
(define-key global-map [S-insert] 'yank)
+;; `insertchar' is what term.c produces. Should we change term.c
+;; to produce `insert' instead?
+(define-key global-map [insertchar] 'overwrite-mode)
+(define-key global-map [C-insertchar] 'kill-ring-save)
+(define-key global-map [S-insertchar] 'yank)
(define-key global-map [undo] 'undo)
(define-key global-map [redo] 'repeat-complex-command)
(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard
@@ -791,7 +796,6 @@ language you are using."
;; (define-key global-map [clearline] 'function-key-error)
(define-key global-map [insertline] 'open-line)
(define-key global-map [deleteline] 'kill-line)
-;; (define-key global-map [insertchar] 'function-key-error)
(define-key global-map [deletechar] 'delete-char)
;; (define-key global-map [backtab] 'function-key-error)
;; (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.")
(defvar bookmark-yank-point 0)
(defvar bookmark-current-buffer nil)
-
+(defvar Info-current-node)
+(defvar Info-suffix-list)
;; Helper functions.
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 @@
(require 'calc-macs)
(defgroup calc nil
- "GNU Calc"
+ "GNU Calc."
:prefix "calc-"
:tag "Calc"
:group 'applications)
@@ -3026,10 +3026,10 @@ See calc-keypad for details."
(setq w (cdr off)
off (car off))
(when (> off 0)
- (setq c (math-comp-concat (make-string off ? ) c)))
+ (setq c (math-comp-concat (make-string off ?\s) c)))
(or (equal calc-left-label "")
(setq c (math-comp-concat (if (eq a 'top-of-stack)
- (make-string (length calc-left-label) ? )
+ (make-string (length calc-left-label) ?\s)
calc-left-label)
c)))
(when calc-line-numbering
@@ -3044,7 +3044,7 @@ See calc-keypad for details."
(require 'calc-ext)
(setq c (list 'horiz c
(make-string (max (- w (math-comp-width c)
- (length calc-right-label)) 0) ? )
+ (length calc-right-label)) 0) ?\s)
'(break -1)
calc-right-label)))
(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'."
"Selective display active - press \"s\" in calendar \
before edit/copy"
"Diary"))
- ?\ (frame-width)))
+ ?\s (frame-width)))
"*Format of the header line displayed by `simple-diary-display'.
Only used if `diary-header-line-flag' is non-nil."
: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 @@
:group 'processes)
(defgroup comint-completion nil
- "Completion facilities in comint"
+ "Completion facilities in comint."
:group 'comint)
(defgroup comint-source nil
- "Source finding facilities in comint"
+ "Source finding facilities in comint."
:prefix "comint-"
:group 'comint)
@@ -338,8 +338,8 @@ This variable is buffer-local."
"\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\
Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\
\[Pp]assword\\( (again)\\)?\\|\
-pass phrase\\|\\(Enter\\|Repeat\\) passphrase\\)\
-\\( for [^:]+\\)?:\\s *\\'"
+pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\
+\\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'"
"*Regexp matching prompts for passwords in the inferior process.
This is used by `comint-watch-for-password-prompt'."
:type 'regexp
@@ -986,7 +986,7 @@ See also `comint-read-input-ring'."
(message "Hit space to flush")
(setq comint-dynamic-list-input-ring-window-conf conf)
(let ((ch (read-event)))
- (if (eq ch ?\ )
+ (if (eq ch ?\s)
(set-window-configuration conf)
(setq unread-command-events (list ch)))))))
@@ -2930,7 +2930,7 @@ Typing SPC flushes the help buffer."
(progn
(mouse-choose-completion first)
(set-window-configuration comint-dynamic-list-completions-config))
- (unless (eq first ?\ )
+ (unless (eq first ?\s)
(setq unread-command-events (listify-key-sequence key)))
(unless (eq first ?\t)
(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')."
(spec (nth 1 entry))
(now (nth 2 entry))
(comment (nth 3 entry)))
+ ;; If FACE is actually an alias, customize the face it
+ ;; is aliased to.
+ (if (get face 'face-alias)
+ (setq face (get face 'face-alias)))
(put face 'saved-face spec)
(put face 'saved-face-comment comment)
(custom-push-theme 'theme-face face theme 'set spec)
@@ -337,6 +341,8 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
;; Old format, a plist of FACE SPEC pairs.
(let ((face (nth 0 args))
(spec (nth 1 args)))
+ (if (get face 'face-alias)
+ (setq face (get face 'face-alias)))
(put face 'saved-face spec)
(custom-push-theme 'theme-face face theme 'set spec))
(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 @@
;;; cus-theme.el -- custom theme creation user interface
;;
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2005 Free Software Foundation, Inc.
;;
;; Author: Alex Schroeder <alex@gnu.org>
;; Maintainer: FSF
@@ -31,6 +31,18 @@
(eval-when-compile
(require 'wid-edit))
+(define-derived-mode custom-new-theme-mode nil "New-Theme"
+ "Major mode for the buffer created by `customize-create-theme'.
+Do not call this mode function yourself. It is only meant for internal
+use by `customize-create-theme'."
+ (set-keymap-parent custom-new-theme-mode-map widget-keymap))
+(put 'custom-new-theme-mode 'mode-class 'special)
+
+(defvar custom-theme-name)
+(defvar custom-theme-variables)
+(defvar custom-theme-faces)
+(defvar custom-theme-description)
+
;;;###autoload
(defun customize-create-theme ()
"Create a custom theme."
@@ -38,15 +50,23 @@
(if (get-buffer "*New Custom Theme*")
(kill-buffer "*New Custom Theme*"))
(switch-to-buffer "*New Custom Theme*")
- (kill-all-local-variables)
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (custom-new-theme-mode)
(make-local-variable 'custom-theme-name)
(make-local-variable 'custom-theme-variables)
(make-local-variable 'custom-theme-faces)
(make-local-variable 'custom-theme-description)
- (let ((inhibit-read-only t))
- (erase-buffer))
(widget-insert "This buffer helps you write a custom theme elisp file.
-This will help you share your customizations with other people.\n\n")
+This will help you share your customizations with other people.
+
+Just insert the names of all variables and faces you want the theme
+to include. Then clicking mouse-2 or pressing RET on the [Done] button
+will write a theme file that sets all these variables and faces to their
+current global values. It will write that file into the directory given
+by the variable `custom-theme-directory', usually \"~/.emacs.d/\".
+
+To undo all your edits to the buffer, use the [Reset] button.\n\n")
(widget-insert "Theme name: ")
(setq custom-theme-name
(widget-create 'editable-field
@@ -81,7 +101,6 @@ This will help you share your customizations with other people.\n\n")
(bury-buffer))
"Bury Buffer")
(widget-insert "\n")
- (use-local-map widget-keymap)
(widget-setup))
(defun custom-theme-write (&rest ignore)
@@ -90,6 +109,10 @@ This will help you share your customizations with other people.\n\n")
(variables (widget-value custom-theme-variables))
(faces (widget-value custom-theme-faces)))
(switch-to-buffer (concat name "-theme.el"))
+ (emacs-lisp-mode)
+ (unless (file-exists-p custom-theme-directory)
+ (make-directory (file-name-as-directory custom-theme-directory) t))
+ (setq default-directory custom-theme-directory)
(setq buffer-file-name (expand-file-name (concat name "-theme.el")))
(let ((inhibit-read-only t))
(erase-buffer))
@@ -100,7 +123,8 @@ This will help you share your customizations with other people.\n\n")
(insert ")\n")
(custom-theme-write-variables name variables)
(custom-theme-write-faces name faces)
- (insert "\n(provide-theme '" name ")\n")))
+ (insert "\n(provide-theme '" name ")\n")
+ (save-buffer)))
(defun custom-theme-write-variables (theme vars)
"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
`standard-value'. At the same time, SYMBOL's property `force-value' is
set to nil, as the value is no longer rogue."
;; Remember the standard setting. The value should be in the standard
- ;; theme, not in this property. However, his would require changeing
+ ;; theme, not in this property. However, this would require changing
;; the C source of defvar and others as well...
(put symbol 'standard-value (list default))
;; 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'."
(defun custom-add-option (symbol option)
"To the variable SYMBOL add OPTION.
-If SYMBOL is a hook variable, OPTION should be a hook member.
-For other types variables, the effect is undefined."
+If SYMBOL's custom type is a hook, OPTION should be a hook member.
+If SYMBOL's custom type is an alist, OPTION specifies a symbol
+to offer to the user as a possible key in the alist.
+For other custom types, this has no effect."
(let ((options (get symbol 'custom-options)))
(unless (member option options)
(put symbol 'custom-options (cons option options)))))
@@ -560,7 +562,7 @@ LOAD should be either a library file name, or a feature name."
(t (condition-case nil (load load) (error nil))))))))
(defvar custom-known-themes '(user standard)
- "Themes that have been define with `deftheme'.
+ "Themes that have been defined with `deftheme'.
The default value is the list (user standard). The theme `standard'
contains the Emacs standard settings from the original Lisp files. The
theme `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."
(defvar custom-loaded-themes nil
"Themes in the order they are loaded.")
+(defcustom custom-theme-directory
+ (if (eq system-type 'ms-dos)
+ ;; MS-DOS cannot have initial dot.
+ "~/_emacs.d/"
+ "~/.emacs.d/")
+ "Directory in which Custom theme files should be written.
+`require-theme' searches this directory in addition to load-path.
+The command `customize-create-theme' writes the files it produces
+into this directory."
+ :type 'string
+ :group 'customize
+ :version "22.1")
+
(defun custom-theme-loaded-p (theme)
"Return non-nil when THEME has been loaded."
(memq theme custom-loaded-themes))
@@ -949,8 +964,11 @@ Usually the `theme-feature' property contains a symbol created
by `custom-make-theme-feature'."
;; Note we do no check for validity of the theme here.
;; This allows to pull in themes by a file-name convention
- (require (or (get theme 'theme-feature)
- (custom-make-theme-feature theme))))
+ (let ((load-path (if (file-directory-p custom-theme-directory)
+ (cons custom-theme-directory load-path)
+ load-path)))
+ (require (or (get theme 'theme-feature)
+ (custom-make-theme-feature theme)))))
(defun custom-remove-theme (spec-alist theme)
"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 @@
;;----------------------------------------------------------------
(defgroup dabbrev nil
- "Dynamic Abbreviations"
+ "Dynamic Abbreviations."
:tag "Dynamic Abbreviations"
:group 'abbrev
:group 'convenience)
@@ -509,7 +509,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]."
(setq direction dabbrev--last-direction))
;; If the user inserts a space after expanding
;; and then asks to expand again, always fetch the next word.
- (if (and (eq (preceding-char) ?\ )
+ (if (and (eq (preceding-char) ?\s)
(markerp dabbrev--last-abbrev-location)
(marker-position dabbrev--last-abbrev-location)
(= (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 @@
;; User Options:
(defgroup columns nil
- "Prettify columns"
+ "Prettify columns."
:link '(emacs-library-link :tag "Source Lisp File" "delim-col.el")
:prefix "delimit-columns-"
:group 'internal)
@@ -424,13 +424,13 @@ START and END delimits the corners of text rectangle."
(and delimit-columns-format
(make-string (- (aref delimit-columns-max ncol)
(- (current-column) origin))
- ?\ )))
+ ?\s)))
(setq ncol (1+ ncol)))
;; Prepare last column spaces
(let ((spaces (and delimit-columns-format
(make-string (- (aref delimit-columns-max ncol)
(- (current-column) origin))
- ?\ ))))
+ ?\s))))
;; Adjust extra columns, if needed
(and delimit-columns-extra
(while (and (< (setq ncol (1+ ncol)) len)
@@ -438,7 +438,7 @@ START and END delimits the corners of text rectangle."
(delimit-columns-format spaces)
(setq spaces (and delimit-columns-format
(make-string (aref delimit-columns-max ncol)
- ?\ )))))
+ ?\s)))))
;; insert last formating
(cond ((null delimit-columns-format)
(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 @@
(defgroup diff-mode ()
- "Major mode for viewing/editing diffs"
+ "Major mode for viewing/editing diffs."
:version "21.1"
:group 'tools
:group 'diff)
@@ -640,7 +640,7 @@ else cover the whole bufer."
(while (progn (setq last-pt (point))
(= (forward-line -1) 0))
(case (char-after)
- (? (insert " ") (setq modif nil) (backward-char 1))
+ (?\s (insert " ") (setq modif nil) (backward-char 1))
(?+ (delete-region (point) last-pt) (setq modif t))
(?- (if (not modif)
(progn (forward-char 1)
@@ -665,7 +665,7 @@ else cover the whole bufer."
(let ((modif nil) (delete nil))
(while (not (eobp))
(case (char-after)
- (? (insert " ") (setq modif nil) (backward-char 1))
+ (?\s (insert " ") (setq modif nil) (backward-char 1))
(?- (setq delete t) (setq modif t))
(?+ (if (not modif)
(progn (forward-char 1)
@@ -723,7 +723,7 @@ else cover the whole bufer."
(while (< (point) pt2)
(case (char-after)
((?! ?-) (delete-char 2) (insert "-") (forward-line 1))
- (?\ ;merge with the other half of the chunk
+ (?\s ;merge with the other half of the chunk
(let* ((endline2
(save-excursion
(goto-char pt2) (forward-line 1) (point)))
@@ -733,7 +733,7 @@ else cover the whole bufer."
(insert "+"
(prog1 (buffer-substring (+ pt2 2) endline2)
(delete-region pt2 endline2))))
- (?\ ;FIXME: check consistency
+ (?\s ;FIXME: check consistency
(delete-region pt2 endline2)
(delete-char 1)
(forward-line 1))
@@ -814,7 +814,7 @@ else cover the whole bufer."
(t (when (and first last (< first last))
(insert (delete-and-extract-region first last)))
(setq first nil last nil)
- (equal ?\ c)))
+ (equal ?\s c)))
(forward-line 1))))))))))
(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.")
(sit-for 1)
(apply 'message qprompt qs-args)
(setq char (set qs-var (read-char))))
+ ;; Display the question with the answer.
+ (message (concat (apply 'format qprompt qs-args)
+ (char-to-string char)))
(memq (cdr elt) '(t y yes)))))))
;;;###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.")
nil (0 dired-ignored-face))))
)
"Additional expressions to highlight in Dired mode.")
+
+(defvar dnd-protocol-alist)
;;; Macros must be defined before they are used, for the byte compiler.
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 @@
(require 'ediff-init)
(defgroup ediff-diff nil
- "Diff related utilities"
+ "Diff related utilities."
:prefix "ediff-"
:group 'ediff)
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.")
this-command)))
(defgroup ediff-highlighting nil
- "Hilighting of difference regions in Ediff"
+ "Hilighting of difference regions in Ediff."
:prefix "ediff-"
:group 'ediff)
(defgroup ediff-merge nil
- "Merging utilities"
+ "Merging utilities."
:prefix "ediff-"
:group 'ediff)
(defgroup ediff-hook nil
- "Hooks run by Ediff"
+ "Hooks run by Ediff."
:prefix "ediff-"
:group 'ediff)
@@ -1840,7 +1840,7 @@ Unless optional argument INPLACE is non-nil, return a new string."
"Merge dir versions via ancestors")
(t
(capitalize
- (subst-char-in-string ?- ?\ (substring (symbol-name jobname) 6))))
+ (subst-char-in-string ?- ?\s (substring (symbol-name jobname) 6))))
))
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 @@
(provide 'ediff-mult)
(defgroup ediff-mult nil
- "Multi-file and multi-buffer processing in Ediff"
+ "Multi-file and multi-buffer processing in Ediff."
:prefix "ediff-"
:group 'ediff)
@@ -857,7 +857,7 @@ behavior."
(session-info (ediff-overlay-get overl 'ediff-meta-info))
(activity-marker (ediff-get-session-activity-marker session-info))
buffer-read-only)
- (or new-marker activity-marker (setq new-marker ?\ ))
+ (or new-marker activity-marker (setq new-marker ?\s))
(goto-char (ediff-overlay-start overl))
(if (eq (char-after (point)) new-marker)
() ; if marker shown in buffer is the same as new-marker, do nothing
@@ -872,7 +872,7 @@ behavior."
(session-info (ediff-overlay-get overl 'ediff-meta-info))
(status (ediff-get-session-status session-info))
buffer-read-only)
- (setq new-status (or new-status status ?\ ))
+ (setq new-status (or new-status status ?\s))
(goto-char (ediff-overlay-start overl))
(forward-char 1) ; status is the second char in session record
(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 @@
(provide 'ediff-ptch)
(defgroup ediff-ptch nil
- "Ediff patch support"
+ "Ediff patch support."
:tag "Patch"
:prefix "ediff-"
: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 @@
(defun ediff-compute-toolbar-width () 0))
(defgroup ediff-window nil
- "Ediff window manipulation"
+ "Ediff window manipulation."
:prefix "ediff-"
:group 'ediff
: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 @@
;; Keywords: comparing, merging, patching, tools, unix
(defconst ediff-version "2.80" "The current version of Ediff")
-(defconst ediff-date "June 3, 2005" "Date of last update")
+(defconst ediff-date "June 3, 2005" "Date of last update")
;; This file is part of GNU Emacs.
@@ -135,7 +135,7 @@
(require 'ediff-mult) ; required because of the registry stuff
(defgroup ediff nil
- "A comprehensive visual interface to diff & patch"
+ "A comprehensive visual interface to diff & patch."
:tag "Ediff"
:group 'tools)
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 @@
;; autoload.el --- maintain autoloads in loaddefs.el
-;; Copyright (C) 1991,92,93,94,95,96,97, 2001,02,03,04
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
+;; 2004, 2005 Free Software Foundation, Inc.
;; Author: Roland McGrath <roland@gnu.org>
;; Keywords: maint
@@ -123,7 +123,17 @@ or macro definition or a defcustom)."
)
`(progn
(defvar ,varname ,init ,doc)
- (custom-autoload ',varname ,file))))
+ (custom-autoload ',varname ,file)
+ ;; The use of :require in a defcustom can be annoying, especially
+ ;; when defcustoms are moved from one file to another between
+ ;; releases because the :require arg gets placed in the user's
+ ;; .emacs. In order for autoloaded minor modes not to need the
+ ;; use of :require, we arrange to store their :setter.
+ ,(let ((setter (condition-case nil
+ (cadr (memq :set form))
+ (error nil))))
+ (if (equal setter ''custom-set-minor-mode)
+ `(put ',varname 'custom-set 'custom-set-minor-mode))))))
;; nil here indicates that this is not a special autoload form.
(t nil))))
@@ -566,5 +576,5 @@ Calls `update-directory-autoloads' on the command line arguments."
(provide 'autoload)
-;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
+;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
;;; 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 @@
(defgroup bytecomp nil
- "Emacs Lisp byte-compiler"
+ "Emacs Lisp byte-compiler."
:group 'lisp)
(defcustom emacs-lisp-file-regexp (if (eq system-type 'vax-vms)
@@ -1248,7 +1248,10 @@ extra args."
(defun byte-compile-nogroup-warn (form)
(let ((keyword-args (cdr (cdr (cdr (cdr form)))))
(name (cadr form)))
- (or (plist-get keyword-args :group)
+ (or (not (eq (car-safe name) 'quote))
+ (and (eq (car form) 'custom-declare-group)
+ (equal name ''emacs))
+ (plist-get keyword-args :group)
(not (and (consp name) (eq (car name) 'quote)))
(byte-compile-warn
"%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 @@
;;; Code:
(defgroup lisp-indent nil
- "Indentation in Lisp"
+ "Indentation in Lisp."
:group 'lisp)
(defcustom lisp-indent-maximum-backtracking 3
"*Maximum depth to backtrack out from a sublist for structured indentation.
-If this variable is 0, no backtracking will occur and forms such as flet
+If this variable is 0, no backtracking will occur and forms such as `flet'
may not be correctly indented."
:type 'integer
: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:
respectively,
and return t."
- (let* ((minibuffer-string (buffer-string))
- (end-index (or (string-match "," minibuffer-string (1- (point)))
- (1- (point-max))))
+ (let* ((prompt-end (minibuffer-prompt-end))
+ (minibuffer-string (buffer-substring prompt-end (point-max)))
+ (end-index (or (string-match "," minibuffer-string (- (point) prompt-end))
+ (- (point-max) prompt-end)))
(target-string (substring minibuffer-string 0 end-index))
(index (or (string-match
(concat crm-separator "\\([^" crm-separator "]*\\)$")
@@ -213,9 +214,10 @@ and return t."
(progn
;;
(setq crm-beginning-of-element (match-beginning 1))
- (setq crm-end-of-element end-index)
+ (setq crm-end-of-element (+ end-index prompt-end))
;; string to the left of the current element
- (setq crm-left-of-element (substring target-string 0 (match-beginning 1)))
+ (setq crm-left-of-element
+ (substring target-string 0 (match-beginning 1)))
;; the current element
(setq crm-current-element (match-string 1 target-string))
;; string to the right of the current element
@@ -287,7 +289,7 @@ The meanings of the return values are:
(if completedp
(progn
- (erase-buffer)
+ (delete-region (minibuffer-prompt-end) (point-max))
(insert crm-left-of-element completion)
;; (if crm-complete-up-to-point
;; (insert crm-separator))
@@ -480,7 +482,7 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
(setq result
(catch 'crm-exit
- (if (eq (point-min) (point-max))
+ (if (eq (minibuffer-prompt-end) (point-max))
(throw 'crm-exit t))
;; TODO: this test is suspect?
@@ -506,7 +508,8 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
nil
(if (equal result "check")
(let ((check-strings
- (crm-strings-completed-p (buffer-string))))
+ (crm-strings-completed-p
+ (buffer-substring (minibuffer-prompt-end) (point-max)))))
;; check all of minibuffer
(if (eq check-strings t)
(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."
;; would need to be de-iconified anyway immediately
;; after when we re-enter the debugger, so iconifying it
;; here would cause flashing.
- (bury-buffer))))
+ ;; Use quit-window rather than bury-buffer to quieten
+ ;; Drew Adams. --Stef
+ (quit-window))))
(kill-buffer debugger-buffer))
(set-match-data debugger-outer-match-data)))
;; 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."))
:type 'boolean
,@(cond
((not (and curfile require)) nil)
- ((not (eq require t)) `(:require ,require))
- (t `(:require
- ',(intern (file-name-nondirectory
- (file-name-sans-extension curfile))))))
+ ((not (eq require t)) `(:require ,require)))
,@(nreverse extra-keywords))))
;; 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 @@
;;; Options
(defgroup edebug nil
- "A source-level debugger for Emacs Lisp"
+ "A source-level debugger for Emacs Lisp."
:group 'lisp)
@@ -519,7 +519,7 @@ the minibuffer."
(put ',(nth 1 form) 'saved-face
',(get (nth 1 form) 'saved-face))
(put ',(nth 1 form) 'customized-face
- ',(nth 2 form)))
+ ,(nth 2 form)))
(put (nth 1 form) 'saved-face nil)))))
(setq edebug-result (eval form))
(if (not edebugging)
@@ -4224,7 +4224,7 @@ reinstrument it."
(- (current-column)
(if (= ?\( (following-char)) 0 1)))))
(insert (make-string
- (max 0 (- col (- (point) start-of-count-line))) ?\ )
+ (max 0 (- col (- (point) start-of-count-line))) ?\s)
(if (and (< 0 count)
(not (memq coverage
'(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 @@
;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
(defgroup elp nil
- "Emacs Lisp Profiler"
+ "Emacs Lisp Profiler."
:group 'lisp)
(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."
;; Resetting `saved-face' temporarily to nil is needed to let
;; `defface' change the spec, regardless of a saved spec.
(prog1 `(prog1 ,form
- (put ',(eval (nth 1 form)) 'saved-face
+ (put ,(nth 1 form) 'saved-face
',(get (eval (nth 1 form)) 'saved-face))
- (put ',(eval (nth 1 form)) 'customized-face
- ',(eval (nth 2 form))))
+ (put ,(nth 1 form) 'customized-face
+ ,(nth 2 form)))
(put (eval (nth 1 form)) 'saved-face nil)))
((eq (car form) 'progn)
(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 @@
;; structure of the result with the input. Doing so recursively using
;; `maybe-cons' results in excessively deep recursion for very long
;; input forms.
-(defmacro macroexp-accumulate (#1=#:\(var\ list\) &rest body)
+(defmacro macroexp-accumulate (var+list &rest body)
"Return a list of the results of evaluating BODY for each element of LIST.
Evaluate BODY with VAR bound to each `car' from LIST, in turn.
Return a list of the values of the final form in BODY.
The list structure of the result will share as much with LIST as
possible (for instance, when BODY just returns VAR unchanged, the
-result will be eq to LIST)."
- (let ((var (car #1#))
- (list (cadr #1#))
+result will be eq to LIST).
+
+\(fn (VAR LIST) BODY...)"
+ (let ((var (car var+list))
+ (list (cadr var+list))
(shared (make-symbol "shared"))
(unshared (make-symbol "unshared"))
(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."
(save-excursion
(backward-char 1)
(skip-chars-backward "'`#^")
- (when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n)))
+ (when (and (not (bobp)) (memq (char-before) '(?\s ?\t ?\n)))
(delete-region
(point)
(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 @@
;;;==========================================================================
(defgroup testcover nil
- "Code-coverage tester"
+ "Code-coverage tester."
:group 'lisp
:prefix "testcover-"
: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'."
(defmacro with-timeout (list &rest body)
"Run BODY, but if it doesn't finish in SECONDS seconds, give up.
If we give up, we run the TIMEOUT-FORMS and return the value of the last one.
-The call should look like:
- (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
The timeout is checked whenever Emacs waits for some kind of external
-event \(such as keyboard input, input from subprocesses, or a certain time);
+event (such as keyboard input, input from subprocesses, or a certain time);
if the program loops without waiting in any way, the timeout will not
-be detected."
+be detected.
+\n(fn (SECONDS TIMEOUT-FORMS...) BODY)"
(let ((seconds (car list))
(timeout-forms (cdr list)))
`(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 @@
(require 'advice)
(defgroup trace nil
- "Tracing facility for Emacs Lisp functions"
+ "Tracing facility for Emacs Lisp functions."
:prefix "trace-"
:group 'lisp)
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."
(defcustom cua-check-pending-input t
"*If non-nil, don't override prefix key if input pending.
-It is rumoured that input-pending-p is unreliable under some window
+It is rumoured that `input-pending-p' is unreliable under some window
managers, so try setting this to nil, if prefix override doesn't work."
:type 'boolean
:group 'cua)
@@ -370,7 +370,7 @@ buffer is NOT modified, until you execute a command that actually modifies it.
"*If non-nil, automatically tabify after rectangle commands.
This basically means that `tabify' is applied to all lines that
are modified by inserting or deleting a rectangle. If value is
-an integer, cua will look for existing tabs in a region around
+an integer, CUA will look for existing tabs in a region around
the rectangle, and only do the conversion if any tabs are already
present. The number specifies then number of characters before
and after the region marked by the rectangle to search."
@@ -568,7 +568,7 @@ a cons (TYPE . COLOR), then both properties are affected."
;;; Low-level Interface
(defvar cua-inhibit-cua-keys nil
- "Buffer-local variable that may disable the cua keymappings.")
+ "Buffer-local variable that may disable the CUA keymappings.")
(make-variable-buffer-local 'cua-inhibit-cua-keys)
;;; Aux. variables
@@ -902,8 +902,8 @@ Activates the mark if a prefix argument is given."
(defun cua-repeat-replace-region (arg)
"Repeat replacing text of highlighted region with typed text.
-Searches for the next streach of text identical to the region last
-replaced by typing text over it and replaces it with the same streach
+Searches for the next stretch of text identical to the region last
+replaced by typing text over it and replaces it with the same stretch
of text."
(interactive "P")
(when cua--last-deleted-region-pos
@@ -1331,7 +1331,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
When enabled, using shifted movement keys will activate the region (and
highlight the region using `transient-mark-mode'), and typed text replaces
the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and
-paste (in addition to the normal emacs bindings)."
+paste (in addition to the normal Emacs bindings)."
:global t
:group 'cua
:set-after '(cua-enable-modeline-indications cua-use-hyper-key)
@@ -1394,7 +1394,7 @@ paste (in addition to the normal emacs bindings)."
(setq cua--saved-state nil))))
(defun cua-debug ()
- "Toggle cua debugging."
+ "Toggle CUA debugging."
(interactive)
(setq cua--debug (not cua--debug)))
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
insert the deleted or copied text before the global marker, even when the
global marker is in another buffer.
If the global marker isn't set, set the global marker at point in the current
-buffer. Otherwise jump to the global marker position and cancel it.
+buffer. Otherwise jump to the global marker position and cancel it.
With prefix argument, don't jump to global mark when cancelling it."
(interactive "P")
(unless cua--global-mark-initialized
@@ -105,7 +105,7 @@ With prefix argument, don't jump to global mark when cancelling it."
(if (not buffer-read-only)
(cua--activate-global-mark t)
(ding)
- (message "Cannot set global mark in read-only buffer."))
+ (message "Cannot set global mark in read-only buffer"))
(when (not stay)
(pop-to-buffer (marker-buffer cua--global-mark-marker))
(goto-char cua--global-mark-marker))
@@ -165,7 +165,7 @@ With prefix argument, don't jump to global mark when cancelling it."
(if (equal (marker-buffer cua--global-mark-marker) src-buf)
(if (and (< start (marker-position cua--global-mark-marker))
(< (marker-position cua--global-mark-marker) end))
- (message "Can't move region into itself.")
+ (message "Can't move region into itself")
(let ((text (buffer-substring-no-properties start end))
(p1 (copy-marker start))
(p2 (copy-marker end)))
@@ -222,7 +222,7 @@ With prefix argument, don't jump to global mark when cancelling it."
(setq in-rect t olist nil)
(setq olist (cdr olist))))
(if in-rect
- (message "Can't move rectangle into itself.")
+ (message "Can't move rectangle into itself")
(let ((text (cua--extract-rectangle)))
(cua--delete-rectangle)
(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."
(defun cua-do-rectangle-padding ()
(interactive)
(if buffer-read-only
- (message "Cannot do padding in read-only buffer.")
+ (message "Cannot do padding in read-only buffer")
(cua--rectangle-operation nil nil t t t)
(cua--rectangle-set-corners))
(cua--keep-active))
@@ -1098,14 +1098,14 @@ The length of STRING need not be the same as the rectangle width."
'(lambda (l r)
(cua--rectangle-right (max l (+ l (length string) -1)))))))
-(defun cua-fill-char-rectangle (ch)
+(defun cua-fill-char-rectangle (character)
"Replace CUA rectangle contents with CHARACTER."
(interactive "cFill rectangle with character: ")
(cua--rectangle-operation 'clear nil t 1 nil
'(lambda (s e l r)
(delete-region s e)
(move-to-column l t)
- (insert-char ch (- r l)))))
+ (insert-char character (- r l)))))
(defun cua-replace-in-rectangle (regexp newtext)
"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."
(t nil)))))
(defvar cua--rectangle-seq-format "%d"
- "Last format used by cua-sequence-rectangle.")
+ "Last format used by `cua-sequence-rectangle'.")
-(defun cua-sequence-rectangle (first incr fmt)
+(defun cua-sequence-rectangle (first incr format)
"Resequence each line of CUA rectangle starting from FIRST.
The numbers are formatted according to the FORMAT string."
(interactive
@@ -1150,13 +1150,13 @@ The numbers are formatted according to the FORMAT string."
(string-to-number
(read-string "Increment: (1) " nil nil "1"))
(read-string (concat "Format: (" cua--rectangle-seq-format ") "))))
- (if (= (length fmt) 0)
- (setq fmt cua--rectangle-seq-format)
- (setq cua--rectangle-seq-format fmt))
+ (if (= (length format) 0)
+ (setq format cua--rectangle-seq-format)
+ (setq cua--rectangle-seq-format format))
(cua--rectangle-operation 'clear nil t 1 nil
'(lambda (s e l r)
(delete-region s e)
- (insert (format fmt first))
+ (insert (format format first))
(setq first (+ first incr)))))
(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 @@
(sit-for 600)
(kill-emacs t)))
-
;;;
;;; Decide Emacs Variant, GNU Emacs or XEmacs (aka Lucid Emacs).
;;; Determine Window System, and X Server Vendor (if appropriate).
@@ -146,6 +145,11 @@
(defvar edt-return-seq nil)
(defvar edt-term nil)
+;; To silence the byte-compiler
+(eval-when-compile
+ (defvar EDT-key-name)
+ (defvar edt-save-function-key-map))
+
;;;
;;; Determine Terminal Type (if appropriate).
;;;
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 @@
:prefix "edt-"
:group 'emulations)
+;; To silence the byte-compiler
+(eval-when-compile
+ (defvar *EDT-keys*)
+ (defvar edt-default-global-map)
+ (defvar edt-last-copied-word)
+ (defvar edt-learn-macro-count)
+ (defvar edt-orig-page-delimiter)
+ (defvar edt-orig-transient-mark-mode)
+ (defvar edt-rect-start-point)
+ (defvar edt-user-global-map)
+ (defvar rect-start-point)
+ (defvar time-string)
+ (defvar zmacs-region-stays))
+
;;;
;;; Version Information
;;;
@@ -332,6 +346,11 @@ This means that an edt-user.el file was found in the user's `load-path'.")
(defvar edt-keys-file nil
"User's custom keypad and function keys mappings to emulate LK-201 keyboard.")
+
+(defvar edt-last-copied-word nil
+ "Last word that the user copied.")
+
+(defvar zmacs-region-stays)
;;;;
;;;; EDT Emulation Commands
@@ -1621,9 +1640,8 @@ Argument NUM is the percentage into the buffer to move."
(defun edt-mark-section-wisely ()
"Mark the section in a manner consistent with the `major-mode'.
-Uses `mark-defun' for emacs-lisp and Lisp,
-mark-c-function for C,
-mark-fortran-subsystem for fortran,
+Uses `mark-defun' for Emacs-Lisp and Lisp, and for Fortran,
+`c-mark-function' for C,
and `mark-paragraph' for other modes."
(interactive)
(if edt-select-mode
@@ -1631,15 +1649,13 @@ and `mark-paragraph' for other modes."
(edt-reset))
(progn
(cond ((or (eq major-mode 'emacs-lisp-mode)
+ (eq major-mode 'fortran-mode)
(eq major-mode 'lisp-mode))
(mark-defun)
(message "Lisp defun selected"))
((eq major-mode 'c-mode)
- (mark-c-function)
+ (c-mark-function)
(message "C function selected"))
- ((eq major-mode 'fortran-mode)
- (mark-fortran-subprogram)
- (message "Fortran subprogram selected"))
(t (mark-paragraph)
(message "Paragraph selected"))))))
@@ -1766,8 +1782,7 @@ Argument NUM is the number of times to duplicate the line."
"Display the current time."
(interactive)
(if edt-x-emacs19-p (setq zmacs-region-stays t))
- (set 'time-string (current-time-string))
- (message "%s" time-string))
+ (message "%s" (current-time-string)))
;;;
;;; 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 @@
;;; Emacs version identifiers - currently referenced by
;;;
;;; o tpu-mark o tpu-set-mark
-;;; o tpu-string-prompt o tpu-regexp-prompt
-;;; o tpu-edt-on o tpu-load-xkeys
-;;; o tpu-update-mode-line o mode line section
+;;; o mode line section o tpu-load-xkeys
;;;
-(defconst tpu-emacs19-p (not (string-lessp emacs-version "19"))
- "Non-nil if we are running Lucid Emacs or version 19.")
-
-(defconst tpu-lucid-emacs19-p
- (and tpu-emacs19-p (string-match "Lucid" emacs-version))
- "Non-nil if we are running Lucid Emacs version 19.")
-
+(defconst tpu-lucid-emacs-p
+ (string-match "Lucid" emacs-version)
+ "Non-nil if we are running Lucid Emacs.")
;;;
;;; Global Keymaps
@@ -341,10 +335,10 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
"Maps the function keys on the VT100 keyboard preceded by GOLD-SS3.")
(defvar tpu-global-map nil "TPU-edt global keymap.")
-(defvar tpu-original-global-map (copy-keymap global-map)
+(defvar tpu-original-global-map global-map
"Original global keymap.")
-(and tpu-lucid-emacs19-p
+(and tpu-lucid-emacs-p
(defvar minibuffer-local-ns-map (make-sparse-keymap)
"Hack to give Lucid Emacs the same maps as ordinary Emacs."))
@@ -463,13 +457,12 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
(defun tpu-update-mode-line nil
"Make sure mode-line in the current buffer reflects all changes."
(setq tpu-mark-flag (if transient-mark-mode "" (if (tpu-mark) " @" " ")))
- (cond (tpu-emacs19-p (force-mode-line-update))
- (t (set-buffer-modified-p (buffer-modified-p)) (sit-for 0))))
+ (force-mode-line-update))
-(cond (tpu-lucid-emacs19-p
+(cond (tpu-lucid-emacs-p
(add-hook 'zmacs-deactivate-region-hook 'tpu-update-mode-line)
(add-hook 'zmacs-activate-region-hook 'tpu-update-mode-line))
- (tpu-emacs19-p
+ (t
(add-hook 'activate-mark-hook 'tpu-update-mode-line)
(add-hook 'deactivate-mark-hook 'tpu-update-mode-line)))
@@ -542,26 +535,25 @@ Otherwise sets the tpu-match markers to nil and returns nil."
(defun tpu-caar (thingy) (car (car thingy)))
(defun tpu-cadr (thingy) (car (cdr thingy)))
+(defvar zmacs-regions)
+
(defun tpu-mark nil
"TPU-edt version of the mark function.
Return the appropriate value of the mark for the current
version of Emacs."
- (cond (tpu-lucid-emacs19-p (mark (not zmacs-regions)))
- (tpu-emacs19-p (and mark-active (mark (not transient-mark-mode))))
- (t (mark))))
+ (cond (tpu-lucid-emacs-p (mark (not zmacs-regions)))
+ (t (and mark-active (mark (not transient-mark-mode))))))
(defun tpu-set-mark (pos)
"TPU-edt version of the `set-mark' function.
Sets the mark at POS and activates the region according to the
current version of Emacs."
(set-mark pos)
- (and tpu-lucid-emacs19-p pos (zmacs-activate-region)))
+ (and tpu-lucid-emacs-p pos (zmacs-activate-region)))
(defun tpu-string-prompt (prompt history-symbol)
"Read a string with PROMPT."
- (if tpu-emacs19-p
- (read-from-minibuffer prompt nil nil nil history-symbol)
- (read-string prompt)))
+ (read-from-minibuffer prompt nil nil nil history-symbol))
(defvar tpu-last-answer nil "Most recent response to tpu-y-or-n-p.")
@@ -1118,9 +1110,7 @@ kills modified buffers without asking."
(defun tpu-regexp-prompt (prompt)
"Read a string, adding 'RE' to the prompt if tpu-regexp-p is set."
(let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt)))
- (if tpu-emacs19-p
- (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)
- (read-string re-prompt))))
+ (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)))
(defun tpu-search-highlight nil
(if (tpu-check-match)
@@ -2017,8 +2007,6 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
;;;
;;; Define keymaps
;;;
-(define-key global-map "\e[" CSI-map) ; CSI map
-(define-key global-map "\eO" SS3-map) ; SS3 map
(define-key SS3-map "P" GOLD-map) ; GOLD map
(define-key GOLD-map "\e[" GOLD-CSI-map) ; GOLD-CSI map
(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."
;;;
-;;; Repeat complex command map additions to make arrows work
-;;;
-(cond ((boundp 'repeat-complex-command-map)
- (define-key repeat-complex-command-map "\e[A" 'previous-complex-command)
- (define-key repeat-complex-command-map "\e[B" 'next-complex-command)
- (define-key repeat-complex-command-map "\eOA" 'previous-complex-command)
- (define-key repeat-complex-command-map "\eOB" 'next-complex-command)))
-
-
-;;;
;;; Minibuffer map additions to make KP_enter = RET
;;;
(define-key minibuffer-local-map "\eOM" 'exit-minibuffer)
(define-key minibuffer-local-ns-map "\eOM" 'exit-minibuffer)
(define-key minibuffer-local-completion-map "\eOM" 'exit-minibuffer)
(define-key minibuffer-local-must-match-map "\eOM" 'minibuffer-complete-and-exit)
-(and (boundp 'repeat-complex-command-map)
- (define-key repeat-complex-command-map "\eOM" 'exit-minibuffer))
;;;
@@ -2407,10 +2383,10 @@ If FILE is nil, try to load a default file. The default file names are
(setq file (expand-file-name file)))
(tpu-xkeys-file
(setq file (expand-file-name tpu-xkeys-file)))
- (tpu-lucid-emacs19-p
+ (tpu-lucid-emacs-p
(setq file (convert-standard-filename
(expand-file-name "~/.tpu-lucid-keys"))))
- (tpu-emacs19-p
+ (t
(setq file (convert-standard-filename
(expand-file-name "~/.tpu-keys")))
(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
(setq-default page-delimiter "\f")
(setq-default truncate-lines t)
(setq scroll-step 1)
+ (setq tpu-original-global-map global-map)
+ (setq global-map (copy-keymap global-map))
+ (define-key global-map "\e[" CSI-map)
+ (define-key global-map "\eO" SS3-map)
(setq tpu-edt-mode t))))
(defun tpu-edt-off nil
@@ -2516,7 +2496,7 @@ If FILE is nil, try to load a default file. The default file names are
(setq-default page-delimiter "^\f")
(setq-default truncate-lines nil)
(setq scroll-step 0)
- (setq global-map (copy-keymap tpu-original-global-map))
+ (setq global-map tpu-original-global-map)
(use-global-map global-map)
(setq tpu-edt-mode nil))))
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.")
(put 'mark-defun 'point-moving-unit 'region)
(put 'mark-whole-buffer 'point-moving-unit 'region)
(put 'mark-end-of-sentence 'point-moving-unit 'region)
-(put 'mark-c-function 'point-moving-unit 'region)
+(put 'c-mark-function 'point-moving-unit 'region)
;;;
(defvar vi-mark-alist nil
@@ -637,7 +637,8 @@ insert state."
"Go to ARGth line."
(interactive "P")
(if (null (vi-raw-numeric-prefix arg))
- (end-of-buffer)
+ (with-no-warnings
+ (end-of-buffer))
(goto-line (vi-prefix-numeric-value arg))))
(defun vi-beginning-of-buffer ()
@@ -1384,7 +1385,7 @@ l(ines)."
((char-equal region ?b) (mark-whole-buffer))
((char-equal region ?p) (mark-paragraph))
((char-equal region ?P) (mark-page arg))
- ((char-equal region ?f) (mark-c-function))
+ ((char-equal region ?f) (c-mark-function))
((char-equal region ?w) (mark-word arg))
((char-equal region ?e) (mark-end-of-sentence arg))
((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."
(replace-match (vip-read-string
(format "Replace regexp \"%s\" with: " str))
nil nil))
- (replace-string
- str
- (vip-read-string (format "Replace \"%s\" with: " str)))))))
+ (with-no-warnings
+ (replace-string
+ str
+ (vip-read-string (format "Replace \"%s\" with: " str))))))))
;; basic cursor movement. j, k, l, m commands.
@@ -2830,7 +2831,8 @@ a token has type \(command, address, end-mark\) and value."
(skip-chars-forward " \t")
(if (looking-at "[\n|]") (error "Missing rhs"))
(set-mark (point))
- (end-of-buffer)
+ (with-no-warnings
+ (end-of-buffer))
(backward-char 1)
(setq string (buffer-substring (mark) (point))))
(if (not (lookup-key ex-map char))
@@ -2900,7 +2902,8 @@ a token has type \(command, address, end-mark\) and value."
(setq file (buffer-substring (point) (mark)))))
(if variant
(shell-command command t)
- (insert-file file))))
+ (with-no-warnings
+ (insert-file file)))))
(defun ex-set ()
(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 @@
(require 'viper-util)
(defgroup viper-ex nil
- "Viper support for Ex commands"
+ "Viper support for Ex commands."
:prefix "ex-"
:group 'viper)
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 @@
(defgroup viper-mouse nil
- "Support for Viper special mouse-bound commands"
+ "Support for Viper special mouse-bound commands."
:prefix "viper-"
:group 'viper)
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 @@
(defgroup eshell-var nil
"Variable interpolation is introduced whenever the '$' character
appears unquoted in any argument (except when that argument is
-surrounded by single quotes) . It may be used to interpolate a
+surrounded by single quotes). It may be used to interpolate a
variable value, a subcommand, or even the result of a Lisp form."
:tag "Variable handling"
: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 @@
;;; facemenu.el --- create a face menu for interactively adding fonts to text
-;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (c) 1994, 1995, 1996, 2001, 2002, 2005 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <boris@gnu.org>
;; Keywords: faces
@@ -99,7 +99,7 @@
(define-key global-map "\M-o" 'facemenu-keymap)
(defgroup facemenu nil
- "Create a face menu for interactively adding fonts to text"
+ "Create a face menu for interactively adding fonts to text."
:group 'faces
:prefix "facemenu-")
@@ -365,10 +365,9 @@ typing a character to insert cancels the specification."
(region-beginning))
(if (and mark-active (not current-prefix-arg))
(region-end))))
- (unless (color-defined-p color)
- (message "Color `%s' undefined" color))
- (facemenu-add-new-color color 'facemenu-foreground-menu)
- (facemenu-add-face (list (list :foreground color)) start end))
+ (facemenu-set-face-from-menu
+ (facemenu-add-new-color color 'facemenu-foreground-menu)
+ start end))
;;;###autoload
(defun facemenu-set-background (color &optional start end)
@@ -389,34 +388,41 @@ typing a character to insert cancels the specification."
(region-beginning))
(if (and mark-active (not current-prefix-arg))
(region-end))))
- (unless (color-defined-p color)
- (message "Color `%s' undefined" color))
- (facemenu-add-new-color color 'facemenu-background-menu)
- (facemenu-add-face (list (list :background color)) start end))
+ (facemenu-set-face-from-menu
+ (facemenu-add-new-color color 'facemenu-background-menu)
+ start end))
;;;###autoload
(defun facemenu-set-face-from-menu (face start end)
"Set the FACE of the region or next character typed.
-This function is designed to be called from a menu; the face to use
-is the menu item's name.
+This function is designed to be called from a menu; FACE is determined
+using the event type of the menu entry. If FACE is a symbol whose
+name starts with \"fg:\" or \"bg:\", then this functions sets the
+foreground or background to the color specified by the rest of the
+symbol's name. Any other symbol is considered the name of a face.
If the region is active (normally true except in Transient Mark mode)
and there is no prefix argument, this command sets the region to the
requested face.
Otherwise, this command specifies the face for the next character
-inserted. Moving point or switching buffers before
-typing a character to insert cancels the specification."
+inserted. Moving point or switching buffers before typing a character
+to insert cancels the specification."
(interactive (list last-command-event
(if (and mark-active (not current-prefix-arg))
(region-beginning))
(if (and mark-active (not current-prefix-arg))
(region-end))))
(barf-if-buffer-read-only)
- (facemenu-get-face face)
- (if start
- (facemenu-add-face face start end)
- (facemenu-add-face face)))
+ (facemenu-add-face
+ (let ((fn (symbol-name face)))
+ (if (string-match "\\`\\([fb]\\)g:\\(.+\\)" fn)
+ (list (list (if (string= (match-string 1 fn) "f")
+ :foreground
+ :background)
+ (match-string 2 fn)))
+ face))
+ start end))
;;;###autoload
(defun facemenu-set-invisible (start end)
@@ -615,7 +621,9 @@ effect. See `facemenu-remove-face-function'."
self-insert-face
(list self-insert-face)))
face)
- self-insert-face-command this-command)))))
+ self-insert-face-command this-command))))
+ (unless (facemenu-enable-faces-p)
+ (message "Font-lock mode will override any faces you set in this buffer")))
(defun facemenu-active-faces (face-list &optional frame)
"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."
(setq face-list (cdr face-list)))
(nreverse active-list)))
-(defun facemenu-get-face (symbol)
- "Make sure FACE exists.
-If not, create it and add it to the appropriate menu. Return the SYMBOL."
- (let ((name (symbol-name symbol)))
- (cond ((facep symbol))
- (t (make-face symbol))))
- symbol)
-
(defun facemenu-add-new-face (face)
"Add FACE (a face) to the Face menu.
@@ -715,47 +715,40 @@ This is called whenever you create a new face."
(define-key menu key (cons name function))))))
nil) ; Return nil for facemenu-iterate
-(defun facemenu-add-new-color (color &optional menu)
+(defun facemenu-add-new-color (color menu)
"Add COLOR (a color name string) to the appropriate Face menu.
-MENU should be `facemenu-foreground-menu' or
-`facemenu-background-menu'.
+MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'.
+Return the event type (a symbol) of the added menu entry.
This is called whenever you use a new color."
- (let* (name
- symbol
- docstring
- function menu-val key
- (color-p (memq menu '(facemenu-foreground-menu
- facemenu-background-menu))))
- (unless (stringp color)
- (error "%s is not a color" color))
- (setq name color
- symbol (intern name))
-
+ (let (symbol docstring)
+ (unless (color-defined-p color)
+ (error "Color `%s' undefined" color))
(cond ((eq menu 'facemenu-foreground-menu)
(setq docstring
(format "Select foreground color %s for subsequent insertion."
- name)))
+ color)
+ symbol (intern (concat "fg:" color))))
((eq menu 'facemenu-background-menu)
(setq docstring
(format "Select background color %s for subsequent insertion."
- name))))
- (cond ((facemenu-iterate ; check if equivalent face is already in the menu
- (lambda (m) (and (listp m)
- (symbolp (car m))
- (stringp (cadr m))
- (string-equal (cadr m) color)))
- (cdr (symbol-function menu))))
- (t ; No keyboard equivalent. Figure out where to put it:
- (setq key (vector symbol)
- function 'facemenu-set-face-from-menu
- menu-val (symbol-function menu))
- (if (and facemenu-new-faces-at-end
- (> (length menu-val) 3))
- (define-key-after menu-val key (cons name function)
- (car (nth (- (length menu-val) 3) menu-val)))
- (define-key menu key (cons name function))))))
- nil) ; Return nil for facemenu-iterate
+ color)
+ symbol (intern (concat "bg:" color))))
+ (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'")))
+ (unless (facemenu-iterate ; Check if color is already in the menu.
+ (lambda (m) (and (listp m)
+ (eq (car m) symbol)))
+ (cdr (symbol-function menu)))
+ ;; Color is not in the menu. Figure out where to put it.
+ (let ((key (vector symbol))
+ (function 'facemenu-set-face-from-menu)
+ (menu-val (symbol-function menu)))
+ (if (and facemenu-new-faces-at-end
+ (> (length menu-val) 3))
+ (define-key-after menu-val key (cons color function)
+ (car (nth (- (length menu-val) 3) menu-val)))
+ (define-key menu key (cons color function)))))
+ symbol))
(defun facemenu-complete-face-list (&optional oldlist)
"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."
(aliasfaces nil)
(nonaliasfaces nil)
faces)
- ;; Make a list of the named faces that the `face' property uses.
+ ;; Try to get a face name from the buffer.
+ (if (memq (intern-soft (thing-at-point 'symbol)) (face-list))
+ (setq faces (list (intern-soft (thing-at-point 'symbol)))))
+ ;; Add the named faces that the `face' property uses.
(if (and (listp faceprop)
;; Don't treat an attribute spec as a list of faces.
(not (keywordp (car faceprop)))
@@ -879,10 +882,6 @@ Otherwise, return a single face."
(push f faces)))
(if (symbolp faceprop)
(push faceprop faces)))
- ;; If there are none, try to get a face name from the buffer.
- (if (and (null faces)
- (memq (intern-soft (thing-at-point 'symbol)) (face-list)))
- (setq faces (list (intern-soft (thing-at-point 'symbol)))))
;; Build up the completion tables.
(mapatoms (lambda (s)
@@ -896,22 +895,27 @@ Otherwise, return a single face."
(unless multiple
(if faces
(setq faces (list (car faces)))))
+ (require 'crm)
(let* ((input
;; Read the input.
- (completing-read
+ (completing-read-multiple
(if (or faces string-describing-default)
(format "%s (default %s): " prompt
- (if faces (mapconcat 'symbol-name faces ", ")
+ (if faces (mapconcat 'symbol-name faces ",")
string-describing-default))
(format "%s: " prompt))
- (complete-in-turn nonaliasfaces aliasfaces) nil t))
+ (complete-in-turn nonaliasfaces aliasfaces)
+ nil t nil nil
+ (if faces (mapconcat 'symbol-name faces ","))))
;; Canonicalize the output.
(output
- (if (equal input "")
- faces
- (if (stringp input)
- (list (intern input))
- input))))
+ (cond ((or (equal input "") (equal input '("")))
+ faces)
+ ((stringp input)
+ (mapcar 'intern (split-string input ", *" t)))
+ ((listp input)
+ (mapcar 'intern input))
+ (input))))
;; Return either a list of faces or just one face.
(if multiple
output
@@ -1915,7 +1919,7 @@ created."
:group 'basic-faces)
(defface vertical-border
- '((default :inherit mode-line-inactive))
+ '((((type tty)) :inherit mode-line-inactive))
"Face used for vertical window dividers on ttys."
:version "22.1"
: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."
(defun ff-which-function-are-we-in ()
"Return the name of the function whose definition/declaration point is in.
Also remember that name in `ff-function-name'."
-
- (setq ff-function-name nil)
-
- (save-excursion
- (if (re-search-backward ada-procedure-start-regexp nil t)
- (setq ff-function-name (buffer-substring (match-beginning 0)
- (match-end 0)))
- ; we didn't find a procedure start, perhaps there is a package
- (if (re-search-backward ada-package-start-regexp nil t)
- (setq ff-function-name (buffer-substring (match-beginning 0)
- (match-end 0)))
- ))))
+ (setq ff-function-name
+ (save-excursion
+ (if (or (re-search-backward ada-procedure-start-regexp nil t)
+ (re-search-backward ada-package-start-regexp nil t))
+ (match-string 0)))))
;; bind with (setq ff-post-load-hook 'ff-set-point-accordingly)
;;
@@ -971,5 +964,5 @@ That name was previously determined by `ff-which-function-are-we-in'."
(provide 'find-file)
-;;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a
+;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a
;;; 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.")
;; We use this to preserve or protect things when modifying text properties.
(defmacro save-buffer-state (varlist &rest body)
"Bind variables according to VARLIST and eval BODY restoring buffer state."
+ (declare (indent 1) (debug let))
(let ((modified (make-symbol "modified")))
`(let* ,(append varlist
`((,modified (buffer-modified-p))
@@ -634,8 +635,6 @@ Major/minor modes can set this variable if they know which option applies.")
,@body)
(unless ,modified
(restore-buffer-modified-p nil)))))
- (put 'save-buffer-state 'lisp-indent-function 1)
- (def-edebug-spec save-buffer-state let)
;;
;; Shut up the byte compiler.
(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
"Font Lock mode face used to highlight preprocessor directives."
:group 'font-lock-highlighting-faces)
-(defface font-lock-regexp-backslash
+(defface font-lock-regexp-grouping-backslash
'((((class color) (min-colors 16)) :inherit escape-glyph)
(t :inherit bold))
- "Font Lock mode face used to highlight a backslash in Lisp regexps."
+ "Font Lock mode face for backslashes in Lisp regexp grouping constructs."
:group 'font-lock-highlighting-faces)
-(defface font-lock-regexp-backslash-construct
+(defface font-lock-regexp-grouping-construct
'((t :inherit bold))
- "Font Lock mode face used to highlight `\' constructs in Lisp regexps."
+ "Font Lock mode face used to highlight grouping constructs in Lisp regexps."
:group 'font-lock-highlighting-faces)
;;; End of Colour etc. support.
@@ -2083,22 +2082,22 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
("\\<:\\sw+\\>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\&\\sw+\\>" . font-lock-type-face)
- ;; Make regexp grouping constructs bold, so they stand out, but only
- ;; in strings.
+ ;; ELisp regexp grouping constructs
((lambda (bound)
- (if (re-search-forward "\\(\\\\\\\\\\)\\((\\(?:?:\\)?\\|[|)]\\)" bound t)
- (let ((face (get-text-property (1- (point)) 'face)))
- (if (listp face)
- (memq 'font-lock-string-face face)
- (eq 'font-lock-string-face face)))))
- (1 'font-lock-regexp-backslash prepend)
- (2 'font-lock-regexp-backslash-construct prepend))
-
- ;; Underline innermost grouping, so that you can more easily see what
- ;; belongs together. 2005-05-12: Font-lock can go into an
- ;; unbreakable endless loop on this -- something's broken.
- ;;("[\\][\\][(]\\(?:\\?:\\)?\\(\\(?:[^\\\"]+\\|[\\]\\(?:[^\\]\\|[\\][^(]\\)\\)+?\\)[\\][\\][)]"
- ;;1 'underline prepend)
+ (catch 'found
+ ;; The following loop is needed to continue searching after matches
+ ;; that do not occur in strings. The associated regexp matches one
+ ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to
+ ;; avoid highlighting, for example, `\\(' in `\\\\('.
+ (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?:\\)?\\|[|)]\\)\\)" bound t)
+ (unless (match-beginning 2)
+ (let ((face (get-text-property (1- (point)) 'face)))
+ (when (or (and (listp face)
+ (memq 'font-lock-string-face face))
+ (eq 'font-lock-string-face face))
+ (throw 'found t)))))))
+ (1 'font-lock-regexp-grouping-backslash prepend)
+ (3 'font-lock-regexp-grouping-construct prepend))
;;; This is too general -- rms.
;;; A user complained that he has functions whose names start with `do'
;;; 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 @@
+2005-07-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * gnus.el (gnus-exit):
+ * gnus-group.el (gnus-group-icons):
+ * nnmail.el (nnmail-prepare): Fix typos in docstrings.
+
+ * gnus-nocem.el (gnus-nocem):
+ * message.el (message-various, message-buffers, message-sending)
+ (message-interface, message-forwarding, message-insertion)
+ (message-headers, message-news, message-mail):
+ * pgg-gpg.el (pgg-gpg):
+ * pgg-parse.el (pgg-parse):
+ * pgg-pgp.el (pgg-pgp):
+ * pgg-pgp5.el (pgg-pgp5):
+ * pop3.el (pop3): Finish `defgroup' description with period.
+
+2005-07-01 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-art.el (article-display-face): Improve the efficiency.
+ (article-display-x-face): Ditto; remove grey x-face stuff.
+
+2005-06-30 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-art.el (article-display-face): Correct the position in
+ which Faces are inserted; use dolist.
+
+2005-06-29 Didier Verna <didier@xemacs.org>
+
+ * gnus-art.el (article-display-face): Display faces in correct
+ order.
+
+2005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify.
+ (gnus-nocem-check-article): Fetch the Type header.
+ (gnus-nocem-message-wanted-p): Fix the way to examine types.
+ (gnus-nocem-verify-issuer): Use functionp instead of fboundp.
+ (gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized.
+
+ * pgg.el (pgg-verify): Return the verification result.
+
2005-06-24 Juanma Barranquero <lekktu@gmail.com>
* 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."
;; read-only.
(if (and wash-face-p (memq 'face gnus-article-wash-types))
(gnus-delete-images 'face)
- (let (face faces)
- (save-excursion
+ (let (face faces from)
+ (save-current-buffer
(when (and wash-face-p
- (progn
- (goto-char (point-min))
- (not (re-search-forward "^Face:[\t ]*" nil t)))
- (gnus-buffer-live-p gnus-original-article-buffer))
+ (gnus-buffer-live-p gnus-original-article-buffer)
+ (not (re-search-forward "^Face:[\t ]*" nil t)))
(set-buffer gnus-original-article-buffer))
(save-restriction
(mail-narrow-to-head)
(while (gnus-article-goto-header "Face")
(push (mail-header-field-value) faces))))
- (while (setq face (pop faces))
- (let ((png (gnus-convert-face-to-png face))
- image)
- (when png
- (setq image (gnus-create-image png 'png t))
- (gnus-article-goto-header "from")
- (when (bobp)
- (insert "From: [no `from' set]\n")
- (forward-char -17))
- (gnus-add-wash-type 'face)
- (gnus-add-image 'face image)
- (gnus-put-image image nil 'face))))))
- )))
+ (when faces
+ (goto-char (point-min))
+ (let ((from (gnus-article-goto-header "from"))
+ png image)
+ (unless from
+ (insert "From:")
+ (setq from (point))
+ (insert "[no `from' set]\n"))
+ (while faces
+ (when (setq png (gnus-convert-face-to-png (pop faces)))
+ (setq image (gnus-create-image png 'png t))
+ (goto-char from)
+ (gnus-add-wash-type 'face)
+ (gnus-add-image 'face image)
+ (gnus-put-image image nil 'face))))))))))
(defun article-display-x-face (&optional force)
"Look for an X-Face header and display it if present."
@@ -2164,13 +2164,10 @@ unfolded."
(gnus-delete-images 'xface)
;; Display X-Faces.
(let (x-faces from face)
- (save-excursion
+ (save-current-buffer
(when (and wash-face-p
- (progn
- (goto-char (point-min))
- (not (re-search-forward
- "^X-Face\\(-[0-9]+\\)?:[\t ]*" nil t)))
- (gnus-buffer-live-p gnus-original-article-buffer))
+ (gnus-buffer-live-p gnus-original-article-buffer)
+ (not (re-search-forward "^X-Face:[\t ]*" nil t)))
;; If type `W f', use gnus-original-article-buffer,
;; otherwise use the current buffer because displaying
;; RFC822 parts calls this function too.
@@ -2184,35 +2181,36 @@ unfolded."
;; single external face.
(when (stringp gnus-article-x-face-command)
(setq x-faces (list (car x-faces))))
- (while (and (setq face (pop x-faces))
- gnus-article-x-face-command
- (or force
- ;; Check whether this face is censored.
- (not gnus-article-x-face-too-ugly)
- (and gnus-article-x-face-too-ugly from
- (not (string-match gnus-article-x-face-too-ugly
- from)))))
- ;; We display the face.
- (cond ((stringp gnus-article-x-face-command)
- ;; The command is a string, so we interpret the command
- ;; as a, well, command, and fork it off.
- (let ((process-connection-type nil))
- (gnus-set-process-query-on-exit-flag
- (start-process
- "article-x-face" nil shell-file-name
- shell-command-switch gnus-article-x-face-command)
- nil)
- (with-temp-buffer
- (insert face)
- (process-send-region "article-x-face"
- (point-min) (point-max)))
- (process-send-eof "article-x-face")))
- ((functionp gnus-article-x-face-command)
- ;; The command is a lisp function, so we call it.
- (funcall gnus-article-x-face-command face))
- (t
- (error "%s is not a function"
- gnus-article-x-face-command)))))))))
+ (when (and x-faces
+ gnus-article-x-face-command
+ (or force
+ ;; Check whether this face is censored.
+ (not gnus-article-x-face-too-ugly)
+ (and from
+ (not (string-match gnus-article-x-face-too-ugly
+ from)))))
+ (while (setq face (pop x-faces))
+ ;; We display the face.
+ (cond ((stringp gnus-article-x-face-command)
+ ;; The command is a string, so we interpret the command
+ ;; as a, well, command, and fork it off.
+ (let ((process-connection-type nil))
+ (gnus-set-process-query-on-exit-flag
+ (start-process
+ "article-x-face" nil shell-file-name
+ shell-command-switch gnus-article-x-face-command)
+ nil)
+ (with-temp-buffer
+ (insert face)
+ (process-send-region "article-x-face"
+ (point-min) (point-max)))
+ (process-send-eof "article-x-face")))
+ ((functionp gnus-article-x-face-command)
+ ;; The command is a lisp function, so we call it.
+ (funcall gnus-article-x-face-command face))
+ (t
+ (error "%s is not a function"
+ gnus-article-x-face-command))))))))))
(defun article-decode-mime-words ()
"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."
:type 'character)
(defgroup gnus-group-icons nil
- "Add Icons to your group buffer. "
+ "Add Icons to your group buffer."
:group 'gnus-group-visual)
(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 @@
;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005
;; Free Software Foundation, Inc.
@@ -37,7 +37,7 @@
(require 'gnus-range)
(defgroup gnus-nocem nil
- "NoCeM pseudo-cancellation treatment"
+ "NoCeM pseudo-cancellation treatment."
:group 'gnus-score)
(defcustom gnus-nocem-groups
@@ -74,12 +74,13 @@ issuer registry."
:group 'gnus-nocem
:type 'integer)
-(defcustom gnus-nocem-verifyer 'mc-verify
+(defcustom gnus-nocem-verifyer 'pgg-verify
"*Function called to verify that the NoCeM message is valid.
-One likely value is `mc-verify'. If the function in this variable
+One likely value is `pgg-verify'. If the function in this variable
isn't bound, the message will be used unconditionally."
:group 'gnus-nocem
- :type '(radio (function-item mc-verify)
+ :type '(radio (function-item pgg-verify)
+ (function-item mc-verify)
(function :tag "other")))
(defcustom gnus-nocem-liberal-fetch nil
@@ -246,7 +247,7 @@ valid issuer, which is much faster if you are selective about the issuers."
;; We get the name of the issuer.
(narrow-to-region b e)
(setq issuer (mail-fetch-field "issuer")
- type (mail-fetch-field "issuer"))
+ type (mail-fetch-field "type"))
(widen)
(if (not (gnus-nocem-message-wanted-p issuer type))
(message "invalid NoCeM issuer: %s" issuer)
@@ -267,18 +268,20 @@ valid issuer, which is much faster if you are selective about the issuers."
(while (setq condition (pop conditions))
(cond
((stringp condition)
- (setq wanted (string-match condition type)))
+ (when (string-match condition type)
+ (setq wanted t)))
((and (consp condition)
(eq (car condition) 'not)
(stringp (cadr condition)))
- (setq wanted (not (string-match (cadr condition) type))))
+ (when (string-match (cadr condition) type)
+ (setq wanted nil)))
(t
(error "Invalid NoCeM condition: %S" condition))))
wanted))))
(defun gnus-nocem-verify-issuer (person)
"Verify using PGP that the canceler is who she says she is."
- (if (fboundp gnus-nocem-verifyer)
+ (if (functionp gnus-nocem-verifyer)
(ignore-errors
(funcall gnus-nocem-verifyer))
;; 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."
(while (eq (char-after) ?\t)
(forward-line -1))
(setq id (buffer-substring (point) (1- (search-forward "\t"))))
- (unless (gnus-gethash id gnus-nocem-hashtb)
+ (unless (if gnus-nocem-hashtb
+ (gnus-gethash id gnus-nocem-hashtb)
+ (setq gnus-nocem-hashtb (gnus-make-hashtable))
+ nil)
;; only store if not already present
(gnus-sethash id t gnus-nocem-hashtb)
(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."
:group 'gnus)
(defgroup gnus-exit nil
- "Exiting gnus."
+ "Exiting Gnus."
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
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 @@
(put 'user-full-name 'custom-type 'string)
(defgroup message-various nil
- "Various Message Variables"
+ "Various Message Variables."
:link '(custom-manual "(message)Various Message Variables")
:group 'message)
(defgroup message-buffers nil
- "Message Buffers"
+ "Message Buffers."
:link '(custom-manual "(message)Message Buffers")
:group 'message)
(defgroup message-sending nil
- "Message Sending"
+ "Message Sending."
:link '(custom-manual "(message)Sending Variables")
:group 'message)
(defgroup message-interface nil
- "Message Interface"
+ "Message Interface."
:link '(custom-manual "(message)Interface")
:group 'message)
(defgroup message-forwarding nil
- "Message Forwarding"
+ "Message Forwarding."
:link '(custom-manual "(message)Forwarding")
:group 'message-interface)
(defgroup message-insertion nil
- "Message Insertion"
+ "Message Insertion."
:link '(custom-manual "(message)Insertion")
:group 'message)
(defgroup message-headers nil
- "Message Headers"
+ "Message Headers."
:link '(custom-manual "(message)Message Headers")
:group 'message)
(defgroup message-news nil
- "Composing News Messages"
+ "Composing News Messages."
:group 'message)
(defgroup message-mail nil
- "Composing Mail Messages"
+ "Composing Mail Messages."
:group 'message)
(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 @@
:group 'nnmail)
(defgroup nnmail-prepare nil
- "Preparing (or mangling) new mail after retrival."
+ "Preparing (or mangling) new mail after retrieval."
:group 'nnmail)
(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 @@
(require 'pgg))
(defgroup pgg-gpg ()
- "GnuPG interface"
+ "GnuPG interface."
:group 'pgg)
(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 @@
(require 'custom)
(defgroup pgg-parse ()
- "OpenPGP packet parsing"
+ "OpenPGP packet parsing."
:group 'pgg)
(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 @@
(require 'pgg))
(defgroup pgg-pgp ()
- "PGP 2.* and 6.* interface"
+ "PGP 2.* and 6.* interface."
:group 'pgg)
(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 @@
(require 'pgg))
(defgroup pgg-pgp5 ()
- "PGP 5.* interface"
+ "PGP 5.* interface."
:group 'pgg)
(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."
(with-output-to-temp-buffer pgg-echo-buffer
(set-buffer standard-output)
(insert-buffer-substring (if status pgg-output-buffer
- pgg-errors-buffer)))))))
+ pgg-errors-buffer)))))
+ status))
;;;###autoload
(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 @@
(require 'mail-utils)
(defgroup pop3 nil
- "Post Office Protocol"
+ "Post Office Protocol."
:group 'mail
:group 'mail-source)
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')."
;; This is heuristic, but covers all common cases
;; except ARG1-ARG2
(concat "\\<" ; beginning of word
- "\\(?:[a-z-]+-\\)?" ; for xxx-ARG
+ "\\(?:[a-z-]*-\\)?" ; for xxx-ARG
"\\("
- arg
+ (regexp-quote arg)
"\\)"
"\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
"\\(?:-[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."
(if (not imenu-space-replacement) index-alist
(mapcar
(lambda (item)
- (cons (subst-char-in-string ?\ (aref imenu-space-replacement 0)
+ (cons (subst-char-in-string ?\s (aref imenu-space-replacement 0)
(car item))
(cdr item)))
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 @@
;;; Code:
(defgroup indent nil
- "Indentation commands"
+ "Indentation commands."
:group 'editing)
(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 @@
(eval-when-compile (require 'jka-compr))
(defgroup info nil
- "Info subsystem"
+ "Info subsystem."
:group 'help
:group 'docs)
@@ -2868,7 +2868,7 @@ Build a menu of the possible matches."
(while (progn (setq flag (not (pos-visible-in-window-p (point-max))))
(message (if flag "Type Space to see more"
"Type Space to return to Info"))
- (if (not (eq ?\ (setq ch (read-event))))
+ (if (not (eq ?\s (setq ch (read-event))))
(progn (setq unread-command-events (list ch)) nil)
flag))
(scroll-up)))
@@ -3196,6 +3196,8 @@ With a zero prefix arg, put the name inside a function call to `info'."
(put 'Info-mode 'mode-class 'special)
(put 'Info-mode 'no-clone-indirect t)
+(defvar tool-bar-map)
+
(defun Info-mode ()
"Info mode provides commands for browsing through the Info documentation tree.
Documentation 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 @@
;;; Code:
(defgroup compression nil
- "Data compression utilities"
+ "Data compression utilities."
:group 'data)
(defgroup jka-compr nil
- "jka-compr customization"
+ "jka-compr customization."
:group 'compression)
;;; 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 @@
(defgroup lpr nil
- "Print Emacs buffer on line printer"
+ "Print Emacs buffer on line printer."
:group 'wp)
@@ -291,7 +291,7 @@ The characters tab, linefeed, space, return and formfeed are not affected."
(while (re-search-forward "[\^@-\^h\^k\^n-\^_\177-\377]" nil t)
(setq c (preceding-char))
(delete-backward-char 1)
- (insert (if (< c ?\ )
+ (insert (if (< c ?\s)
(format "\\^%c" (+ c ?@))
(format "\\%02x" c))))))))
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 @@
(require 'sendmail)
(defgroup mailalias nil
- "Expanding mail aliases"
+ "Expanding mail aliases."
:group 'mail)
(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 @@
("{ \\([^\n}]+\\) }" 1 font-lock-comment-face)) ; Labels.
"Additional expressions to highlight in Rmail Summary mode.")
+(defvar rmail-summary-redo
+ "(FUNCTION . ARGS) to regenerate this Rmail summary buffer.")
+
+(defvar rmail-summary-overlay nil)
+(put 'rmail-summary-overlay 'permanent-local t)
+
+(defvar rmail-summary-mode-map nil)
+
;; Entry points for making a summary buffer.
;; Regenerate the contents of the summary
@@ -165,6 +173,8 @@ SENDERS is a string of names separated by commas."
(defvar rmail-summary-symbol-number 0)
+(defvar rmail-new-summary-line-count)
+
(defun rmail-new-summary (description redo-form function &rest args)
"Create a summary of selected messages.
DESCRIPTION makes part of the mode line of the summary buffer.
@@ -187,7 +197,7 @@ nil for FUNCTION means all messages."
(setq mesg rmail-current-message)
;; Filter the messages; make or get their summary lines.
(let ((summary-msgs ())
- (new-summary-line-count 0))
+ (rmail-new-summary-line-count 0))
(let ((msgnum 1)
(buffer-read-only nil)
(old-min (point-min-marker))
@@ -263,11 +273,11 @@ nil for FUNCTION means all messages."
(defun rmail-make-summary-line (msg)
(let ((line (or (aref rmail-summary-vector (1- msg))
(progn
- (setq new-summary-line-count
- (1+ new-summary-line-count))
- (if (zerop (% new-summary-line-count 10))
+ (setq rmail-new-summary-line-count
+ (1+ rmail-new-summary-line-count))
+ (if (zerop (% rmail-new-summary-line-count 10))
(message "Computing summary lines...%d"
- new-summary-line-count))
+ rmail-new-summary-line-count))
(rmail-make-summary-line-1 msg)))))
;; Fix up the part of the summary that says "deleted" or "unseen".
(aset line 5
@@ -842,8 +852,6 @@ Search, the `unseen' attribute is restored.")
(rmail-show-message msg-num t))))))
(rmail-summary-update-highlight nil)))))
-(defvar rmail-summary-mode-map nil)
-
(if rmail-summary-mode-map
nil
(setq rmail-summary-mode-map (make-keymap))
@@ -1037,9 +1045,6 @@ Search, the `unseen' attribute is restored.")
(define-key rmail-summary-mode-map [menu-bar move next]
'("Next" . rmail-summary-next-all))
-(defvar rmail-summary-overlay nil)
-(put 'rmail-summary-overlay 'permanent-local t)
-
(defun rmail-summary-mouse-goto-message (event)
"Select the message whose summary line you click on."
(interactive "@e")
@@ -1191,7 +1196,8 @@ move to the previous message."
(or (eq buffer (window-buffer (next-window (frame-first-window))))
(delete-other-windows)))
(pop-to-buffer rmail-view-buffer))
- (beginning-of-buffer)
+ (with-no-warnings
+ (beginning-of-buffer))
(pop-to-buffer rmail-summary-buffer))
(defun rmail-summary-bury ()
@@ -1275,12 +1281,14 @@ argument says to read a file name and use that file as the inbox."
(defun rmail-summary-first-message ()
"Show first message in Rmail file from summary buffer."
(interactive)
- (beginning-of-buffer))
+ (with-no-warnings
+ (beginning-of-buffer)))
(defun rmail-summary-last-message ()
"Show last message in Rmail file from summary buffer."
(interactive)
- (end-of-buffer)
+ (with-no-warnings
+ (end-of-buffer))
(forward-line -1))
(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 @@
;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
(defgroup supercite nil
- "Supercite package"
+ "Supercite package."
:prefix "sc-"
:group 'mail
:group 'news)
(defgroup supercite-frames nil
- "Supercite (regi) frames"
+ "Supercite (regi) frames."
:prefix "sc-"
:group 'supercite)
(defgroup supercite-attr nil
- "Supercite attributions"
+ "Supercite attributions."
:prefix "sc-"
:group 'supercite)
(defgroup supercite-cite nil
- "Supercite citings"
+ "Supercite citings."
:prefix "sc-"
:group 'supercite)
(defgroup supercite-hooks nil
- "Hooking into supercite"
+ "Hooking into supercite."
:prefix "sc-"
:group 'supercite)
@@ -1317,6 +1317,8 @@ use it instead of `sc-citation-root-regexp'."
sc-citation-delimiter
sc-citation-separator))
+(defvar filladapt-prefix-table)
+
(defun sc-setup-filladapt ()
"Setup `filladapt-prefix-table' to handle Supercited paragraphs."
(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:
-for dir in . $(WINS); do rm -f $$dir/*.elc; done
# Generate/update files for the bootstrap process.
+# When done, remove bootstrap-emacs from ../bin, so that
+# it will not be mistaken for an installed binary.
bootstrap: update-subdirs autoloads compile finder-data custom-deps
+ - $(DEL) $(EMACS)
#
# 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."
(string< (buffer-name elt1) (buffer-name elt2))))))
(setq tail buffers)
(while tail
- (or (eq ?\ (aref (buffer-name (car tail)) 0))
+ (or (eq ?\s (aref (buffer-name (car tail)) 0))
(setq maxlen
(max maxlen
(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
"Return t if optional BUFFER is an \"invisible\" buffer.
If the argument is left out or nil, then the current buffer is considered."
(and (> (length (buffer-name buffer)) 0)
- (eq ?\ (aref (buffer-name buffer) 0))))
+ (eq ?\s (aref (buffer-name buffer) 0))))
(defun msb--strip-dir (dir)
"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."
;; --- Default MS-Windows browser ---
+(defvar dos-windows-version)
+
(defun browse-url-default-windows-browser (url &optional new-window)
(interactive (browse-url-interactive-arg "URL: "))
(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 @@
;;;; user defined variables
(defgroup remote-compile nil
- "Run a compilation on a remote machine"
+ "Run a compilation on a remote machine."
:group 'processes
:group 'tools)
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 @@
(require 'shell)
(defgroup rlogin nil
- "Remote login interface"
+ "Remote login interface."
:group 'processes
:group 'unix)
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."
(or (match-end 1) (/= (current-column) (current-indentation))))
0
(when (or (/= (current-column) (current-indentation))
- (and (> comment-add 0) (looking-at "\\s<\\S<")))
+ (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)")))
comment-column)))
;;;###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 @@
;; Jan '86, Some new features added by Peter Desnoyers and rewritten by RMS.
(defgroup outlines nil
- "Support for hierarchical outlining"
+ "Support for hierarchical outlining."
:prefix "outline-"
:group 'editing)
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 @@
;;; Code:
(defgroup outlines nil
- "Support for hierarchical outlining"
+ "Support for hierarchical outlining."
:prefix "outline-"
:group 'editing)
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 @@
(require 'executable)
(defgroup pcmpl-cvs nil
- "Functions for dealing with CVS completions"
+ "Functions for dealing with CVS completions."
:group 'pcomplete)
;; 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 @@
(require 'pcomplete)
(defgroup pcmpl-rpm nil
- "Functions for dealing with CVS completions"
+ "Functions for dealing with CVS completions."
:group 'pcomplete)
;; 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."
(forward-char))
(or (equal decipher-char ?\ )
(progn
- (setq decipher-char ?\ ;
+ (setq decipher-char ?\s
decipher--loop-prev-char ?\ )
(funcall func)))))))
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."
(defgroup printing nil
- "Printing Utilities group"
+ "Printing Utilities group."
:tag "Printing Utilities"
:link '(emacs-library-link :tag "Source Lisp File" "printing.el")
:prefix "pr-"
@@ -6058,7 +6058,7 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
;; header
(let ((versions (concat "printing v" pr-version
" ps-print v" ps-print-version)))
- (widget-insert (make-string (- 79 (length versions)) ?\ ) versions))
+ (widget-insert (make-string (- 79 (length versions)) ?\s) versions))
(pr-insert-italic "\nCurrent Directory : " 1)
(pr-insert-italic default-directory)
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.")
;; backward-compatibility alias
(put 'compilation-info-face 'face-alias 'compilation-info)
+(defface compilation-error-file-name
+ '((default :inherit font-lock-warning-face)
+ (((supports :underline t)) :underline t))
+ "Face for displaying file names in compilation errors."
+ :group 'font-lock-highlighting-faces
+ :version "22.1")
+
+(defface compilation-warning-file-name
+ '((default :inherit font-lock-warning-face)
+ (((supports :underline t)) :underline t))
+ "Face for displaying file names in compilation errors."
+ :group 'font-lock-highlighting-faces
+ :version "22.1")
+
+(defface compilation-info-file-name
+ '((default :inherit compilation-info)
+ (((supports :underline t)) :underline t))
+ "Face for displaying file names in compilation errors."
+ :group 'font-lock-highlighting-faces
+ :version "22.1")
+
+(defface compilation-line-number
+ '((default :inherit font-lock-variable-name-face)
+ (((supports :underline t)) :underline t))
+ "Face for displaying file names in compilation errors."
+ :group 'font-lock-highlighting-faces
+ :version "22.1")
+
+(defface compilation-column-number
+ '((default :inherit font-lock-type-face)
+ (((supports :underline t)) :underline t))
+ "Face for displaying file names in compilation errors."
+ :group 'font-lock-highlighting-faces
+ :version "22.1")
+
(defvar compilation-message-face nil
"Face name to use for whole messages.
Faces `compilation-error-face', `compilation-warning-face',
`compilation-info-face', `compilation-line-face' and
`compilation-column-face' get prepended to this, when applicable.")
-(defvar compilation-error-face 'font-lock-warning-face
+(defvar compilation-error-face 'compilation-error-file-name
"Face name to use for file name in error messages.")
-(defvar compilation-warning-face 'compilation-warning
+(defvar compilation-warning-face 'compilation-warning-file-name
"Face name to use for file name in warning messages.")
-(defvar compilation-info-face 'compilation-info
+(defvar compilation-info-face 'compilation-info-file-name
"Face name to use for file name in informational messages.")
-(defvar compilation-line-face 'font-lock-variable-name-face
+(defvar compilation-line-face 'compilation-line-number
"Face name to use for line number in message.")
-(defvar compilation-column-face 'font-lock-type-face
+(defvar compilation-column-face 'compilation-column-number
"Face name to use for column number in message.")
;; same faces as dired uses
@@ -1342,8 +1377,9 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
(force-mode-line-update)
(if (and opoint (< opoint omax))
(goto-char opoint))
- (if compilation-finish-function
- (funcall compilation-finish-function (current-buffer) msg))
+ (with-no-warnings
+ (if compilation-finish-function
+ (funcall compilation-finish-function (current-buffer) msg)))
(let ((functions compilation-finish-functions))
(while functions
(funcall (car functions) (current-buffer) msg)
@@ -1501,8 +1537,9 @@ Use this command in a compilation log buffer. Sets the mark at point there."
;;;###autoload
(defun compilation-next-error-function (n &optional reset)
+ "Advance to the next error message and visit the file where the error was.
+This is the value of `next-error-function' in Compilation buffers."
(interactive "p")
- (set-buffer (compilation-find-buffer))
(when reset
(setq compilation-current-error nil))
(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',
(t
'((cperl-load-font-lock-keywords
cperl-load-font-lock-keywords-1
- cperl-load-font-lock-keywords-2)))))
+ cperl-load-font-lock-keywords-2)
+ nil nil ((?_ . "w"))))))
(make-local-variable 'cperl-syntax-state)
(if cperl-use-syntax-table-text-property
(progn
@@ -3840,7 +3841,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
(and (buffer-modified-p)
(not modified)
(set-buffer-modified-p nil))
- (set-syntax-table cperl-mode-syntax-table))
+ ;; I do not understand what this is doing here. It breaks font-locking
+ ;; because it resets the syntax-table from font-lock-syntax-table to
+ ;; cperl-mode-syntax-table.
+ ;; (set-syntax-table cperl-mode-syntax-table)
+ )
(car err-l)))
(defun cperl-backward-to-noncomment (lim)
@@ -4350,7 +4355,7 @@ indentation and initial hashes. Behaves usually outside of comment."
fill-column)
(let ((c (save-excursion (beginning-of-line)
(cperl-to-comment-or-eol) (point)))
- (s (memq (following-char) '(?\ ?\t))) marker)
+ (s (memq (following-char) '(?\s ?\t))) marker)
(if (>= c (point))
;; Don't break line inside code: only inside comment.
nil
@@ -4361,11 +4366,11 @@ indentation and initial hashes. Behaves usually outside of comment."
(if (bolp) (progn (re-search-forward "#+[ \t]*")
(goto-char (match-end 0))))
;; Following space could have gone:
- (if (or (not s) (memq (following-char) '(?\ ?\t))) nil
+ (if (or (not s) (memq (following-char) '(?\s ?\t))) nil
(insert " ")
(backward-char 1))
;; Previous space could have gone:
- (or (memq (preceding-char) '(?\ ?\t)) (insert " "))))))
+ (or (memq (preceding-char) '(?\s ?\t)) (insert " "))))))
(defun cperl-imenu-addback (lst &optional isback name)
;; 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 @@
)
(defgroup delphi nil
- "Major mode for editing Delphi source in Emacs"
+ "Major mode for editing Delphi source in Emacs."
:version "21.1"
:group 'languages)
@@ -1510,7 +1510,7 @@ before the indent, the point is moved to the indent."
(set-marker-insertion-type marked-point t)
(when (/= old-indent new-indent)
(delete-region line-start (point))
- (insert (make-string new-indent ?\ )))
+ (insert (make-string new-indent ?\s)))
(goto-char marked-point)
(set-marker marked-point nil))))
@@ -1775,7 +1775,7 @@ An error is raised if not in a comment."
(comment-end (delphi-token-end end-comment))
(content-start (delphi-comment-content-start start-comment))
(content-indent (delphi-column-of content-start))
- (content-prefix (make-string content-indent ?\ ))
+ (content-prefix (make-string content-indent ?\s))
(content-prefix-re delphi-leading-spaces-re)
(p nil)
(marked-point (point-marker))) ; Maintain our position reliably.
@@ -1783,9 +1783,9 @@ An error is raised if not in a comment."
;; // style comments need more work.
(setq content-prefix
(let ((comment-indent (delphi-column-of comment-start)))
- (concat (make-string comment-indent ?\ ) "//"
+ (concat (make-string comment-indent ?\s) "//"
(make-string (- content-indent comment-indent 2)
- ?\ )))
+ ?\s)))
content-prefix-re (concat delphi-leading-spaces-re
"//"
delphi-spaces-re)
@@ -1857,8 +1857,8 @@ comment block. If not in a // comment, just does a normal newline."
(comment-start (delphi-token-start start-comment))
(content-start (delphi-comment-content-start start-comment))
(prefix
- (concat (make-string (delphi-column-of comment-start) ?\ ) "//"
- (make-string (- content-start comment-start 2) ?\ ))))
+ (concat (make-string (delphi-column-of comment-start) ?\s) "//"
+ (make-string (- content-start comment-start 2) ?\s))))
(delete-horizontal-space)
(newline)
(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."
;;; Interface to the command system
(defgroup postscript nil
- "PostScript Group"
+ "PostScript Group."
:tag "PostScript"
:version "20"
:group 'emacs)
(defgroup ebnf2ps nil
- "Translate an EBNF to a syntactic chart on PostScript"
+ "Translate an EBNF to a syntactic chart on PostScript."
:prefix "ebnf-"
:version "20"
:group 'wp
@@ -1150,7 +1150,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-special nil
- "Special customization"
+ "Special customization."
:prefix "ebnf-"
:tag "Special"
:version "20"
@@ -1158,7 +1158,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-except nil
- "Except customization"
+ "Except customization."
:prefix "ebnf-"
:tag "Except"
:version "20"
@@ -1166,7 +1166,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-repeat nil
- "Repeat customization"
+ "Repeat customization."
:prefix "ebnf-"
:tag "Repeat"
:version "20"
@@ -1174,7 +1174,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-terminal nil
- "Terminal customization"
+ "Terminal customization."
:prefix "ebnf-"
:tag "Terminal"
:version "20"
@@ -1182,7 +1182,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-non-terminal nil
- "Non-Terminal customization"
+ "Non-Terminal customization."
:prefix "ebnf-"
:tag "Non-Terminal"
:version "20"
@@ -1190,7 +1190,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-production nil
- "Production customization"
+ "Production customization."
:prefix "ebnf-"
:tag "Production"
:version "20"
@@ -1198,7 +1198,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-shape nil
- "Shapes customization"
+ "Shapes customization."
:prefix "ebnf-"
:tag "Shape"
:version "20"
@@ -1206,7 +1206,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-displacement nil
- "Displacement customization"
+ "Displacement customization."
:prefix "ebnf-"
:tag "Displacement"
:version "20"
@@ -1214,7 +1214,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-syntactic nil
- "Syntactic customization"
+ "Syntactic customization."
:prefix "ebnf-"
:tag "Syntactic"
:version "20"
@@ -1222,7 +1222,7 @@ Elements of ALIST that are not conses are ignored."
(defgroup ebnf-optimization nil
- "Optimization customization"
+ "Optimization customization."
:prefix "ebnf-"
:tag "Optimization"
:version "20"
@@ -4623,7 +4623,7 @@ killed after process termination."
(defun ebnf-eps-filename (str)
(let* ((len (length str))
(stri 0)
- (new (make-string len ?\ )))
+ (new (make-string len ?\s)))
(while (< stri len)
(aset new stri (aref ebnf-map-name (aref str stri)))
(setq stri (1+ stri)))
@@ -5523,7 +5523,7 @@ killed after process termination."
(defun ebnf-trim-right (str)
(let* ((len (1- (length str)))
(index len))
- (while (and (> index 0) (= (aref str index) ?\ ))
+ (while (and (> index 0) (= (aref str index) ?\s))
(setq index (1- index)))
(if (= index len)
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."
(loop for member-buffer in (ebrowse-same-tree-member-buffer-list)
do (kill-buffer member-buffer))
(erase-buffer)
- (insert-file (or buffer-file-name ebrowse--tags-file-name))
+ (with-no-warnings
+ (insert-file (or buffer-file-name ebrowse--tags-file-name)))
(ebrowse-tree-mode)
(current-buffer)))
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.")
;; Make M-x set-variable tags-file-name like M-x visit-tags-table.
;;;###autoload (put 'tags-file-name 'variable-interactive "fVisit tags table: ")
-(defgroup etags nil "Tags tables"
+(defgroup etags nil "Tags tables."
:group 'tools)
;;;###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 @@
;;; Code:
(defgroup executable nil
- "Base functionality for executable interpreter scripts"
+ "Base functionality for executable interpreter scripts."
:group 'processes)
;; This used to default to `other', but that doesn't seem to have any
@@ -230,7 +230,7 @@ executable."
(and (goto-char (match-beginning 1))
;; If the line ends in a space,
;; don't offer to change it.
- (not (= (char-after (1- (match-end 1))) ?\ ))
+ (not (= (char-after (1- (match-end 1))) ?\s))
(not (string= argument
(buffer-substring (point) (match-end 1))))
(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 @@
;;; Code:
+;;;; [[ Silence the byte-compiler
+
+(eval-when-compile
+ (defvar flymake-check-start-time)
+ (defvar flymake-check-was-interrupted)
+ (defvar flymake-err-info)
+ (defvar flymake-is-running)
+ (defvar flymake-last-change-time)
+ (defvar flymake-new-err-info))
+
+;;;; ]]
+
;;;; [[ Xemacs overlay compatibility
(if (featurep 'xemacs) (progn
(autoload 'make-overlay "overlay" "Overlay compatibility kit." t)
@@ -53,9 +65,10 @@
(defalias 'flymake-float-time
(if (fboundp 'float-time)
'float-time
- (lambda ()
- (multiple-value-bind (s0 s1 s2) (current-time)
- (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2))))))
+ (with-no-warnings
+ (lambda ()
+ (multiple-value-bind (s0 s1 s2) (current-time)
+ (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))))))
(defsubst flymake-replace-regexp-in-string (regexp rep str)
(if (fboundp 'replace-regexp-in-string)
@@ -390,7 +403,7 @@ Return t if so, nil if not."
(defun flymake-find-possible-master-files (file-name master-file-dirs masks)
"Find (by name and location) all possible master files.
-Master files are .cpp and .c for and .h. Files are searched for
+Master files are .cpp and .c for and .h. Files are searched for
starting from the .h directory and max max-level parent dirs.
File contents are not checked."
(let* ((dirs master-file-dirs)
@@ -423,9 +436,9 @@ File contents are not checked."
files))
(defun flymake-master-file-compare (file-one file-two)
- "Compare two files speccified by FILE-ONE and FILE-TWO.
+ "Compare two files specified by FILE-ONE and FILE-TWO.
This function is used in sort to move most possible file names
-to the beginning of the list (File.h -> File.cpp moved to top."
+to the beginning of the list (File.h -> File.cpp moved to top)."
(and (equal (file-name-sans-extension flymake-included-file-name)
(file-name-sans-extension (file-name-nondirectory file-one)))
(not (equal file-one file-two))))
@@ -750,7 +763,7 @@ It's flymake process filter."
(defun flymake-get-line-err-count (line-err-info-list type)
"Return number of errors of specified TYPE.
-Value of TYPE is eigher e or w."
+Value of TYPE is either \"e\" or \"w\"."
(let* ((idx 0)
(count (length line-err-info-list))
(err-count 0))
@@ -859,7 +872,7 @@ Return t if it has at least one flymake overlay, nil if no overlay."
(defun flymake-highlight-line (line-no line-err-info-list)
"Highlight line LINE-NO in current buffer.
-Perhaps use text from LINE-ERR-INFO-ILST to enhance highlighting."
+Perhaps use text from LINE-ERR-INFO-LIST to enhance highlighting."
(goto-line line-no)
(let* ((line-beg (flymake-line-beginning-position))
(line-end (flymake-line-end-position))
@@ -995,8 +1008,8 @@ from compile.el")
;;)
(defun flymake-parse-line (line)
- "Parse LINE to see if it is an error of warning.
-Return its components if so, nil if no."
+ "Parse LINE to see if it is an error or warning.
+Return its components if so, nil otherwise."
(let ((raw-file-name nil)
(line-no 0)
(err-type "e")
@@ -1110,7 +1123,7 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
inc-dirs)))
(defcustom flymake-get-project-include-dirs-function 'flymake-get-project-include-dirs-imp
- "Function used to get project inc dirs, one paramater: basedir name."
+ "Function used to get project include dirs, one parameter: basedir name."
:group 'flymake
:type 'function)
@@ -1138,24 +1151,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
(let* ((include-dirs (append '(".") (flymake-get-project-include-dirs base-dir) (flymake-get-system-include-dirs))))
include-dirs))
-(defun flymake-find-file (rel-file-name include-dirs)
- "Iterate through include-dirs to find file REL-FILE-NAME.
-Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if not."
- (let* ((count (length include-dirs))
- (idx 0)
- (found nil)
- (full-file-name rel-file-name))
-
- (while (and (not found) (< idx count))
- (let* ((dir (nth idx include-dirs)))
- (setq full-file-name (concat dir "/" rel-file-name))
- (when (file-exists-p full-file-name)
- (setq found t)))
- (setq idx (1+ idx)))
- (if found
- full-file-name
- rel-file-name)))
-
(defun flymake-restore-formatting (source-buffer)
"Remove any formatting made by flymake."
)
@@ -1366,7 +1361,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
(flymake-log 1 "no errors for line %d" line-no))))
(defun flymake-make-err-menu-data (line-no line-err-info-list)
- "Make a (menu-title (item-title item-action)*) list with errors/warnings from line-err-info."
+ "Make a (menu-title (item-title item-action)*) list with errors/warnings from LINE-ERR-INFO-LIST."
(let* ((menu-items nil))
(when line-err-info-list
(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
(message-box warning))
(defcustom flymake-gui-warnings-enabled t
- "Enables/disables gui warnings."
+ "Enables/disables GUI warnings."
:group 'flymake
:type 'boolean)
@@ -1445,61 +1440,62 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
(flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s"
(buffer-name buffer) status warning)))
+(defcustom flymake-start-syntax-check-on-find-file t
+ "Start syntax check on find file."
+ :group 'flymake
+ :type 'boolean)
+
;;;###autoload
(define-minor-mode flymake-mode
"Minor mode to do on-the-fly syntax checking.
When called interactively, toggles the minor mode.
With arg, turn Flymake mode on if and only if arg is positive."
:group 'flymake :lighter flymake-mode-line
- (if flymake-mode
- (if (flymake-can-syntax-check-file (buffer-file-name))
- (flymake-mode-on)
- (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name)))
- (flymake-mode-off)))
+ (cond
+
+ ;; Turning the mode ON.
+ (flymake-mode
+ (if (not (flymake-can-syntax-check-file buffer-file-name))
+ (flymake-log 2 "flymake cannot check syntax in buffer %s" (buffer-name))
+ (add-hook 'after-change-functions 'flymake-after-change-function nil t)
+ (add-hook 'after-save-hook 'flymake-after-save-hook nil t)
+ (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t)
+ ;;+(add-hook 'find-file-hook 'flymake-find-file-hook)
+
+ (flymake-report-status (current-buffer) "" "")
+
+ (setq flymake-timer
+ (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
+
+ (when flymake-start-syntax-check-on-find-file
+ (flymake-start-syntax-check-for-current-buffer))))
+
+ ;; Turning the mode OFF.
+ (t
+ (remove-hook 'after-change-functions 'flymake-after-change-function t)
+ (remove-hook 'after-save-hook 'flymake-after-save-hook t)
+ (remove-hook 'kill-buffer-hook 'flymake-kill-buffer-hook t)
+ ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t)
-(defcustom flymake-start-syntax-check-on-find-file t
- "Start syntax check on find file."
- :group 'flymake
- :type 'boolean)
+ (flymake-delete-own-overlays (current-buffer))
+
+ (when flymake-timer
+ (cancel-timer flymake-timer)
+ (setq flymake-timer nil))
+
+ (setq flymake-is-running nil))))
;;;###autoload
(defun flymake-mode-on ()
"Turn flymake mode on."
- (when (not flymake-mode)
- (make-local-variable 'after-change-functions)
- (setq after-change-functions (cons 'flymake-after-change-function after-change-functions))
- (add-hook 'after-save-hook 'flymake-after-save-hook)
- (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook)
- ;;+(add-hook 'find-file-hook 'flymake-find-file-hook)
-
- (flymake-report-status (current-buffer) "" "")
-
- (setq flymake-timer
- (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
-
- (setq flymake-mode t)
- (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name (current-buffer)))
- (when flymake-start-syntax-check-on-find-file
- (flymake-start-syntax-check-for-current-buffer)))) ; will be started by on-load hook
+ (flymake-mode 1)
+ (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name)))
;;;###autoload
(defun flymake-mode-off ()
"Turn flymake mode off."
- (when flymake-mode
- (setq after-change-functions (delq 'flymake-after-change-function after-change-functions))
- (remove-hook 'after-save-hook (function flymake-after-save-hook) t)
- (remove-hook 'kill-buffer-hook (function flymake-kill-buffer-hook) t)
- ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t)
-
- (flymake-delete-own-overlays (current-buffer))
-
- (when flymake-timer
- (cancel-timer flymake-timer)
- (setq flymake-timer nil))
-
- (setq flymake-is-running nil)
- (setq flymake-mode nil)
- (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name (current-buffer)))))
+ (flymake-mode 0)
+ (flymake-log 1 "flymake mode turned OFF for buffer %s" (buffer-name)))
(defcustom flymake-start-syntax-check-on-newline t
"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."
;;+ (flymake-start-syntax-check-for-current-buffer)
;;+)
(when (and (not (local-variable-p 'flymake-mode (current-buffer)))
- (flymake-can-syntax-check-file (buffer-file-name (current-buffer))))
+ (flymake-can-syntax-check-file buffer-file-name))
(flymake-mode)
(flymake-log 3 "automatically turned ON flymake mode")))
@@ -1557,7 +1553,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
(flymake-er-get-line (nth idx err-info-list))))))
(defun flymake-get-prev-err-line-no (err-info-list line-no)
- "Return prev line with error."
+ "Return previous line with error."
(when err-info-list
(let* ((count (length err-info-list)))
(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."
(flymake-log 1 "no errors in current buffer"))))
(defun flymake-goto-prev-error ()
- "Go to prev error in err ring."
+ "Go to previous error in err ring."
(interactive)
(let ((line-no (flymake-get-prev-err-line-no flymake-err-info (flymake-current-line-no))))
(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 @@
;; Maintainer: FSF
;; Keywords: unix, tools
-;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04 Free Software Foundation, Inc.
+;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04,05 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -2534,7 +2534,7 @@ It is saved for when this flag is not set.")
;; This must be outside of the save-excursion
;; in case the source file is our current buffer.
(if process-window
- (with-selected-window
+ (with-selected-window process-window
(gud-display-frame))
;; We have to be in the proper buffer, (process-buffer proc),
;; 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 @@
+;;; idlw-complete-structtag.el --- Completion of structure tags.
+;; Copyright (c) 2001,2002 Free Software Foundation
+
+;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
+;; Version: 1.2
+;; Keywords: languages
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Completion of structure tags can be done automatically in the
+;; shell, since the list of tags can be determined dynamically through
+;; interaction with IDL.
+
+;; Completion of structure tags in a source buffer is highly ambiguous
+;; since you never know what kind of structure a variable will hold at
+;; runtime. To make this feature useful in source buffers, we need a
+;; special assumption/convention. We will assume that the structure is
+;; defined in the same buffer and directly assigned to the correct
+;; variable. This is mainly useful for applications in which there is one
+;; main structure which contains a large amount of information (and many
+;; tags). For example, many widget applications define a "state" structure
+;; that contains all important data about the application. The different
+;; routines called by the event handler then use this structure. If you
+;; use the same variable name for this structure throughout your
+;; application (a good idea for many reasons), IDLWAVE can support
+;; completion for its tags.
+;;
+;; This file is a completion plugin which implements this kind of
+;; completion. It is also an example which shows how completion plugins
+;; should be programmed.
+;;
+;; New versions of IDLWAVE, documentation, and more information available
+;; from:
+;; http://idlwave.org
+;;
+;; INSTALLATION
+;; ============
+;; Put this file on the emacs load path and load it with the following
+;; line in your .emacs file:
+;;
+;; (add-hook 'idlwave-load-hook
+;; (lambda () (require 'idlw-complete-structtag)))
+;;
+;; DESCRIPTION
+;; ===========
+;; Suppose your IDL program contains something like
+;;
+;; myvar = state.a*
+;;
+;; where the star marks the cursor position. If you now press the
+;; completion key M-TAB, IDLWAVE searches the current file for a
+;; structure definition
+;;
+;; state = {tag1:val1, tag2:val2, ...}
+;;
+;; and offers the tags for completion.
+;;
+;; In the idlwave shell, idlwave sends a "print,tag_names()" for the
+;; variable to idl and determines the current tag list dynamically.
+;;
+;; Notes
+;; -----
+;; - The structure definition assignment "state = {...}" must use the
+;; same variable name as the the completion location "state.*".
+;; - The structure definition must be in the same file.
+;; - The structure definition is searched backwards and then forward
+;; from the current position, until a definition with tags is found.
+;; - The file is parsed again for each new completion variable and location.
+;; - You can force an update of the tag list with the usual command
+;; to update routine info in IDLWAVE: C-c C-i
+
+
+;; Some variables to identify the previously used structure
+(defvar idlwave-current-tags-var nil)
+(defvar idlwave-current-tags-buffer nil)
+(defvar idlwave-current-tags-completion-pos nil)
+
+;; The tag list used for completion will be stored in the following vars
+(defvar idlwave-current-struct-tags nil)
+(defvar idlwave-sint-structtags nil)
+
+;; Create the sintern type for structure talks
+(idlwave-new-sintern-type 'structtag)
+
+;; Hook the plugin into idlwave
+(add-to-list 'idlwave-complete-special 'idlwave-complete-structure-tag)
+(add-hook 'idlwave-update-rinfo-hook 'idlwave-structtag-reset)
+
+;;; The main code follows below
+
+(defun idlwave-complete-structure-tag ()
+ "Complete a structure tag.
+This works by looking in the current file for a structure assignment to a
+variable with the same name and takes the tags from there. Quite useful
+for big structures like the state variables of a widget application.
+
+In the idlwave shell, the current content of the variable is used to get
+an up-to-date completion list."
+ (interactive)
+ (let ((pos (point))
+ start
+ (case-fold-search t))
+ (if (save-excursion
+ ;; Check if the context is right.
+ ;; In the shell, this could be extended to expressions like
+ ;; x[i+4].name.g*. But it is complicated because we would have
+ ;; to really parse this expression. For now, we allow only
+ ;; substructures, like "aaa.bbb.ccc.ddd"
+ (skip-chars-backward "[a-zA-Z0-9._$]")
+ (setq start (point)) ;; remember the start of the completion pos.
+ (and (< (point) pos)
+ (not (equal (char-before) ?!)) ; no sysvars
+ (looking-at "\\([a-zA-Z][.a-zA-Z0-9_]*\\)\\.")
+ (>= pos (match-end 0))
+ (not (string= (downcase (match-string 1)) "self"))))
+ (let* ((var (downcase (match-string 1))))
+ ;; Check if we need to update the "current" structure. Basically we
+ ;; do it always, except for subsequent completions at the same
+ ;; spot, to save a bit of time. Implementation: We require
+ ;; an update if
+ ;; - the variable is different or
+ ;; - the buffer is different or
+ ;; - we are completing at a different position
+ (if (or (not (string= var (or idlwave-current-tags-var "@")))
+ (not (eq (current-buffer) idlwave-current-tags-buffer))
+ (not (equal start idlwave-current-tags-completion-pos)))
+ (idlwave-prepare-structure-tag-completion var))
+ (setq idlwave-current-tags-completion-pos start)
+ (setq idlwave-completion-help-info
+ (list 'idlwave-complete-structure-tag-help))
+ (idlwave-complete-in-buffer 'structtag 'structtag
+ idlwave-current-struct-tags nil
+ "Select a structure tag" "structure tag")
+ t) ; we did the completion: return t to skip other completions
+ nil))) ; return nil to allow looking for other ways to complete
+
+(defun idlwave-structtag-reset ()
+ "Force an update of the current structure tag list upon next use."
+ (setq idlwave-current-tags-buffer nil))
+
+(defvar idlwave-structtag-struct-location nil
+ "The location of the structure definition, for help display.")
+
+(defun idlwave-prepare-structure-tag-completion (var)
+ "Find and parse the tag list for structure tag completion."
+ ;; This works differently in source buffers and in the shell
+ (if (eq major-mode 'idlwave-shell-mode)
+ ;; OK, we are in the shell, do it dynamically
+ (progn
+ (message "preparing shell tags")
+ ;; The following call puts the tags into `idlwave-current-struct-tags'
+ (idlwave-complete-structure-tag-query-shell var)
+ ;; initialize
+ (setq idlwave-sint-structtags nil
+ idlwave-current-tags-buffer (current-buffer)
+ idlwave-current-tags-var var
+ idlwave-structtag-struct-location (point)
+ idlwave-current-struct-tags
+ (mapcar (lambda (x)
+ (list (idlwave-sintern-structtag x 'set)))
+ idlwave-current-struct-tags))
+ (if (not idlwave-current-struct-tags)
+ (error "Cannot complete structure tags of variable %s" var)))
+ ;; Not the shell, so probably a source buffer.
+ (unless
+ (catch 'exit
+ (save-excursion
+ (goto-char (point-max))
+ ;; Find possible definitions of the structure.
+ (while (idlwave-find-structure-definition var nil 'all)
+ (let ((tags (idlwave-struct-tags)))
+ (when tags
+ ;; initialize
+ (setq idlwave-sint-structtags nil
+ idlwave-current-tags-buffer (current-buffer)
+ idlwave-current-tags-var var
+ idlwave-structtag-struct-location (point)
+ idlwave-current-struct-tags
+ (mapcar (lambda (x)
+ (list (idlwave-sintern-structtag x 'set)))
+ tags))
+ (throw 'exit t))))))
+ (error "Cannot complete structure tags of variable %s" var))))
+
+(defun idlwave-complete-structure-tag-query-shell (var)
+ "Ask the shell for the tags of the structure in variable or expression VAR."
+ (idlwave-shell-send-command
+ (format "if size(%s,/TYPE) eq 8 then print,tag_names(%s)" var var)
+ 'idlwave-complete-structure-tag-get-tags-from-help
+ 'hide 'wait))
+
+(defvar idlwave-shell-prompt-pattern)
+(defvar idlwave-shell-command-output)
+(defun idlwave-complete-structure-tag-get-tags-from-help ()
+ "Filter structure tag name output, result to `idlwave-current-struct-tags'."
+ (setq idlwave-current-struct-tags
+ (if (string-match (concat "tag_names(.*) *\n"
+ "\\(\\(.*[\r\n]?\\)*\\)"
+ "\\(" idlwave-shell-prompt-pattern "\\)")
+ idlwave-shell-command-output)
+ (split-string (match-string 1 idlwave-shell-command-output)))))
+
+
+;; Fake help in the source buffer for structure tags.
+;; kwd and name are global-variables here.
+(defvar name)
+(defvar kwd)
+(defvar idlwave-help-do-struct-tag)
+(defun idlwave-complete-structure-tag-help (mode word)
+ (cond
+ ((eq mode 'test)
+ ;; fontify only in source buffers, not in the shell.
+ (not (equal idlwave-current-tags-buffer
+ (get-buffer (idlwave-shell-buffer)))))
+ ((eq mode 'set)
+ (setq kwd word
+ idlwave-help-do-struct-tag idlwave-structtag-struct-location))
+ (t (error "This should not happen"))))
+
+(provide 'idlw-complete-structtag)
+
+;;; idlw-complete-structtag.el ends here
+
+
+;; 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 @@
;; Copyright (c) 2003,2004,2005 Free Software Foundation
;;
;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
-;; Carsten Dominik <dominik@astro.uva.nl>
+;; Carsten Dominik <dominik@science.uva.nl>
;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
-;; Version: 5.5
+;; Version: 5.7_22
;; This file is part of GNU Emacs.
@@ -36,12 +36,18 @@
;; information, at:
;;
;; http://idlwave.org
-;;
+;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Code:
-(require 'browse-url)
+(defvar idlwave-help-browse-url-available nil
+ "Whether browse-url is available")
+
+(setq idlwave-help-browse-url-available
+ (condition-case nil
+ (require 'browse-url)
+ (error nil)))
(defgroup idlwave-online-help nil
"Online Help options for IDLWAVE mode."
@@ -52,10 +58,10 @@
:group 'idlwave-online-help
:type 'boolean)
-(defvar idlwave-html-link-sep
+(defvar idlwave-html-link-sep
(if idlwave-html-help-pre-v6 "#" "#wp"))
-(defcustom idlwave-html-help-location
+(defcustom idlwave-html-help-location
(if (memq system-type '(ms-dos windows-nt))
nil
"/usr/local/etc/")
@@ -83,7 +89,7 @@ Defaults to `browse-url-browser-function', which see."
:group 'idlwave-online-help
:type 'string)
-(defcustom idlwave-help-browser-generic-args
+(defcustom idlwave-help-browser-generic-args
(if (boundp 'browse-url-generic-args)
browse-url-generic-args "")
"Program args to use if using browse-url-generic-program."
@@ -183,8 +189,7 @@ support."
:type 'string)
(defface idlwave-help-link
- '((((min-colors 88) (class color)) (:foreground "Blue1"))
- (((class color)) (:foreground "Blue"))
+ '((((class color)) (:foreground "Blue"))
(t (:weight bold)))
"Face for highlighting links into IDLWAVE online help."
:group 'idlwave-online-help)
@@ -193,7 +198,7 @@ support."
(defvar idlwave-help-activate-links-aggressively nil
"Obsolete variable.")
-
+
(defvar idlwave-completion-help-info)
(defvar idlwave-help-frame nil
@@ -242,6 +247,10 @@ support."
"--"
["Quit" idlwave-help-quit t]))
+(defvar idlwave-help-def-pos)
+(defvar idlwave-help-args)
+(defvar idlwave-help-in-header)
+
(defun idlwave-help-mode ()
"Major mode for displaying IDL Help.
@@ -282,6 +291,7 @@ Here are all keybindings.
(set (make-local-variable 'idlwave-help-in-header) nil)
(run-mode-hooks 'idlwave-help-mode-hook))
+(defvar idlwave-system-directory)
(defun idlwave-html-help-location ()
"Return the help directory where HTML files are, or nil if that is unknown."
(or (and (stringp idlwave-html-help-location)
@@ -316,16 +326,20 @@ It collects and prints the diagnostics messages."
(setq idlwave-last-context-help-pos marker)
(idlwave-do-context-help1 arg)
(if idlwave-help-diagnostics
- (message "%s" (mapconcat 'identity
+ (message "%s" (mapconcat 'identity
(nreverse idlwave-help-diagnostics)
"; "))))))
(defvar idlwave-help-do-class-struct-tag nil)
+(defvar idlwave-structtag-struct-location)
(defvar idlwave-help-do-struct-tag nil)
+(defvar idlwave-system-variables-alist)
+(defvar idlwave-executive-commands-alist)
+(defvar idlwave-system-class-info)
(defun idlwave-do-context-help1 (&optional arg)
"The work-horse version of `idlwave-context-help', which see."
(save-excursion
- (if (equal (char-after) ?/)
+ (if (equal (char-after) ?/)
(forward-char 1)
(if (equal (char-before) ?=)
(backward-char 1)))
@@ -335,7 +349,7 @@ It collects and prints the diagnostics messages."
(beg (save-excursion (skip-chars-backward chars) (point)))
(end (save-excursion (skip-chars-forward chars) (point)))
(this-word (buffer-substring-no-properties beg end))
- (st-ass (assoc (downcase this-word)
+ (st-ass (assoc (downcase this-word)
idlwave-help-special-topic-words))
(classtag (and (string-match "self\\." this-word)
(< beg (- end 4))))
@@ -343,7 +357,7 @@ It collects and prints the diagnostics messages."
(string-match "\\`\\([^.]+\\)\\." this-word)
(< beg (- end 4))))
module keyword cw mod1 mod2 mod3)
- (if (or arg
+ (if (or arg
(and (not st-ass)
(not classtag)
(not structtag)
@@ -362,15 +376,15 @@ It collects and prints the diagnostics messages."
(setq module (list "init" 'fun (match-string 1 str))
idlwave-current-obj_new-class (match-string 1 str))
)))))
- (cond
+ (cond
(arg (setq mod1 module))
-
+
;; A special topic -- only system help
(st-ass (setq mod1 (list (cdr st-ass))))
-
+
;; A system variable -- only system help
- ((string-match
- "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
+ ((string-match
+ "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
this-word)
(let* ((word (match-string-no-properties 1 this-word))
(entry (assq (idlwave-sintern-sysvar word)
@@ -382,19 +396,18 @@ It collects and prints the diagnostics messages."
(cdr (assq 'tags entry))))))
(link (nth 1 (assq 'link entry))))
(if tag-target
- (setq link (idlwave-substitute-link-target link
+ (setq link (idlwave-substitute-link-target link
tag-target)))
(setq mod1 (list link))))
-
+
;; An executive command -- only system help
((string-match "^\\.\\([A-Z_]+\\)" this-word)
(let* ((word (match-string 1 this-word))
(link (cdr (assoc-string
word
- idlwave-executive-commands-alist
- t))))
+ idlwave-executive-commands-alist t))))
(setq mod1 (list link))))
-
+
;; A class -- system OR in-text help (via class__define).
((and (eq cw 'class)
(or (idlwave-in-quote) ; e.g. obj_new
@@ -408,28 +421,28 @@ It collects and prints the diagnostics messages."
(name (concat (downcase this-word) "__define"))
(link (nth 1 (assq 'link entry))))
(setq mod1 (list link name 'pro))))
-
+
;; A class structure tag (self.BLAH) -- only in-text help available
(classtag
(let ((tag (substring this-word (match-end 0)))
class-with found-in)
- (when (setq class-with
+ (when (setq class-with
(idlwave-class-or-superclass-with-tag
(nth 2 (idlwave-current-routine))
tag))
(setq found-in (idlwave-class-found-in class-with))
- (if (assq (idlwave-sintern-class class-with)
+ (if (assq (idlwave-sintern-class class-with)
idlwave-system-class-info)
(error "No help available for system class tags"))
(setq idlwave-help-do-class-struct-tag t)
- (setq mod1 (list nil
+ (setq mod1 (list nil
(if found-in
(cons (concat found-in "__define") class-with)
(concat class-with "__define"))
'pro
nil ; no class.... it's a procedure!
tag)))))
-
+
;; A regular structure tag -- only in text, and if
;; optional `complete-structtag' loaded.
(structtag
@@ -440,7 +453,7 @@ It collects and prints the diagnostics messages."
(setq idlwave-help-do-struct-tag
idlwave-structtag-struct-location
mod1 (list nil nil nil nil tag))))
-
+
;; A routine keyword -- in text or system help
((and (memq cw '(function-keyword procedure-keyword))
(stringp this-word)
@@ -482,7 +495,7 @@ It collects and prints the diagnostics messages."
(setq mod1 (append (list t) module (list keyword))
mod2 (list t this-word 'fun nil)
mod3 (append (list t) module)))))
-
+
;; Everything else
(t
(setq mod1 (append (list t) module))))
@@ -515,14 +528,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
word link)
(mouse-set-point ev)
-
+
;; See if we can also find help somewhere, e.g. for multiple classes
(setq word (idlwave-this-word))
(if (string= word "")
(error "No help item selected"))
(setq link (get-text-property 0 'link word))
(select-window cw)
- (cond
+ (cond
;; Routine name
((memq what '(procedure function routine))
(setq name word)
@@ -533,9 +546,9 @@ Needs additional info stored in global `idlwave-completion-help-info'."
type)))
(setq link t) ; No specific link valid yet
(if sclasses
- (setq classes (idlwave-members-only
+ (setq classes (idlwave-members-only
classes (cons class sclasses))))
- (setq class (idlwave-popup-select ev classes
+ (setq class (idlwave-popup-select ev classes
"Select Class" 'sort))))
;; XXX is this necessary, given all-method-classes?
@@ -555,7 +568,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
type)))
(setq link t) ; Link can't be correct yet
(if sclasses
- (setq classes (idlwave-members-only
+ (setq classes (idlwave-members-only
classes (cons class sclasses))))
(setq class (idlwave-popup-select ev classes
"Select Class" 'sort))
@@ -567,14 +580,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
(if (string= (downcase name) "obj_new")
(setq class idlwave-current-obj_new-class
name "Init"))))
-
+
;; Class name
((eq what 'class)
(setq class word
word nil))
-
+
;; A special named function to call which sets some of our variables
- ((and (symbolp what)
+ ((and (symbolp what)
(fboundp what))
(funcall what 'set word))
@@ -589,7 +602,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
"Highlight all completions for which help is available and attach link.
Those words in `idlwave-completion-help-links' have links. The
`idlwave-help-link' face is used for this."
- (if idlwave-highlight-help-links-in-completion
+ (if idlwave-highlight-help-links-in-completion
(with-current-buffer (get-buffer "*Completions*")
(save-excursion
(let* ((case-fold-search t)
@@ -605,7 +618,7 @@ Those words in `idlwave-completion-help-links' have links. The
(setq beg (match-beginning 1) end (match-end 1)
word (match-string 1) doit nil)
;; Call special completion function test
- (if (and (symbolp what)
+ (if (and (symbolp what)
(fboundp what))
(setq doit (funcall what 'test word))
;; Look for special link property passed in help-links
@@ -636,13 +649,13 @@ Those words in `idlwave-completion-help-links' have links. The
;; Try to select the return frame.
;; This can crash on slow network connections, obviously when
;; we kill the help frame before the return-frame is selected.
- ;; To protect the workings, we wait for up to one second
+ ;; To protect the workings, we wait for up to one second
;; and check if the return-frame *is* now selected.
;; This is marked "eperimental" since we are not sure when its OK.
(let ((maxtime 1.0) (time 0.) (step 0.1))
(select-frame idlwave-help-return-frame)
(while (and (sit-for step)
- (not (eq (selected-frame)
+ (not (eq (selected-frame)
idlwave-help-return-frame))
(< (setq time (+ time step)) maxtime)))))
(delete-frame idlwave-help-frame))
@@ -655,7 +668,7 @@ Those words in `idlwave-completion-help-links' have links. The
(defvar default-toolbar-visible-p)
(defun idlwave-help-display-help-window (&optional pos-or-func)
- "Display the help window.
+ "Display the help window.
Move window start to POS-OR-FUNC, if passed as a position, or call it
if passed as a function. See `idlwave-help-use-dedicated-frame'."
(let ((cw (selected-window))
@@ -666,13 +679,13 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
(switch-to-buffer buf))
;; Do it in this frame and save the window configuration
(if (not (get-buffer-window buf nil))
- (setq idlwave-help-window-configuration
+ (setq idlwave-help-window-configuration
(current-window-configuration)))
(display-buffer buf nil (selected-frame))
(select-window (get-buffer-window buf)))
(raise-frame)
- (if pos-or-func
- (if (functionp pos-or-func)
+ (if pos-or-func
+ (if (functionp pos-or-func)
(funcall pos-or-func)
(goto-char pos-or-func)
(recenter 0)))
@@ -694,31 +707,31 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
(select-frame idlwave-help-return-frame)))
(defun idlwave-online-help (link &optional name type class keyword)
- "Display HTML or other special help on a certain topic.
+ "Display HTML or other special help on a certain topic.
Either loads an HTML link, if LINK is non-nil, or gets special-help on
the optional arguments, if any special help is defined. If LINK is
`t', first look up the optional arguments in the routine info list to
see if a link is set for it. Try extra help functions if necessary."
;; Lookup link
- (if (eq link t)
- (let ((entry (idlwave-best-rinfo-assoc name type class
+ (if (eq link t)
+ (let ((entry (idlwave-best-rinfo-assoc name type class
(idlwave-routines) nil t)))
(cond
;; Try keyword link
- ((and keyword
+ ((and keyword
(setq link (cdr (idlwave-entry-find-keyword entry keyword)))))
;; Default, regular entry link
(t (setq link (idlwave-entry-has-help entry))))))
(cond
;; An explicit link
- ((stringp link)
+ ((stringp link)
(idlwave-help-html-link link))
-
+
;; Any extra help
(idlwave-extra-help-function
(idlwave-help-get-special-help name type class keyword))
-
+
;; Nothing worked
(t (idlwave-help-error name type class keyword))))
@@ -729,7 +742,7 @@ see if a link is set for it. Try extra help functions if necessary."
(help-pos (save-excursion
(set-buffer (idlwave-help-get-help-buffer))
(let ((buffer-read-only nil))
- (funcall idlwave-extra-help-function
+ (funcall idlwave-extra-help-function
name type class keyword)))))
(if help-pos
(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."
(browse-url-generic-program idlwave-help-browser-generic-program)
;(browse-url-generic-args idlwave-help-browser-generic-args)
full-link)
+
+ (unless idlwave-help-browse-url-available
+ (error "browse-url is not available -- install it to use HTML help."))
(if (and (memq system-type '(ms-dos windows-nt))
idlwave-help-use-hh)
@@ -758,12 +774,12 @@ see if a link is set for it. Try extra help functions if necessary."
;; Just a regular file name (+ anchor name)
(unless (and (stringp help-loc)
(file-directory-p help-loc))
- (error
+ (error
"Invalid help location; customize `idlwave-html-help-location'."))
- (setq full-link (concat
+ (setq full-link (concat
"file://"
- (expand-file-name
- link
+ (expand-file-name
+ link
(expand-file-name "idl_html_help" help-loc)))))
;; Check for a local browser
@@ -773,11 +789,10 @@ see if a link is set for it. Try extra help functions if necessary."
(browse-url full-link))))
;; A special help routine for source-level syntax help in files.
-(defvar idlwave-help-def-pos)
-(defvar idlwave-help-args)
-(defvar idlwave-help-in-header)
(defvar idlwave-help-fontify-source-code)
(defvar idlwave-help-source-try-header)
+(defvar idlwave-current-tags-buffer)
+(defvar idlwave-current-tags-class)
(defun idlwave-help-with-source (name type class keyword)
"Provide help for routines not documented in the IDL manuals. Works
by 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'."
(if class-only ;Help with class? Using "Init" as source.
(setq name "Init"
type 'fun))
- (if (not struct-tag)
+ (if (not struct-tag)
(setq file
(idlwave-routine-source-file
(nth 3 (idlwave-best-rinfo-assoc
@@ -812,7 +827,7 @@ This function can be used as `idlwave-extra-help-function'."
(if (or struct-tag (stringp file))
(progn
(setq in-buf ; structure-tag completion is always in current buffer
- (if struct-tag
+ (if struct-tag
idlwave-current-tags-buffer
(idlwave-get-buffer-visiting file)))
;; 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'."
;; Try to find a good place to display
(setq def-pos
;; Find the class structure tag if that's what we're after
- (cond
+ (cond
;; Class structure tags: find the class or named structure
;; definition
(class-struct-tag
- (save-excursion
+ (save-excursion
(setq class
- (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
+ (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
(substring name 0 (match-beginning 1))
idlwave-current-tags-class))
(and
(idlwave-find-class-definition class nil real-class)
(idlwave-find-struct-tag keyword))))
-
+
;; Generic structure tags: the structure definition
;; location within the file has been recorded in
;; `struct-tag'
@@ -856,14 +871,14 @@ This function can be used as `idlwave-extra-help-function'."
(integerp struct-tag)
(goto-char struct-tag)
(idlwave-find-struct-tag keyword))))
-
+
;; Just find the routine definition
(t
(if class-only (point-min)
(idlwave-help-find-routine-definition name type class keyword))))
idlwave-help-def-pos def-pos)
- (if (and idlwave-help-source-try-header
+ (if (and idlwave-help-source-try-header
(not (or struct-tag class-struct-tag)))
;; Check if we can find the header
(save-excursion
@@ -873,7 +888,7 @@ This function can be used as `idlwave-extra-help-function'."
idlwave-help-in-header header-pos)))
(if (or header-pos def-pos)
- (progn
+ (progn
(if (boundp 'idlwave-help-min-frame-width)
(setq idlwave-help-min-frame-width 80))
(goto-char (or header-pos def-pos)))
@@ -887,7 +902,7 @@ This function can be used as `idlwave-extra-help-function'."
KEYWORD is ignored. Returns the point of match if successful, nil otherwise."
(save-excursion
(goto-char (point-max))
- (if (re-search-backward
+ (if (re-search-backward
(concat "^[ \t]*"
(if (eq type 'pro) "pro"
(if (eq type 'fun) "function"
@@ -933,22 +948,22 @@ with spaces allowed between the keyword and the following dash or equal sign.
If there is a match, we assume it is the keyword description."
(let* ((case-fold-search t)
(rname (if (stringp class)
- (concat
+ (concat
"\\("
;; Traditional name or class::name
"\\("
"\\(" (regexp-quote (downcase class)) "::\\)?"
(regexp-quote (downcase name))
"\\>\\)"
- (concat
+ (concat
"\\|"
;; class__define or just class
(regexp-quote (downcase class)) "\\(__define\\)?")
"\\)")
(regexp-quote (downcase name))))
-
+
;; NAME tag plus the routine name. The new version is from JD.
- (name-re (concat
+ (name-re (concat
"\\(^;+\\*?[ \t]*"
idlwave-help-doclib-name
"\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*"
@@ -983,7 +998,7 @@ If there is a match, we assume it is the keyword description."
(regexp-quote (upcase keyword))
"\\>")))
dstart dend name-pos kwds-pos kwd-pos)
- (catch 'exit
+ (catch 'exit
(save-excursion
(goto-char (point-min))
(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."
;; found a routine header
(goto-char dstart)
(if (setq name-pos (re-search-forward name-re dend t))
- (progn
+ (progn
(if keyword
;; We do need a keyword
(progn
@@ -1073,7 +1088,7 @@ When DING is non-nil, ring the bell as well."
(idlwave-help-find-first-header nil)
(setq idlwave-help-in-header nil)
(idlwave-help-toggle-header-match-and-def arg 'top)))
-
+
(defun idlwave-help-toggle-header-match-and-def (arg &optional top)
(interactive "P")
(let ((args idlwave-help-args)
@@ -1085,7 +1100,7 @@ When DING is non-nil, ring the bell as well."
(setq pos idlwave-help-def-pos))
;; Try to display header
(setq pos (apply 'idlwave-help-find-in-doc-header
- (if top
+ (if top
(list (car args) (nth 1 args) (nth 2 args) nil)
args)))
(if pos
@@ -1119,7 +1134,7 @@ Useful when source code is displayed as help. See the option
(font-lock-fontify-buffer))
(set-syntax-table syntax-table)))))
-
+
(defun idlwave-help-error (name type class keyword)
(error "Can't find help on %s%s %s"
(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 @@
;;; idlw-rinfo.el --- Routine Information for IDLWAVE
;; Copyright (c) 1999 Carsten Dominik
-;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation
+;; Copyright (c) 1999, 2000, 2001,2002,2003,2004,2005 Free Software Foundation
;; Author: J.D. Smith <jdsmith@as.arizona.edu>
-;; Version: 5.5
+;; Version: 5.7_22
;; Keywords: languages
;; This file is part of GNU Emacs.
@@ -30,7 +30,7 @@
;; information is extracted automatically from the IDL documentation
;; and by talking to IDL.
;;
-;; Created by get_html_rinfo on Sun Oct 10 16:06:07 2004
+;; Created by get_html_rinfo on Wed May 11 14:52:40 2005
;; IDL version: 6.1
;; Number of files scanned: 3393
;; Number of routines found: 1850
@@ -1242,7 +1242,7 @@
("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)))
("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html"))
("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html"))
- ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE " . 1011998) ("ROIGROUP_YRANGE " . 1012000) ("ROIGROUP_ZRANGE " . 1012002)))
+ ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE" . 1011998) ("ROIGROUP_YRANGE" . 1012000) ("ROIGROUP_ZRANGE" . 1012002)))
("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731)))
("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html"))
("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html"))
@@ -1433,120 +1433,120 @@
("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846)))
("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879)))
("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)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html"))
("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015)))
("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090)))
- ("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)))
+ ("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)))
("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214)))
("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html"))
("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323)))
("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html"))
("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)))
("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)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html"))
("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746)))
("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084)))
- ("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)))
+ ("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)))
("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html"))
("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html"))
("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html"))
("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908)))
- ("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)))
+ ("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)))
("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208)))
("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html"))
("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html"))
- ("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)))
+ ("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)))
("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html"))
("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584)))
("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618)))
- ("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)))
+ ("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)))
("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687)))
("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html"))
("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html"))
- ("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)))
+ ("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)))
("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html"))
("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html"))
- ("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)))
+ ("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)))
("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379)))
- ("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)))
+ ("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)))
("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html"))
("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html"))
- ("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)))
+ ("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)))
("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html"))
("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html"))
- ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173)))
- ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173)))
- ("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)))
+ ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
+ ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
+ ("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)))
("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html"))
("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979)))
- ("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)))
+ ("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)))
("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html"))
("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html"))
- ("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)))
+ ("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)))
("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html"))
("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149)))
("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html"))
- ("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)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
+ ("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)))
("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753)))
("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html"))
("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html"))
- ("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)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
+ ("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)))
("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096)))
("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243)))
("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html"))
@@ -1555,10 +1555,10 @@
("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html"))
("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969)))
("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html"))
("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)))
("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 @@
("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" ))
("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376)))
("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516)))
- ("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)))
+ ("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)))
("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823)))
("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html"))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html"))
- ("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)))
+ ("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)))
("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170)))
("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html"))
("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394)))
@@ -1587,28 +1587,28 @@
("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341)))
("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html"))
("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563)))
- ("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)))
+ ("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)))
("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818)))
("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html"))
("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html"))
("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)))
- ("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)))
- ("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)))
+ ("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)))
+ ("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)))
("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111)))
("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187)))
- ("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)))
+ ("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)))
("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html"))
("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511)))
("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544)))
("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)))
- ("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)))
+ ("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)))
("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html"))
("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150)))
("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383)))
- ("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)))
+ ("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)))
("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html"))
("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html"))
("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html"))
@@ -1616,7 +1616,7 @@
("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)))
("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680)))
("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767)))
- ("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)))
+ ("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)))
("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967)))
("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html"))
("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 @@
("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016)))
("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036)))
("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html"))
- ("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)))
+ ("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)))
("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html"))
("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html"))
("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html"))
@@ -1699,10 +1699,10 @@
("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html"))
("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810)))
("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html"))
- ("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)))
+ ("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)))
("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828)))
("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html"))
- ("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)))
+ ("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)))
("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html"))
("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html"))
("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" ))
@@ -1816,7 +1816,7 @@
("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html"))
("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html"))
("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html"))
- ("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)))
+ ("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)))
("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html"))
("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html"))
("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html"))
@@ -1836,7 +1836,7 @@
("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441)))
("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html"))
("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891)))
- ("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)))
+ ("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)))
("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html"))
("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092)))
("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 @@
("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html"))
("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html"))
("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298)))
- ("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)))
+ ("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)))
("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html"))
("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html"))
("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html"))
@@ -1942,11 +1942,11 @@
("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"))
("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"))
("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"))
- ("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"))
("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"))
+ ("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"))
("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html"))
- ("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"))
("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"))
+ ("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"))
("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"))
("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"))
("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html"))
@@ -1955,33 +1955,33 @@
("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"))
("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"))
("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"))
- ("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"))
("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"))
- ("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"))
+ ("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"))
("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"))
+ ("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"))
("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"))
("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"))
("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html"))
- ("IDLitDataContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitData" "IDL_Container") (link "objects_it59.html"))
+ ("IDLitDataContainer" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitContainer") (link "objects_it59.html"))
("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"))
- ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
("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"))
+ ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html"))
("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"))
("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html"))
- ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
- ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html"))
+ ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
+ ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html"))
("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html"))
- ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
- ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
("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"))
+ ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
+ ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html"))
("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"))
- ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html"))
- ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMNode") (link "objects_ff102.html"))
+ ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMText") (link "objects_ff102.html"))
+ ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html"))
("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html"))
("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html"))
@@ -1989,45 +1989,45 @@
("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html"))
("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html"))
("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html"))
- ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html"))
("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html"))
- ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff162.html"))
- ("IDLffXMLDOMDocumentType" (inherits "IDLffXMLDOMElement") (link "objects_ff123.html"))
+ ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
+ ("IDLffXMLDOMText" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff203.html"))
+ ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMAttr") (link "objects_ff196.html"))
+ ("IDLffXMLDOMAttr" (inherits "IDLffXMLDOMElement") (link "objects_ff74.html"))
+ ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNode") (link "objects_ff130.html"))
("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html"))
- ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNotation") (link "objects_ff130.html"))
- ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMEntity") (link "objects_ff190.html"))
- ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff142.html"))
- ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff86.html"))
- ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMText") (link "objects_ff196.html"))
- ("IDLffXMLDOMText" (inherits "IDLffXMLDOMAttr") (link "objects_ff203.html"))
- ("IDLffXMLDOMAttr" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff74.html"))
+ ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMNotation") (link "objects_ff162.html"))
+ ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff190.html"))
("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html"))
+ ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMEntity") (link "objects_ff86.html"))
+ ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff142.html"))
+ ("IDLffXMLDOMDocumentType" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff123.html"))
("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html"))
("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html"))
("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html"))
("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html"))
("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html"))
- ("IDLjavaObject" (link "objects_misc28.html"))
("IDLcomIDispatch" (link "objects_misc23.html"))
- ("IDLffMrSID" (link "objects_ff52.html"))))
+ ("IDLffMrSID" (link "objects_ff52.html"))
+ ("IDLjavaObject" (link "objects_misc28.html"))))
(setq idlwave-executive-commands-alist '(
- ("GO" . "symbols6.html")
- ("OUT" . "symbols7.html")
- ("RETURN" . "symbols9.html")
+ ("RESET_SESSION" . "symbols8.html")
("TRACE" . "symbols15.html")
+ ("RNEW" . "symbols10.html")
+ ("EDIT" . "symbols4.html")
+ ("STEPOVER" . "symbols14.html")
+ ("OUT" . "symbols7.html")
("RUN" . "symbols11.html")
- ("SKIP" . "symbols12.html")
- ("COMPILE" . "symbols2.html")
("CONTINUE" . "symbols3.html")
- ("RESET_SESSION" . "symbols8.html")
("STEP" . "symbols13.html")
- ("RNEW" . "symbols10.html")
+ ("RETURN" . "symbols9.html")
+ ("GO" . "symbols6.html")
+ ("SKIP" . "symbols12.html")
("FULL_RESET_SESSION" . "symbols5.html")
- ("EDIT" . "symbols4.html")
- ("STEPOVER" . "symbols14.html")
+ ("COMPILE" . "symbols2.html")
))
;; 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 @@
;; Carsten Dominik <dominik@astro.uva.nl>
;; Chris Chase <chase@att.com>
;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
-;; Version: 5.5
+;; Version: 5.7_22
;; Keywords: processes
;; This file is part of GNU Emacs.
@@ -45,7 +45,7 @@
;;
;; INSTALLATION:
;; =============
-;;
+;;
;; Follow the instructions in the INSTALL file of the distribution.
;; In short, put this file on your load path and add the following
;; lines to your .emacs file:
@@ -58,9 +58,9 @@
;;
;; The newest version of this file can be found on the maintainers
;; web site.
-;;
+;;
;; http://idlwave.org
-;;
+;;
;; DOCUMENTATION
;; =============
;;
@@ -77,7 +77,7 @@
;; it is a bug in XEmacs.
;; The Debug menu in source buffers *does* display the bindings correctly.
;;
-;;
+;;
;; CUSTOMIZATION VARIABLES
;; =======================
;;
@@ -101,12 +101,12 @@
(condition-case () (require 'custom) (error nil))
(if (and (featurep 'custom)
(fboundp 'custom-declare-variable)
- (fboundp 'defface))
+ (fboundp 'defface))
;; We've got what we needed
(setq idlwave-shell-have-new-custom t)
;; We have the old or no custom-library, hack around it!
(defmacro defgroup (&rest args) nil)
- (defmacro defcustom (var value doc &rest args)
+ (defmacro defcustom (var value doc &rest args)
`(defvar ,var ,value ,doc))))
;;; Customizations: idlwave-shell group
@@ -117,11 +117,12 @@
:prefix "idlwave-shell"
:group 'idlwave)
-(defcustom idlwave-shell-prompt-pattern "^ ?IDL> "
- "*Regexp to match IDL prompt at beginning of a line.
-For example, \"^IDL> \" or \"^WAVE> \".
-The \"^\" means beginning of line, and is required.
-This variable is used to initialize `comint-prompt-regexp' in the
+(defcustom idlwave-shell-prompt-pattern "^\r? ?IDL> "
+ "*Regexp to match IDL prompt at beginning of a line.
+For example, \"^\r?IDL> \" or \"^\r?WAVE> \".
+The \"^\r?\" is needed, to indicate the beginning of the line, with
+optional return character (which IDL seems to output randomly).
+This variable is used to initialize `comint-prompt-regexp' in the
process buffer.
This 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."
:type 'boolean)
(defcustom idlwave-shell-automatic-electric-debug 'breakpoint
- "Enter the electric-debug minor mode automatically.
+ "Enter the electric-debug minor mode automatically.
This occurs at a breakpoint or any other halt. The mode is exited
upon return to the main level. Can be set to 'breakpoint to enter
electric debug mode only when breakpoints are tripped."
@@ -295,7 +296,7 @@ The history is only saved if the variable `idlwave-shell-save-command-history'
is non-nil."
:group 'idlwave-shell-command-setup
:type 'file)
-
+
(defcustom idlwave-shell-show-commands
'(run misc breakpoint)
"*A list of command types to show output from in the shell.
@@ -306,12 +307,12 @@ the copious shell traffic to be displayed."
:type '(choice
(const everything)
(set :tag "Checklist" :greedy t
- (const :tag "All .run and .compile commands" run)
+ (const :tag "All .run and .compile commands" run)
(const :tag "All breakpoint commands" breakpoint)
(const :tag "All debug and stepping commands" debug)
(const :tag "Close, window, retall, etc. commands" misc))))
-(defcustom idlwave-shell-examine-alist
+(defcustom idlwave-shell-examine-alist
'(("Print" . "print,___")
("Help" . "help,___")
("Structure Help" . "help,___,/STRUCTURE")
@@ -322,14 +323,14 @@ the copious shell traffic to be displayed."
("Ptr Valid" . "print,ptr_valid(___)")
("Widget Valid" . "print,widget_info(___,/VALID)")
("Widget Geometry" . "help,widget_info(___,/GEOMETRY)"))
- "Alist of special examine commands for popup selection.
+ "Alist of special examine commands for popup selection.
The keys are used in the selection popup created by
`idlwave-shell-examine-select', and the corresponding value is sent as
a command to the shell, with special sequence `___' replaced by the
expression being examined."
:group 'idlwave-shell-command-setup
:type '(repeat
- (cons
+ (cons
(string :tag "Label ")
(string :tag "Command"))))
@@ -340,11 +341,12 @@ expression being examined."
"*Non-nil mean, put output of examine commands in their own buffer."
:group 'idlwave-shell-command-setup
:type 'boolean)
-
+
(defcustom idlwave-shell-comint-settings
'((comint-scroll-to-bottom-on-input . t)
(comint-scroll-to-bottom-on-output . t)
- (comint-scroll-show-maximum-output . nil))
+ (comint-scroll-show-maximum-output . nil)
+ (comint-prompt-read-only . t))
"Alist of special settings for the comint variables in the IDLWAVE Shell.
Each 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.
answer = GET_KBRD(1)
Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION',
-you could actually check if you are running under Emacs before printing
+you could actually check if you are running under Emacs before printing
the magic strings. Here is a procedure which uses this.
Usage:
@@ -420,7 +422,7 @@ pro idlwave_char_input,on=on,off=off
if keyword_set(on) then print,'<chars>' $
else if keyword_set(off) then print,'</chars>' $
else print,'<onechar>'
- endif
+ endif
end"
:group 'idlwave-shell-command-setup
:type '(list
@@ -428,6 +430,11 @@ end"
(regexp :tag "Char-mode regexp")
(regexp :tag "Line-mode regexp")))
+(defcustom idlwave-shell-breakpoint-popup-menu t
+ "*If non-nil, provide a menu on mouse-3 on breakpoint lines, and
+popup help text on the line."
+ :group 'idlwave-shell-command-setup
+ :type 'boolean)
;; Breakpoint Overlays etc
(defgroup idlwave-shell-highlighting-and-faces nil
@@ -478,10 +485,10 @@ line where IDL is stopped. See also `idlwave-shell-mark-stop-line'."
:group 'idlwave-shell-highlighting-and-faces
:type 'string)
-(defcustom idlwave-shell-electric-stop-line-face
+(defcustom idlwave-shell-electric-stop-line-face
(prog1
(copy-face 'modeline 'idlwave-shell-electric-stop-line-face)
- (set-face-background 'idlwave-shell-electric-stop-line-face
+ (set-face-background 'idlwave-shell-electric-stop-line-face
idlwave-shell-electric-stop-color)
(condition-case nil
(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'."
;; backward-compatibility alias
(put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp))
-(defcustom idlwave-shell-disabled-breakpoint-face
+(defcustom idlwave-shell-disabled-breakpoint-face
'idlwave-shell-disabled-bp
"*The face for disabled breakpoint lines in the source code.
Allows you to choose the font, color and other properties for
@@ -584,18 +591,18 @@ before use by the shell.")
TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
`idlwave-shell-temp-rinfo-save-file' is set (respectively)."
- (cond
+ (cond
((eq type 'rinfo)
- (or idlwave-shell-temp-rinfo-save-file
- (setq idlwave-shell-temp-rinfo-save-file
+ (or idlwave-shell-temp-rinfo-save-file
+ (setq idlwave-shell-temp-rinfo-save-file
(idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
((eq type 'pro)
(or idlwave-shell-temp-pro-file
- (setq idlwave-shell-temp-pro-file
+ (setq idlwave-shell-temp-pro-file
(idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
- (t (error "Wrong argument (idlwave-shell-temp-file): %s"
+ (t (error "Wrong argument (idlwave-shell-temp-file): %s"
(symbol-name type)))))
-
+
(defun idlwave-shell-make-temp-file (prefix)
"Create a temporary file."
@@ -623,7 +630,7 @@ TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur"
- "Command used by `idlwave-shell-resync-dirs' to query IDL for
+ "Command used by `idlwave-shell-resync-dirs' to query IDL for
the directory stack.")
(defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'"
@@ -631,7 +638,7 @@ the directory stack.")
"The command which gets !PATH and !DIR info from the shell.")
(defvar idlwave-shell-mode-line-info nil
- "Additional info displayed in the mode line")
+ "Additional info displayed in the mode line")
(defvar idlwave-shell-default-directory nil
"The default directory in the idlwave-shell buffer, of outside use.")
@@ -682,7 +689,7 @@ the directory stack.")
window-system) ; Window systems always
(progn
(setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
- (overlay-put idlwave-shell-stop-line-overlay
+ (overlay-put idlwave-shell-stop-line-overlay
'face idlwave-shell-stop-line-face))))
(t
@@ -690,7 +697,7 @@ the directory stack.")
(if window-system
(progn
(setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
- (overlay-put idlwave-shell-stop-line-overlay
+ (overlay-put idlwave-shell-stop-line-overlay
'face idlwave-shell-stop-line-face)))))
;; Now the expression and output overlays
@@ -746,12 +753,9 @@ with `*'s."
(defvar idlwave-shell-ready nil
"If non-nil can send next command to IDL process.")
-(defvar idlwave-shell-wait-for-output nil
- "Whether to wait for output to accumulate.")
-
;;; The following are the types of messages we attempt to catch to
;;; resync our idea of where IDL execution currently is.
-;;;
+;;;
(defvar idlwave-shell-halt-frame nil
"The frame associated with halt/breakpoint messages.")
@@ -795,7 +799,7 @@ IDL has currently stepped.")
(defconst idlwave-shell-electric-debug-help
" ==> IDLWAVE Electric Debug Mode Help <==
-
+
Break Point Setting and Clearing:
b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.).
d Clear nearby breakpoint.
@@ -821,7 +825,7 @@ IDL has currently stepped.")
Examining Expressions (with prefix for examining the region):
p Print expression near point or in region ([C-u p]).
? Help on expression near point or in region ([C-u ?]).
- x Examine expression near point or in region ([C-u x]) with
+ x Examine expression near point or in region ([C-u x]) with
letter completion of the examine type.
Miscellaneous:
@@ -875,18 +879,18 @@ IDL has currently stepped.")
`\\[idlwave-routine-info]' displays information about an IDL routine near point,
just like in `idlwave-mode'. The module used is the one at point or
the one whose argument list is being edited.
- To update IDLWAVE's knowledge about compiled or edited modules, use
+ To update IDLWAVE's knowledge about compiled or edited modules, use
\\[idlwave-update-routine-info].
\\[idlwave-find-module] find the source of a module.
\\[idlwave-resolve] tells IDL to compile an unresolved module.
\\[idlwave-context-help] shows the online help on the item at
point, if online help has been installed.
-
+
4. Debugging
---------
A complete set of commands for compiling and debugging IDL programs
- is available from the menu. Also keybindings starting with a
+ is available from the menu. Also keybindings starting with a
`C-c C-d' prefix are available for most commands in the *idl* buffer
and also in source buffers. The best place to learn about the
keybindings is again the menu.
@@ -978,8 +982,8 @@ IDL has currently stepped.")
(idlwave-shell-display-line nil)
(setq idlwave-shell-calling-stack-index 0)
(setq idlwave-shell-only-prompt-pattern
- (concat "\\`[ \t\n]*"
- (substring idlwave-shell-prompt-pattern 1)
+ (concat "\\`[ \t\n]*"
+ (substring idlwave-shell-prompt-pattern 1)
"[ \t\n]*\\'"))
(when idlwave-shell-query-for-class
@@ -992,15 +996,12 @@ IDL has currently stepped.")
(set-marker comint-last-input-end (point))
(setq idlwave-idlwave_routine_info-compiled nil)
(setq idlwave-shell-ready nil)
- (setq idlwave-shell-wait-for-output nil)
(setq idlwave-shell-bp-alist nil)
(idlwave-shell-update-bp-overlays) ; Throw away old overlays
(setq idlwave-shell-sources-alist nil)
(setq idlwave-shell-default-directory default-directory)
(setq idlwave-shell-hide-output nil)
- ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
- ;;(make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm
nil 'local)
(add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local)
@@ -1014,14 +1015,14 @@ IDL has currently stepped.")
(while (setq entry (pop list))
(set (make-local-variable (car entry)) (cdr entry)))))
-
- (unless (memq 'comint-carriage-motion
+
+ (unless (memq 'comint-carriage-motion
(default-value 'comint-output-filter-functions))
;; Strip those pesky ctrl-m's.
(add-hook 'comint-output-filter-functions
(lambda (string)
(when (string-match "\r" string)
- (let ((pmark (process-mark (get-buffer-process
+ (let ((pmark (process-mark (get-buffer-process
(current-buffer)))))
(save-excursion
;; bare CR -> delete preceding line
@@ -1043,8 +1044,6 @@ IDL has currently stepped.")
(set (make-local-variable 'comment-start) ";")
(setq abbrev-mode t)
- ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
- ;;(make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'idlwave-command-hook nil t)
;; Read the command history?
@@ -1063,9 +1062,8 @@ IDL has currently stepped.")
(idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide)
;; Turn off IDL's ^d interpreting, and define a system
;; variable which knows the version of IDLWAVE
- (idlwave-shell-send-command
- (format "defsysv,'!idlwave_version','%s',1"
- idlwave-mode-version)
+ (idlwave-shell-send-command
+ (format "defsysv,'!idlwave_version','%s',1" idlwave-mode-version)
nil 'hide)
;; Get the paths if they weren't read in from file
(if (and (not idlwave-path-alist)
@@ -1085,7 +1083,7 @@ IDL has currently stepped.")
(setq idlwave-system-directory sysdir)
(put 'idlwave-system-directory 'from-shell t))
;; Preserve any existing flags
- (setq idlwave-path-alist
+ (setq idlwave-path-alist
(mapcar (lambda (x)
(let ((old-entry (assoc x old-path-alist)))
(if old-entry
@@ -1093,7 +1091,7 @@ IDL has currently stepped.")
(list x))))
dirs))
(put 'idlwave-path-alist 'from-shell t)
- (if idlwave-path-alist
+ (if idlwave-path-alist
(if (and idlwave-auto-write-paths
(not idlwave-library-path)
(not no-write) )
@@ -1129,8 +1127,8 @@ IDL has currently stepped.")
(frame (selected-frame)))
(catch 'exit
(while flist
- (if (not (eq (car flist)
- idlwave-shell-idl-wframe))
+ (if (not (eq (car flist)
+ idlwave-shell-idl-wframe))
(throw 'exit (car flist))
(setq flist (cdr flist))))))
(make-frame))
@@ -1148,9 +1146,9 @@ IDL has currently stepped.")
;; We do not have a source frame, so we use this one.
(setq idlwave-shell-display-wframe (selected-frame)))
;; Return a new frame
- (setq idlwave-shell-idl-wframe
+ (setq idlwave-shell-idl-wframe
(make-frame idlwave-shell-frame-parameters)))))
-
+
;;;###autoload
(defun idlwave-shell (&optional arg quick)
"Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'.
@@ -1177,14 +1175,14 @@ See also the variable `idlwave-shell-prompt-pattern'.
(delete-other-windows))
(and idlwave-shell-use-dedicated-frame
(setq idlwave-shell-idl-wframe (selected-frame)))
- (add-hook 'idlwave-shell-sentinel-hook
+ (add-hook 'idlwave-shell-sentinel-hook
'save-buffers-kill-emacs t))
;; A non-nil arg means, we want a dedicated frame. This will last
;; for the current editing session.
(if arg (setq idlwave-shell-use-dedicated-frame t))
(if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil))
-
+
;; Check if the process still exists. If not, create it.
(unless (comint-check-proc (idlwave-shell-buffer))
(let* ((prg (or idlwave-shell-explicit-file-name "idl"))
@@ -1211,9 +1209,9 @@ See also the variable `idlwave-shell-prompt-pattern'.
(if (eq (selected-frame) (window-frame window))
(select-window window))))
;; Save the paths at the end
- (add-hook 'idlwave-shell-sentinel-hook
+ (add-hook 'idlwave-shell-sentinel-hook
(lambda ()
- (if (and
+ (if (and
idlwave-auto-write-paths
idlwave-path-alist
(not idlwave-library-path)
@@ -1244,7 +1242,7 @@ Return either nil or 'hide."
(setq idlwave-shell-show-commands (list type))))
-(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt
+(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt
show-if-error)
"Send a command to IDL process.
@@ -1265,18 +1263,18 @@ If optional fourth argument PREEMPT is non-nil CMD is put at front of
`idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all
output to complete and the next prompt to arrive before returning
\(useful if you need an answer now\). IDL is considered ready if the
-prompt is present and if `idlwave-shell-ready' is non-nil.
+prompt is present and if `idlwave-shell-ready' is non-nil.
If SHOW-IF-ERROR is non-nil, show the output it it contains an error
message, independent of what HIDE is set to."
; (setq hide nil) ; FIXME: turn this on for debugging only
-; (if (null cmd)
+; (if (null cmd)
; (progn
-; (message "SENDING Pending commands: %s"
+; (message "SENDING Pending commands: %s"
; (prin1-to-string idlwave-shell-pending-commands)))
-; (message "SENDING %s|||%s" cmd pcmd))
- (if (and (symbolp idlwave-shell-show-commands)
+; (message "SENDING %s|||%s" cmd pcmd))
+ (if (and (symbolp idlwave-shell-show-commands)
(eq idlwave-shell-show-commands 'everything))
(setq hide nil))
(let ((save-buffer (current-buffer))
@@ -1304,7 +1302,7 @@ message, independent of what HIDE is set to."
(append (list (list cmd pcmd hide show-if-error))
idlwave-shell-pending-commands)
;; Put at end.
- (append idlwave-shell-pending-commands
+ (append idlwave-shell-pending-commands
(list (list cmd pcmd hide show-if-error))))))
;; Check if IDL ready
(let ((save-point (point-marker)))
@@ -1339,9 +1337,11 @@ message, independent of what HIDE is set to."
(set-marker comint-last-input-end (point))
(comint-simple-send proc cmd)
(setq idlwave-shell-ready nil)
- (when (equal preempt 'wait) ; Get all the output at once
- (setq idlwave-shell-wait-for-output t)
- (accept-process-output proc))))
+ (if (equal preempt 'wait) ; Get all the output at once
+ (while (not idlwave-shell-ready)
+ (when (not (accept-process-output proc 6)) ; long wait
+ (setq idlwave-shell-pending-commands nil)
+ (error "Process timed out"))))))
(goto-char save-point))
(set-buffer save-buffer))))
@@ -1353,7 +1353,7 @@ message, independent of what HIDE is set to."
(if (or (not (setq buf (get-buffer (idlwave-shell-buffer))))
(not (setq proc (get-buffer-process buf))))
(funcall errf "Shell is not running"))
- (if (equal c ?\C-g)
+ (if (equal c ?\C-g)
(funcall errf "Abort")
(comint-send-string proc (char-to-string c)))))
@@ -1394,7 +1394,7 @@ when the IDL prompt gets displayed again after the current IDL command."
(if idlwave-shell-ready
(funcall errf "No IDL program seems to be waiting for input"))
- ;; OK, start the loop
+ ;; OK, start the loop
(message "Character mode on: Sending single chars (`C-g' to exit)")
(message
(catch 'exit
@@ -1474,133 +1474,123 @@ error messages, etc."
(setq output (substring output (string-match "\n" output)))
(while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output)
(setq output (replace-match "" nil t output)))
- (unless
+ (unless
(string-match idlwave-shell-only-prompt-pattern output)
output))
(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*"
"Buffer containing hidden output from IDL commands.")
(defvar idlwave-shell-current-state nil)
-
+
(defun idlwave-shell-filter (proc string)
"Watch for IDL prompt and filter incoming text.
When the IDL prompt is received executes `idlwave-shell-post-command-hook'
and then calls `idlwave-shell-send-command' for any pending commands."
;; We no longer do the cleanup here - this is done by the process sentinel
- (when (eq (process-status idlwave-shell-process-name) 'run)
- ;; OK, process is still running, so we can use it.
- (let ((data (match-data)) p full-output)
- (unwind-protect
- (progn
- ;; Ring the bell if necessary
- (while (setq p (string-match "\C-G" string))
- (ding)
- (aset string p ?\C-j ))
- (if idlwave-shell-hide-output
- (save-excursion
- (while (setq p (string-match "\C-M" string))
- (aset string p ?\ ))
- (set-buffer
- (get-buffer-create idlwave-shell-hidden-output-buffer))
- (goto-char (point-max))
- (insert string))
- (idlwave-shell-comint-filter proc string))
- ;; Watch for magic - need to accumulate the current line
- ;; since it may not be sent all at once.
- (if (string-match "\n" string)
- (progn
- (if idlwave-shell-use-input-mode-magic
- (idlwave-shell-input-mode-magic
- (concat idlwave-shell-accumulation string)))
- (setq idlwave-shell-accumulation
- (substring string
- (progn (string-match "\\(.*[\n\r]+\\)*"
- string)
- (match-end 0)))))
- (setq idlwave-shell-accumulation
- (concat idlwave-shell-accumulation string)))
-
-
+ (if (eq (process-status idlwave-shell-process-name) 'run)
+ ;; OK, process is still running, so we can use it.
+ (let ((data (match-data)) p full-output)
+ (unwind-protect
+ (progn
+ ;; Ring the bell if necessary
+ (while (setq p (string-match "\C-G" string))
+ (ding)
+ (aset string p ?\C-j ))
+ (if idlwave-shell-hide-output
+ (save-excursion
+ (while (setq p (string-match "\C-M" string))
+ (aset string p ?\ ))
+ (set-buffer
+ (get-buffer-create idlwave-shell-hidden-output-buffer))
+ (goto-char (point-max))
+ (insert string))
+ (idlwave-shell-comint-filter proc string))
+ ;; Watch for magic - need to accumulate the current line
+ ;; since it may not be sent all at once.
+ (if (string-match "\n" string)
+ (progn
+ (if idlwave-shell-use-input-mode-magic
+ (idlwave-shell-input-mode-magic
+ (concat idlwave-shell-accumulation string)))
+ (setq idlwave-shell-accumulation
+ (substring string
+ (progn (string-match "\\(.*[\n\r]+\\)*"
+ string)
+ (match-end 0)))))
+ (setq idlwave-shell-accumulation
+ (concat idlwave-shell-accumulation string)))
+
+
;;; Test/Debug code
; (save-excursion (set-buffer
; (get-buffer-create "*idlwave-shell-output*"))
; (goto-char (point-max))
; (insert "\nSTRING===>\n" string "\n<====\n"))
-
- ;; Check for prompt in current accumulating output
- (if (setq idlwave-shell-ready
- (string-match idlwave-shell-prompt-pattern
- idlwave-shell-accumulation))
- (progn
- ;; Gather the command output
+
+ ;; Check for prompt in current accumulating output
+ (when (setq idlwave-shell-ready
+ (string-match idlwave-shell-prompt-pattern
+ idlwave-shell-accumulation))
+ ;; Gather the command output
+ (if idlwave-shell-hide-output
+ (save-excursion
+ (set-buffer idlwave-shell-hidden-output-buffer)
+ (setq full-output (buffer-string))
+ (goto-char (point-max))
+ (re-search-backward idlwave-shell-prompt-pattern nil t)
+ (goto-char (match-end 0))
+ (setq idlwave-shell-command-output
+ (buffer-substring (point-min) (point)))
+ (delete-region (point-min) (point)))
+ (setq idlwave-shell-command-output
+ (with-current-buffer (process-buffer proc)
+ (buffer-substring
+ (save-excursion
+ (goto-char (process-mark proc))
+ (forward-line 0)
+ (point))
+ comint-last-input-end))))
+
+ ;; Scan for state and do post commands - bracket
+ ;; them with idlwave-shell-ready=nil since they may
+ ;; call idlwave-shell-send-command themselves.
+ (let ((idlwave-shell-ready nil))
+ (idlwave-shell-scan-for-state)
+ ;; Show the output in the shell if it contains an error
(if idlwave-shell-hide-output
- (save-excursion
- (set-buffer idlwave-shell-hidden-output-buffer)
- (setq full-output (buffer-string))
- (goto-char (point-max))
- (re-search-backward idlwave-shell-prompt-pattern nil t)
- (goto-char (match-end 0))
- (setq idlwave-shell-command-output
- (buffer-substring (point-min) (point)))
- (delete-region (point-min) (point)))
- (setq idlwave-shell-command-output
- (with-current-buffer (process-buffer proc)
- (buffer-substring
- (save-excursion
- (goto-char (process-mark proc))
- (beginning-of-line nil)
- (point))
- comint-last-input-end))))
-
- ;; Scan for state and do post commands - bracket
- ;; them with idlwave-shell-ready=nil since they may
- ;; call idlwave-shell-send-command themselves.
- (let ((idlwave-shell-ready nil))
- (idlwave-shell-scan-for-state)
- ;; Show the output in the shell if it contains an error
- (if idlwave-shell-hide-output
- (if (and idlwave-shell-show-if-error
- (eq idlwave-shell-current-state 'error))
- (idlwave-shell-comint-filter proc full-output)
- ;; If it's only *mostly* hidden, filter % lines,
- ;; and show anything that remains
- (if (eq idlwave-shell-hide-output 'mostly)
- (let ((filtered
- (idlwave-shell-filter-hidden-output
- full-output)))
- (if filtered
- (idlwave-shell-comint-filter
- proc filtered))))))
-
- ;; Call the post-command hook
- (if (listp idlwave-shell-post-command-hook)
- (progn
- ;(message "Calling list")
- ;(prin1 idlwave-shell-post-command-hook)
- (eval idlwave-shell-post-command-hook))
- ;(message "Calling command function")
- (funcall idlwave-shell-post-command-hook))
-
- ;; Reset to default state for next command.
- ;; Also we do not want to find this prompt again.
- (setq idlwave-shell-accumulation nil
- idlwave-shell-command-output nil
- idlwave-shell-post-command-hook nil
- idlwave-shell-hide-output nil
- idlwave-shell-show-if-error nil
- idlwave-shell-wait-for-output nil))
- ;; Done with post command. Do pending command if
- ;; any.
- (idlwave-shell-send-command))
- ;; We didn't get the prompt yet... maybe accept more output
- (when idlwave-shell-wait-for-output
-;;; Test/Debug code
-; (save-excursion (set-buffer
-; (get-buffer-create "*idlwave-shell-output*"))
-; (goto-char (point-max))
-; (insert "\n<=== WAITING ON OUTPUT ==>\n"))
- (accept-process-output proc 1))))
- (store-match-data data)))))
+ (if (and idlwave-shell-show-if-error
+ (eq idlwave-shell-current-state 'error))
+ (idlwave-shell-comint-filter proc full-output)
+ ;; If it's only *mostly* hidden, filter % lines,
+ ;; and show anything that remains
+ (if (eq idlwave-shell-hide-output 'mostly)
+ (let ((filtered
+ (idlwave-shell-filter-hidden-output
+ full-output)))
+ (if filtered
+ (idlwave-shell-comint-filter
+ proc filtered))))))
+
+ ;; Call the post-command hook
+ (if (listp idlwave-shell-post-command-hook)
+ (progn
+ ;(message "Calling list")
+ ;(prin1 idlwave-shell-post-command-hook)
+ (eval idlwave-shell-post-command-hook))
+ ;(message "Calling command function")
+ (funcall idlwave-shell-post-command-hook))
+
+ ;; Reset to default state for next command.
+ ;; Also we do not want to find this prompt again.
+ (setq idlwave-shell-accumulation nil
+ idlwave-shell-command-output nil
+ idlwave-shell-post-command-hook nil
+ idlwave-shell-hide-output nil
+ idlwave-shell-show-if-error nil))
+ ;; Done with post command. Do pending command if
+ ;; any.
+ (idlwave-shell-send-command)))
+ (store-match-data data)))))
(defun idlwave-shell-sentinel (process event)
"The sentinel function for the IDLWAVE shell process."
@@ -1616,7 +1606,7 @@ and then calls `idlwave-shell-send-command' for any pending commands."
(condition-case nil
(comint-write-input-ring)
(error nil)))))
-
+
(when (and (> (length (frame-list)) 1)
(frame-live-p idlwave-shell-idl-wframe))
(delete-frame idlwave-shell-idl-wframe)
@@ -1640,8 +1630,8 @@ and then calls `idlwave-shell-send-command' for any pending commands."
;; in module and file names. I am not sure if it will be necessary to
;; change this. Currently it seems to work the way it is.
(defvar idlwave-shell-syntax-error
- "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
- "A regular expression to match an IDL syntax error.
+ "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
+ "A regular expression to match an IDL syntax error.
The 1st pair matches the file name, the second pair matches the line
number.")
@@ -1649,16 +1639,16 @@ number.")
"^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
"A regular expression to match any IDL error.")
-(defvar idlwave-shell-halting-error
+(defvar idlwave-shell-halting-error
"^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n"
"A regular expression to match errors which halt execution.")
-(defvar idlwave-shell-cant-continue-error
+(defvar idlwave-shell-cant-continue-error
"^% Can't continue from this point.\n"
"A regular expression to match errors stepping errors.")
(defvar idlwave-shell-file-line-message
- (concat
+ (concat
"\\(" ; program name group (1)
"\\$MAIN\\$\\|" ; main level routine
"\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..]
@@ -1676,7 +1666,7 @@ number.")
"\\)" ; end line number group (5)
)
"*A regular expression to parse out the file name and line number.
-The 1st group should match the subroutine name.
+The 1st group should match the subroutine name.
The 3rd group is the line number.
The 5th group is the file name.
All parts may contain linebreaks surrounded by spaces. This is important
@@ -1695,9 +1685,9 @@ the above."
(cond
;; Make sure we have output
((not idlwave-shell-command-output))
-
+
;; First Priority: Syntax and other errors
- ((or
+ ((or
(string-match idlwave-shell-syntax-error
idlwave-shell-command-output)
(string-match idlwave-shell-other-error
@@ -1711,19 +1701,19 @@ the above."
(setq idlwave-shell-error-last (point)))
(setq idlwave-shell-current-state 'error)
(idlwave-shell-goto-next-error))
-
+
;; Second Priority: Halting errors
((string-match idlwave-shell-halting-error
idlwave-shell-command-output)
;; Grab the file and line state info.
(setq idlwave-shell-calling-stack-index 0)
(setq idlwave-shell-halt-frame
- (idlwave-shell-parse-line
- (substring idlwave-shell-command-output
+ (idlwave-shell-parse-line
+ (substring idlwave-shell-command-output
(match-beginning 2)))
idlwave-shell-current-state 'error)
(idlwave-shell-display-line (idlwave-shell-pc-frame)))
-
+
;; Third Priority: Various types of innocuous HALT and
;; TRACEBACK messages.
((or (setq trace (string-match idlwave-shell-trace-message-re
@@ -1733,25 +1723,25 @@ the above."
;; Grab the file and line state info.
(setq idlwave-shell-calling-stack-index 0)
(setq idlwave-shell-halt-frame
- (idlwave-shell-parse-line
+ (idlwave-shell-parse-line
(substring idlwave-shell-command-output (match-end 0))))
(setq idlwave-shell-current-state 'halt)
;; Don't debug trace messages
(idlwave-shell-display-line (idlwave-shell-pc-frame) nil
(if trace 'no-debug)))
-
- ;; Fourth Priority: Breakpoints
+
+ ;; Fourth Priority: Breakpoints
((string-match idlwave-shell-break-message
idlwave-shell-command-output)
(setq idlwave-shell-calling-stack-index 0)
- (setq idlwave-shell-halt-frame
- (idlwave-shell-parse-line
+ (setq idlwave-shell-halt-frame
+ (idlwave-shell-parse-line
(substring idlwave-shell-command-output (match-end 0))))
;; We used to count hits on breakpoints
;; this is no longer supported since IDL breakpoints
;; have learned counting.
;; Do breakpoint command processing
- (let ((bp (assoc
+ (let ((bp (assoc
(list
(nth 0 idlwave-shell-halt-frame)
(nth 1 idlwave-shell-halt-frame))
@@ -1764,9 +1754,9 @@ the above."
;; A breakpoint that we did not know about - perhaps it was
;; set by the user... Let's update our list.
(idlwave-shell-bp-query)))
- (setq idlwave-shell-current-state 'breakpoint)
+ (setq idlwave-shell-current-state 'breakpoint)
(idlwave-shell-display-line (idlwave-shell-pc-frame)))
-
+
;; Last Priority: Can't Step errors
((string-match idlwave-shell-cant-continue-error
idlwave-shell-command-output)
@@ -1775,13 +1765,14 @@ the above."
;; Otherwise, no particular state
(t (setq idlwave-shell-current-state nil)))))
+
(defun idlwave-shell-parse-line (string &optional skip-main)
"Parse IDL message for the subroutine, file name and line number.
We need to work hard here to remove the stupid line breaks inserted by
IDL5. These line breaks can be right in the middle of procedure
or file names.
It is very difficult to come up with a robust solution. This one seems
-to be pretty good though.
+to be pretty good though.
Here is in what ways it improves over the previous solution:
@@ -1806,7 +1797,7 @@ statements."
(setq procedure (match-string 1 string)
number (match-string 3 string)
file (match-string 5 string))
-
+
;; Repair the strings
(setq procedure (idlwave-shell-repair-string procedure))
(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
file name."
(let ((file1 "") (file2 "") (start 0))
;; We scan no further than to the next "^%" line
- (if (string-match "^%" file)
+ (if (string-match "^%" file)
(setq file (substring file 0 (match-beginning 0))))
;; Take out the line breaks
(while (string-match "[ \t]*\n[ \t]*" file start)
@@ -1887,7 +1878,7 @@ file name."
The size is given by `idlwave-shell-graphics-window-size'."
(interactive "P")
(let ((n (if n (prefix-numeric-value n) 0)))
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
(apply 'format "window,%d,xs=%d,ys=%d"
n idlwave-shell-graphics-window-size)
nil (idlwave-shell-hide-p 'misc) nil t)))
@@ -1907,16 +1898,16 @@ directory."
Also get rid of widget events in the queue."
(interactive "P")
(save-selected-window
- ;;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 &
- (idlwave-shell-send-command "retall" nil
- (if (idlwave-shell-hide-p 'misc) 'mostly)
+ ;;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 &
+ (idlwave-shell-send-command "retall" nil
+ (if (idlwave-shell-hide-p 'misc) 'mostly)
nil t)
(idlwave-shell-display-line nil)))
(defun idlwave-shell-closeall (&optional arg)
"Close all open files."
(interactive "P")
- (idlwave-shell-send-command "close,/all" nil
+ (idlwave-shell-send-command "close,/all" nil
(idlwave-shell-hide-p 'misc) nil t))
(defun idlwave-shell-quit (&optional arg)
@@ -1932,7 +1923,7 @@ With prefix ARG, exit without confirmation."
(defun idlwave-shell-reset (&optional hidden)
"Reset IDL. Return to main level and destroy the leftover variables.
-This issues the following commands:
+This issues the following commands:
RETALL
WIDGET_CONTROL,/RESET
CLOSE, /ALL
@@ -1982,14 +1973,14 @@ HEAP_GC, /VERBOSE"
;; Set dummy values and kill the text
(setq sep "@" sep-re "@ *" text "")
(if idlwave-idlwave_routine_info-compiled
- (message
- "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n"
+ (message
+ "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n"
idlwave-shell-command-output)))
(if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text)
(setq text (substring text 0 (match-beginning 0)))
(if idlwave-idlwave_routine_info-compiled
- (message
- "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n"
+ (message
+ "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n"
idlwave-shell-command-output)))
(if (string-match "\\S-" text)
;; Obviously, the pro worked. Make a note that we have it now.
@@ -2007,59 +1998,59 @@ HEAP_GC, /VERBOSE"
key (nth 4 specs)
keys (if (and (stringp key)
(not (string-match "\\` *\\'" key)))
- (mapcar 'list
+ (mapcar 'list
(delete "" (idlwave-split-string key " +")))))
(setq name (idlwave-sintern-routine-or-method name class t)
class (idlwave-sintern-class class t)
file (if (equal file "") nil file)
- keys (mapcar (lambda (x)
+ keys (mapcar (lambda (x)
(list (idlwave-sintern-keyword (car x) t))) keys))
-
+
;; In the following ignore routines already defined in buffers,
;; assuming that if the buffer stuff differs, it is a "new"
;; version, not yet compiled, and should take precedence.
;; We could do the same for the library to avoid duplicates -
;; but I think frequently a user might have several versions of
- ;; the same function in different programs, and in this case the
+ ;; the same function in different programs, and in this case the
;; compiled one will be the best guess of all versions.
;; Therefore, we leave duplicates of library routines in.
(cond ((string= name "$MAIN$")) ; ignore this one
((and (string= type "PRO")
;; FIXME: is it OK to make the buffer routines dominate?
(or t (null file)
- (not (idlwave-rinfo-assq name 'pro class
+ (not (idlwave-rinfo-assq name 'pro class
idlwave-buffer-routines)))
;; FIXME: is it OK to make the library routines dominate?
- ;;(not (idlwave-rinfo-assq name 'pro class
+ ;;(not (idlwave-rinfo-assq name 'pro class
;; idlwave-library-routines))
)
- (setq entry (list name 'pro class
- (cons 'compiled
+ (setq entry (list name 'pro class
+ (cons 'compiled
(if file
(list
(file-name-nondirectory file)
- (idlwave-sintern-dir
+ (idlwave-sintern-dir
(file-name-directory file)))))
cs (cons nil keys)))
- (if file
+ (if file
(push entry idlwave-compiled-routines)
(push entry idlwave-unresolved-routines)))
-
+
((and (string= type "FUN")
;; FIXME: is it OK to make the buffer routines dominate?
(or t (not file)
- (not (idlwave-rinfo-assq name 'fun class
+ (not (idlwave-rinfo-assq name 'fun class
idlwave-buffer-routines)))
;; FIXME: is it OK to make the library routines dominate?
- ;; (not (idlwave-rinfo-assq name 'fun class
+ ;; (not (idlwave-rinfo-assq name 'fun class
;; idlwave-library-routines))
)
- (setq entry (list name 'fun class
+ (setq entry (list name 'fun class
(cons 'compiled
(if file
(list
(file-name-nondirectory file)
- (idlwave-sintern-dir
+ (idlwave-sintern-dir
(file-name-directory file)))))
cs (cons nil keys)))
(if file
@@ -2076,7 +2067,7 @@ Change the default directory for the process buffer to concur."
(set-buffer (idlwave-shell-buffer))
(if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]"
idlwave-shell-command-output)
- (let ((dir (substring idlwave-shell-command-output
+ (let ((dir (substring idlwave-shell-command-output
(match-beginning 1) (match-end 1))))
; (message "Setting Emacs working dir to %s" dir)
(setq idlwave-shell-default-directory dir)
@@ -2090,10 +2081,10 @@ Change the default directory for the process buffer to concur."
expression)
(save-excursion
(goto-char apos)
- (setq expression (buffer-substring
+ (setq expression (buffer-substring
(catch 'exit
(while t
- (if (not (re-search-backward
+ (if (not (re-search-backward
"[^][.A-Za-z0-9_() ]" bos t))
(throw 'exit bos)) ;ran into bos
(if (not (idlwave-is-pointer-dereference bol))
@@ -2102,7 +2093,8 @@ Change the default directory for the process buffer to concur."
(when (not (string= expression ""))
(setq idlwave-shell-get-object-class nil)
(idlwave-shell-send-command
- (concat "print,obj_class(" expression ")")
+ (concat "if obj_valid(" expression ") then print,obj_class("
+ expression ")")
'idlwave-shell-parse-object-class
'hide 'wait)
;; 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."
(defun idlwave-shell-parse-object-class ()
"Parse the output of the obj_class command."
- (let ((match "print,obj_class([^\n\r]+[\n\r ]"))
- (if (and
- (not (string-match (concat match match "\\s-*^[\n\r]+"
- "% Syntax error")
- idlwave-shell-command-output))
- (string-match (concat match "\\([A-Za-z_0-9]+\\)")
- idlwave-shell-command-output))
- (setq idlwave-shell-get-object-class
+ (let ((match "obj_class([^\n\r]+[\n\r ]"))
+ (if (string-match (concat match "\\([A-Za-z_0-9]+\\) *[\n\r]\\("
+ idlwave-shell-prompt-pattern "\\)")
+ idlwave-shell-command-output)
+ (setq idlwave-shell-get-object-class
(match-string 1 idlwave-shell-command-output)))))
(defvar idlwave-sint-sysvars nil)
@@ -2135,7 +2124,7 @@ keywords."
(interactive "P")
(let (exec-cmd)
(cond
- ((and
+ ((and
(setq exec-cmd (idlwave-shell-executive-command))
(cdr exec-cmd)
(member (upcase (cdr exec-cmd))
@@ -2145,7 +2134,7 @@ keywords."
(idlwave-shell-complete-filename))
((car-safe exec-cmd)
- (setq idlwave-completion-help-info
+ (setq idlwave-completion-help-info
'(idlwave-shell-complete-execcomm-help))
(idlwave-complete-in-buffer 'execcomm 'execcomm
idlwave-executive-commands-alist nil
@@ -2164,7 +2153,7 @@ keywords."
(let ((case-fold-search t))
(not (looking-at ".*obj_new")))))
(idlwave-shell-complete-filename))
-
+
(t
;; Default completion of modules and keywords
(idlwave-complete arg)))))
@@ -2186,7 +2175,7 @@ keywords."
We assume that we are after a file name when completing one of the
args of an executive .run, .rnew or .compile."
;; CWD might have changed, resync, to set default directory
- (idlwave-shell-resync-dirs)
+ (idlwave-shell-resync-dirs)
(let ((comint-file-name-chars idlwave-shell-file-name-chars))
(comint-dynamic-complete-as-filename)))
@@ -2227,7 +2216,7 @@ args of an executive .run, .rnew or .compile."
(defun idlwave-shell-redisplay (&optional hide)
"Tries to resync the display with where execution has stopped.
-Issues a \"help,/trace\" command followed by a call to
+Issues a \"help,/trace\" command followed by a call to
`idlwave-shell-display-line'. Also updates the breakpoint
overlays."
(interactive)
@@ -2240,7 +2229,7 @@ overlays."
(idlwave-shell-bp-query))
(defun idlwave-shell-display-level-in-calling-stack (&optional hide)
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
"help,/trace"
`(progn
;; scanning for the state will reset the stack level - restore it
@@ -2271,14 +2260,14 @@ overlays."
(setq idlwave-shell-calling-stack-index nmin
message (format "%d is the current calling stack level - can't go further down"
(- nmin)))))
- (setq idlwave-shell-calling-stack-routine
+ (setq idlwave-shell-calling-stack-routine
(nth 2 (nth idlwave-shell-calling-stack-index stack)))
;; only edebug if in that mode already
- (idlwave-shell-display-line
+ (idlwave-shell-display-line
(nth idlwave-shell-calling-stack-index stack) nil
- (unless idlwave-shell-electric-debug-mode 'no-debug))
- (message (or message
+ (unless idlwave-shell-electric-debug-mode 'no-debug))
+ (message (or message
(format "In routine %s (stack level %d)"
idlwave-shell-calling-stack-routine
(- idlwave-shell-calling-stack-index))))))
@@ -2309,7 +2298,7 @@ used. Does nothing if the resulting frame is nil."
(defun idlwave-shell-pc-frame ()
"Returns the frame for IDL execution."
(and idlwave-shell-halt-frame
- (list (nth 0 idlwave-shell-halt-frame)
+ (list (nth 0 idlwave-shell-halt-frame)
(nth 1 idlwave-shell-halt-frame)
(nth 2 idlwave-shell-halt-frame))))
@@ -2327,7 +2316,7 @@ column in the line. If NO-DEBUG is non-nil, do *not* toggle the electric
debug mode."
(if (not frame)
;; Remove stop-line overlay from old position
- (progn
+ (progn
(setq overlay-arrow-string nil)
(setq idlwave-shell-mode-line-info nil)
(setq idlwave-shell-is-stopped nil)
@@ -2344,10 +2333,10 @@ debug mode."
;;;
;;; buffer : the buffer to display a line in.
;;; select-shell: current buffer is the shell.
-;;;
+;;;
(setq idlwave-shell-mode-line-info
(if (nth 2 frame)
- (format "[%d:%s]"
+ (format "[%d:%s]"
(- idlwave-shell-calling-stack-index)
(nth 2 frame))))
(let* ((buffer (idlwave-find-file-noselect (car frame) 'shell))
@@ -2371,7 +2360,7 @@ debug mode."
(forward-line 0)
(setq pos (point))
(setq idlwave-shell-is-stopped t)
-
+
(if idlwave-shell-stop-line-overlay
;; Move overlay
(move-overlay idlwave-shell-stop-line-overlay
@@ -2393,12 +2382,12 @@ debug mode."
;; If we have the column of the error, move the cursor there.
(if col (move-to-column col))
(setq pos (point))
-
+
;; Enter electric debug mode, if not prohibited and not in
;; it already
- (when (and (or
+ (when (and (or
(eq idlwave-shell-automatic-electric-debug t)
- (and
+ (and
(eq idlwave-shell-automatic-electric-debug 'breakpoint)
(not (eq idlwave-shell-current-state 'error))))
(not no-debug)
@@ -2406,14 +2395,14 @@ debug mode."
(not idlwave-shell-electric-debug-mode))
(idlwave-shell-electric-debug-mode)
(setq electric t)))
-
+
;; Make sure pos is really displayed in the window.
(set-window-point window pos)
-
- ;; If we came from the shell, go back there. Otherwise select
+
+ ;; If we came from the shell, go back there. Otherwise select
;; the window where the error is displayed.
(if (or (and idlwave-shell-electric-zap-to-file electric)
- (and (equal (buffer-name) (idlwave-shell-buffer))
+ (and (equal (buffer-name) (idlwave-shell-buffer))
(not select-shell)))
(select-window window))))))
@@ -2423,23 +2412,24 @@ debug mode."
(interactive "p")
(or (not arg) (< arg 1)
(setq arg 1))
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
(concat ".s " (if (integerp arg) (int-to-string arg) arg))
nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
(defun idlwave-shell-stepover (arg)
"Stepover one source line.
-If given prefix argument ARG, step ARG source lines.
+If given prefix argument ARG, step ARG source lines.
Uses IDL's stepover executive command which does not enter called functions."
(interactive "p")
(or (not arg) (< arg 1)
(setq arg 1))
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
(concat ".so " (if (integerp arg) (int-to-string arg) arg))
nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
-(defun idlwave-shell-break-here (&optional count cmd condition no-show)
- "Set breakpoint at current line.
+(defun idlwave-shell-break-here (&optional count cmd condition disabled
+ no-show)
+ "Set breakpoint at current line.
If Count is nil then an ordinary breakpoint is set. We treat a count
of 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
the statement count times.
Optional argument CMD is a list or function to evaluate upon reaching
-the breakpoint."
-
+the breakpoint. CONDITION is a break condition, and DISABLED, if
+non-nil disables the breakpoint"
(interactive "P")
(when (listp count)
- (if (equal (car count) 4)
+ (if (equal (car count) 4)
(setq condition (read-string "Break Condition: ")))
(setq count nil))
(idlwave-shell-set-bp
;; Create breakpoint
(idlwave-shell-bp (idlwave-shell-current-frame)
- (list count cmd condition nil)
+ (list count cmd condition disabled)
(idlwave-shell-current-module))
no-show))
@@ -2467,14 +2457,14 @@ This is run on `idlwave-shell-post-command-hook'.
Offers to recompile the procedure if we failed. This usually fixes
the problem with not being able to set the breakpoint."
;; Scan for message
- (if (and idlwave-shell-command-output
- (string-match "% BREAKPOINT: *Unable to find code"
- idlwave-shell-command-output))
- ;; Offer to recompile
- (progn
+ (if idlwave-shell-command-output
+ (cond
+ ((string-match "% BREAKPOINT: *Unable to find code"
+ idlwave-shell-command-output)
+ ;; Offer to recompile
(if (progn
(beep)
- (y-or-n-p
+ (y-or-n-p
(concat "Okay to recompile file "
(idlwave-shell-bp-get bp 'file) " ")))
;; Recompile
@@ -2482,17 +2472,21 @@ the problem with not being able to set the breakpoint."
;; Clean up before retrying
(idlwave-shell-command-failure)
(idlwave-shell-send-command
- (concat ".run " (idlwave-shell-bp-get bp 'file)) nil
+ (concat ".run " (idlwave-shell-bp-get bp 'file)) nil
(if (idlwave-shell-hide-p 'run) 'mostly) nil t)
;; Try setting breakpoint again
(idlwave-shell-set-bp bp))
(beep)
(message "Unable to set breakpoint.")
- (idlwave-shell-command-failure)
- )
- ;; return non-nil if no error found
- nil)
- 'okay))
+ (idlwave-shell-command-failure))
+ nil)
+
+ ((string-match "% Syntax error" idlwave-shell-command-output)
+ (message "Syntax error in condition.")
+ (idlwave-shell-command-failure)
+ nil)
+
+ (t 'okay))))
(defun idlwave-shell-command-failure ()
"Do any necessary clean up when an IDL command fails.
@@ -2506,9 +2500,9 @@ breakpoint can not be set."
(defun idlwave-shell-cont (&optional no-show)
"Continue executing."
(interactive)
- (idlwave-shell-send-command ".c" (unless no-show
+ (idlwave-shell-send-command ".c" (unless no-show
'(idlwave-shell-redisplay 'hide))
- (if (idlwave-shell-hide-p 'debug) 'mostly)
+ (if (idlwave-shell-hide-p 'debug) 'mostly)
nil t))
(defun idlwave-shell-go ()
@@ -2589,7 +2583,7 @@ at a breakpoint."
((eq force 'enable) (setq disabled t)))
(when bp
(setf (nth 3 (cdr (cdr bp))) (not disabled))
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
(concat "breakpoint,"
(if disabled "/enable," "/disable,")
(int-to-string (idlwave-shell-bp-get bp)))
@@ -2603,18 +2597,18 @@ If ENABLE is non-nil, enable them instead."
(while bpl
(setq disabled (idlwave-shell-bp-get (car bpl) 'disabled))
(when (idlwave-xor (not disabled) (eq enable 'enable))
- (idlwave-shell-toggle-enable-current-bp
+ (idlwave-shell-toggle-enable-current-bp
(car bpl) (if (eq enable 'enable) 'enable 'disable) no-update)
(push (car bpl) modified))
(setq bpl (cdr bpl)))
(unless no-update (idlwave-shell-bp-query))
modified))
-
+
(defun idlwave-shell-to-here ()
"Set a breakpoint with count 1 then continue."
(interactive)
(let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update)))
- (idlwave-shell-break-here 1 nil nil 'no-show)
+ (idlwave-shell-break-here 1 nil nil nil 'no-show)
(idlwave-shell-cont 'no-show)
(idlwave-shell-enable-all-bp 'enable 'no-update disabled))
(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
for the first line of the corresponding module. If MODULE is `t', set
in the current routine."
(interactive)
- (let (module)
- (save-excursion
- (skip-chars-backward "a-zA-Z0-9_$")
- (if (looking-at idlwave-identifier)
- (setq module (match-string 0))
- (error "No identifier at point")))
- (idlwave-shell-send-command
- idlwave-shell-sources-query
- `(progn
- (idlwave-shell-sources-filter)
- (idlwave-shell-set-bp-in-module ,module))
- 'hide)))
+ (let ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))))
+ (if module
+ (progn
+ (setq module (idlwave-make-full-name (nth 2 module) (car module)))
+ (idlwave-shell-module-source-query module)
+ (idlwave-shell-set-bp-in-module module))
+ (error "No identifier at point"))))
+
(defun idlwave-shell-set-bp-in-module (module)
"Set breakpoint in module. Assumes that `idlwave-shell-sources-alist'
contains an entry for that module."
- (let ((source-file (car-safe
+ (let ((source-file (car-safe
(cdr-safe
(assoc (upcase module)
idlwave-shell-sources-alist))))
@@ -2666,7 +2656,7 @@ contains an entry for that module."
(save-excursion
(goto-char (point-min))
(let ((case-fold-search t))
- (if (re-search-forward
+ (if (re-search-forward
(concat "^[ \t]*\\(pro\\|function\\)[ \t]+"
(downcase module)
"[ \t\n,]") nil t)
@@ -2708,7 +2698,7 @@ Sets a breakpoint with count 1 at end of block, then continues."
"Attempt to run until this procedure exits.
Runs to the last statement and then steps 1 statement. Use the .out command."
(interactive)
- (idlwave-shell-send-command ".o" nil
+ (idlwave-shell-send-command ".o" nil
(if (idlwave-shell-hide-p 'debug) 'mostly)
nil t))
@@ -2755,7 +2745,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
(interactive "e")
(let ((transient-mark-mode t)
(zmacs-regions t)
- (tracker (if (featurep 'xemacs)
+ (tracker (if (featurep 'xemacs)
(if (fboundp 'default-mouse-track-event-is-with-button)
'idlwave-xemacs-hack-mouse-track
'mouse-track)
@@ -2773,7 +2763,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
(let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button)))
(unwind-protect
(progn
- (fset 'default-mouse-track-event-is-with-button
+ (fset 'default-mouse-track-event-is-with-button
'idlwave-default-mouse-track-event-is-with-button)
(mouse-track event))
(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."
(defvar idlwave-shell-examine-completion-list nil)
(defun idlwave-shell-print (arg &optional help ev complete-help-type)
- "Print current expression.
+ "Print current expression.
With HELP non-nil, show help on expression. If HELP is a string,
the expression will be put in place of ___, e.g.:
@@ -2838,11 +2828,11 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
(save-excursion
(let* ((process (get-buffer-process (current-buffer)))
(process-mark (if process (process-mark process)))
- (stack-label
+ (stack-label
(if (and (integerp idlwave-shell-calling-stack-index)
(> idlwave-shell-calling-stack-index 0))
- (format " [-%d:%s]"
- idlwave-shell-calling-stack-index
+ (format " [-%d:%s]"
+ idlwave-shell-calling-stack-index
idlwave-shell-calling-stack-routine)))
expr beg end cmd examine-hook)
(cond
@@ -2872,7 +2862,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
;; an array
(forward-sexp))
(setq end (point)))))
-
+
;; Get expression, but first move the begin mark if a
;; process-mark is inside the region, to keep the overlay from
;; wandering in the Shell.
@@ -2883,61 +2873,61 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
;; Show the overlay(s) and attach any necessary hooks and filters
(when (and beg end idlwave-shell-expression-overlay)
- (move-overlay idlwave-shell-expression-overlay beg end
+ (move-overlay idlwave-shell-expression-overlay beg end
(current-buffer))
- (add-hook 'pre-command-hook
+ (add-hook 'pre-command-hook
'idlwave-shell-delete-expression-overlay))
- (setq examine-hook
+ (setq examine-hook
(if idlwave-shell-separate-examine-output
'idlwave-shell-examine-display
'idlwave-shell-examine-highlight))
(add-hook 'pre-command-hook
'idlwave-shell-delete-output-overlay)
-
+
;; Remove empty or comment-only lines
(while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr)
(setq expr (replace-match "\n" t t expr)))
;; Concatenate continuation lines
- (while (string-match "[ \t]*\\$.*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr)
+ (while (string-match "[ \t]*\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr)
(setq expr (replace-match "" t t expr)))
;; Remove final newline
(if (string-match "\n[ \t\r]*\\'" expr)
(setq expr (replace-match "" t t expr)))
-
+
(catch 'exit
;; Pop-up or complete on the examine selection list, if appropriate
(if (or
complete-help-type
(and ev idlwave-shell-examine-alist)
(consp help))
- (let ((help-cons
+ (let ((help-cons
(if (consp help) help
- (assoc
+ (assoc
;; A cons from either a pop-up or mini-buffer completion
(if complete-help-type
(idlwave-one-key-select 'idlwave-shell-examine-alist
"Examine with: " 1.5)
;; (idlwave-completing-read
-;; "Examine with: "
+;; "Examine with: "
;; idlwave-shell-examine-alist nil nil nil
;; 'idlwave-shell-examine-completion-list
;; "Print")
- (idlwave-popup-select
- ev
- (mapcar 'car idlwave-shell-examine-alist)
+ (idlwave-popup-select
+ ev
+ (mapcar 'car idlwave-shell-examine-alist)
"Examine with"))
idlwave-shell-examine-alist))))
(setq help (cdr help-cons))
(if (null help) (throw 'exit nil))
(if idlwave-shell-separate-examine-output
- (setq idlwave-shell-examine-label
- (concat
+ (setq idlwave-shell-examine-label
+ (concat
(format "==>%s<==\n%s:" expr (car help-cons))
stack-label "\n"))))
;; The regular help label (no popups, cons cells, etc.)
(setq idlwave-shell-examine-label
(concat
- (format "==>%s<==\n%s:" expr
+ (format "==>%s<==\n%s:" expr
(cond ((null help) "print")
((stringp help) help)
(t (symbol-name help))))
@@ -2950,9 +2940,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
idlwave-shell-calling-stack-index)))
(setq cmd (idlwave-shell-help-statement help expr))
;;(idlwave-shell-recenter-shell-window)
- (idlwave-shell-send-command
- cmd
- examine-hook
+ (idlwave-shell-send-command
+ cmd
+ examine-hook
(if idlwave-shell-separate-examine-output 'hide))))))
(defvar idlwave-shell-examine-window-alist nil
@@ -2979,9 +2969,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
(let* ((end (or
(re-search-backward idlwave-shell-prompt-pattern nil t)
(point-max)))
- (beg (progn
+ (beg (progn
(goto-char
- (or (progn (if (re-search-backward
+ (or (progn (if (re-search-backward
idlwave-shell-prompt-pattern nil t)
(match-end 0)))
(point-min)))
@@ -2998,21 +2988,21 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
(setq buffer-read-only t)
(move-overlay idlwave-shell-output-overlay cur-beg cur-end
(current-buffer))
-
+
;; Look for the examine buffer in all windows. If one is
;; found in a frame all by itself, use that, otherwise, switch
;; to or create an examine window in this frame, and resize if
;; it's a newly created window
(let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible)))
- (setq win (idlwave-display-buffer
- "*Examine*"
+ (setq win (idlwave-display-buffer
+ "*Examine*"
nil
(let ((list winlist) thiswin)
(catch 'exit
(save-selected-window
(while (setq thiswin (pop list))
(select-window thiswin)
- (if (one-window-p)
+ (if (one-window-p)
(throw 'exit (window-frame thiswin)))))))))
(set-window-start win (point-min)) ; Ensure the point is visible.
(save-selected-window
@@ -3033,7 +3023,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
;; And add the new value.
(if (setq elt (assoc win idlwave-shell-examine-window-alist))
(setcdr elt (window-height))
- (add-to-list 'idlwave-shell-examine-window-alist
+ (add-to-list 'idlwave-shell-examine-window-alist
(cons win (window-height)))))))))
;; Recenter for maximum output, after widened
(save-selected-window
@@ -3051,7 +3041,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
(defun idlwave-shell-examine-display-clear ()
(interactive)
- (save-excursion
+ (save-excursion
(let ((buf (get-buffer "*Examine*")))
(when (bufferp buf)
(set-buffer buf)
@@ -3072,36 +3062,58 @@ routine_names, there is no guarantee that this will work with future
versions of IDL."
(let ((fetch (- 0 level))
(start 0)
- var rnvar pre post)
+ var fetch-start fetch-end pre post)
;; FIXME: In the following we try to find the variables in expression
;; This is quite empirical - I don't know in what situations this will
;; break. We will look for identifiers and exclude cases where we
;; know it is not a variable. To distinguish array references from
;; function calls, we require that arrays use [] instead of ()
-
+
(while (string-match
"\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start)
(setq var (match-string 2 expr)
- start (match-beginning 2)
+ start (match-end 2)
pre (substring expr 0 (match-beginning 2))
post (substring expr (match-end 2)))
- (cond
- ;; Exclude identifiers which are not variables
- ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD
- ((and (string-match "[,(][ \t]*\\'" pre)
- (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD
- ((string-match "\\`(" post)) ;; a function
- ((string-match "->[ \t]*\\'" pre)) ;; a method
- ((string-match "\\.\\'" pre)) ;; structure member
+ (cond
+ ((or
+ ;; Exclude identifiers which are not variables
+ (string-match ",[ \t$\n]*/\\'" pre) ;; a `/' KEYWORD
+ (and (string-match "[,(][ \t\n]*\\'" pre)
+ (string-match "\\`[ \t]*=" post)) ;; a `=' KEYWORD
+ (string-match "\\`(" post) ;; a function
+ (string-match "->[ \t]*\\'" pre) ;; a method
+ (string-match "\\.\\'" pre))) ;; structure member
+
+ ;; Skip over strings
((and (string-match "\\([\"\']\\)[^\1]*$" pre)
- (string-match (concat "^[^" (match-string 1 pre) "]*"
- (match-string 1 pre)) post)))
- (t ;; seems to be a variable - replace its name in the
- ;; expression with the fetch.
- (setq rnvar (format "(routine_names('%s',fetch=%d))" var fetch)
- expr (concat pre rnvar post)
- start (+ start (length rnvar))))))
+ (string-match (concat "^[^" (match-string 1 pre) "]*"
+ (match-string 1 pre)) post))
+ (setq start (+ start (match-end 0))))
+
+
+ ;; seems to be a variable - delimit its name
+ (t
+ (put-text-property start (- start (length var)) 'fetch t expr))))
+
+ (setq start 0)
+ (while (setq fetch-start
+ (next-single-property-change start 'fetch expr))
+ (if (get-text-property start 'fetch expr) ; it's on in range
+ (setq fetch-end fetch-start ;it's off in range
+ fetch-start start)
+ (setq fetch-end (next-single-property-change fetch-start 'fetch expr)))
+ (unless fetch-end (setq fetch-end (length expr)))
+ (remove-text-properties fetch-start fetch-end '(fetch) expr)
+ (setq expr (concat (substring expr 0 fetch-start)
+ (format "(routine_names('%s',fetch=%d))"
+ (substring expr fetch-start fetch-end)
+ fetch)
+ (substring expr fetch-end)))
+ (setq start fetch-end))
+ (if (get-text-property 0 'fetch expr) ; Full expression, left over
+ (setq expr (format "(routine_names('%s',fetch=%d))" expr fetch)))
expr))
@@ -3113,13 +3125,13 @@ to insert expression in place of the marker ___, e.g.: print,
size(___,/DIMENSIONS)"
(cond
((null help) (concat "print, " expr))
- ((stringp help)
+ ((stringp help)
(if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help)
(concat (substring help 0 (match-beginning 2))
expr
(substring help (match-end 2)))))
(t (concat "help, " expr))))
-
+
(defun idlwave-shell-examine-highlight ()
"Highlight the most recent IDL output."
@@ -3127,7 +3139,7 @@ size(___,/DIMENSIONS)"
(process (get-buffer-process buffer))
(process-mark (if process (process-mark process)))
output-begin output-end)
- (save-excursion
+ (save-excursion
(set-buffer buffer)
(goto-char process-mark)
(beginning-of-line)
@@ -3135,12 +3147,12 @@ size(___,/DIMENSIONS)"
(re-search-backward idlwave-shell-prompt-pattern nil t)
(beginning-of-line 2)
(setq output-begin (point)))
-
+
;; First make sure the shell window is visible
(idlwave-display-buffer (idlwave-shell-buffer)
nil (idlwave-shell-shell-frame))
(if (and idlwave-shell-output-overlay process-mark)
- (move-overlay idlwave-shell-output-overlay
+ (move-overlay idlwave-shell-output-overlay
output-begin output-end buffer))))
(defun idlwave-shell-delete-output-overlay ()
@@ -3151,7 +3163,7 @@ size(___,/DIMENSIONS)"
(delete-overlay idlwave-shell-output-overlay))
(error nil))
(remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay)))
-
+
(defun idlwave-shell-delete-expression-overlay ()
(unless (or (eq this-command 'idlwave-shell-mouse-nop)
(eq this-command 'handle-switch-frame))
@@ -3180,7 +3192,7 @@ contains four items:
count - number of times to execute breakpoint. When count reaches 0
the breakpoint is cleared and removed from the alist.
-command - command to execute when breakpoint is reached, either a
+command - command to execute when breakpoint is reached, either a
lisp function to be called with `funcall' with no arguments or a
list to be evaluated with `eval'.
@@ -3213,11 +3225,11 @@ If there is a prefix argument, display IDL process."
(insert "\nend\n"))
(save-buffer 0)))
(idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file)
- nil
+ nil
(if (idlwave-shell-hide-p 'run) 'mostly)
nil t)
(if n
- (idlwave-display-buffer (idlwave-shell-buffer)
+ (idlwave-display-buffer (idlwave-shell-buffer)
nil (idlwave-shell-shell-frame))))
(defun idlwave-shell-evaluate-region (beg end &optional n)
@@ -3228,7 +3240,7 @@ Does not work for a region with multiline blocks - use
(interactive "r\nP")
(idlwave-shell-send-command (buffer-substring beg end))
(if n
- (idlwave-display-buffer (idlwave-shell-buffer)
+ (idlwave-display-buffer (idlwave-shell-buffer)
nil (idlwave-shell-shell-frame))))
(defun idlwave-shell-delete-temp-files ()
@@ -3283,7 +3295,7 @@ Queries IDL using the string in `idlwave-shell-bp-query'."
'hide))
(defun idlwave-shell-bp-get (bp &optional item)
- "Get a value for a breakpoint.
+ "Get a value for a breakpoint.
BP has the form of elements in idlwave-shell-bp-alist. Optional
second arg ITEM is the particular value to retrieve. ITEM can be
'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or
@@ -3318,8 +3330,8 @@ breakpoint overlays."
;; Searching the breakpoints
;; In IDL 5.5, the breakpoint reporting format changed.
(bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)")
- (bp-re55
- (concat
+ (bp-re55
+ (concat
"^\\s-*\\([0-9]+\\)" ; 1 index
"\\s-+\\([0-9]+\\)" ; 2 line number
"\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name
@@ -3334,11 +3346,11 @@ breakpoint overlays."
bp-re indmap)
(setq idlwave-shell-bp-alist (list nil))
;; Search for either header type, and set the correct regexp
- (when (or
+ (when (or
(if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t)
- (setq bp-re bp-re54 ; versions <= 5.4
+ (setq bp-re bp-re54 ; versions <= 5.4
indmap '(1 2 3 4))) ;index module line file
- (if (re-search-forward
+ (if (re-search-forward
"^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t)
(setq bp-re bp-re55 ; versions >= 5.5
indmap '(1 6 2 16)))) ; index module line file
@@ -3349,12 +3361,12 @@ breakpoint overlays."
line (string-to-number (match-string (nth 2 indmap)))
file (idlwave-shell-file-name (match-string (nth 3 indmap))))
(if (eq bp-re bp-re55)
- (setq count (if (match-string 10) 1
+ (setq count (if (match-string 10) 1
(if (match-string 8)
(string-to-number (match-string 8))))
condition (match-string 13)
disabled (not (null (match-string 15)))))
-
+
;; Add the breakpoint info to the list
(nconc idlwave-shell-bp-alist
(list (cons (list file line)
@@ -3364,7 +3376,7 @@ breakpoint overlays."
count nil condition disabled))))))
(setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist))
;; Update breakpoint data
- (if (eq bp-re bp-re54)
+ (if (eq bp-re bp-re54)
(mapcar 'idlwave-shell-update-bp old-bp-alist)
(mapcar 'idlwave-shell-update-bp-command-only old-bp-alist))))
;; Update the breakpoint overlays
@@ -3379,8 +3391,8 @@ breakpoint overlays."
"Update BP data in breakpoint list.
If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data."
(let ((match (assoc (car bp) idlwave-shell-bp-alist)))
- (if match
- (if command-only
+ (if match
+ (if command-only
(setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match))))
(setcdr (cdr match) (cdr (cdr bp)))))))
@@ -3405,42 +3417,31 @@ Otherwise return the filename in bp."
(let*
((bp-file (idlwave-shell-bp-get bp 'file))
(bp-module (idlwave-shell-bp-get bp 'module))
- (internal-file-list
- (cdr (assoc bp-module idlwave-shell-sources-alist))))
+ (internal-file-list
+ (if bp-module
+ (cdr (assoc bp-module idlwave-shell-sources-alist)))))
(if (and internal-file-list
(equal bp-file (nth 0 internal-file-list)))
(nth 1 internal-file-list)
bp-file)))
(defun idlwave-shell-set-bp (bp &optional no-show)
- "Try to set a breakpoint BP.
+ "Try to set a breakpoint BP.
The breakpoint will be placed at the beginning of the statement on the
line specified by BP or at the next IDL statement if that line is not
a statement. Determines IDL's internal representation for the
breakpoint, which may have occurred at a different line than
specified. If NO-SHOW is non-nil, don't do any updating."
;; Get and save the old breakpoints
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
idlwave-shell-bp-query
`(progn
(idlwave-shell-filter-bp (quote ,no-show))
(setq idlwave-shell-old-bp idlwave-shell-bp-alist))
'hide)
- ;; Get sources for IDL compiled procedures followed by setting
- ;; breakpoint.
- (idlwave-shell-send-command
- idlwave-shell-sources-query
- `(progn
- (idlwave-shell-sources-filter)
- (idlwave-shell-set-bp2 (quote ,bp) (quote ,no-show)))
- 'hide))
-(defun idlwave-shell-set-bp2 (bp &optional no-show)
- "Use results of breakpoint and sources query to set bp.
-Use the count argument with IDLs breakpoint command.
-We treat a count of 1 as a temporary breakpoint.
-Counts greater than 1 use the IDL AFTER=count keyword to break
-only after reaching the statement count times."
+ ;; Get sources for this routine in the sources list
+ (idlwave-shell-module-source-query (idlwave-shell-bp-get bp 'module))
(let*
((arg (idlwave-shell-bp-get bp 'count))
(key (cond
@@ -3450,32 +3451,35 @@ only after reaching the statement count times."
((> arg 1)
(format ",after=%d" arg))))
(condition (idlwave-shell-bp-get bp 'condition))
- (key (concat key
+ (disabled (idlwave-shell-bp-get bp 'disabled))
+ (key (concat key
(if condition (concat ",CONDITION=\"" condition "\""))))
+ (key (concat key (if disabled ",/DISABLE")))
(line (idlwave-shell-bp-get bp 'line)))
(idlwave-shell-send-command
- (concat "breakpoint,'"
+ (concat "breakpoint,'"
(idlwave-shell-sources-bp bp) "',"
(if (integerp line) (setq line (int-to-string line)))
key)
- ;; Check for failure and look for breakpoint in IDL's list
+ ;; Check for failure and adjust breakpoint to match IDL's list
`(progn
(if (idlwave-shell-set-bp-check (quote ,bp))
- (idlwave-shell-set-bp3 (quote ,bp) (quote ,no-show))))
+ (idlwave-shell-set-bp-adjust (quote ,bp) (quote ,no-show))))
;; hide output?
(idlwave-shell-hide-p 'breakpoint)
'preempt t)))
-(defun idlwave-shell-set-bp3 (bp &optional no-show)
+(defun idlwave-shell-set-bp-adjust (bp &optional no-show)
"Find the breakpoint in IDL's internal list of breakpoints."
- (idlwave-shell-send-command idlwave-shell-bp-query
- `(progn
- (idlwave-shell-filter-bp (quote ,no-show))
- (idlwave-shell-new-bp (quote ,bp))
- (unless (quote ,no-show)
- (idlwave-shell-update-bp-overlays)))
- 'hide
- 'preempt))
+ (idlwave-shell-send-command
+ idlwave-shell-bp-query
+ `(progn
+ (idlwave-shell-filter-bp 'no-show)
+ (idlwave-shell-new-bp (quote ,bp))
+ (unless (quote ,no-show)
+ (idlwave-shell-update-bp-overlays)))
+ 'hide
+ 'preempt))
(defun idlwave-shell-find-bp (frame)
"Return breakpoint from `idlwave-shell-bp-alist' for frame.
@@ -3526,10 +3530,14 @@ considered the new breakpoint if the file name of frame matches."
"Alist of overlays marking breakpoints")
(defvar idlwave-shell-bp-glyph)
+(defvar idlwave-shell-debug-line-map (make-sparse-keymap))
+(define-key idlwave-shell-debug-line-map
+ (if (featurep 'xemacs) [button3] [mouse-3])
+ 'idlwave-shell-mouse-active-bp)
+
(defun idlwave-shell-update-bp-overlays ()
"Update the overlays which mark breakpoints in the source code.
Existing overlays are recycled, in order to minimize consumption."
- ;(message "Updating Overlays")
(when idlwave-shell-mark-breakpoints
(let ((ov-alist (copy-alist idlwave-shell-bp-overlays))
(bp-list idlwave-shell-bp-alist)
@@ -3538,14 +3546,14 @@ Existing overlays are recycled, in order to minimize consumption."
ov ov-list bp buf old-buffers win)
;; Delete the old overlays from their buffers
- (if ov-alist
+ (if ov-alist
(while (setq ov-list (pop ov-alist))
(while (setq ov (pop (cdr ov-list)))
(add-to-list 'old-buffers (overlay-buffer ov))
(delete-overlay ov))))
-
+
(setq ov-alist idlwave-shell-bp-overlays
- idlwave-shell-bp-overlays
+ idlwave-shell-bp-overlays
(if idlwave-shell-bp-glyph
(mapcar 'list (mapcar 'car idlwave-shell-bp-glyph))
(list (list 'bp))))
@@ -3569,16 +3577,23 @@ Existing overlays are recycled, in order to minimize consumption."
(t 'bp-n)))
(t 'bp))
'bp))
- (help-list
+ (help-list
(delq nil
(list
(if count
- (concat "n=" (int-to-string count)))
+ (concat "after:" (int-to-string count)))
(if condition
- (concat "condition: " condition))
+ (concat "condition:" condition))
(if disabled "disabled"))))
- (help-text (if help-list
- (mapconcat 'identity help-list ",")))
+ (help-text (concat
+ "BP "
+ (int-to-string (idlwave-shell-bp-get bp))
+ (if help-list
+ (concat
+ " - "
+ (mapconcat 'identity help-list ", ")))
+ (if (and (not count) (not condition))
+ " (use mouse-3 for breakpoint actions)")))
(full-type (if disabled
(intern (concat (symbol-name type)
"-disabled"))
@@ -3586,9 +3601,10 @@ Existing overlays are recycled, in order to minimize consumption."
(ov-existing (assq full-type ov-alist))
(ov (or (and (cdr ov-existing)
(pop (cdr ov-existing)))
- (idlwave-shell-make-new-bp-overlay
- type disabled help-text)))
+ (idlwave-shell-make-new-bp-overlay type disabled)))
match)
+ (if idlwave-shell-breakpoint-popup-menu
+ (overlay-put ov 'help-echo help-text))
(move-overlay ov beg end)
(if (setq match (assq full-type idlwave-shell-bp-overlays))
(push ov (cdr match))
@@ -3596,7 +3612,7 @@ Existing overlays are recycled, in order to minimize consumption."
(list (list full-type ov)))))
;; Take care of margins if using a glyph
(when use-glyph
- (if old-buffers
+ (if old-buffers
(setq old-buffers (delq (current-buffer) old-buffers)))
(if (fboundp 'set-specifier) ;; XEmacs
(set-specifier left-margin-width (cons (current-buffer) 2))
@@ -3612,29 +3628,31 @@ Existing overlays are recycled, in order to minimize consumption."
(if (setq win (get-buffer-window buf t))
(set-window-buffer win buf))))))))
-
-(defun idlwave-shell-make-new-bp-overlay (&optional type disabled help)
- "Make a new overlay for highlighting breakpoints.
+(defun idlwave-shell-make-new-bp-overlay (&optional type disabled)
+ "Make a new overlay for highlighting breakpoints.
This stuff is strongly dependant upon the version of Emacs. If TYPE
is passed, make an overlay of that type ('bp or 'bp-cond, currently
-only for glyphs). If HELP is set, use it to make a tooltip with that
-text popup."
+only for glyphs)."
(let ((ov (make-overlay 1 1))
(use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph))
idlwave-shell-bp-glyph))
(type (or type 'bp))
- (face (if disabled
+ (face (if disabled
idlwave-shell-disabled-breakpoint-face
idlwave-shell-breakpoint-face)))
(if (featurep 'xemacs)
;; This is XEmacs
(progn
- (cond
+ (when idlwave-shell-breakpoint-popup-menu
+ (set-extent-property ov 'mouse-face 'highlight)
+ (set-extent-property ov 'keymap idlwave-shell-debug-line-map))
+
+ (cond
;; tty's cannot display glyphs
((eq (console-type) 'tty)
(set-extent-property ov 'face face))
-
+
;; use the glyph
(use-glyph
(let ((glyph (cdr (assq type idlwave-shell-bp-glyph))))
@@ -3650,22 +3668,23 @@ text popup."
(t nil))
(set-extent-priority ov -1)) ; make stop line face prevail
;; This is Emacs
+ (when idlwave-shell-breakpoint-popup-menu
+ (overlay-put ov 'mouse-face 'highlight)
+ (overlay-put ov 'keymap idlwave-shell-debug-line-map))
(cond
(window-system
(if use-glyph
(let ((image-props (cdr (assq type idlwave-shell-bp-glyph)))
string)
-
+
(if disabled (setq image-props
- (append image-props
+ (append image-props
(list :conversion 'disabled))))
- (setq string
- (propertize "@"
- 'display
+ (setq string
+ (propertize "@"
+ 'display
(list (list 'margin 'left-margin)
- image-props)
- 'mouse-face 'highlight
- 'help-echo help))
+ image-props)))
(overlay-put ov 'before-string string))
;; just the face
(overlay-put ov 'face face)))
@@ -3678,6 +3697,54 @@ text popup."
(t nil)))
ov))
+(defun idlwave-shell-mouse-active-bp (ev)
+ "Does right-click mouse action on breakpoint lines."
+ (interactive "e")
+ (if ev (mouse-set-point ev))
+ (let ((bp (idlwave-shell-find-bp (idlwave-shell-current-frame)))
+ index condition count select cmd disabled)
+ (unless bp
+ (error "Breakpoint not found"))
+ (setq index (int-to-string (idlwave-shell-bp-get bp))
+ condition (idlwave-shell-bp-get bp 'condition)
+ cmd (idlwave-shell-bp-get bp 'cmd)
+ count (idlwave-shell-bp-get bp 'count)
+ disabled (idlwave-shell-bp-get bp 'disabled))
+ (setq select (idlwave-popup-select
+ ev
+ (delq nil
+ (list (if disabled "Enable" "Disable")
+ "Clear"
+ "Clear All"
+ (if condition "Remove Condition" "Add Condition")
+ (if condition "Change Condition")
+ (if count "Remove Repeat Count"
+ "Add Repeat Count")
+ (if count "Change Repeat Count")))
+ (concat "BreakPoint " index)))
+ (if select
+ (cond
+ ((string-equal select "Clear All")
+ (idlwave-shell-clear-all-bp))
+ ((string-equal select "Clear")
+ (idlwave-shell-clear-current-bp))
+ ((string-match "Condition" select)
+ (idlwave-shell-break-here count cmd
+ (if (or (not condition)
+ (string-match "Change" select))
+ (read-string "Break Condition: "))
+ disabled))
+ ((string-match "Count" select)
+ (idlwave-shell-break-here (if (or (not count)
+ (string-match "Change" select))
+ (string-to-number
+ (read-string "Break After Count: ")))
+ cmd condition disabled))
+ ((string-match "able$" select)
+ (idlwave-shell-toggle-enable-current-bp))
+ (t
+ (message "Unimplemented: %s" select))))))
+
(defun idlwave-shell-edit-default-command-line (arg)
"Edit the current execute command."
(interactive "P")
@@ -3689,14 +3756,14 @@ text popup."
Also with prefix arg, ask for the command. You can also use the command
`idlwave-shell-edit-default-command-line' to edit the line."
(interactive "P")
- (cond
+ (cond
((equal arg '(16))
(setq idlwave-shell-command-line-to-execute nil))
((equal arg '(4))
- (setq idlwave-shell-command-line-to-execute
+ (setq idlwave-shell-command-line-to-execute
(read-string "IDL> " idlwave-shell-command-line-to-execute))))
(idlwave-shell-reset 'hidden)
- (idlwave-shell-send-command
+ (idlwave-shell-send-command
(or idlwave-shell-command-line-to-execute
(with-current-buffer (idlwave-shell-buffer)
(ring-ref comint-input-ring 0)))
@@ -3706,7 +3773,7 @@ Also with prefix arg, ask for the command. You can also use the command
"Save file and run it in IDL.
Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL.
When called from the shell buffer, re-run the file which was last handled by
-one of the save-and-.. commands."
+one of the save-and-.. commands."
(interactive)
(idlwave-shell-save-and-action 'run))
@@ -3722,7 +3789,7 @@ one of the save-and-.. commands."
"Save file and batch it in IDL.
Runs `save-buffer' and sends a '@file' command for the associated file to IDL.
When called from the shell buffer, re-batch the file which was last handled by
-one of the save-and-.. commands."
+one of the save-and-.. commands."
(interactive)
(idlwave-shell-save-and-action 'batch))
@@ -3762,7 +3829,7 @@ handled by this command."
'idlwave-shell-maybe-update-routine-info
(if (idlwave-shell-hide-p 'run) 'mostly) nil t)
(idlwave-shell-bp-query))
- (let ((msg (format "No such file %s"
+ (let ((msg (format "No such file %s"
idlwave-shell-last-save-and-action-file)))
(setq idlwave-shell-last-save-and-action-file nil)
(error msg))))
@@ -3785,17 +3852,42 @@ Elements of the alist have the form:
(module name . (source-file-truename idlwave-internal-filename)).")
+(defun idlwave-shell-module-source-query (module)
+ "Determine the source file for a given module."
+ (if module
+ (idlwave-shell-send-command
+ (format "print,(routine_info('%s',/SOURCE)).PATH" module)
+ `(idlwave-shell-module-source-filter ,module)
+ 'hide)))
+
+(defun idlwave-shell-module-source-filter (module)
+ "Get module source, and update idlwave-shell-sources-alist."
+ (let ((old (assoc (upcase module) idlwave-shell-sources-alist))
+ filename)
+ (if (string-match "\.PATH *[\n\r]\\([^\r\n]+\\)[\n\r]"
+ idlwave-shell-command-output)
+ (setq filename (substring idlwave-shell-command-output
+ (match-beginning 1) (match-end 1)))
+ (error "No file matching module found."))
+ (if old
+ (setcdr old (list (idlwave-shell-file-name filename) filename))
+ (setq idlwave-shell-sources-alist
+ (append idlwave-shell-sources-alist
+ (list (cons (upcase module)
+ (list (idlwave-shell-file-name filename)
+ filename))))))))
+
(defun idlwave-shell-sources-query ()
- "Determine source files for IDL compiled procedures.
+ "Determine source files for all IDL compiled procedures.
Queries IDL using the string in `idlwave-shell-sources-query'."
-' (interactive)
+ (interactive)
(idlwave-shell-send-command idlwave-shell-sources-query
'idlwave-shell-sources-filter
'hide))
(defun idlwave-shell-sources-filter ()
"Get source files from `idlwave-shell-sources-query' output.
-Create `idlwave-shell-sources-alist' consisting of
+Create `idlwave-shell-sources-alist' consisting of
list elements of the form:
(module name . (source-file-truename idlwave-internal-filename))."
(save-excursion
@@ -3880,7 +3972,7 @@ list elements of the form:
(list
(save-match-data
(idlwave-shell-file-name
- (buffer-substring (match-beginning 1 )
+ (buffer-substring (match-beginning 1 )
(match-end 1))))
(string-to-number
(buffer-substring (match-beginning 2)
@@ -3947,13 +4039,13 @@ Otherwise, just expand the file name."
;; The mouse bindings for PRINT and HELP
(idlwave-shell-define-key-both
- (if (featurep 'xemacs)
- [(shift button2)]
+ (if (featurep 'xemacs)
+ [(shift button2)]
[(shift down-mouse-2)])
'idlwave-shell-mouse-print)
(idlwave-shell-define-key-both
- (if (featurep 'xemacs)
- [(control meta button2)]
+ (if (featurep 'xemacs)
+ [(control meta button2)]
[(control meta down-mouse-2)])
'idlwave-shell-mouse-help)
(idlwave-shell-define-key-both
@@ -3962,14 +4054,14 @@ Otherwise, just expand the file name."
[(control shift down-mouse-2)])
'idlwave-shell-examine-select)
;; Add this one from the idlwave-mode-map
-(define-key idlwave-shell-mode-map
+(define-key idlwave-shell-mode-map
(if (featurep 'xemacs)
[(shift button3)]
[(shift mouse-3)])
'idlwave-mouse-context-help)
;; For Emacs, we need to turn off the button release events.
-(defun idlwave-shell-mouse-nop (event)
+(defun idlwave-shell-mouse-nop (event)
(interactive "e"))
(unless (featurep 'xemacs)
(idlwave-shell-define-key-both
@@ -3979,7 +4071,7 @@ Otherwise, just expand the file name."
(idlwave-shell-define-key-both
[(control meta mouse-2)] 'idlwave-shell-mouse-nop))
-
+
;; The following set of bindings is used to bind the debugging keys.
;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the
;; 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."
;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list
;; item, if non-nil, means to bind this as a single key in the
;; electric-debug-mode-map.
-;;
+;;
;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only
-;; Used keys: abcdef hijklmnopqrstuvwxyz
-;; Unused keys: g
+;; Used keys: abcdef hijklmnopqrstuvwxyz
+;; Unused keys: g
(let* ((specs
'(([(control ?b)] ?b idlwave-shell-break-here t t)
([(control ?i)] ?i idlwave-shell-break-in t t)
@@ -4041,10 +4133,10 @@ Otherwise, just expand the file name."
electric (nth 3 s)
only-buffer (nth 4 s)
cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2))))
-
+
;; The regular prefix keymap.
(when (and idlwave-shell-activate-prefix-keybindings k1)
- (unless only-buffer
+ (unless only-buffer
(define-key idlwave-shell-mode-prefix-map k1 cmd))
(define-key idlwave-mode-prefix-map k1 cmd))
;; The debug modifier map
@@ -4058,24 +4150,24 @@ Otherwise, just expand the file name."
(unless only-buffer (define-key idlwave-shell-mode-map k2 cmd))))
;; The electric debug single-keystroke map
(if (and electric (char-or-string-p c2))
- (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2)
+ (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2)
cmd))))
;; A few extras in the electric debug map
(define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step)
(define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up)
(define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up)
-(define-key idlwave-shell-electric-debug-mode-map "-"
+(define-key idlwave-shell-electric-debug-mode-map "-"
'idlwave-shell-stack-down)
-(define-key idlwave-shell-electric-debug-mode-map "_"
+(define-key idlwave-shell-electric-debug-mode-map "_"
'idlwave-shell-stack-down)
(define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall)
-(define-key idlwave-shell-electric-debug-mode-map "t"
+(define-key idlwave-shell-electric-debug-mode-map "t"
'(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE")))
(define-key idlwave-shell-electric-debug-mode-map [(control ??)]
'idlwave-shell-electric-debug-help)
-(define-key idlwave-shell-electric-debug-mode-map "x"
- '(lambda (arg) (interactive "P")
+(define-key idlwave-shell-electric-debug-mode-map "x"
+ '(lambda (arg) (interactive "P")
(idlwave-shell-print arg nil nil t)))
@@ -4096,12 +4188,12 @@ Otherwise, just expand the file name."
(setq idlwave-shell-suppress-electric-debug nil))
(idlwave-shell-electric-debug-mode))
-(defvar idlwave-shell-electric-debug-read-only)
+(defvar idlwave-shell-electric-debug-read-only)
(defvar idlwave-shell-electric-debug-buffers nil)
(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode
"Toggle Electric Debug mode.
-With no argument, this command toggles the mode.
+With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode.
@@ -4111,7 +4203,7 @@ nil
" *Debugging*"
idlwave-shell-electric-debug-mode-map)
-(add-hook
+(add-hook
'idlwave-shell-electric-debug-mode-on-hook
(lambda ()
(set (make-local-variable 'idlwave-shell-electric-debug-read-only)
@@ -4119,13 +4211,13 @@ idlwave-shell-electric-debug-mode-map)
(setq buffer-read-only t)
(add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer))
(if idlwave-shell-stop-line-overlay
- (overlay-put idlwave-shell-stop-line-overlay 'face
+ (overlay-put idlwave-shell-stop-line-overlay 'face
idlwave-shell-electric-stop-line-face))
(if (facep 'fringe)
(set-face-foreground 'fringe idlwave-shell-electric-stop-color
(selected-frame)))))
-(add-hook
+(add-hook
'idlwave-shell-electric-debug-mode-off-hook
(lambda ()
;; Return to previous read-only state
@@ -4134,7 +4226,7 @@ idlwave-shell-electric-debug-mode-map)
(setq idlwave-shell-electric-debug-buffers
(delq (current-buffer) idlwave-shell-electric-debug-buffers))
(if idlwave-shell-stop-line-overlay
- (overlay-put idlwave-shell-stop-line-overlay 'face
+ (overlay-put idlwave-shell-stop-line-overlay 'face
idlwave-shell-stop-line-face)
(if (facep 'fringe)
(set-face-foreground 'fringe (face-foreground 'default))))))
@@ -4148,6 +4240,7 @@ idlwave-shell-electric-debug-mode-map)
(force-mode-line-update))
;; Turn it off in all relevant buffers
+(defvar idlwave-shell-electric-debug-buffers nil)
(defun idlwave-shell-electric-debug-all-off ()
(setq idlwave-shell-suppress-electric-debug nil)
(let ((buffers idlwave-shell-electric-debug-buffers)
@@ -4165,7 +4258,7 @@ idlwave-shell-electric-debug-mode-map)
;; Show the help text
(defun idlwave-shell-electric-debug-help ()
(interactive)
- (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*"
+ (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*"
(princ idlwave-shell-electric-debug-help))
(let* ((current-window (selected-window))
(window (get-buffer-window "*IDLWAVE Electric Debug Help*"))
@@ -4180,7 +4273,7 @@ idlwave-shell-electric-debug-mode-map)
`("Debug"
["Electric Debug Mode"
idlwave-shell-electric-debug-mode
- :style toggle :selected idlwave-shell-electric-debug-mode
+ :style toggle :selected idlwave-shell-electric-debug-mode
:included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"]
"--"
("Compile & Run"
@@ -4196,15 +4289,15 @@ idlwave-shell-electric-debug-mode-map)
"--"
["Goto Next Error" idlwave-shell-goto-next-error t]
"--"
- ["Compile and Run Region" idlwave-shell-run-region
+ ["Compile and Run Region" idlwave-shell-run-region
(eq major-mode 'idlwave-mode)]
- ["Evaluate Region" idlwave-shell-evaluate-region
+ ["Evaluate Region" idlwave-shell-evaluate-region
(eq major-mode 'idlwave-mode)]
"--"
["Execute Default Cmd" idlwave-shell-execute-default-command-line t]
["Edit Default Cmd" idlwave-shell-edit-default-command-line t])
("Breakpoints"
- ["Set Breakpoint" idlwave-shell-break-here
+ ["Set Breakpoint" idlwave-shell-break-here
:keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)]
("Set Special Breakpoint"
["Set After Count Breakpoint"
@@ -4215,16 +4308,16 @@ idlwave-shell-electric-debug-mode-map)
["Set Condition Breakpoint"
(idlwave-shell-break-here '(4))
:active (eq major-mode 'idlwave-mode)])
- ["Break in Module" idlwave-shell-break-in
+ ["Break in Module" idlwave-shell-break-in
:keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)]
["Break in this Module" idlwave-shell-break-this-module
:keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)]
["Clear Breakpoint" idlwave-shell-clear-current-bp t]
["Clear All Breakpoints" idlwave-shell-clear-all-bp t]
["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t]
- ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp
+ ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp
:keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)]
- ["Goto Next Breakpoint" idlwave-shell-goto-next-bp
+ ["Goto Next Breakpoint" idlwave-shell-goto-next-bp
:keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)]
["List All Breakpoints" idlwave-shell-list-all-bp t]
["Resync Breakpoints" idlwave-shell-bp-query t])
@@ -4256,38 +4349,38 @@ idlwave-shell-electric-debug-mode-map)
["Redisplay and Sync" idlwave-shell-redisplay t])
("Show Commands"
["Everything" (if (eq idlwave-shell-show-commands 'everything)
- (progn
+ (progn
(setq idlwave-shell-show-commands
(get 'idlwave-shell-show-commands 'last-val))
(put 'idlwave-shell-show-commands 'last-val nil))
- (put 'idlwave-shell-show-commands 'last-val
+ (put 'idlwave-shell-show-commands 'last-val
idlwave-shell-show-commands)
(setq idlwave-shell-show-commands 'everything))
:style toggle :selected (and (not (listp idlwave-shell-show-commands))
- (eq idlwave-shell-show-commands
+ (eq idlwave-shell-show-commands
'everything))]
"--"
["Compiling Commands" (idlwave-shell-add-or-remove-show 'run)
- :style toggle
- :selected (not (idlwave-shell-hide-p
+ :style toggle
+ :selected (not (idlwave-shell-hide-p
'run
(get 'idlwave-shell-show-commands 'last-val)))
:active (not (eq idlwave-shell-show-commands 'everything))]
["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint)
- :style toggle
- :selected (not (idlwave-shell-hide-p
+ :style toggle
+ :selected (not (idlwave-shell-hide-p
'breakpoint
(get 'idlwave-shell-show-commands 'last-val)))
:active (not (eq idlwave-shell-show-commands 'everything))]
["Debug Commands" (idlwave-shell-add-or-remove-show 'debug)
- :style toggle
- :selected (not (idlwave-shell-hide-p
+ :style toggle
+ :selected (not (idlwave-shell-hide-p
'debug
(get 'idlwave-shell-show-commands 'last-val)))
:active (not (eq idlwave-shell-show-commands 'everything))]
["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc)
- :style toggle
- :selected (not (idlwave-shell-hide-p
+ :style toggle
+ :selected (not (idlwave-shell-hide-p
'misc
(get 'idlwave-shell-show-commands 'last-val)))
:active (not (eq idlwave-shell-show-commands 'everything))])
@@ -4301,7 +4394,7 @@ idlwave-shell-electric-debug-mode-map)
:style toggle :selected idlwave-shell-use-input-mode-magic])
"--"
["Update Working Dir" idlwave-shell-resync-dirs t]
- ["Save Path Info"
+ ["Save Path Info"
(idlwave-shell-send-command idlwave-shell-path-query
'idlwave-shell-get-path-info
'hide)
@@ -4313,7 +4406,7 @@ idlwave-shell-electric-debug-mode-map)
(if (or (featurep 'easymenu) (load "easymenu" t))
(progn
- (easy-menu-define
+ (easy-menu-define
idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus"
idlwave-shell-menu-def)
(easy-menu-define
@@ -4333,7 +4426,7 @@ idlwave-shell-electric-debug-mode-map)
(defvar idlwave-shell-bp-glyph nil
"The glyphs to mark breakpoint lines in the source code.")
-(let ((image-alist
+(let ((image-alist
'((bp . "/* XPM */
static char * file[] = {
\"14 12 3 1\",
@@ -4466,7 +4559,7 @@ static char * file[] = {
\" .XXXX. \",
\" .... \",
\" \"};"))) im-cons im)
-
+
(while (setq im-cons (pop image-alist))
(setq im (cond ((and (featurep 'xemacs)
(featurep 'xpm))
@@ -4479,7 +4572,7 @@ static char * file[] = {
((and (not (featurep 'xemacs))
(fboundp 'image-type-available-p)
(image-type-available-p 'xpm))
- (list 'image :type 'xpm :data (cdr im-cons)
+ (list 'image :type 'xpm :data (cdr im-cons)
:ascent 'center))
(t nil)))
(if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph))))
@@ -4489,7 +4582,7 @@ static char * file[] = {
;;; Load the toolbar when wanted by the user.
-(autoload 'idlwave-toolbar-toggle "idlw-toolbar"
+(autoload 'idlwave-toolbar-toggle "idlw-toolbar"
"Toggle the IDLWAVE toolbar")
(autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar"
"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 @@
;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE
-;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation
+;; Copyright (c) 1999, 2000, 2001,2002,2004 Free Software Foundation
;; Author: Carsten Dominik <dominik@astro.uva.nl>
;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
-;; Version: 5.5
+;; Version: 5.7_22
;; Keywords: processes
;; 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 @@
;; idlwave.el --- IDL editing mode for GNU Emacs
;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-;; Free Software Foundation
+;; Free Software Foundation
;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
;; Carsten Dominik <dominik@science.uva.nl>
;; Chris Chase <chase@att.com>
;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
-;; Version: 5.5
+;; Version: 5.7_22
;; Keywords: languages
;; This file is part of GNU Emacs.
@@ -28,6 +28,8 @@
;;; Commentary:
+;; IDLWAVE enables feature-rich development and interaction with IDL.
+
;; In the remotely distant past, based on pascal.el, though bears
;; little resemblance to it now.
;;
@@ -111,7 +113,7 @@
;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual
;; Numerics, Inc. is growing less and less complete as the two
;; languages grow increasingly apart. The mode probably shouldn't
-;; even have "WAVE" in it's title, but it's catchy, and was required
+;; even have "WAVE" in its title, but it's catchy, and was required
;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor.
;;
;; Moving the point backwards in conjunction with abbrev expansion
@@ -159,6 +161,11 @@
(unless (fboundp 'char-valid-p)
(defalias 'char-valid-p 'characterp))
+(if (not (fboundp 'cancel-timer))
+ (condition-case nil
+ (require 'timer)
+ (error nil)))
+
(eval-and-compile
;; Kludge to allow `defcustom' for Emacs 19.
(condition-case () (require 'custom) (error nil))
@@ -170,7 +177,7 @@
`(defvar ,var ,value ,doc))))
(defgroup idlwave nil
- "Major mode for editing IDL .pro files"
+ "Major mode for editing IDL .pro files."
:tag "IDLWAVE"
:link '(url-link :tag "Home Page"
"http://idlwave.org")
@@ -1377,7 +1384,7 @@ Normally a space.")
"Character which is inserted as a last character on previous line by
\\[idlwave-split-line] to begin a continuation line. Normally $.")
-(defconst idlwave-mode-version "5.5")
+(defconst idlwave-mode-version "5.7_22")
(defmacro idlwave-keyword-abbrev (&rest args)
"Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args."
@@ -1484,12 +1491,13 @@ Capitalize system variables - action only
;; Add action
(let* ((table (if select 'idlwave-indent-action-table
'idlwave-indent-expand-table))
- (cell (assoc key (eval table))))
+ (table-key (regexp-quote key))
+ (cell (assoc table-key (eval table))))
(if cell
;; Replace action command
(setcdr cell cmd)
;; New action
- (set table (append (eval table) (list (cons key cmd)))))))
+ (set table (append (eval table) (list (cons table-key cmd)))))))
;; Make key binding for action
(if (or (and (null select) (= (length key) 1))
(equal select 'noaction)
@@ -1516,7 +1524,7 @@ Capitalize system variables - action only
(define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block)
(define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block)
(define-key idlwave-mode-map "\C-c]" 'idlwave-close-block)
-(define-key idlwave-mode-map "\M-\C-h" 'idlwave-mark-subprogram)
+(define-key idlwave-mode-map [(meta control h)] 'idlwave-mark-subprogram)
(define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block)
(define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block)
(define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block)
@@ -1575,6 +1583,7 @@ Capitalize system variables - action only
(autoload 'idlwave-shell-run-region "idlw-shell"
"Compile and run the region." t)
(define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module)
+(define-key idlwave-mode-map "\C-c\C-t" 'idlwave-find-module-this-file)
(define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info)
(define-key idlwave-mode-map "\M-?" 'idlwave-context-help)
(define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help)
@@ -1702,6 +1711,8 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1))
(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1))
(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0))
+(idlwave-define-abbrev "pv" "ptr_valid()" (idlwave-keyword-abbrev 1))
+(idlwave-define-abbrev "ipv" "if ptr_valid() then" (idlwave-keyword-abbrev 6))
;; This section is reserved words only. (From IDL user manual)
;;
@@ -1756,7 +1767,7 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
;;;###autoload
(defun idlwave-mode ()
- "Major mode for editing IDL source files (version 5.5).
+ "Major mode for editing IDL source files (version 5.7_22).
The main features of this mode are
@@ -1935,15 +1946,10 @@ The main features of this mode are
'idlwave-prev-index-position)
;; Make a local post-command-hook and add our hook to it
- ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
- (make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'idlwave-command-hook nil 'local)
;; Make local hooks for buffer updates
- ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
- (make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local)
- (make-local-hook 'after-save-hook)
(add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local)
(add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local)
@@ -2696,7 +2702,7 @@ See `idlwave-surround'."
(re-search-backward "\\(#\\)\\=" nil t))
(setq len (1+ (length (match-string 1))))
(when (re-search-backward an-ops nil t)
- (setq begin nil) ; won't modify begin
+ ;(setq begin nil) ; won't modify begin
(setq len (1+ (length (match-string 1))))))))
(if (eq t idlwave-pad-keyword)
@@ -4267,7 +4273,9 @@ This defines the function `idlwave-sintern-TAG' and the variable
(defvar idlwave-user-catalog-routines nil
"Holds the procedure routine-info from the user scan.")
(defvar idlwave-library-catalog-routines nil
- "Holds the procedure routine-info from the library catalog files.")
+ "Holds the procedure routine-info from the .idlwave_catalog library files.")
+(defvar idlwave-library-catalog-libname nil
+ "Name of library catalog loaded from .idlwave_catalog files.")
(defvar idlwave-path-alist nil
"Alist with !PATH directories and zero or more flags if the dir has
been scanned in a user catalog ('user) or discovered in a library
@@ -4384,6 +4392,8 @@ will re-read the catalog."
(defvar idlwave-load-rinfo-idle-timer)
+(defvar idlwave-shell-path-query)
+
(defun idlwave-update-routine-info (&optional arg no-concatenate)
"Update the internal routine-info lists.
These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info])
@@ -4508,6 +4518,8 @@ information updated immediately, leave NO-CONCATENATE nil."
nil 'idlwave-load-rinfo-next-step)))
(error nil))))
+(defvar idlwave-library-routines nil "Obsolete variable.")
+
(defun idlwave-load-rinfo-next-step ()
(let ((inhibit-quit t)
(arr idlwave-load-rinfo-steps-done))
@@ -4816,12 +4828,15 @@ information updated immediately, leave NO-CONCATENATE nil."
(defun idlwave-sys-dir ()
"Return the syslib directory, or a dummy that never matches."
- (if (string= idlwave-system-directory "")
- "@@@@@@@@"
- idlwave-system-directory))
+ (cond
+ ((and idlwave-system-directory
+ (not (string= idlwave-system-directory "")))
+ idlwave-system-directory)
+ ((getenv "IDL_DIR"))
+ (t "@@@@@@@@")))
+
-(defvar idlwave-shell-path-query)
(defun idlwave-create-user-catalog-file (&optional arg)
"Scan all files on selected dirs of IDL search path for routine information.
@@ -5140,6 +5155,9 @@ directories and save the routine info.
;;----- Scanning the library catalogs ------------------
+
+
+
(defun idlwave-scan-library-catalogs (&optional message-base no-load)
"Scan for library catalog files (.idlwave_catalog) and ingest.
@@ -5488,13 +5506,15 @@ When we force a method or a method keyword, CLASS can specify the class."
(isa (format "procedure%s-keyword" (if class "-method" "")))
(entry (idlwave-best-rinfo-assq
name 'pro class (idlwave-routines)))
+ (system (if entry (eq (car (nth 3 entry)) 'system)))
(list (idlwave-entry-keywords entry 'do-link)))
(unless (or entry (eq class t))
(error "Nothing known about procedure %s"
(idlwave-make-full-name class name)))
- (setq list (idlwave-fix-keywords name 'pro class list super-classes))
+ (setq list (idlwave-fix-keywords name 'pro class list
+ super-classes system))
(unless list (error "No keywords available for procedure %s"
- (idlwave-make-full-name class name)))
+ (idlwave-make-full-name class name)))
(setq idlwave-completion-help-info
(list 'keyword name type-selector class-selector entry super-classes))
(idlwave-complete-in-buffer
@@ -5519,12 +5539,14 @@ When we force a method or a method keyword, CLASS can specify the class."
(isa (format "function%s-keyword" (if class "-method" "")))
(entry (idlwave-best-rinfo-assq
name 'fun class (idlwave-routines)))
+ (system (if entry (eq (car (nth 3 entry)) 'system)))
(list (idlwave-entry-keywords entry 'do-link))
msg-name)
(unless (or entry (eq class t))
(error "Nothing known about function %s"
(idlwave-make-full-name class name)))
- (setq list (idlwave-fix-keywords name 'fun class list super-classes))
+ (setq list (idlwave-fix-keywords name 'fun class list
+ super-classes system))
;; OBJ_NEW: Messages mention the proper Init method
(setq msg-name (if (and (null class)
(string= (upcase name) "OBJ_NEW"))
@@ -5532,7 +5554,7 @@ When we force a method or a method keyword, CLASS can specify the class."
"::Init (via OBJ_NEW)")
(idlwave-make-full-name class name)))
(unless list (error "No keywords available for function %s"
- msg-name))
+ msg-name))
(setq idlwave-completion-help-info
(list 'keyword name type-selector class-selector nil super-classes))
(idlwave-complete-in-buffer
@@ -6155,7 +6177,7 @@ This function is not general, can only be used for completion stuff."
((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil))
((eq (preceding-char) ?\n)
(beginning-of-line 0)
- (if (looking-at "\\([^;\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n")
+ (if (looking-at "\\([^\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n")
;; continuation line
(goto-char (match-end 1))
(throw 'exit nil)))
@@ -7159,6 +7181,7 @@ Gets set in `idlw-rinfo.el'.")
t)) ; return t to skip other completions
(t nil))))
+(defvar link) ;dynamic
(defun idlwave-complete-sysvar-help (mode word)
(let ((word (or (nth 1 idlwave-completion-help-info) word))
(entry (assoc word idlwave-system-variables-alist)))
@@ -7462,6 +7485,10 @@ With ARG, enforce query for the class of object methods."
'(idlwave-update-routine-info)
nil t))))))
+(defun idlwave-find-module-this-file ()
+ (interactive)
+ (idlwave-find-module '(4)))
+
(defun idlwave-find-module (&optional arg)
"Find the source code of an IDL module.
Works for modules for which IDLWAVE has routine info available. The
@@ -7662,10 +7689,12 @@ appropriate Init method."
(idlwave-sintern-class class)))))
module))
-(defun idlwave-fix-keywords (name type class keywords &optional super-classes)
+(defun idlwave-fix-keywords (name type class keywords
+ &optional super-classes system)
"Update a list of keywords.
Translate OBJ_NEW, adding all super-class keywords, or all keywords
-from all classes if class equals t."
+from all classes if class equals t. If SYSTEM is non-nil, don't
+demand _EXTRA in the keyword list."
(let ((case-fold-search t))
;; 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."
super-classes
idlwave-keyword-class-inheritance
(stringp class)
- (or (assq (idlwave-sintern-keyword "_extra") keywords)
- (assq (idlwave-sintern-keyword "_ref_extra") keywords))
+ (or
+ system
+ (assq (idlwave-sintern-keyword "_extra") keywords)
+ (assq (idlwave-sintern-keyword "_ref_extra") keywords))
;; Check if one of the keyword-class regexps matches the name
(let ((regexps idlwave-keyword-class-inheritance) re)
(catch 'exit
@@ -8048,7 +8079,8 @@ Optional args RIGHT and SHIFT indicate, if mouse-3 was used, and if SHIFT
was pressed."
(interactive "e")
(if ev (mouse-set-point ev))
- (let (data id name type class buf bufwin source word initial-class)
+ (let (data id name type class buf bufwin source link keyword
+ word initial-class)
(setq data (get-text-property (point) 'data)
source (get-text-property (point) 'source)
keyword (get-text-property (point) 'keyword)
@@ -8333,7 +8365,6 @@ routines, and may have been scanned."
(setcar entry 'builtin))
(sort alist 'idlwave-routine-twin-compare)))
-(defvar name)
(defvar type)
(defvar class)
(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 @@
;;; Code:
(defgroup pascal nil
- "Major mode for editing Pascal source in Emacs"
+ "Major mode for editing Pascal source in Emacs."
:group 'languages)
(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 @@
;;; Code:
(defgroup prolog nil
- "Major mode for editing and running Prolog under Emacs"
+ "Major mode for editing and running Prolog under Emacs."
:group 'languages)
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 @@
(autoload 'compilation-start "compile")
(defgroup python nil
- "Silly walks in the Python language"
+ "Silly walks in the Python language."
:group 'languages
:version "22.1"
:link '(emacs-commentary-link "python"))
@@ -949,6 +949,7 @@ See `python-check-command' for the default."
(if name
(file-name-nondirectory name))))))))
(setq python-saved-check-command command)
+ (require 'compile) ;To define compilation-* variables.
(save-some-buffers (not compilation-ask-about-save) nil)
(let ((compilation-error-regexp-alist
(cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
@@ -1066,7 +1067,7 @@ For running multiple processes in multiple buffers, see `python-buffer'.
;; Still required by `comint-redirect-send-command', for instance
;; (and we need to match things like `>>> ... >>> '):
(set (make-local-variable 'comint-prompt-regexp)
- (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\ )))))
+ (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\s)))))
(set (make-local-variable 'compilation-error-regexp-alist)
python-compilation-regexp-alist)
(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 @@
(modify-syntax-entry ?\n "> " st)
(modify-syntax-entry ?\f " " st)
(modify-syntax-entry ?\r " " st)
- (modify-syntax-entry ? " " st)
+ (modify-syntax-entry ?\s " " st)
;; These characters are delimiters but otherwise undefined.
;; Brackets and braces balance for editing convenience.
@@ -228,7 +228,7 @@ if that value is non-nil."
(run-mode-hooks 'scheme-mode-hook))
(defgroup scheme nil
- "Editing Scheme code"
+ "Editing Scheme code."
:group 'lisp)
(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 @@
(defgroup sh nil
- "Shell programming utilities"
+ "Shell programming utilities."
:group 'unix
:group 'languages)
(defgroup sh-script nil
- "Shell script mode"
+ "Shell script mode."
:group 'sh
:prefix "sh-")
@@ -2370,7 +2370,7 @@ If AND-MOVE is non-nil then move to end of word."
(goto-char where))
(prog1
(buffer-substring (point)
- (progn (skip-chars-forward "^ \t\n;")(point)))
+ (progn (skip-chars-forward "^ \t\n;&")(point)))
(unless and-move
(goto-char start)))))
@@ -3535,7 +3535,7 @@ The document is bounded by `sh-here-document-word'."
(delim (replace-regexp-in-string "['\"]" ""
sh-here-document-word)))
(insert sh-here-document-word)
- (or (eolp) (looking-at "[ \t]") (insert ? ))
+ (or (eolp) (looking-at "[ \t]") (insert ?\s))
(end-of-line 1)
(while
(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 @@
;;; Allow customization
(defgroup SQL nil
- "Running a SQL interpreter from within Emacs buffers"
+ "Running a SQL interpreter from within Emacs buffers."
:version "20.4"
:group 'processes)
@@ -2077,7 +2077,7 @@ Inserts SELECT or commas if appropriate."
(insert ", "))
;; else insert a space
(t
- (if (eq (preceding-char) ? )
+ (if (eq (preceding-char) ?\s)
nil
(insert " ")))))
;; 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 @@
;;
(defgroup tcl nil
- "Major mode for editing Tcl source in Emacs"
+ "Major mode for editing Tcl source in Emacs."
:group 'languages)
(defcustom tcl-indent-level 4
@@ -1489,7 +1489,7 @@ styles."
(unless (or (bolp) (tcl-real-command-p))
(insert ";")
;; Try and erase a non-significant char to keep charpos identical.
- (if (memq (char-after) '(?\t ?\ )) (delete-char 1))))
+ (if (memq (char-after) '(?\t ?\s)) (delete-char 1))))
(funcall (default-value 'comment-indent-function)))
;; The following was inspired by the Tcl editing mode written by
@@ -1533,7 +1533,7 @@ The first line is assumed to look like \"#!.../program ...\"."
(defun tcl-quote (string)
"Quote STRING according to Tcl rules."
(mapconcat (lambda (char)
- (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ? ?\;))
+ (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ?\s ?\;))
(concat "\\" (char-to-string char))
(char-to-string char)))
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."
(defgroup vhdl-testbench nil
- "Customizations for testbench generation ."
+ "Customizations for testbench generation."
:group 'vhdl-port)
(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 @@
;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: wp, print, PostScript
-;; Time-stamp: <2005/03/19 00:40:12 vinicius>
-;; Version: 6.6.6
+;; Time-stamp: <2005/06/27 00:57:22 vinicius>
+;; Version: 6.6.7
;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
-(defconst ps-print-version "6.6.6"
- "ps-print.el, v 6.6.6 <2005/03/19 vinicius>
+(defconst ps-print-version "6.6.7"
+ "ps-print.el, v 6.6.7 <2005/06/27 vinicius>
Vinicius's last change version -- this file may have been edited as part of
Emacs without changes to the version number. When reporting bugs, please also
@@ -1562,13 +1562,13 @@ Please send all bug fixes and enhancements to
;;; Interface to the command system
(defgroup postscript nil
- "PostScript Group"
+ "PostScript Group."
:tag "PostScript"
:version "20"
:group 'emacs)
(defgroup ps-print nil
- "PostScript generator for Emacs"
+ "PostScript generator for Emacs."
:link '(emacs-library-link :tag "Source Lisp File" "ps-print.el")
:prefix "ps-"
:version "20"
@@ -1576,42 +1576,42 @@ Please send all bug fixes and enhancements to
:group 'postscript)
(defgroup ps-print-horizontal nil
- "Horizontal page layout"
+ "Horizontal page layout."
:prefix "ps-"
:tag "Horizontal"
:version "20"
:group 'ps-print)
(defgroup ps-print-vertical nil
- "Vertical page layout"
+ "Vertical page layout."
:prefix "ps-"
:tag "Vertical"
:version "20"
:group 'ps-print)
(defgroup ps-print-headers nil
- "Headers & footers layout"
+ "Headers & footers layout."
:prefix "ps-"
:tag "Header & Footer"
:version "20"
:group 'ps-print)
(defgroup ps-print-font nil
- "Fonts customization"
+ "Fonts customization."
:prefix "ps-"
:tag "Font"
:version "20"
:group 'ps-print)
(defgroup ps-print-color nil
- "Color customization"
+ "Color customization."
:prefix "ps-"
:tag "Color"
:version "20"
:group 'ps-print)
(defgroup ps-print-face nil
- "Faces customization"
+ "Faces customization."
:prefix "ps-"
:tag "PS Faces"
:version "20"
@@ -1619,42 +1619,42 @@ Please send all bug fixes and enhancements to
:group 'faces)
(defgroup ps-print-n-up nil
- "N-up customization"
+ "N-up customization."
:prefix "ps-"
:tag "N-Up"
:version "20"
:group 'ps-print)
(defgroup ps-print-zebra nil
- "Zebra customization"
+ "Zebra customization."
:prefix "ps-"
:tag "Zebra"
:version "20"
:group 'ps-print)
(defgroup ps-print-background nil
- "Background customization"
+ "Background customization."
:prefix "ps-"
:tag "Background"
:version "20"
:group 'ps-print)
(defgroup ps-print-printer '((lpr custom-group))
- "Printer customization"
+ "Printer customization."
:prefix "ps-"
:tag "Printer"
:version "20"
:group 'ps-print)
(defgroup ps-print-page nil
- "Page customization"
+ "Page customization."
:prefix "ps-"
:tag "Page"
:version "20"
:group 'ps-print)
(defgroup ps-print-miscellany nil
- "Miscellany customization"
+ "Miscellany customization."
:prefix "ps-"
:tag "Miscellany"
:version "20"
@@ -3760,7 +3760,7 @@ If `ps-prefix-quote' is nil, it's set to t after generating string."
"(setq ")
key
(if (> col len)
- (make-string (- col len) ?\ )
+ (make-string (- col len) ?\s)
" ")
(ps-value-string val))))
(t "")
@@ -5961,10 +5961,14 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(ps-begin-page))
+(defun ps-end-sheet ()
+ (and ps-print-page-p (> ps-page-sheet 0)
+ (ps-output "EndSheet\n")))
+
+
(defun ps-header-sheet ()
;; Print only when a new sheet begins.
- (and ps-print-page-p (> ps-page-sheet 0)
- (ps-output "EndSheet\n"))
+ (ps-end-sheet)
(setq ps-page-sheet (1+ ps-page-sheet))
(when (ps-print-sheet-p)
(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."
(defun ps-end-job (needs-begin-file)
- (let ((previous-print ps-print-page-p)
- (ps-print-page-p t))
+ (let ((ps-print-page-p t))
(ps-flush-output)
(save-excursion
(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."
(number-to-string ps-lines-printed) " BeginPage\n")
(ps-end-page)))
;; Set end of PostScript file
- (and previous-print
- (ps-output "EndSheet\n"))
+ (ps-end-sheet)
(ps-output "\n%%Trailer\n%%Pages: "
(number-to-string
(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 @@
;;; Commentary:
;; This package maintains a menu for visiting files that were operated
-;; on recently. When enabled a new "Open Recent" submenu is displayed
-;; in the "Files" menu. The recent files list is automatically saved
-;; across Emacs sessions. You can customize the number of recent
-;; files displayed, the location of the menu and others options (see
-;; the source code for details).
+;; on recently. When enabled a new "Open Recent" sub menu is
+;; displayed in the "Files" menu. The recent files list is
+;; automatically saved across Emacs sessions. You can customize the
+;; number of recent files displayed, the location of the menu and
+;; others options (see the source code for details).
;;; History:
;;
;;; Code:
(require 'easymenu)
-(require 'wid-edit)
+(require 'tree-widget)
(require 'timer)
;;; Internal data
@@ -259,7 +259,8 @@ If `file-name-history' is not empty, do nothing."
It is passed a filename to give a chance to transform it.
If it returns nil, the filename is left unchanged."
:group 'recentf
- :type 'function)
+ :type '(choice (const :tag "None" nil)
+ function))
;;; Utilities
;;
@@ -904,30 +905,54 @@ unchanged."
;;
(defun recentf-cancel-dialog (&rest ignore)
"Cancel the current dialog.
-Used internally by recentf dialogs.
IGNORE arguments."
(interactive)
(kill-buffer (current-buffer))
(message "Dialog canceled"))
+(defun recentf-dialog-goto-first (widget-type)
+ "Move the cursor to the first WIDGET-TYPE in current dialog.
+Go to the beginning of buffer if not found."
+ (goto-char (point-min))
+ (condition-case nil
+ (let (done)
+ (widget-move 1)
+ (while (not done)
+ (if (eq widget-type (widget-type (widget-at (point))))
+ (setq done t)
+ (widget-move 1))))
+ (goto-char (point-min))))
+
(defvar recentf-dialog-mode-map
(let ((km (make-sparse-keymap)))
+ (set-keymap-parent km widget-keymap)
(define-key km "q" 'recentf-cancel-dialog)
(define-key km [down-mouse-1] 'widget-button-click)
- (set-keymap-parent km widget-keymap)
km)
"Keymap used in recentf dialogs.")
-(defun recentf-dialog-mode ()
+(define-derived-mode recentf-dialog-mode nil "recentf-dialog"
"Major mode of recentf dialogs.
\\{recentf-dialog-mode-map}"
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'recentf-dialog-mode)
- (setq mode-name "recentf-dialog")
- (use-local-map recentf-dialog-mode-map)
- (run-mode-hooks 'recentf-dialog-mode-hook))
+ :syntax-table nil
+ :abbrev-table nil
+ (setq truncate-lines t))
+
+(defmacro recentf-dialog (name &rest forms)
+ "Show a dialog buffer with NAME, setup with FORMS."
+ (declare (indent 1) (debug t))
+ `(with-current-buffer (get-buffer-create ,name)
+ ;; Cleanup buffer
+ (let ((inhibit-read-only t)
+ (ol (overlay-lists)))
+ (mapc 'delete-overlay (car ol))
+ (mapc 'delete-overlay (cdr ol))
+ (erase-buffer))
+ (recentf-dialog-mode)
+ ,@forms
+ (widget-setup)
+ (switch-to-buffer (current-buffer))))
;;; Hooks
;;
@@ -976,163 +1001,127 @@ That is, remove a non kept file from the recent list."
;;; Commands
;;
-(defvar recentf-edit-selected-items nil
- "List of files to be deleted from the recent list.
-Used internally by `recentf-edit-list'.")
-(defun recentf-edit-list-action (widget &rest ignore)
- "Checkbox WIDGET action that toogles a file selection.
-Used internally by `recentf-edit-list'.
+;;; Edit list dialog
+;;
+(defvar recentf-edit-list nil)
+
+(defun recentf-edit-list-select (widget &rest ignore)
+ "Toggle a file selection based on the checkbox WIDGET state.
IGNORE other arguments."
- (let ((value (widget-get widget ':tag)))
- ;; if value is already in the selected items
- (if (memq value recentf-edit-selected-items)
- ;; then remove it
- (progn
- (setq recentf-edit-selected-items
- (delq value recentf-edit-selected-items))
- (message "%s removed from selection" value))
- ;; else add it
- (push value recentf-edit-selected-items)
- (message "%s added to selection" value))))
+ (let ((value (widget-get widget :tag))
+ (check (widget-value widget)))
+ (if check
+ (add-to-list 'recentf-edit-list value)
+ (setq recentf-edit-list (delq value recentf-edit-list)))
+ (message "%s %sselected" value (if check "" "un"))))
+
+(defun recentf-edit-list-validate (&rest ignore)
+ "Process the recent list when the edit list dialog is committed.
+IGNORE arguments."
+ (if recentf-edit-list
+ (let ((i 0))
+ (dolist (e recentf-edit-list)
+ (setq recentf-list (delq e recentf-list)
+ i (1+ i)))
+ (kill-buffer (current-buffer))
+ (message "%S file(s) removed from the list" i)
+ (recentf-clear-data))
+ (message "No file selected")))
(defun recentf-edit-list ()
- "Show a dialog buffer to edit the recent list.
-That is to select files to be deleted from the recent list."
+ "Show a dialog to delete selected files from the recent list."
(interactive)
- (with-current-buffer
- (get-buffer-create (format "*%s - Edit list*" recentf-menu-title))
- (switch-to-buffer (current-buffer))
- ;; Cleanup buffer
- (let ((inhibit-read-only t)
- (ol (overlay-lists)))
- (erase-buffer)
- ;; Delete all the overlays.
- (mapc 'delete-overlay (car ol))
- (mapc 'delete-overlay (cdr ol)))
- (recentf-dialog-mode)
- (setq recentf-edit-selected-items nil)
- ;; Insert the dialog header
+ (recentf-dialog (format "*%s - Edit list*" recentf-menu-title)
+ (set (make-local-variable 'recentf-edit-list) nil)
(widget-insert
- "\
-Select the files to be deleted from the recent list.\n\n\
-Click on Ok to update the list. \
-Click on Cancel or type \"q\" to quit.\n")
+ "Click on OK to delete selected files from the recent list.
+Click on Cancel or type `q' to cancel.\n")
;; Insert the list of files as checkboxes
(dolist (item recentf-list)
- (widget-create
- 'checkbox
- :value nil ; unselected checkbox
- :format "\n %[%v%] %t"
- :tag item
- :notify 'recentf-edit-list-action))
+ (widget-create 'checkbox
+ :value nil ; unselected checkbox
+ :format "\n %[%v%] %t"
+ :tag item
+ :notify 'recentf-edit-list-select))
(widget-insert "\n\n")
- ;; Insert the Ok button
(widget-create
'push-button
- :notify (lambda (&rest ignore)
- (if recentf-edit-selected-items
- (let ((i 0))
- (kill-buffer (current-buffer))
- (dolist (e recentf-edit-selected-items)
- (setq recentf-list (delq e recentf-list)
- i (1+ i)))
- (message "%S file(s) removed from the list" i)
- (recentf-clear-data))
- (message "No file selected")))
- "Ok")
+ :notify 'recentf-edit-list-validate
+ :help-echo "Delete selected files from the recent list"
+ "Ok")
(widget-insert " ")
- ;; Insert the Cancel button
(widget-create
'push-button
:notify 'recentf-cancel-dialog
"Cancel")
- (widget-setup)
- (goto-char (point-min))))
+ (recentf-dialog-goto-first 'checkbox)))
+;;; Open file dialog
+;;
(defun recentf-open-files-action (widget &rest ignore)
- "Button WIDGET action that open a file.
-Used internally by `recentf-open-files'.
+ "Open the file stored in WIDGET's value when notified.
IGNORE other arguments."
(kill-buffer (current-buffer))
(funcall recentf-menu-action (widget-value widget)))
-(defvar recentf-open-files-item-shift ""
- "Amount of space to shift right sub-menu items.
-Used internally by `recentf-open-files'.")
-
(defun recentf-open-files-item (menu-element)
- "Insert an item widget for MENU-ELEMENT in the current dialog buffer.
-Used internally by `recentf-open-files'."
- (let ((item (car menu-element))
- (file (cdr menu-element)))
- (if (consp file) ; This is a sub-menu
- (let* ((shift recentf-open-files-item-shift)
- (recentf-open-files-item-shift (concat shift " ")))
- (widget-create
- 'item
- :tag item
- :sample-face 'bold
- :format (concat shift "%{%t%}:\n"))
- (mapc 'recentf-open-files-item file)
- (widget-insert "\n"))
- (widget-create
- 'push-button
- :button-face 'default
- :tag item
- :help-echo (concat "Open " file)
- :format (concat recentf-open-files-item-shift "%[%t%]")
- :notify 'recentf-open-files-action
- file)
- (widget-insert "\n"))))
+ "Return a widget to display MENU-ELEMENT in a dialog buffer."
+ (if (consp (cdr menu-element))
+ ;; Represent a sub-menu with a tree widget
+ `(tree-widget
+ :open t
+ :match ignore
+ :node (item :tag ,(car menu-element)
+ :sample-face bold
+ :format "%{%t%}:\n")
+ ,@(mapcar 'recentf-open-files-item
+ (cdr menu-element)))
+ ;; Represent a single file with a link widget
+ `(link :tag ,(car menu-element)
+ :button-prefix ""
+ :button-suffix ""
+ :button-face default
+ :format "%[%t%]\n"
+ :help-echo ,(concat "Open " (cdr menu-element))
+ :action recentf-open-files-action
+ ,(cdr menu-element))))
(defun recentf-open-files (&optional files buffer-name)
- "Show a dialog buffer to open a recent file.
-If optional argument FILES is non-nil, it specifies the list of
-recently-opened files to choose from. It is the whole recent list
-otherwise.
-If optional argument BUFFER-NAME is non-nil, it specifies which buffer
-name to use for the interaction. It is \"*`recentf-menu-title'*\" by
-default."
+ "Show a dialog to open a recent file.
+If optional argument FILES is non-nil, it is a list of recently-opened
+files to choose from. It defaults to the whole recent list.
+If optional argument BUFFER-NAME is non-nil, it is a buffer name to
+use for the dialog. It defaults to \"*`recentf-menu-title'*\"."
(interactive)
- (unless files
- (setq files recentf-list))
- (unless buffer-name
- (setq buffer-name (format "*%s*" recentf-menu-title)))
- (with-current-buffer (get-buffer-create buffer-name)
- (switch-to-buffer (current-buffer))
- ;; Cleanup buffer
- (let ((inhibit-read-only t)
- (ol (overlay-lists)))
- (erase-buffer)
- ;; Delete all the overlays.
- (mapc 'delete-overlay (car ol))
- (mapc 'delete-overlay (cdr ol)))
- (recentf-dialog-mode)
- ;; Insert the dialog header
- (widget-insert "Click on a file to open it. ")
- (widget-insert "Click on Cancel or type \"q\" to quit.\n\n" )
- ;; Insert the list of files as buttons
- (let ((recentf-open-files-item-shift ""))
- (mapc 'recentf-open-files-item
- (recentf-apply-menu-filter
- recentf-menu-filter
- (mapcar 'recentf-make-default-menu-element files))))
- (widget-insert "\n")
- ;; Insert the Cancel button
+ (recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title))
+ (widget-insert "Click on a file to open it.
+Click on Cancel or type `q' to cancel.\n" )
+ ;; Use a L&F that looks like the recentf menu.
+ (tree-widget-set-theme "folder")
+ (apply 'widget-create
+ `(group
+ :indent 2
+ :format "\n%v\n"
+ ,@(mapcar 'recentf-open-files-item
+ (recentf-apply-menu-filter
+ recentf-menu-filter
+ (mapcar 'recentf-make-default-menu-element
+ (or files recentf-list))))))
(widget-create
'push-button
:notify 'recentf-cancel-dialog
"Cancel")
- (widget-setup)
- (goto-char (point-min))))
+ (recentf-dialog-goto-first 'link)))
(defun recentf-open-more-files ()
- "Show a dialog buffer to open a recent file that is not in the menu."
+ "Show a dialog to open a recent file that is not in the menu."
(interactive)
(recentf-open-files (nthcdr recentf-max-menu-items recentf-list)
(format "*%s - More*" recentf-menu-title)))
+;;; Save/load/cleanup the recent list
+;;
(defconst recentf-save-file-header
";;; Automatically generated by `recentf' on %s.\n"
"Header to be written into the `recentf-save-file'.")
@@ -1149,16 +1138,16 @@ Write data into the file specified by `recentf-save-file'."
(interactive)
(condition-case error
(with-temp-buffer
- (erase-buffer)
- (set-buffer-file-coding-system recentf-save-file-coding-system)
- (insert (format recentf-save-file-header (current-time-string)))
- (recentf-dump-variable 'recentf-list recentf-max-saved-items)
- (recentf-dump-variable 'recentf-filter-changer-state)
- (insert "\n \n;;; Local Variables:\n"
- (format ";;; coding: %s\n" recentf-save-file-coding-system)
- ";;; End:\n")
- (write-file (expand-file-name recentf-save-file))
- nil)
+ (erase-buffer)
+ (set-buffer-file-coding-system recentf-save-file-coding-system)
+ (insert (format recentf-save-file-header (current-time-string)))
+ (recentf-dump-variable 'recentf-list recentf-max-saved-items)
+ (recentf-dump-variable 'recentf-filter-changer-state)
+ (insert "\n \n;;; Local Variables:\n"
+ (format ";;; coding: %s\n" recentf-save-file-coding-system)
+ ";;; End:\n")
+ (write-file (expand-file-name recentf-save-file))
+ nil)
(error
(warn "recentf mode: %s" (error-message-string error)))))
@@ -1218,5 +1207,5 @@ that were operated on recently."
(run-hooks 'recentf-load-hook)
-;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
+;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
;;; 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."
Prompt for a regexp with PROMPT.
Value is a list, (REGEXP)."
(list (read-from-minibuffer prompt nil nil nil
- 'regexp-history nil t)))
+ 'regexp-history nil t)
+ nil nil t))
-(defun keep-lines (regexp &optional rstart rend)
+(defun keep-lines (regexp &optional rstart rend interactive)
"Delete all lines except those containing matches for REGEXP.
A match split across lines preserves all the lines it lies in.
-Applies to all lines after point.
+When called from Lisp (and usually interactively as well, see below)
+applies to all lines starting after point.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
Second and third arg RSTART and REND specify the region to operate on.
+This command operates on (the accessible part of) all lines whose
+accessible part is entirely contained in the region determined by RSTART
+and REND. (A newline ending a line counts as part of that line.)
Interactively, in Transient Mark mode when the mark is active, operate
-on the contents of the region. Otherwise, operate from point to the
-end of the buffer."
+on all lines whose accessible part is entirely contained in the region.
+Otherwise, the command applies to all lines starting after point.
+When calling this function from Lisp, you can pretend that it was
+called interactively by passing a non-nil INTERACTIVE argument.
+
+This function starts looking for the next match from the end of
+the previous match. Hence, it ignores matches that overlap
+a previously found match."
(interactive
(progn
@@ -539,10 +550,20 @@ end of the buffer."
(if rstart
(progn
(goto-char (min rstart rend))
- (setq rend (copy-marker (max rstart rend))))
- (if (and transient-mark-mode mark-active)
+ (setq rend
+ (progn
+ (save-excursion
+ (goto-char (max rstart rend))
+ (unless (or (bolp) (eobp))
+ (forward-line 0))
+ (point-marker)))))
+ (if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
- rend (copy-marker (region-end)))
+ rend (progn
+ (goto-char (region-end))
+ (unless (or (bolp) (eobp))
+ (forward-line 0))
+ (point-marker)))
(setq rstart (point)
rend (point-max-marker)))
(goto-char rstart))
@@ -556,7 +577,7 @@ end of the buffer."
(if (not (re-search-forward regexp rend 'move))
(delete-region start rend)
(let ((end (save-excursion (goto-char (match-beginning 0))
- (beginning-of-line)
+ (forward-line 0)
(point))))
;; Now end is first char preserved by the new match.
(if (< start end)
@@ -566,22 +587,34 @@ end of the buffer."
;; If the match was empty, avoid matching again at same place.
(and (< (point) rend)
(= (match-beginning 0) (match-end 0))
- (forward-char 1))))))
+ (forward-char 1)))))
+ (set-marker rend nil)
+ nil)
-(defun flush-lines (regexp &optional rstart rend)
- "Delete lines containing matches for REGEXP.
-If a match is split across lines, all the lines it lies in are deleted.
-Applies to lines after point.
+(defun flush-lines (regexp &optional rstart rend interactive)
+ "Delete lines containing matches for REGEXP.
+When called from Lisp (and usually when called interactively as
+well, see below), applies to the part of the buffer after point.
+The line point is in is deleted if and only if it contains a
+match for regexp starting after point.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
Second and third arg RSTART and REND specify the region to operate on.
+Lines partially contained in this region are deleted if and only if
+they contain a match entirely contained in it.
Interactively, in Transient Mark mode when the mark is active, operate
on the contents of the region. Otherwise, operate from point to the
-end of the buffer."
+end of (the accessible portion of) the buffer. When calling this function
+from Lisp, you can pretend that it was called interactively by passing
+a non-nil INTERACTIVE argument.
+
+If a match is split across lines, all the lines it lies in are deleted.
+They are deleted _before_ looking for the next match. Hence, a match
+starting on the same line at which another match ended is ignored."
(interactive
(progn
@@ -591,7 +624,7 @@ end of the buffer."
(progn
(goto-char (min rstart rend))
(setq rend (copy-marker (max rstart rend))))
- (if (and transient-mark-mode mark-active)
+ (if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
rend (copy-marker (region-end)))
(setq rstart (point)
@@ -603,13 +636,18 @@ end of the buffer."
(while (and (< (point) rend)
(re-search-forward regexp rend t))
(delete-region (save-excursion (goto-char (match-beginning 0))
- (beginning-of-line)
+ (forward-line 0)
(point))
- (progn (forward-line 1) (point)))))))
+ (progn (forward-line 1) (point))))))
+ (set-marker rend nil)
+ nil)
-(defun how-many (regexp &optional rstart rend)
- "Print number of matches for REGEXP following point.
+(defun how-many (regexp &optional rstart rend interactive)
+ "Print and return number of matches for REGEXP following point.
+When called from Lisp and INTERACTIVE is omitted or nil, just return
+the number, do not print it; if INTERACTIVE is t, the function behaves
+in all respects has if it had been called interactively.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
@@ -618,18 +656,24 @@ Second and third arg RSTART and REND specify the region to operate on.
Interactively, in Transient Mark mode when the mark is active, operate
on the contents of the region. Otherwise, operate from point to the
-end of the buffer."
+end of (the accessible portion of) the buffer.
+
+This function starts looking for the next match from the end of
+the previous match. Hence, it ignores matches that overlap
+a previously found match."
(interactive
(keep-lines-read-args "How many matches for (regexp): "))
(save-excursion
(if rstart
- (goto-char (min rstart rend))
- (if (and transient-mark-mode mark-active)
+ (progn
+ (goto-char (min rstart rend))
+ (setq rend (max rstart rend)))
+ (if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
- rend (copy-marker (region-end)))
+ rend (region-end))
(setq rstart (point)
- rend (point-max-marker)))
+ rend (point-max)))
(goto-char rstart))
(let ((count 0)
opoint
@@ -641,7 +685,10 @@ end of the buffer."
(if (= opoint (point))
(forward-char 1)
(setq count (1+ count))))
- (message "%d occurrences" count))))
+ (when interactive (message "%d occurrence%s"
+ count
+ (if (= count 1) "" "s")))
+ count)))
(defvar occur-mode-map
@@ -672,7 +719,7 @@ See `occur-revert-function'.")
:group 'matching)
(defcustom occur-hook nil
- "Hook run when `occur' is called."
+ "Hook run by Occur when there are any matches."
:type 'hook
:group 'matching)
@@ -879,7 +926,7 @@ If the value is nil, don't highlight the buffer names specially."
Here `original-buffer-name' is the buffer name were occur was originally run.
When given the prefix argument, the renaming will not clobber the existing
buffer(s) of that name, but use `generate-new-buffer-name' instead.
-You can add this to `occur-hook' if you always want a separate *Occur*
+You can add this to `occur-mode-hook' if you always want a separate *Occur*
buffer for each buffer where you invoke `occur'."
(interactive "P")
(with-current-buffer
@@ -892,8 +939,7 @@ buffer for each buffer where you invoke `occur'."
(defun occur (regexp &optional nlines)
"Show all lines in the current buffer containing a match for REGEXP.
-
-If a match spreads across multiple lines, all those lines are shown.
+This function can not handle matches that span more than one line.
Each line is displayed with NLINES lines before and after, or -NLINES
before if NLINES is negative.
@@ -996,14 +1042,13 @@ See also `multi-occur'."
(if (= count 1) "" "es")
regexp))
(setq occur-revert-arguments (list regexp nlines bufs))
- (if (> count 0)
- (progn
- (display-buffer occur-buf)
- (setq next-error-last-buffer occur-buf))
- (kill-buffer occur-buf)))
- (setq buffer-read-only t)
- (set-buffer-modified-p nil)
- (run-hooks 'occur-hook)))))
+ (if (= count 0)
+ (kill-buffer occur-buf)
+ (display-buffer occur-buf)
+ (setq next-error-last-buffer occur-buf)
+ (setq buffer-read-only t)
+ (set-buffer-modified-p nil)
+ (run-hooks 'occur-hook)))))))
(defun occur-engine-add-prefix (lines)
(mapcar
@@ -1603,15 +1648,15 @@ make, or the user didn't cancel the call."
;; Change markers to numbers in the match data
;; since lots of markers slow down editing.
(push (list (point) replaced
-;;; If the replacement has already happened, all we need is the
-;;; current match start and end. We could get this with a trivial
-;;; match like
-;;; (save-excursion (goto-char (match-beginning 0))
-;;; (search-forward (match-string 0))
-;;; (match-data t))
-;;; if we really wanted to avoid manually constructing match data.
-;;; Adding current-buffer is necessary so that match-data calls can
-;;; return markers which are appropriate for editing.
+;;; If the replacement has already happened, all we need is the
+;;; current match start and end. We could get this with a trivial
+;;; match like
+;;; (save-excursion (goto-char (match-beginning 0))
+;;; (search-forward (match-string 0))
+;;; (match-data t))
+;;; if we really wanted to avoid manually constructing match data.
+;;; Adding current-buffer is necessary so that match-data calls can
+;;; return markers which are appropriate for editing.
(if replaced
(list
(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 @@
;;----------------------------------------------------------------------------
(defgroup ses nil
- "Simple Emacs Spreadsheet"
+ "Simple Emacs Spreadsheet."
:group 'applications
:prefix "ses-"
:version "21.1")
@@ -376,7 +376,7 @@ macro to prevent propagate-on-load viruses."
;;print area (excluding the terminating newline)
(setq ses--col-widths widths
ses--linewidth (apply '+ -1 (mapcar '1+ widths))
- ses--blank-line (concat (make-string ses--linewidth ? ) "\n"))
+ ses--blank-line (concat (make-string ses--linewidth ?\s) "\n"))
t)
(defmacro ses-column-printers (printers)
@@ -798,7 +798,7 @@ preceding cell has spilled over."
(cond
((< len width)
;;Fill field to length with spaces
- (setq len (make-string (- width len) ? )
+ (setq len (make-string (- width len) ?\s)
text (if (eq ses-call-printer-return t)
(concat text len)
(concat len text))))
@@ -816,7 +816,7 @@ preceding cell has spilled over."
maxcol (1+ maxcol)))
(if (<= len maxwidth)
;;Fill to complete width of all the fields spanned
- (setq text (concat text (make-string (- maxwidth len) ? )))
+ (setq text (concat text (make-string (- maxwidth len) ?\s)))
;;Not enough room to end of line or next non-nil field. Truncate
;;if string or decimal; otherwise fill with error indicator
(setq sig `(error "Too wide" ,text))
@@ -906,12 +906,12 @@ printer signaled one (and \"%s\" is used as the default printer), else nil."
COL=NUMCOLS. Deletes characters if CHANGE < 0. Caller should bind
inhibit-quit to t."
(let ((inhibit-read-only t)
- (blank (if (> change 0) (make-string change ? )))
+ (blank (if (> change 0) (make-string change ?\s)))
(at-end (= col ses--numcols)))
(ses-set-with-undo 'ses--linewidth (+ ses--linewidth change))
;;ses-set-with-undo always returns t for strings.
(1value (ses-set-with-undo 'ses--blank-line
- (concat (make-string ses--linewidth ? ) "\n")))
+ (concat (make-string ses--linewidth ?\s) "\n")))
(dotimes (row ses--numrows)
(ses-goto-print row col)
(when at-end
@@ -2901,7 +2901,7 @@ columns to include in width (default = 0)."
(let ((printer (or (ses-col-printer col) ses--default-printer))
(width (ses-col-width col))
half)
- (or fill (setq fill ? ))
+ (or fill (setq fill ?\s))
(or span (setq span 0))
(setq value (ses-call-printer printer value))
(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 @@
;;; Customization and Buffer Variables
(defgroup shell nil
- "Running shell from within Emacs buffers"
+ "Running shell from within Emacs buffers."
:group 'processes
:group 'unix)
(defgroup shell-directories nil
- "Directory support in shell mode"
+ "Directory support in shell mode."
:group 'shell)
(defgroup shell-faces nil
- "Faces in shell buffers"
+ "Faces in shell buffers."
:group 'shell)
;;;###autoload
@@ -178,7 +178,7 @@ This is a fine thing to set in your `.emacs' file.")
(defvar shell-file-name-quote-list
(if (memq system-type '(ms-dos windows-nt))
nil
- (append shell-delimiter-argument-list '(?\ ?\* ?\! ?\" ?\' ?\` ?\# ?\\)))
+ (append shell-delimiter-argument-list '(?\s ?\* ?\! ?\" ?\' ?\` ?\# ?\\)))
"List of characters to quote when in a file name.
This variable is used to initialize `comint-file-name-quote-list' in the
shell 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."
(read-variable "Set variable: ")))
(minibuffer-help-form '(describe-variable var))
(prop (get var 'variable-interactive))
- (prompt (format "Set %s%s to value: " var
+ (obsolete (car (get var 'byte-obsolete-variable)))
+ (prompt (format "Set %s %s to value: " var
(cond ((local-variable-p var)
- " (buffer-local)")
+ "(buffer-local)")
((or current-prefix-arg
(local-variable-if-set-p var))
- " buffer-locally")
- (t " globally"))))
- (val (if prop
- ;; Use VAR's `variable-interactive' property
- ;; as an interactive spec for prompting.
- (call-interactively `(lambda (arg)
- (interactive ,prop)
- arg))
- (read
- (read-string prompt nil
- 'set-variable-value-history)))))
+ "buffer-locally")
+ (t "globally"))))
+ (val (progn
+ (when obsolete
+ (message (concat "`%S' is obsolete; "
+ (if (symbolp obsolete) "use `%S' instead" "%s"))
+ var obsolete)
+ (sit-for 3))
+ (if prop
+ ;; Use VAR's `variable-interactive' property
+ ;; as an interactive spec for prompting.
+ (call-interactively `(lambda (arg)
+ (interactive ,prop)
+ arg))
+ (read
+ (read-string prompt nil
+ 'set-variable-value-history))))))
(list var val current-prefix-arg)))
(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 @@
(eval-when-compile (require 'cl))
+;;; The real definition comes later.
+(defvar smerge-mode)
+
(defgroup smerge ()
"Minor mode to resolve diff3 conflicts."
: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.")
(make-variable-frame-local 'window-system)
(defgroup initialization nil
- "Emacs start-up procedure"
+ "Emacs start-up procedure."
:group 'internal)
(defcustom inhibit-startup-message nil
@@ -294,6 +294,8 @@ from being initialized."
(defvar no-blinking-cursor nil)
+(defvar default-frame-background-mode)
+
(defvar pure-space-overflow nil
"Non-nil if building Emacs overflowed pure space.")
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[] = {
;;; user variables...
(defgroup strokes nil
- "Control Emacs through mouse strokes"
+ "Control Emacs through mouse strokes."
:link '(emacs-commentary-link "strokes")
:link '(url-link "http://www.mit.edu/people/cadet/strokes-help.html")
:group 'mouse)
@@ -753,7 +753,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
(progn
(goto-char point)
(subst-char-in-region point (1+ point)
- ?\ strokes-character))
+ ?\s strokes-character))
;; otherwise, we can start drawing the next time...
(setq safe-to-draw-p t))
(push (cdr (mouse-pixel-position))
@@ -763,7 +763,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
;; clean up strokes buffer and then bury it.
(when (equal (buffer-name) strokes-buffer-name)
(subst-char-in-region (point-min) (point-max)
- strokes-character ?\ )
+ strokes-character ?\s)
(goto-char (point-min))
(bury-buffer))))
;; 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"
(when point
(goto-char point)
(subst-char-in-region point (1+ point)
- ?\ strokes-character))
+ ?\s strokes-character))
(push (cdr (mouse-pixel-position))
pix-locs)))
(setq event (read-event)))
@@ -831,7 +831,7 @@ Optional EVENT is acceptable as the starting event of the stroke"
;; protected
(when (equal (buffer-name) strokes-buffer-name)
(subst-char-in-region (point-min) (point-max)
- strokes-character ?\ )
+ strokes-character ?\s)
(goto-char (point-min))
(bury-buffer)))))))
@@ -1035,7 +1035,7 @@ o Strokes are a bit computer-dependent in that they depend somewhat on
"Erase the contents of the current buffer and fill it with whitespace."
(erase-buffer)
(loop repeat (frame-height) do
- (insert-char ?\ (1- (frame-width)))
+ (insert-char ?\s (1- (frame-width)))
(newline))
(goto-char (point-min)))
@@ -1169,7 +1169,7 @@ the stroke as a character in some language."
(insert strokes-xpm-header)
(loop repeat 33 do
(insert ?\")
- (insert-char ?\ 33)
+ (insert-char ?\s 33)
(insert "\",")
(newline)
finally
@@ -1195,7 +1195,7 @@ the stroke as a character in some language."
;; Otherwise, just plot the point...
(goto-line (+ 17 y))
(forward-char (+ 2 x))
- (subst-char-in-region (point) (1+ (point)) ?\ ?\*)))
+ (subst-char-in-region (point) (1+ (point)) ?\s ?\*)))
((strokes-lift-p point)
;; a lift--tell the loop to X out the next point...
(setq lift-flag t))))
@@ -1286,7 +1286,7 @@ the stroke as a character in some language."
;; (command-name (symbol-name (cdr def))))
;; (strokes-xpm-for-stroke stroke " *strokes-xpm*")
;; (newline 2)
-;; (insert-char ?\ 45)
+;; (insert-char ?\s 45)
;; (beginning-of-line)
;; (insert command-name)
;; (beginning-of-line)
@@ -1342,7 +1342,7 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
(prin1-to-string (cdr def)))))
(strokes-xpm-for-stroke stroke " *strokes-xpm*")
(newline 2)
- (insert-char ?\ 45)
+ (insert-char ?\s 45)
(beginning-of-line)
(insert command-name)
(beginning-of-line)
@@ -1515,7 +1515,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer],
(defsubst strokes-xpm-char-bit-p (char)
"Non-nil if CHAR represents an `on' or `off' bit in the XPM."
- (or (eq char ?\ )
+ (or (eq char ?\s)
(eq char ?*)))
;;(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*'\)"
(insert-char
(if current-char-is-on-p
?*
- ?\ )
+ ?\s)
(strokes-xpm-decode-char (char-after)))
(delete-char 1)
(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."
(set hook hook-value))))))
(defun add-to-list (list-var element &optional append)
- "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
+ "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
The test for presence of ELEMENT is done with `equal'.
If ELEMENT is added, it is added at the beginning of the list,
unless 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."
(defun add-to-ordered-list (list-var element &optional order)
- "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
+ "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
The test for presence of ELEMENT is done with `eq'.
The resulting list is reordered so that the elements are in the
order given by each element's numeric list order. Elements
without a numeric list order are placed at the end of the list.
-If the third optional argument ORDER is non-nil, set the
-element's list order to the given value.
+If the third optional argument ORDER is a number (integer or
+float), set the element's list order to the given value. If
+ORDER is nil or omitted, do not change the numeric order of
+ELEMENT. If ORDER has any other value, remove the numeric order
+of ELEMENT if it has one.
The list order for each element is stored in LIST-VAR's
`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 @@
(require 'ehelp)
(defgroup term nil
- "General command interpreter in a window"
+ "General command interpreter in a window."
:group 'processes
:group 'unix)
@@ -1574,7 +1574,7 @@ See also `term-read-input-ring'."
(sit-for 0)
(message "Hit space to flush")
(let ((ch (read-event)))
- (if (eq ch ?\ )
+ (if (eq ch ?\s)
(set-window-configuration conf)
(setq unread-command-events (list ch)))))))
@@ -4045,7 +4045,7 @@ Typing SPC flushes the help buffer."
(progn
(mouse-choose-completion first)
(set-window-configuration conf))
- (if (eq first ?\ )
+ (if (eq first ?\s)
(set-window-configuration conf)
(setq unread-command-events (listify-key-sequence key)))))))
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."
"Set background mode as appropriate for the default rxvt colors."
(let ((fgbg (server-getenv "COLORFGBG"))
bg rgb)
- (setq frame-background-mode 'light) ; default
+ (setq default-frame-background-mode 'light)
(when (and fgbg
(string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
(setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -173,7 +173,7 @@ for the currently selected frame."
;; The following line assumes that white is the 15th
;; color in rxvt-standard-colors.
(* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
- (setq frame-background-mode 'dark)))
+ (setq default-frame-background-mode 'dark)))
(frame-set-background-mode (selected-frame))))
;; 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."
"Set background mode as appropriate for the default rxvt colors."
(let ((fgbg (server-getenv "COLORFGBG"))
bg rgb)
- (setq frame-background-mode 'light) ; default
+ (setq default-frame-background-mode 'light)
(when (and fgbg
(string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
(setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -389,7 +389,7 @@ versions of xterm."
;; The following line assumes that white is the 15th
;; color in xterm-standard-colors.
(* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6))
- (setq frame-background-mode 'dark)))
+ (setq default-frame-background-mode 'dark)))
(frame-set-background-mode (selected-frame))))
;; 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.")
(if artist-picture-compatibility
(require 'picture))
-
+;; Variables that are made local in artist-mode-init
+(defvar artist-key-is-drawing nil)
+(defvar artist-key-endpoint1 nil)
+(defvar artist-key-poly-point-list nil)
+(defvar artist-key-shape nil)
+(defvar artist-key-draw-how nil)
+(defvar artist-popup-menu-table nil)
+(defvar artist-key-compl-table nil)
+(defvar artist-rb-save-data nil)
+(defvar artist-arrow-point-1 nil)
+(defvar artist-arrow-point-2 nil)
+
(defvar artist-mode-map
(let ((map (make-sparse-keymap)))
(setq artist-mode-map (make-sparse-keymap))
@@ -1370,21 +1381,6 @@ Keymap summary
minor-mode-map-alist)))
-
-(eval-when-compile
- ;; Variables that are made local in artist-mode-init
- (defvar artist-key-is-drawing nil)
- (defvar artist-key-endpoint1 nil)
- (defvar artist-key-poly-point-list nil)
- (defvar artist-key-shape nil)
- (defvar artist-key-draw-how nil)
- (defvar artist-popup-menu-table nil)
- (defvar artist-key-compl-table nil)
- (defvar artist-rb-save-data nil)
- (defvar artist-arrow-point-1 nil)
- (defvar artist-arrow-point-2 nil))
-
-
;; Init and exit
(defun artist-mode-init ()
"Init Artist mode. This will call the hook `artist-mode-init-hook'."
@@ -2875,7 +2871,7 @@ Returns a list of strings."
(defun artist-figlet-get-extra-args ()
"Read any extra arguments for figlet."
- (let ((extra-args (read-input "Extra args to figlet: ")))
+ (let ((extra-args (read-string "Extra args to figlet: ")))
(if (string= extra-args "")
nil
extra-args)))
@@ -2916,7 +2912,7 @@ This is done by calling the function specified by `artist-text-renderer',
which must return a list of strings, to be inserted in the buffer.
Text already in the buffer ``shines thru'' blanks in the rendered text."
- (let* ((input-text (read-input "Type text to render: "))
+ (let* ((input-text (read-string "Type text to render: "))
(rendered-text (artist-funcall artist-text-renderer input-text)))
(artist-text-insert-see-thru x y rendered-text)))
@@ -2927,7 +2923,7 @@ This is done by calling the function specified by `artist-text-renderer',
which must return a list of strings, to be inserted in the buffer.
Blanks in the rendered text overwrites any text in the buffer."
- (let* ((input-text (read-input "Type text to render: "))
+ (let* ((input-text (read-string "Type text to render: "))
(rendered-text (artist-funcall artist-text-renderer input-text)))
(artist-text-insert-overwrite x y rendered-text)))
@@ -3850,8 +3846,8 @@ Optional argument STATE can be used to set state (default is nil)."
(x2 (artist-endpoint-get-x ep2))
(y2 (artist-endpoint-get-y ep2))
(dir1 (artist-find-direction x2 y2 x1 y1))
- (epn (artist-last point-list))
- (epn-1 (artist-last point-list 2))
+ (epn (last point-list))
+ (epn-1 (last point-list 2))
(xn (artist-endpoint-get-x epn))
(yn (artist-endpoint-get-y epn))
(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 @@
;; User Options:
(defgroup bibtex nil
- "BibTeX mode"
+ "BibTeX mode."
:group 'tex
:prefix "bibtex-")
(defgroup bibtex-autokey nil
- "Generate automatically a key from the author/editor and the title field"
+ "Generate automatically a key from the author/editor and the title field."
:group 'bibtex
:prefix "bibtex-autokey-")
@@ -2800,7 +2800,7 @@ if that value is non-nil.
(set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field)
(set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset
bibtex-contline-indentation)
- ? ))
+ ?\s))
(set (make-local-variable 'font-lock-defaults)
'(bibtex-font-lock-keywords
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 @@
;;;
(defgroup enriched nil
- "Read and save files in text/enriched format"
+ "Read and save files in text/enriched format."
:group 'wp)
(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 @@
'emacs))
"The type of Emacs we are currently running.")
-(defvar flyspell-use-local-map
- (or (eq flyspell-emacs 'xemacs)
- (not (string< emacs-version "20"))))
-
;*---------------------------------------------------------------------*/
;* User configuration ... */
;*---------------------------------------------------------------------*/
@@ -403,34 +399,22 @@ property of the major mode name.")
;*---------------------------------------------------------------------*/
;* The minor mode declaration. */
;*---------------------------------------------------------------------*/
-(eval-when-compile (defvar flyspell-local-mouse-map))
-
(defvar flyspell-mouse-map
(let ((map (make-sparse-keymap)))
- (if flyspell-use-meta-tab
- (define-key map "\M-\t" #'flyspell-auto-correct-word))
(define-key map (if (featurep 'xemacs) [button2] [down-mouse-2])
#'flyspell-correct-word)
- (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
- (define-key map [(control \,)] 'flyspell-goto-next-error)
- (define-key map [(control \.)] 'flyspell-auto-correct-word)
- map))
+ map)
+ "Keymap for Flyspell to put on erroneous words.")
(defvar flyspell-mode-map
(let ((map (make-sparse-keymap)))
- ;; mouse, keyboard bindings and misc definition
(if flyspell-use-meta-tab
(define-key map "\M-\t" 'flyspell-auto-correct-word))
- (cond
- ;; I don't understand this test, so I left it as is. --Stef
- ((or (featurep 'xemacs) flyspell-use-local-map)
- (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
- (define-key map [(control ?\,)] 'flyspell-goto-next-error)
- (define-key map [(control ?\.)] 'flyspell-auto-correct-word)))
- map))
-
-;; the name of the overlay property that defines the keymap
-(defvar flyspell-overlay-keymap-property-name 'keymap)
+ (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
+ (define-key map [(control ?\,)] 'flyspell-goto-next-error)
+ (define-key map [(control ?\.)] 'flyspell-auto-correct-word)
+ map)
+ "Minor mode keymap for Flyspell mode--for the whole buffer.")
;; dash character machinery
(defvar flyspell-consider-dash-as-word-delimiter-flag nil
@@ -569,22 +553,6 @@ in your .emacs file.
(let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
(if mode-predicate
(setq flyspell-generic-check-word-p mode-predicate)))
- ;; work around the fact that the `local-map' text-property replaces the
- ;; buffer's local map rather than shadowing it.
- (set (make-local-variable 'flyspell-mouse-map)
- (let ((map (copy-keymap flyspell-mouse-map)))
- (set-keymap-parent map (current-local-map))
- (if (and (eq flyspell-emacs 'emacs)
- (not (string< emacs-version "20")))
- (define-key map '[tool-bar] nil))
- map))
- (set (make-local-variable 'flyspell-mode-map)
- (let ((map (copy-keymap flyspell-mode-map)))
- (set-keymap-parent map (current-local-map))
- (if (and (eq flyspell-emacs 'emacs)
- (not (string< emacs-version "20")))
- (define-key map '[tool-bar] nil))
- map))
;; the welcome message
(if (and flyspell-issue-message-flag
flyspell-issue-welcome-flag
@@ -1570,10 +1538,7 @@ for the overlay."
(overlay-put flyspell-overlay 'flyspell-overlay t)
(overlay-put flyspell-overlay 'evaporate t)
(overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point")
- (if flyspell-use-local-map
- (overlay-put flyspell-overlay
- flyspell-overlay-keymap-property-name
- flyspell-mouse-map))
+ (overlay-put flyspell-overlay 'keymap flyspell-mouse-map)
(when (eq face 'flyspell-incorrect)
(and (stringp flyspell-before-incorrect-word-string)
(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."
end (car (cdr (cdr word)))
word (car word))
- ;; now check spelling of word if it has 3 or more characters.
- (cond
- ((> (length word) 2)
- (or quietly
- (message "Checking spelling of %s..."
- (funcall ispell-format-word word)))
- (ispell-send-string "%\n") ; put in verbose mode
- (ispell-send-string (concat "^" word "\n"))
- ;; wait until ispell has processed word
- (while (progn
- (ispell-accept-output)
- (not (string= "" (car ispell-filter)))))
- ;;(ispell-send-string "!\n") ;back to terse mode.
- (setq ispell-filter (cdr ispell-filter)) ; remove extra \n
- (if (and ispell-filter (listp ispell-filter))
- (if (> (length ispell-filter) 1)
- (error "Ispell and its process have different character maps")
- (setq poss (ispell-parse-output (car ispell-filter)))))
- (cond ((eq poss t)
- (or quietly
- (message "%s is correct"
- (funcall ispell-format-word word)))
- (and (fboundp 'extent-at)
- (extent-at start)
- (delete-extent (extent-at start))))
- ((stringp poss)
- (or quietly
- (message "%s is correct because of root %s"
- (funcall ispell-format-word word)
- (funcall ispell-format-word poss)))
- (and (fboundp 'extent-at)
- (extent-at start)
- (delete-extent (extent-at start))))
- ((null poss) (message "Error in ispell process"))
- (ispell-check-only ; called from ispell minor mode.
- (if (fboundp 'make-extent)
- (let ((ext (make-extent start end)))
- (set-extent-property ext 'face ispell-highlight-face)
- (set-extent-property ext 'priority 2000))
- (beep)
- (message "%s is incorrect"(funcall ispell-format-word word))))
- (t ; prompt for correct word.
- (save-window-excursion
- (setq replace (ispell-command-loop
- (car (cdr (cdr poss)))
- (car (cdr (cdr (cdr poss))))
- (car poss) start end)))
- (cond ((equal 0 replace)
- (ispell-add-per-file-word-list (car poss)))
- (replace
- (setq new-word (if (atom replace) replace (car replace))
- cursor-location (+ (- (length word) (- end start))
- cursor-location))
- (if (not (equal new-word (car poss)))
- (progn
- (delete-region start end)
- (setq start (point))
- (ispell-insert-word new-word)
- (setq end (point))))
- (if (not (atom replace)) ;recheck spelling of replacement
- (progn
- (if (car (cdr replace)) ; query replace requested
- (save-window-excursion
- (query-replace word new-word t)))
- (goto-char start)
- ;; single word could be split into multiple words
- (setq ispell-quit (not (ispell-region start end)))
- ))))
- ;; keep if rechecking word and we keep choices win.
- (if (get-buffer ispell-choices-buffer)
- (kill-buffer ispell-choices-buffer))))
- (ispell-pdict-save ispell-silently-savep)
- ;; NB: Cancels ispell-quit incorrectly if called from ispell-region
- (if ispell-quit (setq ispell-quit nil replace 'quit))))
+ ;; At this point it used to ignore 2-letter words.
+ ;; But that is silly; if the user asks for it, we should do it. - rms.
+ (or quietly
+ (message "Checking spelling of %s..."
+ (funcall ispell-format-word word)))
+ (ispell-send-string "%\n") ; put in verbose mode
+ (ispell-send-string (concat "^" word "\n"))
+ ;; wait until ispell has processed word
+ (while (progn
+ (ispell-accept-output)
+ (not (string= "" (car ispell-filter)))))
+ ;;(ispell-send-string "!\n") ;back to terse mode.
+ (setq ispell-filter (cdr ispell-filter)) ; remove extra \n
+ (if (and ispell-filter (listp ispell-filter))
+ (if (> (length ispell-filter) 1)
+ (error "Ispell and its process have different character maps")
+ (setq poss (ispell-parse-output (car ispell-filter)))))
+ (cond ((eq poss t)
+ (or quietly
+ (message "%s is correct"
+ (funcall ispell-format-word word)))
+ (and (fboundp 'extent-at)
+ (extent-at start)
+ (delete-extent (extent-at start))))
+ ((stringp poss)
+ (or quietly
+ (message "%s is correct because of root %s"
+ (funcall ispell-format-word word)
+ (funcall ispell-format-word poss)))
+ (and (fboundp 'extent-at)
+ (extent-at start)
+ (delete-extent (extent-at start))))
+ ((null poss) (message "Error in ispell process"))
+ (ispell-check-only ; called from ispell minor mode.
+ (if (fboundp 'make-extent)
+ (let ((ext (make-extent start end)))
+ (set-extent-property ext 'face ispell-highlight-face)
+ (set-extent-property ext 'priority 2000))
+ (beep)
+ (message "%s is incorrect"(funcall ispell-format-word word))))
+ (t ; prompt for correct word.
+ (save-window-excursion
+ (setq replace (ispell-command-loop
+ (car (cdr (cdr poss)))
+ (car (cdr (cdr (cdr poss))))
+ (car poss) start end)))
+ (cond ((equal 0 replace)
+ (ispell-add-per-file-word-list (car poss)))
+ (replace
+ (setq new-word (if (atom replace) replace (car replace))
+ cursor-location (+ (- (length word) (- end start))
+ cursor-location))
+ (if (not (equal new-word (car poss)))
+ (progn
+ (delete-region start end)
+ (setq start (point))
+ (ispell-insert-word new-word)
+ (setq end (point))))
+ (if (not (atom replace)) ;recheck spelling of replacement
+ (progn
+ (if (car (cdr replace)) ; query replace requested
+ (save-window-excursion
+ (query-replace word new-word t)))
+ (goto-char start)
+ ;; single word could be split into multiple words
+ (setq ispell-quit (not (ispell-region start end)))
+ ))))
+ ;; keep if rechecking word and we keep choices win.
+ (if (get-buffer ispell-choices-buffer)
+ (kill-buffer ispell-choices-buffer))))
+ (ispell-pdict-save ispell-silently-savep)
+ ;; NB: Cancels ispell-quit incorrectly if called from ispell-region
+ (if ispell-quit (setq ispell-quit nil replace 'quit))
(goto-char cursor-location) ; return to original location
replace)))
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 @@
(require 'info)
(defgroup makeinfo nil
- "Run makeinfo conveniently"
+ "Run makeinfo conveniently."
:group 'docs)
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 @@
-;;; org.el --- Outline-based notes management and organizer
+;; org.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
;; Copyright (c) 2004, 2005 Free Software Foundation
;;
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 3.11
+;; Version: 3.12
;;
;; This file is part of GNU Emacs.
;;
@@ -80,10 +80,20 @@
;;
;; Changes:
;; -------
+;; Version 3.12
+;; - Tables can store formulas (one per column) and compute fields.
+;; Not quite like a full spreadsheet, but very powerful.
+;; - table.el keybinding is now `C-c ~'.
+;; - Numeric argument to org-cycle does `show-subtree' above on level ARG.
+;; - Small changes to keys in agenda buffer. Affected keys:
+;; [w] weekly view; [d] daily view; [D] toggle diary inclusion.
+;; - Bug fixes.
+;;
;; Version 3.11
;; - Links inserted with C-c C-l are now by default enclosed in angle
;; brackets. See the new variable `org-link-format'.
;; - ">" terminates a link, this is a way to have several links in a line.
+;; Both "<" and ">" are no longer allowed as characters in a link.
;; - Archiving of finished tasks.
;; - C-<up>/<down> bindings removed, to allow access to paragraph commands.
;; - Compatibility with CUA-mode (see variable `org-CUA-compatible').
@@ -168,7 +178,7 @@
;;; Customization variables
-(defvar org-version "3.11"
+(defvar org-version "3.12"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@@ -183,7 +193,7 @@
"Are we using the new outline mode?")
(defgroup org nil
- "Outline-based notes management and organizer "
+ "Outline-based notes management and organizer."
:tag "Org"
:group 'outlines
:group 'hypermedia
@@ -584,7 +594,7 @@ When nil, only the days which actually have entries are shown."
;; require a variable ndays treatment.
(defcustom org-agenda-start-on-weekday 1
"Non-nil means, start the overview always on the specified weekday.
-0 Denotes Sunday, 1 denotes Monday etc.
+0 denotes Sunday, 1 denotes Monday etc.
When nil, always start on the current day."
:group 'org-agenda
:type '(choice (const :tag "Today" nil)
@@ -613,8 +623,8 @@ the entries for specific days."
(defcustom org-calendar-to-agenda-key [?c]
"The key to be installed in `calendar-mode-map' for switching to the agenda.
The command `org-calendar-goto-agenda' will be bound to this key. The
-default is the character `c' because then`c' can be used to switch back and
-force between agenda and calendar."
+default is the character `c' because then `c' can be used to switch back and
+forth between agenda and calendar."
:group 'org-agenda
:type 'sexp)
@@ -622,7 +632,7 @@ force between agenda and calendar."
"Sorting structure for the agenda items of a single day.
This is a list of symbols which will be used in sequence to determine
if an entry should be listed before another entry. The following
-symbols are recognized.
+symbols are recognized:
time-up Put entries with time-of-day indications first, early first
time-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'.")
(defcustom org-agenda-use-time-grid t
"Non-nil means, show a time grid in the agenda schedule.
A time grid is a set of lines for specific times (like every two hours between
-8:00 and 20:00. The items scheduled for a day at specific times are
+8:00 and 20:00). The items scheduled for a day at specific times are
sorted in between these lines.
-For deails about when the grid will be shown, and what it will look like, see
+For details about when the grid will be shown, and what it will look like, see
the variable `org-agenda-time-grid'."
:group 'org-agenda
:type 'boolean)
@@ -838,7 +848,7 @@ unnecessary clutter."
This string consists of two parts, separated by a double-colon.
The first part is a file name - when omitted, archiving happens in the same
-file. %s will be replaced by the current file name (without directory part).
+file. `%s' will be replaced by the current file name (without directory part).
Archiving to a different file is useful to keep archived entries from
contributing to the Org-mode Agenda.
@@ -905,7 +915,7 @@ recommend an additional URL: prefix, so the format would be \"<URL:%s>\"."
When nil, it becomes possible to put several links into a line.
Note that in tables, a link never extends accross fields, so in a table
it is always possible to put several links into a line.
-Changing this varable requires a re-launch of Emacs of become effective."
+Changing this variable requires a re-launch of Emacs to become effective."
:group 'org-link
:type 'boolean)
@@ -970,7 +980,7 @@ another window."
(const find-file-other-frame)))))
(defcustom org-usenet-links-prefer-google nil
- "Non-nil means, `org-store-link' will create web links to google groups.
+ "Non-nil means, `org-store-link' will create web links to Google groups.
When nil, Gnus will be used for such links.
Using a prefix arg to the command \\[org-store-link] (`org-store-link')
negates 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."
When nil, such lines will be treated like ordinary lines.
When equal to the symbol `optimized', the table editor will be optimized to
-do the following
+do the following:
- Use automatic overwrite mode in front of whitespace in table fields.
- This make the structure of the table stay in tact as long as the edited
+ This makes the structure of the table stay intact as long as the edited
field does not exceed the column width.
- Minimize the number of realigns. Normally, the table is aligned each time
TAB or RET are pressed to move to another field. With optimization this
- happens only if changes to a field might have changed the column width.
+ happens only if changes to a field might have changed the column width.
Optimization requires replacing the functions `self-insert-command',
`delete-char', and `backward-delete-char' in Org-mode buffers, with a
slight (in fact: unnoticeable) speed impact for normal typing. Org-mode is
@@ -1201,9 +1211,70 @@ line will be formatted with <th> tags."
:group 'org-table
:type 'boolean)
+
+(defgroup org-table-calculation nil
+ "Options concerning tables in Org-mode."
+ :tag "Org Table Calculation"
+ :group 'org)
+
(defcustom org-table-copy-increment t
"Non-nil means, increment when copying current field with \\[org-table-copy-down]."
- :group 'org-table
+ :group 'org-table-calculation
+ :type 'boolean)
+
+(defcustom org-calc-default-modes
+ '(calc-internal-prec 12
+ calc-float-format (float 5)
+ calc-angle-mode deg
+ calc-prefer-frac nil
+ calc-symbolic-mode nil)
+ "List with Calc mode settings for use in calc-eval for table formulas.
+The list must contain alternating symbols (calc modes variables and values.
+Don't remove any of the default settings, just change the values. Org-mode
+relies on the variables to be present in the list."
+ :group 'org-table-calculation
+ :type 'plist)
+
+(defcustom org-table-formula-evaluate-inline t
+ "Non-nil means, TAB and RET evaluate a formula in current table field.
+If the current field starts with an equal sign, it is assumed to be a formula
+which should be evaluated as described in the manual and in the documentation
+string of the command `org-table-eval-formula'. This feature requires the
+Emacs calc package.
+When this variable is nil, formula calculation is only available through
+the command \\[org-table-eval-formula]."
+ :group 'org-table-calculation
+ :type 'boolean)
+
+
+(defcustom org-table-formula-use-constants t
+ "Non-nil means, interpret constants in formulas in tables.
+A constant looks like `$c' or `$Grav' and will be replaced before evaluation
+by the value given in `org-table-formula-constants', or by a value obtained
+from the `constants.el' package."
+ :group 'org-table-calculation
+ :type 'boolean)
+
+(defcustom org-table-formula-constants nil
+ "Alist with constant names and values, for use in table formulas.
+The car of each element is a name of a constant, without the `$' before it.
+The cdr is the value as a string. For example, if you'd like to use the
+speed of light in a formula, you would configure
+
+ (setq org-table-formula-constants '((\"c\" . \"299792458.\")))
+
+and then use it in an equation like `$1*$c'."
+ :group 'org-table-calculation
+ :type '(repeat
+ (cons (string :tag "name")
+ (string :tag "value"))))
+
+(defcustom org-table-formula-numbers-only nil
+ "Non-nil means, calculate only with numbers in table formulas.
+Then all input fields will be converted to a number, and the result
+must also be a number. When nil, calc's full potential is available
+in table calculations, including symbolics etc."
+ :group 'org-table-calculation
:type 'boolean)
(defcustom org-table-tab-recognizes-table.el t
@@ -1259,7 +1330,7 @@ or use the +OPTION lines for a per-file setting."
(defcustom org-export-default-language "en"
"The default language of HTML export, as a string.
-This should have an association in `org-export-language-setup'"
+This should have an association in `org-export-language-setup'."
:group 'org-export
:type 'string)
@@ -1427,12 +1498,11 @@ Otherwise the buffer will just be saved to a file and stay hidden."
:type 'boolean)
(defcustom org-export-html-show-new-buffer nil
- "Non-nil means, popup buffer containing the exported html text.
+ "Non-nil means, popup buffer containing the exported HTML text.
Otherwise, the buffer will just be saved to a file and stay hidden."
:group 'org-export
:type 'boolean)
-
(defgroup org-faces nil
"Faces for highlighting in Org-mode."
:tag "Org Faces"
@@ -1556,6 +1626,15 @@ When this is non-nil, the headline after the keyword is set to the
"Face for items scheduled previously, and not yet done."
:group 'org-faces)
+(defface org-formula
+ '((((type tty pc) (class color) (background light)) (:foreground "red"))
+ (((type tty pc) (class color) (background dark)) (:foreground "red1"))
+ (((class color) (background light)) (:foreground "Firebrick"))
+ (((class color) (background dark)) (:foreground "chocolate1"))
+ (t (:bold t :italic t)))
+ "Face for items scheduled previously, and not yet done."
+ :group 'org-faces)
+
(defface org-link
'((((type tty) (class color)) (:foreground "cyan" :weight bold))
(((class color) (background light)) (:foreground "Purple"))
@@ -1585,7 +1664,7 @@ When this is non-nil, the headline after the keyword is set to the
(((class color) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (background dark)) (:foreground "LightGoldenrod"))
(t (:bold t :italic t)))
- "Face used for level 2 headlines."
+ "Face used for time grids."
:group 'org-faces)
(defvar org-level-faces
@@ -1649,6 +1728,7 @@ When this is non-nil, the headline after the keyword is set to the
(defvar org-struct-menu)
(defvar org-org-menu)
+(defvar org-tbl-menu)
;; We use a before-change function to check if a table might need
;; an update.
@@ -1656,7 +1736,6 @@ When this is non-nil, the headline after the keyword is set to the
"Indicates of a table might need an update.
This variable is set by `org-before-change-function'. `org-table-align'
sets it back to nil.")
-
(defvar org-mode-hook nil)
(defvar org-inhibit-startup nil) ; Dynamically-scoped param.
@@ -1681,6 +1760,7 @@ The following commands are available:
\\{org-mode-map}"
(easy-menu-add org-org-menu)
+ (easy-menu-add org-tbl-menu)
(org-install-agenda-files-menu)
(setq outline-regexp "\\*+")
(if org-startup-truncated (setq truncate-lines t))
@@ -1693,11 +1773,11 @@ The following commands are available:
(add-hook 'before-change-functions 'org-before-change-function nil
'local)
;; Paragraph regular expressions
- (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$")
+ (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$\\|\\([*\f]+\\)")
(set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)")
;; Inhibit auto-fill for headers, tables and fixed-width lines.
(set (make-local-variable 'auto-fill-inhibit-regexp)
- (concat "\\*"
+ (concat "\\*\\|#"
(if (or org-enable-table-editor org-enable-fixed-width-editor)
(concat
"\\|[ \t]*["
@@ -1709,6 +1789,20 @@ The following commands are available:
(interactive-p)
(= (point-min) (point-max)))
(insert " -*- mode: org -*-\n\n"))
+
+ ;; Get rid of Outline menus, they are not needed
+ ;; Need to do this here because define-derived-mode sets up
+ ;; the keymap so late.
+ (if org-xemacs-p
+ (progn
+ (delete-menu-item '("Headings"))
+ (delete-menu-item '("Show"))
+ (delete-menu-item '("Hide"))
+ (set-menubar-dirty-flag))
+ (define-key org-mode-map [menu-bar headings] 'undefined)
+ (define-key org-mode-map [menu-bar hide] 'undefined)
+ (define-key org-mode-map [menu-bar show] 'undefined))
+
(unless org-inhibit-startup
(if org-startup-with-deadline-check
(call-interactively 'org-check-deadlines)
@@ -1720,11 +1814,14 @@ The following commands are available:
(org-cycle '(4)) (org-cycle '(4))))))))
(defun org-fill-paragraph (&optional justify)
- "Re-align a table, pass through to fill-paragraph if no table."
+ "Re-align a table, pass through to `fill-paragraph' if no table."
(save-excursion
(beginning-of-line 1)
(looking-at "\\s-*\\(|\\|\\+-+\\)")))
+(defsubst org-current-line (&optional pos)
+ (+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point)))))
+
;;; Font-Lock stuff
(defvar org-mouse-map (make-sparse-keymap))
@@ -1808,7 +1905,6 @@ The following commands are available:
;; (3 'italic))
;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'underline))
- '("\\<FIXME\\>" (0 'org-warning t))
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
'(1 'org-warning t))
'("^#.*" (0 'font-lock-comment-face t))
@@ -1819,7 +1915,10 @@ The following commands are available:
'(1 'org-done t)))
'("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
(1 'org-table t))
- '("^[ \t]*\\(:.*\\)" (1 'org-table t)))))
+ '("^[ \t]*\\(:.*\\)" (1 'org-table t))
+ '("| *\\(=[^|\n]*\\)" (1 'org-formula t))
+ '("^[ \t]*| *\\([#!$*]\\) *|" (1 'org-formula t))
+ )))
(set (make-local-variable 'org-font-lock-keywords)
(append
(if org-noutline-p ; FIXME: I am not sure if eval will work
@@ -1857,21 +1956,22 @@ The following commands are available:
"Visibility cycling for Org-mode.
- When this function is called with a prefix argument, rotate the entire
- buffer through 3 states (global cycling)
+ buffer through 3 states (global cycling):
1. OVERVIEW: Show only top-level headlines.
2. CONTENTS: Show all headlines of all levels, but no body text.
3. SHOW ALL: Show everything.
- When point is at the beginning of a headline, rotate the subtree started
- by this line through 3 different states (local cycling)
+ by this line through 3 different states (local cycling):
1. FOLDED: Only the main headline is shown.
2. CHILDREN: The main headline and the direct children are shown. From
this state, you can move to one of the children and
zoom in further.
3. SUBTREE: Show the entire subtree, including body text.
-- When there is a numeric prefix, go ARG levels up and do a `show-subtree',
- keeping cursor position.
+- When there is a numeric prefix, go up to a heading with level ARG, do
+ a `show-subtree' and return to the previous cursor position. If ARG
+ is negative, go up that many levels.
- When point is not at the beginning of a headline, execute
`indent-relative', like TAB normally does. See the option
@@ -1937,7 +2037,8 @@ The following commands are available:
;; Show-subtree, ARG levels up from here.
(save-excursion
(org-back-to-heading)
- (outline-up-heading arg)
+ (outline-up-heading (if (< arg 0) (- arg)
+ (- (outline-level) arg)))
(org-show-subtree)))
((save-excursion (beginning-of-line 1) (looking-at outline-regexp))
@@ -2117,14 +2218,14 @@ or nil."
;; FIXME: It may not be a good idea to temper with the prefix argument...
(defun org-goto-ret (&optional arg)
- "Finish org-goto by going to the new location."
+ "Finish `org-goto' by going to the new location."
(interactive "P")
(setq org-selected-point (point)
current-prefix-arg arg)
(throw 'exit nil))
(defun org-goto-left ()
- "Finish org-goto by going to the new location."
+ "Finish `org-goto' by going to the new location."
(interactive)
(if (org-on-heading-p)
(progn
@@ -2135,7 +2236,7 @@ or nil."
(error "Not on a heading")))
(defun org-goto-right ()
- "Finish org-goto by going to the new location."
+ "Finish `org-goto' by going to the new location."
(interactive)
(if (org-on-heading-p)
(progn
@@ -2147,7 +2248,7 @@ or nil."
(error "Not on a heading")))
(defun org-goto-quit ()
- "Finish org-goto without cursor motion."
+ "Finish `org-goto' without cursor motion."
(interactive)
(setq org-selected-point nil)
(throw 'exit nil))
@@ -2273,8 +2374,6 @@ in the region."
(save-excursion
(setq end (copy-marker end))
(goto-char beg)
- ;; (if (fboundp 'deactivate-mark) (deactivate-mark))
- ;; (if (fboundp 'zmacs-deactivate-region) (zmacs-deactivate-region))
(if (and (re-search-forward (concat "^" outline-regexp) nil t)
(< (point) end))
(funcall fun))
@@ -2605,9 +2704,10 @@ At all other locations, this simply calls `ispell-complete-word'."
(let* ((end (point))
(beg (save-excursion
(if (equal (char-before (point)) ?\ ) (backward-char 1))
- (skip-chars-backward "a-zA-Z0-9_:")
+ (skip-chars-backward "a-zA-Z0-9_:$")
(point)))
(texp (equal (char-before beg) ?\\))
+ (form (equal (char-before beg) ?=))
(opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
beg)
"#+"))
@@ -2624,6 +2724,9 @@ At all other locations, this simply calls `ispell-complete-word'."
(texp
(setq type :tex)
org-html-entities)
+ (form
+ (setq type :form)
+ '(("sum") ("sumv") ("sumh")))
((string-match "\\`\\*+[ \t]*\\'"
(buffer-substring (point-at-bol) beg))
(setq type :todo)
@@ -2776,7 +2879,7 @@ to modify it to the correct date."
The tree will show the lines where the regexp matches, and all higher
headlines above the match. It will also show the heading after the match,
to make sure editing the matching entry is easy.
-if CALLBACK is non-nil, it is a function which is called to confirm
+If CALLBACK is non-nil, it is a function which is called to confirm
that the match should indeed be shown."
(interactive "sRegexp: ")
(setq regexp (org-check-occur-regexp regexp))
@@ -3047,7 +3150,7 @@ used to insert the time stamp into the buffer to include the time."
(defun org-eval-in-calendar (form)
"Eval FORM in the calendar window and return to current window.
-Also, store the cursor date in variable ans2."
+Also, store the cursor date in variable `ans2'."
(let ((sw (selected-window)))
(select-window (get-buffer-window "*Calendar*"))
(eval form)
@@ -3221,7 +3324,7 @@ With prefix ARG, change that many days."
(>= (match-end n) pos)))
(defun org-at-timestamp-p ()
- "Determine if the cursor is or at a timestamp."
+ "Determine if the cursor is at a timestamp."
(interactive)
(let* ((tsr org-ts-regexp2)
(pos (point))
@@ -3378,7 +3481,8 @@ The following commands are available:
(define-key org-agenda-mode-map "l" 'org-agenda-recenter)
(define-key org-agenda-mode-map "t" 'org-agenda-todo)
(define-key org-agenda-mode-map "." 'org-agenda-goto-today)
-(define-key org-agenda-mode-map "w" 'org-agenda-toggle-week-view)
+(define-key org-agenda-mode-map "d" 'org-agenda-day-view)
+(define-key org-agenda-mode-map "w" 'org-agenda-week-view)
(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later)
(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier)
@@ -3388,7 +3492,7 @@ The following commands are available:
(int-to-string (pop l)) 'digit-argument)))
(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode)
-(define-key org-agenda-mode-map "d" 'org-agenda-toggle-diary)
+(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary)
(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
(define-key org-agenda-mode-map "r" 'org-agenda-redo)
(define-key org-agenda-mode-map "q" 'org-agenda-quit)
@@ -3454,8 +3558,11 @@ The following commands are available:
["Next Dates" org-agenda-later (local-variable-p 'starting-day)]
["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)]
"--"
- ["Week/Day View" org-agenda-toggle-week-view
- (local-variable-p 'starting-day)]
+ ["Day View" org-agenda-day-view :active (local-variable-p 'starting-day)
+ :style radio :selected (equal org-agenda-ndays 1)]
+ ["Week View" org-agenda-week-view :active (local-variable-p 'starting-day)
+ :style radio :selected (equal org-agenda-ndays 7)]
+ "--"
["Include Diary" org-agenda-toggle-diary
:style toggle :selected org-agenda-include-diary :active t]
["Use Time Grid" org-agenda-toggle-time-grid
@@ -3784,19 +3891,29 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
(org-agenda (if (boundp 'include-all-loc) include-all-loc nil)
(- starting-day (* arg org-agenda-ndays))))
-(defun org-agenda-toggle-week-view ()
- "Toggle weekly/daily view for aagenda."
+(defun org-agenda-week-view ()
+ "Switch to weekly view for agenda."
+ (interactive)
+ (unless (boundp 'starting-day)
+ (error "Not allowed"))
+ (setq org-agenda-ndays 7)
+ (org-agenda include-all-loc
+ (or (get-text-property (point) 'day)
+ starting-day))
+ (org-agenda-set-mode-name)
+ (message "Switched to week view"))
+
+(defun org-agenda-day-view ()
+ "Switch to daily view for agenda."
(interactive)
(unless (boundp 'starting-day)
(error "Not allowed"))
- (setq org-agenda-ndays
- (if (equal org-agenda-ndays 1) 7 1))
+ (setq org-agenda-ndays 1)
(org-agenda include-all-loc
(or (get-text-property (point) 'day)
starting-day))
(org-agenda-set-mode-name)
- (message "Switched to %s view"
- (if (equal org-agenda-ndays 1) "day" "week")))
+ (message "Switched to day view"))
(defun org-agenda-next-date-line (&optional arg)
"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'."
(if org-agenda-follow-mode "on" "off")))
(defun org-agenda-toggle-diary ()
- "Toggle follow mode in an agenda buffer."
+ "Toggle diary inclusion in an agenda buffer."
(interactive)
(setq org-agenda-include-diary (not org-agenda-include-diary))
(org-agenda-redo)
@@ -3849,7 +3966,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
(if org-agenda-include-diary "on" "off")))
(defun org-agenda-toggle-time-grid ()
- "Toggle follow mode in an agenda buffer."
+ "Toggle time-grid in an agenda buffer."
(interactive)
(setq org-agenda-use-time-grid (not org-agenda-use-time-grid))
(org-agenda-redo)
@@ -3917,10 +4034,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
entries)))))
(defun org-agenda-cleanup-fancy-diary ()
- "Remove unwanted stuff in buffer created by fancy-diary-display.
+ "Remove unwanted stuff in buffer created by `fancy-diary-display'.
This gets rid of the date, the underline under the date, and
the dummy entry installed by `org-mode' to ensure non-empty diary for each
-date. Itt also removes lines that contain only whitespace."
+date. It also removes lines that contain only whitespace."
(goto-char (point-min))
(if (looking-at ".*?:[ \t]*")
(progn
@@ -4091,7 +4208,7 @@ The function expects the lisp variables `entry' and `date' to be provided
by the caller, because this is how the calendar works. Don't use this
function from a program - use `org-agenda-get-day-entries' instead."
(org-agenda-maybe-reset-markers)
- (org-compile-agenda-prefix-format org-agenda-prefix-format)
+ (org-compile-prefix-format org-agenda-prefix-format)
(setq args (or args '(:deadline :scheduled :timestamp)))
(let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
(list entry)
@@ -4214,7 +4331,7 @@ the documentation of `org-diary'."
(nreverse ee)))
(defconst org-agenda-no-heading-message
- "No heading for this item in buffer or region")
+ "No heading for this item in buffer or region.")
(defun org-agenda-get-timestamps ()
"Return the date stamp information for agenda display."
@@ -4625,7 +4742,7 @@ HH:MM."
(mapconcat 'identity (sort list 'org-entries-lessp) "\n"))
(defsubst org-cmp-priority (a b)
- "Compare the priorities of string a and b."
+ "Compare the priorities of strings A and B."
(let ((pa (or (get-text-property 1 'priority a) 0))
(pb (or (get-text-property 1 'priority b) 0)))
(cond ((> pa pb) +1)
@@ -4633,7 +4750,7 @@ HH:MM."
(t nil))))
(defsubst org-cmp-category (a b)
- "Compare the string values of categories of strings a and b."
+ "Compare the string values of categories of strings A and B."
(let ((ca (or (get-text-property 1 'category a) ""))
(cb (or (get-text-property 1 'category b) "")))
(cond ((string-lessp ca cb) -1)
@@ -4641,7 +4758,7 @@ HH:MM."
(t nil))))
(defsubst org-cmp-time (a b)
- "Compare the time-of-day values of strings a and b."
+ "Compare the time-of-day values of strings A and B."
(let* ((def (if org-sort-agenda-notime-is-late 2401 -1))
(ta (or (get-text-property 1 'time-of-day a) def))
(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."
(move-to-column col)))
(defun org-agenda-change-all-lines (newhead hdmarker &optional fixface)
- "Change all lines in the agenda buffer which match hdmarker.
+ "Change all lines in the agenda buffer which match HDMARKER.
The new content of the line will be NEWHEAD (as modified by
`org-format-agenda-item'). HDMARKER is checked with
`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."
(defun org-agenda-diary-entry ()
"Make a diary entry, like the `i' command from the calendar.
-All the standard commands work: block, weekly etc"
+All the standard commands work: block, weekly etc."
(interactive)
(require 'diary-lib)
(let* ((char (progn
@@ -5437,7 +5554,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
(if a (not b) b))
(defun org-get-header (header)
- "Find a header field in the current buffer."
+ "Find a HEADER field in the current buffer."
(save-excursion
(goto-char (point-min))
(let ((case-fold-search t) s)
@@ -5546,7 +5663,7 @@ conventions in Org-mode. This function returns such a link."
UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store
RET at beg-of-buf -> Append to file as level 2 headline
RET on headline -> Store as sublevel entry to current headline
-<left>/<right> -> before/after current headline, same headings level")
+<left>/<right> -> Before/after current headline, same headings level")
;;;###autoload
(defun org-remember-handler ()
@@ -5687,6 +5804,10 @@ See also the variable `org-reverse-note-order'."
"Detects an org-type table line.")
(defconst org-table-dataline-regexp "^[ \t]*|[^-]"
"Detects an org-type table line.")
+(defconst org-table-auto-recalculate-regexp "^[ \t]*| *# *\\(|\\|$\\)"
+ "Detects a table line marked for automatic recalculation.")
+(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)"
+ "Detects a table line marked for automatic recalculation.")
(defconst org-table-hline-regexp "^[ \t]*|-"
"Detects an org-type table hline.")
(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]"
@@ -5752,7 +5873,7 @@ SIZE is a string Columns x Rows like for example \"3x2\"."
The region goes from BEG0 to END0, but these borders will be moved
slightly, to make sure a beginning of line in the first line is included.
When NSPACE is non-nil, it indicates the minimum number of spaces that
-separate columns (default: just one space)"
+separate columns (default: just one space)."
(let* ((beg (min beg0 end0))
(end (max beg0 end0))
(tabsep t)
@@ -5843,6 +5964,7 @@ This is being used to correctly align a single field after TAB or RET.")
"List of max width of fields in each column.
This is being used to correctly align a single field after TAB or RET.")
+(defvar org-last-recalc-line nil)
(defun org-table-align ()
"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.")
(if (string-match "^ *" (car lines))
(setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
;; Mark the hlines
- (setq lines (mapcar (lambda (l) (if (string-match "^ *|-" l) nil l))
+ (setq lines (mapcar (lambda (l)
+ (if (string-match "^ *|-" l)
+ nil
+ (if (string-match "[ \t]+$" l)
+ (substring l 0 (match-beginning 0))
+ l)))
lines))
;; Get the data fields
(setq fields (mapcar
@@ -5994,15 +6121,17 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
(let* ((pos (point)) s org-table-may-need-update
(col (org-table-current-column))
(num (nth (1- col) org-table-last-alignment))
- l f)
+ l f n o)
(when (> col 0)
(skip-chars-backward "^|\n")
(if (looking-at " *\\([^|\n]*?\\) *|")
(progn
(setq s (match-string 1)
+ o (match-string 0)
l (max 1 (- (match-end 0) (match-beginning 0) 3)))
- (setq f (format (if num " %%%ds |" " %%-%ds |") l))
- (replace-match (format f s t t)))
+ (setq f (format (if num " %%%ds |" " %%-%ds |") l)
+ n (format f s t t))
+ (or (equal n o) (replace-match n)))
(setq org-table-may-need-update t))
(goto-char pos))))))
@@ -6010,6 +6139,8 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
"Go to the next field in the current table.
Before doing so, re-align the table if necessary."
(interactive)
+ (org-table-maybe-eval-formula)
+ (org-table-maybe-recalculate-line)
(if (and org-table-automatic-realign
org-table-may-need-update)
(org-table-align))
@@ -6032,6 +6163,8 @@ Before doing so, re-align the table if necessary."
"Go to the previous field in the table.
Before doing so, re-align the table if necessary."
(interactive)
+ (org-table-justify-field-maybe)
+ (org-table-maybe-recalculate-line)
(if (and org-table-automatic-realign
org-table-may-need-update)
(org-table-align))
@@ -6048,6 +6181,8 @@ Before doing so, re-align the table if necessary."
"Go to the next row (same column) in the current table.
Before doing so, re-align the table if necessary."
(interactive)
+ (org-table-maybe-eval-formula)
+ (org-table-maybe-recalculate-line)
(if (or (looking-at "[ \t]*$")
(save-excursion (skip-chars-backward " \t") (bolp)))
(newline)
@@ -6081,23 +6216,29 @@ integer, it will be incremented while copying."
(beg (org-table-begin))
txt)
(org-table-check-inside-data-field)
- (if non-empty (progn (org-table-next-row) (org-table-blank-field)))
- (if (save-excursion
- (setq txt
- (catch 'exit
- (while (progn (beginning-of-line 1)
- (re-search-backward org-table-dataline-regexp
- beg t))
- (org-table-goto-column colpos t)
- (if (and (looking-at
- "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|")
- (= (setq n (1- n)) 0))
- (throw 'exit (match-string 1)))))))
+ (if non-empty
+ (progn
+ (setq txt (org-trim field))
+ (org-table-next-row)
+ (org-table-blank-field))
+ (save-excursion
+ (setq txt
+ (catch 'exit
+ (while (progn (beginning-of-line 1)
+ (re-search-backward org-table-dataline-regexp
+ beg t))
+ (org-table-goto-column colpos t)
+ (if (and (looking-at
+ "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|")
+ (= (setq n (1- n)) 0))
+ (throw 'exit (match-string 1))))))))
+ (if txt
(progn
(if (and org-table-copy-increment
(string-match "^[0-9]+$" txt))
(setq txt (format "%d" (+ (string-to-int txt) 1))))
(insert txt)
+ (org-table-maybe-recalculate-line)
(org-table-align))
(error "No non-empty field found"))))
@@ -6119,10 +6260,10 @@ I.e. not on a hline or before the first or after the last column?"
(org-table-check-inside-data-field)
(if (and (interactive-p) (org-region-active-p))
(let (org-table-clip)
- (org-table-cut-region))
+ (org-table-cut-region (region-beginning) (region-end)))
(skip-chars-backward "^|")
(backward-char 1)
- (if (looking-at "|[^|]+")
+ (if (looking-at "|[^|\n]+")
(let* ((pos (match-beginning 0))
(match (match-string 0))
(len (length match)))
@@ -6136,15 +6277,16 @@ N defaults to current field.
If REPLACE is a string, replace field with this value. The return value
is always the old value."
(and n (org-table-goto-column n))
- (skip-chars-backward "^|")
+ (skip-chars-backward "^|\n")
(backward-char 1)
(if (looking-at "|[^|\r\n]*")
(let* ((pos (match-beginning 0))
(val (buffer-substring (1+ pos) (match-end 0))))
(if replace
(replace-match (concat "|" replace)))
- (goto-char (+ 2 pos))
- val)))
+ (goto-char (min (point-at-eol) (+ 2 pos)))
+ val)
+ (forward-char 1) ""))
(defun org-table-current-column ()
"Find out which column we are in.
@@ -6173,17 +6315,17 @@ However, when FORCE is non-nil, create new columns if necessary."
(and force
(progn (end-of-line 1)
(skip-chars-backward "^|")
- (insert " |")
- (backward-char 2) t)))))
+ (insert " | "))))))
+; (backward-char 2) t)))))
(when (and force (not (looking-at ".*|")))
- (save-excursion (end-of-line 1) (insert "|")))
+ (save-excursion (end-of-line 1) (insert " | ")))
(if on-delim
(backward-char 1)
(if (looking-at " ") (forward-char 1))))))
(defun org-at-table-p (&optional table-type)
"Return t if the cursor is inside an org-type table.
-If TABLE-TYPE is non-nil, also chack for table.el-type tables."
+If TABLE-TYPE is non-nil, also check for table.el-type tables."
(if org-enable-table-editor
(save-excursion
(beginning-of-line 1)
@@ -6255,8 +6397,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
(beginning-of-line 2))
(move-marker end nil)
(goto-line linepos)
- (org-table-goto-column colpos))
- (org-table-align))
+ (org-table-goto-column colpos)
+ (org-table-align)
+ (org-table-modify-formulas 'insert col)))
(defun org-table-find-dataline ()
"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."
(beginning-of-line 2))
(move-marker end nil)
(goto-line linepos)
- (org-table-goto-column colpos))
- (org-table-align))
+ (org-table-goto-column colpos)
+ (org-table-align)
+ (org-table-modify-formulas 'remove col)))
(defun org-table-move-column-right ()
"Move column to the right."
@@ -6340,8 +6484,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
(beginning-of-line 2))
(move-marker end nil)
(goto-line linepos)
- (org-table-goto-column colpos))
- (org-table-align))
+ (org-table-goto-column colpos)
+ (org-table-align)
+ (org-table-modify-formulas 'swap col (if left (1- col) (1+ col)))))
(defun org-table-move-row-down ()
"Move table row down."
@@ -6380,13 +6525,18 @@ With prefix ARG, insert below the current line."
(interactive "P")
(if (not (org-at-table-p))
(error "Not at a table"))
- (let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol))))
+ (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))
+ new)
(if (string-match "^[ \t]*|-" line)
- (setq line (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line))
- (setq line (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line)))
+ (setq new (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line))
+ (setq new (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line)))
+ ;; Fix the first field if necessary
+ (setq new (concat new))
+ (if (string-match "^[ \t]*| *[#$] *|" line)
+ (setq new (replace-match (match-string 0 line) t t new)))
(beginning-of-line (if arg 2 1))
(let (org-table-may-need-update)
- (apply 'insert-before-markers line)
+ (insert-before-markers new)
(insert-before-markers "\n"))
(beginning-of-line 0)
(re-search-forward "| ?" (point-at-eol) t)
@@ -6431,20 +6581,17 @@ With prefix ARG, insert above the current line."
(move-to-column col)))
-(defun org-table-cut-region ()
+(defun org-table-cut-region (beg end)
"Copy region in table to the clipboard and blank all relevant fields."
- (interactive)
- (org-table-copy-region 'cut))
+ (interactive "r")
+ (org-table-copy-region beg end 'cut))
-(defun org-table-copy-region (&optional cut)
+(defun org-table-copy-region (beg end &optional cut)
"Copy rectangular region in table to clipboard.
A special clipboard is used which can only be accessed
-with `org-table-paste-rectangle'"
- (interactive "P")
- (unless (org-region-active-p) (error "No active region"))
- (let* ((beg (region-beginning))
- (end (region-end))
- l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
+with `org-table-paste-rectangle'."
+ (interactive "rP")
+ (let* (l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
region cols
(rpl (if cut " " nil)))
(goto-char beg)
@@ -6470,7 +6617,8 @@ with `org-table-paste-rectangle'"
(push (nreverse cols) region)
(setq l1 (1+ l1)))))
(setq org-table-clip (nreverse region))
- (if cut (org-table-align))))
+ (if cut (org-table-align))
+ org-table-clip))
(defun org-table-paste-rectangle ()
"Paste a rectangular region into a table.
@@ -6574,7 +6722,7 @@ blank, and the content is appended to the field above."
;; There is a region: fill as a paragraph
(let ((beg (region-beginning))
nlines)
- (org-table-cut-region)
+ (org-table-cut-region (region-beginning) (region-end))
(if (> (length (car org-table-clip)) 1)
(error "Region must be limited to single column"))
(setq nlines (if arg
@@ -6611,7 +6759,8 @@ blank, and the content is appended to the field above."
(defun org-trim (s)
"Remove whitespace at beginning and end of string."
(if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s)))
- (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s))))
+ (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))
+ s)
(defun org-wrap (string &optional width lines)
"Wrap string to either a number of lines, or a width in characters.
@@ -6701,7 +6850,7 @@ and end of string."
"Toggle the visibility of table vertical lines.
The effect is immediate and on all tables in the file.
With prefix ARG, make lines invisible when ARG is positive, make lines
-visible when ARG is not positive"
+visible when ARG is not positive."
(interactive "P")
(let ((action (cond
((and arg (> (prefix-numeric-value arg) 0)) 'on)
@@ -6734,7 +6883,7 @@ visible when ARG is not positive"
(save-excursion (funcall function)))
(re-search-forward org-table-any-border-regexp nil 1)))))
-(defun org-table-sum ()
+(defun org-table-sum (&optional beg end nlast)
"Sum numbers in region of current table column.
The result will be displayed in the echo area, and will be available
as kill to be inserted with \\[yank].
@@ -6746,35 +6895,38 @@ column.
If at least one number looks like a time HH:MM or HH:MM:SS, all other
numbers are assumed to be times as well (in decimal hours) and the
-numbers are added as such."
+numbers are added as such.
+
+If NLAST is a number, only the NLAST fields will actually be summed."
(interactive)
(save-excursion
- (let (beg end col (timecnt 0) diff h m s)
- (if (org-region-active-p)
- (setq beg (region-beginning) end (region-end))
+ (let (col (timecnt 0) diff h m s org-table-clip)
+ (cond
+ ((and beg end)) ; beg and end given explicitly
+ ((org-region-active-p)
+ (setq beg (region-beginning) end (region-end)))
+ (t
(setq col (org-table-current-column))
(goto-char (org-table-begin))
(unless (re-search-forward "^[ \t]*|[^-]" nil t)
(error "No table data"))
(org-table-goto-column col)
- (skip-chars-backward "^|")
+;not needed? (skip-chars-backward "^|")
(setq beg (point))
(goto-char (org-table-end))
(unless (re-search-backward "^[ \t]*|[^-]" nil t)
(error "No table data"))
(org-table-goto-column col)
- (skip-chars-forward "^|")
- (setq end (point)))
- (let* ((l1 (progn (goto-char beg)
- (+ (if (bolp) 1 0) (count-lines (point-min) (point)))))
- (l2 (progn (goto-char end)
- (+ (if (bolp) 1 0) (count-lines (point-min) (point)))))
- (items (if (= l1 l2)
- (split-string (buffer-substring beg end))
- (split-string
- (mapconcat 'identity (extract-rectangle beg end) " "))))
+;not needed? (skip-chars-forward "^|")
+ (setq end (point))))
+ (let* ((items (apply 'append (org-table-copy-region beg end)))
+ (items1 (cond ((not nlast) items)
+ ((>= nlast (length items)) items)
+ (t (setq items (reverse items))
+ (setcdr (nthcdr (1- nlast) items) nil)
+ (nreverse items))))
(numbers (delq nil (mapcar 'org-table-get-number-for-summing
- items)))
+ items1)))
(res (apply '+ numbers))
(sres (if (= timecnt 0)
(format "%g" res)
@@ -6784,9 +6936,11 @@ numbers are added as such."
s diff)
(format "%d:%02d:%02d" h m s))))
(kill-new sres)
- (message (substitute-command-keys
- (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)"
- (length numbers) sres)))))))
+ (if (interactive-p)
+ (message (substitute-command-keys
+ (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)"
+ (length numbers) sres))))
+ sres))))
(defun org-table-get-number-for-summing (s)
(let (n)
@@ -6808,15 +6962,136 @@ numbers are added as such."
((equal n 0) nil)
(t n))))
-(defvar org-table-current-formula nil)
(defvar org-table-formula-history nil)
-(defun org-table-get-formula (current)
- (if (and current (not (equal "" org-table-current-formula)))
- org-table-current-formula
- (setq org-table-current-formula
- (read-string
- "Formula [last]: " "" 'org-table-formula-history
- org-table-current-formula))))
+
+(defun org-table-get-formula (&optional equation)
+ "Read a formula from the minibuffer, offer stored formula as default."
+ (let* ((col (org-table-current-column))
+ (stored-list (org-table-get-stored-formulas))
+ (stored (cdr (assoc col stored-list)))
+ (eq (cond
+ ((and stored equation (string-match "^ *= *$" equation))
+ stored)
+ ((stringp equation)
+ equation)
+ (t (read-string
+ "Formula: " (or stored "") 'org-table-formula-history
+ stored)))))
+ (if (not (string-match "\\S-" eq))
+ (error "Empty formula"))
+ (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq)))
+ (if (string-match " *$" eq) (setq eq (replace-match "" t t eq)))
+ (if stored
+ (setcdr (assoc col stored-list) eq)
+ (setq stored-list (cons (cons col eq) stored-list)))
+ (if (not (equal stored eq))
+ (org-table-store-formulas stored-list))
+ eq))
+
+(defun org-table-store-formulas (alist)
+ "Store the list of formulas below the current table."
+ (setq alist (sort alist (lambda (a b) (< (car a) (car b)))))
+ (save-excursion
+ (goto-char (org-table-end))
+ (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?")
+ (delete-region (point) (match-end 0)))
+ (insert "#+TBLFM: "
+ (mapconcat (lambda (x)
+ (concat "$" (int-to-string (car x)) "=" (cdr x)))
+ alist "::")
+ "\n")))
+
+(defun org-table-get-stored-formulas ()
+ "Return an alist with the stored formulas directly after current table."
+ (interactive)
+ (let (col eq eq-alist strings string)
+ (save-excursion
+ (goto-char (org-table-end))
+ (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)")
+ (setq strings (org-split-string (match-string 2) " *:: *"))
+ (while (setq string (pop strings))
+ (if (string-match "\\$\\([0-9]+\\) *= *\\(.*[^ \t]\\)" string)
+ (setq col (string-to-number (match-string 1 string))
+ eq (match-string 2 string)
+ eq-alist (cons (cons col eq) eq-alist))))))
+ eq-alist))
+
+(defun org-table-modify-formulas (action &rest columns)
+ "Modify the formulas stored below the current table.
+ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
+expected, for the other action only a single column number is needed."
+ (let ((list (org-table-get-stored-formulas))
+ (nmax (length (org-split-string (buffer-substring (point-at-bol) (point-at-eol))
+ "|")))
+ col col1 col2)
+ (cond
+ ((null list)) ; No action needed if there are no stored formulas
+ ((eq action 'remove)
+ (setq col (car columns))
+ (org-table-replace-in-formulas list col "INVALID")
+ (if (assoc col list) (setq list (delq (assoc col list) list)))
+ (loop for i from (1+ col) upto nmax by 1 do
+ (org-table-replace-in-formulas list i (1- i))
+ (if (assoc i list) (setcar (assoc i list) (1- i)))))
+ ((eq action 'insert)
+ (setq col (car columns))
+ (loop for i from nmax downto col by 1 do
+ (org-table-replace-in-formulas list i (1+ i))
+ (if (assoc i list) (setcar (assoc i list) (1+ i)))))
+ ((eq action 'swap)
+ (setq col1 (car columns) col2 (nth 1 columns))
+ (org-table-replace-in-formulas list col1 "Z")
+ (org-table-replace-in-formulas list col2 col1)
+ (org-table-replace-in-formulas list "Z" col2)
+ (if (assoc col1 list) (setcar (assoc col1 list) "Z"))
+ (if (assoc col2 list) (setcar (assoc col2 list) col1))
+ (if (assoc "Z" list) (setcar (assoc "Z" list) col2)))
+ (t (error "Invalid action in `org-table-modify-formulas'")))
+ (if list (org-table-store-formulas list))))
+
+(defun org-table-replace-in-formulas (list s1 s2)
+ (let (elt re s)
+ (setq s1 (concat "$" (if (integerp s1) (int-to-string s1) s1))
+ s2 (concat "$" (if (integerp s2) (int-to-string s2) s2))
+ re (concat (regexp-quote s1) "\\>"))
+ (while (setq elt (pop list))
+ (setq s (cdr elt))
+ (while (string-match re s)
+ (setq s (replace-match s2 t t s)))
+ (setcdr elt s))))
+
+(defvar org-table-column-names nil
+ "Alist with column names, derived from the `!' line.")
+(defvar org-table-column-name-regexp nil
+ "Regular expression matching the current column names.")
+(defvar org-table-local-parameters nil
+ "Alist with parameter names, derived from the `$' line.")
+
+(defun org-table-get-specials ()
+ "Get the column names and local parameters for this table."
+ (save-excursion
+ (let ((beg (org-table-begin)) (end (org-table-end))
+ names name fields field cnt)
+ (setq org-table-column-names nil
+ org-table-local-parameters nil)
+ (goto-char beg)
+ (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
+ (setq names (org-split-string (match-string 1) " *| *")
+ cnt 1)
+ (while (setq name (pop names))
+ (setq cnt (1+ cnt))
+ (if (string-match "^[a-zA-Z][a-zA-Z0-9]*$" name)
+ (push (cons name (int-to-string cnt)) org-table-column-names))))
+ (setq org-table-column-names (nreverse org-table-column-names))
+ (setq org-table-column-name-regexp
+ (concat "\\$\\(" (mapconcat 'car org-table-column-names "\\|") "\\)\\>"))
+ (goto-char beg)
+ (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t)
+ (setq fields (org-split-string (match-string 1) " *| *"))
+ (while (setq field (pop fields))
+ (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\) *= *\\(.*\\)" field)
+ (push (cons (match-string 1 field) (match-string 2 field))
+ org-table-local-parameters)))))))
(defun org-this-word ()
;; Get the current word
@@ -6825,24 +7100,157 @@ numbers are added as such."
(end (progn (skip-chars-forward "^ \t\n") (point))))
(buffer-substring-no-properties beg end))))
-(defun org-table-eval-formula (&optional ndown)
+(defun org-table-maybe-eval-formula ()
+ "Check if the current field starts with \"=\" and evaluate the formula."
+ ;; We already know we are in a table. Get field will only return a formula
+ ;; when appropriate. It might return a separator line, but no problem.
+ (when org-table-formula-evaluate-inline
+ (let* ((field (org-trim (or (org-table-get-field) "")))
+ (dfield (downcase field))
+ col bolpos nlast)
+ (when (equal (string-to-char field) ?=)
+ (if (string-match "^\\(=sum[vh]?\\)\\([0-9]+\\)$" dfield)
+ (setq nlast (1+ (string-to-number (match-string 2 dfield)))
+ dfield (match-string 1 dfield)))
+ (cond
+ ((equal dfield "=sumh")
+ (org-table-get-field
+ nil (org-table-sum
+ (save-excursion (org-table-goto-column 1) (point))
+ (point) nlast)))
+ ((member dfield '("=sum" "=sumv"))
+ (setq col (org-table-current-column)
+ bolpos (point-at-bol))
+ (org-table-get-field
+ nil (org-table-sum
+ (save-excursion
+ (goto-char (org-table-begin))
+ (if (re-search-forward org-table-dataline-regexp bolpos t)
+ (progn
+ (goto-char (match-beginning 0))
+ (org-table-goto-column col)
+ (point))
+ (error "No datalines above current")))
+ (point) nlast)))
+ ((and (string-match "^ *=" field)
+ (fboundp 'calc-eval))
+ (org-table-eval-formula nil field)))))))
+
+(defvar org-last-recalc-undo-list nil)
+(defcustom org-table-allow-line-recalculation t
+ "FIXME:"
+ :group 'org-table
+ :type 'boolean)
+
+(defvar org-recalc-commands nil
+ "List of commands triggering the recalculation of a line.
+Will be filled automatically during use.")
+
+(defvar org-recalc-marks
+ '((" " . "Unmarked: no special line, no automatic recalculation")
+ ("#" . "Automatically recalculate this line upon TAB, RET, and C-c C-c in the line")
+ ("*" . "Recalculate only when entire table is recalculated with `C-u C-c *'")
+ ("!" . "Column name definition line. Reference in formula as $name.")
+ ("$" . "Parameter definition line name=value. Reference in formula as $name.")))
+
+(defun org-table-rotate-recalc-marks (&optional newchar)
+ "Rotate the recalculation mark in the first column.
+If in any row, the first field is not consistent with a mark,
+insert a new column for the makers.
+When there is an active region, change all the lines in the region,
+after prompting for the marking character.
+After each change, a message will be displayed indication the meaning
+of the new mark."
+ (interactive)
+ (unless (org-at-table-p) (error "Not at a table"))
+ (let* ((marks (append (mapcar 'car org-recalc-marks) '(" ")))
+ (beg (org-table-begin))
+ (end (org-table-end))
+ (l (org-current-line))
+ (l1 (if (org-region-active-p) (org-current-line (region-beginning))))
+ (l2 (if (org-region-active-p) (org-current-line (region-end))))
+ (have-col
+ (save-excursion
+ (goto-char beg)
+ (not (re-search-forward "^[ \t]*|[^-|][^|]*[^#!$*| \t][^|]*|" end t))))
+ (col (org-table-current-column))
+ (forcenew (car (assoc newchar org-recalc-marks)))
+ epos new)
+ (if l1 (setq newchar (char-to-string (read-char-exclusive "Change region to what mark? Type # * ! $ or SPC: "))
+ forcenew (car (assoc newchar org-recalc-marks))))
+ (if (and newchar (not forcenew))
+ (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'"
+ newchar))
+ (if l1 (goto-line l1))
+ (save-excursion
+ (beginning-of-line 1)
+ (unless (looking-at org-table-dataline-regexp)
+ (error "Not at a table data line")))
+ (unless have-col
+ (org-table-goto-column 1)
+ (org-table-insert-column)
+ (org-table-goto-column (1+ col)))
+ (setq epos (point-at-eol))
+ (save-excursion
+ (beginning-of-line 1)
+ (org-table-get-field
+ 1 (if (looking-at "^[ \t]*| *\\([#!$* ]\\) *|")
+ (concat " "
+ (setq new (or forcenew
+ (cadr (member (match-string 1) marks))))
+ " ")
+ " # ")))
+ (if (and l1 l2)
+ (progn
+ (goto-line l1)
+ (while (progn (beginning-of-line 2) (not (= (org-current-line) l2)))
+ (and (looking-at org-table-dataline-regexp)
+ (org-table-get-field 1 (concat " " new " "))))
+ (goto-line l1)))
+ (if (not (= epos (point-at-eol))) (org-table-align))
+ (goto-line l)
+ (and (interactive-p) (message (cdr (assoc new org-recalc-marks))))))
+
+(defun org-table-maybe-recalculate-line ()
+ "Recompute the current line if marked for it, and if we haven't just done it."
+ (interactive)
+ (and org-table-allow-line-recalculation
+ (not (and (memq last-command org-recalc-commands)
+ (equal org-last-recalc-line (org-current-line))))
+ (save-excursion (beginning-of-line 1)
+ (looking-at org-table-auto-recalculate-regexp))
+ (fboundp 'calc-eval)
+ (org-table-recalculate) t))
+
+(defvar org-table-formula-debug nil
+ "Non-nil means, debug table formulas.
+When nil, simply write \"#ERROR\" in corrupted fields.")
+
+(defvar modes)
+(defsubst org-set-calc-mode (var value)
+ (setcar (or (cdr (memq var modes)) (cons nil nil)) value))
+
+(defun org-table-eval-formula (&optional ndown equation
+ suppress-align suppress-const
+ suppress-store)
"Replace the table field value at the cursor by the result of a calculation.
-This function makes use of Dave Gillespie's calc package, arguably the most
-exciting program ever written for GNU Emacs. So you need to have calc
+This function makes use of Dave Gillespie's calc package, in my view the
+most exciting program ever written for GNU Emacs. So you need to have calc
installed in order to use this function.
In a table, this command replaces the value in the current field with the
result of a formula. While nowhere near the computation options of a
-spreadsheet program, this is still very useful. Note that there is no
-automatic updating of a calculated field, nor will the field remember the
-formula. The command needs to be applied again after changing input
-fields.
+spreadsheet program, this is still very useful. There is no automatic
+updating of a calculated field, but the table will remember the last
+formula for each column. The command needs to be applied again after
+changing input fields.
When called, the command first prompts for a formula, which is read in the
-minibuffer. Previously entered formulae are available through the history
-list, and the last used formula is the default, reachable by simply
-pressing RET.
+minibuffer. Previously entered formulas are available through the history
+list, and the last used formula for each column is offered as a default.
+These stored formulas are adapted correctly when moving, inserting, or
+deleting columns with the corresponding commands.
The formula can be any algebraic expression understood by the calc package.
Before evaluation, variable substitution takes place: \"$\" is replaced by
@@ -6852,50 +7260,113 @@ here, so the command supports only horizontal computing. The formula can
contain an optional printf format specifier after a semicolon, to reformat
the result.
-A few examples for formulae:
+A few examples for formulas:
$1+$2 Sum of first and second field
$1+$2;%.2f Same, and format result to two digits after dec.point
exp($2)+exp($1) Math functions can be used
$;%.1f Reformat current cell to 1 digit after dec.point
- ($3-32)*5/9 degrees F -> C conversion
+ ($3-32)*5/9 Degrees F -> C conversion
When called with a raw \\[universal-argument] prefix, the formula is applied to the current
field, and to the same same column in all following rows, until reaching a
horizontal line or the end of the table. When the command is called with a
numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied
to the current row, and to the following n-1 rows (but not beyond a
-separator line)."
+separator line).
+
+This function can also be called from Lisp programs and offers two additional
+Arguments: EQUATION can be the formula to apply. If this argument is given,
+the user will not be prompted. SUPPRESS-ALIGN is used to speed-up
+recursive calls by by-passing unnecessary aligns. SUPPRESS-CONST suppresses
+the interpretation of constants in the formula. SUPPRESS-STORE means the
+formula should not be stored, either because it is already stored, or because
+it is a modified equation that should not overwrite the stored one."
(interactive "P")
(setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown)))
(require 'calc)
(org-table-check-inside-data-field)
+ (org-table-get-specials)
(let* (fields
(org-table-automatic-realign nil)
+ (case-fold-search nil)
(down (> ndown 1))
- (formula (org-table-get-formula nil))
+ (formula (if (and equation suppress-store)
+ equation
+ (org-table-get-formula equation)))
(n0 (org-table-current-column))
- n form fmt x ev)
+ (modes (copy-sequence org-calc-default-modes))
+ n form fmt x ev orig c)
+ ;; Parse the format
(if (string-match ";" formula)
(let ((tmp (org-split-string formula ";")))
- (setq formula (car tmp) fmt (nth 1 tmp))))
+ (setq formula (car tmp) fmt (or (nth 1 tmp) ""))
+ (while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt)
+ (setq c (string-to-char (match-string 1 fmt))
+ n (string-to-number (or (match-string 1 fmt) "")))
+ (if (= c ?p) (org-set-calc-mode 'calc-internal-prec n)
+ (org-set-calc-mode 'calc-float-format
+ (list (cdr (assoc c '((?n. float) (?f. fix)
+ (?s. sci) (?e. eng))))
+ n)))
+ (setq fmt (replace-match "" t t fmt)))
+ (when (string-match "[DR]" fmt)
+ (org-set-calc-mode 'calc-angle-mode
+ (if (equal (match-string 0 fmt) "D")
+ 'deg 'rad))
+ (setq fmt (replace-match "" t t fmt)))
+ (when (string-match "F" fmt)
+ (org-set-calc-mode 'calc-prefer-frac t)
+ (setq fmt (replace-match "" t t fmt)))
+ (when (string-match "S" fmt)
+ (org-set-calc-mode 'calc-symbolic-mode t)
+ (setq fmt (replace-match "" t t fmt)))
+ (unless (string-match "\\S-" fmt)
+ (setq fmt nil))))
+ (if (and (not suppress-const) org-table-formula-use-constants)
+ (setq formula (org-table-formula-substitute-names formula)))
+ (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
(while (> ndown 0)
(setq fields (org-split-string
- (concat " " (buffer-substring
- (point-at-bol) (point-at-eol))) "|"))
+ (buffer-substring
+ (point-at-bol) (point-at-eol)) " *| *"))
+ (if org-table-formula-numbers-only
+ (setq fields (mapcar
+ (lambda (x) (number-to-string (string-to-number x)))
+ fields)))
(setq ndown (1- ndown))
(setq form (copy-sequence formula))
(while (string-match "\\$\\([0-9]+\\)?" form)
(setq n (if (match-beginning 1)
(string-to-int (match-string 1 form))
n0)
- x (nth n fields))
+ x (nth (1- n) fields))
(unless x (error "Invalid field specifier \"%s\""
(match-string 0 form)))
- (if (equal (string-to-number x) 0) (setq x "0"))
- (setq form (replace-match x t t form)))
- (setq ev (calc-eval (list form) 'num))
+ (if (equal x "") (setq x "0"))
+ (setq form (replace-match (concat "(" x ")") t t form)))
+ (setq ev (calc-eval (cons form modes)
+ (if org-table-formula-numbers-only 'num)))
+
+ (when org-table-formula-debug
+ (with-output-to-temp-buffer "*Help*"
+ (princ (format "Substitution history of formula
+Orig: %s
+$xyz-> %s
+$1-> %s\n" orig formula form))
+ (if (listp ev)
+ (princ (format " %s^\nError: %s"
+ (make-string (car ev) ?\-) (nth 1 ev)))
+ (princ (format "Result: %s" ev))))
+ (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
+ (unless (and (interactive-p) (not ndown))
+ (unless (let (inhibit-redisplay)
+ (y-or-n-p "Debugging Formula. Continue to next? "))
+ (org-table-align)
+ (error "Abort"))
+ (delete-window (get-buffer-window "*Help*"))
+ (message "")))
(if (listp ev)
- (error "Invalid expression: %s (%s at %d)" form (nth 1 ev) (car ev)))
+ (setq fmt nil ev "#ERROR"))
(org-table-blank-field)
(if fmt
(insert (format fmt (string-to-number ev)))
@@ -6903,7 +7374,96 @@ separator line)."
(if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]"))
(call-interactively 'org-return)
(setq ndown 0)))
- (org-table-align)))
+ (or suppress-align (org-table-align))))
+
+(defun org-table-recalculate (&optional all noalign)
+ "Recalculate the current table line by applying all stored formulas."
+ (interactive "P")
+ (or (memq this-command org-recalc-commands)
+ (setq org-recalc-commands (cons this-command org-recalc-commands)))
+ (unless (org-at-table-p) (error "Not at a table"))
+ (org-table-get-specials)
+ (let* ((eqlist (sort (org-table-get-stored-formulas)
+ (lambda (a b) (< (car a) (car b)))))
+ (inhibit-redisplay t)
+ (line-re org-table-dataline-regexp)
+ (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point))))
+ (thiscol (org-table-current-column))
+ beg end entry eql (cnt 0))
+ ;; Insert constants in all formulas
+ (setq eqlist
+ (mapcar (lambda (x)
+ (setcdr x (org-table-formula-substitute-names (cdr x)))
+ x)
+ eqlist))
+ (if all
+ (progn
+ (setq end (move-marker (make-marker) (1+ (org-table-end))))
+ (goto-char (setq beg (org-table-begin)))
+ (if (re-search-forward org-table-recalculate-regexp end t)
+ (setq line-re org-table-recalculate-regexp)
+ (if (and (re-search-forward org-table-dataline-regexp end t)
+ (re-search-forward org-table-hline-regexp end t)
+ (re-search-forward org-table-dataline-regexp end t))
+ (setq beg (match-beginning 0))
+ nil))) ;; just leave beg where it is
+ (setq beg (point-at-bol)
+ end (move-marker (make-marker) (1+ (point-at-eol)))))
+ (goto-char beg)
+ (and all (message "Re-applying formulas to full table..."))
+ (while (re-search-forward line-re end t)
+ (unless (string-match "^ *[!$] *$" (org-table-get-field 1))
+ ;; Unprotected line, recalculate
+ (and all (message "Re-applying formulas to full table...(line %d)"
+ (setq cnt (1+ cnt))))
+ (setq org-last-recalc-line (org-current-line))
+ (setq eql eqlist)
+ (while (setq entry (pop eql))
+ (goto-line org-last-recalc-line)
+ (org-table-goto-column (car entry) nil 'force)
+ (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
+ (goto-line thisline)
+ (org-table-goto-column thiscol)
+ (or noalign (org-table-align)
+ (and all (message "Re-applying formulas to %d lines...done" cnt)))))
+
+(defun org-table-formula-substitute-names (f)
+ "Replace $const with values in string F."
+ (let ((start 0) a n1 n2 nn1 nn2 s (f1 f))
+ ;; First, check for column names
+ (while (setq start (string-match org-table-column-name-regexp f start))
+ (setq start (1+ start))
+ (setq a (assoc (match-string 1 f) org-table-column-names))
+ (setq f (replace-match (concat "$" (cdr a)) t t f)))
+ ;; Expand ranges to vectors
+ (while (string-match "\\$\\([0-9]+\\)\\.\\.\\.?\\$\\([0-9]+\\)" f)
+ (setq n1 (string-to-number (match-string 1 f))
+ n2 (string-to-number (match-string 2 f))
+ nn1 (1+ (min n1 n2)) nn2 (max n1 n2)
+ s (concat "[($" (number-to-string (1- nn1)) ")"))
+ (loop for i from nn1 upto nn2 do
+ (setq s (concat s ",($" (int-to-string i) ")")))
+ (setq s (concat s "]"))
+ (if (< n2 n1) (setq s (concat "rev(" s ")")))
+ (setq f (replace-match s t t f)))
+ ;; Parameters and constants
+ (setq start 0)
+ (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start))
+ (setq start (1+ start))
+ (if (setq a (save-match-data
+ (org-table-get-constant (match-string 1 f))))
+ (setq f (replace-match (concat "(" a ")") t t f))))
+ (if org-table-formula-debug
+ (put-text-property 0 (length f) :orig-formula f1 f))
+ f))
+
+(defun org-table-get-constant (const)
+ "Find the value for a parameter or constant in a formula.
+Parameters get priority."
+ (or (cdr (assoc const org-table-local-parameters))
+ (cdr (assoc const org-table-formula-constants))
+ (and (fboundp 'constants-get) (constants-get const))
+ "#UNDEFINED_NAME"))
;;; The orgtbl minor mode
@@ -6972,6 +7532,11 @@ table editor in arbitrary modes.")
(if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode)))
(if orgtbl-mode
(progn
+ (and (orgtbl-setup) (defun orgtbl-setup () nil))
+ ;; Make sure we are first in minor-mode-map-alist
+ (let ((c (assq 'orgtbl-mode minor-mode-map-alist)))
+ (and c (setq minor-mode-map-alist
+ (cons c (delq c minor-mode-map-alist)))))
(set (make-local-variable (quote org-table-may-need-update)) t)
(make-local-hook (quote before-change-functions))
(add-hook 'before-change-functions 'org-before-change-function
@@ -6994,81 +7559,134 @@ table editor in arbitrary modes.")
(put 'orgtbl-mode :menu-tag "Org Table Mode")
(add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map)
-(defun orgtbl-make-binding (fun &rest keys)
- "Create a function for binding in the table minor mode."
- (list 'lambda '(arg)
- (concat "Run `" (symbol-name fun) "' or the default binding.")
- '(interactive "p")
- (list 'if
- '(org-at-table-p)
- (list 'call-interactively (list 'quote fun))
- (list 'let '(orgtbl-mode)
- (list 'call-interactively
- (append '(or)
- (mapcar (lambda (k)
- (list 'key-binding k))
- keys)
- '('orgtbl-error)))))))
+(defun orgtbl-make-binding (fun n &rest keys)
+ "Create a function for binding in the table minor mode.
+FUN is the command to call inside a table. N is used to create a unique
+command name. KEYS are keys that should be checked in for a command
+to execute outside of tables."
+ (eval
+ (list 'defun
+ (intern (concat "orgtbl-hijacker-command-" (int-to-string n)))
+ '(arg)
+ (concat "In tables, run `" (symbol-name fun) "'.\n"
+ "Outside of tables, run the binding of `"
+ (mapconcat (lambda (x) (format "%s" x)) keys "' or `")
+ "'.")
+ '(interactive "p")
+ (list 'if
+ '(org-at-table-p)
+ (list 'call-interactively (list 'quote fun))
+ (list 'let '(orgtbl-mode)
+ (list 'call-interactively
+ (append '(or)
+ (mapcar (lambda (k)
+ (list 'key-binding k))
+ keys)
+ '('orgtbl-error))))))))
(defun orgtbl-error ()
"Error when there is no default binding for a table key."
(interactive)
- (error "This key is has no function outside tables"))
-
-;; Keybindings for the minor mode
-(let ((bindings
- (list
- '([(meta shift left)] org-table-delete-column)
- '([(meta left)] org-table-move-column-left)
- '([(meta right)] org-table-move-column-right)
- '([(meta shift right)] org-table-insert-column)
- '([(meta shift up)] org-table-kill-row)
- '([(meta shift down)] org-table-insert-row)
- '([(meta up)] org-table-move-row-up)
- '([(meta down)] org-table-move-row-down)
- '("\C-c\C-w" org-table-cut-region)
- '("\C-c\M-w" org-table-copy-region)
- '("\C-c\C-y" org-table-paste-rectangle)
- '("\C-c-" org-table-insert-hline)
- '([(shift tab)] org-table-previous-field)
- '("\C-c\C-c" org-table-align)
- '("\C-m" org-table-next-row)
- (list (org-key 'S-return) 'org-table-copy-down)
- '([(meta return)] org-table-wrap-region)
- '("\C-c\C-q" org-table-wrap-region)
- '("\C-c?" org-table-current-column)
- '("\C-c " org-table-blank-field)
- '("\C-c+" org-table-sum)
- '("\C-c|" org-table-toggle-vline-visibility)
- '("\C-c=" org-table-eval-formula)))
- elt key fun cmd)
- (while (setq elt (pop bindings))
- (setq key (car elt)
- fun (nth 1 elt)
- cmd (orgtbl-make-binding fun key))
- (define-key orgtbl-mode-map key cmd)))
-
-;; Special treatment needed for TAB and RET
-
-(define-key orgtbl-mode-map [(return)]
- (orgtbl-make-binding 'orgtbl-ret [(return)] "\C-m"))
-(define-key orgtbl-mode-map "\C-m"
- (orgtbl-make-binding 'orgtbl-ret "\C-m" [(return)]))
-(define-key orgtbl-mode-map [(tab)]
- (orgtbl-make-binding 'orgtbl-tab [(tab)] "\C-i"))
-(define-key orgtbl-mode-map "\C-i"
- (orgtbl-make-binding 'orgtbl-tab "\C-i" [(tab)]))
-
-(when orgtbl-optimized
- ;; If the user wants maximum table support, we need to hijack
- ;; some standard editing functions
- (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command
- orgtbl-mode-map global-map)
- (substitute-key-definition 'delete-char 'orgtbl-delete-char
- orgtbl-mode-map global-map)
- (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char
- orgtbl-mode-map global-map)
- (define-key org-mode-map "|" 'self-insert-command))
+ (error "This key has no function outside tables"))
+
+(defun orgtbl-setup ()
+ "Setup orgtbl keymaps."
+ (let ((nfunc 0)
+ (bindings
+ (list
+ '([(meta shift left)] org-table-delete-column)
+ '([(meta left)] org-table-move-column-left)
+ '([(meta right)] org-table-move-column-right)
+ '([(meta shift right)] org-table-insert-column)
+ '([(meta shift up)] org-table-kill-row)
+ '([(meta shift down)] org-table-insert-row)
+ '([(meta up)] org-table-move-row-up)
+ '([(meta down)] org-table-move-row-down)
+ '("\C-c\C-w" org-table-cut-region)
+ '("\C-c\M-w" org-table-copy-region)
+ '("\C-c\C-y" org-table-paste-rectangle)
+ '("\C-c-" org-table-insert-hline)
+ '([(shift tab)] org-table-previous-field)
+ '("\C-c\C-c" org-ctrl-c-ctrl-c)
+ '("\C-m" org-table-next-row)
+ (list (org-key 'S-return) 'org-table-copy-down)
+ '([(meta return)] org-table-wrap-region)
+ '("\C-c\C-q" org-table-wrap-region)
+ '("\C-c?" org-table-current-column)
+ '("\C-c " org-table-blank-field)
+ '("\C-c+" org-table-sum)
+ '("\C-c|" org-table-toggle-vline-visibility)
+ '("\C-c=" org-table-eval-formula)
+ '("\C-c*" org-table-recalculate)
+ '([(control ?#)] org-table-rotate-recalc-marks)))
+ elt key fun cmd)
+ (while (setq elt (pop bindings))
+ (setq nfunc (1+ nfunc))
+ (setq key (car elt)
+ fun (nth 1 elt)
+ cmd (orgtbl-make-binding fun nfunc key))
+ (define-key orgtbl-mode-map key cmd))
+ ;; Special treatment needed for TAB and RET
+ (define-key orgtbl-mode-map [(return)]
+ (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m"))
+ (define-key orgtbl-mode-map "\C-m"
+ (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)]))
+ (define-key orgtbl-mode-map [(tab)]
+ (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i"))
+ (define-key orgtbl-mode-map "\C-i"
+ (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)])))
+ (when orgtbl-optimized
+ ;; If the user wants maximum table support, we need to hijack
+ ;; some standard editing functions
+ (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command
+ orgtbl-mode-map global-map)
+ (substitute-key-definition 'delete-char 'orgtbl-delete-char
+ orgtbl-mode-map global-map)
+ (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char
+ orgtbl-mode-map global-map)
+ (define-key org-mode-map "|" 'self-insert-command))
+ (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
+ '("OrgTbl"
+ ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
+ ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
+ ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
+ ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
+ "--"
+ ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
+ ["Copy Field from Above"
+ org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
+ "--"
+ ("Column"
+ ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
+ ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
+ ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
+ ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
+ ("Row"
+ ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
+ ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
+ ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
+ ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
+ "--"
+ ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
+ ("Rectangle"
+ ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
+ ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
+ ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
+ ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
+ "--"
+ ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
+ ["Eval Formula Down " (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
+ ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"]
+ ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"]
+ ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"]
+ ["Sum Column/Rectangle" org-table-sum
+ :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
+ ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
+ ["Debug Formulas"
+ (setq org-table-formula-debug (not org-table-formula-debug))
+ :style toggle :selected org-table-formula-debug]
+ ))
+ t)
(defun orgtbl-tab ()
"Justification and field motion for `orgtbl-mode'."
@@ -7108,13 +7726,13 @@ reduced column width."
(interactive "p")
(if (and (org-at-table-p)
(eq N 1)
+ (string-match "|" (buffer-substring (point-at-bol) (point)))
(looking-at ".*?|"))
(let ((pos (point)))
(backward-delete-char N)
(skip-chars-forward "^|")
(insert " ")
(goto-char (1- pos)))
- (message "%s" last-input-event) (sit-for 1)
(delete-backward-char N)))
(defun orgtbl-delete-char (N)
@@ -7125,6 +7743,8 @@ will still be marked for re-alignment, because a narrow field may lead to
a reduced column width."
(interactive "p")
(if (and (org-at-table-p)
+ (not (bolp))
+ (not (= (char-after) ?|))
(eq N 1))
(if (looking-at ".*?|")
(let ((pos (point)))
@@ -7134,41 +7754,6 @@ a reduced column width."
(goto-char pos)))
(delete-char N)))
-(easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
- '("Tbl"
- ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
- ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
- ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
- ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
- "--"
- ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
- ["Copy Field from Above"
- org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
- "--"
- ("Column"
- ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
- ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
- ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
- ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
- ("Row"
- ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
- ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
- ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
- ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
- "--"
- ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
- ("Rectangle"
- ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
- ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
- ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
- ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
- "--"
- ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
- ["Sum Column/Rectangle" org-table-sum
- :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
- ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
- ))
-
;;; Exporting
(defconst org-level-max 20)
@@ -7503,7 +8088,7 @@ Entries can be like (\"ent\"), in which case \"\\ent\" will be translated to
In that case, \"\\ent\" will be translated to \"&other;\".
The list contains HTML entities for Latin-1, Greek and other symbols.
It is supplemented by a number of commonly used TeX macros with appropriate
-translations.")
+translations. There is currently no way for users to extend this.")
(defvar org-last-level nil) ; dynamically scoped variable
@@ -8095,7 +8680,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(org-format-table-table-html-using-table-generate-source olines)))))
(defun org-format-org-table-html (lines)
- "Format a table into html."
+ "Format a table into HTML."
(if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
(setq lines (nreverse lines))
(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."
newstr))
(defun org-format-table-table-html (lines)
- "Format a table generated by table.el into html.
+ "Format a table generated by table.el into HTML.
This conversion does *not* use `table-generate-source' from table.el.
This has the advantage that Org-mode's HTML conversions can be used.
But 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."
html))
(defun org-format-table-table-html-using-table-generate-source (lines)
- "Format a table into html, using `table-generate-source' from table.el.
+ "Format a table into HTML, using `table-generate-source' from table.el.
This has the advantage that cell- or row-spanning is allowed.
But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
(require 'table)
@@ -8413,10 +8998,10 @@ When LEVEL is non-nil, increase section numbers on that level."
;; - Bindings in Org-mode map are currently
;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet
-;; abcd fgh j lmnopqrstuvwxyz ? # -+ /= [] ; |,.<> \t necessary bindings
+;; abcd fgh j lmnopqrstuvwxyz ? #$ -+*/= [] ; |,.<>~ \t necessary bindings
;; e (?) useful from outline-mode
;; i k @ expendable from outline-mode
-;; 0123456789 ! $%^& * ()_{} " ~`' free
+;; 0123456789 ! %^& ()_{} " `' free
(define-key org-mode-map "\C-i" 'org-cycle)
(define-key org-mode-map [(meta tab)] 'org-complete)
@@ -8476,7 +9061,9 @@ When LEVEL is non-nil, increase section numbers on that level."
(define-key org-mode-map "\C-c+" 'org-table-sum)
(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility)
(define-key org-mode-map "\C-c=" 'org-table-eval-formula)
-(define-key org-mode-map "\C-c#" 'org-table-create-with-table.el)
+(define-key org-mode-map "\C-c*" 'org-table-recalculate)
+(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
+(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el)
(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region)
(define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii)
(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."
(define-key org-mode-map "\C-c\C-xh" 'org-export-as-html)
(define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open)
-(defsubst org-table-p ()
- (if (and (eq major-mode 'org-mode) font-lock-mode)
- (eq (get-text-property (point) 'face) 'org-table)
- ;; (save-match-data (org-at-table-p)))) ; FIXME: OK to not use this?
- (org-at-table-p)))
-
+(defsubst org-table-p () (org-at-table-p))
(defun org-self-insert-command (N)
"Like `self-insert-command', use overwrite-mode for whitespace in tables.
@@ -8525,6 +9107,7 @@ reduced column width."
(interactive "p")
(if (and (org-table-p)
(eq N 1)
+ (string-match "|" (buffer-substring (point-at-bol) (point)))
(looking-at ".*?|"))
(let ((pos (point)))
(backward-delete-char N)
@@ -8541,6 +9124,8 @@ will still be marked for re-alignment, because a narrow field may lead to
a reduced column width."
(interactive "p")
(if (and (org-table-p)
+ (not (bolp))
+ (not (= (char-after) ?|))
(eq N 1))
(if (looking-at ".*?|")
(let ((pos (point)))
@@ -8655,16 +9240,14 @@ a reduced column width."
(defun org-copy-special ()
"Call either `org-table-copy' or `org-copy-subtree'."
(interactive)
- (if (org-at-table-p)
- (org-table-copy-region)
- (org-copy-subtree)))
+ (call-interactively
+ (if (org-at-table-p) 'org-table-copy-region 'org-copy-subtree)))
(defun org-cut-special ()
"Call either `org-table-copy' or `org-cut-subtree'."
(interactive)
- (if (org-at-table-p)
- (org-table-cut-region)
- (org-cut-subtree)))
+ (call-interactively
+ (if (org-at-table-p) 'org-table-cut-region 'org-cut-subtree)))
(defun org-paste-special (arg)
"Call either `org-table-paste-rectangle' or `org-paste-subtree'."
@@ -8674,23 +9257,37 @@ a reduced column width."
(org-paste-subtree arg)))
(defun org-ctrl-c-ctrl-c (&optional arg)
- "Call realign table, or recognize a table.el table.
+ "Call realign table, or recognize a table.el table, or update keywords.
When the cursor is inside a table created by the table.el package,
activate that table. Otherwise, if the cursor is at a normal table
created with org.el, re-align that table. This command works even if
-the automatic table editor has been turned off."
+the automatic table editor has been turned off.
+If the cursor is in one of the special #+KEYWORD lines, this triggers
+scanning the buffer for these lines and updating the information."
(interactive "P")
(let ((org-enable-table-editor t))
(cond
((org-at-table.el-p)
(require 'table)
(beginning-of-line 1)
- (re-search-forward "|" (save-excursion (end-of-line 2) (point))) ;FIXME: line-end-position?
+ (re-search-forward "|" (save-excursion (end-of-line 2) (point)))
(table-recognize-table))
((org-at-table-p)
+ (org-table-maybe-eval-formula)
+ (if arg
+ (org-table-recalculate t)
+ (org-table-maybe-recalculate-line))
(org-table-align))
- ((save-excursion (beginning-of-line 1) (looking-at "#\\+[A-Z]+"))
- (let ((org-inhibit-startup t)) (org-mode)))
+ ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
+ (cond
+ ((equal (match-string 1) "TBLFM")
+ ;; Recalculate the table before this line
+ (save-excursion
+ (beginning-of-line 1)
+ (skip-chars-backward " \r\n\t")
+ (if (org-at-table-p) (org-table-recalculate t))))
+ (t
+ (let ((org-inhibit-startup t)) (org-mode)))))
((org-region-active-p)
(org-table-convert-region (region-beginning) (region-end) arg))
((and (region-beginning) (region-end))
@@ -8718,18 +9315,59 @@ the automatic table editor has been turned off."
;;; Menu entries
-;; First, remove the outline menus. Org-mode does not neede these commands.
-(if org-xemacs-p
- (add-hook 'org-mode-hook
- (lambda ()
- (delete-menu-item '("Headings"))
- (delete-menu-item '("Show"))
- (delete-menu-item '("Hide"))
- (set-menubar-dirty-flag)))
- (setq org-mode-map (delq (assoc 'menu-bar (cdr org-mode-map))
- org-mode-map)))
-
;; Define the Org-mode menus
+(easy-menu-define org-tbl-menu org-mode-map "Tbl menu"
+ '("Tbl"
+ ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
+ ["Next Field" org-cycle (org-at-table-p)]
+ ["Previous Field" org-shifttab (org-at-table-p)]
+ ["Next Row" org-return (org-at-table-p)]
+ "--"
+ ["Blank Field" org-table-blank-field (org-at-table-p)]
+ ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
+ "--"
+ ("Column"
+ ["Move Column Left" org-metaleft (org-at-table-p)]
+ ["Move Column Right" org-metaright (org-at-table-p)]
+ ["Delete Column" org-shiftmetaleft (org-at-table-p)]
+ ["Insert Column" org-shiftmetaright (org-at-table-p)])
+ ("Row"
+ ["Move Row Up" org-metaup (org-at-table-p)]
+ ["Move Row Down" org-metadown (org-at-table-p)]
+ ["Delete Row" org-shiftmetaup (org-at-table-p)]
+ ["Insert Row" org-shiftmetadown (org-at-table-p)]
+ "--"
+ ["Insert Hline" org-table-insert-hline (org-at-table-p)])
+ ("Rectangle"
+ ["Copy Rectangle" org-copy-special (org-at-table-p)]
+ ["Cut Rectangle" org-cut-special (org-at-table-p)]
+ ["Paste Rectangle" org-paste-special (org-at-table-p)]
+ ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
+ "--"
+ ("Calculate"
+ ["Eval Formula" org-table-eval-formula (org-at-table-p)]
+ ["Eval Formula Down" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
+ ["Recalculate line" org-table-recalculate (org-at-table-p)]
+ ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
+ ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
+ ["Sum Column/Rectangle" org-table-sum
+ (or (org-at-table-p) (org-region-active-p))]
+ ["Which Column?" org-table-current-column (org-at-table-p)])
+ ["Debug Formulas"
+ (setq org-table-formula-debug (not org-table-formula-debug))
+ :style toggle :selected org-table-formula-debug]
+ "--"
+ ["Invisible Vlines" org-table-toggle-vline-visibility
+ :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
+ "--"
+ ["Create" org-table-create (and (not (org-at-table-p))
+ org-enable-table-editor)]
+ ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
+ ["Import from File" org-table-import (not (org-at-table-p))]
+ ["Export to File" org-table-export (org-at-table-p)]
+ "--"
+ ["Create/Convert from/to table.el" org-table-create-with-table.el t]))
+
(easy-menu-define org-org-menu org-mode-map "Org menu"
'("Org"
["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))]
@@ -8794,49 +9432,6 @@ the automatic table editor has been turned off."
["Insert Link" org-insert-link t]
["Follow Link" org-open-at-point t])
"--"
- ("Table"
- ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
- ["Next Field" org-cycle (org-at-table-p)]
- ["Previous Field" org-shifttab (org-at-table-p)]
- ["Next Row" org-return (org-at-table-p)]
- "--"
- ["Blank Field" org-table-blank-field (org-at-table-p)]
- ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
- "--"
- ("Column"
- ["Move Column Left" org-metaleft (org-at-table-p)]
- ["Move Column Right" org-metaright (org-at-table-p)]
- ["Delete Column" org-shiftmetaleft (org-at-table-p)]
- ["Insert Column" org-shiftmetaright (org-at-table-p)])
- ("Row"
- ["Move Row Up" org-metaup (org-at-table-p)]
- ["Move Row Down" org-metadown (org-at-table-p)]
- ["Delete Row" org-shiftmetaup (org-at-table-p)]
- ["Insert Row" org-shiftmetadown (org-at-table-p)]
- "--"
- ["Insert Hline" org-table-insert-hline (org-at-table-p)])
- ("Rectangle"
- ["Copy Rectangle" org-copy-special (org-at-table-p)]
- ["Cut Rectangle" org-cut-special (org-at-table-p)]
- ["Paste Rectangle" org-paste-special (org-at-table-p)]
- ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
- "--"
- ["Which Column?" org-table-current-column (org-at-table-p)]
- ["Sum Column/Rectangle" org-table-sum
- (or (org-at-table-p) (org-region-active-p))]
- ["Eval Formula" org-table-eval-formula (org-at-table-p)]
- "--"
- ["Invisible Vlines" org-table-toggle-vline-visibility
- :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
- "--"
- ["Create" org-table-create (and (not (org-at-table-p))
- org-enable-table-editor)]
- ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
- ["Import from File" org-table-import (not (org-at-table-p))]
- ["Export to File" org-table-export (org-at-table-p)]
- "--"
- ["Create/Convert from/to table.el" org-table-create-with-table.el t])
- "--"
("Export"
["ASCII" org-export-as-ascii t]
["Extract Visible Text" org-export-copy-visible t]
@@ -8878,7 +9473,7 @@ With optional NODE, go directly to that node."
;;; Documentation
(defun org-customize ()
- "Call the customize function with org as argument."
+ "Call the customize function with `org' as argument."
(interactive)
(customize-browse 'org))
@@ -9017,7 +9612,7 @@ to a visible line beginning. This makes the function of C-a more intuitive."
(equal (char-before) ?\r))))
(defun org-back-to-heading (&optional invisible-ok)
- "Move to previous heading line, or beg of this line if it's a heading.
+ "Move to previous heading line, or beginning of this line if it's a heading.
Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
(if org-noutline-p
(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."
(point))))
(replace-match newtext fixedcase literal)
(if (< change 0)
- (insert-char ?\ (- change)))))
+ (insert-char ?\s (- change)))))
;; Picture Tabs
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 @@
(require 'cl))
(defgroup sgml nil
- "SGML editing mode"
+ "SGML editing mode."
:group 'languages)
(defcustom sgml-basic-offset 2
@@ -670,12 +670,12 @@ If QUIET, do not print a message when there are no attributes for TAG."
(message "No attributes configured."))
(if (stringp (car alist))
(progn
- (insert (if (eq (preceding-char) ? ) "" ? )
+ (insert (if (eq (preceding-char) ?\s) "" ?\s)
(funcall skeleton-transformation (car alist)))
(sgml-value alist))
(setq i (length alist))
(while (> i 0)
- (insert ? )
+ (insert ?\s)
(insert (funcall skeleton-transformation
(setq attribute
(skeleton-read '(completing-read
@@ -685,7 +685,7 @@ If QUIET, do not print a message when there are no attributes for TAG."
(setq i 0)
(sgml-value (assoc (downcase attribute) alist))
(setq i (1- i))))
- (if (eq (preceding-char) ? )
+ (if (eq (preceding-char) ?\s)
(delete-backward-char 1)))
car)))
@@ -701,7 +701,7 @@ With prefix argument, only self insert."
(eq (aref tag 0) ?/))
(self-insert-command (prefix-numeric-value arg))
(sgml-attributes tag)
- (setq last-command-char ? )
+ (setq last-command-char ?\s)
(or (> (point) point)
(self-insert-command 1)))))
@@ -1875,7 +1875,7 @@ The third `match-string' will be the used in the menu.")
(setq toc-index
(cons (cons (concat (make-string
(* 2 (1- (string-to-number (match-string 1))))
- ?\ )
+ ?\s)
(match-string 3))
(line-beginning-position))
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."
:version "22.1")
(defgroup table-hooks nil
- "Hooks for table manipulation utilities"
+ "Hooks for table manipulation utilities."
:group 'table)
(defcustom table-time-before-update 0.2
@@ -1678,7 +1678,7 @@ Inside a table cell has a special keymap.
(setq i 0)
(while (< i columns)
(let ((beg (point)))
- (insert (make-string (car cw) ?\ ))
+ (insert (make-string (car cw) ?\s))
(insert table-cell-vertical-char)
(table--put-cell-line-property beg (1- (point))))
(if (cdr cw) (setq cw (cdr cw)))
@@ -2247,7 +2247,7 @@ table structure."
(end (table--goto-coordinate (cons (cadr this) bottom-border-y)))
(rect (extract-rectangle beg end))
(height (+ (- (cddr this) (cdar this)) 1))
- (blank-line (make-string (- (cadr this) (caar this)) ?\ )))
+ (blank-line (make-string (- (cadr this) (caar this)) ?\s)))
;; delete lines from the bottom of the cell
(setcdr (nthcdr (- height bottom-budget 1) rect) (nthcdr height rect))
;; delete lines from the top of the cell
@@ -3363,7 +3363,7 @@ Currently this method is for LaTeX only."
;; insert a column separator and column/multicolumn contents
(with-current-buffer dest-buffer
(unless first-p
- (insert (if (eq (char-before) ?\ ) "" " ") "& "))
+ (insert (if (eq (char-before) ?\s) "" " ") "& "))
(if (> span 1)
(insert (format "\\multicolumn{%d}{%sl|}{%s}" span (if first-p "|" "") line))
(insert line)))
@@ -3379,7 +3379,7 @@ Currently this method is for LaTeX only."
(setq i (1+ i)))
(funcall insert-column start x1))
(with-current-buffer dest-buffer
- (insert (if (eq (char-before) ?\ ) "" " ") "\\\\\n"))))
+ (insert (if (eq (char-before) ?\s) "" " ") "\\\\\n"))))
(setq y (1+ y)))
(with-current-buffer dest-buffer
(insert "\\hline\n"))
@@ -3534,7 +3534,7 @@ consists from cells of same height."
;; insert the remaining area while appending blank lines below it
(table--insert-rectangle
(append rect (make-list (+ 2 (- (cdr rb-coord) (cdr lu-coord)))
- (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\ ))))
+ (make-string (+ 2 (- (car rb-coord) (car lu-coord))) ?\s))))
;; remove the appended blank lines below the table if they are unnecessary
(table--goto-coordinate (cons 0 (- (cdr bt-coord) (- (cdr rb-coord) (cdr lu-coord)))))
(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
(unless (eolp)
(delete-char 1)))
(delete-char -1)
- (insert ?\ )
+ (insert ?\s)
(forward-char -1)))
(setq n (1+ n)))
(setq table-inhibit-auto-fill-paragraph t))
@@ -4446,16 +4446,16 @@ Replace frame characters with spaces."
(move-to-column col)
(table--spacify-frame))))
(delete-char 1)
- (insert-before-markers ?\ ))
+ (insert-before-markers ?\s))
((table--cell-horizontal-char-p (char-after))
(while (progn
(delete-char 1)
- (insert-before-markers ?\ )
+ (insert-before-markers ?\s)
(table--cell-horizontal-char-p (char-after)))))
((eq (char-after) table-cell-vertical-char)
(while (let ((col (current-column)))
(delete-char 1)
- (insert-before-markers ?\ )
+ (insert-before-markers ?\s)
(and (zerop (forward-line 1))
(zerop (current-column))
(move-to-column col)
@@ -4611,7 +4611,7 @@ list. This list can be any vertical list within the table."
(table--untabify-line)
(delete-char columns-to-extend))
(table--untabify-line (point))
- (insert (make-string columns-to-extend ?\ )))
+ (insert (make-string columns-to-extend ?\s)))
(setcdr coord (1- (cdr coord)))))
(table--goto-coordinate (caar (last top-to-bottom-coord-list)))
(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."
(table--untabify-line)
(delete-char columns-to-extend))
(table--untabify-line (point))
- (insert (make-string columns-to-extend ?\ )))
+ (insert (make-string columns-to-extend ?\s)))
(setcdr coord (1+ (cdr coord)))))
(while (<= (cdr beg-coord) (cdr end-coord))
(table--untabify-line (table--goto-coordinate beg-coord 'no-extension))
@@ -4854,7 +4854,7 @@ in the list."
(insert char)
(unless (eolp)
(delete-char 1))))
- (if (not (eq char ?\ ))
+ (if (not (eq char ?\s))
(if char (insert char))
(if (not (looking-at "\\s *$"))
(if (and table-fixed-width-mode
@@ -5398,7 +5398,7 @@ works better than the previous versions however not fully compatible.
(defun table--cell-blank-str (&optional n)
"Return blank table cell string of length N."
- (let ((str (make-string (or n 1) ?\ )))
+ (let ((str (make-string (or n 1) ?\s)))
(table--put-cell-content-property 0 (length str) str)
str))
@@ -5481,7 +5481,7 @@ chopped location is indicated with table-word-continuation-char."
(and (zerop (forward-line 1))
(< (point) end)))
(t (forward-char -1)
- (insert-before-markers (if (equal (char-before) ?\ ) ?\ table-word-continuation-char)
+ (insert-before-markers (if (equal (char-before) ?\s) ?\s table-word-continuation-char)
"\n")
t)))))
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 @@
(require 'compile)
(defgroup tex-file nil
- "TeX files and directories"
+ "TeX files and directories."
:prefix "tex-"
:group 'tex)
(defgroup tex-run nil
- "Running external commands from TeX mode"
+ "Running external commands from TeX mode."
:prefix "tex-"
:group 'tex)
(defgroup tex-view nil
- "Viewing and printing TeX files"
+ "Viewing and printing TeX files."
:prefix "tex-"
:group 'tex)
@@ -1114,7 +1114,7 @@ inserts \" characters."
(delete-char (length tex-open-quote))
t)))
(self-insert-command (prefix-numeric-value arg))
- (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ ))
+ (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
tex-open-quote tex-close-quote))))
(defun tex-validate-buffer ()
@@ -2421,7 +2421,7 @@ There might be text before point."
(+ indent (current-column) tex-indent-item))
(t
(let ((col (current-column)))
- (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\())
+ (if (or (not (eq (char-syntax (or (char-after pos) ?\s)) ?\())
;; Can't be an arg if there's an empty line inbetween.
(save-excursion (re-search-forward "^[ \t]*$" pos t)))
;; 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 @@
(eval-when-compile (require 'tex-mode) (require 'cl))
(defgroup texinfo nil
- "Texinfo Mode"
+ "Texinfo Mode."
:group 'docs)
;;;###autoload
@@ -701,7 +701,7 @@ With prefix argument or inside @code or @example, inserts a plain \"."
(setq in-env t)))))
(self-insert-command (prefix-numeric-value arg))
(insert
- (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ ))
+ (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
texinfo-open-quote
texinfo-close-quote)))))
@@ -816,7 +816,7 @@ Otherwise, follow with a newline."
(texinfo-last-unended-begin)
(match-string 1)))
"table")
- ? ;space
+ ?\s
?\n)))
(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 @@
;;;;; variable declarations ;;;;;
(defgroup two-column nil
- "Minor mode for editing of two-column text"
+ "Minor mode for editing of two-column text."
:prefix "2C-"
:group 'frames)
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.")
(defvar tooltip-hide-time nil
"Time when the last tooltip was hidden.")
+(defvar gud-tooltip-mode) ;; Prevent warning.
+
;;; Event accessors
(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 @@
;;; User-visible variables
(defgroup uniquify nil
- "Unique buffer names dependent on file name"
+ "Unique buffer names dependent on file name."
:group 'applications)
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 @@
+2005-07-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * url-history.el (url-history-track): Doc fix.
+ (url-history): Finish `defgroup' description with period.
+
+ * url-cookie.el (url-cookie):
+ * url-gw.el (url-gateway):
+ * url-news.el (url-news):
+ * url-vars.el (url, url-file, url-cache, url-mime, url-hairy):
+ Finish `defgroup' description with period.
+
+2005-06-28 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
+
+ * url-http.el (url-http-create-request): Call url-recreate-url
+ in proxy case.
+
+2005-06-27 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
+
+ * url-http.el (url-http-create-request): When computing real-fname,
+ call url-filename in both cases.
+
+2005-06-27 Richard M. Stallman <rms@gnu.org>
+
+ * url-cookie.el (url-cookie-store): Rename arg PATH to LOCALPART.
+ (url-cookie-retrieve): Likewise.
+ (url-cookie-generate-header-lines): Likewise.
+ (url-cookie-handle-set-cookie): Likewise.
+ (url-cookie-create): Expect :localpart instead of :path.
+ (url-cookie-localpart): Renamed from url-cookie-path.
+ (url-cookie-set-localpart): Renamed from url-cookie-set-path.
+ (url-cookie-file): Doc fix.
+ (url-cookie-p): Add doc string.
+
2005-06-23 Richard M. Stallman <rms@gnu.org>
* 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 @@
;; 'open standard' defining this crap.
;;
;; A cookie is stored internally as a vector of 7 slots
-;; [ 'cookie name value expires path domain secure ]
+;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
(defsubst url-cookie-name (cookie) (aref cookie 1))
(defsubst url-cookie-value (cookie) (aref cookie 2))
(defsubst url-cookie-expires (cookie) (aref cookie 3))
-(defsubst url-cookie-path (cookie) (aref cookie 4))
+(defsubst url-cookie-localpart (cookie) (aref cookie 4))
(defsubst url-cookie-domain (cookie) (aref cookie 5))
(defsubst url-cookie-secure (cookie) (aref cookie 6))
(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
-(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val))
+(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
(defsubst url-cookie-create (&rest args)
+ "Create a cookie vector object from keyword-value pairs ARGS.
+The keywords allowed are
+ :name NAME
+ :value VALUE
+ :expires TIME
+ :localpart LOCALPAR
+ :domain DOMAIN
+ :secure ???
+Could someone fill in more information?"
(let ((retval (make-vector 7 nil)))
(aset retval 0 'cookie)
(url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
(url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
(url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
- (url-cookie-set-path retval (url-cookie-retrieve-arg :path args))
+ (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
(url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
(url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
retval))
(defun url-cookie-p (obj)
+ "Return non-nil if OBJ is a cookie vector object.
+These objects represent cookies in the URL package.
+A cookie vector object is a vector of 7 slots:
+ [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
(and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
(defgroup url-cookie nil
- "URL cookies"
+ "URL cookies."
:prefix "url-"
:prefix "url-cookie-"
:group 'url)
(defvar url-cookie-storage nil "Where cookies are stored.")
(defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
-(defcustom url-cookie-file nil "*Where cookies are stored on disk."
+(defcustom url-cookie-file nil
+ "*File where cookies are stored on disk."
:type '(choice (const :tag "Default" :value nil) file)
:group 'url-file
:group 'url-cookie)
@@ -154,7 +168,7 @@ telling Microsoft that."
(write-file fname)
(kill-buffer (current-buffer))))))
-(defun url-cookie-store (name value &optional expires domain path secure)
+(defun url-cookie-store (name value &optional expires domain localpart secure)
"Store a netscape-style cookie."
(let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
(tmp storage)
@@ -173,7 +187,7 @@ telling Microsoft that."
(while storage
(setq cur (car storage)
storage (cdr storage))
- (if (and (equal path (url-cookie-path cur))
+ (if (and (equal localpart (url-cookie-localpart cur))
(equal name (url-cookie-name cur)))
(progn
(url-cookie-set-expires cur expires)
@@ -186,7 +200,7 @@ telling Microsoft that."
:value value
:expires expires
:domain domain
- :path path
+ :localpart localpart
:secure secure)
(cdr found-domain)))))
;; Need to add a new top-level domain
@@ -194,7 +208,7 @@ telling Microsoft that."
:value value
:expires expires
:domain domain
- :path path
+ :localpart localpart
:secure secure))
(cond
(storage
@@ -235,8 +249,8 @@ telling Microsoft that."
(> (- cur-norm exp-norm) 1))))))
;;;###autoload
-(defun url-cookie-retrieve (host path &optional secure)
- "Retrieve all the netscape-style cookies for a specified HOST and PATH."
+(defun url-cookie-retrieve (host localpart &optional secure)
+ "Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."
(let ((storage (if secure
(append url-cookie-secure-storage url-cookie-storage)
url-cookie-storage))
@@ -244,7 +258,7 @@ telling Microsoft that."
(cookies nil)
(cur nil)
(retval nil)
- (path-regexp nil))
+ (localpart-regexp nil))
(while storage
(setq cur (car storage)
storage (cdr storage)
@@ -255,26 +269,26 @@ telling Microsoft that."
(while cookies
(setq cur (car cookies)
cookies (cdr cookies)
- path-regexp (concat "^" (regexp-quote
- (url-cookie-path cur))))
- (if (and (string-match path-regexp path)
+ localpart-regexp (concat "^" (regexp-quote
+ (url-cookie-localpart cur))))
+ (if (and (string-match localpart-regexp localpart)
(not (url-cookie-expired-p cur)))
(setq retval (cons cur retval))))))
retval))
;;;###autoload
-(defun url-cookie-generate-header-lines (host path secure)
- (let* ((cookies (url-cookie-retrieve host path secure))
- (retval nil)
- (cur nil)
- (chunk nil))
+(defun url-cookie-generate-header-lines (host localpart secure)
+ (let* ((cookies (url-cookie-retrieve host localpart secure))
+ (retval nil)
+ (cur nil)
+ (chunk nil))
;; Have to sort this for sending most specific cookies first
(setq cookies (and cookies
(sort cookies
(function
(lambda (x y)
- (> (length (url-cookie-path x))
- (length (url-cookie-path y))))))))
+ (> (length (url-cookie-localpart x))
+ (length (url-cookie-localpart y))))))))
(while cookies
(setq cur (car cookies)
cookies (cdr cookies)
@@ -340,9 +354,9 @@ telling Microsoft that."
(trusted url-cookie-trusted-urls)
(untrusted url-cookie-untrusted-urls)
(expires (cdr-safe (assoc-string "expires" args t)))
- (path (or (cdr-safe (assoc-string "path" args t))
- (file-name-directory
- (url-filename url-current-object))))
+ (localpart (or (cdr-safe (assoc-string "path" args t))
+ (file-name-directory
+ (url-filename url-current-object))))
(rest nil))
(while args
(if (not (member (downcase (car (car args)))
@@ -422,7 +436,7 @@ telling Microsoft that."
(while rest
(setq cur (pop rest))
(url-cookie-store (car cur) (cdr cur)
- expires domain path secure))))
+ expires domain localpart secure))))
(t
(message "%s tried to set a cookie for domain %s - rejected."
(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 @@
(autoload 'open-tls-stream "tls")
(defgroup url-gateway nil
- "URL gateway variables"
+ "URL gateway variables."
:group 'url)
(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 @@
(autoload 'url-do-setup "url")
(defgroup url-history nil
- "History variables in the URL package"
+ "History variables in the URL package."
:prefix "url-history"
:group 'url)
(defcustom url-history-track nil
"*Controls whether to keep a list of all the URLS being visited.
If non-nil, url will keep track of all the URLS visited.
-If eq to `t', then the list is saved to disk at the end of each emacs
+If set to t, then the list is saved to disk at the end of each Emacs
session."
:type 'boolean
: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.
(let ((url-basic-auth-storage
'url-http-proxy-basic-auth-storage))
(url-get-authentication url nil 'any nil))))
- (real-fname (if proxy-obj (url-recreate-url proxy-obj)
- (url-filename url)))
+ (real-fname (url-filename (or proxy-obj url)))
(host (url-host (or proxy-obj url)))
(auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers))
nil
@@ -200,7 +199,9 @@ request.
(setq request
(concat
;; The request
- (or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n"
+ (or url-request-method "GET") " "
+ (if proxy-obj (url-recreate-url proxy-obj) real-fname)
+ " HTTP/" url-http-version "\r\n"
;; Version of MIME we speak
"MIME-Version: 1.0\r\n"
;; (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 @@
(eval-when-compile (require 'cl))
(defgroup url-news nil
- "News related options"
+ "News related options."
:group 'url)
(defun url-news-open-host (host port user pass)
@@ -105,7 +105,7 @@
nntp-open-connection-function)
nil
(cons (current-buffer) 'browse)))
-
+
;;;###autoload
(defun url-news (url)
;; 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 @@
"Version number of URL package.")
(defgroup url nil
- "Uniform Resource Locator tool"
+ "Uniform Resource Locator tool."
:version "22.1"
:group 'hypermedia)
(defgroup url-file nil
- "URL storage"
+ "URL storage."
:prefix "url-"
:group 'url)
(defgroup url-cache nil
- "URL cache"
+ "URL cache."
:prefix "url-"
:prefix "url-cache-"
:group 'url)
(defgroup url-mime nil
- "MIME options of URL"
+ "MIME options of URL."
:prefix "url-"
:group 'url)
(defgroup url-hairy nil
- "Hairy options of URL"
+ "Hairy options of URL."
:prefix "url-"
:group 'url)
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 @@
;; Custom group for w32 specific settings
(defgroup w32 nil
- "MS-Windows specific features"
+ "MS-Windows specific features."
:group 'environment
:version "22.1"
:prefix "w32")
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 6e6e8f4a9ed..b06aaa2f869 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,47 @@
+2005-07-03 Luc Teirlinck <teirllm@auburn.edu>
+
+ * display.texi (The Echo Area): Correct menu.
+
+2005-07-03 Richard M. Stallman <rms@gnu.org>
+
+ * elisp.texi (Top): Update subnode menu for Display.
+
+ * display.texi (Displaying Messages): New node, with most
+ of what was in The Echo Area.
+ (Progress): Moved under The Echo Area.
+ (Logging Messages): New node with new text.
+ (Echo Area Customization): New node, the rest of what was
+ in The Echo Area. Document message-truncate-lines with @defvar.
+ (Display): Update menu.
+
+ * windows.texi (Textual Scrolling): Doc 3 values for
+ scroll-preserve-screen-position.
+
+ * text.texi (Special Properties): Change hook functions
+ should bind inhibit-modification-hooks around altering buffer text.
+
+ * keymaps.texi (Key Binding Commands): Call binding BINDING
+ rather than DEFINITION.
+
+2005-06-29 Juanma Barranquero <lekktu@gmail.com>
+
+ * variables.texi (Defining Variables): `user-variable-p' returns t
+ for aliases of user options, nil for alias loops.
+
+2005-06-28 Richard M. Stallman <rms@gnu.org>
+
+ * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
+ make-keymap.
+
+2005-06-27 Luc Teirlinck <teirllm@auburn.edu>
+
+ * variables.texi (Setting Variables): Correct and clarify
+ description of `add-to-ordered-list'.
+
+2005-06-26 Richard M. Stallman <rms@gnu.org>
+
+ * display.texi (Faces): Minor cleanup.
+
2005-06-25 Luc Teirlinck <teirllm@auburn.edu>
* 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.
* Refresh Screen:: Clearing the screen and redrawing everything on it.
* Forcing Redisplay:: Forcing redisplay.
* Truncation:: Folding or wrapping long text lines.
-* The Echo Area:: Where messages are displayed.
+* The Echo Area:: Displaying messages at the bottom of the screen.
* Warnings:: Displaying warning messages for the user.
-* Progress:: Informing user about progress of a long operation.
* Invisible Text:: Hiding part of the buffer text.
* Selective Display:: Hiding part of the buffer text (the old way).
* Temporary Displays:: Displays that go away automatically.
@@ -184,7 +183,7 @@ This variable is automatically buffer-local in every buffer.
@cindex error display
@cindex echo area
-The @dfn{echo area} is used for displaying error messages
+ The @dfn{echo area} is used for displaying error messages
(@pxref{Errors}), for messages made with the @code{message} primitive,
and for echoing keystrokes. It is not the same as the minibuffer,
despite 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
the minibuffer for use of that screen space (@pxref{Minibuffer,, The
Minibuffer, emacs, The GNU Emacs Manual}).
-You can write output in the echo area by using the Lisp printing
-functions with @code{t} as the stream (@pxref{Output Functions}), or as
-follows:
+ You can write output in the echo area by using the Lisp printing
+functions with @code{t} as the stream (@pxref{Output Functions}), or
+explicitly.
+
+@menu
+* Displaying Messages:: Explicitly displaying text in the echo area.
+* Progress:: Informing user about progress of a long operation.
+* Logging Messages:: Echo area messages are logged for the user.
+* Echo Area Customization:: Controlling the echo area.
+@end menu
+
+@node Displaying Messages
+@subsection Displaying Messages in the Echo Area
+
+ This section describes the functions for explicitly producing echo
+area messages. Many other Emacs features display messages there, too.
@defun message string &rest arguments
This 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
its normal size. If the minibuffer is active, this brings the
minibuffer contents back onto the screen immediately.
-@vindex message-truncate-lines
-Normally, displaying a long message resizes the echo area to display
-the entire message. But if the variable @code{message-truncate-lines}
-is non-@code{nil}, the echo area does not resize, and the message is
-truncated to fit it, as in Emacs 20 and before.
-
@example
@group
(message "Minibuffer depth is %d."
@@ -241,12 +247,6 @@ To automatically display a message in the echo area or in a pop-buffer,
depending on its size, use @code{display-message-or-buffer} (see below).
@end defun
-@defopt max-mini-window-height
-This variable specifies the maximum height for resizing minibuffer
-windows. If a float, it specifies a fraction of the height of the
-frame. If an integer, it specifies a number of lines.
-@end defopt
-
@tindex with-temp-message
@defmac with-temp-message message &rest body
This construct displays a message in the echo area temporarily, during
@@ -303,23 +303,130 @@ This function returns the message currently being displayed in the
echo area, or @code{nil} if there is none.
@end defun
-@defvar cursor-in-echo-area
-This variable controls where the cursor appears when a message is
-displayed in the echo area. If it is non-@code{nil}, then the cursor
-appears at the end of the message. Otherwise, the cursor appears at
-point---not in the echo area at all.
+@node Progress
+@subsection Reporting Operation Progress
+@cindex progress reporting
-The value is normally @code{nil}; Lisp programs bind it to @code{t}
-for brief periods of time.
-@end defvar
+ When an operation can take a while to finish, you should inform the
+user about the progress it makes. This way the user can estimate
+remaining time and clearly see that Emacs is busy working, not hung.
-@defvar echo-area-clear-hook
-This normal hook is run whenever the echo area is cleared---either by
-@code{(message nil)} or for any other reason.
-@end defvar
+ Functions listed in this section provide simple and efficient way of
+reporting operation progress. Here is a working example that does
+nothing useful:
+
+@smallexample
+(let ((progress-reporter
+ (make-progress-reporter "Collecting mana for Emacs..."
+ 0 500)))
+ (dotimes (k 500)
+ (sit-for 0.01)
+ (progress-reporter-update progress-reporter k))
+ (progress-reporter-done progress-reporter))
+@end smallexample
+
+@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
+This function creates and returns a @dfn{progress reporter}---an
+object you will use as an argument for all other functions listed
+here. The idea is to precompute as much data as possible to make
+progress reporting very fast.
+
+When this progress reporter is subsequently used, it will display
+@var{message} in the echo area, followed by progress percentage.
+@var{message} is treated as a simple string. If you need it to depend
+on a filename, for instance, use @code{format} before calling this
+function.
+
+@var{min-value} and @var{max-value} arguments stand for starting and
+final states of your operation. For instance, if you scan a buffer,
+they should be the results of @code{point-min} and @code{point-max}
+correspondingly. It is required that @var{max-value} is greater than
+@var{min-value}. If you create progress reporter when some part of
+the operation has already been completed, then specify
+@var{current-value} argument. But normally you should omit it or set
+it to @code{nil}---it will default to @var{min-value} then.
+
+Remaining arguments control the rate of echo area updates. Progress
+reporter will wait for at least @var{min-change} more percents of the
+operation to be completed before printing next message.
+@var{min-time} specifies the minimum time in seconds to pass between
+successive prints. It can be fractional. Depending on Emacs and
+system capabilities, progress reporter may or may not respect this
+last argument or do it with varying precision. Default value for
+@var{min-change} is 1 (one percent), for @var{min-time}---0.2
+(seconds.)
-Almost all the messages displayed in the echo area are also recorded
-in the @samp{*Messages*} buffer.
+This function calls @code{progress-reporter-update}, so the first
+message is printed immediately.
+@end defun
+
+@defun progress-reporter-update reporter value
+This function does the main work of reporting progress of your
+operation. It displays the message of @var{reporter}, followed by
+progress percentage determined by @var{value}. If percentage is zero,
+or close enough according to the @var{min-change} and @var{min-time}
+arguments, then it is omitted from the output.
+
+@var{reporter} must be the result of a call to
+@code{make-progress-reporter}. @var{value} specifies the current
+state of your operation and must be between @var{min-value} and
+@var{max-value} (inclusive) as passed to
+@code{make-progress-reporter}. For instance, if you scan a buffer,
+then @var{value} should be the result of a call to @code{point}.
+
+This function respects @var{min-change} and @var{min-time} as passed
+to @code{make-progress-reporter} and so does not output new messages
+on every invocation. It is thus very fast and normally you should not
+try to reduce the number of calls to it: resulting overhead will most
+likely negate your effort.
+@end defun
+
+@defun progress-reporter-force-update reporter value &optional new-message
+This function is similar to @code{progress-reporter-update} except
+that it prints a message in the echo area unconditionally.
+
+The first two arguments have the same meaning as for
+@code{progress-reporter-update}. Optional @var{new-message} allows
+you to change the message of the @var{reporter}. Since this functions
+always updates the echo area, such a change will be immediately
+presented to the user.
+@end defun
+
+@defun progress-reporter-done reporter
+This function should be called when the operation is finished. It
+prints the message of @var{reporter} followed by word ``done'' in the
+echo area.
+
+You should always call this function and not hope for
+@code{progress-reporter-update} to print ``100%.'' Firstly, it may
+never print it, there are many good reasons for this not to happen.
+Secondly, ``done'' is more explicit.
+@end defun
+
+@defmac dotimes-with-progress-reporter (var count [result]) message body...
+This is a convenience macro that works the same way as @code{dotimes}
+does, but also reports loop progress using the functions described
+above. It allows you to save some typing.
+
+You can rewrite the example in the beginning of this node using
+this macro this way:
+
+@example
+(dotimes-with-progress-reporter
+ (k 500)
+ "Collecting some mana for Emacs..."
+ (sit-for 0.01))
+@end example
+@end defmac
+
+@node Logging Messages
+@subsection Logging Messages in @samp{*Messages*}
+@cindex logging echo-area messages
+
+ Almost all the messages displayed in the echo area are also recorded
+in the @samp{*Messages*} buffer so that the user can refer back to
+them. This includes all the messages that are output with
+@code{message}.
@defopt message-log-max
This 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:
@end example
@end defopt
+ To make @samp{*Messages*} more convenient for the user, the logging
+facility combines successive identical messages. It also combines
+successive related messages for the sake of two cases: question
+followed by answer, and a series of progress messages.
+
+ A ``question followed by an answer'' means two messages like the
+ones produced by @code{y-or-n-p}: the first is @samp{@var{question}},
+and the second is @samp{@var{question}...@var{answer}}. The first
+message conveys no additional information beyond what's in the second,
+so logging the second message discards the first from the log.
+
+ A ``series of progress messages'' means successive messages like
+those produced by @code{make-progress-reporter}. They have the form
+@samp{@var{base}...@var{how-far}}, where @var{base} is the same each
+time, while @var{how-far} varies. Logging each message in the series
+discards the previous one, provided they are consecutive.
+
+ The functions @code{make-progress-reporter} and @code{y-or-n-p}
+don't have to do anything special to activate the message log
+combination feature. It operates whenever two consecutive messages
+are logged that share a common prefix ending in @samp{...}.
+
+@node Echo Area Customization
+@subsection Echo Area Customization
+
+ These variables control details of how the echo area works.
+
+@defvar cursor-in-echo-area
+This variable controls where the cursor appears when a message is
+displayed in the echo area. If it is non-@code{nil}, then the cursor
+appears at the end of the message. Otherwise, the cursor appears at
+point---not in the echo area at all.
+
+The value is normally @code{nil}; Lisp programs bind it to @code{t}
+for brief periods of time.
+@end defvar
+
+@defvar echo-area-clear-hook
+This normal hook is run whenever the echo area is cleared---either by
+@code{(message nil)} or for any other reason.
+@end defvar
+
@defvar echo-keystrokes
This variable determines how much time should elapse before command
characters echo. Its value must be an integer or floating point number,
@@ -346,6 +495,19 @@ sequence are echoed immediately.)
If the value is zero, then command input is not echoed.
@end defvar
+@defopt max-mini-window-height
+This variable specifies the maximum height for resizing minibuffer
+windows. If a float, it specifies a fraction of the height of the
+frame. If an integer, it specifies a number of lines.
+@end defopt
+
+@defvar message-truncate-lines
+Normally, displaying a long message resizes the echo area to display
+the entire message. But if the variable @code{message-truncate-lines}
+is non-@code{nil}, the echo area does not resize, and the message is
+truncated to fit it, as in Emacs 20 and before.
+@end defvar
+
@node Warnings
@section Reporting Warnings
@cindex warnings
@@ -535,122 +697,6 @@ symbols. If it matches the first few elements in a warning type, then
that warning is not logged.
@end defopt
-@node Progress
-@section Reporting Operation Progress
-@cindex progress reporting
-
- When an operation can take a while to finish, you should inform the
-user about the progress it makes. This way the user can estimate
-remaining time and clearly see that Emacs is busy working, not hung.
-
- Functions listed in this section provide simple and efficient way of
-reporting operation progress. Here is a working example that does
-nothing useful:
-
-@smallexample
-(let ((progress-reporter
- (make-progress-reporter "Collecting mana for Emacs..."
- 0 500)))
- (dotimes (k 500)
- (sit-for 0.01)
- (progress-reporter-update progress-reporter k))
- (progress-reporter-done progress-reporter))
-@end smallexample
-
-@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
-This function creates and returns a @dfn{progress reporter}---an
-object you will use as an argument for all other functions listed
-here. The idea is to precompute as much data as possible to make
-progress reporting very fast.
-
-When this progress reporter is subsequently used, it will display
-@var{message} in the echo area, followed by progress percentage.
-@var{message} is treated as a simple string. If you need it to depend
-on a filename, for instance, use @code{format} before calling this
-function.
-
-@var{min-value} and @var{max-value} arguments stand for starting and
-final states of your operation. For instance, if you scan a buffer,
-they should be the results of @code{point-min} and @code{point-max}
-correspondingly. It is required that @var{max-value} is greater than
-@var{min-value}. If you create progress reporter when some part of
-the operation has already been completed, then specify
-@var{current-value} argument. But normally you should omit it or set
-it to @code{nil}---it will default to @var{min-value} then.
-
-Remaining arguments control the rate of echo area updates. Progress
-reporter will wait for at least @var{min-change} more percents of the
-operation to be completed before printing next message.
-@var{min-time} specifies the minimum time in seconds to pass between
-successive prints. It can be fractional. Depending on Emacs and
-system capabilities, progress reporter may or may not respect this
-last argument or do it with varying precision. Default value for
-@var{min-change} is 1 (one percent), for @var{min-time}---0.2
-(seconds.)
-
-This function calls @code{progress-reporter-update}, so the first
-message is printed immediately.
-@end defun
-
-@defun progress-reporter-update reporter value
-This function does the main work of reporting progress of your
-operation. It displays the message of @var{reporter}, followed by
-progress percentage determined by @var{value}. If percentage is zero,
-or close enough according to the @var{min-change} and @var{min-time}
-arguments, then it is omitted from the output.
-
-@var{reporter} must be the result of a call to
-@code{make-progress-reporter}. @var{value} specifies the current
-state of your operation and must be between @var{min-value} and
-@var{max-value} (inclusive) as passed to
-@code{make-progress-reporter}. For instance, if you scan a buffer,
-then @var{value} should be the result of a call to @code{point}.
-
-This function respects @var{min-change} and @var{min-time} as passed
-to @code{make-progress-reporter} and so does not output new messages
-on every invocation. It is thus very fast and normally you should not
-try to reduce the number of calls to it: resulting overhead will most
-likely negate your effort.
-@end defun
-
-@defun progress-reporter-force-update reporter value &optional new-message
-This function is similar to @code{progress-reporter-update} except
-that it prints a message in the echo area unconditionally.
-
-The first two arguments have the same meaning as for
-@code{progress-reporter-update}. Optional @var{new-message} allows
-you to change the message of the @var{reporter}. Since this functions
-always updates the echo area, such a change will be immediately
-presented to the user.
-@end defun
-
-@defun progress-reporter-done reporter
-This function should be called when the operation is finished. It
-prints the message of @var{reporter} followed by word ``done'' in the
-echo area.
-
-You should always call this function and not hope for
-@code{progress-reporter-update} to print ``100%.'' Firstly, it may
-never print it, there are many good reasons for this not to happen.
-Secondly, ``done'' is more explicit.
-@end defun
-
-@defmac dotimes-with-progress-reporter (var count [result]) message body...
-This is a convenience macro that works the same way as @code{dotimes}
-does, but also reports loop progress using the functions described
-above. It allows you to save some typing.
-
-You can rewrite the example in the beginning of this node using
-this macro this way:
-
-@example
-(dotimes-with-progress-reporter
- (k 500)
- "Collecting some mana for Emacs..."
- (sit-for 0.01))
-@end example
-@end defmac
-
@node Invisible Text
@section Invisible Text
@@ -1628,7 +1674,7 @@ particular parts of the text or the frame.
@cindex face id
Each face has its own @dfn{face number}, which distinguishes faces at
low levels within Emacs. However, for most purposes, you refer to
-faces in Lisp programs by the symbol that names them.
+faces in Lisp programs by the symbols that name them.
@defun facep object
This 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
* Refresh Screen:: Clearing the screen and redrawing everything on it.
* Forcing Redisplay:: Forcing redisplay.
* Truncation:: Folding or wrapping long text lines.
-* The Echo Area:: Where messages are displayed.
+* The Echo Area:: Displaying messages at the bottom of the screen.
* Warnings:: Displaying warning messages for the user.
-* Progress:: Informing user about progress of a long operation.
* Invisible Text:: Hiding part of the buffer text.
-* Selective Display:: Hiding part of the buffer text.
+* Selective Display:: Hiding part of the buffer text (the old way).
* Temporary Displays:: Displays that go away automatically.
* Overlays:: Use overlays to highlight parts of the buffer.
* 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}.
Here we describe the functions for creating keymaps.
-@c ??? This should come after make-sparse-keymap
-@defun make-keymap &optional prompt
-This function creates and returns a new full keymap. That keymap
-contains a char-table (@pxref{Char-Tables}) with slots for all
-characters without modifiers. The new keymap initially binds all
-these characters to @code{nil}, and does not bind any other kind of
-event.
+@defun make-sparse-keymap &optional prompt
+This function creates and returns a new sparse keymap with no entries.
+(A sparse keymap is the kind of keymap you usually want.) The new
+keymap does not contain a char-table, unlike @code{make-keymap}, and
+does not bind any events.
@example
@group
-(make-keymap)
- @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
+(make-sparse-keymap)
+ @result{} (keymap)
@end group
@end example
@@ -277,18 +275,23 @@ the keymap. The prompt string should be provided for menu keymaps
(@pxref{Defining Menus}).
@end defun
-@defun make-sparse-keymap &optional prompt
-This function creates and returns a new sparse keymap with no entries.
-The new keymap does not contain a char-table, unlike @code{make-keymap},
-and does not bind any events. The argument @var{prompt} specifies a
-prompt string, as in @code{make-keymap}.
+@defun make-keymap &optional prompt
+This function creates and returns a new full keymap. That keymap
+contains a char-table (@pxref{Char-Tables}) with slots for all
+characters without modifiers. The new keymap initially binds all
+these characters to @code{nil}, and does not bind any other kind of
+event. The argument @var{prompt} specifies a
+prompt string, as in @code{make-sparse-keymap}.
@example
@group
-(make-sparse-keymap)
- @result{} (keymap)
+(make-keymap)
+ @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
@end group
@end example
+
+A full keymap is more efficient than a sparse keymap when it holds
+lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap
@@ -1435,15 +1438,15 @@ input. One way to do this is by using an appropriate input method
construct the key sequence string using @code{multibyte-char-to-unibyte}
or @code{string-make-unibyte} (@pxref{Converting Representations}).
-@deffn Command global-set-key key definition
+@deffn Command global-set-key key binding
This function sets the binding of @var{key} in the current global map
-to @var{definition}.
+to @var{binding}.
@smallexample
@group
-(global-set-key @var{key} @var{definition})
+(global-set-key @var{key} @var{binding})
@equiv{}
-(define-key (current-global-map) @var{key} @var{definition})
+(define-key (current-global-map) @var{key} @var{binding})
@end group
@end smallexample
@end deffn
@@ -1479,15 +1482,15 @@ This function is implemented simply using @code{define-key}:
@end smallexample
@end deffn
-@deffn Command local-set-key key definition
+@deffn Command local-set-key key binding
This function sets the binding of @var{key} in the current local
-keymap to @var{definition}.
+keymap to @var{binding}.
@smallexample
@group
-(local-set-key @var{key} @var{definition})
+(local-set-key @var{key} @var{binding})
@equiv{}
-(define-key (current-local-map) @var{key} @var{definition})
+(define-key (current-local-map) @var{key} @var{binding})
@end group
@end smallexample
@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
being modified by a single primitive, you can't predict how many times
the function will be called.
+If these functions modify the buffer, they should bind
+@code{inhibit-modification-hooks} to @code{t} around doing so, to
+avoid confusing the internal mechanism that calls these hooks.
+
@item insert-in-front-hooks
@itemx insert-behind-hooks
@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
declared equivalently in @file{cus-start.el}.} or by the first character
of their @code{variable-documentation} property. If the property exists
and is a string, and its first character is @samp{*}, then the variable
-is a user option.
+is a user option. Aliases of user options are also user options.
@end defun
@kindex variable-interactive
@@ -909,18 +909,25 @@ This function sets the variable @var{symbol} by inserting
position specified by @var{order}. If @var{element} is already a
member of the list, its position in the list is adjusted according
to @var{order}. Membership is tested using @code{eq}.
-The valued returned is the resulting list, whether updated or not.
+This function returns the resulting list, whether updated or not.
-The @var{order} is a number, and the elements on list are sorted in
-increasing numerical order. Elements without a numeric list order are
-placed at the end of @var{symbol}.
+The @var{order} is typically a number (integer or float), and the
+elements of the list are sorted in non-decreasing numerical order.
+
+@var{order} may also be omitted or @code{nil}. Then the numeric order
+of @var{element} stays unchanged if it already has one; otherwise,
+@var{element} has no numeric order. Elements without a numeric list
+order are placed at the end of the list, in no particular order.
+
+Any other value for @var{order} removes the numeric order of @var{element}
+if it already has one; otherwise, it is equivalent to @code{nil}.
The argument @var{symbol} is not implicitly quoted;
@code{add-to-ordered-list} is an ordinary function, like @code{set}
and unlike @code{setq}. Quote the argument yourself if that is what
you want.
-The ordering information is stored in an alist on @var{symbol}'s
+The ordering information is stored in a hash table on @var{symbol}'s
@code{list-order} property.
@end defun
@@ -945,11 +952,11 @@ Here's a scenario showing how to use @code{add-to-ordered-list}:
(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.}
@result{} (a c b d)
-(add-to-ordered-list 'foo 'b 2) ;; @r{Move @code{b}.}
- @result{} (a b c d)
+(add-to-ordered-list 'foo 'e) ;; @r{Add @code{e}}.
+ @result{} (a c b e d)
foo ;; @r{@code{foo} was changed.}
- @result{} (a b c d)
+ @result{} (a c b e d)
@end example
@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.
@end defopt
@defopt scroll-preserve-screen-position
-If this option is non-@code{nil}, the scroll functions move point so
-that the vertical position of the cursor is unchanged, when that is
-possible.
+If this option is @code{t}, scrolling which would move the current
+point position out of the window chooses the new position of point
+so that the vertical position of the cursor is unchanged, if possible.
+
+If it is non-@code{nil} and not @code{t}, then the scrolling functions
+always preserve the vertical position of point, if possible.
@end defopt
@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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
+2005-07-03 Richard M. Stallman <rms@gnu.org>
+
+ * flymake.texi (Example -- Configuring a tool called directly):
+ Update name of flymake-build-relative-filename.
+
+2005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
+
+2005-06-29 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi: Version 3.12
+
2005-06-24 Richard M. Stallman <rms@gnu.org>
* display.texi (Text Display): Change index entries.
@@ -422,8 +435,7 @@
2005-04-12 Luc Teirlinck <teirllm@auburn.edu>
- * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by
- default.
+ * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default.
2005-04-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
@@ -451,8 +463,7 @@
2005-04-10 Luc Teirlinck <teirllm@auburn.edu>
* rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
- (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric
- argument.
+ (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric arg.
(Rmail Inbox): Give full name of `rmail-primary-inbox-list'.
(Rmail Output): Clarify which statements apply to `o', `C-o' and
`w', respectively.
@@ -462,7 +473,7 @@
2005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
- * xresources.texi (Lucid Resources): Added fonSet resource.
+ * xresources.texi (Lucid Resources): Add fonSet resource.
2005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
@@ -570,8 +581,7 @@
* programs.texi (ForIndent Vars): `fortran-if-indent' does other
constructs as well.
- (Fortran Motion): Add fortran-end-of-block,
- fortran-beginning-of-block.
+ (Fortran Motion): Add fortran-end-of-block, fortran-beginning-of-block.
2005-03-29 Kenichi Handa <handa@m17n.org>
@@ -636,8 +646,8 @@
(Special Diary Entries, Importing Diary): Change some xrefs to
point to emacs-xtra rather than elisp.
- * emacs-xtra.texi (Calendar Customizing): Move
- view-diary-entries-initially, view-calendar-holidays-initially,
+ * emacs-xtra.texi (Calendar Customizing):
+ Move view-diary-entries-initially, view-calendar-holidays-initially,
mark-diary-entries-in-calendar, mark-holidays-in-calendar to main
Emacs Manual.
(Appt Customizing): Merge entire section into main Emacs Manual.
@@ -683,8 +693,8 @@
2005-03-26 Jay Belanger <belanger@truman.edu>
- * calc.texi (Simplifying Formulas, Rewrite Rules): Change
- description of top and bottom of fraction.
+ * calc.texi (Simplifying Formulas, Rewrite Rules):
+ Change description of top and bottom of fraction.
(Modulo Forms): Move description of how to create modulo forms to
earlier in the section.
(Fraction Mode): Suggest using : to get a fraction by dividing.
@@ -730,8 +740,8 @@
2005-03-25 Werner Lemberg <wl@gnu.org>
- * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi: Replace
- `legal' with `valid'.
+ * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi:
+ Replace `legal' with `valid'.
2005-03-25 Werner Lemberg <wl@gnu.org>
@@ -740,7 +750,7 @@
2005-03-24 Jay Belanger <belanger@truman.edu>
* calc.texi (General Mode Commands)
- (Mode Settings in Embedded Mode): Added some explanation of
+ (Mode Settings in Embedded Mode): Add some explanation of
recording mode settings.
2005-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}:
(defun flymake-perl-init (buffer)
(let* ((temp-file (flymake-init-create-temp-buffer-copy
buffer 'flymake-create-temp-inplace))
- (local-file (concat (flymake-build-relative-path
+ (local-file (concat (flymake-build-relative-filename
(file-name-directory
(buffer-file-name
(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.
@item gnus-nocem-verifyer
@vindex gnus-nocem-verifyer
-@findex mc-verify
+@findex pgg-verify
This should be a function for verifying that the NoCeM issuer is who she
-says she is. The default is @code{mc-verify}, which is a Mailcrypt
-function. If this is too slow and you don't care for verification
-(which may be dangerous), you can set this variable to @code{nil}.
-
-If you want signed NoCeM messages to be verified and unsigned messages
-not to be verified (but used anyway), you could do something like:
-
-@lisp
-(setq gnus-nocem-verifyer 'my-gnus-mc-verify)
-
-(defun my-gnus-mc-verify ()
- (not (eq 'forged
- (ignore-errors
- (if (mc-verify)
- t
- 'forged)))))
-@end lisp
-
-This might be dangerous, though.
+says she is. The default is @code{pgg-verify}, which returns
+non-@code{nil} if the verification is successful, otherwise (including
+the case the NoCeM message was not signed) returns @code{nil}. If this
+is too slow and you don't care for verification (which may be dangerous),
+you can set this variable to @code{nil}.
+
+Formerly the default was @code{mc-verify}, which is a Mailcrypt
+function. While you can still use it, you can change it into
+@code{pgg-verify} running with GnuPG if you are willing to add the
+@acronym{PGP} public keys to GnuPG's keyring.
@item gnus-nocem-directory
@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 @@
@setfilename ../info/org
@settitle Org Mode Manual
-@set VERSION 3.11
-@set DATE June 2005
+@set VERSION 3.13
+@set DATE July 2005
@dircategory Emacs
@direntry
@@ -109,8 +109,16 @@ Document Structure
Tables
* Built-in table editor:: Simple tables
-* table.el:: Complex tables
+* Table calculations:: Compute a field from other fields
* orgtbl-mode:: The table editor as minor mode
+* table.el:: Complex tables
+
+Calculations in tables
+
+* Formula syntax:: How to write a formula
+* Applying a formula:: How to get a formula executed
+* Recalculation:: Re-applying all formulas in a table
+* Summing:: Summing columns and rows
Hyperlinks
@@ -203,6 +211,7 @@ different levels and in different ways, for example
@example
@r{@bullet{} as an outline extension with visibility cycling and structure editing}
@r{@bullet{} as an ASCII system and table editor to take structured notes}
+@r{@bullet{} as an ASCII table editor with some spreadsheet-like capabilities}
@r{@bullet{} as a simple hypertext system, with HTML export}
@r{@bullet{} as a TODO list editor}
@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.
Show all.
@end table
-When Emacs firsts visits a Org-mode file, the global state is set to
+When Emacs first visits an Org-mode file, the global state is set to
OVERVIEW, i.e. only the top level headlines are visible. This can be
configured through the variable @code{org-startup-folded}, or on a
per-file basis by adding one of the following lines anywhere in the
@@ -435,9 +444,9 @@ visible.
@cindex promotion, of subtrees
@cindex demotion, of subtrees
@cindex subtree, cut and paste
-@cindex pasting, subtrees
-@cindex cutting, subtrees
-@cindex copying, subtrees
+@cindex pasting, of subtrees
+@cindex cutting, of subtrees
+@cindex copying, of subtrees
@table @kbd
@kindex M-@key{RET}
@@ -493,11 +502,11 @@ functionality.
@section Archiving
@cindex archiving
-When an project represented by a (sub)tree is finished, you may want
-to move the tree to an Archive place, either in the same file under a
+When a project represented by a (sub)tree is finished, you may want
+to move the tree to an archive place, either in the same file under a
special top-level heading, or even to a different file.
@table @kbd
-@kindex @kbd{C-c $}
+@kindex C-c $
@item @kbd{C-c $}
Archive the subtree starting at the cursor position to the location
given by @code{org-archive-location}.
@@ -524,7 +533,7 @@ An important feature of Org-mode is the ability to construct
sparse tree means that the entire document is folded as much as
possible, but the selected information is made visible along with the
headline structure above it@footnote{See also the variable
-@code{org-show-following-heading}}. Just try it out and you will see
+@code{org-show-following-heading}.}. Just try it out and you will see
immediately how it works.
Org-mode contains several commands creating such trees. The most
@@ -549,7 +558,7 @@ C-v} creates a sparse TODO tree (@pxref{TODO basics}).
@cindex visible text, printing
To print a sparse tree, you can use the Emacs command
@code{ps-print-buffer-with-faces} which does not print invisible parts
-of the document @footnote{this does not work under XEmacs, because
+of the document @footnote{This does not work under XEmacs, because
XEmacs uses selective display for outlining, not text properties}.
Or you can use the command @kbd{C-c C-x v} to copy the visible part of
the document to another file (extension @file{.txt}) which then can be
@@ -559,18 +568,18 @@ printed in any desired way.
@chapter Tables
@cindex tables
-For taking notes, tables are an essential tool because they allow
-immediate and clear structuring of data. Org-mode has a very fast and
-intuitive table editor built-in. More complex tables can be created
-with the Emacs table.el package.
+Org-mode has a very fast and intuitive table editor built-in.
+Spreadsheet-like calculations are supported in connection with the
+Emacs @file{calc} package.
@menu
* Built-in table editor:: Simple tables
-* table.el:: Complex tables
+* Table calculations:: Compute a field from other fields
* orgtbl-mode:: The table editor as minor mode
+* table.el:: Complex tables
@end menu
-@node Built-in table editor, table.el, Tables, Tables
+@node Built-in table editor, Table calculations, Tables, Tables
@section The built-in table editor
@cindex table editor, builtin
@@ -587,13 +596,13 @@ like this:
@end example
A table is re-aligned automatically each time you press @key{TAB} or
-@key{RET} inside the table. @key{TAB} also moves to the next field
-(@key{RET} to the next row) and creates new table rows at the end of the
-table or before horizontal lines. The indentation of the table is set
-by the first line. Any line starting with @samp{|-} is considered as a
-horizontal separator line and will be expanded on the next re-align to
-span the whole table width. So, to create the above table, you would
-only type
+@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
+the next field (@key{RET} to the next row) and creates new table rows
+at the end of the table or before horizontal lines. The indentation
+of the table is set by the first line. Any line starting with
+@samp{|-} is considered as a horizontal separator line and will be
+expanded on the next re-align to span the whole table width. So, to
+create the above table, you would only type
@example
|Name|Phone|Age
@@ -605,10 +614,9 @@ fields.
@table @kbd
@tsubheading{Creation and conversion}
-@kindex C-c C-c
-@item C-c C-c
-Recognize @file{table.el} table. Works when the cursor is in a
-table.el table
+@item M-x org-table-create
+Creates an empty Org-mode table. However, it is much easier to just
+start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
@kindex C-c C-c
@item C-c C-c
@@ -619,10 +627,6 @@ separated. If not, lines are split at whitespace into fields. You
can use a prefix argument to indicate how many consecutive spaces are
at least required to indicate a field separator (default: just one).
-@item M-x org-table-create
-Creates an empty Org-mode table. However, it is much easier to just
-start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
-
@tsubheading{Re-aligning and field motion}
@kindex C-c C-c
@item C-c C-c
@@ -635,7 +639,7 @@ necessary.
@kindex S-@key{TAB}
@item S-@key{TAB}
-Move to previous field.
+Re-align, move to previous field.
@kindex @key{RET}
@item @key{RET}
@@ -674,19 +678,19 @@ Insert a new row above (with arg: below) the current row.
@kindex C-c -
@item C-c -
-Insert a horizontal line below current row. With prefix arg, line is
-created above the current line.
+Insert a horizontal line below current row. With prefix arg, the line
+is created above the current line.
@tsubheading{Regions}
@kindex C-c C-h M-w
@item C-c C-h M-w
-Copy an rectangular region from a table to a special clipboard. Point
+Copy a rectangular region from a table to a special clipboard. Point
and mark determine edge fields of the rectangle. The process ignores
horizontal separator lines.
@kindex C-c C-h C-w
@item C-c C-h C-w
-Copy an rectangular region from a table to a special clipboard, and
-blank all fields in the rectangle.
+Copy a rectangular region from a table to a special clipboard, and
+blank all fields in the rectangle. So this is the ``cut'' operation.
@kindex C-c C-h C-y
@item C-c C-h C-y
Paste a rectangular region into a table.
@@ -707,6 +711,29 @@ current field gets blank, and the content is appended to the field
above.
@tsubheading{Calculations}
+@cindex formula, in tables
+@cindex calculations, in tables
+@kindex C-c =
+@item C-c =
+Replace current field with the result of a formula. When called with a
+@kbd{C-u} prefix, apply the equation in the current field and down
+through the current column to a horizonal separator line or the end of
+the table. For details, see @ref{Table calculations}.
+
+@kindex C-c *
+@item C-c *
+Recalculate the current row by applying the stored formulas from left
+to right. When called with a @kbd{C-u} prefix, recalculate the
+entire table, starting with the first non-header line (i.e. below the
+first horizontal separator line). For details, see @ref{Table calculations}.
+
+@kindex C-#
+@item C-#
+Rotate the recalculation mark in first column through the states
+@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
+these marks see @ref{Table calculations}. When there is an active
+region, change all marks in the region.
+
@kindex C-c ?
@item C-c ?
Which table column is the cursor in? Displays number >0 in echo
@@ -718,7 +745,7 @@ area.
@kindex C-c +
@item C-c +
Sum the numbers in the current column, or in the rectangle defined by
-the active region. The result is displayed in the echo area and can
+the active region. The result is shown in the echo area and can
be inserted with @kbd{C-y}.
@kindex S-@key{RET}
@@ -730,23 +757,12 @@ along with it. Depending on the variable
incremented during copy. This key is also used by CUA-mode
(@pxref{Interaction}).
-@cindex formula, in tables
-@cindex calculations, in tables
-@kindex C-c =
-@item C-c =
-Replace current field with the result of a formula. Requires the
-Emacs calc package. The formula can access the current field with
-@samp{$}, and the other fields in the current row
-with @samp{$1}, @samp{$2},... For details see the documentation of the
-command @command{org-table-eval-formula}.
-
@tsubheading{Miscellaneous}
@kindex C-c |
@item C-c |
Toggle the visibility of vertical lines in tables. The lines are
still there, only made invisible with a text property. Any @samp{|}
added by hand will become invisible on the next align.
-Typographically it is good style to have no vertical lines in tables.
@item M-x org-table-import
Import a file as a table. The table should be TAB- or whitespace
@@ -771,23 +787,237 @@ it off with
@noindent The only table command which then still works is
@kbd{C-c C-c} to do a manual re-align.
-@node table.el, orgtbl-mode, Built-in table editor, Tables
+@node Table calculations, orgtbl-mode, Built-in table editor, Tables
+@section Calculations in tables
+@cindex calculations, in tables
+
+While the Org-mode table editor misses many features of a full
+spreadsheet, it nevertheless has very useful capabilities to compute
+fields. In horizontal direction, it can use complex expressions to
+compute a field from other fields @emph{in the same row}, using named
+columns, constants and parameters. The Emacs @file{calc} package is
+required for this feature to work. In vertical direction, only
+summing is supported.
+
+@menu
+* Formula syntax:: How to write a formula
+* Applying a formula:: How to get a formula executed
+* Recalculation:: Re-applying all formulas in a table
+* Summing:: Summing columns and rows
+@end menu
+
+@node Formula syntax, Applying a formula, Table calculations, Table calculations
+@subsection Formula syntax
+
+A formula for horizontal computations can be any algebraic expression
+understood by the Emacs @file{calc} package. Before evaluation,
+variable substitution takes place: @samp{$} is replaced by the field
+the cursor is currently in, and $1..$n reference the fields in the
+current row. @samp{$name} is interpreted as the name of a column,
+parameter or constant. Constants are defined globally through the
+variable @code{org-table-formula-constants}. If you have the
+@file{constants.el} package, it will also be used to resolve
+constants, including natural constants like @samp{$k} for Plancks
+constant, units like @samp{$km} for kilometers. Column names and
+parameters can be specified in special table lines. These are
+described below, see @ref{Recalculation}.
+
+A formula can contain an optional mode string after a semicolon. This
+string consists of flags to influence calc's modes@footnote{By
+default, Org-mode uses the standard calc modes (precision 12, angular
+units degrees, fraction and symbolic modes off). However, the display
+format which has been changed to @code{(float 5)} to keep tables
+compact. The default settings can be configured using the variable
+@code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
+switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
+@samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
+or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
+and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
+respectively. In addition, you may provide a @code{printf} specifier
+to reformat the final result. A few examples:
+@example
+ $1+$2 @r{Sum of first and second field}
+ $1+$2;%.2f @r{Same, format result to two decimals}
+ exp($2)+exp($1) @r{Math functions can be used}
+ $;%.1f @r{Reformat current cell to 1 decimal}
+ ($3-32)*5/9 @r{degrees F -> C conversion}
+ $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
+ tan($1);Dp3s1 @r{compute in degrees, precision 3, display SCI 1}
+ vmean($2..$7) @r{compute column range mean, using vector function}
+ taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
+@end example
+
+@node Applying a formula, Recalculation, Formula syntax, Table calculations
+@subsection Applying a formula
+
+To apply a formula to a field, type it directly into the field,
+preceded by an equal sign, like @samp{=$1+$2}. When you press
+@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
+field, the formula will be evaluated and replaced with the result. If
+the field contains only @samp{=}, the formula most recently applied
+anywhere in the @emph{same column} will be used.
+
+For each column, Org-mode will remember the most recently used
+formula. The information is stored in a special line directly below
+the table. When adding/deleting/moving columns with the appropriate
+commands, the stored equations will be modified accordingly. When a
+column used in a calculation is removed, references to this column
+become invalid and will cause an error upon applying the equation.
+
+Instead of typing an equation into the field, you may also use the
+command @kbd{C-c =}. It prompts for a formula (with default taken
+from the @samp{#+TBLFM:} line) and applies it to the current field.
+If you use a prefix argument (i.e. @kbd{C-u C-c =}), the formula will
+be applied to the current field and down to the next separator line
+or the end of the table. A numerical prefix will apply it to that
+many fields in the current column.
+
+When the evaluation of a formula leads to an error, the field content
+becomes the string @samp{#ERROR}. If you would like see what is going
+on during variable substitution and calculation in order to find a
+bug, turn on formula debugging in the menu and repeat the calculation
+by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
+Detailed information will be displayed.
+
+@node Recalculation, Summing, Applying a formula, Table calculations
+@subsection Recalculation
+
+To recompute all the fields in a line, use the command @kbd{C-c *}.
+It re-applies all stored equations to the current row, from left to
+right. With a @kbd{C-u} prefix, this will be done to every line in
+the table, so use this command it you want to make sure the entire
+table is up-to-date. A more automatic way of recalculating the
+current line requires marking the line: If the first column of a row
+contains only @samp{#}, the row will be re-computed with every
+@key{TAB}, @key{RET}, and @kbd{C-c C-c} in this row. Here is an
+example of a table that collects exam results of students, with some
+rows activated for semi-automatic computations.
+
+@example
+@group
+|---+---------+--------+--------+--------+-------+------|
+| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
+|---+---------+--------+--------+--------+-------+------|
+| ! | | P1 | P2 | P3 | Tot | |
+| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
+| ^ | | m1 | m2 | m3 | mt | |
+|---+---------+--------+--------+--------+-------+------|
+| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
+| # | Sara | 7 | 14 | 19 | 40 | 8.0 |
+| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
+|---+---------+--------+--------+--------+-------+------|
+| $ | max=50 | | | | | |
+|---+---------+--------+--------+--------+-------+------|
+#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f
+@end group
+@end example
+@noindent
+The example also demonstrates a number of features:
+@enumerate
+@item
+If the first field of a row contains only @samp{!}, this row defines
+@emph{names} for the different columns so that you can write
+@samp{$Tot} instead of @samp{$6} --- useful in larger tables,
+when counting columns becomes error prone.
+@item
+If the first field of a row contains only @samp{$}, fields in this row
+can define @emph{parameters} for formulas. For example, if a field in
+a @samp{$} row contains @samp{max=50}, then formulas in this table can
+refer to the value 50 using @samp{$max}. Parameters work exactly like
+constants, only that they can be defined on a per-table basis.
+Changing a parameter and then recalculating the table can be useful
+and fun.
+@item
+It the first field contains only @samp{^}, fields in this row define
+names for the fields in the row above, for example @samp{$m1} for
+@samp{10}. Similarly, if the marking character is @samp{_}, the names
+are valie for the fields in the row below.
+@item
+A column range @samp{$P1..$P3} is expanded to a vector, so that calc's
+vector functions (in this case @samp{vsum}, but there are many more)
+can be applied to ranges. For a range, columns may be referenced by
+name or number, in either sequence.
+@end enumerate
+
+@noindent If a table contains any line with @samp{#} as the
+first field, @kbd{C-u C-c *} will only change the marked lines and
+leave all unmarked lines alone. You can also mark a line with
+@samp{*}. These lines will also be recalculated with @kbd{C-u C-c *},
+but not upon @key{TAB} and @key{RET}. Use this for lines which are
+slow to calculate.
+
+Just to wet your appetite on what can be done with the fantastic
+@file{calc} package, here is a table that computes the Taylor series
+for a couple of functions (homework: try that with Excel :-)
+
+@example
+@group
+|---+-------------+---+-----+--------------------------------------|
+| | Func | n | x | Result |
+|---+-------------+---+-----+--------------------------------------|
+| # | exp(x) | 1 | x | 1 + x |
+| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
+| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
+| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
+| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
+| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
+|---+-------------+---+-----+--------------------------------------|
+#+TBLFM: $5=taylor($2,$4,$3);n3
+@end group
+@end example
+
+@node Summing, , Recalculation, Table calculations
+@subsection Summing
+
+Finally, when typing a formula into a field, a number of special
+keywords execute predefined sums over the current row or column and
+enter the result into the current field. These calculations are
+one-off, the formula is not stored, and you will neet to re-enter it
+in order to compute again.
+
+@example
+= @r{Execute the stored formula valid in this column.}
+=sum @r{Sum all fields above the current (alias @code{=sumv}).}
+=sumh @r{Sum all fields to the left of the current field.}
+=sum3 @r{Same as @samp{=sum}, but use just 3 fields above current.}
+@end example
+
+@node orgtbl-mode, table.el, Table calculations, Tables
+@section The Orgtbl minor mode
+@cindex orgtbl-mode
+@cindex minor mode for tables
+
+If you like the intuitive way the Org-mode table editor works, you
+might want to use it also in other modes like text-mode or mail-mode.
+The minor mode Orgtbl-mode makes this possible. You can always toggle
+the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
+example in mail mode, use
+@lisp
+(add-hook 'mail-mode-hook 'turn-on-orgtbl)
+@end lisp
+
+@node table.el, , orgtbl-mode, Tables
@section The @file{table.el} package
@kindex C-c C-c
-@cindex table editor, table.el
+@cindex table editor, @file{table.el}
@cindex @file{table.el}
-More complex ASCII tables (with automatic line wrapping, column- and
-row-spanning, and alignment) can be created using the Emacs table
+Complex ASCII tables with automatic line wrapping, column- and
+row-spanning, and alignment can be created using the Emacs table
package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
will call @command{table-recognize-table} and move the cursor into the
table. Inside a table, the keymap of Org-mode is inactive. In order
-to execute org-related commands, leave the table.
+to execute Org-mode-related commands, leave the table.
@table @kbd
-@kindex C-c #
-@item C-c #
+@kindex C-c C-c
+@item C-c C-c
+Recognize @file{table.el} table. Works when the cursor is in a
+table.el table.
+
+@kindex C-c ~
+@item C-c ~
Insert a table.el table. If there is already a table at point, this
command converts it between the table.el format and the Org-mode
format. See the documentation string of the command
@@ -795,20 +1025,6 @@ format. See the documentation string of the command
possible.
@end table
-@node orgtbl-mode, , table.el, Tables
-@section The Orgtbl minor mode
-@cindex orgtbl-mode
-@cindex Minor mode for tables
-
-If you like the intuitive way the Org-mode table editor works, you
-might want to use it also in other modes like text-mode or mail-mode.
-The minor mode Orgtbl-mode makes this possible. You can always toggle
-the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
-example in mail mode, use
-@lisp
-(add-hook 'mail-mode-hook 'turn-on-orgtbl)
-@end lisp
-
@node Hyperlinks, TODO items, Tables, Top
@chapter Hyperlinks
@cindex hyperlinks
@@ -826,6 +1042,8 @@ articles, emails and much more.
@cindex links
@cindex GNUS links
@cindex BBDB links
+@cindex URL links
+@cindex file links
@cindex VM links
@cindex RMAIL links
@cindex WANDERLUST links
@@ -877,6 +1095,8 @@ The key binding @kbd{C-c l} is only a suggestion - see
@ref{Installation and Activation}.
@kindex C-c C-l
+@cindex completion, of links
+@cindex completion, of file names
@item C-c C-l
Insert a link. This prompts for a link to be inserted into the
buffer. 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
text has a headline, i.e. a first line that starts with a @samp{*}.
If not, a headline is constructed from the current date and some
additional data. If the variable @code{org-adapt-indentation} is
-non-@code{nil}, the entire text is also indented so that it starts in
-the same column as the headline (after the asterisks).
+non-nil, the entire text is also indented so that it starts in the
+same column as the headline (after the asterisks).
@node TODO items, Timestamps, Hyperlinks, Top
@chapter TODO items
@@ -1057,6 +1277,7 @@ of working on an item, for example
org-todo-interpretation 'sequence)
@end lisp
+@cindex completion, of TODO keywords
With this setup, the command @kbd{C-c C-t} will cycle an entry from
TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also
use a prefix argument to quickly select a specific state. For example
@@ -1084,9 +1305,9 @@ would be set up like this:
In this case, different keywords do not indicate a sequence, but
rather different types. So it is normally not useful to change from
-one type to another. Therefore, in this case the the behavior of the
+one type to another. Therefore, in this case the behavior of the
command @kbd{C-c C-t} is changed slightly@footnote{This is also true
-for the @kbd{t} command in the timeline and agenda buffers}. When
+for the @kbd{t} command in the timeline and agenda buffers.}. When
used several times in succession, it will still cycle through all
names. But when when you return to the item after some time and
execute @kbd{C-c C-t} again, it will switch from each name directly to
@@ -1111,7 +1332,7 @@ anywhere in the file:
#+TYP_TODO: Fred Sara Lucy Mike DONE
@end example
-@cindex Completing option keywords
+@cindex Completion, of option keywords
@kindex M-@key{TAB}
@noindent To make sure you are using the correct keyword, type
@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}).
@itemx S-@key{down}
Increase/decrease priority of current item. Note that these keys are
also used to modify time stamps (@pxref{Creating timestamps}).
-Furthermore, these keys is also used by CUA-mode
+Furthermore, these keys are also used by CUA-mode
(@pxref{Interaction}).
@end table
@@ -1221,27 +1442,27 @@ example:
@end example
@item DEADLINE
-@cindex deadline
+@cindex DEADLINE keyword
If a time stamp is preceded by the word @samp{DEADLINE:}, the task
(most likely a TODO item) is supposed to be finished on that date, and
-it will be listed then. In addition, the compilation for the
-@emph{current day} will carry a warning about the approaching or
-missed deadline, starting @code{org-deadline-warning-days} before the
-due date, and continuing until the entry is marked DONE. An example:
+it will be listed then. In addition, the compilation for @emph{today}
+will carry a warning about the approaching or missed deadline,
+starting @code{org-deadline-warning-days} before the due date, and
+continuing until the entry is marked DONE. An example:
@example
*** TODO write article about the Earth for the Guide
- The editor in charge is bbdb:Ford Prefect
+ The editor in charge is <bbdb:Ford Prefect>
DEADLINE: <2004-02-29 Sun>
@end example
@item SCHEDULED
-@cindex scheduled
+@cindex DEADLINE keyword
If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
you are planning to start working on that task on the given date. The
headline will be listed under the given date. In addition, a reminder
that the scheduled date has passed will be present in the compilation
-for the @emph{current day}, until the entry is marked DONE. I.e., the
+for @emph{today}, until the entry is marked DONE. I.e., the
task will automatically be forwarded.
@end table
@@ -1310,7 +1531,7 @@ CUA-mode (@pxref{Interaction}).
Change the item under the cursor in a timestamp. The cursor can be on
a year, month, day, hour or minute. Note that if the cursor is not at
a time stamp, these same keys modify the priority of an item.
-(@pxref{Priorities}). These key bindings conflict with CUA-mode
+(@pxref{Priorities}). The key bindings also conflict with CUA-mode
(@pxref{Interaction}).
@@ -1325,9 +1546,9 @@ into the following column).
@cindex date, reading in minibuffer
@cindex time, reading in minibuffer
@cindex calendar, for selecting date
-When org prompts for a date/time, the function reading your input will
-replace anything you choose not to specify with the current date and
-time. For details, see the documentation string of
+When Org-mode prompts for a date/time, the function reading your input
+will replace anything you choose not to specify with the current date
+and time. For details, see the documentation string of
@command{org-read-date}. Also, a calender will pop up to allow
selecting a date. The calendar can be fully controlled from the
minibuffer, and a date can be selected with the following commands:
@@ -1487,12 +1708,12 @@ Emacs.
The display in the agenda buffer looks best if the category is not
longer than 10 characters.
-@subsection Time Specifications
+@subsection Time-of-Day Specifications
-Org-mode checks each agenda item for a time specification. The time
-can be part of the time stamp that triggered inclusion into the agenda,
-for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time ranges can
-be specified with two time stamps, like
+Org-mode checks each agenda item for a time-of-day specification. The
+time can be part of the time stamp that triggered inclusion into the
+agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
+ranges can be specified with two time stamps, like
@c
@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
@@ -1608,10 +1829,14 @@ Delete other windows.
@kindex w
@item w
-Toggle between weekly and daily view.
+Switch to weekly view (7 days displayed together)
@kindex d
@item d
+Switch to daily view (just one day displayed)
+
+@kindex D
+@item D
Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
@kindex g
@@ -1663,7 +1888,7 @@ Display weighted priority of current item.
@kindex +
@kindex S-@key{up}
@item +
-@item S-@key{up}
+@itemx S-@key{up}
Increase the priority of the current item. The priority is changed in
the original buffer, but the agenda is not resorted. Use the @kbd{r}
key for this.
@@ -1671,7 +1896,7 @@ key for this.
@kindex -
@kindex S-@key{down}
@item -
-@item S-@key{down}
+@itemx S-@key{down}
Decrease the priority of the current item.
@kindex S-@key{right}
@@ -1782,12 +2007,12 @@ agenda, you only need to customize the variable
entries including holidays, anniversaries etc will be included in the
agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
@key{RET} can be used from the agenda buffer to jump to the diary
-file, in order to edit existing diary entries. Also the @kbd{i}
-command to insert new entries for the current date works in the agenda
-buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to
-display Sunrise/Sunset times, show lunar phases and to convert to
-other calendars, respectively. @kbd{c} can be used to switch back and
-forth between calendar and agenda.
+file, in order to edit existing diary entries. The @kbd{i} command to
+insert new entries for the current date works in the agenda buffer, as
+well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
+Sunrise/Sunset times, show lunar phases and to convert to other
+calendars, respectively. @kbd{c} can be used to switch back and forth
+between calendar and agenda.
@node Agenda to diary, , Diary to agenda, Calendar/Diary integration
@subsection Including the agenda into the diary
@@ -1827,9 +2052,8 @@ also the documentation of the @command{org-diary} function.
@node Exporting, Miscellaneous, Timeline and Agenda, Top
@chapter Exporting
@cindex exporting
-@cindex ASCII file
-@cindex HTML
-
+@cindex ASCII export
+@cindex HTML export
@cindex headline levels, for exporting
For 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_
@item
Simple @TeX{}-like math constructs are interpreted:
+@cindex completion, of @TeX{} symbols
@itemize @minus
@item
@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.
@section Export options
@cindex options, for export
+@cindex completion, of option keywords
The exporter recognizes special lines in the buffer which provide
additional information. These lines may be put anywhere in the file.
The whole set of lines can be inserted into the buffer with @kbd{C-c
@@ -1953,7 +2179,7 @@ you can
@cindex headline levels
@cindex section-numbers
@cindex table of contents
-@cindex linebreak-preservation
+@cindex linebreak preservation
@cindex quoted html tags
@cindex fixed-width sections
@cindex tables
@@ -2003,10 +2229,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
@node Completion, Customization, Miscellaneous, Miscellaneous
@section Completion
-@cindex complete @TeX{} symbols
-@cindex complete TODO keywords
-@cindex complete dictionary words
-@cindex complete option keywords
+@cindex completion, of @TeX{} symbols
+@cindex completion, of TODO keywords
+@cindex completion, of dictionary words
+@cindex completion, of option keywords
+@cindex completion, of keyword formulas
Org-mode supports in-buffer completion. This type of completion does
not 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
option keyword is already complete, pressing @kbd{M-@key{TAB}} again
will insert example settings for this keyword.
@item
+After @samp{=}, complete keyword formulas for tables.
+@item
Elsewhere, complete dictionary words using ispell.
@end itemize
@end table
@@ -2047,7 +2276,7 @@ Group} from the @code{Org->Customization} menu.
@section Frequently asked questions
@enumerate
-@item @b{Org-mode seems to be useful default mode for the various
+@item @b{Org-mode seems to be a useful default mode for the various
@file{README} files I have scattered through my directories. How do I
turn it on for all @file{README} files?}
@example
@@ -2065,8 +2294,8 @@ possible because of the different outline implementation.
@item @b{Is there an easy way to insert links to web locations?}@*
@cindex URL, paste into buffer
-Sure, just paste them into the buffer. A plain-text URL-like string
-is directly interpreted as a link.
+Sure, just type or paste them into the buffer. A plain-text URL-like
+string is directly interpreted as a link.
@item @b{When I export my TODO list, every TODO item becomes a
separate 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
@code{org-table-default-size}. However, just starting to type the
first line is usually much easier.
+@item @b{One of my table columns has started to fill up with
+@samp{#ERROR}. What is going on?}@*
+Org-mode tried to compute the column from other fields using a
+formula stored in the @samp{#+TBLFMT:} line just below the table, and
+the evaluation of the formula fails. Fix the fields used in the
+formula, or fix the formula, or remove it!
+
@item @b{When I am in the last column of a table and just above a
horizontal line in the table, pressing TAB creates a new table line
@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}.
@node Interaction, Bugs, FAQ, Miscellaneous
@section Interaction with other packages
@cindex packages, interaction with other
-@cindex @file{planner.el}
-@cindex @file{remember.el}
-@cindex @file{table.el}
-@file{Org.el} can cooperate with the following packages:
+Org-mode can cooperate with the following packages:
@table @asis
-@cindex @file{remember.el}
-@item @file{remember.el} by John Wiegley
-Org mode cooperates with remember, see @ref{Remember}.
-@cindex @file{plannner.el}
-@item @file{planner.el} by John Wiegley
-Planner is another tool to plan work and keep track of tasks. Planner
-uses a multi-file approach with project pages and day pages. Is based
-on Emacs-Wiki. It can be useful to display the agenda entries
-resulting from org files in day-pages of the planner. This can be
-done through the diary of the calendar: Integrate org files into the
-diary as described above, and then turn on the diary support of
-planner.
@cindex @file{table.el}
@item @file{table.el} by Takaaki Ota
Org mode cooperates with table.el, see @ref{table.el}.
+@cindex @file{calc.el}
+@item @file{calc.el} by Dave Gillespie
+Org-mode uses the calc package for implementing spreadsheet
+functionality in its tables (@pxref{Table calculations}). Org-modes
+checks for the availability of calc by looking for the function
+@code{calc-eval} which should be autoloaded in your setup if calc has
+been installed properly. As of Emacs 22, calc is part of the Emacs
+distribution. Another possibility for interaction between the two
+packages is using calc for embedded calculations. @xref{Embedded Mode,
+, Embedded Mode, calc, The calc maanual}.
+@cindex @file{constants.el}
+@item @file{constants.el} by Carsten Dominik
+In a table formula (@pxref{Table calculations}), it is possible to use
+names for natural constants or units. Instead of defining you own
+constants in the variable @code{org-table-formula-constants}, install
+the @file{constants} package which defines a large number of constants
+and units, and lets you use unit prefixes like @samp{M} for
+@samp{Mega} etc. You will need version 2.0 of this package, available
+at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
+the function @code{constants-get}, which has to be autoloaded in your
+setup. See the installation instructions in the file
+@file{constants.el}.
+@cindex @file{remember.el}
@cindex @file{CUA.el}
@item @file{CUA.el} by Kim. F. Storm
Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
used by CUA-mode (as well as pc-select-mode and s-region-mode) to
select and extend the region. If you want to use one of these
packages along with Org-mode, configure the variable
-@code{org-CUA-compatible}. When set, Org-mode will move the folowing
+@code{org-CUA-compatible}. When set, Org-mode will move the following
keybindings in org-mode files, and in the agenda buffer (but not
during date selection).
@example
@@ -2163,7 +2407,17 @@ S-RET -> C-S-RET
Yes, these are unfortunately more difficult to remember. If you want
to have other replacement keys, look at the variable
@code{org-disputed-keys}.
-
+@item @file{remember.el} by John Wiegley
+Org mode cooperates with remember, see @ref{Remember}.
+@cindex @file{planner.el}
+@item @file{planner.el} by John Wiegley
+Planner is another tool to plan work and keep track of tasks. Planner
+uses a multi-file approach with project pages and day pages. Is based
+on Emacs-Wiki. If Planner is your primary tool, it can be useful to
+display the agenda entries resulting from org files in day-pages of
+the planner. This can be done through the diary of the calendar:
+Integrate org files into the diary as described above, and then turn
+on the diary support of planner.
@end table
@node Bugs, Acknowledgments, Interaction, Miscellaneous
@@ -2177,7 +2431,7 @@ have found too hard to fix.
@item
If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
filling is correctly disabled. However, if some text directly
-(without an empty line in between) preceeds or follws a table, calling
+(without an empty line in between) preceeds or follows a table, calling
@code{fill-paragraph} in that text will also fill the table like
normal text. Also, @code{fill-region} does bypass the
@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
(for example because the application does not exits or refuses to open
the file), it does so silently. No error message is displayed.
@item
+Recalculating a table line applies the formulas from left to right.
+If a formula calculated fields further down the row, multiple
+recalculation may be needed to get all fields consistent.
+@item
Under XEmacs, if Org-mode entries are included into the diary, it is
not possible to jump back from the diary to the org file. Apparently,
the text properties are lost when the fancy-diary-display is used.
@@ -2214,8 +2472,8 @@ suggestions and patches.
@itemize @bullet
@item
-Matthias Rempe (Oelde) provided ideas and suggestions, a patch
-introducing Windows NT/2000 support, and quality control.
+Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
+NT/2000 support, and quality control.
@item
Kevin Rogers contributed code to access VM files on remote hosts.
@item
@@ -2229,8 +2487,8 @@ his ideas have found their way into the agenda.
Philip Rooke created the Org-mode reference card. He also helped with
beta testing and contributed a number of very useful ideas.
@item
-Christian Schlauer proposed angular brackets around links, and some
-other useful stuff.
+Christian Schlauer proposed angular brackets around links, among other
+things.
@item
David Wainberg suggested to implement an archiving mechanism.
@item
@@ -2269,7 +2527,6 @@ conflict with other packages.
@bye
-
@ignore
arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
@end ignore
diff --git a/msdos/COPYING b/msdos/COPYING
index d60c31a97a5..3912109b5cd 100644
--- a/msdos/COPYING
+++ b/msdos/COPYING
@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
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 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also 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.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
diff --git a/src/ChangeLog b/src/ChangeLog
index f41c38ce954..4a66091eb59 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,81 @@
+2005-07-03 Richard M. Stallman <rms@gnu.org>
+
+ * xdisp.c (try_window): Fix previous change in how it handles
+ a partially-visible line or one only partly past the margin.
+
+ * window.c (window_scroll_pixel_based): Take account
+ of this_scroll_margin when finding point when scrolling up.
+
+2005-06-29 Ralf Angeli <angeli@iwi.uni-sb.de>
+
+ * window.c (window_scroll_pixel_based, window_scroll_line_based):
+ Handle `scroll-preserve-screen-position' non-nil, non-t specially.
+ (syms_of_window): <scroll-preserve-screen-position>: Doc fix.
+
+2005-07-02 Juri Linkov <juri@jurta.org>
+
+ * w32term.c (w32_draw_vertical_window_border): Use foreground of
+ VERTICAL_BORDER_FACE_ID for vertical border line.
+
+2005-07-02 Eli Zaretskii <eliz@gnu.org>
+
+ * fileio.c (Fcopy_file): Rearrange the code that calls fchown and
+ fchmod so that chmod doesn't get called on MSDOS before the file
+ is closed.
+
+2005-07-01 Jason Rumney <jasonr@gnu.org>
+
+ * w32term.c (cleartype_active): New flag for enabling sub-pixel
+ workaround.
+ (w32_initialize): Initialize it.
+ (w32_native_per_char_metric): Allow a couple of extra pixels when
+ Cleartype is active.
+
+ * w32term.c (w32_initialize): Move check for screen reader here
+ from syms_of_w32term.
+
+2005-06-30 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * xterm.c (handle_one_xevent): bzero compose_status when nbytes
+ is not zero.
+
+2005-07-01 Masatake YAMATO <jet@gyve.org>
+
+ * emacs.c (main): Passing ADD_NO_RANDOMIZE to
+ `personality'.
+
+2005-06-30 Juri Linkov <juri@jurta.org>
+
+ * xdisp.c (x_draw_vertical_border): If left fringe is not present
+ decrease x coord of vertical border by 1 pixel to not occupy text
+ area of the right window.
+
+ * xterm.c (x_draw_vertical_window_border): Use foreground of
+ VERTICAL_BORDER_FACE_ID for vertical border line.
+
+ * term.c (turn_on_face): In standout mode apply specified
+ fg to bg, and specified bg to fg (this makes the logic of
+ inversion on terminal consistent with X).
+
+2005-06-29 Juanma Barranquero <lekktu@gmail.com>
+
+ * eval.c (user_variable_p_eh): New function.
+ (Fuser_variable_p): Use it. Clarify docstring.
+ Return t for aliases of user options, nil for alias loops.
+
+2005-06-27 Richard M. Stallman <rms@gnu.org>
+
+ * eval.c (Fdefvar): Improve error message.
+
+2005-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
+ change.
+
+2005-06-27 Juanma Barranquero <lekktu@gmail.com>
+
+ * eval.c (Fdefvar): Don't try to set constant symbols.
+
2005-06-25 Richard M. Stallman <rms@gnu.org>
* macfns.c (Fx_show_tip): Pass new arg to try_window.
@@ -46,17 +124,16 @@
* xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
(syms_of_xdisp) <void-text-area-pointer>: Doc fix.
- * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on
- MSDOS/Windows.
+ * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
2005-06-23 Richard M. Stallman <rms@gnu.org>
* xdisp.c (get_next_display_element): Finish reversing the tests of
Vnobreak_char_display.
- * xdisp.c (Vnobreak_char_display): Renamed from Vshow_nonbreak_escape.
+ * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
All uses changed.
- (Qnobreak_space): Renamed from Qno_break_space. All uses changed.
+ (Qnobreak_space): Rename from Qno_break_space. All uses changed.
(syms_of_xdisp): Define nobreak-char-display and nobreak-space.
* fileio.c (Frename_file): Preserve owner and group, if possible,
@@ -352,8 +429,7 @@
2005-06-06 Eli Zaretskii <eliz@gnu.org>
- * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR):
- Remove macros.
+ * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
* unexw32.c (RVA_TO_PTR): Move here from w32heap.h.
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
{
/* Set this so we only do this once. */
putenv("EMACS_HEAP_EXEC=true");
- personality (PER_LINUX32);
+
+ /* A flag to turn off address randomization which is introduced
+ in linux kernel shipped with fedora core 4 */
+#define ADD_NO_RANDOMIZE 0x0040000
+ personality (PER_LINUX32 | ADD_NO_RANDOMIZE);
+#undef ADD_NO_RANDOMIZE
+
execvp (argv[0], argv);
/* 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) */)
register Lisp_Object sym, tem, tail;
sym = Fcar (args);
+ if (SYMBOL_CONSTANT_P (sym))
+ error ("Constant symbol `%s' specified in defvar",
+ SDATA (SYMBOL_NAME (sym)));
+
tail = Fcdr (args);
if (!NILP (Fcdr (Fcdr (tail))))
error ("Too many arguments");
@@ -885,12 +889,24 @@ usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */)
return sym;
}
+/* Error handler used in Fuser_variable_p. */
+static Lisp_Object
+user_variable_p_eh (ignore)
+ Lisp_Object ignore;
+{
+ return Qnil;
+}
+
DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0,
- doc: /* Returns t if VARIABLE is intended to be set and modified by users.
+ doc: /* Return t if VARIABLE is intended to be set and modified by users.
\(The alternative is a variable used internally in a Lisp program.)
-Determined by whether the first character of the documentation
-for the variable is `*' or if the variable is customizable (has a non-nil
-value of `standard-value' or of `custom-autoload' on its property list). */)
+A variable is a user variable if
+\(1) the first character of its documentation is `*', or
+\(2) it is customizable (its property list contains a non-nil value
+ of `standard-value' or `custom-autoload'), or
+\(3) it is an alias for another user variable.
+Return nil if VARIABLE is an alias and there is a loop in the
+chain of symbols. */)
(variable)
Lisp_Object variable;
{
@@ -899,23 +915,37 @@ value of `standard-value' or of `custom-autoload' on its property list). */)
if (!SYMBOLP (variable))
return Qnil;
- documentation = Fget (variable, Qvariable_documentation);
- if (INTEGERP (documentation) && XINT (documentation) < 0)
- return Qt;
- if (STRINGP (documentation)
- && ((unsigned char) SREF (documentation, 0) == '*'))
- return Qt;
- /* If it is (STRING . INTEGER), a negative integer means a user variable. */
- if (CONSP (documentation)
- && STRINGP (XCAR (documentation))
- && INTEGERP (XCDR (documentation))
- && XINT (XCDR (documentation)) < 0)
- return Qt;
- /* Customizable? See `custom-variable-p'. */
- if ((!NILP (Fget (variable, intern ("standard-value"))))
- || (!NILP (Fget (variable, intern ("custom-autoload")))))
- return Qt;
- return Qnil;
+ /* If indirect and there's an alias loop, don't check anything else. */
+ if (XSYMBOL (variable)->indirect_variable
+ && NILP (internal_condition_case_1 (indirect_variable, variable,
+ Qt, user_variable_p_eh)))
+ return Qnil;
+
+ while (1)
+ {
+ documentation = Fget (variable, Qvariable_documentation);
+ if (INTEGERP (documentation) && XINT (documentation) < 0)
+ return Qt;
+ if (STRINGP (documentation)
+ && ((unsigned char) SREF (documentation, 0) == '*'))
+ return Qt;
+ /* If it is (STRING . INTEGER), a negative integer means a user variable. */
+ if (CONSP (documentation)
+ && STRINGP (XCAR (documentation))
+ && INTEGERP (XCDR (documentation))
+ && XINT (XCDR (documentation)) < 0)
+ return Qt;
+ /* Customizable? See `custom-variable-p'. */
+ if ((!NILP (Fget (variable, intern ("standard-value"))))
+ || (!NILP (Fget (variable, intern ("custom-autoload")))))
+ return Qt;
+
+ if (!XSYMBOL (variable)->indirect_variable)
+ return Qnil;
+
+ /* An indirect variable? Let's follow the chain. */
+ variable = XSYMBOL (variable)->value;
+ }
}
DEFUN ("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. */)
copyable by us. */
input_file_statable_p = (fstat (ifd, &st) >= 0);
-#if !defined (DOS_NT) || __DJGPP__ > 1
+#if !defined (MSDOS) || __DJGPP__ > 1
if (out_st.st_mode != 0
&& st.st_dev == out_st.st_dev && st.st_ino == out_st.st_ino)
{
@@ -2576,25 +2576,16 @@ uid and gid of FILE to NEWNAME. */)
report_file_error ("I/O error", Fcons (newname, Qnil));
immediate_quit = 0;
- /* Preserve the owner and group, if requested. */
- if (input_file_statable_p && ! NILP (preserve_uid_gid))
- fchown (ofd, st.st_uid, st.st_gid);
-
+#ifndef MSDOS
+ /* Preserve the original file modes, and if requested, also its
+ owner and group. */
if (input_file_statable_p)
{
-#ifndef MSDOS
+ if (! NILP (preserve_uid_gid))
+ fchown (ofd, st.st_uid, st.st_gid);
fchmod (ofd, st.st_mode & 07777);
-#else /* MSDOS */
-#if defined (__DJGPP__) && __DJGPP__ > 1
- /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
- and if it can't, it tells so. Otherwise, under MSDOS we usually
- get only the READ bit, which will make the copied file read-only,
- so it's better not to chmod at all. */
- if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
- chmod (SDATA (encoded_newname), st.st_mode & 07777);
-#endif /* DJGPP version 2 or newer */
-#endif /* MSDOS */
}
+#endif /* not MSDOS */
/* Closing the output clobbers the file times on some systems. */
if (emacs_close (ofd) < 0)
@@ -2616,7 +2607,19 @@ uid and gid of FILE to NEWNAME. */)
}
emacs_close (ifd);
-#endif /* WINDOWSNT */
+
+#if defined (__DJGPP__) && __DJGPP__ > 1
+ if (input_file_statable_p)
+ {
+ /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
+ and if it can't, it tells so. Otherwise, under MSDOS we usually
+ get only the READ bit, which will make the copied file read-only,
+ so it's better not to chmod at all. */
+ if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
+ chmod (SDATA (encoded_newname), st.st_mode & 07777);
+ }
+#endif /* DJGPP version 2 or newer */
+#endif /* not WINDOWSNT */
/* Discard the unwind protects. */
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)
default:
break;
}
+ break;
case kEventClassKeyboard:
switch (GetEventKind (eventRef))
@@ -7662,6 +7663,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
default:
break;
}
+ break;
default:
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)
if (fg >= 0 && tty->TS_set_foreground)
{
- p = tparam (tty->TS_set_foreground, NULL, 0, (int) fg);
+ if (tty->standout_mode)
+ p = tparam (tty->TS_set_background, NULL, 0, (int) fg);
+ else
+ p = tparam (tty->TS_set_foreground, NULL, 0, (int) fg);
OUTPUT (tty, p);
xfree (p);
}
if (bg >= 0 && tty->TS_set_background)
{
- p = tparam (tty->TS_set_background, NULL, 0, (int) bg);
+ if (tty->standout_mode)
+ p = tparam (tty->TS_set_foreground, NULL, 0, (int) bg);
+ else
+ p = tparam (tty->TS_set_background, NULL, 0, (int) bg);
OUTPUT (tty, p);
xfree (p);
}
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;
for Far East languages. */
int w32_enable_unicode_output;
+/* Flag to enable Cleartype hack for font metrics. */
+static int cleartype_active;
+
DWORD dwWindowsThreadId = 0;
HANDLE hWindowsThread = NULL;
DWORD dwMainThreadId = 0;
@@ -507,6 +510,7 @@ w32_draw_vertical_window_border (w, x, y0, y1)
struct frame *f = XFRAME (WINDOW_FRAME (w));
RECT r;
HDC hdc;
+ struct face *face;
r.left = x;
r.right = x + 1;
@@ -514,7 +518,12 @@ w32_draw_vertical_window_border (w, x, y0, y1)
r.bottom = y1;
hdc = get_frame_dc (f);
- w32_fill_rect (f, hdc, FRAME_FOREGROUND_PIXEL (f), &r);
+ face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
+ if (face)
+ w32_fill_rect (f, hdc, face->foreground, &r);
+ else
+ w32_fill_rect (f, hdc, FRAME_FOREGROUND_PIXEL (f), &r);
+
release_frame_dc (f, hdc);
}
@@ -907,6 +916,16 @@ w32_native_per_char_metric (font, char2b, font_type, pcm)
int real_width;
GetCharWidth (hdc, *char2b, *char2b, &real_width);
#endif
+ if (cleartype_active)
+ {
+ /* Cleartype antialiasing causes characters to overhang
+ by a pixel on each side compared with what GetCharABCWidths
+ reports. */
+ char_widths.abcA -= 1;
+ char_widths.abcC -= 1;
+ char_widths.abcB += 2;
+ }
+
pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC;
#if 0
/* As far as I can tell, this is the best way to determine what
@@ -6404,6 +6423,12 @@ w32_initialize ()
w32_system_caret_x = 0;
w32_system_caret_y = 0;
+ /* Initialize w32_use_visible_system_caret based on whether a screen
+ reader is in use. */
+ if (!SystemParametersInfo (SPI_GETSCREENREADER, 0,
+ &w32_use_visible_system_caret, 0))
+ w32_use_visible_system_caret = 0;
+
last_tool_bar_item = -1;
any_help_event_p = 0;
@@ -6448,6 +6473,8 @@ w32_initialize ()
/* Dynamically link to optional system components. */
{
HANDLE user_lib = LoadLibrary ("user32.dll");
+ UINT smoothing_type;
+ BOOL smoothing_enabled;
#define LOAD_PROC(fn) pfn##fn = (void *) GetProcAddress (user_lib, #fn)
@@ -6468,6 +6495,28 @@ w32_initialize ()
effectively form the border of the main scroll bar range. */
vertical_scroll_bar_top_border = vertical_scroll_bar_bottom_border
= GetSystemMetrics (SM_CYVSCROLL);
+
+ /* Constants that are not always defined by the system headers
+ since they only exist on certain versions of Windows. */
+#ifndef SPI_GETFONTSMOOTHING
+#define SPI_GETFONTSMOOTHING 0x4A
+#endif
+#ifndef SPI_GETFONTSMOOTHINGTYPE
+#define SPI_GETFONTSMOOTHINGTYPE 0x0200A
+#endif
+#ifndef FE_FONTSMOOTHINGCLEARTYPE
+#define FE_FONTSMOOTHINGCLEARTYPE 0x2
+#endif
+
+ /* Determine if Cleartype is in use. Used to enable a hack in
+ the char metric calculations which adds extra pixels to
+ compensate for the "sub-pixels" that are not counted by the
+ system APIs. */
+ cleartype_active =
+ SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &smoothing_enabled, 0)
+ && smoothing_enabled
+ && SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, 0, &smoothing_type, 0)
+ && smoothing_type == FE_FONTSMOOTHINGCLEARTYPE;
}
}
@@ -6537,11 +6586,7 @@ software is running as it starts up.
When this variable is set, other variables affecting the appearance of
the cursor have no effect. */);
- /* Initialize w32_use_visible_system_caret based on whether a screen
- reader is in use. */
- if (!SystemParametersInfo (SPI_GETSCREENREADER, 0,
- &w32_use_visible_system_caret, 0))
- w32_use_visible_system_caret = 0;
+ w32_use_visible_system_caret = 0;
/* We don't yet support this, but defining this here avoids whining
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)
/* We moved the window start towards ZV, so PT may be now
in the scroll margin at the top. */
move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
- if (IT_CHARPOS (it) == PT && it.current_y >= this_scroll_margin)
+ if (IT_CHARPOS (it) == PT && it.current_y >= this_scroll_margin
+ && (NILP (Vscroll_preserve_screen_position)
+ || EQ (Vscroll_preserve_screen_position, Qt)))
/* We found PT at a legitimate height. Leave it alone. */
;
else if (preserve_y >= 0)
@@ -4822,7 +4824,9 @@ window_scroll_pixel_based (window, n, whole, noerror)
/* We moved the window start towards BEGV, so PT may be now
in the scroll margin at the bottom. */
move_it_to (&it, PT, -1,
- it.last_visible_y - this_scroll_margin - 1, -1,
+ (it.last_visible_y - CURRENT_HEADER_LINE_HEIGHT (w)
+ - this_scroll_margin - 1),
+ -1,
MOVE_TO_POS | MOVE_TO_Y);
/* Save our position, in case it's correct. */
@@ -4838,7 +4842,9 @@ window_scroll_pixel_based (window, n, whole, noerror)
partial_p = it.current_y > it.last_visible_y;
}
- if (charpos == PT && !partial_p)
+ if (charpos == PT && !partial_p
+ && (NILP (Vscroll_preserve_screen_position)
+ || EQ (Vscroll_preserve_screen_position, Qt)))
/* We found PT before we found the display margin, so PT is ok. */
;
else if (preserve_y >= 0)
@@ -4953,7 +4959,8 @@ window_scroll_line_based (window, n, whole, noerror)
the window-scroll-functions. */
w->force_start = Qt;
- if (whole && !NILP (Vscroll_preserve_screen_position))
+ if (!NILP (Vscroll_preserve_screen_position)
+ && (whole || !EQ (Vscroll_preserve_screen_position, Qt)))
{
SET_PT_BOTH (pos, pos_byte);
Fvertical_motion (make_number (original_vpos), window);
@@ -6916,9 +6923,13 @@ If there is only one window, it is split regardless of this value. */);
DEFVAR_LISP ("scroll-preserve-screen-position",
&Vscroll_preserve_screen_position,
- doc: /* *Non-nil means scroll commands move point to keep its screen line unchanged.
-This is only when it is impossible to keep point fixed and still
-scroll as specified. */);
+ doc: /* *Controls if scroll commands move point to keep its screen line unchanged.
+A value of nil means point does not keep its screen position except
+at the scroll margin or window boundary respectively.
+A value of t means point keeps its screen position if the scroll
+command moved it vertically out of the window, e.g. when scrolling
+by full screens.
+Any other value means point always keeps its screen position. */);
Vscroll_preserve_screen_position = Qnil;
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)
if ((w->cursor.y < this_scroll_margin
&& CHARPOS (pos) > BEGV)
- /* Old redisplay didn't take scroll margin into account at the bottom,
- but then global-hl-line-mode doesn't scroll. KFS 2004-06-14 */
- || (w->cursor.y + (make_cursor_line_fully_visible_p
- ? cursor_height + this_scroll_margin
- : 1)) > it.last_visible_y)
+ /* rms: considering make_cursor_line_fully_visible_p here
+ seems to give wrong results. We don't want to recenter
+ when the last line is partly visible, we want to allow
+ that case to be handled in the usual way. */
+ || (w->cursor.y + 1) > it.last_visible_y)
{
w->cursor.vpos = -1;
clear_glyph_matrix (w->desired_matrix);
@@ -22409,6 +22409,9 @@ x_draw_vertical_border (w)
window_box_edges (w, -1, &x0, &y0, &x1, &y1);
y1 -= 1;
+ if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
+ x1 -= 1;
+
FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1);
}
else if (!WINDOW_LEFTMOST_P (w)
@@ -22419,6 +22422,9 @@ x_draw_vertical_border (w)
window_box_edges (w, -1, &x0, &y0, &x1, &y1);
y1 -= 1;
+ if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
+ x0 -= 1;
+
FRAME_RIF (f)->draw_vertical_window_border (w, x0, y0, y1);
}
}
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)
int x, y0, y1;
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
+ struct face *face;
+
+ face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
+ if (face)
+ XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
+ face->foreground);
XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
f->output_data.x->normal_gc, x, y0, x, y1);
@@ -6294,6 +6300,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
if (compose_status.chars_matched > 0 && nbytes == 0)
break;
+ bzero (&compose_status, sizeof (compose_status));
orig_keysym = keysym;
/* Common for all keysym input events. */