Mercurial > emacs
changeset 83331:efa9e4606e7e
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
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Tue, 05 Jul 2005 22:12:55 +0000 |
parents | 233c9974025b (current diff) ac6ca3de0b38 (diff) |
children | 6c13700d1c13 |
files | admin/FOR-RELEASE lisp/ChangeLog lisp/bindings.el lisp/cus-face.el lisp/emacs-lisp/bytecomp.el lisp/faces.el lisp/font-lock.el lisp/help-fns.el lisp/net/rlogin.el lisp/progmodes/delphi.el lisp/progmodes/idlw-shell.el lisp/progmodes/idlw-toolbar.el lisp/progmodes/idlwave.el lisp/progmodes/tcl.el lisp/progmodes/vhdl-mode.el lisp/recentf.el lisp/simple.el lisp/smerge-mode.el lisp/startup.el lisp/subr.el lisp/term/rxvt.el lisp/term/xterm.el lisp/url/url-cookie.el lisp/url/url-gw.el lisp/url/url-history.el lisp/url/url-http.el lisp/url/url-news.el lisp/url/url-vars.el lispref/ChangeLog man/ChangeLog src/emacs.c src/fileio.c src/macterm.c src/term.c src/w32term.c src/window.c src/xdisp.c src/xterm.c |
diffstat | 187 files changed, 8779 insertions(+), 2785 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/admin/FOR-RELEASE Sun Jul 03 17:09:22 2005 +0000 +++ b/admin/FOR-RELEASE Tue Jul 05 22:12:55 2005 +0000 @@ -23,20 +23,15 @@ 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 @@ * 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 @@ 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.
--- a/etc/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/etc/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/etc/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/etc/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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>
--- a/etc/NEWS Sun Jul 03 17:09:22 2005 +0000 +++ b/etc/NEWS Tue Jul 05 22:12:55 2005 +0000 @@ -1548,6 +1548,21 @@ 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 @@ 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.
--- a/etc/PROBLEMS Sun Jul 03 17:09:22 2005 +0000 +++ b/etc/PROBLEMS Tue Jul 05 22:12:55 2005 +0000 @@ -2376,8 +2376,12 @@ *** 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 @@ 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.
--- a/etc/TUTORIAL.translators Sun Jul 03 17:09:22 2005 +0000 +++ b/etc/TUTORIAL.translators Tue Jul 05 22:12:55 2005 +0000 @@ -48,8 +48,7 @@ * 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>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/orgcard.ps Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/orgcard.tex Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/leim/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/leim/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/leim/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/leim/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/leim/leim-ext.el Sun Jul 03 17:09:22 2005 +0000 +++ b/leim/leim-ext.el Tue Jul 05 22:12:55 2005 +0000 @@ -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.
--- a/lib-src/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/lib-src/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/lisp/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/lisp/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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):
--- a/lisp/add-log.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/add-log.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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)
--- a/lisp/apropos.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/apropos.el Tue Jul 05 22:12:55 2005 +0000 @@ -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")
--- a/lisp/arc-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/arc-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ;; 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 @@ ;; 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 @@ :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 @@ :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 @@ (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 @@ ;; 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 @@ 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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ "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 @@ (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 @@ (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 @@ "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 @@ "\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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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
--- a/lisp/battery.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/battery.el Tue Jul 05 22:12:55 2005 +0000 @@ -171,53 +171,49 @@ %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 @@ 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'"
--- a/lisp/bindings.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/bindings.el Tue Jul 05 22:12:55 2005 +0000 @@ -781,6 +781,11 @@ (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 @@ ;; (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)
--- a/lisp/bookmark.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/bookmark.el Tue Jul 05 22:12:55 2005 +0000 @@ -309,7 +309,8 @@ (defvar bookmark-yank-point 0) (defvar bookmark-current-buffer nil) - +(defvar Info-current-node) +(defvar Info-suffix-list) ;; Helper functions.
--- a/lisp/calc/calc.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/calc/calc.el Tue Jul 05 22:12:55 2005 +0000 @@ -207,7 +207,7 @@ (require 'calc-macs) (defgroup calc nil - "GNU Calc" + "GNU Calc." :prefix "calc-" :tag "Calc" :group 'applications) @@ -3026,10 +3026,10 @@ (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 @@ (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)
--- a/lisp/calendar/diary-lib.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/calendar/diary-lib.el Tue Jul 05 22:12:55 2005 +0000 @@ -290,7 +290,7 @@ "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
--- a/lisp/comint.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/comint.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ "\\(\\([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 @@ (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 @@ (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))))))
--- a/lisp/cus-face.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/cus-face.el Tue Jul 05 22:12:55 2005 +0000 @@ -323,6 +323,10 @@ (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 @@ ;; 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))))))))
--- a/lisp/cus-theme.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/cus-theme.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (bury-buffer)) "Bury Buffer") (widget-insert "\n") - (use-local-map widget-keymap) (widget-setup)) (defun custom-theme-write (&rest ignore) @@ -90,6 +109,10 @@ (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 @@ (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.
--- a/lisp/custom.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/custom.el Tue Jul 05 22:12:55 2005 +0000 @@ -121,7 +121,7 @@ `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 @@ (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 @@ (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 @@ (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 @@ 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."
--- a/lisp/dabbrev.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/dabbrev.el Tue Jul 05 22:12:55 2005 +0000 @@ -100,7 +100,7 @@ ;;---------------------------------------------------------------- (defgroup dabbrev nil - "Dynamic Abbreviations" + "Dynamic Abbreviations." :tag "Dynamic Abbreviations" :group 'abbrev :group 'convenience) @@ -509,7 +509,7 @@ (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)))
--- a/lisp/delim-col.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/delim-col.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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))
--- a/lisp/diff-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/diff-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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)
--- a/lisp/dired-aux.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/dired-aux.el Tue Jul 05 22:12:55 2005 +0000 @@ -839,6 +839,9 @@ (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
--- a/lisp/dired.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/dired.el Tue Jul 05 22:12:55 2005 +0000 @@ -437,6 +437,8 @@ 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.
--- a/lisp/ediff-diff.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff-diff.el Tue Jul 05 22:12:55 2005 +0000 @@ -43,7 +43,7 @@ (require 'ediff-init) (defgroup ediff-diff nil - "Diff related utilities" + "Diff related utilities." :prefix "ediff-" :group 'ediff)
--- a/lisp/ediff-init.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff-init.el Tue Jul 05 22:12:55 2005 +0000 @@ -393,17 +393,17 @@ 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 @@ "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)))) ))
--- a/lisp/ediff-mult.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff-mult.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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)
--- a/lisp/ediff-ptch.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff-ptch.el Tue Jul 05 22:12:55 2005 +0000 @@ -28,7 +28,7 @@ (provide 'ediff-ptch) (defgroup ediff-ptch nil - "Ediff patch support" + "Ediff patch support." :tag "Patch" :prefix "ediff-" :group 'ediff)
--- a/lisp/ediff-wind.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff-wind.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/ediff.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ediff.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/emacs-lisp/autoload.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/autoload.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ) `(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 @@ (provide 'autoload) -;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 +;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 ;;; autoload.el ends here
--- a/lisp/emacs-lisp/bytecomp.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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"
--- a/lisp/emacs-lisp/cl-indent.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/cl-indent.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/emacs-lisp/crm.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/crm.el Tue Jul 05 22:12:55 2005 +0000 @@ -197,9 +197,10 @@ 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 @@ (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 @@ (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 @@ (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 @@ 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)
--- a/lisp/emacs-lisp/debug.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/debug.el Tue Jul 05 22:12:55 2005 +0000 @@ -231,7 +231,9 @@ ;; 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
--- a/lisp/emacs-lisp/easy-mmode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/easy-mmode.el Tue Jul 05 22:12:55 2005 +0000 @@ -201,10 +201,7 @@ :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.
--- a/lisp/emacs-lisp/edebug.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/edebug.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (- (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))))
--- a/lisp/emacs-lisp/elp.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/elp.el Tue Jul 05 22:12:55 2005 +0000 @@ -130,7 +130,7 @@ ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv (defgroup elp nil - "Emacs Lisp Profiler" + "Emacs Lisp Profiler." :group 'lisp) (defcustom elp-function-list nil
--- a/lisp/emacs-lisp/lisp-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -631,10 +631,10 @@ ;; 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))))
--- a/lisp/emacs-lisp/macroexp.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/macroexp.el Tue Jul 05 22:12:55 2005 +0000 @@ -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"))
--- a/lisp/emacs-lisp/pp.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/pp.el Tue Jul 05 22:12:55 2005 +0000 @@ -67,7 +67,7 @@ (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)))
--- a/lisp/emacs-lisp/testcover.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/testcover.el Tue Jul 05 22:12:55 2005 +0000 @@ -73,7 +73,7 @@ ;;;========================================================================== (defgroup testcover nil - "Code-coverage tester" + "Code-coverage tester." :group 'lisp :prefix "testcover-" :version "21.1")
--- a/lisp/emacs-lisp/timer.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/timer.el Tue Jul 05 22:12:55 2005 +0000 @@ -408,12 +408,11 @@ (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))
--- a/lisp/emacs-lisp/trace.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emacs-lisp/trace.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/emulation/cua-base.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/cua-base.el Tue Jul 05 22:12:55 2005 +0000 @@ -350,7 +350,7 @@ (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 @@ "*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 @@ ;;; 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 @@ (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 @@ 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 @@ (setq cua--saved-state nil)))) (defun cua-debug () - "Toggle cua debugging." + "Toggle CUA debugging." (interactive) (setq cua--debug (not cua--debug)))
--- a/lisp/emulation/cua-gmrk.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/cua-gmrk.el Tue Jul 05 22:12:55 2005 +0000 @@ -96,7 +96,7 @@ 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 @@ (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 @@ (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 @@ (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))
--- a/lisp/emulation/cua-rect.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/cua-rect.el Tue Jul 05 22:12:55 2005 +0000 @@ -992,7 +992,7 @@ (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 @@ '(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 @@ (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 @@ (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)
--- a/lisp/emulation/edt-mapper.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/edt-mapper.el Tue Jul 05 22:12:55 2005 +0000 @@ -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). ;;;
--- a/lisp/emulation/edt.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/edt.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ "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
--- a/lisp/emulation/tpu-edt.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/tpu-edt.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ "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 @@ (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 @@ (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 @@ (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 @@ ;;; ;;; 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 @@ ;;; -;;; 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 @@ (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 @@ (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 @@ (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))))
--- a/lisp/emulation/vi.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/vi.el Tue Jul 05 22:12:55 2005 +0000 @@ -314,7 +314,7 @@ (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 @@ "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 @@ ((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))
--- a/lisp/emulation/vip.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/vip.el Tue Jul 05 22:12:55 2005 +0000 @@ -1112,9 +1112,10 @@ (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 @@ (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 @@ (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
--- a/lisp/emulation/viper-ex.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/viper-ex.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/emulation/viper-mous.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/emulation/viper-mous.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/eshell/esh-var.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/eshell/esh-var.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/facemenu.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/facemenu.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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.
--- a/lisp/faces.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/faces.el Tue Jul 05 22:12:55 2005 +0000 @@ -869,7 +869,10 @@ (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 @@ (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 @@ (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 @@ :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
--- a/lisp/find-file.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/find-file.el Tue Jul 05 22:12:55 2005 +0000 @@ -946,18 +946,11 @@ (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 @@ (provide 'find-file) -;;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a +;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a ;;; find-file.el ends here
--- a/lisp/font-lock.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/font-lock.el Tue Jul 05 22:12:55 2005 +0000 @@ -620,6 +620,7 @@ ;; 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 @@ ,@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 @@ "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 @@ ("\\<:\\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.
--- a/lisp/gnus/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/gnus/gnus-art.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/gnus-art.el Tue Jul 05 22:12:55 2005 +0000 @@ -2123,31 +2123,31 @@ ;; 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 @@ (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 @@ ;; 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."
--- a/lisp/gnus/gnus-group.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/gnus-group.el Tue Jul 05 22:12:55 2005 +0000 @@ -382,7 +382,7 @@ :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
--- a/lisp/gnus/gnus-nocem.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/gnus-nocem.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ :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 @@ ;; 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 @@ (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 @@ (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))
--- a/lisp/gnus/gnus.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/gnus.el Tue Jul 05 22:12:55 2005 +0000 @@ -273,7 +273,7 @@ :group 'gnus) (defgroup gnus-exit nil - "Exiting gnus." + "Exiting Gnus." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus)
--- a/lisp/gnus/message.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/message.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/gnus/nnmail.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/nnmail.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/gnus/pgg-gpg.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pgg-gpg.el Tue Jul 05 22:12:55 2005 +0000 @@ -30,7 +30,7 @@ (require 'pgg)) (defgroup pgg-gpg () - "GnuPG interface" + "GnuPG interface." :group 'pgg) (defcustom pgg-gpg-program "gpg"
--- a/lisp/gnus/pgg-parse.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pgg-parse.el Tue Jul 05 22:12:55 2005 +0000 @@ -40,7 +40,7 @@ (require 'custom) (defgroup pgg-parse () - "OpenPGP packet parsing" + "OpenPGP packet parsing." :group 'pgg) (defcustom pgg-parse-public-key-algorithm-alist
--- a/lisp/gnus/pgg-pgp.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pgg-pgp.el Tue Jul 05 22:12:55 2005 +0000 @@ -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"
--- a/lisp/gnus/pgg-pgp5.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pgg-pgp5.el Tue Jul 05 22:12:55 2005 +0000 @@ -30,7 +30,7 @@ (require 'pgg)) (defgroup pgg-pgp5 () - "PGP 5.* interface" + "PGP 5.* interface." :group 'pgg) (defcustom pgg-pgp5-pgpe-program "pgpe"
--- a/lisp/gnus/pgg.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pgg.el Tue Jul 05 22:12:55 2005 +0000 @@ -380,7 +380,8 @@ (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 ()
--- a/lisp/gnus/pop3.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/gnus/pop3.el Tue Jul 05 22:12:55 2005 +0000 @@ -39,7 +39,7 @@ (require 'mail-utils) (defgroup pop3 nil - "Post Office Protocol" + "Post Office Protocol." :group 'mail :group 'mail-source)
--- a/lisp/help-fns.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/help-fns.el Tue Jul 05 22:12:55 2005 +0000 @@ -275,9 +275,9 @@ ;; 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
--- a/lisp/imenu.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/imenu.el Tue Jul 05 22:12:55 2005 +0000 @@ -877,7 +877,7 @@ (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))))
--- a/lisp/indent.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/indent.el Tue Jul 05 22:12:55 2005 +0000 @@ -29,7 +29,7 @@ ;;; Code: (defgroup indent nil - "Indentation commands" + "Indentation commands." :group 'editing) (defcustom standard-indent 4
--- a/lisp/info.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/info.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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
--- a/lisp/jka-cmpr-hook.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/jka-cmpr-hook.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/lpr.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/lpr.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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))))))))
--- a/lisp/mail/mailalias.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/mail/mailalias.el Tue Jul 05 22:12:55 2005 +0000 @@ -33,7 +33,7 @@ (require 'sendmail) (defgroup mailalias nil - "Expanding mail aliases" + "Expanding mail aliases." :group 'mail) (defcustom mail-passwd-files '("/etc/passwd")
--- a/lisp/mail/rmailsum.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/mail/rmailsum.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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)
--- a/lisp/mail/supercite.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/mail/supercite.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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)
--- a/lisp/makefile.w32-in Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/makefile.w32-in Tue Jul 05 22:12:55 2005 +0000 @@ -312,8 +312,11 @@ -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
--- a/lisp/mouse.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/mouse.el Tue Jul 05 22:12:55 2005 +0000 @@ -1857,7 +1857,7 @@ (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))))))
--- a/lisp/msb.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/msb.el Tue Jul 05 22:12:55 2005 +0000 @@ -489,7 +489,7 @@ "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."
--- a/lisp/net/browse-url.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/net/browse-url.el Tue Jul 05 22:12:55 2005 +0000 @@ -799,6 +799,8 @@ ;; --- 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)
--- a/lisp/net/rcompile.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/net/rcompile.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/net/rlogin.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/net/rlogin.el Tue Jul 05 22:12:55 2005 +0000 @@ -41,7 +41,7 @@ (require 'shell) (defgroup rlogin nil - "Remote login interface" + "Remote login interface." :group 'processes :group 'unix)
--- a/lisp/newcomment.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/newcomment.el Tue Jul 05 22:12:55 2005 +0000 @@ -502,7 +502,7 @@ (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
--- a/lisp/obsolete/ooutline.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/obsolete/ooutline.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/outline.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/outline.el Tue Jul 05 22:12:55 2005 +0000 @@ -38,7 +38,7 @@ ;;; Code: (defgroup outlines nil - "Support for hierarchical outlining" + "Support for hierarchical outlining." :prefix "outline-" :group 'editing)
--- a/lisp/pcmpl-cvs.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/pcmpl-cvs.el Tue Jul 05 22:12:55 2005 +0000 @@ -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:
--- a/lisp/pcmpl-rpm.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/pcmpl-rpm.el Tue Jul 05 22:12:55 2005 +0000 @@ -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:
--- a/lisp/play/decipher.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/play/decipher.el Tue Jul 05 22:12:55 2005 +0000 @@ -772,7 +772,7 @@ (forward-char)) (or (equal decipher-char ?\ ) (progn - (setq decipher-char ?\ ; + (setq decipher-char ?\s decipher--loop-prev-char ?\ ) (funcall func)))))))
--- a/lisp/printing.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/printing.el Tue Jul 05 22:12:55 2005 +0000 @@ -1179,7 +1179,7 @@ (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 @@ ;; 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)
--- a/lisp/progmodes/compile.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/compile.el Tue Jul 05 22:12:55 2005 +0000 @@ -493,25 +493,60 @@ ;; 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 @@ (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 @@ ;;;###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
--- a/lisp/progmodes/cperl-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/cperl-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -1516,7 +1516,8 @@ (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 @@ (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 @@ 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 @@ (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
--- a/lisp/progmodes/delphi.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/delphi.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ ;; // 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-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)))))
--- a/lisp/progmodes/ebnf2ps.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/ebnf2ps.el Tue Jul 05 22:12:55 2005 +0000 @@ -1135,14 +1135,14 @@ ;;; 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 @@ (defgroup ebnf-special nil - "Special customization" + "Special customization." :prefix "ebnf-" :tag "Special" :version "20" @@ -1158,7 +1158,7 @@ (defgroup ebnf-except nil - "Except customization" + "Except customization." :prefix "ebnf-" :tag "Except" :version "20" @@ -1166,7 +1166,7 @@ (defgroup ebnf-repeat nil - "Repeat customization" + "Repeat customization." :prefix "ebnf-" :tag "Repeat" :version "20" @@ -1174,7 +1174,7 @@ (defgroup ebnf-terminal nil - "Terminal customization" + "Terminal customization." :prefix "ebnf-" :tag "Terminal" :version "20" @@ -1182,7 +1182,7 @@ (defgroup ebnf-non-terminal nil - "Non-Terminal customization" + "Non-Terminal customization." :prefix "ebnf-" :tag "Non-Terminal" :version "20" @@ -1190,7 +1190,7 @@ (defgroup ebnf-production nil - "Production customization" + "Production customization." :prefix "ebnf-" :tag "Production" :version "20" @@ -1198,7 +1198,7 @@ (defgroup ebnf-shape nil - "Shapes customization" + "Shapes customization." :prefix "ebnf-" :tag "Shape" :version "20" @@ -1206,7 +1206,7 @@ (defgroup ebnf-displacement nil - "Displacement customization" + "Displacement customization." :prefix "ebnf-" :tag "Displacement" :version "20" @@ -1214,7 +1214,7 @@ (defgroup ebnf-syntactic nil - "Syntactic customization" + "Syntactic customization." :prefix "ebnf-" :tag "Syntactic" :version "20" @@ -1222,7 +1222,7 @@ (defgroup ebnf-optimization nil - "Optimization customization" + "Optimization customization." :prefix "ebnf-" :tag "Optimization" :version "20" @@ -4623,7 +4623,7 @@ (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 @@ (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
--- a/lisp/progmodes/ebrowse.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/ebrowse.el Tue Jul 05 22:12:55 2005 +0000 @@ -938,7 +938,8 @@ (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)))
--- a/lisp/progmodes/etags.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/etags.el Tue Jul 05 22:12:55 2005 +0000 @@ -40,7 +40,7 @@ ;; 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
--- a/lisp/progmodes/executable.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/executable.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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
--- a/lisp/progmodes/flymake.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/flymake.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ 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 @@ (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 @@ (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 @@ ;;) (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 @@ 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 @@ (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 @@ (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 @@ (message-box warning)) (defcustom flymake-gui-warnings-enabled t - "Enables/disables gui warnings." + "Enables/disables GUI warnings." :group 'flymake :type 'boolean) @@ -1445,50 +1440,41 @@ (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s" (buffer-name buffer) status warning))) -;;;###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))) - (defcustom flymake-start-syntax-check-on-find-file t "Start syntax check on find file." :group 'flymake :type 'boolean) ;;;###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) "" "") +(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 + (cond - (setq flymake-timer - (run-at-time nil 1 'flymake-on-timer-event (current-buffer))) + ;; 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) - (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-report-status (current-buffer) "" "") -;;;###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) + (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) (flymake-delete-own-overlays (current-buffer)) @@ -1497,9 +1483,19 @@ (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))))) + (setq flymake-is-running nil)))) + +;;;###autoload +(defun flymake-mode-on () + "Turn flymake mode on." + (flymake-mode 1) + (flymake-log 1 "flymake mode turned ON for buffer %s" (buffer-name))) + +;;;###autoload +(defun flymake-mode-off () + "Turn flymake mode off." + (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 @@ ;;+ (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 @@ (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 @@ (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)
--- a/lisp/progmodes/gud.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/gud.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ;; 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.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/progmodes/idlw-complete-structtag.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/progmodes/idlw-help.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/idlw-help.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ :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 @@ :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 @@ (defvar idlwave-help-activate-links-aggressively nil "Obsolete variable.") - + (defvar idlwave-completion-help-info) (defvar idlwave-help-frame nil @@ -242,6 +247,10 @@ "--" ["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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ 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 @@ (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 @@ "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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ 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 @@ 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 @@ 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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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))
--- a/lisp/progmodes/idlw-rinfo.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/idlw-rinfo.el Tue Jul 05 22:12:55 2005 +0000 @@ -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")) + ("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")) - ("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")) ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.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")) - ("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")) ("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")) + ("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")) ("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")) + ("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")) - ("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")) ("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")) + ("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")) - ("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")) ("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")) + ("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")) - ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.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")) + ("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")) - ("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")) + ("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")) + ("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 "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")) - ("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")) ("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") - ("RUN" . "symbols11.html") - ("SKIP" . "symbols12.html") - ("COMPILE" . "symbols2.html") - ("CONTINUE" . "symbols3.html") - ("RESET_SESSION" . "symbols8.html") - ("STEP" . "symbols13.html") ("RNEW" . "symbols10.html") - ("FULL_RESET_SESSION" . "symbols5.html") ("EDIT" . "symbols4.html") ("STEPOVER" . "symbols14.html") + ("OUT" . "symbols7.html") + ("RUN" . "symbols11.html") + ("CONTINUE" . "symbols3.html") + ("STEP" . "symbols13.html") + ("RETURN" . "symbols9.html") + ("GO" . "symbols6.html") + ("SKIP" . "symbols12.html") + ("FULL_RESET_SESSION" . "symbols5.html") + ("COMPILE" . "symbols2.html") )) ;; Special words with associated help topic files
--- a/lisp/progmodes/idlw-shell.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/idlw-shell.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ :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 @@ 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 @@ :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 @@ ("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 @@ "*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 @@ 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 @@ 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 @@ (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 @@ :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 @@ ;; 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 @@ 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 @@ (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 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ `\\[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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ `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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ "^% .*\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 @@ "\\)" ; 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 @@ (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 @@ (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 @@ ;; 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 @@ ;; 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 @@ ;; 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 @@ (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 @@ 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 @@ 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 @@ 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 @@ (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 @@ ;; 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 @@ 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 + (setq entry (list name 'pro class + (cons 'compiled + (if file + (list + (file-name-nondirectory file) + (idlwave-sintern-dir + (file-name-directory file))))) + cs (cons nil keys))) + (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 + idlwave-buffer-routines))) + ;; FIXME: is it OK to make the library routines dominate? + ;; (not (idlwave-rinfo-assq name 'fun class + ;; idlwave-library-routines)) + ) + (setq entry (list name 'fun class (cons 'compiled (if file (list (file-name-nondirectory file) - (idlwave-sintern-dir - (file-name-directory file))))) - cs (cons nil keys))) - (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 - idlwave-buffer-routines))) - ;; FIXME: is it OK to make the library routines dominate? - ;; (not (idlwave-rinfo-assq name 'fun class - ;; idlwave-library-routines)) - ) - (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ ;;; ;;; 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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ 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 @@ 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 @@ ;; 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 @@ (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 @@ ((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 @@ (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 @@ 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 @@ (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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ ;; 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 @@ 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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ '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 @@ ;; 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 @@ 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 @@ 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 @@ 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 @@ "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 @@ (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 @@ ((> 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 @@ "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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ "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 @@ "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 @@ '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 @@ (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 (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 @@ ;; 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 @@ [(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 @@ (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 @@ ;; `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 @@ 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 @@ (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 @@ (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 @@ " *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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ `("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 @@ "--" ["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 @@ ["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 @@ ["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 @@ :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 @@ (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 @@ (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 @@ \" .XXXX. \", \" .... \", \" \"};"))) im-cons im) - + (while (setq im-cons (pop image-alist)) (setq im (cond ((and (featurep 'xemacs) (featurep 'xpm)) @@ -4479,7 +4572,7 @@ ((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 @@ ;;; 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")
--- a/lisp/progmodes/idlw-toolbar.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/idlw-toolbar.el Tue Jul 05 22:12:55 2005 +0000 @@ -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.
--- a/lisp/progmodes/idlwave.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/idlwave.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ "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 @@ ;; 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 @@ (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 @@ (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-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 @@ ;;;###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 @@ '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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (defun idlwave-sys-dir () "Return the syslib directory, or a dummy that never matches." - (if (string= idlwave-system-directory "") - "@@@@@@@@" - idlwave-system-directory)) - - -(defvar idlwave-shell-path-query) + (cond + ((and idlwave-system-directory + (not (string= idlwave-system-directory ""))) + idlwave-system-directory) + ((getenv "IDL_DIR")) + (t "@@@@@@@@"))) + + + (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 @@ ;;----- 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 @@ (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 @@ (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 @@ "::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 @@ ((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 @@ 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 @@ '(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 @@ (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 @@ 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 @@ 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 @@ (setcar entry 'builtin)) (sort alist 'idlwave-routine-twin-compare))) -(defvar name) (defvar type) (defvar class) (defvar idlwave-sort-prefer-buffer-info t
--- a/lisp/progmodes/pascal.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/pascal.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/progmodes/prolog.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/prolog.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/progmodes/python.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/python.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ ;; 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))
--- a/lisp/progmodes/scheme.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/scheme.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (run-mode-hooks 'scheme-mode-hook)) (defgroup scheme nil - "Editing Scheme code" + "Editing Scheme code." :group 'lisp) (defcustom scheme-mit-dialect t
--- a/lisp/progmodes/sh-script.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/sh-script.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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)
--- a/lisp/progmodes/sql.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/sql.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (insert ", ")) ;; else insert a space (t - (if (eq (preceding-char) ? ) + (if (eq (preceding-char) ?\s) nil (insert " "))))) ;; in any case, insert the column
--- a/lisp/progmodes/tcl.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/tcl.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 ""))
--- a/lisp/progmodes/vhdl-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/progmodes/vhdl-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -1133,7 +1133,7 @@ (defgroup vhdl-testbench nil - "Customizations for testbench generation ." + "Customizations for testbench generation." :group 'vhdl-port) (defcustom vhdl-testbench-entity-name '(".*" . "\\&_tb")
--- a/lisp/ps-print.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ps-print.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ;;; 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 @@ :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 @@ :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 @@ "(setq ") key (if (> col len) - (make-string (- col len) ?\ ) + (make-string (- col len) ?\s) " ") (ps-value-string val)))) (t "") @@ -5961,10 +5961,14 @@ (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 @@ (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 @@ (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
--- a/lisp/recentf.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/recentf.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ ;; (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 @@ ;;; 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 @@ (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 @@ (run-hooks 'recentf-load-hook) -;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a +;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a ;;; recentf.el ends here
--- a/lisp/replace.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/replace.el Tue Jul 05 22:12:55 2005 +0000 @@ -516,21 +516,32 @@ 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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ 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 @@ (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 @@ :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 @@ 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 @@ (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 @@ (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 @@ ;; 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)
--- a/lisp/ses.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/ses.el Tue Jul 05 22:12:55 2005 +0000 @@ -49,7 +49,7 @@ ;;---------------------------------------------------------------------------- (defgroup ses nil - "Simple Emacs Spreadsheet" + "Simple Emacs Spreadsheet." :group 'applications :prefix "ses-" :version "21.1") @@ -376,7 +376,7 @@ ;;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 @@ (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 @@ 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 @@ 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 @@ (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)
--- a/lisp/shell.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/shell.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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.
--- a/lisp/simple.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/simple.el Tue Jul 05 22:12:55 2005 +0000 @@ -4542,22 +4542,29 @@ (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)
--- a/lisp/smerge-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/smerge-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/startup.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/startup.el Tue Jul 05 22:12:55 2005 +0000 @@ -44,7 +44,7 @@ (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 @@ (defvar no-blinking-cursor nil) +(defvar default-frame-background-mode) + (defvar pure-space-overflow nil "Non-nil if building Emacs overflowed pure space.")
--- a/lisp/strokes.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/strokes.el Tue Jul 05 22:12:55 2005 +0000 @@ -208,7 +208,7 @@ ;;; 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 @@ (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 @@ ;; 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 @@ (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 @@ ;; 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 @@ "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 @@ (insert strokes-xpm-header) (loop repeat 33 do (insert ?\") - (insert-char ?\ 33) + (insert-char ?\s 33) (insert "\",") (newline) finally @@ -1195,7 +1195,7 @@ ;; 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 @@ ;; (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 @@ (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 @@ (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 @@ (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)))
--- a/lisp/subr.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/subr.el Tue Jul 05 22:12:55 2005 +0000 @@ -937,7 +937,7 @@ (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 @@ (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.
--- a/lisp/term.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/term.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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)))))))
--- a/lisp/term/rxvt.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/term/rxvt.el Tue Jul 05 22:12:55 2005 +0000 @@ -160,7 +160,7 @@ "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 @@ ;; 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!
--- a/lisp/term/xterm.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/term/xterm.el Tue Jul 05 22:12:55 2005 +0000 @@ -376,7 +376,7 @@ "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 @@ ;; 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!
--- a/lisp/textmodes/artist.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/artist.el Tue Jul 05 22:12:55 2005 +0000 @@ -502,7 +502,18 @@ (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 @@ 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 @@ (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 @@ 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 @@ 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 @@ (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))
--- a/lisp/textmodes/bibtex.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/bibtex.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 ((?$ . "\"")
--- a/lisp/textmodes/enriched.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/enriched.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/textmodes/flyspell.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/flyspell.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ;*---------------------------------------------------------------------*/ ;* 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 @@ (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 @@ (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
--- a/lisp/textmodes/ispell.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/ispell.el Tue Jul 05 22:12:55 2005 +0000 @@ -1468,80 +1468,79 @@ 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)))
--- a/lisp/textmodes/makeinfo.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/makeinfo.el Tue Jul 05 22:12:55 2005 +0000 @@ -50,7 +50,7 @@ (require 'info) (defgroup makeinfo nil - "Run makeinfo conveniently" + "Run makeinfo conveniently." :group 'docs)
--- a/lisp/textmodes/org.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/org.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ ;; 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 @@ (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 @@ "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 @@ (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 @@ 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 @@ 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 @@ (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, 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 @@ :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 @@ (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 @@ :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 @@ "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 @@ (((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 @@ (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 @@ "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 @@ \\{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 @@ (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 @@ (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 @@ (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 @@ ;; (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 @@ '(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 @@ "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 @@ ;; 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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (>= (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 @@ (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 @@ (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 @@ ["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 @@ (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 - (if (equal org-agenda-ndays 1) 7 1)) + (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 %s view" - (if (equal org-agenda-ndays 1) "day" "week"))) + (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 1) + (org-agenda include-all-loc + (or (get-text-property (point) 'day) + starting-day)) + (org-agenda-set-mode-name) + (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ "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 @@ 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 @@ "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 @@ (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 @@ (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 @@ "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 @@ "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 @@ "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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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)) - -(defun org-table-copy-region (&optional cut) + (interactive "r") + (org-table-copy-region beg end '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 @@ (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 @@ ;; 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 @@ (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 @@ "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 @@ (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 @@ 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 @@ 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 @@ ((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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ 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 @@ (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 @@ 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 @@ 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 @@ ;; - 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ ;;; 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 @@ ["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 @@ ;;; 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 @@ (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)
--- a/lisp/textmodes/picture.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/picture.el Tue Jul 05 22:12:55 2005 +0000 @@ -359,7 +359,7 @@ (point)))) (replace-match newtext fixedcase literal) (if (< change 0) - (insert-char ?\ (- change))))) + (insert-char ?\s (- change))))) ;; Picture Tabs
--- a/lisp/textmodes/sgml-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/sgml-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ (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))))
--- a/lisp/textmodes/table.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/table.el Tue Jul 05 22:12:55 2005 +0000 @@ -650,7 +650,7 @@ :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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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)))))
--- a/lisp/textmodes/tex-mode.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/tex-mode.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (+ 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
--- a/lisp/textmodes/texinfo.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/texinfo.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (texinfo-last-unended-begin) (match-string 1))) "table") - ? ;space + ?\s ?\n))) (defun texinfo-insert-@kbd (&optional arg)
--- a/lisp/textmodes/two-column.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/textmodes/two-column.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/tooltip.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/tooltip.el Tue Jul 05 22:12:55 2005 +0000 @@ -136,6 +136,8 @@ (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)
--- a/lisp/uniquify.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/uniquify.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/url/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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.
--- a/lisp/url/url-cookie.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-cookie.el Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ (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 @@ (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 @@ :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 @@ :value value :expires expires :domain domain - :path path + :localpart localpart :secure secure)) (cond (storage @@ -235,8 +249,8 @@ (> (- 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 @@ (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 @@ (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 @@ (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 @@ (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)))))
--- a/lisp/url/url-gw.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-gw.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/url/url-history.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-history.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/url/url-http.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-http.el Tue Jul 05 22:12:55 2005 +0000 @@ -156,8 +156,7 @@ (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 @@ (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
--- a/lisp/url/url-news.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-news.el Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lisp/url/url-vars.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/url/url-vars.el Tue Jul 05 22:12:55 2005 +0000 @@ -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)
--- a/lisp/w32-vars.el Sun Jul 03 17:09:22 2005 +0000 +++ b/lisp/w32-vars.el Tue Jul 05 22:12:55 2005 +0000 @@ -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")
--- a/lispref/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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
--- a/lispref/display.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/display.texi Tue Jul 05 22:12:55 2005 +0000 @@ -14,9 +14,8 @@ * 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 @@ @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 @@ 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 @@ 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 @@ 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,6 +303,170 @@ echo area, or @code{nil} if there is none. @end defun +@node Progress +@subsection 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 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*} +buffer. The value @code{t} means there is no limit on how many lines to +keep. The value @code{nil} disables message logging entirely. Here's +how to display a message and prevent it from being logged: + +@example +(let (message-log-max) + (message @dots{})) +@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 @@ -318,21 +482,6 @@ @code{(message nil)} or for any other reason. @end defvar -Almost all the messages displayed in the echo area are also recorded -in the @samp{*Messages*} buffer. - -@defopt message-log-max -This variable specifies how many lines to keep in the @samp{*Messages*} -buffer. The value @code{t} means there is no limit on how many lines to -keep. The value @code{nil} disables message logging entirely. Here's -how to display a message and prevent it from being logged: - -@example -(let (message-log-max) - (message @dots{})) -@end example -@end defopt - @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 @@ 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 @@ 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 @@ @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
--- a/lispref/elisp.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/elisp.texi Tue Jul 05 22:12:55 2005 +0000 @@ -984,11 +984,10 @@ * 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.
--- a/lispref/keymaps.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/keymaps.texi Tue Jul 05 22:12:55 2005 +0000 @@ -257,13 +257,31 @@ Here we describe the functions for creating keymaps. -@c ??? This should come after make-sparse-keymap +@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-sparse-keymap) + @result{} (keymap) +@end group +@end example + +If you specify @var{prompt}, that becomes the overall prompt string for +the keymap. The prompt string should be provided for menu keymaps +(@pxref{Defining Menus}). +@end defun + @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. +event. The argument @var{prompt} specifies a +prompt string, as in @code{make-sparse-keymap}. @example @group @@ -272,23 +290,8 @@ @end group @end example -If you specify @var{prompt}, that becomes the overall prompt string for -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}. - -@example -@group -(make-sparse-keymap) - @result{} (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 @@ 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 @@ @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
--- a/lispref/text.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/text.texi Tue Jul 05 22:12:55 2005 +0000 @@ -3152,6 +3152,10 @@ 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)}
--- a/lispref/variables.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/variables.texi Tue Jul 05 22:12:55 2005 +0000 @@ -569,7 +569,7 @@ 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 @@ 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 typically a number (integer or float), and the +elements of the list are sorted in non-decreasing numerical order. -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}. +@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 @@ (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
--- a/lispref/windows.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/lispref/windows.texi Tue Jul 05 22:12:55 2005 +0000 @@ -1523,9 +1523,12 @@ @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
--- a/lwlib/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/lwlib/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/mac/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/mac/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/man/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/man/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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>
--- a/man/flymake.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/man/flymake.texi Tue Jul 05 22:12:55 2005 +0000 @@ -422,7 +422,7 @@ (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)))
--- a/man/gnus.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/man/gnus.texi Tue Jul 05 22:12:55 2005 +0000 @@ -21750,27 +21750,18 @@ @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
--- a/man/org.texi Sun Jul 03 17:09:22 2005 +0000 +++ b/man/org.texi Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ Tables * Built-in table editor:: Simple tables +* Table calculations:: Compute a field from other fields +* orgtbl-mode:: The table editor as minor mode * table.el:: Complex tables -* orgtbl-mode:: The table editor as minor mode + +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 @@ @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 @@ 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 @@ @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 @@ @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 @@ 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 @@ @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 @@ @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 calculations:: Compute a field from other fields +* orgtbl-mode:: The table editor as minor mode * table.el:: Complex tables -* orgtbl-mode:: The table editor as minor mode @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 @@ @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 @@ @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 @@ 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 @@ @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 @@ @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 @@ 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 @@ @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 @@ 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,34 +787,205 @@ @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 -@section The @file{table.el} package -@kindex C-c C-c -@cindex table editor, table.el -@cindex @file{table.el} +@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 -More 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 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. -@table @kbd -@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 -@code{org-convert-table} for the restrictions under which this is -possible. -@end table +@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 -@node orgtbl-mode, , table.el, Tables +@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 +@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. @@ -809,6 +996,35 @@ (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, @file{table.el} +@cindex @file{table.el} + +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-mode-related commands, leave the table. + +@table @kbd +@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 +@code{org-convert-table} for the restrictions under which this is +possible. +@end table + @node Hyperlinks, TODO items, Tables, Top @chapter Hyperlinks @cindex hyperlinks @@ -826,6 +1042,8 @@ @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 @@ @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 @@ 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 @@ 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 @@ 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 @@ #+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 @@ @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 @@ @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 @@ 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 @@ @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 @@ 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 @@ @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 @@ @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 @@ @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 @@ 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 @@ @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 @@ @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 @@ @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 @@ @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 @@ @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 @@ 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 @@ @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 @@ @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 @@ @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 @@ @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 @@ 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 @@ @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 @@ (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 @@ @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 @@ 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 @@ @bye - @ignore arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac @end ignore
--- a/msdos/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/msdos/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/nt/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/nt/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/src/COPYING Sun Jul 03 17:09:22 2005 +0000 +++ b/src/COPYING Tue Jul 05 22:12:55 2005 +0000 @@ -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 @@ 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 @@ 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.
--- a/src/ChangeLog Sun Jul 03 17:09:22 2005 +0000 +++ b/src/ChangeLog Tue Jul 05 22:12:55 2005 +0000 @@ -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.
--- a/src/emacs.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/emacs.c Tue Jul 05 22:12:55 2005 +0000 @@ -919,7 +919,13 @@ { /* 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. */
--- a/src/eval.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/eval.c Tue Jul 05 22:12:55 2005 +0000 @@ -806,6 +806,10 @@ 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 @@ 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 @@ 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,
--- a/src/fileio.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/fileio.c Tue Jul 05 22:12:55 2005 +0000 @@ -2523,7 +2523,7 @@ 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 @@ 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 @@ } 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;
--- a/src/macterm.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/macterm.c Tue Jul 05 22:12:55 2005 +0000 @@ -7640,6 +7640,7 @@ default: break; } + break; case kEventClassKeyboard: switch (GetEventKind (eventRef)) @@ -7662,6 +7663,7 @@ default: break; } + break; default: break;
--- a/src/term.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/term.c Tue Jul 05 22:12:55 2005 +0000 @@ -1850,14 +1850,20 @@ 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); }
--- a/src/w32term.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/w32term.c Tue Jul 05 22:12:55 2005 +0000 @@ -138,6 +138,9 @@ 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 @@ 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 @@ 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 @@ 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_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 @@ /* 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 @@ 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 @@ 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". */
--- a/src/window.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/window.c Tue Jul 05 22:12:55 2005 +0000 @@ -4785,7 +4785,9 @@ /* 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 @@ /* 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 @@ 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 @@ 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 @@ 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",
--- a/src/xdisp.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/xdisp.c Tue Jul 05 22:12:55 2005 +0000 @@ -12748,11 +12748,11 @@ 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 @@ 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 @@ 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); } }
--- a/src/xterm.c Sun Jul 03 17:09:22 2005 +0000 +++ b/src/xterm.c Tue Jul 05 22:12:55 2005 +0000 @@ -546,6 +546,12 @@ 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 @@ if (compose_status.chars_matched > 0 && nbytes == 0) break; + bzero (&compose_status, sizeof (compose_status)); orig_keysym = keysym; /* Common for all keysym input events. */