aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2005-06-30 00:31:46 +0000
committerMiles Bader2005-06-30 00:31:46 +0000
commiteeb88b27e1dbd3f412aa684d44e4a784f6e536a2 (patch)
tree23ea1eda87f588e060b6c00e9c7ffac6a89a7e42
parent16e1457021e3f6e3b83fc9b5262fde38b7140c96 (diff)
parent84861437f914ac45c1eea7b6477ffc4783bb3bdd (diff)
downloademacs-eeb88b27e1dbd3f412aa684d44e4a784f6e536a2.tar.gz
emacs-eeb88b27e1dbd3f412aa684d44e4a784f6e536a2.zip
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-67
Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 447-458) - Update from CVS - Update from CVS: lisp/subr.el (add-to-ordered-list): Doc fix. - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 83-85) - Merge from emacs--cvs-trunk--0 - Update from CVS
-rw-r--r--admin/FOR-RELEASE35
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/NEWS93
-rw-r--r--etc/PROBLEMS32
-rw-r--r--etc/TUTORIAL.translators3
-rw-r--r--etc/orgcard.ps2749
-rw-r--r--etc/orgcard.tex737
-rw-r--r--leim/ChangeLog5
-rw-r--r--leim/leim-ext.el6
-rw-r--r--lisp/ChangeLog261
-rw-r--r--lisp/bindings.el6
-rw-r--r--lisp/calendar/diary-lib.el2
-rw-r--r--lisp/comint.el4
-rw-r--r--lisp/cus-face.el1
-rw-r--r--lisp/emacs-lisp/autoload.el18
-rw-r--r--lisp/emacs-lisp/easy-mmode.el5
-rw-r--r--lisp/emacs-lisp/lisp-mode.el4
-rw-r--r--lisp/emacs-lisp/pp.el2
-rw-r--r--lisp/facemenu.el86
-rw-r--r--lisp/faces.el18
-rw-r--r--lisp/font-lock.el3
-rw-r--r--lisp/gnus/ChangeLog15
-rw-r--r--lisp/gnus/gnus-art.el2
-rw-r--r--lisp/gnus/gnus-nocem.el24
-rw-r--r--lisp/gnus/pgg.el3
-rw-r--r--lisp/imenu.el2
-rw-r--r--lisp/jka-compr.el10
-rw-r--r--lisp/mouse.el2
-rw-r--r--lisp/msb.el2
-rw-r--r--lisp/newcomment.el2
-rw-r--r--lisp/play/decipher.el2
-rw-r--r--lisp/progmodes/compile.el53
-rw-r--r--lisp/progmodes/cperl-mode.el15
-rw-r--r--lisp/progmodes/gud.el13
-rw-r--r--lisp/progmodes/python.el1
-rw-r--r--lisp/ps-print.el22
-rw-r--r--lisp/recentf.el285
-rw-r--r--lisp/replace.el126
-rw-r--r--lisp/simple.el14
-rw-r--r--lisp/startup.el15
-rw-r--r--lisp/subr.el38
-rw-r--r--lisp/term/rxvt.el4
-rw-r--r--lisp/term/xterm.el4
-rw-r--r--lisp/textmodes/artist.el6
-rw-r--r--lisp/textmodes/flyspell.el51
-rw-r--r--lisp/textmodes/ispell.el147
-rw-r--r--lisp/textmodes/org.el1404
-rw-r--r--lisp/textmodes/picture.el2
-rw-r--r--lisp/textmodes/texinfo.el2
-rw-r--r--lisp/url/ChangeLog22
-rw-r--r--lisp/url/url-cookie.el66
-rw-r--r--lisp/url/url-http.el7
-rw-r--r--lisp/wid-edit.el38
-rw-r--r--lisp/window.el34
-rw-r--r--lispref/ChangeLog40
-rw-r--r--lispref/display.texi10
-rw-r--r--lispref/keymaps.texi35
-rw-r--r--lispref/makefile.w32-in2
-rw-r--r--lispref/numbers.texi19
-rw-r--r--lispref/objects.texi6
-rw-r--r--lispref/variables.texi25
-rw-r--r--lispref/windows.texi10
-rw-r--r--man/ChangeLog20
-rw-r--r--man/display.texi5
-rw-r--r--man/gnus.texi31
-rw-r--r--man/makefile.w32-in41
-rw-r--r--man/org.texi525
-rw-r--r--src/ChangeLog76
-rw-r--r--src/dispextern.h2
-rw-r--r--src/eval.c143
-rw-r--r--src/fileio.c57
-rw-r--r--src/lread.c17
-rw-r--r--src/macfns.c2
-rw-r--r--src/macterm.c2
-rw-r--r--src/s/ms-w32.h1
-rw-r--r--src/w32.c8
-rw-r--r--src/w32fns.c2
-rw-r--r--src/xdisp.c75
-rw-r--r--src/xfns.c2
79 files changed, 6403 insertions, 1265 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index ce878fc173f..eb0e06750da 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -14,6 +14,8 @@ has to be set to nil: when t, it can leak memory and cause other problems.
14** Check for widow and orphan lines in manuals; 14** Check for widow and orphan lines in manuals;
15make sure all the pages really look ok in the manual as formatted. 15make sure all the pages really look ok in the manual as formatted.
16 16
17** Update facemenu-unlisted-faces, adding whatever other
18face name prefixes should be in it for good results.
17 19
18* NEW FEATURES 20* NEW FEATURES
19 21
@@ -21,9 +23,6 @@ make sure all the pages really look ok in the manual as formatted.
21gracefully if something isn't supported over Tramp. 23gracefully if something isn't supported over Tramp.
22To be done by Andre Spiegel <spiegel@gnu.org>. 24To be done by Andre Spiegel <spiegel@gnu.org>.
23 25
24** define-minor-mode should not put :require into defcustom.
25See msg from rms to emacs-devel on 21 Dec.
26
27** Update Speedbar. 26** Update Speedbar.
28 27
29** Update vhdl-mode.el based on changes in 28** Update vhdl-mode.el based on changes in
@@ -43,6 +42,36 @@ invalid pointer from string_free_list.
43 42
44* BUGS 43* BUGS
45 44
45** Bug in ebrowse
46
47Date: Fri, 27 May 2005 17:35:48 +0200
48From: Markus Gritsch <gritsch@iue.tuwien.ac.at>
49
50the C++ header file which led to the problematic BROWSE file reads
51
52namespace test {
53 class Base
54 {
55 };
56
57 class B : public Base
58 {
59 };
60}
61
62class A : public test::Base
63{
64};
65
66The *Tree* is then displayed as
67
68 *Globals*
69 test
70 test::Base
71 test::B
72
73The class A seems to be missing.
74
46** Ange-ftp should ignore irrelevant IPv6 errors: 75** Ange-ftp should ignore irrelevant IPv6 errors:
47 76
48Message-Id: <4121-Tue23Mar2004165249+0100-piet@cs.uu.nl> 77Message-Id: <4121-Tue23Mar2004165249+0100-piet@cs.uu.nl>
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 9fb41788feb..8ed59b05be3 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
12005-06-29 Carsten Dominik <dominik@science.uva.nl>
2
3 * NEWS: Added an entry for Org-mode, and a change entry for
4 reftex-mode.
5
62005-06-28 Richard M. Stallman <rms@gnu.org>
7
8 * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping): New.
9
12005-06-11 Eli Zaretskii <eliz@gnu.org> 102005-06-11 Eli Zaretskii <eliz@gnu.org>
2 11
3 * DEBUG: Mention emacs-buffer.gdb. 12 * DEBUG: Mention emacs-buffer.gdb.
diff --git a/etc/NEWS b/etc/NEWS
index 0642018bb15..139725e0d78 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1623,6 +1623,21 @@ must remove older versions of cua.el or cua-mode.el as well as the
1623loading and customization of those packages from the .emacs file. 1623loading and customization of those packages from the .emacs file.
1624 1624
1625+++ 1625+++
1626** Org mode is now part of the Emacs distribution
1627
1628Org mode is a mode for keeping notes, maintaining ToDo lists, and
1629doing project planning with a fast and effective plain-text system.
1630It also contains a plain-text table editor with spreadsheet-like
1631capabilities.
1632
1633The Org mode table editor can be integrated into any major mode by
1634activating the minor Orgtbl-mode.
1635
1636The documentation for org-mode is in a separate manual; within Emacs,
1637type "C-h i m org RET" to read that manual. A reference card is
1638available in `etc/orgcard.tex' and `etc/orgcard.ps'.
1639
1640+++
1626** The new package dns-mode.el add syntax highlight of DNS master files. 1641** The new package dns-mode.el add syntax highlight of DNS master files.
1627The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used 1642The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
1628to increment the SOA serial. 1643to increment the SOA serial.
@@ -2277,6 +2292,80 @@ majority.
2277the syntax of backslashes in F90 buffers. 2292the syntax of backslashes in F90 buffers.
2278 2293
2279--- 2294---
2295** Reftex mode changes
2296+++
2297*** Changes to RefTeX's table of contents
2298
2299The new command keys "<" and ">" in the TOC buffer promote/demote the
2300section at point or all sections in the current region, with full
2301support for multifile documents.
2302
2303The new command `reftex-toc-recenter' (`C-c -') shows the current
2304section in the TOC buffer without selecting the TOC window.
2305Recentering can happen automatically in idle time when the option
2306`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
2307buffer stays when the focus moves to a different window. A dedicated
2308frame can show the TOC with the current section always automatically
2309highlighted. The frame is created and deleted from the toc buffer
2310with the `d' key.
2311
2312The toc window can be split off horizontally instead of vertically.
2313See new option `reftex-toc-split-windows-horizontally'.
2314
2315Labels can be renamed globally from the table of contents using the
2316key `M-%'.
2317
2318The new command `reftex-goto-label' jumps directly to a label
2319location.
2320
2321+++
2322*** Changes related to citations and BibTeX database files
2323
2324Commands that insert a citation now prompt for optional arguments when
2325called with a prefix argument. Related new options are
2326`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
2327
2328The new command `reftex-create-bibtex-file' creates a BibTeX database
2329with all entries referenced in the current document. The keys "e" and
2330"E" allow to produce a BibTeX database file from entries marked in a
2331citation selection buffer.
2332
2333The command `reftex-citation' uses the word in the buffer before the
2334cursor as a default search string.
2335
2336The support for chapterbib has been improved. Different chapters can
2337now use BibTeX or an explicit `thebibliography' environment.
2338
2339The macros which specify the bibliography file (like \bibliography)
2340can be configured with the new option `reftex-bibliography-commands'.
2341
2342Support for jurabib has been added.
2343
2344+++
2345*** Global index matched may be verified with a user function
2346
2347During global indexing, a user function can verify an index match.
2348See new option `reftex-index-verify-function'.
2349
2350+++
2351*** Parsing documents with many labels can be sped up.
2352
2353Operating in a document with thousands of labels can be sped up
2354considerably by allowing RefTeX to derive the type of a label directly
2355from the label prefix like `eq:' or `fig:'. The option
2356`reftex-trust-label-prefix' needs to be configured in order to enable
2357this feature. While the speed-up is significant, this may reduce the
2358quality of the context offered by RefTeX to describe a label.
2359
2360+++
2361*** Miscellaneous changes
2362
2363The macros which input a file in LaTeX (like \input, \include) can be
2364configured in the new option `reftex-include-file-commands'.
2365
2366RefTeX supports global incremental search.
2367
2368+++
2280** Prolog mode has a new variable `prolog-font-lock-keywords' 2369** Prolog mode has a new variable `prolog-font-lock-keywords'
2281to support use of font-lock. 2370to support use of font-lock.
2282 2371
@@ -4172,6 +4261,7 @@ return window edges in units of pixels, rather than columns and lines.
4172+++ 4261+++
4173*** The new macro `with-selected-window' temporarily switches the 4262*** The new macro `with-selected-window' temporarily switches the
4174selected window without impacting the order of `buffer-list'. 4263selected window without impacting the order of `buffer-list'.
4264It saves and restores the current buffer, too.
4175 4265
4176+++ 4266+++
4177*** `select-window' takes an optional second argument NORECORD. 4267*** `select-window' takes an optional second argument NORECORD.
@@ -4181,7 +4271,8 @@ This is like `switch-to-buffer'.
4181+++ 4271+++
4182*** `save-selected-window' now saves and restores the selected window 4272*** `save-selected-window' now saves and restores the selected window
4183of every frame. This way, it restores everything that can be changed 4273of every frame. This way, it restores everything that can be changed
4184by calling `select-window'. 4274by calling `select-window'. It also saves and restores the current
4275buffer.
4185 4276
4186+++ 4277+++
4187*** `set-window-buffer' has an optional argument KEEP-MARGINS. 4278*** `set-window-buffer' has an optional argument KEEP-MARGINS.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index f2c0cfaec50..0fc5bb299b6 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -965,6 +965,20 @@ xmodmap command to the xdm setup script for that display.
965 965
966Use the shell command `xset bc' to make the old X Menu package work. 966Use the shell command `xset bc' to make the old X Menu package work.
967 967
968*** C-SPC fails to work on Fedora GNU/Linux.
969
970Fedora Core 4 steals the C-SPC key by default for the `iiimx' program
971which is the input method for some languages. It blocks Emacs users
972from using the C-SPC key for `set-mark-command'.
973
974One solutions is to remove the `<Ctrl>space' from the `Iiimx' file
975which can be found in the `/usr/lib/X11/app-defaults' directory.
976However, that requires root access.
977
978Another is to specify `Emacs*useXIM: false' in your X resources.
979
980Another is to build Emacs with the `--without-xim' configure option.
981
968*** M-SPC seems to be ignored as input. 982*** M-SPC seems to be ignored as input.
969 983
970See if your X server is set up to use this as a command 984See if your X server is set up to use this as a command
@@ -2367,7 +2381,9 @@ The fix is to install a newer version of ncurses, such as version 4.2.
2367 2381
2368With certain recent Linux kernels (like the one of Redhat Fedora Core 2382With certain recent Linux kernels (like the one of Redhat Fedora Core
23691 and 2), the new "Exec-shield" functionality is enabled by default, which 23831 and 2), the new "Exec-shield" functionality is enabled by default, which
2370creates a different memory layout that breaks the emacs dumper. 2384creates a different memory layout that breaks the emacs dumper.
2385The work-around explained here is not enough on Fedora Core 4. Read the
2386next item.
2371 2387
2372Configure can overcome the problem of exec-shield if the architecture is 2388Configure can overcome the problem of exec-shield if the architecture is
2373x86 and the program setarch is present. On other architectures no 2389x86 and the program setarch is present. On other architectures no
@@ -2394,6 +2410,20 @@ command when running temacs like this:
2394 2410
2395 setarch i386 ./temacs --batch --load loadup [dump|bootstrap] 2411 setarch i386 ./temacs --batch --load loadup [dump|bootstrap]
2396 2412
2413*** Fedora Core 4 GNU/Linux: Segfault during dumping.
2414
2415In addition to exec-shield explained above "Linux: Segfault during
2416`make bootstrap' under certain recent versions of the Linux kernel"
2417item, Linux kernel shipped with Fedora Core 4 randomizes the virtual
2418address space of a process. As the result dumping is failed even if
2419you turn off the exec-shield. In such case use -R option of setarch
2420command:
2421
2422 setarch -R i386 ./temacs --batch --load loadup [dump|bootstrap]
2423
2424or
2425
2426 setarch -R i386 make bootstrap
2397 2427
2398*** Fatal signal in the command temacs -l loadup inc dump. 2428*** Fatal signal in the command temacs -l loadup inc dump.
2399 2429
diff --git a/etc/TUTORIAL.translators b/etc/TUTORIAL.translators
index 671c52e0b1e..dfda17bedb7 100644
--- a/etc/TUTORIAL.translators
+++ b/etc/TUTORIAL.translators
@@ -48,8 +48,7 @@ Maintainer: Pieter Schoenmakers <tiggr@tiggr.net>
48* TUTORIAL.pl: 48* TUTORIAL.pl:
49Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> 49Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
50 Janusz S. Bien <jsbien@mail.uw.edu.pl> 50 Janusz S. Bien <jsbien@mail.uw.edu.pl>
51Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> 51Maintainer: Radoslaw Moszczynski <rm@banita.pl>
52 Janusz S. Bien <jsbien@mail.uw.edu.pl>
53 52
54* TUTORIAL.pt_BR: 53* TUTORIAL.pt_BR:
55Author: Marcelo Toledo <marcelo@gnu.org> 54Author: Marcelo Toledo <marcelo@gnu.org>
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
new file mode 100644
index 00000000000..0653b59e56f
--- /dev/null
+++ b/etc/orgcard.ps
@@ -0,0 +1,2749 @@
1%!PS-Adobe-2.0
2%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
3%%Title: org-ref.dvi
4%%Pages: 2
5%%PageOrder: Ascend
6%%Orientation: Landscape
7%%BoundingBox: 0 0 596 842
8%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMSY8 CMBX8 CMTI8 CMR6 CMSY6
9%%EndComments
10%DVIPSWebPage: (www.radicaleye.com)
11%DVIPSCommandLine: dvips -t landscape -o org-ref.ps org-ref.dvi
12%DVIPSParameters: dpi=600, compressed
13%DVIPSSource: TeX output 2005.06.29:1143
14%%BeginProcSet: texc.pro
15%!
16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
17N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
18mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
190 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
20landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
21mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
22matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
23exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
24statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
25N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
26/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
27/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
28array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
29df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
30definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
31}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
32B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
331 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
341 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
350 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
36sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
37rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
38gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
39/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
40/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
41A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
42get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
43ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
44fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
45{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
46chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
471 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
48forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
49/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
50}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
51bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
52mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
53SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
54userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
551000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
56index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
57/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
58/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
59(LaserWriter 16/600)]{A length product length le{A length product exch 0
60exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
61end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
62grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
63imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
64exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
65fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
66delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
67B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
68p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
69rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
70
71%%EndProcSet
72%%BeginProcSet: f7b6d320.enc
73% Thomas Esser, Dec 2002. public domain
74%
75% Encoding for:
76% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
77% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
78% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
79% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
80%
81/TeXf7b6d320Encoding [
82/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
83/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
84/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
85/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
86/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
87/period /slash /zero /one /two /three /four /five /six /seven /eight
88/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
89/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
90/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
91/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
92/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
93/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
94/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
95/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
96/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
97/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
98/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
99/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
100/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
101/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
102/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
103/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
104/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
105/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
106/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
107/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
108] def
109
110%%EndProcSet
111%%BeginProcSet: 09fbbfac.enc
112% Thomas Esser, Dec 2002. public domain
113%
114% Encoding for:
115% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
116/TeX09fbbfacEncoding [
117/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
118/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
119/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
120/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
121/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
122/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
123/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
124/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
125/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
126/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
127/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
128/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
129/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
130/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
131/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
132/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
133/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
134/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
135/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
136/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
137/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
138/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
139/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
140/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
141/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
142/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
143/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
144] def
145
146%%EndProcSet
147%%BeginProcSet: bbad153f.enc
148% Thomas Esser, Dec 2002. public domain
149%
150% Encoding for:
151% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
152%
153/TeXbbad153fEncoding [
154/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
155/plusminus /minusplus /circleplus /circleminus /circlemultiply
156/circledivide /circledot /circlecopyrt /openbullet /bullet
157/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
158/greaterequal /precedesequal /followsequal /similar /approxequal
159/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
160/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
161/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
162/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
163/prime /infinity /element /owner /triangle /triangleinv /negationslash
164/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
165/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
166/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
167/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
168/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
169/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
170/backslash /wreathproduct /radical /coproduct /nabla /integral
171/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
172/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
173/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
174/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
175/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
176/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
177/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
178/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
179/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
180/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
181/lessequal /greaterequal /precedesequal /followsequal /similar
182/approxequal /propersubset /propersuperset /lessmuch /greatermuch
183/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
184/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
185/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
186/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
187/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
188/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
189/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
190/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
191] def
192
193%%EndProcSet
194%%BeginProcSet: 74afc74c.enc
195% Thomas Esser, Dec 2002. public domain
196%
197% Encoding for:
198% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
199%
200/TeX74afc74cEncoding [
201/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
202/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
203/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
204/suppress /exclam /quotedblright /numbersign /sterling /percent
205/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
206/hyphen /period /slash /zero /one /two /three /four /five /six /seven
207/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
208/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
209/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
210/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
211/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
212/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
213/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
214/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
215/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
216/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
217/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
218/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
219/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
220/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
221/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
222/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
223/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
224/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
225/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
226/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
227] def
228
229%%EndProcSet
230%%BeginProcSet: texps.pro
231%!
232TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
233index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
234exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
235ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
236pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
237div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
238/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
239definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
240sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
241mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
242exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
243forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
244end
245
246%%EndProcSet
247%%BeginFont: CMSY6
248%!PS-AdobeFont-1.1: CMSY6 1.0
249%%CreationDate: 1991 Aug 15 07:21:34
250% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
25111 dict begin
252/FontInfo 7 dict dup begin
253/version (1.0) readonly def
254/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
255/FullName (CMSY6) readonly def
256/FamilyName (Computer Modern) readonly def
257/Weight (Medium) readonly def
258/ItalicAngle -14.035 def
259/isFixedPitch false def
260end readonly def
261/FontName /CMSY6 def
262/PaintType 0 def
263/FontType 1 def
264/FontMatrix [0.001 0 0 0.001 0 0] readonly def
265/Encoding 256 array
2660 1 255 {1 index exch /.notdef put} for
267dup 0 /.notdef put
268readonly def
269/FontBBox{-4 -948 1329 786}readonly def
270/UniqueID 5000816 def
271currentdict end
272currentfile eexec
273D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
2747D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
275A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
276E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
277221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
27849F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
2799045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
2801F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
2816AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
282007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
283F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
284C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
285CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
28685132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
2876C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
2880306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
289AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
29072BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
2914176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
2922439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
293E97F71E04BB623E0BC9C
2940000000000000000000000000000000000000000000000000000000000000000
2950000000000000000000000000000000000000000000000000000000000000000
2960000000000000000000000000000000000000000000000000000000000000000
2970000000000000000000000000000000000000000000000000000000000000000
2980000000000000000000000000000000000000000000000000000000000000000
2990000000000000000000000000000000000000000000000000000000000000000
3000000000000000000000000000000000000000000000000000000000000000000
3010000000000000000000000000000000000000000000000000000000000000000
302cleartomark
303%%EndFont
304%%BeginFont: CMR6
305%!PS-AdobeFont-1.1: CMR6 1.0
306%%CreationDate: 1991 Aug 20 16:39:02
307% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
30811 dict begin
309/FontInfo 7 dict dup begin
310/version (1.0) readonly def
311/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
312/FullName (CMR6) readonly def
313/FamilyName (Computer Modern) readonly def
314/Weight (Medium) readonly def
315/ItalicAngle 0 def
316/isFixedPitch false def
317end readonly def
318/FontName /CMR6 def
319/PaintType 0 def
320/FontType 1 def
321/FontMatrix [0.001 0 0 0.001 0 0] readonly def
322/Encoding 256 array
3230 1 255 {1 index exch /.notdef put} for
324dup 0 /.notdef put
325readonly def
326/FontBBox{-20 -250 1193 750}readonly def
327/UniqueID 5000789 def
328currentdict end
329currentfile eexec
330D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
331016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
3329098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
333D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
334469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
3352BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
33668618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
3373645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
338BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
339CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
340C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
341D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
34223131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
343D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
34493DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
3456D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
346EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
347CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
348D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
34900CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
350B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
3516D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
356C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
357CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
358AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
359C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
36085D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
36191430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
3622E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
363342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
364ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
365C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
36610B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
3670FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE
368AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557
369EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895
3703925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141
371F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36
3722B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16
373057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A
37491F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324
37580F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC
3761D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3
3778377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F
378D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A
3793AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306
380F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6
3811A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E
382F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F
3831B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2
38420701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6
3855A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4
38684D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959
3875F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D
38896AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558
389C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7
39047C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5
3917444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603
3926671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01
393864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC
394111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850
395B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C
3966B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C
3979970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A
398421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095
399BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF
400F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC
4018EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372
4023634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448
4039E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3
404A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191
405A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C
4061CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF
40751D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D
4080F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450
4094760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7
410AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53
4118ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA
412D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB
41399515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4
414481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52
4151B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA
416D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586
417E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF
418B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB
41956BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB
420F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4
42161C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574
4229098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D
423FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3
424049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA
4255506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59
426620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8
427E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477
428ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE
4299F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA
430B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431
431DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994
432322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0
4334296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501
434CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792
4352C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7
43622946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595
437376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC
438C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4
4392CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C
440FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E
4416B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262
442C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A
443AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228
444028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5
445A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD
4462AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193
4479967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058
448C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC
4491C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A
450DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D
451C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE
452EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285
453AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89
45400BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190
455F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD
456A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD
4578C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB
45835BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C
4597B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC
46043990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5
4610D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E
462F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A
463E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821
46402C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55
4650B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5
4668B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9
467AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446
4689769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134
4698F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26
470CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360
4710A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E
4728582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089
473A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267
4746940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F
47516715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E
4769E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6
47764145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C
478C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481
47905558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92
480920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11
4814842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D
48267EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4
483BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718
484A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D
48565C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E
4867F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5
487CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC
4880C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA
4894DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824
4906F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333
49143E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026
492B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79
493497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4
49412173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5
4955A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6
49633EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F
4971055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD
498114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45
49924391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1
500C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C
501C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516
502E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB
5035EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA
504B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062
50586032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49
506BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C
507D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6
50807EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF
509D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723
5105E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A
511DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D
51275071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480
513E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D
514A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C
5154921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176
516B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2
517689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38
518087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259
5197E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175
5209DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98
52147E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4
5226D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D
52335F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66
524E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B
525D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4
526C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85
527121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81
528BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8
5291BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE
5306259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB
5315D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB
532776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A
533C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B
5345FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99
535F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083
536DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE
537345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92
538892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C
539FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8
540FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38
541FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924
5429BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E
5439480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766
5446A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23
54516B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B
546823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54
54779E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685
5486A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4
549A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187
5502825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390
551FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22
55227B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88
55367332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D
554ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A
555B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941
5568437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE
557D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D
558C48D5145E2C6AA7D7FD787BC0D
5590000000000000000000000000000000000000000000000000000000000000000
5600000000000000000000000000000000000000000000000000000000000000000
5610000000000000000000000000000000000000000000000000000000000000000
5620000000000000000000000000000000000000000000000000000000000000000
5630000000000000000000000000000000000000000000000000000000000000000
5640000000000000000000000000000000000000000000000000000000000000000
5650000000000000000000000000000000000000000000000000000000000000000
5660000000000000000000000000000000000000000000000000000000000000000
567cleartomark
568%%EndFont
569%%BeginFont: CMTI8
570%!PS-AdobeFont-1.1: CMTI8 1.0
571%%CreationDate: 1991 Aug 18 21:07:42
572% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
57311 dict begin
574/FontInfo 7 dict dup begin
575/version (1.0) readonly def
576/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
577/FullName (CMTI8) readonly def
578/FamilyName (Computer Modern) readonly def
579/Weight (Medium) readonly def
580/ItalicAngle -14.04 def
581/isFixedPitch false def
582end readonly def
583/FontName /CMTI8 def
584/PaintType 0 def
585/FontType 1 def
586/FontMatrix [0.001 0 0 0.001 0 0] readonly def
587/Encoding 256 array
5880 1 255 {1 index exch /.notdef put} for
589dup 0 /.notdef put
590readonly def
591/FontBBox{-35 -250 1190 750}readonly def
592/UniqueID 5000826 def
593currentdict end
594currentfile eexec
595D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
5963B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
597532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
598B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
599986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
600D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
601525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
602F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
60384AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
6040F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
60506BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
6065FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
607D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
60893FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
609FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
610E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
61146590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
6128E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
6134482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
6141D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
6159A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
616BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
61709FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
6183113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
619E8929A4BBA0EC700D5662AAD9EB38047C6C7C63EB3FA03B5EA9E56DF0E30B3AC
620058198429E22081FFD4CCC1F3A7A88AB8A22C7C6C6448934DEC2212E89998259
621653D779091F4F7F6C0A76024363A9001817B1D572847779F98F02FF9A1B45270
6222F7E42A25C687D6E56C89BBB580DE865D7372A02F329E71E0BDDA2CC8CEE41B7
623FE95846B78982FAF79E544CEF8D72A94FA73E69ED3A5F834BBE082CE0E8D4EA0
6242F619CF8441B5E057482D71D834BC6D93BF9F7777FDD2A5216911D31D34CDD76
6258D0F805FF6A71D77AED0D540ABF995DC77C30ACB207DB2513D691105199B2555
626CA9418777932A54E99E56E5171261B3708D8646A28803DEC8EABB44E80F3132A
627B273B74A56B5770C09508637BE122DEFA8A0B3438403DF67AD2FE9641009CF03
62844E39E8A56E244C56B8777F486C958C5196286F36761F2568FE1A8A6E74D6891
62919F7E393FB94388DE651E078D4D40DFD141A0FC074ACB3384BE70073C08E2EE6
630065EEF9768D260C08E40B2461EB226D820BC43EBCC49A943528B8E5FFA474300
631BEE3AE339C2E0C4B247A4F8F9CE588AC67CB6FF85ABAE18AE0F77219E44DBBF0
632C6B5958D89EA19BCA780BEBC7C29EC8919CB9754753DCF4781F34FF4F75FB52D
633C00A65650B9AEA0411B117D2DB6A813F17569F8D0BD600FF94F063EED10A9F10
63472B6FF606A4778CD73CE7A03EC5F31B6B4C9D93B80921FB7109C1E9926C77113
6355AAF1CA527E5D262674D0B05681E38FE2F14916248E81C52079AE46C4AA3C1F6
6369BDE6B8A497600BF36E594079AD3637D27E2F4FB0E89F80CD10A1991CDFABF46
637C36D32D5309D24024BF22F920D954E50EF667272BFB5CAAD0824641634CA4CB5
638E7491D66A5ADE670AEF9C5B1F1B45497FF99C2361EDB1FB5C8F5D9EDAE288C68
639EA3337F3AC1EC76037252B7107C3F96746EB0A6BB2DD05F1D372B0ED5C3F56B9
640CD6BB3EE200D9A60372D4EFAC7739E2629151FDB2BC336A95260119FCE6A9511
6412937DC9F522CC0CC6DDFDDF5673A962E2DFE6EA3923A5CFE9C4EC0C69BD1DEE6
6429F56420E6E8F972A3B7462F4DFACDE97B4F821E1109099298C77FC831E6837D0
6435BEA4AE2D59CBD525A79C96E491C20EFE0138F1F9A9AA1B30367982357719380
644EDDD75F4547F1997BEADCB8B7FA9227DD211433CC05C0B804E8BAAE95171EAEC
645EFB60DBB8399E83709895D5B4DC11E11FF91E2A39861B12FFA587E8D752D74F8
64671456FE15C7B6A885F2BE67C63B2D9CDC1EE5688CE99156821183B552DF78DAD
64764F178CDF98390D8C1967CE7D9BDBA99AFD5A9908A950A11FBED22FF6A61D0B9
6483BF4842A22E2295DD259B0DCE2773F9D672B217B7F19A4D22BACD2DF929FFDED
649EEF43C052D515BF739EB5B397F9B8762083965A85F96E6BD48E0402C85FA03CC
6505CBB51BF4CDD01B891BDF1959AB822E9E6A8B9CD914EC25E861DAB64C443641C
651BC2F1ECFDF4C3966E11F137787AAE702564B3EC4754982726AD67DB2A98E2EA6
6523B843D824EE3FB92888AF133ED29CA1B92A87C50E71640E418A5ABFFF469F972
6538AAE580B2E255272870AF5BBF923F9805104847880113BBFEA1FFED8B19915E0
654A0F0436BBE20C7E3FA1DCECFF072B8FBE3A100A33B181C0816CD4E28A8E432AF
655BF308B89336A8710EE740E1583A9ED41C97F96D546DD7613CC7B214501E14087
6561E8F1002BDBDC12DBC8F4CDB5D2E62EEC19007B3D89407B865721C28C7579845
65704CB6EE7A3AD6032D3DCF9D01F83DE750BC8F0DFDFF13FD400AACEC35690983F
658B5E04373CCBF469472B8AA0FA6A398BEBEFA8D914D548D0BB5589E1C40D7F625
6594F8E0FC08108C2288DECAC258D819FF92AFCB63954960A5B194934FAB5F4E757
660FAB4AF44176447EFE9E20B44F0E8BDCCC0925DD4703F6DA0B2E61E3121CB737E
6619E5FAE5B899987C8851CCE11408B5B12D5F67DE0552ABEAC69596F377AC65A83
66225E8ED90ACA8DD09D0D9AC984C2EB9A01F3502CC81422C68456A9B15796C8B08
6630060EDCACA5CAA76549D613EE7CFF973E9091B2B8EE4B1DD0117DC140C16527B
66447B335576E75C4E558E3777AA9EEDD3DA21B63E7DDDC10CBA609090099118E86
66537A4AAA5300E6DCB887E36A60601D4A02E98A547AE834960BFE45F644A23211A
6663D039D63BE8A49BC421B19E6FCD8132DD37D65E88C685B1775B1D05FEB41C705
667E3DEEA6307A5B44AF3153407B8042099128F867D3924B477FE258B3A23A47757
668B8F09B52A747698DD84E7EE65C4B30ADC97F7D6A63BB621E9EA9CD76BF8F3408
6690FF1D4AAB7A5F1417EDD399AD210F59E06B606A26C69368CC896616E802BFBB1
670613B4CD2AC76FB267B7EB1178B703F33B8D199BFB0968A82B193A1A32325442D
671C4FEA2BB70F971AACFB0722724724FEE9041A3232BEA3A9870939C5F0A5C00D2
672B292BEB07201BA6FF9B43D887E7F18A28AC2B9C998419378DCFFD57DAA9A88BB
673B97758828F0CFD6B810FF4D2A0B2D62D06110F2C804EB4E555E1B2E0E316E503
674D30F7878704FD816B6F19D49A1F9B37CAFCEDBA771421CE1C43DF0BCF2B2912C
6752E9F1105A4A91EB3BE467C8D4B3312D204915C237E09327BEBE496031CA2BD42
676EEF53F0ED5CE1F9D6496624A97042B0B45B3E59D01D41ED3DD16399C6279A9A3
677491272AE972C2F332CA37E1D074B97C62E7308EC803C251DD44A2B9B2317FC72
678345F338F335BA8A1C0F4E6BCFF7DA5CEEC539C08B26384F70724118E3D6BFC45
679608966E2FAAEA78A14234FE7547DA9C2D02EB4EA39835064BA994175B8BEFB61
680D0450C331985D54E2B1602D85EFE3A09FDA2346D13E203F3A52C2AF678ACBC01
6813980E95BDC04F2BC968C1341FCD4463783167C3361AF4777333EA568DA52D2FD
682A2B34B7064477C2B455385ABCC88BCDF277A1B33C90D3A6A431DEC8BB5863B70
683E1C769932C49EC1540B1139F1300003F59042EF79953930CC90C087370B46999
6840CCA827C1F1AE29E1CE29098CB4B3CCB91A61052071A550DC52284DA71169D75
685EB5B418A7CAB2DD4D9245615DAF8D846D45EF49C331E11EF875B2C62E470B0F2
68601BA91B2141C4380CCF5773C0C7B90B4447DBA415A2372B2DA4AB109D13DA0C0
6876E5E54C9DBA4FC967F0350E655425D1A896A2E6FF676657F4241A76F9F018190
6886AC7B8F53052B8DCD54168874304FCF0530E38EA0A422D292DC6E310495B5AF2
689E2F54210227F0FE30576CD6EC8E8BA26A398BE076716C20F0972F153C404D539
690ABDFE8BCB69D8E9A7D7733A7123BDB6E7755E35B10C233DE30BCB34227D7E550
69156DAF2DC5ED812C1127B1EECE52E1485FF2DD092984B0DC1E58F13115E939B3C
6929639DD3B13604CE8DCD603A13E8DCB7520461CFD6EC06F7B0B729CBDDDBB89CC
6939A70CDA0840B9098C39A01DFD556E3DF37966F07921067DE045A80D5716C8F11
694BDACA5F2AF25C7527440BAACA8C5F211A3C30FE38DDF87F34FE9E3DA9BD3ADB1
6957C151D5AD23BE78FB5672C9339F8BD904AFAD6674453A3BB589C1AF295358C1E
6964F6F89BB020E1A146B5855B46A366773B65CC0C449319CCDBE75B3D8AED76104
697E4C4ECC307FBAD006E98A40268DA58CFB135869C0DF12F3D9F96AE010BBD2AFA
6985297D587D5C599DB3687EDFE865BF7AB530C8396A7DCBF84D196D65055E078FF
699CF1BA51EDE702BCDE009D9903EA7658E906887C4BD16E91D9FD49FCA8F75517A
700332077D8284E564D84789C561E93E27CA36D32DF337713FF2E91861683F6DA40
701C5E8F505640B8CE65895FACF142565AAB691F7C9376978F98B679CBE1C163029
7021E49797740BF747243A3A569811EBAC9119E7FDE8026E752C198D116BEA29A14
70303F40F6C30C571146C72E6AB8F581AA24D24B639BE55E925DB8640CCEEBF1277
704C5628599AAF6D1858ACBDA07C56A7AA9009221D0DA3B
7050000000000000000000000000000000000000000000000000000000000000000
7060000000000000000000000000000000000000000000000000000000000000000
7070000000000000000000000000000000000000000000000000000000000000000
7080000000000000000000000000000000000000000000000000000000000000000
7090000000000000000000000000000000000000000000000000000000000000000
7100000000000000000000000000000000000000000000000000000000000000000
7110000000000000000000000000000000000000000000000000000000000000000
7120000000000000000000000000000000000000000000000000000000000000000
713cleartomark
714%%EndFont
715%%BeginFont: CMBX8
716%!PS-AdobeFont-1.1: CMBX8 1.0
717%%CreationDate: 1991 Aug 20 16:36:07
718% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
71911 dict begin
720/FontInfo 7 dict dup begin
721/version (1.0) readonly def
722/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
723/FullName (CMBX8) readonly def
724/FamilyName (Computer Modern) readonly def
725/Weight (Bold) readonly def
726/ItalicAngle 0 def
727/isFixedPitch false def
728end readonly def
729/FontName /CMBX8 def
730/PaintType 0 def
731/FontType 1 def
732/FontMatrix [0.001 0 0 0.001 0 0] readonly def
733/Encoding 256 array
7340 1 255 {1 index exch /.notdef put} for
735dup 0 /.notdef put
736readonly def
737/FontBBox{-59 -250 1235 750}readonly def
738/UniqueID 5000766 def
739currentdict end
740currentfile eexec
741D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
742016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
7439098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
744D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
745469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
7462BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
7477F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
748EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
7497ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
750AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
751E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
7524211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
7535D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
754611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
755D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
756EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
75735ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
758ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
7597365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
760C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
761B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
7623E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
76364E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
764A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
7656475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
76613F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
767689FD4E84B455C7EC6C5BFEEBEB422E156C67D7E56B8267EA704318ECE801014
768D563FBF79D9AE4F8C41CC649EFA07C8FF9FDF6109E05FE58B92CCA7E26204CE8
76905A20B86CE43C9EF809DCCC2E28021EF11EDBF36F6EF75E9AEF7FA793CB81E47
770E2618947764B7CE6C3B94321D6FB8B824794362CC8CB6BE9EB3FE6C601820830
771E7C6F16E48574F329A642AF235347CD0017155299B70CD489095443A726C89B2
7727F7110D2C8643B1FA3A938D53C087EA3491B9EC4E5B213815A281C03E8936424
773614FF39012545B995E60E3FDCB92E45F51BB69F8683F62668FED702AED16E709
7748FAAD0CD9355995820FE80C4496D133F1714114FC89E871E2F6A994A4CFE14A0
7750CB974E2ADCDD20F11FAC0101A90C215E40234B027DAFD9D31530B96239816B3
7766006A6A69E800D7EC779FD10C721F7A476C02BFE5FFFB04DDF1B12D0779080A0
7770279EFC2D4BD5A8F224083C15008218EADFD8D6089E79A4BD0EFAC995EEFECE0
77883ACF32C0790A54F6D04C945ACDF739E06690A00AE579B5DB9C91D21731DD420
7795E2891FE9E43F0F78B797C299F8C6EB6B0AA2808E28E5A01A2BA1FCFCB54598A
780E5C49FB68DEE2A0101CA67B827122072AD6E53E0DD6B62AA4A41EDF0A3C13DBB
781B42D8C0FB4BED03ED493F38EFDBD7157D84183E726CA215005699ADF49B6A5EA
7822A2F0B7599A783CBE0FFA0AA965969AA222977A13F88EBFB3C134B4445EED5AB
78380C9882E54A5E1DDB9014DB04FAD3D159857FEBC2CD56EAC237BAC2177E02C74
7840AB0C3195B3847D5D21EAC3AA0F3B916664370D6B366F877DA0BFE4A282E96AA
785F804B144DF7DE52415E39877B8D85D55D40E3B8BE0809BD5AA0E58278A9F5EE3
78633FCB97E79EDA72DF08A258DD09E18D69E8B2EA33E4E1131D58EE27B80FBE72C
7873F513A556AB5A7A4C00C6332D373E96BD0B9F037BF86ADCE6481C7CD44A0141B
788419DE72F671FAD0C4041A819F9313FC7357F775FA341F290FA4F15DD9F5742CF
789B969D56DB370C3A8F94818A1728B00B44FF035CCF32AA1F31BCCFCE4FF49FEA6
790813943645ABA47BC8E8E51A709EF55D7125156925FF994974EFA2E9BF696B153
791B5189911933C09246BA6AA23282496C2551C4F879D2A556217DCAB15EE185070
792840051E3F27BC72676B39817AB3A2AF8824151395B50DBC3999549F9AE1B6D90
79347EE409A7E1816B588A4864C783FFE112D73928193B1DD3359D9FF1ABC73C3A8
794B29027ED24B04E3AA855DC1F719AC8746BA11FA5B676BC09DBC80574114F4290
79565C30DE7F659BC1A2E5FBFB5286624B1AC8767508B0F178B3665B53BAD6363C4
796816D94B542F6AEE1E824420080AA591D66F6348A7C1225C098309DC1C491E80B
7975B1EDC8B75DD42A89BE2C598E58A3E4DC4B0B8944318006D207699E492031E15
798FBA791B235D7F677D14AC516B76700859974FB8820438F7BCD3D3B3D7D7D008F
7993880F72358A882ECB76BFAE04C1B8E0977155AB62D07D7AE038C00C267C6D9C8
800FB31C40D91A6371C0A3B0A8B7E4C92242A924D48BF3335E80C33EAB8B8B11571
801A817D8993A9C238DD5D8A6B91BDD18223B0C21A864F190E012AFB44216A9983E
8025191F4D77F7A6EE8E2967438C8975EEF92E6A436717FE2B13B2B65B1D4BA6E58
80348F4E97D41910B3C79E72B84B23D446B96EA9E74A502049A6A670F40BA362A74
8048920731738746163937EC778B249AFFC20603A6BC546E139DEA7F5FAC96723F8
8056544F0BF630B274977966135115497C1AFF7E581AA7B1B4C456CB15474929C2A
806796E752106F068D3B232D3979B27BB4C28098A657E1D4C76CB470D42BFA072A3
8071E0A1952C2DD97FAF260EA58C755DBFDC679E0CB0F20B8A25C8DCC86BA990031
808F16B1F3AF1714386545B42ED4F0CEDB0B3935D3BF86FA4D884A58A56A0737792
809094F830BD1255B695BD756987CFA4AE5030E1B24E9565289AF240C76D78D7E6E
8106299436C5853BC086D5F22A5CCEF4234E2FFAFBAF3F4F0B4B5299D47A2C6DF9C
81122EFA43E822B6140EB66BAB6268F66DF737764E84134DB9AA6BAF0663BC73421
812B7888BE30321CF239AD0AEE6B1803EF817F8B6B6A6F274D87E88EA67135BF116
813B2BBB8E8C9EFCD757A6ABCD2F799CA0CB381628507118D1082904B728534C129
81407DC200EF69A137D09D5B31A8E3EEF61C1AAA3DAAC733CDABBEA7577201938EC
8158C58115FDE70557319A6E6F7B3A746CE653AD77660FCA75ADCD1FE75C1D42DB4
816FF0CCF21DCB92274CAEEAE47782B0033BE1A5F08F98427C38FD7D337BA2DBEB0
817473157DF41B432B3859823FC2EB912C3B10FBD381CE5F4B7712B1FCE8D9AF5C3
8189FD44A255163880A8104069DAE3199515D813BDC58B0348BE7C1BBEB4105B1E8
819D33431E5F536FD5FA5C60ECB139F47402BF42E1228C2E08C7CAE985C9EB7E3D5
8201A98D830DF57DE98548ACA2C748C18FD938F30CE93F112410CC35C8D76690715
8217A0D8F4726F2E31A722E8F76DFAF3A88AE7969FAE1EDEF99EA90A19A9692899F
822A4A6F4E9C5724B5D8688A0EFA7D2FE4565B05FF5906046BD1AEDE1E992C84289
823E9BDD813EA9E87791229ED1E267A3023B53F808F1F96EE21049F02E6703A22EB
824A1ACA6DBB4310D15DC12192150BAE79EC915281ECBEC904A49301438F53986DF
825E7EB0EFC44985266EC846A4A12AA7B9A90E3799FFFF4110D311643B2E2EF8961
826A61CBA357C947A91056C798B23641C2CF30FB4B38BD53E7DB9AFB0B8F69F1074
8277CB154A179B796DF230D1ECD4E6569EE80190C6361593946BCC005EE3732D343
82816935D2FE49856756B9F87DD6B8DE288AA3A3201FC7E77F75A42CD95BFB42236
8290C1DE3177DA2B50F1C68DC36BFC189EAFE388116160F65EA2626D9B7CE44C375
8307D5FD83F8E9B8E9609A9B46777932A21B73ED98B8C714A954EEB2DD9FA3937A3
831DF41FE76D214E9C9D8DB712B275E91F9E32F31D98E30A7D0B3CF718A52134F86
832D1E088F91FF3D86490EE0852AF23D9856F271A1617F6B06E0CE1C163D7886908
83377E5C0C522E0F0AF8E7B05205FEBB92C68FF99DA858BE00E6C7CBFDEF8ACCC60
834FF9E48E4F5B1FB95DDB11AB4CB09D9E59E4B981E2A59F77881E2CB31057A6416
8355208B180D301DC13F842CEBBF97AE7A3523EA8C6FEB5DBC96437EDBA53F78730
83693EAE0A81715E303894E12977EA37DA3559AE4B5AC49B84E44B71DA99F487A55
837CF35FD75E5EDAC5397F373B018CBFF45E00F704D3AD2CBA79F1119C31EA1475E
8383289FF427407ACC5F516CF88F3F762543D765609CB618ECD786425F54CC509F7
8397734B0E217F638A61D169706EEA92A552766FC0ADB2D87AD46D8EEA079CC96FE
8408CEC5B7E61A87FD26BDA35F8508177C74B42B694A6BAA8BE7A906B30C5CECCD5
841C0CC4857450612B69DAB66EDD6BE13E9B106A26DAFF419095859D5D1D01641B5
842B34155887DB441C5ED0BCE1A7B9E12497F681BD03FAD87AFC6BAAFE23B406427
843763455BB4B9DA86CEFA6484BE30BEA1E43FF8C3007147745A35F283CEEFE1866
84426DAD4A22200F50E638BBA2EFF73C1DC358CB9C1D377E6EE9E9A18B8ADCCA028
845FDD4BB09DDB37C0DE0E56512AF00C57D4FD02B6DB966ECFD0BC122A55BB9FE05
846F20D682CF3FE2954F32BE305CAA9E50BD652D52460152B9149E891D419FCC078
847E9EBC6A940048EA2173C0CA463D7DE339CCAB9A86467CD1548066788C54FCF5D
8488C87CC51FAF946C75EDA7F6A9165D42E5F5BD629B84F298D790523D5AFB2FE10
849C2B9D578FAF1748BC0EB868D498BA46999F36722A7C38A6A7B34B85238F4A640
850ED5327411CA5D44E22219BE1157F163C145DA6E93ABC5D0DE2B3A7AB01EA33F1
8512B46502148336F06D6501AAC93717117BCE587FA86DA114DD9E264F5B1120A08
852AC1CF7C42992AFE0DBEA926A731FDB4996BC9405BD35245A6D08FAD20D3FBB49
8533075948A25C1634F0290D5AAFFCD7ABBEDDD607A7250D3023BCF2D2002395BBA
854B252F6D039EF1FBA7C71C94F45029FD935F5CC48F6277B5C843881569C5C4AD3
8557B54E2248A81B42FAE507F105CFEB1C3EA4D99C9451A05829733D2AB14F26B26
856C02D1496C8EBB12425A2B90E94E76C507C14673665DDBAB34668C44BD1834992
8573542D09B76604E40F61B2869D09E568E03003F15752B066E4CE03836F49E699D
8589A4AE3C95AA7C73CDB829E7384288A696CFBB0169BD6A38AFA1D514CA7F1145A
8599ABA828991D7C553A30F340FD31ED6C6FBE5403E983ED3792A3B4BD34BAEA85B
8602171D8C91E3B6D8C44E9B464B1723D035BD38F65561AD340C1396CF2153E166D
861EC384FDF9BEEFC97CD9542FC26601AC4CFF9AD232AAC0C2E36FBBA289DF156F8
862B5872E75BA8D7947433A935387F49100C80213EE8F55622A7BDA1531FF68E5E3
8636810922DCEAEA6D335021087F623FC7FFCF401C40D848AB54951788FBD03D87D
8646CB419871FCB786D3E9B3C67A0F9473D1437B207904ABC36532D01FEFD1CE90D
86545E201D5A119F18F22A820A28D74FDA3B36D4560AAA27C7DB2881BE51D8B9D5F
866D8BB25D3CDF776CA9EFD032B9EA3D4337A393289B02EBFF68727F8511CADB4A8
86782C08DB25B1193AE786E9AAD1A929519A93CCD44D1FED5C82D5FC461A9B19852
86848E075C46A8C00A10CC95F32B2E63367F95971CD81B60CB3D5820E7C0A14E2B0
86900681E53305C074E6DCF4F2C0E4D7F5468868ED3ED09C1CF7D19ABBDF904D2B2
8705250126EB91E19F24EFF107D86BD4D5AA7BE3B23E2782C7EB3018D1E23E11526
87103B929656A4ABF84CBD36304951204FA43CCD202225B59E6EEAB55BE99894501
8726FCB70F8F01113CBD194AADC48250D1DC39C07D578D3B883796D2AA489D197F0
873CB13E7BCF91121B7019F92431786E58CDBDD29E46463DFBC06BC43254E7D5EF6
8748377EAADD1F4B6C80C6CEFED86924F4B9BC4FFB42250ABB944862C39E9498CBC
875744E6838E7AC0BFC57B1857898D586C3D1CC2F5C344A39CCF0955D95649962B3
8769B2FE61EB993FC2A0FD2DAE84F26CE93489B12B921ED8F7B06F08BD1D3967366
877255B1E5C01D7E1999EFEB6D5522901650DAE91AF9179787DE84D036469ADA85B
8788A4BC32248E176EEEE808C72D095F941BE5E6BD14D1C82D5402FE177C6EC2069
879842B7073935BA15F5C49F275F878C344BE880F01DE28C735B1B30424F63D8670
880C4CF154CC98F030B2259798F9E62F14B5FF3DF856B7BFF262B88F0EB12C7AD29
88103D0C3AA02A3D51011057FA9C1D06D56BE593137A8532A60B6DEB05BCAE23DF5
88202F05CE14181B7F00ED410ADE26B070C1FA51C22562698CC442BB5BC1E2007E5
883BA70DA947C0D4613C0B1925E7BB88A7B82383D165B3D8A045EBD8DF273F5E174
884E7F66051FDD55E9560102CFCC1D5523BCD843038A46C8BBD7142AA2BE7B22A11
885D822E93F01F25DF7F1F89833B166F3CD0B1631EF2B15DE9E33F4220AD53D7291
886E43FE0BD7B47CD0B89199E206B36FEDA5B471BB5F4B14D96529FA3B053DBD9AC
8873F0D45357F2008EC4A4194A6EA0497E1977D6F4E5C35C013DAC1281CB16307FE
8882888BE19CC22892556C9D8B1B2BAB7DEDE89F39F00AB6C6B1AB3C6C61FD98009
889A8DD8E2BD378B724B72D866CDB1C497EB3A270C6BC423BAAEB11BECD4079F28D
8905111F14CBE73EDB6F327316641BEB1E987779D42C71F95E8E00BD3E205427215
891E2EA543A83124CBAC0F79347F9C801E255D553EEC4A62B718D4AC2F54EBF31BA
8925522AF73E9680E62B122390743D879CF0E69DE4F4C3DE374EE3CEFF1E3759407
8932CED877D736F939D30774F24A24C9F83473F9BE23AC56BC67BCF3D29A18D28F8
8945BA0C2AE83A41DC4C3EF4F74A4AA78787D0B9146BB375F3322FE40E994C0E12E
895CD0AE0A276911061FD23186374BE6EC5833E6ABC09E1AB5C46B098B1A1AF33FF
896E11B1E730819A27A2C768C003D7E5E3325AC3D51AC9DFD993F74DA68CD1A7698
897D4BA04DA1A690A595FE3340D702D57678187ED6459A8C8128F164F7851871D91
898B922F2F30A99286EBB3EC8E1501599109B4575096B89AB5D86201FE35E193295
899886322EF4F72623A7903FC8AD577C70D80ADEA4570DE5BF89455CF407275F7ED
9007265752232EF39EB140725C03B25B832EED91CFBED42042CD6482B161A649891
901F12A097ED1A99B77B42459A69017D113E14788ED463571086D293EB9A29762C9
902CC304629324B48E67631AC2A56D246B4A77746029DF182DEB8DA0D9D2D845CAC
90369FB6D6CC03C0C1C021F6BD8838520008882C2FF0D7D5B5AD98D3869E5C263E9
904A4E83BDB6C1074CF2501247498DF02449A1215F4345E1024F9877FF86D441F17
9057C3487D6B2B7D07BFD0B33EBB519ACC3E7411DD4D2C096CB9BAFADEC8EFDC904
9060ED54AEEFECF1E96D0614784B1B9DC8F1D856F390D2C0273FE99FCC892763317
907A26940B09B46D79342E159D2B5B4B307C5BC1523EFB1968504B2FD69AFB37B20
908A787F7295B6586626D9D0F480E34D366011E99FB01F44C45CCEABF9F24B52502
909C4FBDE3790BBC0B9A4B8579294E692363B4A496EB236F77F319C0B661C42FB4C
9103849B8E338AE185E904AE8922341CC0CC18604290526483394D43947F34F534E
9118A1A0C028771267B757EC2E356BEEA3C0C42C19CFC53F84D9C81D03CAFFB8944
9120AE6B68D15CDADE9FE4B31F9DCF7999EA3D70A3EB09E20D2DD5119A4425E83D0
913825BF77EF18C6CB6A134D513FB9B6E623CCC3482B52DCE326C6AA77BC464B8C9
914AE0D7A0E9D9D96838B2612A1C56DD1DC475A146DCC08918537F7D7D8CFB4C632
915384F9591649CCD36887163FCAFAD51207D00C7567C81C72EF4FD7079C322BDB4
9169F92D883A7230B55AE2B7CB33224843B8080A748CBA3338038E3CAFE39759254
9178C25295A497199F99F66DE767BA520FA0889CA2947FA4E28AE74FDF80472D5B1
9185047D83CD272ADE577283B6FB785FB10043E7BCE5090912D544CABE81A784EE9
91927CB0525FB5461D84A221C8A66432D8C0F3D11801B08B5A0A6E81BB30567D0CA
920B58D2C33D90C300B03D494008433071BA6A245EFA16EE229CE4A94DE6DFC1A41
921AF69154DD23AEA4972EA5067E894ECF9EEF3E4671D00B947BEA81DBAB8CC01DB
92237AF810B5DE58EF5B0089C6AB06E8DAB6A71887741C0CBE58F9864B7E4FF3013
923D6CE6A489DC5729AE9E21863FA566A00F573E63F172748D8F6231C0F211947FB
9248DE5AC7D3C4397A24974BECAD814F9FCCE56B89CA779F39B5C73242B0D6BC5FF
9250DF7FF155DE8180122FFD2C2ADA2689DBADD7D26C78586DD0310C838923EF309
9267429A96FCBCCF22F968875B92AD7FE9716823C54D50CE987DE5F487342BF69D5
927EDE136B7E2C92C55B3A378298225A525C1D04E187997302B4F75D0672547F227
92806F9A21C16B40CB112B3D1E0E02B701E657666E4A16E227578B68A9DED734A1C
92932AEC59EE64DEC565BB123C481AB0AB941A14FB66667148F1C13BA3C48817735
930207D0A17F0860C7A2E82C5F4E1201635BFA79AC0E6CC7A77071D32DEB1E35EA7
9315CBB675DF5D68E4A88CD8DF04DA8D6CE1156BA93967E4DD90A5C1E72E3A228BA
93250BD4A3AC049E501F76E76F55909368A8F76E0EB8D85741F8CD9B9D5C6BD424B
933C25889D930B3A6EC36170A4CEF7E3E274DE7616000C14BDFDC726F323B4E3429
93474B7280C12FE3332FAFEF006A7BD47E97134EF23D3E83DE9A8E04D3E914F3510
93515016B4489959321E320E0BBA88D58B2732EF3655703C58B64CF71C1D5A2723D
936AB7C59AF13AB1ED12A39ED877BD06E1748FDC97300976CBBD128BB054CCD8405
9376F495791F69588AF6298279D065341A47CC018CB76EF3A1F7B78C16450E06D1F
938879107BA9926202B55FA95FF7F685D7BDF1D893FEC66DF13CBCB1FF992D0998D
93987B62C35DC4991014E64F9BDBF5D47A64949EFE4F076C5F5610EA4A743378116
940A6739DCF540EFF064EAB053B9ED34743C724E7D2C6CA542D150EF887CA78D53C
941A96ED7F1340B2ED6D5A67F5513DA63D4909E1F8CBC25ACC24B743A3B49058633
942B605A132FE9F9B01EB75243BFB248FDCE25E82FA7B589E5403B8C1B822931D03
943ADEC24EBFA8AE740E7692AB5418E71ED25885FDB38087E3755227BF9D7D14CE0
9449DDF48A7CE11128AB6B0A53A75C0AB7B9CD68FDD2A4B29217443CEC5C8680222
945CBFE6EC20F17193ADBAACD485D8333A95276C071B0A8385E43E9D7CAAECDD39A
946D649CFB1EC72212C5296D1AACB75EDE6D4360F2EC9F441A73AA7BC2AA04ED028
9474B95F1264DF0F21A969494A1E959372937C624058A1B37414254BB718BBE99E8
9485DEFA7C0EC0D741D7612F73044AC37BA46564ED2307CBA6E22264B3539020A93
949E2685648B95216CBBD4B22EDFE51F4BD6C91F41828A00F844660B32A5BF9C5C7
950D68A46412DABD78659AA24A4D6BF67D2147972C47AC2C3217C55F95A992205E0
95168199AF701DB276C7A53D7104560A645E89EE2CABE14B5DBA333859D81C20293
95284EA8DF06BA4AA429FFA34E5C87CCA5525D360C5848AD2CE6051564B9FD6B454
953A2E4C1913E0EA6F7B5E4119026CF2C8488D5DDB905C64D5F07378B05B9DCF5F7
954552EDE447A018DA29A677BE310D0B6B22469F97353ED39C6BF5526605EE7941B
9559773DA131070B75AC8F50177659EB138A07DECE0524EB34DA9F3EAAFC01C0374
956728B0202ABACCD138A1E7F1A4B3C006D794A19596641959CE10A5E83F848A919
957E6C0101EC00465563F1BB028A0882D619CC2D923E9CC4B1C85BDCA479F188E52
9582A90133B45626B6623D039B471F9D9FC144E5228207DF1A8035BFC0301CD173A
9597A7B828D27CDAD2A0B4BCAF8C99C62310B04F72EBBBC458C785E5F23BE9D1459
9608773C9C0648E11D92B73D49BC7D587E4E1CE1C0E93FDB67B432C35A21253775F
961754EFA2148EC95CE33B6686BEA49224E818533235E8493364C6078513FCFB982
9624155EFAA41B59986DADBE962285C9E842AD3DF0DF9E9075D28E1B45BE27A2AFE
9632CF48B90ED76F75C4D40A48649177285FD19340660BB45564D70D179772CEB69
964D701FD356CF5A551CB8B36EA1E30DAECED401294B7715509417F08BF1CB7277E
965C73392AE92C0DEA0E8D08E0E4ECE92334ECED69508B32C565F1E54B227F57B9A
966BC49EFA298E8364979C63AAF76F1129836C32F04286271DFD85C5EB08BA45FB9
967097409B5491F3FD6A921E5385EE763B6F9867EF2BBA496AA64529CBBCC534AB9
968165C59BE8A43CB0BC47DDF1F6127A9A9DE5E69126B5B1C54B396C9EFA01BE602
9693A7165A39E8F80E58EE14E6AB9A8EAC5EEEED389ED027319E66974B710E887C3
9709EE4AF6AA8387E81CF302D8D
9710000000000000000000000000000000000000000000000000000000000000000
9720000000000000000000000000000000000000000000000000000000000000000
9730000000000000000000000000000000000000000000000000000000000000000
9740000000000000000000000000000000000000000000000000000000000000000
9750000000000000000000000000000000000000000000000000000000000000000
9760000000000000000000000000000000000000000000000000000000000000000
9770000000000000000000000000000000000000000000000000000000000000000
9780000000000000000000000000000000000000000000000000000000000000000
979cleartomark
980%%EndFont
981%%BeginFont: CMSY8
982%!PS-AdobeFont-1.1: CMSY8 1.0
983%%CreationDate: 1991 Aug 15 07:22:10
984% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
98511 dict begin
986/FontInfo 7 dict dup begin
987/version (1.0) readonly def
988/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
989/FullName (CMSY8) readonly def
990/FamilyName (Computer Modern) readonly def
991/Weight (Medium) readonly def
992/ItalicAngle -14.035 def
993/isFixedPitch false def
994end readonly def
995/FontName /CMSY8 def
996/PaintType 0 def
997/FontType 1 def
998/FontMatrix [0.001 0 0 0.001 0 0] readonly def
999/Encoding 256 array
10000 1 255 {1 index exch /.notdef put} for
1001dup 0 /.notdef put
1002readonly def
1003/FontBBox{-30 -955 1185 779}readonly def
1004/UniqueID 5000818 def
1005currentdict end
1006currentfile eexec
1007D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
10087D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
1009A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
1010E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
1011221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
10125B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
101380F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
10141477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
1015DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
10169C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
1017CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
1018F83C7D393392BCBC227771CDCB976E933025375FFCDD9E2FD073678A57A333F9
10196BDA68191ED103DB904FC6A75017A9939B1F14A711BC0B140F6C4E6C217EEADC
10202B649171318049FC272C351B1417B517204D5DBE34FA6D6B93E1E6086F880CF6
1021401E7F67B5A91AD4822EF4FFFBB79015651EAAF84024DFD7A74045CA18515E88
10227EE363BCB8BF9D97ED631D5C1CD97006AB3AC94DA76099C945488544974B0FE8
1023A3F15D97A0BE56338625A0D0CFE8566B8FB3A70AE8CEC759E7B52084939014AC
1024604115957B2FB7E97BAFEE38905AA81476D225B96F0379A68BF3270503F3B605
1025A77CCFC93318E4C44A1C17F011F4BB61E95E82A0FB39A886C2CABDCD59D5A7A4
102602936AD8819B50869E5B3080E67ACB7DF8FAA4DE4F95E8679063A8A442696EF4
1027E0F13F9F966B536A4BF33A36A9A43B025255B682726E76504D03A6724E62BAD6
102863F90049D953A490976D70C6B1E9B8EB268C452EE5DE8387D12C679EE0BD9CA7
1029FD250629BC87CB357480E70C655668AD8DB83DD15E4D4FD79FE1B857D70F2B36
1030D49659715E1985E9945F4C694D004220D03FF36AA87F37F403654BEFFF0730C4
1031FF9D5D6D172B12C72B56F4EF01F647E79C2C2FF41D8D8209CB316FE7CFF71F6E
10325200D1F92FD7928FB8E90B3B0D6C51F2757B30DB38C12874628ABF1159B244A8
10330957D756FE6AF818421A7D15AFBB29D24FDCB4BF305BF5C7D2AB5ECD83E3E1C0
10341C2AF2321C8B497AC074CBD0EC5879AC61E5F0549F39BF447A4B6A88870FAEF8
10353F4BD675FF5F0901E3B88DB5C6BD3F6BAAF9A842C2724D007121E63F33CE21D5
103637D3F50B33FBB92C371BCC73C7071D4EC40C8E0E5F
10370000000000000000000000000000000000000000000000000000000000000000
10380000000000000000000000000000000000000000000000000000000000000000
10390000000000000000000000000000000000000000000000000000000000000000
10400000000000000000000000000000000000000000000000000000000000000000
10410000000000000000000000000000000000000000000000000000000000000000
10420000000000000000000000000000000000000000000000000000000000000000
10430000000000000000000000000000000000000000000000000000000000000000
10440000000000000000000000000000000000000000000000000000000000000000
1045cleartomark
1046%%EndFont
1047%%BeginFont: CMR7
1048%!PS-AdobeFont-1.1: CMR7 1.0
1049%%CreationDate: 1991 Aug 20 16:39:21
1050% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
105111 dict begin
1052/FontInfo 7 dict dup begin
1053/version (1.0) readonly def
1054/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1055/FullName (CMR7) readonly def
1056/FamilyName (Computer Modern) readonly def
1057/Weight (Medium) readonly def
1058/ItalicAngle 0 def
1059/isFixedPitch false def
1060end readonly def
1061/FontName /CMR7 def
1062/PaintType 0 def
1063/FontType 1 def
1064/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1065/Encoding 256 array
10660 1 255 {1 index exch /.notdef put} for
1067dup 0 /.notdef put
1068readonly def
1069/FontBBox{-27 -250 1122 750}readonly def
1070/UniqueID 5000790 def
1071currentdict end
1072currentfile eexec
1073D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1074016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
10759098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1076D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1077469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
10782BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
1079E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
108047AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
10818882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
108278B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
10831060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
108401426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
1085C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
1086F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
10878E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
1088A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
1089455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
10909A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
1091EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
109252F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
1093563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
10940BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
10957ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
10960AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
10971E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4A78141CA32C
1098B3C74E1A0AE0520B950B826B0ABD81766035058ED1654D00FE541CAD1D246C0E
1099DE85FCD3C0BF7A70B913487B1A527EA823C00C39DB61FD6641B140FCED8580D8
1100046741D2494B4E7CA1F120CBB0A532BE049CABEB70A39018E8212F8178E93C98
1101B377AE2880FE39BA0EE29451857DB34964DA26ACA4CD23CE284ACE37D89571FF
1102CB67DE7AE379B74B32ECACC5F3DE0566CE9EE820E96F27653C75935851CD9360
1103A83C7EE8270383CB8A80715BC2B62B1F709235A5A73D99710D7665182D461095
1104B98C8A0FEA44F0F1959055D50BABC7880E7BA1CA4CD72531A240A622663A0A1F
1105DBE4FB907F97515CB1100282C9A0241F65F84EBAB1701FC105BD25F82807F4CB
11066A5EDB5CB156A7D55F64146818245C112DB0FEE9E0AC96B4B2AEB27F89FE0560
1107727D85FE6CFF5C457EB1EE5D7E2A09979684E2611BA57A1BC7BA4E37DC4BA761
1108557D986F9A8B495CB7212507AA79C297B0665CB5883F2332DF5CB088A92E24BD
11091EBADCAA515B567FAA9E15E7B8DA60C1BBEEF5A2E0D4C0C67EDAD822B5E8D81C
11106D29928726D36EF0A9238476FE54D4990E8D75FE0109C0336DD50F9021307213
1111F69C700D2291C546007CF3A5DF3BF5ABEEB640D3AEF585055A65EB2CA7AD7F11
111222182523EAA8FCF029C604212529C03F179566E6B731FFE2283D6402A350EAB9
11133C7FFF41383A9398B33C48FB2F9A8241D65425FC5E49DC9BB97521D91E44B3C8
1114B2EB1BA8D532BBF175486D1DDB914BCB92968D342B5C1FD6FC72DA462FF68992
1115464BF0E00D05C2AC3729E598991C6EE7354F0C400296356ABAB37A16FA504DC9
1116B6369F88BDB7061D5EEB761527E588B4A6C83169B517991789D664BB543A0E57
11176F2529BDC7838AFB93D53D5794E57B65A7DB00584492C046F72CE19E4D1B177D
11181D951362B2F7CE2B720B305D45B7FC74183C1DE46073D8E20FDF8027FBFCDF40
11195F0950F5AAC19AC8E8D9A57A271C0BB212822798DCD068B4F05DBAC2AF7BB25F
11205DFBFBFB5A51ED26ACB22541E1971002A5D97B5E148F8F087A3229C4
11210000000000000000000000000000000000000000000000000000000000000000
11220000000000000000000000000000000000000000000000000000000000000000
11230000000000000000000000000000000000000000000000000000000000000000
11240000000000000000000000000000000000000000000000000000000000000000
11250000000000000000000000000000000000000000000000000000000000000000
11260000000000000000000000000000000000000000000000000000000000000000
11270000000000000000000000000000000000000000000000000000000000000000
11280000000000000000000000000000000000000000000000000000000000000000
1129cleartomark
1130%%EndFont
1131%%BeginFont: CMTT8
1132%!PS-AdobeFont-1.1: CMTT8 1.0
1133%%CreationDate: 1991 Aug 20 16:46:05
1134% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
113511 dict begin
1136/FontInfo 7 dict dup begin
1137/version (1.0) readonly def
1138/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1139/FullName (CMTT8) readonly def
1140/FamilyName (Computer Modern) readonly def
1141/Weight (Medium) readonly def
1142/ItalicAngle 0 def
1143/isFixedPitch true def
1144end readonly def
1145/FontName /CMTT8 def
1146/PaintType 0 def
1147/FontType 1 def
1148/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1149/Encoding 256 array
11500 1 255 {1 index exch /.notdef put} for
1151dup 0 /.notdef put
1152readonly def
1153/FontBBox{-5 -232 545 699}readonly def
1154/UniqueID 5000830 def
1155currentdict end
1156currentfile eexec
1157D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1158016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
11599098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1160D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1161469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
11622BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
11633317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
1164ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
1165C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
1166F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
11674DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
116861FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
11696C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
1170B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
11716BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
1172C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
1173BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
117452BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
117548FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
1176351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
1177C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
11785839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
11791BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
11803BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
1181F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
11826501DA7E6D96E227068E993DBB0072F037CA411E429252586CA153360490EC5E
11832AA8727E9605FB75714E22C232C05DA77FE4B12630E21C745889A8ADC706FD27
1184831F980EAC18330D5D2E46563316C36CB25F50875F7848978142575A3D2784BD
1185C9C3A029D9600CA3E9D7A26A5DDB8567F8BF48DA2B08CBE7B76EA261CD180CF3
11863385CDAD915A90244C5660C6F9E32E6027D730681B88FC02E6C9B401E93072DD
11876E018048D22EE65F0A03018F444194BDEA833D8EAE56C2E5E03FBC7558684C32
1188C1353169FC072C0A217D2CD18C4FEF6F6EE2E1D687939244014B09DDD8CF6193
1189034D71F007EC89B97005E00A81721503C87B875A6BA33B4D6B2D65AE32141AD4
1190160293043FC5425EECEA875CE6F87E7C6F6200B9D52C0E285891C0FF88A0E361
1191E7A51574CEE3918B9CBC83B37DEE303859B4545A7F1EEA33C7A4459E6EF15953
1192A57D7DE99C7BD953B7DE84BC5C0A60A1768EFBA317849A4A8436F6364BE2F323
11934C99478E2B7C83BFF1AEB394C489CD87D7606181C61D15C85760761DC7F3A81F
1194AB9F63366378809931F10710C8A595966590AE5A85DFE5DF86D59853546C87D9
1195957992FF7C0D11FBA2193EAF02356A1D08F2C8A7AB2FE92001E0EE2AEC0ACD52
1196E52D961E65B79F613F0F9B51EB31F244087B484697C3D4DC28550B173BA7E4CD
11978D0B0FBE866090BEAF95403D5D03D90AEB48688A8BDDA8AA0E8AB89DD3EB27F0
119899622F21C77FFAA3A8A5A67DD6F16AFF35C2B96957216B0021F2D6415A0F5730
1199D179FACB55678F5976010A20EF3C0B4EF5CADEE4C4DDE59A3DD93A87881DAD14
12005E9438F095C9970B2DE2AA6CC85D26471A93BF7D9ABF0253FACFAEC66AC40563
120124CE6C4DEF61D3855985116CCDB53A70AA7B5F941DD21A2DE52FE42AD35E08CD
12020FDED28B65290948030C5F40DCFAC51F51E4AA828CDBC114060B7370DA18F7C9
120312378ED10D192F3BDD11375603EC90EE421E4781A41549555F35021C57813161
1204145511117E96E829386BF43423099250C8695DB2B891D68B4DB7D949F481CBBA
12051DDE08680F7FBC05F9F00FF10ABD21032FC71E7EE2EB4BD97F48842FBCB00E73
1206BA581330A21BEEF313BA3E5B8729459393B15B5FF7B63D985F6B0DDF3C90F3D0
120775691B2628BB9D93049A634FABC67137F727E13CA04481820112D953881ACBD7
12089A85175D2394FE355A4A6E485F3B1D69D8C06EE532CB2508D8F3F1E65C0369F5
1209F10B3D86E8333AA1228560C37614F8F924585323FF0AA91465B288F5BA39AB56
121027CB01ED906DF594DF3BDE610AE97315B6E0C0786691CA63CD16F32C883B5FB6
1211DAE4A1C028BF5D935A377C317C2AC0F738BF2F5001BB6347B1EE4E851B7D4264
121220EAA262FF69C8C01A4361C9CD7558F4D57E14C0F631D4576C0754191CEBAD26
12132598FA77F1B5F8C511953EAD4A92ECE452C5EC23065C812C7C355AA448F429D5
121499D4B28A65F539333EFBC3CADD3F0824F8D04368A12F309A71917FFD1CB30364
1215CF98DCC3BD50B0B30CB8E07348267B834EA740352F90312B24BBC22D30D28C0D
12162E571EB8C6B7BD316C311D84B168CB4E95C4AB2D6A1351EDD204696C2D728E73
12175352F0CF2504B6A32D07F207AB5207E465239EB916A77EB60ABA8D3BB42A207C
1218468068A6E9820747D8F4DA73D8352B70F1284545A66D4A5128B96F48AD7F24E4
12195978B267C2E65E0EA8BCE8A8CC397F50C5E0946842F0AFAC4D058D93D5125836
12200FF4BCCA05CB3C4AE932E73878A04D07D431B8940466E58690DB3824BA18AB19
12216A4154392C85B170BFB08A4E2B20A22971BB62BB54BC5476B70FB2A36D319917
122249A7138FCBD505B64FE319DB6B160B1C55450F7C3EB1AE1C1E1596B9FB4601B0
12238293C6D340C9A301F0B3A16BEA8EE0B593E1442E802AAC63BB90B7069D758E9D
1224183E3B753D8872EF6F584673E41838C891DA7B2931FCB41C2AABA22CDEC44AA5
122523646E86239A2A638EC8E0D7AF8A060F6932C10C7C933FE4C3B8FD2FE068CF15
1226B0A0D71564C70C420B3443D8038A2D42EAD34FA04B405970223376E59B8A6DEA
1227314520BFA5ED90353E0A8DF082478ABAD2AB826BF12EEF1918C1BADC6AA043E0
122890A8DA3A412917629A1CBBF535C2E0DC90929DE932CC286CEE95228B73031E77
12293B0B87E4BA3E539FC92A2730B03E6DF5F947C09B9E99400D5E081BA931FE79E2
1230306FE667D7C94545C0311F3D9939F315A586BDF6AE2FEDE5F32861DF838567F7
1231530FF07F5A3210373C39C6A63B03CDF708EAF7229ACF271D0C78E02550B0A51F
123268B9235465D181CAA18607B10F23597AF69510A74EEA27ACE4EB74EDFDE2DEF1
123393A0DC2E47252E4CEA86790164EF264EFF54519DA5AD87A12177B15776140E86
1234D5CE9F213FF3E3ADFD8CD77FAEFEDB903761EC61BBFB2D4E04DBCE5E2A25EB81
1235973F8158177C0DCA0426E27E048FF3726702B4ED43053B1ABBFF23DF91720A8F
12362233266ACB4850A51F94644F90BFBB9573DCA298C47E77D111489D8B8DA44DAF
12374B943A5373AC74CD66A0572A173F85B959A511D0C3EC4A2C339A0157255C8DF8
12387F6E8C1DCB677CC115006ABBF37E4DF57E67F1B6E2D061995F31DADF8618E596
1239FBE25F8E0E89EBDD6456E4CC212F0BBE2DEB6E67F64B599D810680DCB4F1AB73
124087016A9ACBCBE0F369DC9E5FFB1E10D6972BCCB70B708DFF31D680AC7440658A
124123A460F7AE49361DB66264638C63DFAAE5FD596B78D5B67366694FBD5E0F5D46
124223BE41CFBF87BB1516F1292F4C0CD729C65BA9CA1CDDC19E3B61B015024C21AF
1243751DE2EBC67F4C2C3141B0356D0143C7A980AF68FF61C30DB9CAA9D037D880A4
12441B456B6811B6FE5E452DBE16ABC3FECD679DFAB214951C5E77581BD007BCDD6B
12451E266FED7A65200B8AA2950E73A061775385A6E519A53BCEA85193EAB87D286F
1246751457CBA382189086E34FE5714F4899E38ECBD456F243D235B9E8472DD8F40D
124714D5B68BEDBA0E21DF657524EDAC18DE0B09CF7876E0408F69851B98717754A6
12484B2C1957EE4370920647A67C66B95DE345D6D5718C05132A86BC3256425493C4
1249C83E23014A7988E89F223B2A123041BFDB762BE64061DF119440A1256FC72AD4
12502F4F3F979042288CE008E1BDF144FDCCD0BB26F467BBA9E8B2ACE438E4EB7F2D
125198B82CA0E129CBE7E21453AD0EE151C4D9D09AE6B32E29CF82F64E2DE3C76827
1252099B86E2B64F1B4A2705A259301B221C6C5A1ADE04BE8A1F8022A0D3C1E4F601
125337AFB8D973ADE45BA343DEC97919298B12DAF45D41A36C886A1573071A30A0F8
12540FACAA8F25D8B3035EFC3C1C6A2BEF12A387368C790FC900FC9F74A61C7D4C3D
125523400F710573A56685325CA26B23461BF8D1123E16A9A2C107B9EE8DCD39E138
12560E10E36A6467BD5046B6BC967D981B598BFBE2AD90FDCBA7015609344924544A
125711E86E02FC9727B2770B732E60C21A7C60EAA31C14DF51BAF8A525041D15D1AB
1258685B03E7B74A1B97F2D77448F02B3BE93316C49C07B4EE31E7195043D05D7C10
125988C1847E54896977A09E3A1BAD475A3F812EC64FC99A1E86EB3CFC01391E5C7D
12608696BA362A7DA2172FB0EF99185C01741F97D66FF795B10E84385B6C9E996853
12615C72B3A226E18AB4EE7FAC1D4C5141C716BCA627E3305245A04D7EE11A7AC97F
126259862F5577EAC9D9976FA5F6C3514D296454AFFAB78EB568DB11DDCB1AC4BCDC
12630CB0CE0A02AE97380F9978FF55B10C9882279AD6314FBDC587FD9A7E6E443773
126472EB7C52A118F79EB4CE3FDB2F666D43227B3059999CA25DC06ACD657F4768D8
1265C82CE400837C08A2935F430987348A27CAD51AC8639CDBDC4C911ECE62CFE94F
12662A1F28F10EC80A3946566FB09F6B8731EEC4571522ABB2A90792339331F3FB1E
1267EF0BB328C57D30E5B1849B6937698E49ACA84FFF48F716EC81025091EEE4CD06
1268A3404843DF013CCDFE867C7CF2A29C1DFE96DFDC47B65E916070E6D019C0A62E
12693A1D5EA282B3702B1B20729F4791D90E6968342C440622EB34D774BEA2339FBE
1270F52C4655ADA9515B0A79A2C4E628E6539E57D2BEE0D7084F74BFC2B3C4B36F55
12717B9003ECFDAA58BC265C1E8ECDC78CD47038ACF5F0C37E7A076A8B16F9F712BF
1272E16240917C281C41EA3CE87CE4C1C976711D83374974D37A00FFA7B280D76FDF
127379D1BF415CE8686414CAEE79D2FDE623D40A789A98DC2A6B88255A67717EBE54
12748E0FABA8082EDC2AEAA66F509CDCB5E73BDA6E20CA603B83446213A967B77C99
12752D6A58FBBE0159CBF46E368A28956E45816173719983CD1B775C940CDC769E71
12763331680DEAC9FCE0C9FC2B1CFCBC6C6638E02F93B4F51219A6FD277024F8A61F
12771641A540CCDAF1CC25EF0429A0C9D403F6A31852249D3ACCCF14E4110A58399F
127812FF0DCB0B4FA1AAE66F52C9A6C6718FEFBA51292F2D48A762197034B06FE1C6
1279B784B4DC6AD9578BE38A33896B6C528208C33BB5482E1D2DE4217743A4DE46E4
12801C2F02BC25B4BD8F2037D362E9DC6F7878B77AB6D3DEDA9C7E1EDCFF9257C7EA
1281B42065CC8BC029FA1AE9570B17811DFCFA0E23A12B9C7A42444A02A8A2CFF5C4
12825013A984668C3BAA0B4186182054E8CE7EEB9B09DFE7A4F081BF16A57D26169B
1283EFA22E7BA38AAE8D01B1A894904AAE56B79DC018E63030B58849FFF875A675D8
1284A52F9606650450A452EC0C0D3B494506903DB65BF4BFC8BF6C8B79033737BD1C
12851915A4451B10CA2C5195458B4E6D193CB1AC7386730AEECD1184A69B07B418FF
1286B0E5620F8D2ADFF93CEA7F5DD4E71FC497FA6F64AB31D16BC00EC5F8A01FE192
12874E7EF5104EEB6D098D617268E79A4A2B9F4869EC952B4D6887FE9BDB61D26397
128869AB66F43996DFE771736F081719B6987C5DFA86B91F07CF1FADEA6390AA9B4D
128953093D427DA39F08096161E1742740639C332FCC40DF91A295A671782CF8C713
12900FA36B95A55406BD18FDCBE9D1AF9492CC5C3DB7DCCDACC1DA5D40F2CC2C365E
1291F99EDC21B3EDC564D282029AAF62A49B6BA5C6937DD1BB15E68BFA698549EDFF
1292BF0D4FB2645885BEC5B79E8475C43E5DABA6B60E72E31174054724F711FF3884
129336B27B2DB7677F04A704E7427B00FBF8880C0482E98893E23AE0ABB7CE35F2B0
12943662B322718BFFE777F395D551E13CDB3179756FD85B1F132E62C44A11340E7D
1295B8B274D22D0493F70E8D587356B84D4238439F2E816D589B04831E8F8CF691B5
129698DF446720310D929B1C8E29C51F2FD1C70AB8F8FF4AF21A05D3A520D44554DF
1297736DFD865EF1B73A0C06BC9E2ED21C9D1444D3F41CADC2A666045ABE51203C6E
1298BAE3CC3C3F6A482868951970747C45270070D2FF52C5C9B1953F845AEA12C02A
1299DB5AE7B1E9ECEEC8B533182B46B8ABA08D587806E88B87C1272877C3DDC6B14A
13002CDD31A1F0B8555F59C5CF6A73244B70F5022683A789F7E0BAE3457337B709AB
1301CA88BE9ECA5D0389275946CEE8BCA349889E64D8240FF5AF76EE020223AE5E25
130259A007E200CE8576C2A5646F0B1F35E4004D132A123CBCAB8522F2E0CDDF17F3
13034BAF1FCC0BA38648EEEBAA38C1A783033951C59F5D52F3262DFE4C6E9E6D8E16
1304F23015385A1C4E06ED360BD33579A6B1D1B119665B24294A69B4ACD82B5C801B
13055162AFDA181F01C80AE0148867FC419C7D536D3ADB336780838F34CAF311279A
1306E4FFBF6809892F0BB1D090C678C1254A9C10DDF87B3DAC22305907C982AEDA69
130732366E4F2AC672D65A2F71A842C3D6694640DD821BD4D9C4E96E49799322EDC5
13084FFCC0D50EE4FFF6F09C935542FFFB8D8B7EA6B647BAAF44BCABA88520DE7AAC
13092A4001008C5CD2A973129B418D800F9B8BC24675C800713195C4C2DD36DF73CF
131035D69E71B10D31C8DCD84A0E2FD96EE6CC79F08F4DE10E04B7F2E6145C2B7409
1311D52C6E3089D6DE31BA5062113DE1063F954A03B80540EF62D4F9F41A957A90A5
1312E2E64323671EAFF01D2A5B93928F6346C41B99B866B08AB6420396EDC8320DB1
1313ADA75B667AF93D1CCFA9EEFC5BC0C889ABEF879138A86EBB2D5620E8621B924C
1314F60AC2456F0FE9E6762330CE743DA37D2CD9EC859A61521D6BF6D3B3FBABE3C4
1315E7EFBAB21F0694697B87FFCF6089E585B8CD57F4D7C22A5E1A2AAEEFA4FD8623
1316333F90E77DCA57BFF970D593B3EDCD64B40EE3C27326661B4413BEB7714F152A
1317935427525E08E248193142B91CEEDB3B0209C70ED9FFF57971F524026EB4A194
13185622DCBA91A6BC854B3B3272769AFCC4D2B64B7D71619FC1F39F435835C0AA10
13190FF412ED58C0CCC0BB1888A883C56864912E693441902E66DB83C56956C2E7BC
1320F98621BBAD7F5117FEE6CF287A5BEEFE3F5959108A88B76365A5ED6039B6A798
1321408FCDE095A872463F33D417EDE584D34B721118D3C29D22E6AFA7BE5D141139
132246F3E6BBC0AF1CAB844822AF1AB941681481F4E763AE6A1F7CCE0CBFE337364B
13233174464E6C21DAD8F3BCFA5CFCDD2F5FBE00394C6BEB1157580707CCE8A81DD0
13249E3D37025413C47F77BFF4B275EB40FF05F3EAAF70AF8D4B9420AE2E1DD66A46
1325A44BA9C7E6991DAA7CFFB406AD98CBB1177775A1D6629FCBB6F60C3942199455
132670B3B93579338C424AD1642B9109502B232B42E50A58A7055068E43F56B9BB78
13275D387FEEE382A33A97A3A7C29DA4DAD8CE9F503FBB85893E7FCF18238A83525D
13281958B38A24817BDC440EDEB913BC3C61EB2022A71E7F1D8D683A36FC1D84C570
13292BCFC3A3218C9C6FA9657980BFD482DE8DC4867959CA93B46F2887B1329DB496
1330F69C4A43641ED3842145BB868A430E03EAFBE786B98355527882CCC8B4EF734E
1331BD0DAAD6CAA8B36A4405E5CA9FDB69FAB8C5D85480D81A83EF6038AA3FA8D687
1332017741F80B94CE67F86A1C4DE3E3C197320568238C7A7A1056520646A674C3B0
1333BBA0CAF9413FC95E938F46D8588A94FF77079DB1698082601DE0D71003C74392
133468D48A8BDAEECDCD2138BAA3CC43F83532F27F4B20AFD658109BC2A26D8B6C07
13355DF873C2114531AE6E98753DFED7214D634A453239990329F08B6F22C32D097F
133685FB45CBCC189ED8FFA918DF0EF2B81CE018B93374A5BEE3653336C68AFC21C5
133777BF87F75199D869B68DC72A22274D883D836974E0AE8A74FA8BA55EBB024688
13383EFFFE119F54B75E5BBBBB66B46B7E77227E680870DE9EA2BC4B7867AD7F3512
1339AA3DC6E37E89E420CF097F26C7CD717869DD8CA401DDE7375FFF18A35CADDBEF
1340DD027E352DD8B99893C37F1F84C5920EF3B3B2CC254EC794FCE1C8B154866B5E
1341E3ECA7870521BA860031931B924E082AF12DED9962E5E9E59C1FC08DF1258462
13426A5BD8BF23648D1131C67BAD67F17E5276E82EF31C44A5A9A5CD664EE85F9CA3
1343FFEB95982ED1FCC1EE9DBC11368EFFF6C53AE3AC805D78D3EE4BED7DBE490920
1344C5542128E68F9A6CF46D1693345C9822C77303397822C3B3F7CF5B7C39A9B606
1345C5C57B4723A3B9F15C4B4B1BBB4D7267EEE3098285772B1D4CF1E15277EAFA84
13463B54EDC3753F347AD7EFD7BD292539FAD422EA17240A8377D894475E6ED70094
13477648F9850E1F8F2BD5F7C3AB23BF64C692762DB1727E10CE0E6AE83295B91349
134828617E2F90124BD97F19951C55E895767AC141C421380AE9C311D41E7CFF7DEC
1349880263507BBF160AFC57F931995CA3CD773DFA34654899BF1FB5FACB5D39E67B
1350FCF44618A2F553ABB7707FCA8C118001D9A541D0FBAE34DD4978FD40362E03EA
1351F9C9AC0A6B23E3911F8E869E06271640C2E9A0F6F810E1E8E6F35099EB5D238E
135278CF6CDD08B6CA7895BEAA8A3F42546B7BBD19E99518E94D83CBC5AD2028487E
1353FC3E8037D954767EA744A08388A946BF6B48399BAC6552DD0D6D81C4639D4E4D
1354FB3AF3F09AEFE96C24D5A73B839AA47AF5C2B6A1C2ADA3B5299B59C4D39FC3E4
1355F537A1D9739BE21DDA12247DD50EC83A24B335BFBE60A307583DE9EDC6A4B41E
1356F95306F407890B11FF762DB110C81F1C40558E23FB49ABB698CD00AFE090F590
1357BD55F31056D5499B2C5D8B838421291EF18646A5791164ED41061DB6B44744C1
1358BCDFEE00A092033DEDB0CCFEFDCC484A08C7AE206821883BF5EC194FDD158C18
1359EC56D2891C5517D274303F10AACA8524C43E88108FB59626DAC8252A30AA3A63
1360CCDAF5D7F2BD922EDBE80B219706E22E6F4EA6C6ED2BDA5FDBA42C3C7E615F7E
136185A9CE4784CE32BCC4FF9F14EC3233E7728DEDFE0A65F36B43CD100DFC0D9257
1362F027C0F1D42B79ADCC90FDD53C50B092CCB89BC737A0212AA7C7B2F1E234D97B
13637CD5651919685521D8799FBC97CDB2E6718E4840A88CC6BA5CCC9F8BB4DC2B7F
136413EF9948947FF035E9DD4CC81994F22CC588A08E3DB3BF1808B1B8ACD5DEC501
1365DFEBF7B9F0C1E9098710F18BB28324A09730F819D2A1346962011E3325A06EC5
13660CDE3B13A2B2AFC1E88AD6AE109841216AE9C0E34BD4180D31D500C22A2A4D56
136715F720C054CBC6FC0CCB252010B9D1B30995A9DCB50F3F15FC4A2ED963279754
1368A51603672403C6143D57E5FC97CB977C9B561F50F73F2A17365A12FB5606D75C
1369F85679CE7A4CA183915EEB79008942DDEDF0CB51FD786C7F4EF8AD0DBE291D8B
1370235160320998FF12783922D32C29244763F9B7B5894BED6B5C7793AE22AC11B5
13711E5D1F3BCC402237B9506589E6B8DB0638E730958A8F9517D051FA07D98882E0
13724E4C3AA9E031515DE0F413B9ACF75685ED1D8CDFE44B21FF5ADB57FE6D109E63
1373F201F8FF8734B60FDA2275BEDC077308652AF9EE34674455D9C5FBEC15363D30
1374973F411544C35F6581D7F135BB3A2B2DE6B286DCBC29AD9B1F28A9B25934DC4C
13752DB7BBC6D6B4D1B4459370E29A15A7728061DE3070205FB5D6524521995DC28F
1376AA9514F37FA6D55DA2482E56C995E5063755123D151959DEC4E406C18ED4B052
1377A8992EF41208C4F6AC5539380EFD70240CB1F6A46B451690B32A91757EBEF5DB
13784A94DCC49AD7EF038E87BB6F3DAC2B4D2707BEE805BDDBE96D0249C55BD4C140
137977173BADFEF9F85BB4D0E2194BC65483EE34CAAC79530023369275768BB8846E
1380CDD21414F0FCA20913EDEF6160623E28B6CB22EBD429778E7AA44D20EE944DF0
1381D0047258E71110ED3A398DF018009C92D3B694337CB5FA99071B9B1DA40CF5DD
1382DD478551634ED561834104A01B7F6E49529237262080A001D121DACA8B5FE018
1383B8C3565E1292A66B341CB33B1B30BC9A8E6B9682B0598B4AAEB34F080D58E008
1384242D14D34AC61F925D0208EB26E47985FC45B1B870AD1AA618DBC877A4947F97
13850BC57C1A9A8816072B36222FB66F29B54BAE35BDE6809ED17CB6440DD4FA6F70
13867679B10C2BED86B468DB104141A1837665E512DC97F592550E85AF86BFFF3F99
1387AC12ACB75B2ED3336B1D17EEADDB4ABE03D0F1658A57EA4861F041346EE2CA40
1388A729730123EC61186295ABA4134F1DF5722DF186546D2906ECBC3430E7E3BD03
1389CA0D6159091024728783D68001DE7187171E28DB5907F084A94D2462E703EDE9
1390590583BBA61BEA4B1161BD4C41FE39BFC93B0FBCC5EC9FF4AFB5939F0CEEE032
1391FE5AEE66D56547CF94D88C2EA7BE5C78D4BF227A02AA229FEED9BC5DB1340B02
13921B9E8FB9729564C3EFAF35411B7B28941960E5DD45C9DB122AE3DE1076E5AA31
1393F7C6DEA00FC2E4E72059547CD89389E8C7C980829C896FBFC2DDF77EB3206BC3
1394F1E21347942EA591DC3FB59BC8E2BBC4C3C657305F30A2D18DF93CFC0F0F0216
13954F19A938BCF2A4BB8FD1F1B965F22C9729E94D040585936C020B24289066E742
1396D1DD955A35056402B40B3EEAB83A29F47EF3B229EB5EC517177862FC86EF08C8
1397BC4D9FD57A0D8FECE71A4439DB8954D836071130964105DA82607FBF2C9A1810
13983BB2D7EBA820809E677FC5952AADECADE3AF4AA90BC15F40BC86F071875E0C2B
13990BE47794B817AE5FEADE9E4092425312A71087A7CAFD886CD39069BE426671B7
1400CE8E4FC97F7C16A702C6F8FB677483D7299BB4BB06EFC04B7A32DC93075B79F1
1401BDF4470621FF49D372AB3C5213E5A070E27BFAF7169FB18582BB796671D539D7
1402CA7F0E072B5A394FC2B6587187E1349F69848D5DCF048E71531B13F73895CD7B
14037D81B338AD6D445C27EB4C4D76C0B5E64A07D03BD7D8CD3A3DB491C2794CB031
1404E56618C5E0D65F562ED857B81FB384228FF762CD2718C723B7B261750E25D0D0
1405D26060723382911F867F46AE73AD67C943C44196997F574FB36D1FBA79E61A32
1406D53145364DAB0E0C6922CB21CC3B03418747546E48397A7DBCE9AD89193709A6
1407B85AC7F6167D7DF1A6B72D876C4AFF990CFB68B83B0C4C494C7F8CBC60B1E7A6
14087B3695A2CC0FA011FADD2527FF4D47726782C19CDBBE2D55BADAE4350B053B8A
14091EF6B385ED4A0A00E1D0DE7E4F74BDE3497F13D80A6C30E833DC6FCB3E597454
141068EFAE3D397D4C8817EB082DCE98A0F4BBE0F39C79F22021C84270AACE7E2E12
1411617F4FD655B9F5BBA5D4F8AC935F6E2F5007DEC58A1929188A9D5FE5F4C4AB03
1412662ECD86676D7CCB50C0546426C8B92864019A2DBCD4247BFB904D8559F2A9D2
14130993D260CF293B40550AC6DB3A93EEEFDDF7D8EF947E1B487104E0D0E4365BC3
141462FCE7CCF52930C429532AA2E3FE62AAE9425A97EFC23EFAF6DA75C98CDDFB18
1415175006EFFDC2A6ADC9B8A8B1D343FCA0155D476E5AA2362F404B00F493D97DCB
14163AB5CC9ED868D00939AA1B55E0824C09A1B7D8B38B98ABD0966E73B5019504EE
14177C3A6EB0F094A3760C96658CACDAC422442B04957FE7A61544A5F99C6F7BC695
14184658AC5403D3395CEDAE6ABADCE9F4EC6311FD92B340952DCC23AA72B514E163
14192E87B7F5588F4EC9DC915BC3E6BD8994BD380F0ED79C4E47DC0DD89828D65709
142029F085518387CF2EAC62D2505DF0CB47D307E1DE4F0A147979C6D5B93327B7DA
14214BA34DD209946E8022C11A4E0767FD809A2F628C73B0A79201C40281BE044CDD
14225F9130EDAD2CB86B1A324B824C8A1A60D34FD32558089C4FC8E70AAF7AAEAD06
142348C7F711B33C7A421C1B4C0FDA2392ACF4C850315283E86B0DCCE689AC9AD3B5
142491E91329B5CC58DC2CB4466D669E956488262A12DEAD838577743D7867030F25
1425BD5B2B0A04C9DDB6C904E40AAA82B54542321711ED1D80348797F35A093D3D77
14263560B459F177D388F4855C82C277179834A94D5B9F4C974DFDF3929A1BA0B301
1427CB3558D6BA4BE0B1EFFDC2101352FDAEEAC17D60BBDADE15FC093161B872F98D
142871BCE512AE88BF012B3F96E02EED08A7CE8802D409A07C27F1F3AB40589CDEAC
142999642D6C6133BFD2F6B1B86A80CBA0CC62347644D25BA14C9E24A53DA2DCCD1E
14308B0EABC4B0500D18AAAF3D634D5D1E3D23775FC02C91B1D5C600986E72185A65
1431F6C926A5E48E4EDBB4862D9CEA4F491C0FE2DE07B9055975A6FAF60B692D5310
1432B6EFE781BF90EED228709404DAF22172D7CA8B050EC477B6ABDE89E6A53CA72C
14335B6FE5A099DC209AF9DE1318FC114ED28E871B705DA184114CDEC65EF79D489E
1434347718519EBEB40CE19D3CAA1288413FFF08D1D6B42A8B24E5B00E259BF2EF56
1435600EC9C721981559BD0A443F1EDB12DD99401AC2C5F84593FDBBB1C1DD654A84
1436562D8ECED1A1E456D56D47D60DE039639ADD3FB1A342F4C3A5071ACC35CBC60E
1437F6F10ED429606609B68BD3B3D19F02F652B2DA1EB2884C4246BFC49108D3B95B
143862102EE49D5FB31929C0DF59F98F5F36F07C5C7E9D0244991D2A1BF8ADBF158D
14399D21B928B484102F7882D8A0DD1B66B9C0DF4C95A6ACDDB70619FE403AF8AB12
144056334E17E1E4CDA7E4E006CD042D9FC9F83694B83D45C9C34CC0B945E13ECBBB
14411C74BD8E12558E49A5875A64012B7B5F9C2EB2D50B51C21B9645BE62CF32FA34
144272E85AC778705A888355E9DF59DE3CA815264513E20B9F211D5CFF80C39A3DBB
1443D4602AA4C81461514E74AEBE92E88B8DF861465ADB524AEC40C630CD7DCE9A54
144422FF67D94F13612679717BD4012C52A614BFC5E7D6D067A478BD19B6B25BA513
14452589E8B402A4DF511A3239B1E657FD93B3918F05D6AEDE1A27B640F4CF54E698
1446820368D069F5376EB9E9486288FEF0F64683096850A6305B648A527E10BAEB5C
1447D1660D266731950CC130D634AED2CC2031CF18A9E29E1D1AE56F6A449EC3C4C5
144854EB55F42637D974407202438467C45808958670D5A597883591F81F69B9AAE7
1449F95ABD2C94F0F233ECFDEB7CB4C876E2B0279F07786686E1D55652011495C4FF
14505C09DD11E6AC3419E53E778FC951592E6871964CF182963CD3E2E2ED54B0387D
1451A65CBF4C3786B9FFB4FC9BE817BA5ADF7C56904E49D76C050F739D8269A0F367
1452C07D29ECE96EE7EC9409A5F815F8BB27CD8ABA52DD41D8406271C2BA96F9AD78
1453039042C71ECC942D7898AF8DFEECEF2B7D93230FF418B589EABE2CA606B24263
1454AF595EA9A092FA271102B6B4A5C2A67E5B06CE6691D36B49A07F1616C79DC6D6
1455E86D6734E7C3C50F5D879606627A8F22D92661567C0EF73A1A67657C09493699
145649C7A748B0DE88E6C99528AC4D6BAC414EB025B58CBE163B38308BAC4E08B9C2
1457BE464858A6F6450954DA2E5782B78BCC63A28795E07D2C60C10806E21B90B2CD
1458CFB625AA73BF95A30AB31EE4172EE9976B307C002BE02BF9955F0193507E5071
1459316AD5A467DEAE1A1AEF879C7DAC1B5205EC133DDEB5DD6A9E41D9BA6FE56C88
1460CC865D56E2F305979AEB7FCDA4A3C98EA941B09A0AABF4AE5EADC62F1B0B92FF
14610D856E7EB38F355A30B38F39872813261E71A3D1338A8A5BBCE26B874993AA09
1462DEB4FF1D4C3F43FCB1972F703BB7140C348A64FB02B5E29A07CDE55883E4F2C5
1463702D5D9FD05EACBB3411584715ADAFC54DC38155A17FE2C4D471EBEF717482D2
146410DF613440926BE3DCC427CB106727B12B04464E3A50A49575321F84F64B708E
146586FCFA5921A52B2D459240AD0DB45300715069CFA36E6FB4BA47CCE6856E8B93
1466D6A2A43BCFD748872304AC3BE3D905A54A47D303CC1A087B03A33C0763010F56
1467AB46520CEDF84F146EE5FB86BE086A472D5C0684FE9A1A633DCFACB6E79CD0C3
14680B1A3B29611306F024F34AFAEBBAD8C18631A68C49FAD20E9DFEE55D14EC95E5
1469B5B4A5089A2ED0EF848F88B421857631FA651DD99D87706F4F0FF196ABAC6BC8
14708F7CF1268BE748CAD300D6298BD43283C487D0D6E340E5ADA956498D28AB457B
147146F2DF314922B58CBFDA49200F47676319039A68899BE5D2C78EA7A507640402
1472418C8A6F8ABD38723F19E856774316EE90E92C3AF1677D083398D640DD20AE37
1473C88DF64010339DB844B5BD2A61B298BBE52B0B2251F16668F8E94D6A95DB778F
14749B4BF7654EA0CA2A418893E8CA6B6BBEE0BBB1347D3F3B56577C5AB1E76AB97A
1475E48BC675922974A24E0A75122F5ED8CB912B883A949E9535D41AB4426AEAFAA7
14764CDB413079D7D5C72D9433B8DF1C046E1157849FF78D2C1FD45BC4B4E2927154
1477D168E4E33323D2703300F7991165B48F1F95B419B0DC01764F0BE63D861E0E77
1478D339CE777BD531C527DDF660AE1AB5E7DD90C430F66E8584BF40D5DF54AF911B
1479B39EAFB983AA0D038D227B66021DD587EB51FE1DB18858BC362C438F51774198
148010F1EE25B8896097AC44B0E56AB1B341EC95AB570BE4700DCFD82DEA4664BCBA
148146E0A9E7C7C99C397E97EA27A5AAE8F6260158235A148C849D9992563F401019
14826460B3526AED81B45B9932700C0D1270689EFB94A5E47A6AA094D9F7F2FC581B
1483D164CBCBC08CE9A04DB525224D2731265E6E54E278D2BA3E91C3AE6DE2BECC5C
14848FBF58627D29CC1662704DC08735F36038E54D783CED5E60DC2CC7D731CCE092
1485DED3F30E3B363E588E714F8A3FD537EB4C95B00FED97F9265114181ECFB39A00
14868E060643C6D238C0F8806D9C8810A545620F7AFB5CF3B504CAA7EC13B13BA1EB
148704F754834D150B942FEC94DD8A5A6E3AC6ED86E1681BA52E9D910D68E31C0FE9
14886E28DBC93BB5A6111E524D04DDC2B49B8DB82883028CEE5EA40C65CC5ED0D886
14891AFB444D05B58E67408321EBE3D4D17905459D71712F81C6BD43F46D11EF6AF9
14905046036ECA41AC72338AEFB1B6F0EF3CBCF089655C12F564451C605B2DBC0E08
1491F3235BB3DEC9322BD75A9928A53DA829647DDB8F2795D9CCD76E764EAA2202F6
149201D1C65FF46D5C8B1044B6860D22BE8B98B56B56F3B54EE8A9C2169DD2DDC73F
149394EF440A000DCE60581E409C49165D676E6A32CF9D1B23299991493DBA38614F
149476B6A5703FC9C27ED286B5897DD5539FFA1979915D1A768A6D0C40EEA679C048
1495D9D870879EE9C46E1575E815E3842D1F1150ECED41F60A30BCC20D53E8629799
149604B60E21FEA41F1D3084E7A26FE0ABC0555C5AD4A92F2B3F691D60D0424BC7B6
149713CF40D7C615FB767A9DA0AC4582AE0C1B67D62E20F3C698D66D7BAC2592E9A7
1498F38F683804AA0052527C0D3889E21D6E9DFD8600A3257F80DCCE0D128CE442F7
14990CF351B360DB45B7D04CCEB3457E444E0C54FC5D337531E4131866D6836F33EF
1500066937C7706617311CE8E1BC54D3195B4CE7B1EDAF7EF57DCE8BF17FEC2F3157
1501BCC8A5751EA89F5F9578299504D344C1A5951083609B60C8C83FA67F5F44154D
1502862DBECFF7016083BDBAA480CFD5C63ABFADB534A7CC8691C40DAB5EDF4331A5
1503A3F055929456774257BF44BC31C383E43C3C8E37E18A4E7C499F72FB29A63A23
15049662649680CD9009B1CF9D5A38322832AC98BCBA05C4351007CB2549B8008576
15054B496AC8487B43F3702D58834F0A0477340C9FAC8C4FF9D7D4C20CBCBFD915F5
1506F55617D851317330636B302D38140E465F3782F45561C18875BCB2FDA48CA6EA
150771B88FA9A87918A343E1F2E0E759884C1DF5FF3E7A51069FC427D7DCB3CB162C
15082AE28D41F5CE96FCFA37A5E5750CB88FEE027F97E978EAB9326C64B87FF19626
15099EA9B6A7316CF6FAB3A49AEA2433FFBDC202F6564953AD3546101E295C2CBDFE
1510A758DFD9912E8096C22C0308AD6705F7807F151628CA9D66FD36B48D49860F53
1511064096525B0028D3D6279306872A42BCEE965FD73F9F41FAD18ACC569BA23F3A
1512F72CCF9A09A69F49A1AD5EE5A8B62360E363E0B1113E008B16D94AAD5551DD1D
1513E689CD903DB992FE50775033CC10A091FCEB9692D875F7DC7BD179BA5E8FC955
1514ED7F6B3A08453B03F75D825C5815815915EA89276251D1D03787EE0ADD5B7144
15154076D29801085C7B128C5491C7A2DDEAC62B54330DEC660403FDB73A8B267094
1516DA5BCC57E428FF59EA99900E59A4296C676CBCD11C3EDBCE68077224D7715999
151736F3D3FC2240BC2CB58A5EB06C5BA59EBF9823AF6FCDBDE93CE2E1A5A16B02D6
1518F5ECB676FFE824061B02FBA31FE7FB7B9E9E065B9AC4CB23C96DD0764A6C568A
1519D858FE44B23F04284F9009BB75751D98BFE5147A1F7184FF8D36AA1CA978D694
1520F72DBA10074ED7A82B322387A91E1A4F0070B8426074A584ACC462D284860457
1521C9BF4790C5FA7941183F4D9C6D0C7017F3C288A8E2DD5367499B1DA0D2A88925
15223F2A2E5AA0FF572681B1C92E2589DA97AA2FB527285ED3633C6F289C67B0390D
152350B884BD5759E7EA412F75592791848B2D9F3CD06497440B1093EC93095A7C86
15246AB1E8752CAD96C0076B0F9EB4CE2220B630EED701D1A3796A4BD3FF35293934
1525A69CBB8A74CF22836CE5200DC14E5295D6DA56A3AA44A004357F575E5547ACED
1526A1982AE3CE7EB7A59840DF825F970A11E563AAF3974F547F806AFDFC6F0F4BAD
152788F56A4F8510E0AE842B9BF551230FAE47803AC5A959DB6B62F291C6A040584E
15282C4A02D41EC7DDE254F21D6091D62D8598B6697744966BFF5E86CCE46D9AF24B
15296C9AA017F944D42AA02F6775CAC2671BF2D4EFAFD3E529EFE3A5595F01D66408
15309513C728725B3CF6211808898E4C28A3F643B6E537D883A738CFC13B97FB3D23
15319AAD448F38C6267D36C0FA594AB6FBB577ADFDA1722A9E0B598432C8B4E2AFF0
153238DEE9F21CB910657C1AD8BA2C821767C0158D7AE3DEEC883372DEAC9CE7A2DD
1533C440B233FE7093E2B03E702F57A082F438EDACE37F29FE29849958C5079DEABD
15347954EEA31EC67B0CAF068FF58C731AE5A77607D6FE13472C5A70C111177C1E99
15352657B20BB0D01C7C638A1E588CFAE59CB3171B685522FCFBD4330C941079C9C3
1536AB5D5FACCC98BF9691DA89AF9691D20154B1805AED841931700A3F7F25924981
1537F6521B0C6E55C98AD91ADEB1174786A6412671C602DFBD482462AE2F1DFCFE28
15387AD206FD98F5238665DFA789A4EDCC298C64B4E72C0C1B457BD64B4479413356
15392DB85E29E862C2AD57F150E1CA943D85D71E82219E735C7D8EBACFEF4DA9C725
1540EF436AEC25D36C9E9D32C67A062605E963BD036886CD9688F7EFE6434A29A2C7
1541730F1C610F3DBD29A4A71EBC3D179E3BC1F48657E2DD6800E5B1EA7508A8D439
154211C3CB84980DCBFC33875E20784CA711B061AB5957CA59B43AE4E4A44B361349
1543823D45AA26B51ADE783ABF1C32E49DACEC7DEDBDCF2648ACD5A0DF02BF7256F5
1544FA2F054B79A548996442DF9205F4F3F2C27607D11B5EB4080B3FC1BBAAF8CFE7
15455FBB35B87B540546203FBD90341CF38AEC32B6BB46ABA368EA42C69BC9834A8D
1546E915C163692174A5D51136308383FA693024DBE6552DC525BAD6CFBF9B61D2B3
154761FBB94AF1507EC144591C621B8DAD5452BD53B0BFEF03F6B9D53736FDA5689B
1548A9FF78255396DF20AEE452D5D3D2978B2D681BC60506ED10145ABE6B719CA44B
15496535DF1E593498F8C6742B84BE204883ED8D8D624D52F0FDC9C8AFE1B7808519
15501E056CB591B6A2DFC4AA44604AFC512151FB0D3A3187FE57F409F04092035DC6
15511164C06205083E54B6036D9AAB673FEE23A3688591DA15FF698B25C5B8890540
155217869CDEC5D3B4F12E83F75C164F26FB41A0919A412A447E6DBED19843A0581D
1553B73610113FD75D28EAA34F2A47D99C13EBCACF96DBDB867D83EEB53488E3478A
155463A2EC583536A3FB63CB406078595F220F5BF53956116F9FDB05A226FE01EE4D
1555C28A48A250CED2AFE801BE10029013C9685D60F6F74628A5F5961E4708EBF3F7
15561EB5DF7837356E20C075DFBD15D9891A1A9934A585C0F881D104BA927A70B832
15575CD9EDC7E9CDADAC7BBC4DB1ABAF6547C3BC08C6AC73CA345AB18A9651151CF7
15584752C8E74157D3A3575D4D81FB937D0061192D1643741CEF3E218272FCDA17BA
15592B9FB73A7A008F91248F5C57C91266CFD1E7119ED0BBB80D009330DC501CD8FF
1560423AC58BC8E1AD0813D11354BCE3DD1F511115C9F571E25A58E1A42D4B2F5C6B
1561F39BBD15B1CCAB68D7C8E75634C69BAC05D3DA6A2D54976CC3BDC370F3274326
156298CB0EF0B999032718381A4BA16220F8088E87F3B0282C8011BF2A8BE5B0624F
156310C83F79C1623AB3D1D62F1A030DBDD3B400D64BD7D1EE88695B5EA257094B71
156438806AE74E3CBB7615710E2D75428930EAB82417B11008D3278C035152B527B4
156544DFDA85769635DB0650CFFFC6650ACF0E7873A53464C5BD41889A2A89F3ED47
15660C4DEB5AE511FE61870B9EAC40952E531FB6216E8D6CAC1A480774C0EDBDE9C0
1567B7C880E28F9FC77F853183B4444EB15880E8EE0AA9BFC908CD9CAF6E16921BB5
15688675F3B3A4FCE2B60EA3A11CEAE4D0512F383998001BFDB48EEC41A6767B55B5
15692786A2D2A35A1CE437A29B023AE6301D85B5773A31348976AD970556AA208158
1570970360327DB5F65E210A9D76525E44FE9051E71C0262B84F2C54E0EF4F280FA7
157169511C576842AFE25D4FDD651E286A94728CB56DE3C79FEB6B4727A11502F876
1572FAABD8DDB97AC18F3F19B272C4541D1807DED62466389F92AFAFAB9FED162630
15736104796F4B2C9F26BF46F94100BF569BD3755C35CDC08A1C5F03A4324EBA28DA
1574B2A41FB6562BBB85B6444B98C90DBAD78D79FF7293280894AD326FC95E28B435
1575BB74C1B7DC963D201F2CC9B5C224023D77C0B2C69A497C5314DC418B6519E25A
1576197D85EF1430FEB760478E29AF6D9530817F777384D3EA17FD4AC22AB1F81B5A
157719C853EDCDE39174062A4A6D0DD5A0206D6C577D148E103EB5BC30890110367D
1578537186A9E8D70AFD70
15790000000000000000000000000000000000000000000000000000000000000000
15800000000000000000000000000000000000000000000000000000000000000000
15810000000000000000000000000000000000000000000000000000000000000000
15820000000000000000000000000000000000000000000000000000000000000000
15830000000000000000000000000000000000000000000000000000000000000000
15840000000000000000000000000000000000000000000000000000000000000000
15850000000000000000000000000000000000000000000000000000000000000000
15860000000000000000000000000000000000000000000000000000000000000000
1587cleartomark
1588%%EndFont
1589%%BeginFont: CMBX10
1590%!PS-AdobeFont-1.1: CMBX10 1.00B
1591%%CreationDate: 1992 Feb 19 19:54:06
1592% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
159311 dict begin
1594/FontInfo 7 dict dup begin
1595/version (1.00B) readonly def
1596/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1597/FullName (CMBX10) readonly def
1598/FamilyName (Computer Modern) readonly def
1599/Weight (Bold) readonly def
1600/ItalicAngle 0 def
1601/isFixedPitch false def
1602end readonly def
1603/FontName /CMBX10 def
1604/PaintType 0 def
1605/FontType 1 def
1606/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1607/Encoding 256 array
16080 1 255 {1 index exch /.notdef put} for
1609dup 0 /.notdef put
1610readonly def
1611/FontBBox{-301 -250 1164 946}readonly def
1612/UniqueID 5000768 def
1613currentdict end
1614currentfile eexec
1615D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1616016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
16179098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1618D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1619469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
16202BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
16217DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
162277B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
16232DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
1624FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
1625DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
16267AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
16279F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
1628CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
16296877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
1630E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
16318903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
16323F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
1633EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
16340E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
16354046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
16361805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
1637757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
16380FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
16396D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
1640E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
16416E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
1642DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
164312D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
164446F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
1645F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
1646B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
1647C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
164894B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759FD67200DFF251DB7C95C09E
164989EA1F66EADC3439C7234E50DEE5F62AD67768C3A5127E31DC8BEACE15EB5666
1650437B94525E34FA2D35B51730CB8CC9D763F1A56F65B8FC21FEC40F4059C2EA3D
1651EE94D79A8E322FA0DAEAE3B82721F771106F21B7497099A15DADD8CDAF70AB71
16527FC1A9CE6AA0E05ACF6E210DE1CA0418BA7012183FD6BEA93DD38776C68CEF54
165375145C4C0AAFD684964295D68EF8E7CE0AAF272EAB35BE26334C6A2F63D89425
1654F6DC7F49F63A53152DA883E46105D8F21F7368F9CA04B7F4BFB67ED9FD13987E
1655816BC3741FAE1D8630479927F6636F084ACE881372BF695E55747B9354674443
1656AC79EF734025EB13E3336B807B6D75D86A801BCF860EF78BFE0C76227875AD31
165749638E7070152E16CFF32B2DE735F7BD089186F1FF68A2CC558B26C7D3416AD6
16580FD3E8929011C8635279CB1D64F3C8FECAF89DF0469DD890E8CD6EF325DCAE4E
16598804DAADC647BA4F6A96E27D5F1716A800104777374DFB8AFEFA19F230BE8C1E
16602B1DA5B9F504BED3487D1FC3E2A11BBD869AD3E2131253789C00651A03320D8C
1661F3B2844347AC9860ABA40A83030FB4F567761548607BB01FBE2086AC1BEF4F61
166248AA7B421BFEFE6EBCBA9042FA4AD9530EE7A9A7E11D9BD9AE3FB217F2A9B5D5
16631FA941494B11A4CDE8973C1CED5062F6CB666FD32E4CEC15CA9DE1721D4E6E10
1664D78756DFCACD3A41E50C6BAE9A9A5F044BA599F1EDFAE61CFB8B7B0DF5BCCE17
16654D88512A8506E97204457F2D12533BAE1B552F23340D4AD7AF3029FB6C6583B2
166667A9B299882EBEDE6696B97D7E89B0C397D61D4417079D426B29246910F4DE84
16677C5D48C72126F80CB5B135D6D2CC719968C1924EA4BD6E305B7FCB06520983CC
16686741DE803E5B6EB1E7F5517A8600491A4957645949701EBFEB42716542EABF2C
166916B955D4A1EB29BAD152EC888572C3D4E2F02309DC60E94272D2F2EBCFE32969
16705180EDCE322BDD38E3B34D24819E03ED61C913A9FAFE2DA1822A660C246B1132
1671D2C18F76CC413D4AD1BB8F7A6719FDC7C7E54307495BC0E671CC6F4257C82574
16725FFC9C7EACE612207FC80AD04F0CE33A9308DD615A4307677F9ADF6B98D66A77
16732510BB8B5C985DA4658F7637BB4C7643AC9CC424E2571EE4CF5C15C7EDD306DA
1674C41DED0B1339553A5F8265DBD9DA06374B37D77A9C9E4AEBCB4ACA8B909E9C48
167570C16A5A042CBC8825CF675BF574B16254541B69E203D5E3CE29C339C907D11B
167628F9AD8DF700C945FF11B0C99172FE6B25D131526C31E19D5637FF4249440651
167786C1D4C8A7B60CCA184FAA3E27F7244698A99CCF94E9135769C726307F940449
167848239486ED7BA4B8DCAF87EB1D2A8D1753E7EFA9468924DC0BEEA33484830DF0
16792CC726EB379B5668550B61B2D401C5D1012B16B9E2BF0A336073544F65124481
1680F23611E8675B40FB28F393A1A8DFFDC13AD08A67AF396D454E3CCE141925D9A7
16819CCCA2D829E4DB2467F2F8CA1BE3FDC5E13120BFCDD7F0DDCA66E65FA69CC475
1682866C8A62DBD00D09D867D0040BD804A1D7F17F3B8AAAB21FD48B11BD96C13774
16830BCB85CBA1E12A459B221ABEA106D74BC0EAED03ACBC0120CD47294D9D0F3B96
1684CB570779E46519DA8854697AB48089B56025D3787243666855333F0AF2625DAC
1685502DEDFD5529924E50B1740A93E8B58C54DE09BEDA69B4FDA8A37AA6E32F1ED9
1686B323763F9DA9A59BD9F179A567BAD612B8634FB8463FFB073184294038307E22
1687BD0D05B160331B848E7D7243DC7EFAF26F8E6518855F679372B94938E90E7D40
16889A45E12A3203ED0047D4E2CBAF8D5AF2191EAE42CCF2E2939022FAA57FA90CEE
16891FAE7BE6E23C4E32D372908E149B2096D480B82C143A26C604AF950FFACF596E
16903CBD6C5C86EDE699622F50FF70D278E11741D18CBC6EC804F7803FA00BB693CE
16912CBA9437C5041EE62CDDA5B5E4DA501C6841614AB271633E748AEEF52AB40E2E
1692245080043BF749542EDA7FF6B74C41FA8B61640E4DBA1C44226785F2E3DDC7D3
1693B6B33B44E511C0152B679FADE241F0857C3CFDA8FF5E0FA4A7BA26A1A428387E
16941CE83E956CD8AC28EE4F4A818B2F64C72FC65D4D5054781B6177E54C75AE1396
1695505E5562B7F6CABC9515CAC5670A69AB00668ED859DFDB673378080BB5539A18
16968D347ED0D06DF019859CED07566B5B51376C5AF5876D3232DE8DADE7909B13CC
16978086DAA5B7AC78759D0998A0AC451CB7B9491A681A58D4FC3CD45555B20EB170
169831466D6B09ED870E735606D2E91201F85809A24027035B2BC5761B71FDF655B2
169963FA45D0633E9A8D6890B6C4CE4A5E237CB48B72A2A2BD8D2176408BD8F6B2E5
1700A39668D92EF921178190DB989A5C6E3FE318A56D799CC42B6B58DCF3FE6E8ABC
17017662CAC717B368F886D44F0ACACCC4AB8E8C24D35869D9BAA91C64917796D2CF
1702DEB05E44A43074F1A53ABDE558457687B2D9FFF1AD7A33E64625B35E994FC613
17035F66CE83ECFE45777AFDF7C9DE3284C06670B8BE2C7CA2DC73244378FA73CDFB
170402C7DA8AE1E57FD5FB6F41707D4D90C2A4E3D0E77D78867976FC53589FE4D0B7
1705DD6AC71C010C15B3A8FEC1E5673EA53D928D9A90040FF6E3C30BABAC5CF8BBAC
17065BBF3814E9709FF2C8B59C7C732B0C7BA597E00E61232B4B433A74646203F260
1707CF694D67E878159FB571D766C398AC5755082BBA1B2A5E71546FCC94999E4262
1708F18BE1A41E919FA7A53013621A6399A39C74181FEE13D4003468C7A343BDD085
1709FFCF2E1EFEC20119FD923E97CE26A66780BD8BF09D66DAD588ED91DC369B0863
1710C22BB347374EF5FD616A70CA07C91E5F48849D09F4823C8A02A6D80E4DA5DCEB
171133D190D72702A78FBF7328A7D5ECC822D907B7908CA44BAB4A959F21ACD2A1C4
17126C6069DEE6B2F208628DF65FC40A05ECD8956505D43F883E7992A2B7621551FD
171334C580D14136445DB52C9843BBF00F92537A65704B0DD575B1BA7863F971F2EE
1714479A9657AAE6627A321309A4A12DEAFA0C0B2EF5EE8C0F75ECACDD58E610938A
17155907433061E78FC48581B87AFDA9226ED79555ADF9F0443D60996A1084B0B4B4
1716C9E01EC092279E300CED0D34EDFD946C5660ED85CC0512F8A8982A7DF771E24A
1717D57B07A67D2745521178BE4C259EB3DEE7D6F820C40A2D939A4A484559207C1E
17180719083EACBA076020776AF7C45DA52CB7173B54237942CC063E5491B8527185
171915E7B30ECAAA49124B9915D9AFEDDB98513CC30EFC161C9D1F2371D8E0BAAAD7
172044AD4BA2CE425A0B8ADDE7A5056645F9FF0F305E43E8CCB0869E03F0F510FC75
1721EDA9CA416F5E14E6FF577CEA44706C2BDBCE79E7C692DDB097BD6A852A33925C
17228A30E83FC93CA7FF3D60062F06DCBDC9AB390622768B7F2370D4FBCAD40CFC1F
1723061899B30F760D58E9787EA232AF7305F2E178BB101FE1C172D5011378B93437
1724D19B7F3505A8A758C9B0C2E395EB48F13A5DE5B81C085344E3E57EE6FDC6BF35
17256CE8B2B48A59AAA519D2014818724948FDE669EFA9DD4BFA76319E84B6928C00
1726CCCF36793E1A533E3E9822684C4F0B1A60297EAF24D79FD1B728145C2F2EB2D7
17277F0CEA0F72B6ADE7E8AB02501EF56772DA610E1A6D855AE4BC828BFB3F36E5DF
1728E1087B9732BADC3DCF7B72C1FA15A1517DE3DB6360630E55952A0DE142EC11C7
17290DA0B033C405457DE4F619647B623EDEDA588A29D9D457C835320A1FE2E879AA
173018E5125E95D48EA5E1886C7C8B353CC3B5C3C91333E48EE9E6866E23107C24D7
1731738BA7F34A9B9AE25C3DF1DDB072AF68202EE17413929E4B39C0F165441BA9CE
17327587D7C6F181EDC1F55C51B7D8D04FFC47CB79038680FA609360A9BDD44F3787
173314CFBDB4F730BECB4876871DCF0811991151113C3C8F27BE0651F0B97FA21B6F
1734CCD040F39A945AA4549C0327A380F6F2D498CD074168EE3180DC205D18EEA359
1735C24E06EEAA49F08474F7E441F4A2C7B11C6BE15FF0777661064B66A33DD45EAC
173663B97B312E4B93C10F8E583D3827E6CB814EF8B73A6AABF11D638C707750A765
173792D5BF3C59B961569D9BC007DA19AC308EB09045F79D29BD970C4943E4ECBD7C
17380C9148378BFC202102B297A6511E956BDDAF5A64B84BCC16BB6C4C747BA8D422
1739508DF34DBB3F36B9EC0188EBE1A1288C1E3AA548B0D799D73DBD6584FC4F795E
17401A4B0DE9D930B4ABFC9CB303CC0380C8664F21595EB9EA9983B21A4F3FB46D1B
1741E5A16D5C58C12323CBE9CA9AB79DF7A2776E1993CF3AB4A6177BCCF147117DEA
17425304FEEC5903A4982A77793C4B360453F865540F5B0EADD4FDD40F85C72712C5
174307A6F447BE494A85494BA59B241540E84510B3BDF3B6927E69B006567C04BA6F
1744AC056E315F53971769687A314C874D8E62A383394A8C1359C9254432CE771A3A
174561655E881B22D7FA0BCBE24C46EAC022992FD5904555D84612A168BDED0B365C
1746EE54FD4CDB9DBD9AFBC3EB392400446D3A125D3C375EDAB7D551876345FF6343
17471D31E6A4E82AC340B16B1266D9E90418E8F3796F1A43DDB762F03F828981CA31
17482DFB4BE9ACCEB2FBAA4882520B01D36B1A7A98602E9D3951B23D3E5634EFB973
1749485C863847E780463B29F61C4FAA11250331A5C0D4A2E03A1FDA25D8FB40E464
17505384691A0CF3B929561C6F3E225DFE52C651B541B719FD7D60F1D23C8405741A
175170FA5024A86039E1B2BC64DC37AD27464ADA20B980ADF292B0F53BC7E5E2F9D3
1752C40C4D5FF6EB094A1CA0159EC547F0A19020E580A94A4833F4CA7B94190D5DB2
175320530215E33B34AC25C7BB38158C9369EA2EEA2EAB6A29499DEABDAFE5243255
1754CDE450920F62BCD0C8B6455C3EF9BB44D987A2754B8D5253D1E02DBBF3A740D9
1755A502CDADF38BDC4ED9CBF33E966CA6D81CD9DDE1DBA86A768EA720868AE9FEFA
17563586048721720633D9B73F16A5E0BA13644A44D64C8C7F2E7B22E488D77B9177
1757F27E7A960A65DB9674C9471175F136E436E908D10DE577F8E318769DE0934EB5
175815C9AC907F2799A2123A745D3813FD5CFBC260A454797E8EDAABC2A727B23DE8
175996026CE2CD0FD891197D1751AD87F1DD61F2B5406B3390E67AA7A942FE0F746D
17600444E21D51A6A103FECFE2FD2863EB1BF9FB55BC75EDE6D3192FCEB8267C656D
17617186ADE66BA749E1AE37BCF784A1E467D0B83C73ABE2550510AA57007771DE91
176204485B4601D14ACBD97C4BE879FDDF748AF1429ACBF3D41FD918A4D238D26F95
17639F86669789C9D03A04FAB2308419482DAAA77C47EE164B276257F0114D370F41
176482D109A24A95107695F87C6459A7EA5A28A83CA6F45029E32DE497E76DA7F99B
17652A87C4936275DE2DFD7DA865B8FF52668493ACCBA80AD419443D1B2C0659EA69
1766D16680F63A27DB05409EAA1E94613A6100E0CC78F8EA507144C9BB13E29CB482
17675A813BDA35C973616778E273A01943FD5FDDDF7489FA4D49C50396B07A06C86C
1768F2CDA26CEDB033B50E06F817A4F0631E0659E49726DC4A88F6A4D3A355F9966F
1769AAF445EA2B16C547B1EFF050879B3EABAF2B868613E9B47AF1AE7E90847123A9
1770F4E09E7D25D6778A87011AF3E42B8F05AAA2989AE67FD8DB9A560D4C75E79196
1771602996F939A0121A321DD323706068FE1CB46B0E95DC45845F14C06D9437EE31
17722BCE925B8742D0A1A226F225D7EC6A7A807DC1977C9195D91771BF8A5B2BE31A
177315D4D206107421213AD41CA456E3025F069432F21C4AB291D9A548C65A49EC2F
17747A1C5A640FF17D8BC4C04487D0CAD2E08DF0F0524B67CE49379A1E81DA971A8C
1775CC237FBBA08A90BD4A882DA93F915C7F3248569BA03794B9C2F12D51691B4CFB
1776CA5AA67E71599B33585E21593CA83ECB9CFDD5C547DD87694206B0AE32372B06
17778825223E060F1BECE3FCF5E76B5C0F963B7637EF59EB389F12B5B0CC5DD91286
17780673258290FDD422C4450B4A9329D0017FC2105E09DC969232489507B76CF9F7
1779E18550397EAF067B3A9E0347970994A6507C177EDB973A69EF7C382A941E69DD
1780BFDB14F5B3299BDFAE7CCC331CFB83FCCEEA55026AAF4757121A2F577F2EF618
1781ED54EF62FADDB76D4FBCE11FBDDB7F4FD6B919E046B5A0346A0539C598CD9A22
1782BD414EA34E25FAB77D3769E05EEB5A0FD51EA9C7A2433DB5AE9955127C403910
17832B6A66262BC8B0657A3973F1482138AF77E9F8774C2658F15645660C90973B23
17849C30EA7DA830BA0C55671AEDFAF0FD96AD60098E768EAD067F0A63E06B0CEA3B
1785B7E6B4F2D00F575DB0A6B078962B4CB9709A343EA520E57E826C9E89375D7F4C
17861231463A236751F69E097A994E4043DBA8692D7E9B16E214575D0F2978518E66
1787397FCA66BEFE1F4A7A1B7CB123DD85A90E1A0E88185EED105D7995D0EBB936A5
178876CDD7B4791AE48A7368912404F3A34A2AD049E694CE9B3F3C648143C7C2D6C6
1789E78B173E08B7129A1C443B6D4A307341184919EC3FACAA11B3DE39B10E855749
179099FF4ABB58030091CE8F975FF327D2A824B95437D993702700EDD7850A7A01EE
17913DDC985BE66619EEADDCD13B328CA490DE02087FDC35C1290C2F5D58E1ECE85D
17922BF79955108608606229028ADDC9EB448CCC54D7381C7EA8F9590E1BE3551FD8
17938D8BEF116597CD277E1A6DA692F84C83513E4E671D6F48EE46A78B7BD2056948
1794CFA4DD257747BFD38E6813A3D83FAF54FE128ADCCAE38D74CD0486ACFA15A6B0
17951D8469984101347A4F34DE18417F089C197DAE1E9E3CD5D8D8FF7A09DB77BD00
1796986359424222FFA593449F7CE00221DAD4731B341B11066FD3DB5138D163EC82
17979D89F5CEA8EBD5B9BC2FF6A7577E696A3787B6A07A8562648EBF9C1435B0272D
1798995814A9B100631205ED935D0A50866E74A8E332E31654A57C031541B0DA849D
17999B8221773B03527FC9B32F327842CC6285BDC49350501D8F7B728CCA5AE742CF
1800010F8A859E411DEA98F1ACEEB0F27890157F804AC9CD2B3DF5BBD1EA4C72BB26
18010133A4E0B21D07277D7792E076D7F11EBE47E673972DF8A2AB1DC562B0CBD324
1802712A40198D448E0E5AC50F6AF123DDA23DF6AD4587030AE9AB358A64E3D175F7
1803D278603073AA2DCB65626788B2919F675A5D41432DB8DC56B946D2EAD7D29B7F
1804A564E0CA7E8D37EE506C87D574B56E32503734D1A8B90BB97E47CB057FE58799
1805603EC3F828B7A5AC3863CC169C0D8B40C204716528F4FF3BB206DA9CF7A0C325
1806176939038B142297A349CB7BFD48022CD351FB7C99D2827A5F51F4772C437B6D
18078BC7DFFF5A46DCAC13BBF46CF14A5D8F1E9CE23FF35614F408BFC9DE7F36EE5F
18084947F4F664D5CF47E53377A4F9179C83D62EB8BD87F133BF2E4DA3E4443D8BE1
18092F206585D371003CEFC9BADC4547C28D21773D2853459EA4E7790743E1D0A144
181056C80938A89879D0724B79C8F883896099B9399BA2D7696225332A1EAF8C1365
1811D582481D1F93A28459D60DA6220F602CF121CE16F62C22B4F98F379CA401ABB6
18121843F2A4E7096D3982CCB6DB6DDB9ABE784EE9B2762D3A8E5768558755C63698
18137F02DECF75D2FCC99CD93494E8C5021D3B48F10E153020A5E1EB547311E3265F
1814109263954E7DB3409462351B6311ACF63053ED32904B98701A6B99F59915E9B6
18152AD813EDA9523A4BF3E430D8793D10E830E6E620892CCBA72BF9D437EBBDAC7B
1816B237AC58DDF7A684F5A338713C78396FFD6B92816647444BE9BCDD8CA0BB2E56
18174531639B3D74D2C2B369A79AE166109F5FE26A55AC2E4F7FB25A0D4FABD0FE99
1818621A447278BE95EE1D72D60B5B5572CD302B01989DBA8056CF701E4C59FAE8A8
1819D8853CD5E21952882001BC6CEDD8E195DE5EFEAD54C7CD2B4D1E0AE4893BFED3
18206F5A4E156D3B4415EB827F7515405C825CA42C75B9E9761FD797078A81997863
182199D1A40F45A65BEADEFF5B1818C8DF726B7129E984C33516CE9DC16547C158CD
18229DBDA49082C9693C10A08C3B623ED921EA5F4BF064CA812607AD44B779C9ADBF
18235C7EA8BD6F0DBA23B2F8505EE65D2DC384ACFF2D1ACEA8E6C6B6F18149D48D19
182496B365FA505B474B7C9292701736A0D48EDFA11152F622178EB33156291EB6B9
1825BA958F5ECB78F96BCEA8D7DAC90803001513FF64E4251C48FA3F4AECB8CECA8F
1826A3247EE067044CF459EE80D7DAD8F02BD6608C27A6FD5BB9880514A7B1FDB33A
18279AB70A3700CC5DE44973D1103EAAC669DE3B41E53F9D6F40F65580FC1365E0A9
18286303A8545B34A00A20AFC15851942FE866CC3F1FCEBB71C9673B5B5A086108A8
1829FFE0B0B51DB22813E11BBBC2EA53383DCF2D7B719680795E05541B026B41B6C9
1830CDE5B88522A362C908D0E65A1FE1073068507C63AB8FF157832AEE7228BDCF26
18317207EFB3A82CED3A2411064B24C50A24579A2A66A6FC70B7AE48E544B790D375
18327317DA0432E4893F70087D68F8B382FAF770C3B0AE74119A7474265BD6356FEF
1833CF9AB053E9F2F53E49E800969C7D6F128C69DBFABE01D464494CA06C24E0DDD6
183493FC8E0C026D68DFD3FF29A6F6D5D40928E1DE1351D457A6750F1A75DDBB0B13
1835343B3EA6791AC35A8D72E685073B01C0DDBCA8E07D8ED48EBA8E6EA2CB380118
18366D65D5C3D1C081058FC9CC54E9F49EA02A8FAB4CC126CF85E51960C402CD7A55
1837E8FFE2F22EDB8D6458F97E48A901CDB89BBCA78AC0DC93C1AF4D4A91D730FDA0
1838577B7F5E5540528E36DC29A5EA4E99C3D8A3D95B2E9926CFE3B29FEF6D55333E
1839B87C4B28FFA9A582203ACC9528DACF226E78041B2E675AFCB823ED7B01619F5C
18407E5EE4F4B800040F96F2693CB79F41A375D8C502E1253D74210ACC226BDE60CA
1841F7431720D00720D3C900098D13D9775A4E94A91801C5D460DFF396319F49AC57
1842D9318CD4DA5B30FE4A2AF67CFC34961EEA35B985D02F41B4AF51679CF1131327
184378C0A045D5D259494F86B486767B0835259C9976314CDB29F0E70DA314611903
1844BB43B448C7E0FDDCE42BD623D2919B0EB1B0D5C92C0C6D44FF220B12612A6E9D
1845087D4EC32DC0164C3C1EEBB4D42C24403DDFA87BD9397B34F4129BBC1F5DCED2
1846EC698ABBBCD76137BA92DC8FF989299B5AE9B0C9FE7A7C4C6AB9A98BB4D9F86B
1847EBB1A5ECCBA6633459814589DB7BEE88CEC1C1C4BE0792027C736C74AE0ABBA9
1848B7AB5AD51FAEADA4A53684D2BC12E6F60C3C19899D6DA7A0691CAE19306FEE5E
1849C3E3AF07D6D6D1921DC57C02DF25F3CEFFC56AA2A284FA26C99C467A603F410C
185038642DDBDA66623FD2FCF0A3BF49252E1F3B1EDCA0C39D6466998A06ED2D59D6
185133984620E4C5190365AC6A15852E9F114B7C6BE44631184E620CFC547B061DC1
1852B0F28EA6198560D45E951FE8CC2F375B3F29954C14E7DC2F1804218C28AFF3A8
1853B01643302DA4D47DD87E5C54BC270A012E3109526E5E78406DAEF9D91F410B7B
185406400A2A08E2096A391AA15D3863A7D276AC17FD6936833A707395DADB969E29
1855ADD9E78E54BDD88E66292953ED2783010B32CCF920349E866428533680CCE907
1856F6F0E92F2747FB8A090F33B2ABE187D25DFE64B65B333CC84D730A58DD47BD30
1857D55755AF60625D867503C5E5E5AE2B2526E7CFC602754DD6AC4CB2BA2B81F160
185810147BE356D1F8DCAF71FBBCE217456605FC236B8CD696B617E4091889DD5481
1859FD861F9571C92DF7B4BDBA694A36B23FECCBBB8D44E51FBF37ACED02CA5C9409
18602E8ED9A632E1DC490D7166A23F71572EE8670C8A718DFC74ACA4A28409EE1A67
1861FE3CEFA903307D670CE1C938D2958E26ED0497F4BFBA845EF1EC62A3C97AFAC9
1862D37A9785B4F9C6CA19BD85D5166C4035FB1806A7480451D6AEAFA0D64803792C
1863E0B184FAC3BF110C337218585C4EA31D4E76E292328A93194BA54AE22515FCF4
1864EFCCD3A6BB35164AE4DAFFF7CCC786D9E90BFA2478566F41A5ECCD277DA32B7A
186510ED094F6E7F054393986B8B7E1A08179F6FA3935BEA925CC8C7EB0661105B64
186607F9A35DD203B9D5688A1DBE7E4F52A57F439EB54401D191F0AF6F9B73E45FC7
18670409361F3A7608C499DE7BDDDF831D4FC1C7442E1E713AB71A4D38210B3612B6
186815F9AB3921999286C3CE9271F36D738EF691E06468B06E3FFD19CA3181CF5693
1869A0E7C2CCE9B01724AB154D6510343784B3EF0DA3316E65CB37EEE337BA295447
18707ADFA6BE5D314DB0F596999279BD833E280FF84A94EFA52030033023A42F932E
1871CA1F9A2177C83A6E9F7ED2FB89D4AAE5BE8F2C4175FFA039B8DD7FD9604DA38F
18728F1A2D98B7143D09A27CB1AE73E58DC9FF4CE1971E6ACB3FE713D3DFA13E7C53
1873B2454417A5DAFDAFB094C0811D9A12AD6B212A4FA2DE5A09E4FEC5D99BEC5222
1874F8BE9EB2B7
18750000000000000000000000000000000000000000000000000000000000000000
18760000000000000000000000000000000000000000000000000000000000000000
18770000000000000000000000000000000000000000000000000000000000000000
18780000000000000000000000000000000000000000000000000000000000000000
18790000000000000000000000000000000000000000000000000000000000000000
18800000000000000000000000000000000000000000000000000000000000000000
18810000000000000000000000000000000000000000000000000000000000000000
18820000000000000000000000000000000000000000000000000000000000000000
1883cleartomark
1884%%EndFont
1885%%BeginFont: CMR8
1886%!PS-AdobeFont-1.1: CMR8 1.0
1887%%CreationDate: 1991 Aug 20 16:39:40
1888% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
188911 dict begin
1890/FontInfo 7 dict dup begin
1891/version (1.0) readonly def
1892/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
1893/FullName (CMR8) readonly def
1894/FamilyName (Computer Modern) readonly def
1895/Weight (Medium) readonly def
1896/ItalicAngle 0 def
1897/isFixedPitch false def
1898end readonly def
1899/FontName /CMR8 def
1900/PaintType 0 def
1901/FontType 1 def
1902/FontMatrix [0.001 0 0 0.001 0 0] readonly def
1903/Encoding 256 array
19040 1 255 {1 index exch /.notdef put} for
1905dup 0 /.notdef put
1906readonly def
1907/FontBBox{-36 -250 1070 750}readonly def
1908/UniqueID 5000791 def
1909currentdict end
1910currentfile eexec
1911D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
1912016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
19139098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
1914D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
1915469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
19162BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
191768618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
19183645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
191948A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
19209619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
19210FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
19228AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
1923EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
1924FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
19259902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
1926D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
19279EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
1928ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
192910FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
193083158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
19312EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
1932044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
1933A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
193423DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
193519B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
19361C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
19378BF32C1F1BE935F51A1E6A2B3EEC69C02A0BA8F2CB4A4F68FB7896DC43147822
19387617A156AA00BAB69F17AB7D05874335CE3C819E21DB0FEACF1E752980A202CA
1939BB393069D59FAAEA4B47BCC0FB9C4DAF2FA0710A8A3DF10E3300A162A988FD1B
1940D02BB074BC5A4AEB6F0F3F89B3D68E9392AE07E73D7B8D18FE83564C52823804
1941979B6136D35154A701E9448881565857394B0D7405004459EE0C68EC17802041
194203FCE184AEDD76833090A32DAC65B34FB1BCDC136D12DA0D6F734F09A5F87BB2
19435407964AD8FBCA56F0CDF8AF907AD5352E4D93A6386BB2006E0FAF74AA8D548D
1944FFFC997F92F929B794A07CA8848DB5EBA8BA904DBE1AE6DB74FD125E11D39FD2
1945293ED39ED1780FDB87D969679CD590297FD9939ACC30B4728227077FD6353E98
19469E62CB8E355522861928A6A4C4747D5794F4DAE08C94FF902D83E5C9FD260800
1947FAF713E15B90131C1230A572514B78C4140A3BBE1C1A394F4C0FC8216C9A44B6
194856C67513A4D15B6FC3997D906F69BD022A380D1E6DEAC37434EEC14CB066C7A5
19493EDB6E01DEDF4D58FDAB5A263115D8DD8467F551283B349D0EDCD102A4CDC4DB
19506133E4F3942264E0BC3D4FA9F42C3EA90B4FBC54DA6CF0339D0EB1B1BED4D7AB
195186DFC6133D38627E2BF545E123B6B848938B4987D5C793EB031AAC98482B242A
1952B4F9662932E171F439CC1F75B38084F9460FAEFDBA8FAEC336348010BE72BF3C
1953B481A0F628CA6A15602A648DEFA045F796473FA9D1D1838128BE6AC22EE49445
195414C049A7DDF8CE32418992973BE5A03C61CB64088DD227CE312A802C34FDB144
1955A48C3F4A2758D0A547693067D9FA6A36FF3F6349791133C440B1A9D3CCEC40FD
19560449009528C4DA20FDB85B57F30B9941D61BD6C722E4E42C243BD21AB59CF8B2
1957461F44EC175031BFC898F198D9453F580363DF0C4CC10245A23FEF9FBB5E7AE4
19587EDD08A647BDF27390BE255F3C5E9590CC56B68BF26F97463162A601F6FBDB73
19596B9C7E6B0C9944C91F24FB36F87C737E4A30F3782AA2237EDD48A259D283515C
1960030E4FD0F67BC97E1C2E1F82761D4AC4E0F19D5BCE52F69C4698376EFADA56E5
1961A7540CCABDCD035DD158BF6EEB97E4E491AEFA346B5849E8841E1C512926219E
19623D3F1C444D1CEFB2468DB2AA00708A6CACFCEAA65D922EDC5D64A9A66B17C938
1963BC7CA14D2EC98A72C976F149DFA98DE557C4A52700856693C7AB5D80151B1C95
1964663D913F0AE40F67F2648524E6B06B379D9E0E2EB8E4CCE6B026E7AB5C3DBB48
1965B3F6963F58A66C267252AFF7CF2391D350A43377DF8C3E08E6E8DB5E0D26C996
1966441A716B3DD2778E2067A37E6F1A9887855A539CC282609A42BE27F6F815B064
1967A27B8CE2EF121386E670AA7442B14BE8B66530094EAA93E3FC6668A567F760D7
1968D060D8605CDAC6440F2CD8F24493BAC8104211B03A4A115E78DEF16372A1EEA8
1969840A5AD4E050CE415A938D1D9E9F0286A8E6345BF7EC8D096833B2BFC9E94C08
1970D2927028B30C62D9F95E9FC78FE7D598799CF3D0D24912899DF0A387FA5EADD9
1971F3D617D218F949AC82BDAA67D3D2863C5B7311E63CB1FA6C633254477A570DAA
1972E98E2E08BDC5F85AF690C3E71D958F9F63373D9D8AC9A52B4B89F3DB04B87131
1973E3123D7D06FF0B20365F0FF541AB3440579A0F482E74ED7331CE040BF5ADA33E
19745ACE0D28130EDF1683C60D79B25103C71AE56B87006BA19C8EC3CE08EFF66FDD
1975C6B4551ED82322C9089FF612381C320B3792B66B952062FA2971ED005A468FA9
1976F9CA87E42DD3F8D610E10824986E9A83961009759E216532ED5BB5A8C27EACDD
1977A83660DEA812ACDB82271E1BF1B15D020FF800C8E80D0DB2A7793D85F124E4FC
1978C89268A6159F1734E97AE92022955D040362EDFC1A2F77954B35840B42996675
197900F6A0C6283059263244190DF799E158893572F2650A0A27AE03BBE64ECCE095
1980BDCC8924567A84E89A7AE812ABBB82A4D0526054BDBD6A44C4A86DCDFC76397D
1981B49C98C5ACA66CB80CF32455348D9968E19898677D6AC6C22FAE5747D8C6D9ED
1982424A9D671130BA557F0BE38972CA0B6F7439F630FB07C409CAA8302212C426D1
198377859925DFF96F842FED263912E6AEC336B99FCDCAB61E8E3BC0C6D7F760FB74
1984051321626865771FF83BB6DFE1A9035BB3ACD54836B901CEC6F3AF5B6603E31B
1985864BEB1C6DE0AD60BDB42508105EBA426E0396B19EE14B539BCE68853929A63D
19868B27167E4D43F5502AF30B8111E42A0A593A0AA52F3EE42C23486B16BE004F8D
198793BDA3EFB798A58D10F79E8EBAD6DCA69D8CA91C1D6ED75036066D153C6057CD
1988CCCCF40784B26F87F27345FBCF45435223490BCF6B84B4CFC5AB7B8B9FDC5F60
1989EF9A3F0B60A6560C57E71BE1557C5466EFBE1AD76CD5D59681C6164FEBAD21D5
1990D93E01DD9A881648CFD245E8F0791B361D64B0DD8BA93BC783B4F1403E002676
19919A4DB0B69E646F4D4497EC87CA672056CA7BF0B5AA0BB7CBC8A93919A1224757
19921DF0AFABB5F2013DD3FD67132BCD5D30247C329BB6B13BFC3E683DCC35026FC3
1993515DD8A2D629818A9A9C9AD3263D781B86F52F352A3A0FD0A4F74E5BA65FE64B
1994162BBE0E843C31BDFE4AEBE3782F85C423DFF302D4F4BB3FAC7C6FAE7870626D
19954C118C4885ACD643DFFD9DD232309AFE871E57CE81EE352EBD82A9769542E5BC
1996E3AE55CEFC790B1744D6B09535CB1A17AFEA289295A88F08A607F28E2D6D229F
19976FBAB27397A3A3266B3FC952538A01E066EB51AB2AF4C13790BDF92977C3D4FD
19988C76653BEBFB42BF5A93AB343CF71E006CCB1AA6DF07C3BE55DE82D86552ED2B
199963A25D1B3D892EA7BFBA8401BE87F7D3C0F70BA06D0806D418DE025AD2A44BE9
2000B0576406EF122471F4080B32FC8397C12BC550BBEFE63B119210CCF2856BDA5D
2001881DE21D34C7BF597ECBAF72DE16E2443932C864AFCDF2FB4C233D510176AF0E
2002E6B9C20EE11CE7A78BA76F19F2C81BD3F5ADE5A47C74D77B6E1BA858132FA09E
200344D167069ECF433A3F5B74AAAC73E1E95EF7D983ED370B4C2287FE814154FF33
20046788130449F5536E305865CF8C513E9351A5103A3F338082E4F1D5F0C3D4F5B4
2005E20EAC7BE2F363B012FFD806C5D2EE99F48B92B41019E794C7BF7A410776234F
200626459D88A4D68494BC281E57C8C2CDD5DCBDF64E9E4B184AEB5C94D09305C0A8
200772835A6F6DF44F2A7B1848CE38EC6E938E0185988F39B9BC62D4BA3071E7FE54
20086DC79B49BF6A42756F398ADD8156F322CAE4AB583A9E47A1453F8410AFDD420E
20095D32F0408E7BA999F52FAEA73DEB5035F083472D1C4EC6FDFC6E029534749597
20106037B0C4D49484DC804B14C87D708242AD05536AB037BCBDADBDDA4226E85F98
2011A5BB63E8885348722C0938FB9EE57CA792B20F06280969D8C231AB8090BFD160
20120991D1DF5F89432045D3A0CC4E361A2AC466A402F89F09D7238900FD50AD0DE0
201346D8749949662F5FFA5A2258E5D35F4818E107EF5010A9720B63BA107387EE37
2014A4448F122BD880D288CD50DD5033D06A2983F7F62D5A93CC12F9CCAB25654688
201550C5E7091FEBF634A1C2E5DA4C8CAEF51F9D9BFE236DA6958759B19CDD522947
2016C4E74F63EF468B19ADCFFF7E6D44EC6406C4F70D11575793D9B783B24528C867
20172A4629BFCB1DDB087888C5625B4B552851BE71E5642FF42399B0A362ECBF34EA
2018EC45113E3A978EA6C403162C496B3BE73E5C67B9D0F8559B189ABEED9EE5B5BB
2019BA5D9F8EEC40035F176D7E445743979CB013ED191F3C1D4D7ACCD8BF0F2BD9EE
2020C34DEEC3F2A88547A7E7910C9586AFE4FD55E41422CD70AD0A55C27A2DBF267C
202160FCD61946C94894CEADC4289799910A0E8FEFB941E9492610B6006E19748779
20225D3D455A46A6633EF137D10AE2797B14F9624CE9380ACBDB482F729EC8171913
2023C24781311366642B79643C88AFC58457B8753B2842F16DEF21FC2FF03F0184CB
202483DB0E89B74A13EC0DCFB29D435286FFD9B0B5BDF3B844E02EDDA76D3E0BD977
2025A86F8F2BB836545B3D7D8793D5D327D32E5FF48FCCB7686104A851501D74955B
20262C1CEFEF59B031487C246BDD6DB2299645286233B0885CCB51F1E600E6C90151
2027CC1DABEBB50A7BE6F66B06D6340EE795C53CA2238E90281A26D09BF60E8FCBFE
2028A3A37C91DE4974908657F5805B1B1567294C155DA7FAE5E434A371BD9592A4D2
2029CF57508CC3EDFBC11EB406E668B8F1204282E2A9EA9173D983A6CC7F2D3F578A
20303904E5EB22C286B7930E5519F6A40A23DA7A3088E274284C1F640D2773D1028B
2031D299D969145FCC9B5F89DF1D5BE6F847F9F49326CBA4835EF03D1819045FAE5C
203272895A3D0828BAC414291F042334B17EE49D849928E39BD9A464D31346BA4D6E
203303DA880AA0C3C78F283ED687E2F70DC889A7B9D777845F1097F520704CE81333
20349B6EA93DF1A11ED41F821A831C0BEB917FABC8F68AF945E95B0BC9B883724BE2
2035BCC7CF84650B0D5B43FCA10052093E832AB862B354EE89129CDE68C7364BFF6E
20363B93F0CA5D19228F1F44E015B4B8E8DABE4229560E89589F11BB46E0F42BC64C
2037273CD536BAF00DF26FEEBF9EC4300DF01B221FAE541132674E6D16F43AB98040
20384CB4D0A72F272FC3320DB8B4B9BA8161B4895FF9EE2B18EC90FE9C5FD3F40622
20398E510CF33BF664475ECD70380164A55ABB43734650170D44B9B9BEF6FC727984
2040975D5053360ECC7C0A375215AD4AB63DBB7B2E3F75AB136F6BC002D029A9AAE5
204105671CD18D26006CD662C47A4DA9E7FA08CD9C9EEA9ECD2B31FC65D7071F0B76
2042BA692C320C49910F61B1152D71A36AD4B10D3C80AE250F50156ACDB218F59CA5
2043028E43917181FBE4B062AD0CB441A0DB976C2F7D09C30D37B09C55C4F5C420E1
2044887B196B4468A42AAFBB95F69C79EC97B378148A3DB04011C7F33D9662C89D6E
2045ACD69C757851AA44F830EFB11C1D259C041E9B56924F84CCEBBCE6AA0D10E45C
204673E191726704188DC82FBA0AD70B98C7B183C9C529B145C2DD63E08393185543
20471894E2588815FA14DCE9EF5BABD58AD3D798F64F9418B62B2E02686F8B8D962A
2048CB20B6B04E581B9DF6C52F544BE97CDCD2F2740A92226D97211DD8168AC3D13C
204917360807EE886289C78768D1116E3EBD682120FB6F90278CB3A70503A8B8CD28
20504E0F7E5A3BD6B7CF63B5B6ED9431D8E1434587EB4B74EA388FA301896F3E0FF5
20512CAC688D84B0B33C87AB1A7DF3D90792E9B7442AC5B1A450230A9DC514D3ABC4
2052C6A7EFAC0B18488844946BDE5DDC18FCD3D832C1D6C62633D6E46F3D561D40EA
20532A3B225E71717A2FF5E6DFB29FB611FA3122FC60364104458D9CFA6F5BC74117
20545582AFD3A15115290BD8F966176DE34A62173844D79EC73FE81EE77448AF1A35
20555F4AA813530949CFD5E53F5CED0323292DA6B28EC13C2B35A3B74165A2CE729F
2056F9C7EB1A728077725790A4F0FDA6AC9D9942D52CCD8652959E0BA58EFA5BE6CB
2057B07DCC2FD207F400F01F7D910ACB7CB87ED3FAC751A8DAF3516EA71AFF38EB27
2058705217106FD0FCA158063E80FCF454444A5C16DC12FFD5EBCDF0F70C1E5CCBE2
2059ED0A6270E1BA271989BCBAACF6085AD252AD2137644450360934D03D6A014150
2060FD21949EB35C0F2104DC44643C56AD864CDD802D6BA57EDC7F8263A86DCFB0EA
2061439875AF0EFBAA5CA147B7CF6DBC691E32ECB2432328FD3B0C7AC5E3058FF419
20622F629075692FBAA974E2071E798EE81CE61545D6BCE7B40DF72416DD3161CCA8
2063EE3F294DD3C7C61CCDF78F69C1AB0B63F4EEDBC01372D240268F2C60AA62E8DF
2064EE52909ADCC47044BA3BEE85D077986F179CDFF53AD8F9F22B1897C7C5D23B5B
2065A8C26584116FEC0E562E688EE078FC2D0082F92090A8585A8178102D22BED49C
206662C9F7B589F105541DCDD6A157AB685699C580C282A5BA26126FB08FEEEB9CD7
206771781251823AFEB12F5B37DB4CFE59D5B23281D33911416D8EB55CF4DA0CCC88
2068E380CB53BAFF81CEC5F29FB54DA3B66231E0A24BE4EA672A08F9E2046AEECF4C
2069B9AE458E76A3FDBB1A1BB37BA2F8E756D5E3D96A97750B0974D67EBAC26D6C17
2070823A144AB04D93D93ABD0FA46E52D4FA04504542C6FB9ED028297D9B22F6C1BA
20712FD3773F1E71E4BA936A4033351E12F48CACA9137BBA250D145D5A3E4B9BCF81
2072F3EFFCD532FF2DD2085AA5F8259393B316EE9C9E3DC74C2B0015B018D1DDA120
2073BACBEDA6E0BF7D91DD13E0D6AE3000E03E9FC0A2871C909476D2FA8B1E852E68
20742A20EF414950FE7D899F554245FB6E041723FFF36FBB0CDA14BC162C81884487
2075A255D99BBA35BCBFED3369730FC89EFF68B64C5E84B007230368B32A7B2C3476
20766C1CC1F41A951D9D84B796EDFF484106F7479ACE356EB889453E138A98DE20F0
2077F10EA068AF4B2C67F877AF2FC067669891F7EFE3EC3AD48A61CCB907C6573868
20780A47DD38ED7A60BFE77ECF4E6DF3DFA70E5217EDBF20DFC9F5B707665AD365E8
2079F225B0708F9877CA0D27F6BF42250854129AB0F0096B03E653C83D65B03C4E4C
20804B5B2B2FA881E58D94813A0C82B4BE017D7FE636544E7E698ED1F229372E856E
20815A9D61BA773D85DB651D44FE34B770D37D6AA24B011C27A421E12FE0DAEEBDC7
20824EB72CCBDF1C68968DDA127416C7508FB39F3CC98DA18D3B00D083BBB9092413
208305582D08F7AEE5866B030F3000E08C4B18C3798B64511EC0B8C5F64625445609
2084EB750668DCFC76A6CE41F18808D4D59CD8C4DCFEAE74E4AE9B5526774484C928
20853EDD497B94E12A6B8AA151BA9071A8A6F6B842C568C2FB1B9DA2668928966A71
20861FF06469F4EC05524A59683E4FF003D0C1D8501B35172985D3AE7B0104915E3C
20871CDA23EFEA6702D67A2FE1C37EAB2AFEA5B23FFC3146C0AD143FD4B67E240A12
2088A9FA5BB54B85B8B0DF788A9B6D70375D293BE862A648BA03620BE3D00F5DB2FC
20892A5CB1CDDAC650FE19E4E67BE94F6D2C0CA491CF04736F001E8A440558D7630F
209018B6F0C51A7A88D7DDF3B3E0B356CEDDA2DD90F1DEBBC2E0A00D356240D95D3D
20918804DDB50C087DD7D743D37F787D519FF0E5331E40FEC71FC172B7B9FB4BFBDD
2092A9E4ADBDC72B68AE0B906EE04566DE98C2142137787C6FDC6959BCFD5DAFED7E
2093745ED34DF81F2BE2BA71FD29ABD9F9EA2EE83188B3530D0BF75A8524CB3B74B4
20948894B558118BF20CDF56AF809295491269D2103B8EB87B7B1E9FDC515E1BB263
20957BC9148A7EBFCE70188D0B1A17B7D658DA1C68718B5D877E766ADB4F9E1D2CAD
209609F2D2A0BEC2AAAF29E2CE02D92AD9D69EA3B82725A81B66E6D7DFABEA83686B
209743DDE5495E14ECDFF314283FEE34E12304720E21AD065ED65CC4927B2CF19F19
20987BFADECEB4AD2A72C922F275841A9A32B7F59F9CEC85993119EA5D84960A7E16
2099A78AAC396EF0E30C9EA0F14FCFCF334B27866D2DA6340FD44C35036B82206996
2100BD42AAD9C7BF510D6F99351E00341ECBCBDEFBF78F1ED10AE4949377D95B9E33
210170E081EDA5A607B2DC1A9738392F5F4877FF63D96F3FC6471B0F1A28F82B948E
210282EB06170AD13DE4ECD5434847DD230A34B7107FA0413425D6D9CA32C28481AA
2103393953FD84CC739316952259CC15DB3D04E7A2576128710187537FCABE9C122A
210442FFB3E2BF87A0E3C01687C35A8A814A2C2E2D8F0683CE2BC0AD76E751779DAA
2105E2F71CD0D6A404477FC407C1C7ECDEE10C2ACE04AD173BFC01FC4DBBD91FE636
2106702E00578A58B04A6356BC929E89B7C23EA2B4D2F05463F440ABD43619D359A6
21074DBEE2BCD153E8E2B798E48F59B4075ECDC4B6AC81DF75B60D5C55A9BA18D9B0
21080BEEF152C02CD4C9D614F229E15036D1669D4F0715AD4871A84DF047F298069C
210920FDBB5D9D622940F3489F5AC9D8C48901F97B387D9F6971FE46BD41BD122929
2110D113A49E4D220947F7800AB6DF6B6DAB345383F9232798C0D8742EB0AB37FB67
211146FA98D45EDD95050E8CB3763A0BD67C1F32CE256F2D81FB05414A0F4845C692
21120D7C997CE76362A4460DB895D4B34415E594BD1D6D3C629A217804122CA41D81
2113C1A7226B41F7B8D3DCBD2AC9F1A58ED888F90158CED2BD1BD4881F0330667738
2114997AEE6011D252489AC0C346C2E7997EB962B34424C1625A1137031FB5CBC425
21155A9E08A920E51541ADB58324D27E59760716B01EFACE7A2C436C7663C7A1D378
21164EFD66FF16BDB57AE42BAC37DF2846DBC12C6902775FA98C23FA68D9790858DE
21179260E0A722317CCF99FB562CF92E762C9F59E04590948D507B0D44364D33B16F
2118424137252B67978A00BFFAE3C4E30D1D62DF2D22CC2866663D3D90E78F1D8C4A
2119C6AB96093E510628D8AEC1C00C4569862EF44E462E74AC21F7896C344CE9C529
212051DADD8E3DDAF7F77D5F561DD629569E559981F2521E624D77D1F7A515FD206A
2121F90733AE19CAA4D93BAF58892C1B5D18354351591A2A8FA469544D2A9DECDE28
212256A75E8F53C1F385A0E3138DF166F8A0971E3C6DAD42779BE51EA4B13A9078F6
21238155CF68CC6BD9E39D94A8CF31E5BE1A65E55BB7C9B2F41F98C2AB3BFD841AA9
2124E9A69AAA7CC0A6BBC2F66A35AB9DDCE6F4F6741C9B2CCDA05F3E40A84604B459
2125E96202AC1170606CFBBBFA0B66161CF976C42D3336082CD69FD3B21F5417B036
2126058E6AC406903CE2BAD1443F029BEA088AAA7C5213C3D70922AE267AC1C5CADC
2127D040E5F17A570D34211EDC65ADE16835AD8882D79F7B4C46EED948440B731343
21285B37EA4276D19FDD5C17A90A90248B2EBF259354D61210BA54DD4D2DAF6A0B2C
212914559DDAB0960DC0947D84952190D915D3CDFAA9A1161A0A0377B09DF62A8768
21301A321D657C2EBDC021733D71CB34399F3D134EADD455317D3BCB792F37D9298B
2131354A6C7B5EE3852036A5F22E05534EBF403ED6A9736A6C0A421CDF94B58708DC
21322F37D6C2888D75C51C9A55FD1E468E31513C14A54317470E2DD84C692CCFFF36
21333EC351523B2C74281D68A1BEE6C180A0FE9855946268089D2A3931D5B3BF5F24
21341032AF0478059F8B909EDEB7D70F85BED45C1EA6B8FB69AF45AE3FB21BF40DAE
213526E41674163C34FE3CE0908F3232EE6E6AE5C3AC527BDB7BDC7F9B620C9A8A87
2136E8128354A3EDE2243427C95C150CDEDC5DA74FD10D61233054458D238EE6CCE8
21379C2E0F1CCD3AFD4C2BF9A9B438A9705206158CF09FB6753CB1379514E7827BA5
2138396140E312185010A0F5C87A2D1D11A8402605B126B9D05CDB76F76803AE4EB2
21397A190302B5F50E650F358D04FF254432EDDE270CFF6F78453683AE2025B01EF6
214003F5D4AD7957A6F86CAC3A2D74DC073531409F3B185AB35FA422947063DF0849
214178238111CFFF66D21699954EAED3A26F5FDAAE070E5CF90365A623F05668A538
214200FE77A3A96F2A88BEB512A8BF25EE225E2697D16D39183418F2F90B9FD7187C
2143EAB5897A82113EC001FEABBA122CE2070EC3EB6E7A88EF8EA57BB4492E7F024A
21443267EF86D78C54921FD8EFFB34C21686C29306E8413EBC7B087D001FCB7C18DB
2145585B55B54FB039810DF11EC19920FFB54CFFBD9B45F578019D66076D8D0CA425
2146C2E55FAF85482DE1B7A3DCDDBF9FE378A6EEBF10D5B611312DB5732899F43CD4
2147B2A4438C079E3650E552B82B49ED62D6DFC44EFDCF0C24CC290BB1EEF039B240
214813498147AEA835E093CAC01A3B0BF650F500AEAAE8E3BBAD06CC2F4ECAA95171
2149C4A5D518DC09275B568D6A158D9F56439294419FF440630B243BEA99AA35C5A2
215084B97065386298C112A0F2209C6B1D9642477D17D5D48240BACAF9B9D7514A13
21511E0CBA1635556B63ECC3370ACF16EF98573D1228992002FEBA55B2EB94D26C81
2152A8F89BB0E68917E175CC541DA96FC8770588DB3FF81D79AF952F9152D1F780BB
215372BC93DF8646172AD24772A60E3B61F21292CB763C3DD2AD09DC990AA7AC91B0
215471E9B638D76A68AFF89BADC28ED1B771F1A122BC3DBBA7DABA181B86A0511961
215525606E1EEED78F3978BB97316BCA93784A73B70AA3B6104ABFDBBE4E8F7AF09D
21566F7B45289A33CEFFA4648B6A74998AAC30C2FFCA787581B88E00200038844881
215777A8A5C762732D65582B9E95985720E13E9D2EE241C7784086EF9673D521E6D7
2158728E8FBD6E82C9F59CD93A7E5E93383C75344D3BDE2E9A1C23BA7BDEDC44CA68
2159266421FF0A6521BA082A7C0FAC41E8B891D7964C8B311414C2A7B9D511BF6F4D
2160BB466698CA561CEDB4C18C6A747057398AA7AE03B5D25366577098AC736791EF
21616F7F2F4AD50049DE2DE937C10E007DFE266132AFD3B0759552BCFBD1DE7701D7
216240C0684E5198A4C5EA720EFE65AD3F3B7E7120DF1C37A0541336720A8662CF8A
216360322F8DF190C333CCEAB8DA4E0BACAC1AD33B58D1E62CD9F88221B77D06B3C1
21649A076EE251011008224346C273901D11D174F7D8F73622197B633FF38A420DE6
2165E566FDD431CE5CEB23854DAABA5AB2186988F33BE5629F296B00F1423881ADFB
2166BB21447A07891BF5243C5575DB67757C038376FFA751EA0D192D36FC6ABAD593
2167FF99224D445C2CD3E17D693BB6F9DA64C4511D9D3A1A3D7E192780CEBCED176B
2168C473241EB2A5975191757073797E3CCCE1CC6A4D22526D5832A5AC3368C3BAAE
2169F47C7946FD755A5BF3C6EC9F9339F29F135BEA25225F5BDB48A4ED71C0A6F756
2170B727C0727264ADDD56A068EC732A7C3EB157CE2F698BF93D09B6226AD8962871
21710115EDBF7CAEE3684C982FBB1706257603E541C9EA473359169C0D6E21177E1C
2172634FFB095CA8E4806FF2CEFED1AA5F223F6C1415933D45598E05BEE7860F8A02
2173B22AC51BCF3099A489AAD858FAF5F25F2970C2C34F369180A5FF993A33606B04
2174D86DC7393F3F56BFD4F49BC0B710E514D8CB3686F4C559851653714E916E1A14
2175E163094F5E5AB877457E41798A7F772571D18F3DC1745A1292A723F4F2BFEFAC
217655946DB6E7049F2CEABB8683EA0405BA71C26E440ADC486E90E9FEE8006FC7D0
2177946284B9FB12726148181F9911ADB7EEA6D4EEF7D0883F0734DEA6011E93F333
21780CEB6EF60FB5C598E88C807114FBFC708C866E10283B253F7221F77548050052
2179CC6395F359BEF8CD051D7FE8CDCB7356DE21C9992DDA3E3AEF4C39D67A642750
2180854AFB2F1F623BD1411FEE89F268EEB31BA3301A0B2F0E255195ADF88AA9519F
2181045213BFE0C5229566C8693220BEDBAE43A2D7C5EAE8B70C7C7615BFB6BDEBFC
2182656478BAA7222C3C2208698B9CB31ADA9974BB9F52CD9849FD6AE54577B550C8
2183BC7E7030268B7A3F60D6F1A5E3068163058F8BABE065FAF131234841258081A5
2184DFCFB8B95BAED2F177082D9428A05D98161679851047AC680676555D5790DC90
21853024C143E712CAD97AE14C686DFD0B0AF8678A0E900AE0B6ACCA5E147343F6D0
2186FA16F5001B77FA3CA828C39B639009ED3667C7C4CAC30C73FBB3FF198E25F3A7
21877ACAA47FDAEFCA162DA9EBFFB0B67E6D1E30888EB7B1390A2F904086C9C193B9
21887D7C38B6FE2C505CB79A928ED7B160C9312A367D563EEB2EB633C290D4D91AE8
2189626C7C75056C60439FAC82EFEC2C55B219A4A5A46BA158009DBE1F2DB4DB32B5
219054A34E2687E9303774BFD9315A64923E6038E658BA523F704FF7450C7B25D7C5
219152CABADDAD0273D310C683590B97FDDD457ED674B9C4610B2CF0051437207918
2192D3B5AB0F8F6BE5F2E3B0FF2D330A32CB0010CDB1236DE60A475CF643CE7282F6
219311E68B8065CF6F3F976E9A13EEA94260365A8FB0E5420B69643AB2DA936F3450
2194E02CBF5DD991FAB244743110857B621BA930BF4877BDFCABA8F1EFA1AACDFE58
219541E09B2F7D6B8782961D7B26DD4E2B3ED872A4E049F6E9DDE2B09192E3B2D967
219625C06C9FC87D57579268FF9D1EAFAA86153F21BCA6AB7207B314CC7CA0E274AA
219738B3B30E18E870324C4849AC3B8B526F063F4E5AC9D8C72989046A6EB49C0DF8
2198EBE7FF1BA628BFAA897816A3B07FCCD0F10F7E19D1CA42EB71E55E7E5E57041B
21998BC3FCD4EF14828489A158F644470993260E5E80F0CB0C6ED889CD3716677D7D
2200EAE111BEEDBE67898879243C0D1AA6CD15369E54D5D29EFD0A8A080EF8BDB4D7
2201EB1C93DB28F7ADD7F784BF863A93430021C2A04A2EAE0953375D42615E5086D4
22021A3D8F95483CE6980655EAB12C0D6C8AD2258F63E50A310407486012EE4796F1
220304B718864FEB1F3BBAFB7EE522D2F83EB1FB9ECD7023DE884BA8B866EBC9210E
2204E5EDA79A815E37A361335A68D1C98C5FBE4D1C1AC867D139E29F6345C4D1AFEE
2205917B302994F5C0FC7F5D7E12AD12FF0B874415085F178E9957EC0BC8AAEB0136
220642CBAFD49882A9551F011F8461BCCB5EBE0BFAB9404AFE911098F4EDA74C2D5E
22070F30BC2301C2D679221A8D00F20811987F22091F3C94D79B683F58166108566C
220893BBEE66C99FE19FD8B1B9EF7F6070B1C504E1B2234DB691F6C94580945649D6
22090757EF8710C2D531F56D6A7D78814F69860F064695124D064019E3380AAAB72E
2210FB510D19DDAB9D550D088F1FEFF0C17BBF82B8F4911DF9B01CEB823190481DB1
221183D0D22388F3720846A9215F2CA1E0604C868E7E8E92BAD134D8E19BA637C16A
22125EE5A9E7EFF106E197B7132F50AAF4B104E81B96696DB2A8AD870548971E8301
2213DDC68DA8DEF897FC56554FC40315EB3D53AB95C979B5E62A12CEEAF5D6E213B5
2214652A442495893B25DBF4BAA06A31715571354799D9ADA92A57C260610C32338D
2215F5DD11B327B70F584E9CCBD4821034E7338543BBE03DD2B343E54ED390656E65
22169E2D9B94DF1E44D4140DD80CA27A0E6AD833115CC3F93BD8AB3D778A56B8A969
2217B9CCD3F3D61FC8F1F3A5FAB1963FCE04C252537F13F9B74C172102ED79F89BCE
2218F70B95D7DF614D3587B61D233FEEA57C7589CB664E61D4B299F17E45173D3E49
2219FE23C80BA00229D6358A573733A401836897F2CABD8B1CCB352F5206A05B23B4
22204013EF2C5FCBE0F0672171FE4DA6D0A353508CEA09698E1DB43E78D04212106A
222178B2FF52AFC676E012C9E62A2799BE98DFBE41E3D64E061610967E6C6AEA048A
2222AF259A391C1273D02FAFB4EC4D803143C5AEAA0577D8CC78568A8D2F3B8A22D4
222386FC83BDD6B614C9D5DAB4D65172CAB96086F52D3F1E7622A13E46D44510E9C1
2224B640792C4CD0A9B0857CACE924843DC37084830567198F916CE48909BC084B24
222581C7D9E054966EA4A6177059A6FCFAD0E4A6F4C860EF3E023366F03E4FC3C2C8
2226919214A7E22D25D4F1D28955FC357FCA42FA3826EF0F107621415CE81A90244E
22272A8E393B29838D4DD200BCD80D498D6A28A1916A61820E44BA0D49DBC1368222
2228891208B4CA964BFF4A077B1888DAA163277816BE4DBE66390E05C40106116FD8
222984922685F08E8617B2818836F714C9AA79C7E79A719879AC766446BAE08F5F58
2230A85A469FCA296FC08FAFD2B17527E7E5D6E33B16CEB6748AFF4F3A4E04051335
22310E0F2792DCDF9479BCF93859B2E65C77808DE602666048762980F3F9E2AD9994
223208CDC436573F2C0D1F52C09BAE774F357B90BD750BB66B0A76DA7544BD3ACC3C
2233B910B651FFA2EF8295A149E286BB3EC8A5FAB79F30F3887997E35CE0406111D8
223463775287F7D94CBFA794B3FE5526686DA4EE25F6E843AAF44CF63E3EA4AD0995
2235351DBAF44AD39A83B3B455447B62258DEEE619598C653C97133A55BEC3416312
22369B68486989310823164233A2EB274A9011570E3C6EB0FD47012E1C28523ADB18
22377C6D7E1F35CCFC8843B336E4374E6311E9DC8DD37C5E80577532CACE6DCE4665
2238A16B9AE6695698A5AE3DDAED9322F33A4ECE00B002CDD06D68E2813391883E03
2239A6CCE6E3224AC4230E95EA50CBEF985686156D9EC009C4F2D5F535FE95A2D207
2240A28C00969249452ABB5EACC9CDB04E122C2E7D2A2C605FF91577189C45523EEE
22411C60491715E8721C6203489084BC7F89AAE3E2FBCC30AC852EE8671AE57FCC78
2242EC97A60233431B28255B195A0161A71393FD35E3D779C9F057030859D66A0DBE
22433B6CFB001D7F78D549736BDA4525F452A62D24CBD50F26CF86CC40C0568C502B
2244C8C4628E1E2D65B0E438BCBC9B469A2FDDD50833FE0ED98C2F8C801A77641CE2
2245B2A709826BB47EBFE14124DDEA8356B978218831C78BA723F2BA59C2B3D92F3B
224653E4FD457068808134D31F8FBF9D04FEB8EECE1401F862213D9D124A63694291
2247DA0FA986ECC002727A4B002C8A90EBEA4CEC3974BEAD6203A80312D363976404
2248B58CD663EAC26BFCE72FE032BC4FA3AC4AF351D974F3EFF8B7286EA81AE116DA
22493E96C7E45054ECB1FB22D79C65D309B2EE3EE70206419E83603AFB76F83558BF
225061FE2F9B4DA032F2D551EAD428757BF268E9DB3788E80F52CF0F825BA5C83F07
225160FDEE9408311DF94B29BBF0FAF661A7558E6A7418EAA50C752BC8141E8115FA
22520087DAF9FC6AC97B06E8F7D12A22EFF6DAD989DC5E17E519D1B799E31B1329E5
22537056FBEEDAD4730F3197C886A05539707F9D724556D4322B1BE02148431C7A4A
225426EF0A7F47015396ABA58AB4E821F631D38A0EA1F449B6A84375B02444D05524
2255A9CB54CDF3A59E6DE32050681CD7AB423F17574F59B733A8333D22697556A412
22568D460EC9A4C9ACF5C3802102A0C7A2225BDBD1DE174C98AA2764FF35BB408671
2257633EF1552B6CC7DB997B4E25D498BA38C3F0F7849FE2AB82BB6B43F1F9269C39
2258E4295AF84E5E6B837B731DF1827F9FC09ACB35513CBEE410864FFBF82226F5B2
2259F50EAE947ED7B0BF43CDE3F61C8B938854ACD2FD676E913586F1D0EF6ADE3936
2260206C763B1B4EAA63C024EA693F4AB4BA075ADCDD5BEEC8D5E04AD1B570BBA646
22619BDD719696A73494F47FCBE7703E4C5E2FEACECCA3D59AE4E9378CA42C469512
2262371C344EB7051C5EB30E7BBE32510F0367473691F0ECAC4359EA19A528782A53
226371E9158E8434E529B6A182091DCC455387F217E4FF119E1E2A8127EB8E318198
22649F63CBE626419B857E5A0B2B2C2370882694FF2B999CB46D03E8A18169D4C47B
2265B3FED07CC9B30B90625E5D64914A30D52ABF0CF5C42EEAD026FA61E9627AD3D6
22668678EF44C646B1A8BF4F2C20DFCECB7383DA6D14B87F46EE9C78AA82AF7BB3E8
2267BA10105E26F15EBD25635E1C9E00496CA6039B5560ED5F548703618CB954D9C6
2268A2B0B1957E510C40A75924FE314F0EAEFC2487BE10FC57EBA25DC6D9799C40AC
2269B36915009787712776E4294971F66256BF23266D37DC00204B73CC1D335A835D
2270F88B7DF43714719ADC28A92F28ED29840DE8C42D9234BBAE3CE11A8C0258FBD7
2271AB6566D8A02C79DC84EA6993F5C65A6635EAA3D80CA72186320D4257BFBE7525
227275664A76D86C83B2EAF5502047B6CF4A3DB006F47A03220EF92D8F5FA4F5D1DE
2273F963394FF6219C873606920DE9BA967D78722CE69ACE9D473D257BD843152C02
22749430E334666F1FDCCAE9E1136130F1944F2C21BC47E9CF968AF05874CE4C87CD
22753B0AFD3CE793C808645942D4C9F7239E257B2ACA5B3D452A2A948F4B673D729B
2276DA9AC6B99935D1B25886704C32558CB1F9D4C4C54354FCE18292E53B79183457
22772D1EEA7AD9F94F6589D6A591E1EE07DCB1D69A5C42246117910FCD51DC17E2DD
227847E5D970DE447FFAA78CCF456DEABB5D2B8EC3BA7EEB64FB1E7FC328D8B6A67C
2279C8D38CFF3FF8279DC4E1FCF0DCE272FD6BEE5D1DD330CA126431F84309098DCF
22804B594EA46F5130B9056B14619D3598CB61B037BF5916EE0FA7059C289FB4FC10
2281665AE6D34C5920BB17292E7038883A99598DD025F7DEF15346F7C478A474A443
2282FE7872DFB3E8026CBEDB0156F2550EC45A933ACB54768AE8E54B9D7EC53BC131
2283CD1E82612D7F5A4FBCD392083D71BA0458C66937279DA6ED39BD01D4195517A3
2284975BB911DCFA1A549007E4C9F989A08D42B6BE1E1AAB8EFCACA21788EAB44ABE
2285B9AD1B5CDDA5
22860000000000000000000000000000000000000000000000000000000000000000
22870000000000000000000000000000000000000000000000000000000000000000
22880000000000000000000000000000000000000000000000000000000000000000
22890000000000000000000000000000000000000000000000000000000000000000
22900000000000000000000000000000000000000000000000000000000000000000
22910000000000000000000000000000000000000000000000000000000000000000
22920000000000000000000000000000000000000000000000000000000000000000
22930000000000000000000000000000000000000000000000000000000000000000
2294cleartomark
2295%%EndFont
2296TeXDict begin 55380996 39158280 1000 600 600 (org-ref.dvi)
2297@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
229849.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
229930 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
23001[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30
230130 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
230249.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
23032[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
230466.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
230541 45 68 23 43 1[23 45 41 25 37 45 36 45 40 10[61 1[57
230645 61 61 55 61 63 77 49 2[30 63 2[53 1[59 8[23 12[27
230732[45 47 11[{ TeXf7b6d320Encoding ReEncodeFont }41 66.4176
2308/CMBX8 rf /Fe 219[71 2[71 32[55{ TeXbbad153fEncoding ReEncodeFont }3
230966.4176 /CMSY8 rf /Ff 203[33 33 33 33 49[{
2310 TeXf7b6d320Encoding ReEncodeFont }4 58.1154 /CMR7 rf
2311/Fg 129[35 1[35 1[35 35 35 35 35 35 35 35 35 35 35 35
231235 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35 35
231335 35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
231435 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
23153[35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
231635 35 34[{ TeX09fbbfacEncoding ReEncodeFont }85 66.4176
2317/CMTT8 rf /Fh 134[60 60 2[64 45 45 47 1[64 57 64 95 32
231860 1[32 1[57 1[53 64 51 64 56 10[87 88 80 64 86 2[86
231990 109 69 2[43 1[90 72 75 88 83 1[87 19[38 45[{
2320 TeXf7b6d320Encoding ReEncodeFont }36 99.6264 /CMBX10
2321rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
232220 37 22 20 39 35 22 31 39 31 39 35 4[35 3[53 72 53 53
232351 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54 51 50
232453 6[20 6[35 35 35 1[35 20 24 20 55 35 27 27 20 2[35
232559 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }69
232666.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
23271[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
232853 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
2329/CMBX10 rf end
2330%%EndProlog
2331%%BeginSetup
2332%%Feature: *Resolution 600dpi
2333TeXDict begin
2334%%PaperSize: A4
2335 @landscape end
2336%%EndSetup
2337%%Page: 1 1
2338TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
2339b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2340(3.12\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
2341Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
2342102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
2343(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
2344(diary)f(entries"\))-150 338 y(\(autoload)i('org-agenda)g("org")f
2345("Agenda)g(from)g(Org)f(files")h(t\))-150 408 y(\(autoload)h
2346('org-store-link)h("org")e("Store)g(org)f(link")h(t\))-150
2347478 y(\(autoload)h('orgtbl-mode)h("org")d("Orgtbl)i(minor)e(mode")h
2348(t\))-150 547 y(\(autoload)h('turn-on-orgtbl)h("org")e("Orgtbl)g(minor)
2349g(mode"\))-150 617 y(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")
2350e(.)e(org-mode\)\))-150 699 y(\(define-key)i(global-map)h("\\C-cl")e
2351('org-store-link\))1504 676 y Ff(2)-150 782 y Fg(\(define-key)h
2352(global-map)h("\\C-ca")e('org-agenda\))1364 758 y Ff(2)-150
2353879 y Fi(F)-6 b(or)23 b(the)i(man)n(y)f(customization)h(options)g(try)
235468 b Fg(M-x)36 b(org-customize)-150 948 y Fi(T)-6 b(o)24
2355b(read)g(the)g(on-line)g(do)r(cumen)n(tation)i(try)111
2356b Fg(M-x)36 b(org-info)-150 1147 y Fh(Visibilit)m(y)h(Cycling)-150
23571297 y Fi(rotate)25 b(curren)n(t)f(subtree)g(b)r(et)n(w)n(een)i(states)
2358291 b Fg(TAB)-150 1367 y Fi(rotate)25 b(en)n(tire)f(bu\013er)g(b)r(et)n
2359(w)n(een)h(states)384 b Fg(S-TAB)-150 1436 y Fi(sho)n(w)24
2360b(the)g(whole)g(\014le)854 b Fg(C-c)36 b(C-a)-150 1614
2361y Fh(Motion)-150 1764 y Fi(next)25 b(heading)1043 b Fg(C-c)36
2362b(C-n)-150 1834 y Fi(previous)24 b(heading)921 b Fg(C-c)36
2363b(C-p)-150 1904 y Fi(next)25 b(heading,)f(same)g(lev)n(el)685
2364b Fg(C-c)36 b(C-f)-150 1973 y Fi(previous)24 b(heading,)g(same)g(lev)n
2365(el)563 b Fg(C-c)36 b(C-b)-150 2043 y Fi(bac)n(kw)n(ard)25
2366b(to)f(higher)g(lev)n(el)f(heading)424 b Fg(C-c)36 b(C-u)-150
23672113 y Fi(jump)23 b(to)i(another)f(place)h(in)e(do)r(cumen)n(t)350
2368b Fg(C-c)36 b(C-j)-150 2311 y Fh(Structure)g(Editing)-150
23692462 y Fi(insert)23 b(new)i(heading)f(at)g(same)g(lev)n(el)g(as)g
2370(curren)n(t)104 b Fg(M-RET)-150 2531 y Fi(insert)23 b(new)i(TODO)e(en)n
2371(try)700 b Fg(M-S-RET)-150 2628 y Fi(promote)24 b(curren)n(t)h(heading)
2372f(up)g(one)h(lev)n(el)285 b Fg(M-LEFT)-150 2698 y Fi(demote)25
2373b(curren)n(t)f(heading)h(do)n(wn)f(one)g(lev)n(el)233
2374b Fg(M-RIGHT)-150 2768 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g
2375(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2838 y Fi(demote)25
2376b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248
2377b Fg(M-S-RIGHT)-150 2935 y Fi(mo)n(v)n(e)24 b(subtree)h(up)932
2378b Fg(M-S-UP)-150 3004 y Fi(mo)n(v)n(e)24 b(subtree)h(do)n(wn)848
2379b Fg(M-S-DOWN)-150 3074 y Fi(kill)23 b(subtree)1097 b
2380Fg(C-c)36 b(C-h)g(C-w)-150 3144 y Fi(cop)n(y)25 b(subtree)1052
2381b Fg(C-c)36 b(C-h)g(M-w)-150 3213 y Fi(y)n(ank)25 b(subtree)1046
2382b Fg(C-c)36 b(C-h)g(C-y)-150 3310 y Fi(arc)n(hiv)n(e)24
2383b(subtree)976 b Fg(C-c)36 b($)-150 3380 y Fi(T)-6 b(o)24
2384b(set)g(arc)n(hiv)n(e)g(lo)r(cation)h(for)e(curren)n(t)h(\014le,)f(add)
2385h(a)g(line)f(lik)n(e)1495 3357 y Ff(3)1533 3380 y Fi(:)-150
23863454 y Fg(#+ARCHIVE:)38 b(archfile::*)h(Archived)e(Tasks)-150
23873631 y Fh(Filtering)g(and)g(Sparse)g(T)-10 b(rees)-150
23883781 y Fi(sho)n(w)24 b(sparse)f(tree)i(for)d(all)h(matc)n(hes)i(of)f(a)
2389g(regexp)92 b Fg(C-c)36 b(/)-150 3851 y Fi(view)24 b(TODO's)e(in)i
2390(sparse)f(tree)580 b Fg(C-c)36 b(C-v)-150 3921 y Fi(create)25
2391b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b
2392Fg(C-c)36 b(C-w)-150 3991 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n
2393(t)h(org)g(\014le)367 b Fg(C-c)36 b(C-r)-150 4060 y Fi(agenda)25
2394b(for)e(the)i(w)n(eek)823 b Fg(C-c)36 b(a)p Fi(1)-150
23954130 y(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2396b(C-o)2046 -364 y Fh(TODO)i(Items)2046 -216 y Fi(rotate)25
2397b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354 b Fg(C-c)36
2398b(C-t)2046 -147 y Fi(view)24 b(TODO)f(items)g(in)h(a)g(sparse)f(tree)
2399380 b Fg(C-c)36 b(C-v)2046 -50 y Fi(set)24 b(the)h(priorit)n(y)e(of)g
2400(the)i(curren)n(t)f(item)369 b Fg(C-c)36 b(,)g([ABC])2046
240119 y Fi(remo)n(v)n(e)24 b(priorit)n(y)f(co)r(okie)i(from)d(curren)n(t)j
2402(item)179 b Fg(C-c)36 b(,)g(SPC)2046 100 y Fi(raise)23
2403b(priorit)n(y)g(of)g(curren)n(t)i(item)557 b Fg(S-UP)3626
240476 y Ff(4)2046 180 y Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)
2405g(item)538 b Fg(S-DOWN)3696 157 y Ff(4)2046 311 y Fi(p)r(er-\014le)23
2406b(TODO)g(w)n(ork\015o)n(w)h(states:)33 b(add)24 b(line\(s\))g(lik)n(e)
24073505 288 y Ff(3)3542 311 y Fi(:)2046 384 y Fg(#+SEQ_TODO:)38
2408b(TODO)f(PROCRASTINATE)i(BLUFF)e(DONE)2046 464 y Fi(p)r(er-\014le)23
2409b(TODO)g(k)n(eyw)n(ords:)32 b(add)24 b(line\(s\))g(lik)n(e)3314
2410440 y Ff(3)3351 464 y Fi(:)2046 536 y Fg(#+TYP_TODO:)38
2411b(Phil)f(home)f(work)h(DONE)2046 723 y Fh(Timestamps)2046
2412871 y Fi(prompt)24 b(for)f(date)i(and)f(insert)f(timestamp)266
2413b Fg(C-c)36 b(.)2046 940 y Fi(lik)n(e)23 b Fg(C-c)i Fi(.)31
2414b(but)24 b(insert)g(date)g(and)h(time)e(format)144 b
2415Fg(C-u)36 b(C-c)g(.)2046 1010 y Fi(insert)23 b(DEADLINE)h(timestamp)516
2416b Fg(C-c)36 b(C-d)2046 1080 y Fi(insert)23 b(SCHEDULED)h(timestamp)451
2417b Fg(C-c)36 b(C-s)2046 1150 y Fi(create)25 b(sparse)e(tree)i(with)e
2418(all)g(deadlines)i(due)204 b Fg(C-c)36 b(C-w)2046 1219
2419y Fi(the)25 b(time)e(b)r(et)n(w)n(een)j(2)e(dates)g(in)g(a)f(time)h
2420(range)172 b Fg(C-c)36 b(C-y)2046 1328 y Fi(c)n(hange)25
2421b(timestamp)g(at)f(cursor)f(b)n(y)h Fe(\000)p Fi(1)g(da)n(y)238
2422b Fg(S-LEFT)3696 1305 y Ff(4)2046 1409 y Fi(c)n(hange)25
2423b(timestamp)g(at)f(cursor)f(b)n(y)h(+1)g(da)n(y)238 b
2424Fg(S-RIGHT)3731 1385 y Ff(4)2046 1489 y Fi(c)n(hange)25
2425b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h Fe(\000)p
2426Fi(1)189 b Fg(S-DOWN)3696 1466 y Ff(4)2046 1573 y Fi(c)n(hange)25
2427b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h(+1)189
2428b Fg(S-UP)3626 1550 y Ff(4)2046 1670 y Fi(access)25 b(the)f(calendar)g
2429(for)f(the)i(curren)n(t)f(date)221 b Fg(C-c)36 b(>)2046
24301739 y Fi(insert)23 b(timestamp)i(matc)n(hing)g(date)f(in)g(calendar)89
2431b Fg(C-c)36 b(<)2046 1809 y Fi(access)25 b(agenda)g(for)e(curren)n(t)h
2432(date)507 b Fg(C-c)36 b(C-o)2046 1905 y Fi(While)24 b(prompted)g(for)f
2433(a)h(date:)2046 1975 y(...)30 b(select)25 b(date)f(in)g(calendar)660
2434b Fg(mouse-1/RET)2046 2045 y Fi(...)30 b(scroll)23 b(calendar)h(bac)n
2435(k/forw)n(ard)h(one)f(mon)n(th)121 b Fg(<)36 b(/)f(>)2046
24362115 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(da)n(y)525
2437b Fg(S-LEFT/RIGHT)2046 2184 y Fi(...)30 b(forw)n(ard/bac)n(kw)n(ard)24
2438b(one)h(w)n(eek)486 b Fg(S-UP/DOWN)2046 2254 y Fi(...)30
2439b(forw)n(ard/bac)n(kw)n(ard)24 b(one)h(mon)n(th)437 b
2440Fg(M-S-LEFT/RIGT)2046 2451 y Fh(Links)2046 2599 y Fi(globally)24
2441b(store)g(link)f(to)h(the)h(curren)n(t)f(lo)r(cation)166
2442b Fg(C-c)36 b(l)3662 2575 y Ff(2)2046 2668 y Fi(insert)23
2443b(a)h(link)f(\(T)-6 b(AB)24 b(completes)h(stored)f(links\))138
2444b Fg(C-c)36 b(C-l)2046 2738 y Fi(insert)23 b(\014le)h(link)f(with)h
2445(\014le)g(name)g(completion)192 b Fg(C-u)36 b(C-c)g(C-l)2046
24462834 y Fi(op)r(en)25 b(link)e(at)h(p)r(oin)n(t)884 b
2447Fg(C-c)36 b(C-o)2046 2904 y Fi(op)r(en)25 b(\014le)e(links)g(in)h
2448(emacs)722 b Fg(C-u)36 b(C-c)g(C-o)2046 2974 y Fi(op)r(en)25
2449b(link)e(at)h(p)r(oin)n(t)884 b Fg(mouse-2)2046 3044
2450y Fi(op)r(en)25 b(\014le)e(links)g(in)h(emacs)722 b Fg(mouse-3)2046
24513140 y Fd(Link)27 b(t)n(yp)r(es)2046 3236 y Fg(<http://www.astro.uva.n)
2452q(l/~d)q(omi)q(nik>)247 b Fi(on)24 b(the)h(w)n(eb)2046
24533306 y Fg(<mailto:adent@galaxy.ne)q(t>)564 b Fi(EMail)23
2454b(address)2046 3376 y Fg(<news:comp.emacs>)845 b Fi(Usenet)25
2455b(group)2046 3446 y Fg(<file:/home/dominik/img)q(/mar)q(s.j)q(pg>)282
2456b Fi(\014le,)23 b(absolute)2046 3515 y Fg(<file:papers/last.pdf>)670
2457b Fi(\014le,)23 b(relativ)n(e)2046 3585 y Fg(<file:~/code/main.c:255)q
2458(>)599 b Fi(\014le)19 b(with)g(line)g(nr.)2046 3655 y
2459Fg(<bbdb:Richard)39 b(Stallman>)631 b Fi(BBDB)23 b(p)r(erson)2046
24603725 y Fg(<shell:ls)38 b(*.org>)877 b Fi(shell)23 b(command)2046
24613794 y Fg(<gnus:group>)1020 b Fi(GNUS)24 b(group)2046
24623864 y Fg(<gnus:group#id>)915 b Fi(GNUS)24 b(message)2046
24633934 y Fg(<vm:folder>)1055 b Fi(VM)23 b(folder)2046 4004
2464y Fg(<vm:folder#id>)950 b Fi(VM)23 b(message)2046 4073
2465y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105
2466b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b
2467Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242
2468-364 y Fh(T)-10 b(ables)4242 -255 y Fd(Creating)25 b(a)i(table)4242
2469-168 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330
2470b Fg(M-x)36 b(org-table-create)4242 -98 y Fi(...)30 b(or)23
2471b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39
2472b(RET)d(|-)g(TAB)4242 -28 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
2473741 b Fg(C-c)36 b(C-c)4242 41 y Fi(...)30 b(separator)24
2474b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242
2475128 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242
2476215 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
2477(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 285
2478y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
2479(e)h(other)g(functionalit)n(y)-6 b(.)4242 371 y Fd(Re-aligning)25
2480b(and)i(\014eld)h(motion)4242 458 y Fi(re-align)22 b(the)i(table)g
2481(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242
2482528 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
2483311 b Fg(TAB)4242 598 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
2484b Fg(S-TAB)4242 667 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
2485(next)h(ro)n(w)328 b Fg(RET)4242 754 y Fd(Ro)n(w)26 b(and)h(column)g
2486(editing)4242 841 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
2487544 b Fg(M-LEFT)4242 911 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2488(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 980 y Fi(kill)23
2489b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1050
2490y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
2491104 b Fg(M-S-RIGHT)4242 1137 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2492(ro)n(w)f(up)678 b Fg(M-UP)4242 1207 y Fi(mo)n(v)n(e)24
2493b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242
24941276 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
2495(line)291 b Fg(M-S-UP)4242 1346 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
2496n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242
24971433 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h
2498(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1503 y
2499Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n
2500(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1589 y Fd(Regions)4242
25011676 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36
2502b(C-h)g(C-w)4242 1746 y Fi(cop)n(y)25 b(rectangular)f(region)715
2503b Fg(C-c)36 b(C-h)g(M-w)4242 1816 y Fi(paste)25 b(rectangular)f(region)
2504695 b Fg(C-c)36 b(C-h)g(C-y)4242 1885 y Fi(\014ll)23
2505b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36
2506b(C-q)4242 1972 y Fd(Calculations)4242 2059 y Fi(Except)31
2507b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242
25082129 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2215
2509y(replace)e(curren)n(t)g(\014eld)g(with)g(result)f(of)h(form)n(ula)129
2510b Fg(C-c)36 b(=)4242 2285 y Fi(...)30 b(same)24 b(calculation)h(for)e
2511(rest)g(of)h(column)267 b Fg(C-u)36 b(C-c)g(=)4242 2355
2512y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96
2513b Fg(C-c)36 b(*)4242 2425 y Fi(re-apply)23 b(all)g(stored)i(equations)g
2514(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242
25152511 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28
2516b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242
25172581 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242
25182668 y(rotate)25 b(recalculation)f(mark)g(through)h(#)e(*)h(!)31
2519b($)140 b Fg(C-#)4242 2755 y Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r
2520(er)f(cursor)h(is)f(in)354 b Fg(C-c)36 b(?)4242 2824
2521y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren)n(t)i(column/rectangle)143
2522b Fg(C-c)36 b(+)4242 2908 y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n
2523(t)625 b Fg(S-RET)5857 2885 y Ff(4)4242 2995 y Fi(A)27
2524b(form)n(ula)g(can)h(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)g
2525(in)n(to)f(a)h(\014eld.)42 b(It)28 b(will)4242 3065 y(b)r(e)c(executed)
2526i(b)n(y)e Fg(TAB)p Fi(,)g Fg(RET)h Fi(and)f Fg(C-c)36
2527b(C-c)p Fi(:)4242 3152 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522
2528b Fg(=$1+$2)4242 3221 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r
2529(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3291 y Fi(...)30
2530b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352
2531b Fg(=$1/$c/$cm)4242 3361 y Fi(Apply)24 b(curren)n(t)g(\(for)f(this)h
2532(column\))g(form)n(ula)200 b Fg(=)4242 3431 y Fi(Sum)24
2533b(all)f(n)n(um)n(b)r(ers)g(ab)r(o)n(v)n(e/left)j(of)d(cursor)292
2534b Fg(=sum)36 b(/)g(=sumh)4242 3500 y Fi(Sum)24 b(just)f(the)i(3)f
2535(\014elds)f(closest)i(to)f(cursor)279 b Fg(=sum3/=sumh3)4242
25363587 y Fd(Miscellaneous)4242 3674 y Fi(toggle)25 b(visibilit)n(y)d(of)i
2537(v)n(ertical)g(lines)474 b Fg(C-c)36 b(|)4242 3744 y
2538Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370 b Fg(M-x)36
2539b(org-table-export)4242 3813 y Fi(imp)r(ort)23 b(tab-separated)j
2540(\014le)447 b Fg(M-x)36 b(org-table-import)4242 3900
2541y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
2542Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g
2543Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057
2544y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
2545Fg(C-c)36 b(C-c)4242 4126 y Fi(con)n(v)n(ert)25 b(table)f(\(Org-mo)r
2546(de)g Fe($)f Fi(table.el\))312 b Fg(C-c)36 b(~)p eop
2547end
2548%%Page: 2 2
2549TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
2550b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2551(3.12\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
2552120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
2553b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793
2554b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g
2555(to)g(y)n(our)g(agenda)483 b Fg(C-c)36 b([)-150 358 y
2556Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g(from)f(y)n(our)g(agenda)299
2557b Fg(C-c)36 b(])-150 438 y Fi(compile)24 b(agenda)h(for)e(the)h(curren)
2558n(t)g(w)n(eek)320 b Fg(C-c)36 b(a)1466 415 y Ff(2)-150
2559508 y Fi(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2560b(C-o)-150 641 y Fi(T)-6 b(o)24 b(set)g(category)h(for)e(curren)n(t)h
2561(\014le,)g(add)g(line)1082 617 y Ff(3)1119 641 y Fi(:)-150
2562715 y Fg(#+CATEGORY:)38 b(MyCateg)-150 814 y Fd(Commands)26
2563b(a)n(v)-5 b(ailable)25 b(in)i(an)g(agenda)g(bu\013er)-150
2564912 y Fi(The)g(agenda)h(bu\013er)f(is)f(electric:)38
2565b(single)26 b(k)n(ey)i(presses)e(execute)j(com-)-150
2566982 y(mands.)-150 1080 y Fd(View)e(org)f(\014le)-150
25671178 y Fi(sho)n(w)e(original)f(lo)r(cation)h(of)g(item)524
2568b Fg(SPC)-150 1248 y Fi(...)30 b(also)24 b(a)n(v)l(ailable)g(with)781
2569b Fg(mouse-3)-150 1318 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)n(w)
2570626 b Fg(l)-150 1388 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g
2571(other)g(windo)n(w)260 b Fg(TAB)-150 1457 y Fi(...)30
2572b(also)24 b(a)n(v)l(ailable)g(with)781 b Fg(mouse-2)-150
25731527 y Fi(goto)25 b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n
2574(ws)91 b Fg(RET)-150 1597 y Fi(toggle)25 b(follo)n(w-mo)r(de)861
2575b Fg(f)-150 1695 y Fd(Change)27 b(displa)n(y)-150 1794
2576y Fi(delete)e(other)f(windo)n(ws)791 b Fg(o)-150 1863
2577y Fi(switc)n(h)24 b(to)g(w)n(eekly)h(view)767 b Fg(w)-150
25781933 y Fi(switc)n(h)24 b(to)g(daily)g(view)822 b Fg(d)-150
25792003 y Fi(toggle)25 b(inclusion)e(of)h(diary)f(en)n(tries)473
2580b Fg(D)-150 2072 y Fi(toggle)25 b(time)f(grid)f(for)g(daily)g(sc)n
2581(hedule)388 b Fg(g)-150 2142 y Fi(refresh)23 b(agenda)i(bu\013er)f
2582(with)g(an)n(y)g(c)n(hanges)239 b Fg(r)-150 2212 y Fi(displa)n(y)24
2583b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)-150
25842282 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238
2585b(LEFT)-150 2351 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)-150
25862450 y Fd(Remote)27 b(editing)-150 2548 y Fi(digit)d(argumen)n(t)984
2587b Fg(0-9)-150 2646 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f
2588(item)333 b Fg(t)-150 2716 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t)
2589i(item)612 b Fg(p)-150 2798 y Fi(raise)23 b(priorit)n(y)g(of)g(curren)n
2590(t)i(item)557 b Fg(S-UP)1430 2775 y Ff(4)-150 2879 y
2591Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)g(item)538
2592b Fg(S-DOWN)1500 2855 y Ff(4)-150 2949 y Fi(displa)n(y)24
2593b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h(item)189
2594b Fg(P)-150 3058 y Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h
2595(earlier)315 b Fg(S-LEFT)1500 3034 y Ff(4)-150 3138 y
2596Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h(later)367
2597b Fg(S-RIGHT)1535 3115 y Ff(4)-150 3208 y Fi(c)n(hange)25
2598b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)-150 3306 y
2599Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b
2600Fg(i)-150 3405 y Fd(Calendar)26 b(commands)-150 3503
2601y Fi(\014nd)e(agenda)h(cursor)f(date)g(in)g(calendar)350
2602b Fg(c)-150 3573 y Fi(compute)25 b(agenda)g(for)e(calendar)i(cursor)e
2603(date)180 b Fg(c)-150 3642 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r
2604(on)669 b Fg(M)-150 3712 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636
2605b Fg(S)-150 3782 y Fi(sho)n(w)24 b(holida)n(ys)1014 b
2606Fg(H)-150 3852 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars)
2607478 b Fg(C)-150 3950 y Fd(Quit)27 b(and)g(Exit)-150 4048
2608y Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376
2609b Fg(q)-150 4118 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i
2610(bu\013ers)258 b Fg(x)2046 -364 y Fh(Exp)s(orting)2046
2611-208 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f(extensions)i
2612Fc(.txt)k Fi(and)32 b Fc(.html)38 b Fi(in)31 b(the)2046
2613-139 y(curren)n(t)24 b(directory)-6 b(.)2046 -40 y(exp)r(ort)25
2614b(as)e(ASCI)r(I)i(\014le)820 b Fg(C-c)36 b(C-x)g(a)2046
261529 y Fi(exp)r(ort)25 b(visible)e(text)i(only)e(\(e.g.)32
2616b(for)23 b(prin)n(ting\))152 b Fg(C-c)36 b(C-x)g(v)2046
261799 y Fi(exp)r(ort)25 b(as)e(HTML)g(\014le)804 b Fg(C-c)36
2618b(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
2619(bro)n(wser)266 b Fg(C-c)36 b(C-x)g(C-h)2046 239 y Fi(pre\014x)24
2620b(arg)g(sets)g(n)n(b.)31 b(of)23 b(headline)i(lev)n(els,)e(e.g.)182
2621b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 337 y Fi(insert)23 b(template)j(of)d
2622(exp)r(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 435
2623y Fi(toggle)25 b(\014xed)f(width)g(for)f(line)g(or)h(region)346
2624b Fg(C-c)36 b(:)2046 534 y Fd(HTML)27 b(formatting)2046
2625632 y Fi(mak)n(e)d(w)n(ords)g Fd(b)r(old)897 b Fg(*bold*)2046
2626702 y Fi(mak)n(e)24 b(w)n(ords)g Fc(italic)898 b Fg(/italic/)2046
2627771 y Fi(mak)n(e)24 b(w)n(ords)g(underlined)p 2433 784
2628326 4 v 728 w Fg(_underlined_)2046 841 y Fi(sub-)f(and)i(sup)r
2629(erscripts)781 b Fg(x^3,)36 b(J_dust)2046 911 y Fi(T)2085
2630925 y(E)2124 911 y(X-lik)n(e)23 b(macros)940 b Fg(\\alpha,)37
2631b(\\to)2046 981 y Fi(t)n(yp)r(eset)25 b(lines)f(in)f(\014xed)h(width)g
2632(fon)n(t)460 b Fg(start)37 b(with)f(:)2046 1050 y Fi(tables)24
2633b(are)g(exp)r(orted)h(as)f(HTML)f(tables)321 b Fg(start)37
2634b(with)f(|)2046 1120 y Fi(links)23 b(b)r(ecome)i(HTML)e(links)640
2635b Fg(http:...)73 b(etc)2046 1190 y Fi(include)24 b(h)n(tml)g(tags)905
2636b Fg(@<b>...@</b>)2046 1288 y Fd(Exp)r(ort)27 b(options)2046
26371386 y Fi(Include)20 b(additional)f(information)g(for)f(exp)r(ort)i(b)n
2638(y)f(putting)h(these)g(an)n(y-)2046 1456 y(where)g(in)f(the)h(org)g
2639(\014le.)30 b(Use)19 b Fg(M-TAB)i Fi(completion)f(to)g(mak)n(e)h(sure)e
2640(to)h(get)2046 1526 y(the)i(righ)n(t)e(k)n(eyw)n(ords.)31
2641b Fg(M-TAB)22 b Fi(again)f(just)g(after)g(k)n(eyw)n(ord)g(is)g
2642(complete)2046 1596 y(inserts)i(examples.)2046 1694 y(the)i(title)f(to)
2643g(b)r(e)g(sho)n(wn)797 b Fg(#+TITLE:)2046 1764 y Fi(the)25
2644b(author)1115 b Fg(#+AUTHOR:)2046 1834 y Fi(authors)24
2645b(email)f(address)769 b Fg(#+EMAIL:)2046 1903 y Fi(language)25
2646b(co)r(de)g(for)e(h)n(tml)732 b Fg(#+LANGUAGE:)2046 1973
2647y Fi(free)23 b(text)i(description)f(of)g(\014le)626 b
2648Fg(#+TEXT:)2046 2043 y Fi(...)30 b(whic)n(h)24 b(can)g(carry)g(o)n(v)n
2649(er)g(m)n(ultiple)f(lines)271 b Fg(#+TEXT:)2046 2112
2650y Fi(settings)25 b(for)d(the)j(exp)r(ort)f(pro)r(cess)g(-)f(see)h(b)r
2651(elo)n(w)145 b Fg(#+OPTIONS:)2046 2211 y Fd(Settings)26
2652b(for)h(the)g(OPTIONS)i(line)2046 2309 y Fi(set)24 b(n)n(um)n(b)r(er)g
2653(of)f(headline)i(lev)n(els)e(for)g(exp)r(ort)219 b Fg(H:2)2046
26542379 y Fi(turn)24 b(on/o\013)h(section)f(n)n(um)n(b)r(ers)577
2655b Fg(num:t)2046 2449 y Fi(turn)24 b(on/o\013)h(table)f(of)f(con)n(ten)n
2656(ts)564 b Fg(toc:t)2046 2518 y Fi(turn)24 b(on/o\013)h(linebreak)f
2657(preserv)l(ation)395 b Fg(\\n:nil)2046 2588 y Fi(turn)24
2658b(on/o\013)h(quoted)g(h)n(tml)f(tags)548 b Fg(@:t)2046
26592658 y Fi(turn)24 b(on/o\013)h(\014xed)f(width)g(sections)464
2660b Fg(::t)2046 2728 y Fi(turn)24 b(on/o\013)h(tables)893
2661b Fg(|:t)2046 2797 y Fi(turn)20 b(on/o\013)h(T)2444 2811
2662y(E)2484 2797 y(X)e(syn)n(tax)i(for)f(sub/sup)r(er-scripts)70
2663b Fg(^:t)2046 2867 y Fi(turn)24 b(on/o\013)h(emphasised)f(text)578
2664b Fg(*:nil)2046 2937 y Fi(turn)24 b(on/o\013)h(T)2452
26652951 y(E)2491 2937 y(X)e(macros)703 b Fg(TeX:t)2046 3035
2666y Fd(Commen)n(ts:)35 b(T)-7 b(ext)27 b(not)f(b)r(eing)i(exp)r(orted)
26672046 3133 y Fi(T)-6 b(ext)22 b(b)r(efore)f(the)h(\014rst)f(headline)g
2668(is)f(not)i(considered)g(part)f(of)g(the)h(do)r(c-)2046
26693203 y(umen)n(t)29 b(and)f(is)f(therefore)h(nev)n(er)g(exp)r(orted.)44
2670b(Lines)28 b(starting)g(with)g Fg(#)2046 3273 y Fi(are)j(commen)n(ts)g
2671(and)h(are)e(not)i(exp)r(orted.)53 b(Subtrees)32 b(whose)f(header)2046
26723343 y(starts)24 b(with)g(COMMENT)e(are)i(nev)n(er)g(exp)r(orted.)2046
26733441 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285
2674b Fg(C-c)36 b(;)2046 3644 y Fh(Completion)2046 3800 y
2675Fi(In-bu\013er)e(completion)g(completes)h(TODO)d(k)n(eyw)n(ords)i(at)g
2676(headline)2046 3869 y(start,)26 b(T)-6 b(eX)26 b(macros)f(after)h(\\)p
2677Fg(\\)p Fi(",)h(option)f(k)n(eyw)n(ords)g(after)g(\\)p
2678Fg(#-)p Fi(",)h(k)n(ey-)2046 3939 y(w)n(ord)d(form)n(ulas)e(after)i(\\)
2679p Fg(=)p Fi(",)g(and)g(dictionary)g(w)n(ords)g(elsewhere.)2046
26804037 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702 b Fg(M-TAB)4242
2681-364 y Fh(Calendar)36 b(and)h(Diary)i(In)m(tegration)4242
2682-208 y Fi(T)-6 b(o)35 b(include)g(en)n(tries)g(from)f(the)i(Emacs)f
2683(diary)g(in)f(y)n(our)h(Org-mo)r(de)4242 -139 y(agenda:)4242
2684-40 y Fg(\(setq)i(org-agenda-include-diary)42 b(t\))4242
268558 y Fi(T)-6 b(o)24 b(include)h(y)n(our)f(Org-mo)r(de)f(agenda)j(in)d
2686(y)n(our)h(normal)g(diary)-6 b(,)23 b(mak)n(e)4242 128
2687y(sure)i(y)n(ou're)g(using)g(the)h(fancy)g(diary)f(displa)n(y)g(and)h
2688(in)f(y)n(our)g Fg(~/diary)4242 197 y Fi(\014le)f(add)4242
2689296 y Fg(&\045\045\(org-diary\))4242 394 y Fi(to)30 b(include)g(all)f
2690(the)h(\014les)f(listed)h(in)f Fg(org-agenda-files)p
2691Fi(.)53 b(F)-6 b(or)29 b(more)4242 464 y(selectiv)n(e)c(\014le)e
2692(inclusion)h(use)g(a)g(line)f(for)g(eac)n(h)i(\014le:)4242
2693562 y Fg(&\045\045\(org-diary\))39 b(~/path/to/some/org-fil)q(e.or)q(g)
26944242 767 y Fh(Remem)m(b)s(er-mo)s(de)f(In)m(tegration)4242
2695923 y Fi(See)32 b(the)g(man)n(ual)g(for)e(ho)n(w)i(to)g(mak)n(e)g
2696(remem)n(b)r(er.el)f(use)g(Org-mo)r(de)4242 992 y(links)25
2697b(and)g(\014les.)36 b(The)25 b(note-\014nishing)h(command)g
2698Fg(C-c)36 b(C-c)26 b Fi(will)e(\014rst)4242 1062 y(prompt)g(for)f(an)h
2699(org)f(\014le.)32 b(In)24 b(the)g(\014le,)g(\014nd)g(a)g(lo)r(cation)g
2700(with:)4242 1160 y(rotate)h(subtree)f(visibilit)n(y)719
2701b Fg(TAB)4242 1230 y Fi(next)25 b(heading)1043 b Fg(DOWN)4242
27021300 y Fi(previous)24 b(heading)921 b Fg(UP)4242 1398
2703y Fi(Insert)24 b(the)h(note)g(with)e(one)i(of)e(the)i(follo)n(wing:)
27044242 1497 y(as)f(sublev)n(el)g(of)f(heading)i(at)f(cursor)468
2705b Fg(RET)4242 1566 y Fi(righ)n(t)24 b(here)g(\(cursor)f(not)i(on)f
2706(heading\))388 b Fg(RET)4242 1636 y Fi(b)r(efore)24 b(curren)n(t)g
2707(heading)745 b Fg(LEFT)4242 1706 y Fi(after)24 b(curren)n(t)g(heading)
2708790 b Fg(RIGHT)4242 1776 y Fi(shortcut)20 b(to)f(end)h(of)f(bu\013er)g
2709(\(cursor)g(at)g(buf-start\))71 b Fg(RET)4242 1845 y
2710Fi(Ab)r(ort)1256 b Fg(q)4242 2050 y Fh(CUA)38 b(and)f(p)s(c-select)g
2711(compatibilit)m(y)4242 2206 y Fi(Con\014gure)31 b(the)f(v)l(ariable)g
2712Fg(org-CUA-compatibility)35 b Fi(to)c(mak)n(e)f(Org-)4242
27132276 y(mo)r(de)38 b(a)n(v)n(oid)g(the)g Fg(S-<cursor>)i
2714Fi(bindings)d(used)h(b)n(y)g(these)g(mo)r(des.)4242 2345
2715y(When)h(set,)j(Org-mo)r(de)c(will)e(c)n(hange)k(the)f(follo)n(wing)e
2716(k)n(eybindings)4242 2415 y(\(also)25 b(in)f(the)h(agenda)h(bu\013er,)e
2717(but)h(not)g(during)f(date)i(selection\).)34 b(See)4242
27182499 y(note)25 b(mark)e(four)4705 2476 y Ff(4)4766 2499
2719y Fi(throughout)i(the)g(reference)f(card.)4242 2667 y
2720Fg(S-UP)142 b Fe(!)35 b Fg(M-p)460 b(S-DOWN)72 b Fe(!)35
2721b Fg(M-n)4242 2737 y(S-LEFT)72 b Fe(!)35 b Fg(M--)460
2722b(S-RIGHT)37 b Fe(!)e Fg(M-+)4242 2807 y(S-RET)107 b
2723Fe(!)35 b Fg(C-S-RET)4242 2991 y Fh(Notes)4242 3123 y
2724Ff(1)4307 3146 y Fi(The)28 b(six)f(autoload)i(forms)e(are)h(only)g
2725(needed)h(if)e(Org-mo)r(de)g(is)g(not)4242 3216 y(part)d(of)f(Emacs,)h
2726(or)f(an)h(XEmacs)g(pac)n(k)l(age.)4242 3302 y Ff(2)4313
27273325 y Fi(This)34 b(is)f(only)h(a)h(suggestion)g(for)e(a)h(binding)h
2728(of)e(this)h(command.)4242 3395 y(Cho)r(ose)24 b(y)n(ou)h(o)n(wn)f(k)n
2729(ey)g(as)g(sho)n(wn)g(under)g(INST)-6 b(ALLA)g(TION.)4242
27303481 y Ff(3)4300 3504 y Fi(After)21 b(c)n(hanging)h(a)f
2731Fg(#+KEYWORD)j Fi(line,)d(press)f Fg(C-c)37 b(C-c)21
2732b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
2733(mak)n(e)h(Org-mo)r(de)e(notice)i(the)f(c)n(hange.)4242
27343659 y Ff(4)4303 3683 y Fi(Keybinding)g(a\013ected)i(b)n(y)e
2735Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
27363768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
2737b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
2738y(v3.12)h(for)h(Org-Mo)r(de)e(3.12,)i(2005)4912 3882
2739y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
2740(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
27414022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
2742(distribute)f(copies)j(of)f(this)f(card)h(pro-)4242 4077
2743y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
2744(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4242 4133
2745y(all)20 b(copies.)p eop end
2746%%Trailer
2747
2748userdict /end-hook known{end-hook}if
2749%%EOF
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
new file mode 100644
index 00000000000..6814b4924bd
--- /dev/null
+++ b/etc/orgcard.tex
@@ -0,0 +1,737 @@
1% Reference Card for Org Mode 3.12
2%
3%**start of header
4\newcount\columnsperpage
5
6% This file can be printed with 1, 2, or 3 columns per page (see below).
7% At the moment this card works quite nicely in 3 column format and
8% currently takes most of 2 pages. It is thus suited to producing one
9% double-side page when printed.
10
11% There are a couple of tweaks in the format of this card which make it work
12% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
13% are commented below. Revert the changes if you want letter sized paper.
14
15% Try running something like
16% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
17% to print the card
18
19\columnsperpage=3
20
21% Copyright (c) 2005 Free Software Foundation
22
23% GNU Emacs is free software; you can redistribute it and/or modify
24% it under the terms of the GNU General Public License as published by
25% the Free Software Foundation; either version 2, or (at your option)
26% any later version.
27
28% GNU Emacs is distributed in the hope that it will be useful,
29% but WITHOUT ANY WARRANTY; without even the implied warranty of
30% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31% GNU General Public License for more details.
32
33% You should have received a copy of the GNU General Public License
34% along with GNU Emacs; see the file COPYING. If not, write to
35% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
36% Boston, MA 02111-1307, USA.
37
38% This file is intended to be processed by plain TeX (TeX82).
39%
40% The final reference card has six columns, three on each side.
41% This file can be used to produce it in any of three ways:
42% 1 column per page
43% produces six separate pages, each of which needs to be reduced to 80%.
44% This gives the best resolution.
45% 2 columns per page
46% produces three already-reduced pages.
47% You will still need to cut and paste.
48% 3 columns per page
49% produces two pages which must be printed sideways to make a
50% ready-to-use 8.5 x 11 inch reference card.
51% For this you need a dvi device driver that can print sideways.
52% Which mode to use is controlled by setting \columnsperpage above.
53%
54% Author:
55% Stephen Gildea
56% Internet: gildea@stop.mail-abuse.org
57%
58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
59% for their many good ideas.
60
61\def\orgversionnumber{3.12}
62\def\year{2005}
63
64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
65 \centerline{\small \copyright\ 2004, 2005\ Free Software Foundation, Inc.
66 Permissions on back. v\orgversionnumber}}
67
68\def\copyrightnotice{
69\vskip 1ex plus 100 fill\begingroup\small
70\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
71\centerline{v\orgversionnumber{} for Org-Mode \orgversionnumber{}, \year}
72\centerline{Author: Philip Rooke}
73\centerline{based on refcard design and format by Stephen Gildea}
74
75Permission is granted to make and distribute copies of
76this card provided the copyright notice and this permission notice
77are preserved on all copies.
78
79\endgroup}
80
81% make \bye not \outer so that the \def\bye in the \else clause below
82% can be scanned without complaint.
83\def\bye{\par\vfill\supereject\end}
84
85\newdimen\intercolumnskip %horizontal space between columns
86\newbox\columna %boxes to hold columns already built
87\newbox\columnb
88
89\def\ncolumns{\the\columnsperpage}
90
91\message{[\ncolumns\space
92 column\if 1\ncolumns\else s\fi\space per page]}
93
94\def\scaledmag#1{ scaled \magstep #1}
95
96% This multi-way format was designed by Stephen Gildea October 1986.
97% Note that the 1-column format is fontfamily-independent.
98\if 1\ncolumns %one-column format uses normal size
99 \hsize 4in
100 \vsize 10in
101 \voffset -.7in
102 \font\titlefont=\fontname\tenbf \scaledmag3
103 \font\headingfont=\fontname\tenbf \scaledmag2
104 \font\smallfont=\fontname\sevenrm
105 \font\smallsy=\fontname\sevensy
106
107 \footline{\hss\folio}
108 \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
109\else %2 or 3 columns uses prereduced size
110 \hsize 3.2in
111
112% FIXME - Try to make things more A4 friendly
113% \vsize 7.95in
114 \vsize 7.65in
115% \hoffset -.75in
116 \hoffset -.25in
117 \voffset -.745in
118 \font\titlefont=cmbx10 \scaledmag2
119 \font\headingfont=cmbx10 \scaledmag1
120 \font\smallfont=cmr6
121 \font\smallsy=cmsy6
122 \font\eightrm=cmr8
123 \font\eightbf=cmbx8
124 \font\eightit=cmti8
125 \font\eighttt=cmtt8
126 \font\eightmi=cmmi8
127 \font\eightsy=cmsy8
128 \textfont0=\eightrm
129 \textfont1=\eightmi
130 \textfont2=\eightsy
131 \def\rm{\eightrm}
132 \def\bf{\eightbf}
133 \def\it{\eightit}
134 \def\tt{\eighttt}
135
136% FIXME - Try to make things more A4 friendly
137% \normalbaselineskip=.8\normalbaselineskip
138 \normalbaselineskip=.7\normalbaselineskip
139 \normallineskip=.8\normallineskip
140 \normallineskiplimit=.8\normallineskiplimit
141 \normalbaselines\rm %make definitions take effect
142
143 \if 2\ncolumns
144 \let\maxcolumn=b
145 \footline{\hss\rm\folio\hss}
146 \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
147 \else \if 3\ncolumns
148 \let\maxcolumn=c
149 \nopagenumbers
150 \else
151 \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
152 \errmessage{Illegal number of columns per page}
153 \fi\fi
154
155 \intercolumnskip=.46in
156 \def\abc{a}
157 \output={% %see The TeXbook page 257
158 % This next line is useful when designing the layout.
159 %\immediate\write16{Column \folio\abc\space starts with \firstmark}
160 \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
161 \else\if a\abc
162 \global\setbox\columna\columnbox \global\def\abc{b}
163 %% in case we never use \columnb (two-column mode)
164 \global\setbox\columnb\hbox to -\intercolumnskip{}
165 \else
166 \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
167 \def\multicolumnformat{\shipout\vbox{\makeheadline
168 \hbox{\box\columna\hskip\intercolumnskip
169 \box\columnb\hskip\intercolumnskip\columnbox}
170 \makefootline}\advancepageno}
171 \def\columnbox{\leftline{\pagebody}}
172
173 \def\bye{\par\vfill\supereject
174 \if a\abc \else\null\vfill\eject\fi
175 \if a\abc \else\null\vfill\eject\fi
176 \end}
177\fi
178
179% we won't be using math mode much, so redefine some of the characters
180% we might want to talk about
181%\catcode`\^=12
182\catcode`\_=12
183
184% we also need the tilde, for file names.
185\catcode`\~=12
186
187\chardef\\=`\\
188\chardef\{=`\{
189\chardef\}=`\}
190
191\hyphenation{mini-buf-fer}
192
193\parindent 0pt
194\parskip 1ex plus .5ex minus .5ex
195
196\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
197
198% newcolumn - force a new column. Use sparingly, probably only for
199% the first column of a page, which should have a title anyway.
200\outer\def\newcolumn{\vfill\eject}
201
202% title - page title. Argument is title text.
203\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
204
205% section - new major section. Argument is section name.
206\outer\def\section#1{\par\filbreak
207 \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
208 \vskip 2ex plus 1ex minus 1.5ex}
209
210\newdimen\keyindent
211
212% beginindentedkeys...endindentedkeys - key definitions will be
213% indented, but running text, typically used as headings to group
214% definitions, will not.
215\def\beginindentedkeys{\keyindent=1em}
216\def\endindentedkeys{\keyindent=0em}
217\endindentedkeys
218
219% paralign - begin paragraph containing an alignment.
220% If an \halign is entered while in vertical mode, a parskip is never
221% inserted. Using \paralign instead of \halign solves this problem.
222\def\paralign{\vskip\parskip\halign}
223
224% \<...> - surrounds a variable name in a code example
225\def\<#1>{{\it #1\/}}
226
227% kbd - argument is characters typed literally. Like the Texinfo command.
228\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
229
230% beginexample...endexample - surrounds literal text, such a code example.
231% typeset in a typewriter font with line breaks preserved
232\def\beginexample{\par\leavevmode\begingroup
233 \obeylines\obeyspaces\parskip0pt\tt}
234{\obeyspaces\global\let =\ }
235\def\endexample{\endgroup}
236
237% key - definition of a key.
238% \key{description of key}{key-name}
239% prints the description left-justified, and the key-name in a \kbd
240% form near the right margin.
241\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
242 {\hsize=.75\hsize\rightskip=1em
243 \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
244
245\newbox\metaxbox
246\setbox\metaxbox\hbox{\kbd{M-x }}
247\newdimen\metaxwidth
248\metaxwidth=\wd\metaxbox
249
250% metax - definition of a M-x command.
251% \metax{description of command}{M-x command-name}
252% Tries to justify the beginning of the command name at the same place
253% as \key starts the key name. (The "M-x " sticks out to the left.)
254\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
255 {\hskip\keyindent\relax#1\hfil}%
256 \hskip -\metaxwidth minus 1fil
257 \kbd{#2}\hfil}}
258
259% threecol - like "key" but with two key names.
260% for example, one for doing the action backward, and one for forward.
261\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
262 &\kbd{#3}\hfil\quad\cr}
263
264%**end of header
265
266
267\title{Org-Mode Reference Card (1/2)}
268
269\centerline{(for version \orgversionnumber)}
270
271\section{Getting Started}
272%
273Put the following in your \kbd{~/.emacs}$^1$
274\vskip -1mm
275\beginexample%
276(autoload 'org-mode "org" "Org mode" t)
277(autoload 'org-diary "org" "Org mode diary entries")
278(autoload 'org-agenda "org" "Agenda from Org files" t)
279(autoload 'org-store-link "org" "Store org link" t)
280(autoload 'orgtbl-mode "org" "Orgtbl minor mode" t)
281(autoload 'turn-on-orgtbl "org" "Orgtbl minor mode")
282(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
283(define-key global-map "\\C-cl" 'org-store-link)$^2$
284(define-key global-map "\\C-ca" 'org-agenda)$^2$
285\endexample
286%
287\metax{For the many customization options try}{M-x org-customize}
288\metax{To read the on-line documentation try}{M-x org-info}
289
290\section{Visibility Cycling}
291
292\key{rotate current subtree between states}{TAB}
293\key{rotate entire buffer between states}{S-TAB}
294\key{show the whole file}{C-c C-a}
295%\key{show branches}{C-c C-k}
296
297\section{Motion}
298
299\key{next heading}{C-c C-n}
300\key{previous heading}{C-c C-p}
301\key{next heading, same level}{C-c C-f}
302\key{previous heading, same level}{C-c C-b}
303\key{backward to higher level heading}{C-c C-u}
304\key{jump to another place in document}{C-c C-j}
305
306\section{Structure Editing}
307
308\key{insert new heading at same level as current}{M-RET}
309\key{insert new TODO entry}{M-S-RET}
310
311\key{promote current heading up one level}{M-LEFT}
312\key{demote current heading down one level}{M-RIGHT}
313\key{promote current subtree up one level}{M-S-LEFT}
314\key{demote current subtree down one level}{M-S-RIGHT}
315
316\key{move subtree up}{M-S-UP}
317\key{move subtree down}{M-S-DOWN}
318\key{kill subtree}{C-c C-h C-w}
319\key{copy subtree}{C-c C-h M-w}
320\key{yank subtree}{C-c C-h C-y}
321
322\key{archive subtree}{C-c \$}
323To set archive location for current file, add a line like$^3$:
324\vskip -1mm
325\beginexample%
326\#+ARCHIVE: archfile::* Archived Tasks
327\endexample
328
329\section{Filtering and Sparse Trees}
330
331\key{show sparse tree for all matches of a regexp}{C-c /}
332\key{view TODO's in sparse tree}{C-c C-v}
333\key{create sparse tree with all deadlines due}{C-c C-w}
334\key{time sorted view of current org file}{C-c C-r}
335\key{agenda for the week}{C-c a$1$}
336\key{agenda for date at cursor}{C-c C-o}
337
338\section{TODO Items}
339
340\key{rotate the state of the current item}{C-c C-t}
341\key{view TODO items in a sparse tree}{C-c C-v}
342
343\key{set the priority of the current item}{C-c , [ABC]}
344\key{remove priority cookie from current item}{C-c , SPC}
345\key{raise priority of current item}{S-UP$^4$}
346\key{lower priority of current item}{S-DOWN$^4$}
347
348\vskip 1mm
349per-file TODO workflow states: add line(s) like$^3$:
350\vskip -1mm
351\beginexample%
352\#+SEQ_TODO: TODO PROCRASTINATE BLUFF DONE
353\endexample
354\vskip -1mm
355per-file TODO keywords: add line(s) like$^3$:
356\vskip -1mm
357\beginexample%
358\#+TYP_TODO: Phil home work DONE
359\endexample
360
361\section{Timestamps}
362
363\key{prompt for date and insert timestamp}{C-c .}
364\key{like \kbd{C-c} . but insert date and time format}{C-u C-c .}
365\key{insert DEADLINE timestamp}{C-c C-d}
366\key{insert SCHEDULED timestamp}{C-c C-s}
367\key{create sparse tree with all deadlines due}{C-c C-w}
368\key{the time between 2 dates in a time range}{C-c C-y}
369
370\key{change timestamp at cursor by $-1$ day}{S-LEFT$^4$}
371\key{change timestamp at cursor by $+1$ day}{S-RIGHT$^4$}
372\key{change year/month/day at cursor by $-1$}{S-DOWN$^4$}
373\key{change year/month/day at cursor by $+1$}{S-UP$^4$}
374
375\key{access the calendar for the current date}{C-c >}
376\key{insert timestamp matching date in calendar}{C-c <}
377\key{access agenda for current date}{C-c C-o}
378
379\key{While prompted for a date:}{}
380\key{... select date in calendar}{mouse-1/RET}
381\key{... scroll calendar back/forward one month}{< / >}
382\key{... forward/backward one day}{S-LEFT/RIGHT}
383\key{... forward/backward one week}{S-UP/DOWN}
384\key{... forward/backward one month}{M-S-LEFT/RIGT}
385
386\section{Links}
387
388\key{globally store link to the current location}{C-c l$^2$}
389\key{insert a link (TAB completes stored links)}{C-c C-l}
390\key{insert file link with file name completion}{C-u C-c C-l}
391
392\key{open link at point}{C-c C-o}
393\key{open file links in emacs}{C-u C-c C-o}
394\key{open link at point}{mouse-2}
395\key{open file links in emacs}{mouse-3}
396
397{\bf Link types}
398
399\key{\kbd{<http://www.astro.uva.nl/~dominik>}}{\rm on the web}
400\key{\kbd{<mailto:adent@galaxy.net>}}{\rm EMail address}
401\key{\kbd{<news:comp.emacs>}}{\rm Usenet group}
402\key{\kbd{<file:/home/dominik/img/mars.jpg>}}{\rm file, absolute}
403\key{\kbd{<file:papers/last.pdf>}}{\rm file, relative}
404\key{\kbd{<file:~/code/main.c:255>}}{\rm file with line nr.}
405\key{\kbd{<bbdb:Richard Stallman>}}{\rm BBDB person}
406\key{\kbd{<shell:ls *.org>}}{\rm shell command}
407\key{\kbd{<gnus:group>}}{\rm GNUS group}
408\key{\kbd{<gnus:group\#id>}}{\rm GNUS message}
409\key{\kbd{<vm:folder>}}{\rm VM folder}
410\key{\kbd{<vm:folder\#id>}}{\rm VM message}
411\key{\kbd{<vm://myself@some.where.org/folder\#id>}}{\rm VM remote}
412Wanderlust \kbd{<wl:...>} and RMAIL \kbd{<rmail:...>} like VM
413%\key{\kbd{<wl:folder>}}{\rm Wanderlust f.}
414%\key{\kbd{<wl:folder\#id>}}{\rm Wanderlust m.}
415%\key{\kbd{<rmail:folder>}}{\rm RMAIL folder}
416%\key{\kbd{<rmail:folder\#id>}}{\rm RMAIL msg}
417
418\section{Tables}
419
420%Org-mode has its own built-in intuitive table editor with unique
421%capabilities.
422
423{\bf Creating a table}
424
425\metax{insert a new Org-mode table}{M-x org-table-create}
426\metax{... or just start typing, e.g.}{|Name|Phone|Age RET |- TAB}
427\key{convert region to table}{C-c C-c}
428\key{... separator at least 3 spaces}{C-3 C-c C-c}
429%\key{... prompt for separator regexp}{C-u C-c C-c}
430
431{\bf Commands available inside tables}
432
433The following commands work when the cursor is {\it inside a table}.
434Outside of tables, the same keys may have other functionality.
435
436{\bf Re-aligning and field motion}
437
438\key{re-align the table without moving the cursor}{C-c C-c}
439\key{re-align the table, move to next field}{TAB}
440\key{move to previous field}{S-TAB}
441\key{re-align the table, move to next row}{RET}
442
443{\bf Row and column editing}
444
445\key{move the current column left}{M-LEFT}
446\key{move the current column right}{M-RIGHT}
447\key{kill the current column}{M-S-LEFT}
448\key{insert new column to left of cursor position}{M-S-RIGHT}
449
450\key{move the current row up}{M-UP}
451\key{move the current row down}{M-DOWN}
452\key{kill the current row or horizontal line}{M-S-UP}
453\key{insert new row above the current row}{M-S-DOWN}
454
455\key{insert horizontal line below the current row}{C-c -}
456\key{insert horizontal line above the current row}{C-u C-c -}
457
458{\bf Regions}
459
460\key{cut rectangular region}{C-c C-h C-w}
461\key{copy rectangular region}{C-c C-h M-w}
462\key{paste rectangular region}{C-c C-h C-y}
463\key{fill paragraph across selected cells}{C-c C-q}
464
465{\bf Calculations}
466
467Except for the summation commands, these need the Emacs calc package
468installed.
469
470\key{replace current field with result of formula}{C-c =}
471\key{... same calculation for rest of column}{C-u C-c =}
472\key{re-apply all stored equations to current line}{C-c *}
473\key{re-apply all stored equations to entire table}{C-u C-c *}
474
475\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
476in lines starting with: {\tt | \# |}.
477
478\key{rotate recalculation mark through \# * ! \$}{C-\#}
479
480\key{display column number cursor is in}{C-c ?}
481\key{sum numbers in current column/rectangle}{C-c +}
482\key{copy down with increment}{S-RET$^4$}
483
484A formula can also be typed directly into into a field. It will be
485executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}:
486
487\key{Example: Add Col1 and Col2}{=\$1+\$2}
488\key{... with printf format specification}{=\$1+\$2;\%.2f}
489\key{... with constants from constants.el}{=\$1/\$c/\$cm}
490\key{Apply current (for this column) formula}{=}
491\key{Sum all numbers above/left of cursor}{=sum / =sumh}
492\key{Sum just the 3 fields closest to cursor}{=sum3/=sumh3}
493
494{\bf Miscellaneous}
495
496\key{toggle visibility of vertical lines}{C-c |}
497\metax{export as tab-separated file}{M-x org-table-export}
498\metax{import tab-separated file}{M-x org-table-import}
499
500{\bf Tables created with the \kbd{table.el} package}
501
502\key{insert a new \kbd{table.el} table}{C-c ~}
503\key{recognize existing table.el table}{C-c C-c}
504\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
505
506\newcolumn
507\title{Org-Mode Reference Card (2/2)}
508
509\centerline{(for version \orgversionnumber)}
510
511\section{Timeline and Agenda}
512
513\key{show timeline of current org file}{C-c C-r}
514\key{... include past dates}{C-u C-c C-r}
515
516\key{add current file to your agenda}{C-c [}
517\key{remove current file from your agenda}{C-c ]}
518\key{compile agenda for the current week}{C-c a$^2$}
519\key{agenda for date at cursor}{C-c C-o}
520\vskip 1mm
521To set category for current file, add line$^3$:
522\vskip -1mm
523\beginexample%
524\#+CATEGORY: MyCateg
525\endexample
526
527{\bf Commands available in an agenda buffer}
528
529The agenda buffer is electric: single key presses execute commands.
530
531{\bf View org file}
532
533\key{show original location of item}{SPC}
534\key{... also available with}{mouse-3}
535\key{show and recenter window}{l}
536\key{goto original location in other window}{TAB}
537\key{... also available with}{mouse-2}
538\key{goto original location, delete other windows}{RET}
539\key{toggle follow-mode}{f}
540
541{\bf Change display}
542
543\key{delete other windows}{o}
544\key{switch to weekly view}{w}
545\key{switch to daily view}{d}
546\key{toggle inclusion of diary entries}{D}
547\key{toggle time grid for daily schedule}{g}
548\key{refresh agenda buffer with any changes}{r}
549\key{display the following \kbd{org-agenda-ndays}}{RIGHT}
550\key{display the previous \kbd{org-agenda-ndays}}{LEFT}
551\key{goto today}{.}
552
553{\bf Remote editing}
554
555\key{digit argument}{0-9}
556
557\key{change state of current TODO item}{t}
558\key{set priority of current item}{p}
559\key{raise priority of current item}{S-UP$^4$}
560\key{lower priority of current item}{S-DOWN$^4$}
561\key{display weighted priority of current item}{P}
562
563\key{change timestamp to one day earlier}{S-LEFT$^4$}
564\key{change timestamp to one day later}{S-RIGHT$^4$}
565\key{change timestamp to today}{>}
566
567\key{insert new entry into diary}{i}
568
569{\bf Calendar commands}
570
571\key{find agenda cursor date in calendar}{c}
572\key{compute agenda for calendar cursor date}{c}
573\key{show phases of the moon}{M}
574\key{show sunrise/sunset times}{S}
575\key{show holidays}{H}
576\key{convert date to other calendars}{C}
577
578{\bf Quit and Exit}
579
580\key{quit agenda, remove agenda buffer}{q}
581\key{exit agenda, remove all agenda buffers}{x}
582
583\section{Exporting}
584
585Exporting creates files with extensions {\it .txt\/} and {\it .html\/}
586in the current directory.
587
588\key{export as ASCII file}{C-c C-x a}
589\key{export visible text only (e.g. for printing)}{C-c C-x v}
590\key{export as HTML file}{C-c C-x h}
591\key{export as HTML and open in browser}{C-c C-x C-h}
592\key{prefix arg sets nb. of headline levels, e.g.}{C-3 C-c C-x h}
593
594\key{insert template of export options}{C-c C-x t}
595
596\key{toggle fixed width for line or region}{C-c :}
597
598{\bf HTML formatting}
599
600\key{make words {\bf bold}}{*bold*}
601\key{make words {\it italic}}{/italic/}
602\key{make words \underbar{underlined}}{_underlined_}
603\key{sub- and superscripts}{x\^{}3, J_dust}
604\key{\TeX{}-like macros}{\\alpha, \\to}
605\key{typeset lines in fixed width font}{start with :}
606\key{tables are exported as HTML tables}{start with |}
607\key{links become HTML links}{http:... etc}
608\key{include html tags}{@<b>...@</b>}
609
610{\bf Export options}
611
612Include additional information for export by putting these anywhere in the
613org file. Use {\tt M-TAB} completion to make sure to get the right
614keywords. {\tt M-TAB} again just after keyword is complete inserts examples.
615
616\key{the title to be shown}{\#+TITLE:}
617\key{the author}{\#+AUTHOR:}
618\key{authors email address}{\#+EMAIL:}
619\key{language code for html}{\#+LANGUAGE:}
620\key{free text description of file}{\#+TEXT:}
621\key{... which can carry over multiple lines}{\#+TEXT:}
622\key{settings for the export process - see below}{\#+OPTIONS:}
623
624{\bf Settings for the OPTIONS line}
625
626\key{set number of headline levels for export}{H:2}
627\key{turn on/off section numbers}{num:t}
628\key{turn on/off table of contents}{toc:t}
629\key{turn on/off linebreak preservation}{\\n:nil}
630\key{turn on/off quoted html tags}{@:t}
631\key{turn on/off fixed width sections}{::t}
632\key{turn on/off tables}{|:t}
633\key{turn on/off \TeX\ syntax for sub/super-scripts}{\^{}:t}
634\key{turn on/off emphasised text}{*:nil}
635\key{turn on/off \TeX\ macros}{TeX:t}
636
637{\bf Comments: Text not being exported}
638
639Text before the first headline is not considered part of the document
640and is therefore never exported.
641Lines starting with \kbd{\#} are comments and are not exported.
642Subtrees whose header starts with COMMENT are never exported.
643
644\key{toggle COMMENT keyword on entry}{C-c ;}
645
646\section{Completion}
647
648In-buffer completion completes TODO keywords at headline start, TeX
649macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'',
650keyword formulas after ``{\tt =}'', and dictionary words elsewhere.
651
652\key{Complete word at point}{M-TAB}
653
654\newcolumn
655
656\section{Calendar and Diary Integration}
657
658To include entries from the Emacs diary in your Org-mode agenda:
659\beginexample%
660(setq org-agenda-include-diary t)
661\endexample
662
663To include your Org-mode agenda in your normal diary, make sure you're
664using the fancy diary display
665%
666%\beginexample%
667%(add-hook 'diary-display-hook 'fancy-diary-display)
668%\endexample
669%
670and in your \kbd{~/diary} file add
671
672\beginexample%
673\&\%\%(org-diary)
674\endexample
675
676to include all the files listed in \kbd{org-agenda-files}. For more
677selective file inclusion use a line for each file:
678
679\beginexample%
680\&\%\%(org-diary) ~/path/to/some/org-file.org
681\endexample
682
683\section{Remember-mode Integration}
684
685See the manual for how to make remember.el use Org-mode links and
686files. The note-finishing command \kbd{C-c C-c} will first prompt for
687an org file. In the file, find a location with:
688
689\key{rotate subtree visibility}{TAB}
690\key{next heading}{DOWN}
691\key{previous heading}{UP}
692
693Insert the note with one of the following:
694
695\key{as sublevel of heading at cursor}{RET}
696\key{right here (cursor not on heading)}{RET}
697\key{before current heading}{LEFT}
698\key{after current heading}{RIGHT}
699\key{shortcut to end of buffer (cursor at buf-start)}{RET}
700\key{Abort}{q}
701
702\section{CUA and pc-select compatibility}
703
704Configure the variable {\tt org-CUA-compatibility} to make Org-mode
705avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
706Org-mode will change the following keybindings (also in the agenda
707buffer, but not during date selection). See note mark four$^4$
708throughout the reference card.
709%\vskip-mm
710\beginexample
711S-UP $\to$ M-p S-DOWN $\to$ M-n
712S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
713S-RET $\to$ C-S-RET
714\endexample
715
716\section{Notes}
717$^1$ The six autoload forms are only needed if Org-mode is not part of
718Emacs, or an XEmacs package.
719
720$^2$ This is only a suggestion for a binding of this command. Choose
721you own key as shown under INSTALLATION.
722
723$^3$ After changing a \kbd{\#+KEYWORD} line, press \kbd{C-c C-c} with
724the cursor still in a line to make Org-mode notice the change.
725
726$^4$ Keybinding affected by {\tt org-CUA-compatibility}.
727
728\copyrightnotice
729
730\bye
731
732% Local variables:
733% compile-command: "tex ord-mode-ref"
734% TeX-master: t
735% End:
736
737% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 551d7e1cfda..f3cfd9f7bba 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,8 @@
12005-06-28 Kenichi Handa <handa@m17n.org>
2
3 * leim-ext.el: Add rules for inserting full-width space for
4 quail/Punct and quail/Punct-b5.
5
12005-06-04 Eli Zaretskii <eliz@gnu.org> 62005-06-04 Eli Zaretskii <eliz@gnu.org>
2 7
3 * makefile.w32-in (distclean): Fix a typo (colon was after 8 * makefile.w32-in (distclean): Fix a typo (colon was after
diff --git a/leim/leim-ext.el b/leim/leim-ext.el
index ad5d22281d8..c15bfaa09e0 100644
--- a/leim/leim-ext.el
+++ b/leim/leim-ext.el
@@ -34,6 +34,12 @@
34(eval-after-load "quail/PY-b5" 34(eval-after-load "quail/PY-b5"
35 '(quail-defrule "ling2" ?$(0!r(B nil t)) 35 '(quail-defrule "ling2" ?$(0!r(B nil t))
36 36
37;; Enable inputting full-width space (U+3000).
38(eval-after-load "quail/Punct"
39 '(quail-defrule " " ?$A!!(B nil t))
40(eval-after-load "quail/Punct-b5"
41 '(quail-defrule " " ?$(0!!(B nil t))
42
37(autoload 'ucs-input-activate "quail/uni-input" 43(autoload 'ucs-input-activate "quail/uni-input"
38 "Activate UCS input method. 44 "Activate UCS input method.
39With arg, activate UCS input method if and only if arg is positive. 45With arg, activate UCS input method if and only if arg is positive.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d498e15f1d2..a446a343692 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,13 +1,248 @@
12005-06-29 Juri Linkov <juri@jurta.org>
2
3 * faces.el (default-frame-background-mode): New internal variable.
4 (frame-set-background-mode): Use it.
5
6 * startup.el (normal-top-level): Set default-frame-background-mode
7 instead of frame-background-mode. Before setting it, test for its
8 nil value. Remove tests for frame-background-mode and frame
9 parameter `reverse'. Add test for "unspecified-fg".
10
11 * term/xterm.el (xterm-rxvt-set-background-mode):
12 * term/rxvt.el (rxvt-set-background-mode):
13 Set default-frame-background-mode instead of frame-background-mode.
14
152005-06-29 Juanma Barranquero <lekktu@gmail.com>
16
17 * imenu.el (imenu--completion-buffer):
18 * mouse.el (mouse-buffer-menu-alist):
19 * msb.el (msb-invisible-buffer-p):
20 * calendar/diary-lib.el (diary-header-line-format):
21 * emacs-lisp/pp.el (pp-buffer):
22 * progmodes/cperl-mode.el (cperl-do-auto-fill):
23 * textmodes/picture.el (picture-replace-match):
24 Change space constants followed by a sexp to "?\s ".
25
26 * play/decipher.el (decipher-loop-with-breaks):
27 * textmodes/texinfo.el (texinfo-insert-@item): Change space
28 constants "protected" from end of line by a comment to "?\s".
29
302005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
31
32 * font-lock.el (save-buffer-state): Use `declare'.
33
34 * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
35 reset the syntax-table to cperl-mode-syntax-table.
36 (cperl-mode): Make _ into word-syntax during font-locking so "print" in
37 "foo_print_bar" is not matched as a reserved keyword.
38
392005-06-29 Carsten Dominik <dominik@science.uva.nl>
40
41 * textmodes/org.el (orgtbl-setup): New function, for delayed
42 setup for the orgtbl commands.
43 (org-calc-default-modes): New option.
44 (orgtbl-make-binding): Use `defun' to get better help display.
45 (org-diary): Call `org-compile-prefix-format'.
46 (org-table-formula-substitute-names): New function.
47 (org-agenda-day-view, org-agenda-week-view): New commands.
48 (org-agenda-toggle-week-view): Command removed.
49 (org-tbl-menu): Split off from org-org-menu.
50 (org-mode): Move removal of outline-mode menus to here.
51 (org-table-formula-debug): New option.
52 (org-table-insert-row): Keep first field if just "#" or "*".
53 (org-mode): Paragraph regexps fixed.
54 (org-table-recalculate-regexp): New constant.
55 (org-table-justify-field-maybe): Avoid replace if not necessary.
56 (org-copy-special, org-cut-special): Use `call-interactively'.
57 (org-table-copy-region): Take region from `interactive' call.
58 (org-trim): Return string even if no match.
59 (org-formula): New face.
60 (org-set-font-lock-defaults): No longer highlight "FIXME".
61 But highlight formula-related fields in table.
62 (org-table-p): Use regexp, not fontification.
63 (org-table-align): Handle white space at end of line.
64 (org-table-formula-evaluate-inline): New option.
65 (org-mode): Auto-wrapping in comment lines turned off.
66 (org-table-copy-down): Evaluate only in copied field, not in
67 destination.
68 (org-table-current-formula): Variable removed.
69 (org-table-store-formulas, org-table-get-stored-formulas)
70 (org-table-modify-formulas, org-table-replace-in-formulas)
71 (org-table-maybe-eval-formula): New functions.
72 (org-table-get-formula): Modify to use stored formulas.
73 (org-table-insert-column, org-table-delete-column)
74 (org-table-move-column): Call `org-table-modify-formulas'.
75 (org-complete): Add completion for keyword formulas.
76 (orgtbl-mode): Pull orgtbl-mode-map to start of
77 minor-mode-map-alist.
78
792005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
80
81 * progmodes/python.el (python-check): Require `compile' before
82 modifying its variables.
83
84 * newcomment.el (comment-indent-default): Don't get fooled by an early
85 end of buffer.
86
872005-06-28 Vinicius Jose Latorre <viniciusjl@ig.com.br>
88
89 * ps-print.el (ps-print-version): Fix version number.
90
912005-06-28 Luc Teirlinck <teirllm@auburn.edu>
92
93 * textmodes/ispell.el (ispell-word): Remove stray parenthesis.
94
952005-06-28 Richard M. Stallman <rms@gnu.org>
96
97 * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
98 (flyspell-local-mouse-map): Declaration deleted.
99 (flyspell-mouse-map): Bind only mouse-2.
100 (flyspell-mode-map): Don't test flyspell-use-local-map.
101 (flyspell-overlay-keymap-property-name): Var deleted.
102 (flyspell-mode-on): Don't make local bindings for
103 flyspell-mouse-map and flyspell-mode-map.
104 (make-flyspell-overlay): Unconditionally put on `keymap' text prop.
105
106 * textmodes/ispell.el (ispell-word): Do not ignore short words.
107
108 * progmodes/compile.el (compilation-next-error-function):
109 Don't switch buffers; operate on the current buffer.
110
111 * facemenu.el (facemenu-add-face): Warn when font-lock is active.
112
113 * comint.el (comint-password-prompt-regexp): Accept ", try again".
114
115 * bindings.el (global-map): Bind insertchar and its variants.
116
1172005-06-27 Richard M. Stallman <rms@gnu.org>
118
119 * textmodes/artist.el (artist-text-overwrite)
120 (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
121
1222005-06-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
123
124 * ps-print.el: It was not working the page selection for printing.
125 Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
126 (ps-print-version): New version 6.6.7.
127 (ps-end-sheet): New fun.
128 (ps-header-sheet, ps-end-job): Call it.
129
1302005-06-27 Luc Teirlinck <teirllm@auburn.edu>
131
132 * subr.el (add-to-list, add-to-ordered-list): Doc fixes.
133
1342005-06-27 Lute Kamstra <lute@gnu.org>
135
136 * facemenu.el (facemenu-unlisted-faces): Add foreground and
137 background color faces.
138 (facemenu-get-face): Delete function.
139 (facemenu-set-face-from-menu): Don't call facemenu-get-face.
140 (facemenu-add-new-color): Make second argument mandatory.
141 Create the approprate face and return it. Simplify.
142 (facemenu-set-foreground, facemenu-set-background): Don't check if
143 color is defined. Use return value of facemenu-add-new-color.
144
1452005-06-26 Nick Roberts <nickrob@snap.net.nz>
146
147 * progmodes/gud.el (gud-filter): Add missing argument to
148 with-selected-window.
149
1502005-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
151
152 * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
153 a :require to the defcustom.
154
155 * emacs-lisp/autoload.el (make-autoload): Add the :setter for
156 defcustoms corresponding to minor modes.
157
1582005-06-26 David Ponce <david@dponce.com>
159
160 * recentf.el: Require tree-widget instead of wid-edit.
161 (recentf-filename-handler): Fix widget :type.
162 (recentf-cancel-dialog, recentf-open-more-files)
163 (recentf-open-files-action): Doc fix.
164 (recentf-dialog-goto-first): New function.
165 (recentf-dialog-mode-map): Set parent keymap first.
166 (recentf-dialog-mode): Define with define-derived-mode.
167 Don't display continuation lines in dialogs.
168 (recentf-edit-list): Rename from recentf-edit-selected-items.
169 (recentf-edit-list-select): Rename from recentf-edit-list-action.
170 Simplify.
171 (recentf-edit-list-validate): New function.
172 (recentf-edit-list): Update accordingly.
173 (recentf-open-files-item-shift): Remove.
174 (recentf-open-files-item): Convert menu elements into tree and
175 link widgets. Don't create the widgets.
176 (recentf-open-files): Update accordingly.
177 (recentf-save-list): Untabify.
178
1792005-06-25 Luc Teirlinck <teirllm@auburn.edu>
180
181 * replace.el (keep-lines-read-args): Add INTERACTIVE arg.
182 (keep-lines): Add INTERACTIVE arg. Never delete lines only
183 partially contained in the active region. Do not take active
184 region into account when called from Lisp, unless INTERACTIVE arg
185 is non-nil. Use `forward-line' instead of `beginning-of-line' to
186 avoid trouble with fields. Make marker point nowhere when no
187 longer used. Always return nil. Doc fix.
188 (flush-lines): Add INTERACTIVE arg. Do not take active region
189 into account when called from Lisp, unless INTERACTIVE arg is
190 non-nil. Use `forward-line' instead of `beginning-of-line' to
191 avoid trouble with fields. Make marker point nowhere when no
192 longer used. Always return nil. Doc fix.
193 (how-many): Add INTERACTIVE arg. Make RSTART and REND args
194 interchangeable. Do not take active region into account when
195 called from Lisp, unless INTERACTIVE arg is non-nil. Do not print
196 message in echo area when called from Lisp, unless INTERACTIVE arg
197 is non-nil. Avoid saying "1 occurrences". Do not use markers.
198 Return the number of matches. Doc fix.
199 (occur): Doc fix.
200 (perform-replace): Make comment follow double space convention for
201 the sake of `outline-minor-mode'.
202
203 * faces.el (facep): Doc fix.
204
2052005-06-25 Richard M. Stallman <rms@gnu.org>
206
207 * facemenu.el (facemenu-enable-faces-p): New function.
208 (facemenu-background-menu, facemenu-foreground-menu)
209 (facemenu-face-menu): Add menu-enable property.
210
211 * jka-compr.el (jka-compr-insert-file-contents):
212 Special handling if cannot find the uncompression program.
213
214 * cus-face.el (custom-face-attributes): Add autoload.
215
216 * emacs-lisp/lisp-mode.el (lisp-mode-variables):
217 Bind comment-indent-function locally.
218
219 * window.el (save-selected-window): Use save-current-buffer.
220
221 * subr.el (with-selected-window): Use save-current-buffer.
222
223 * progmodes/gud.el (gud-filter): Simplify using with-selected-window
224 and with-current-buffer.
225
2262005-06-24 Richard M. Stallman <rms@gnu.org>
227
228 * simple.el (line-move-1): Fix previous change.
229
2302005-06-24 Juanma Barranquero <lekktu@gmail.com>
231
232 * replace.el (occur-1): Set `buffer-read-only' and the
233 buffer-modified flag before running `occur-hook' to protect
234 against unintentional buffer switches that can lead to data loss.
235
12005-06-24 Nick Roberts <nickrob@snap.net.nz> 2362005-06-24 Nick Roberts <nickrob@snap.net.nz>
2 237
3 * progmodes/gud.el (gud-tooltip-print-command): Indent properly. 238 * progmodes/gud.el (gud-tooltip-print-command): Indent properly.
4 (gud-gdb-marker-filter): Use font-lock-warning-face for any 239 (gud-gdb-marker-filter): Use font-lock-warning-face for any
5 initial error. 240 initial error.
6 241
7 * progmodes/gdb-ui.el (gdb-send): Remove warning face from errors 242 * progmodes/gdb-ui.el (gdb-send): Remove warning face from errors
8 after fresh input. 243 after fresh input.
9 (gdb-var-create-handler): Put name of expression in quotes. 244 (gdb-var-create-handler): Put name of expression in quotes.
10 245
112005-06-23 Luc Teirlinck <teirllm@auburn.edu> 2462005-06-23 Luc Teirlinck <teirllm@auburn.edu>
12 247
13 * emacs-lisp/ring.el (ring-elements): Make it return a list of the 248 * emacs-lisp/ring.el (ring-elements): Make it return a list of the
@@ -19,7 +254,7 @@
19 (line-move-1): When there are overlays around, use vertical-motion. 254 (line-move-1): When there are overlays around, use vertical-motion.
20 255
21 * faces.el (escape-glyph): Use brown against light background. 256 * faces.el (escape-glyph): Use brown against light background.
22 (nobreak-space): Renamed from no-break-space. 257 (nobreak-space): Rename from no-break-space.
23 Fix previous change. 258 Fix previous change.
24 259
25 * dired-aux.el (dired-do-copy): Fix arg prompt. 260 * dired-aux.el (dired-do-copy): Fix arg prompt.
@@ -73,7 +308,7 @@
73 * bindings.el (propertized-buffer-identification): Use renamed 308 * bindings.el (propertized-buffer-identification): Use renamed
74 `Buffer-menu-buffer' face. 309 `Buffer-menu-buffer' face.
75 310
76 * faces.el (vertical-border): Renamed from `vertical-divider'. 311 * faces.el (vertical-border): Rename from `vertical-divider'.
77 (escape-glyph): Change dark-background color back to `cyan'. 312 (escape-glyph): Change dark-background color back to `cyan'.
78 313
792005-06-21 Juri Linkov <juri@jurta.org> 3142005-06-21 Juri Linkov <juri@jurta.org>
@@ -159,8 +394,7 @@
159 394
1602005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl> 3952005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl>
161 396
162 * progmodes/ps-mode.el: Update version and maintainer's email 397 * progmodes/ps-mode.el: Update version and maintainer's email address.
163 address.
164 398
1652005-06-18 Steve Youngs <steve@xemacs.org> 3992005-06-18 Steve Youngs <steve@xemacs.org>
166 400
@@ -248,8 +482,8 @@
248 New backward-compatibility aliases for renamed faces. 482 New backward-compatibility aliases for renamed faces.
249 (eshell-ls-decorated-name): Use renamed eshell-ls faces. 483 (eshell-ls-decorated-name): Use renamed eshell-ls faces.
250 484
251 * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove 485 * progmodes/cc-fonts.el (c-nonbreakable-space-face):
252 "-face" suffix from face name. 486 Remove "-face" suffix from face name.
253 (c-cpp-matchers): Use the variable `c-nonbreakable-space-face' 487 (c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
254 instead of literal face. 488 instead of literal face.
255 489
@@ -377,8 +611,8 @@
377 ido-incomplete-regexp. 611 ido-incomplete-regexp.
378 (ido-incomplete-regexp): New face. 612 (ido-incomplete-regexp): New face.
379 (ido-completions): Use it. 613 (ido-completions): Use it.
380 (ido-complete, ido-exit-minibuffer, ido-completions): Handle 614 (ido-complete, ido-exit-minibuffer, ido-completions):
381 incomplete regexps. 615 Handle incomplete regexps.
382 (ido-completions): Add check for complete match when entering a regexp. 616 (ido-completions): Add check for complete match when entering a regexp.
383 617
3842005-06-15 Stefan Monnier <monnier@iro.umontreal.ca> 6182005-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -407,6 +641,11 @@
407 * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl 641 * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
408 faces instead of (non-existent) variables. 642 faces instead of (non-existent) variables.
409 643
6442005-06-14 Stefan Monnier <monnier@iro.umontreal.ca>
645
646 * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
647 (iswitchb-get-matched-buffers): Likewise. Simplify.
648
4102005-06-14 Miles Bader <miles@gnu.org> 6492005-06-14 Miles Bader <miles@gnu.org>
411 650
412 * progmodes/ld-script.el (ld-script-location-counter): 651 * progmodes/ld-script.el (ld-script-location-counter):
@@ -532,7 +771,7 @@
532 771
533 * progmodes/gdb-ui.el (menu): Re-order menu items. 772 * progmodes/gdb-ui.el (menu): Re-order menu items.
534 (gdb-tooltip-print): Respect tooltip-use-echo-area. 773 (gdb-tooltip-print): Respect tooltip-use-echo-area.
535 774
536 * progmodes/gud.el (tooltip-use-echo-area): Remove alias. 775 * progmodes/gud.el (tooltip-use-echo-area): Remove alias.
537 Define in tooltip.el. 776 Define in tooltip.el.
538 (gud-tooltip-process-output): Respect tooltip-use-echo-area. 777 (gud-tooltip-process-output): Respect tooltip-use-echo-area.
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 2046c101640..ceab70ed6cd 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -775,6 +775,11 @@ language you are using."
775(define-key global-map [insert] 'overwrite-mode) 775(define-key global-map [insert] 'overwrite-mode)
776(define-key global-map [C-insert] 'kill-ring-save) 776(define-key global-map [C-insert] 'kill-ring-save)
777(define-key global-map [S-insert] 'yank) 777(define-key global-map [S-insert] 'yank)
778;; `insertchar' is what term.c produces. Should we change term.c
779;; to produce `insert' instead?
780(define-key global-map [insertchar] 'overwrite-mode)
781(define-key global-map [C-insertchar] 'kill-ring-save)
782(define-key global-map [S-insertchar] 'yank)
778(define-key global-map [undo] 'undo) 783(define-key global-map [undo] 'undo)
779(define-key global-map [redo] 'repeat-complex-command) 784(define-key global-map [redo] 'repeat-complex-command)
780(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard 785(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard
@@ -785,7 +790,6 @@ language you are using."
785;; (define-key global-map [clearline] 'function-key-error) 790;; (define-key global-map [clearline] 'function-key-error)
786(define-key global-map [insertline] 'open-line) 791(define-key global-map [insertline] 'open-line)
787(define-key global-map [deleteline] 'kill-line) 792(define-key global-map [deleteline] 'kill-line)
788;; (define-key global-map [insertchar] 'function-key-error)
789(define-key global-map [deletechar] 'delete-char) 793(define-key global-map [deletechar] 'delete-char)
790;; (define-key global-map [backtab] 'function-key-error) 794;; (define-key global-map [backtab] 'function-key-error)
791;; (define-key global-map [f1] 'function-key-error) 795;; (define-key global-map [f1] 'function-key-error)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index a0e9d1f90b7..851459fe574 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -290,7 +290,7 @@ The format of the header is specified by `diary-header-line-format'."
290 "Selective display active - press \"s\" in calendar \ 290 "Selective display active - press \"s\" in calendar \
291before edit/copy" 291before edit/copy"
292 "Diary")) 292 "Diary"))
293 ?\ (frame-width))) 293 ?\s (frame-width)))
294 "*Format of the header line displayed by `simple-diary-display'. 294 "*Format of the header line displayed by `simple-diary-display'.
295Only used if `diary-header-line-flag' is non-nil." 295Only used if `diary-header-line-flag' is non-nil."
296 :group 'diary 296 :group 'diary
diff --git a/lisp/comint.el b/lisp/comint.el
index 29208d6379c..20b365e9fe1 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -338,8 +338,8 @@ This variable is buffer-local."
338 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\ 338 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\
339Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\ 339Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\
340\[Pp]assword\\( (again)\\)?\\|\ 340\[Pp]assword\\( (again)\\)?\\|\
341pass phrase\\|\\(Enter\\|Repeat\\) passphrase\\)\ 341pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\
342\\( for [^:]+\\)?:\\s *\\'" 342\\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'"
343 "*Regexp matching prompts for passwords in the inferior process. 343 "*Regexp matching prompts for passwords in the inferior process.
344This is used by `comint-watch-for-password-prompt'." 344This is used by `comint-watch-for-password-prompt'."
345 :type 'regexp 345 :type 'regexp
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 33c8c995a4c..054ad9acaa3 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -59,6 +59,7 @@
59 59
60;;; Face attributes. 60;;; Face attributes.
61 61
62;;;###autoload
62(defconst custom-face-attributes 63(defconst custom-face-attributes
63 '((:family 64 '((:family
64 (string :tag "Font Family" 65 (string :tag "Font Family"
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 68d1287d98c..7dbf61c5bf3 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -1,7 +1,7 @@
1;; autoload.el --- maintain autoloads in loaddefs.el 1;; autoload.el --- maintain autoloads in loaddefs.el
2 2
3;; Copyright (C) 1991,92,93,94,95,96,97, 2001,02,03,04 3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
4;; Free Software Foundation, Inc. 4;; 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Roland McGrath <roland@gnu.org> 6;; Author: Roland McGrath <roland@gnu.org>
7;; Keywords: maint 7;; Keywords: maint
@@ -123,7 +123,17 @@ or macro definition or a defcustom)."
123 ) 123 )
124 `(progn 124 `(progn
125 (defvar ,varname ,init ,doc) 125 (defvar ,varname ,init ,doc)
126 (custom-autoload ',varname ,file)))) 126 (custom-autoload ',varname ,file)
127 ;; The use of :require in a defcustom can be annoying, especially
128 ;; when defcustoms are moved from one file to another between
129 ;; releases because the :require arg gets placed in the user's
130 ;; .emacs. In order for autoloaded minor modes not to need the
131 ;; use of :require, we arrange to store their :setter.
132 ,(let ((setter (condition-case nil
133 (cadr (memq :set form))
134 (error nil))))
135 (if (equal setter ''custom-set-minor-mode)
136 `(put ',varname 'custom-set 'custom-set-minor-mode))))))
127 137
128 ;; nil here indicates that this is not a special autoload form. 138 ;; nil here indicates that this is not a special autoload form.
129 (t nil)))) 139 (t nil))))
@@ -566,5 +576,5 @@ Calls `update-directory-autoloads' on the command line arguments."
566 576
567(provide 'autoload) 577(provide 'autoload)
568 578
569;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6 579;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
570;;; autoload.el ends here 580;;; autoload.el ends here
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index a342f8a5530..6ee87919d38 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -201,10 +201,7 @@ See the command `%s' for a description of this minor-mode."))
201 :type 'boolean 201 :type 'boolean
202 ,@(cond 202 ,@(cond
203 ((not (and curfile require)) nil) 203 ((not (and curfile require)) nil)
204 ((not (eq require t)) `(:require ,require)) 204 ((not (eq require t)) `(:require ,require)))
205 (t `(:require
206 ',(intern (file-name-nondirectory
207 (file-name-sans-extension curfile))))))
208 ,@(nreverse extra-keywords)))) 205 ,@(nreverse extra-keywords))))
209 206
210 ;; The actual function. 207 ;; The actual function.
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 1ffc33835e9..972fe6bafc8 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -202,6 +202,8 @@
202 (setq comment-column 40) 202 (setq comment-column 40)
203 ;; Don't get confused by `;' in doc strings when paragraph-filling. 203 ;; Don't get confused by `;' in doc strings when paragraph-filling.
204 (set (make-local-variable 'comment-use-global-state) t) 204 (set (make-local-variable 'comment-use-global-state) t)
205 (make-local-variable 'comment-indent-function)
206 (setq comment-indent-function 'lisp-comment-indent)
205 (make-local-variable 'imenu-generic-expression) 207 (make-local-variable 'imenu-generic-expression)
206 (setq imenu-generic-expression lisp-imenu-generic-expression) 208 (setq imenu-generic-expression lisp-imenu-generic-expression)
207 (make-local-variable 'multibyte-syntax-as-symbol) 209 (make-local-variable 'multibyte-syntax-as-symbol)
@@ -714,7 +716,7 @@ which see."
714 (setq debug-on-error new-value)) 716 (setq debug-on-error new-value))
715 value))))) 717 value)))))
716 718
717 719;; Used for comment-indent-function in Lisp modes.
718(defun lisp-comment-indent () 720(defun lisp-comment-indent ()
719 (if (looking-at "\\s<\\s<\\s<") 721 (if (looking-at "\\s<\\s<\\s<")
720 (current-column) 722 (current-column)
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 93e30fb0f55..d9f3df99bae 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -67,7 +67,7 @@ to make output that `read' can handle, whenever this is possible."
67 (save-excursion 67 (save-excursion
68 (backward-char 1) 68 (backward-char 1)
69 (skip-chars-backward "'`#^") 69 (skip-chars-backward "'`#^")
70 (when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n))) 70 (when (and (not (bobp)) (memq (char-before) '(?\s ?\t ?\n)))
71 (delete-region 71 (delete-region
72 (point) 72 (point)
73 (progn (skip-chars-backward " \t\n") (point))) 73 (progn (skip-chars-backward " \t\n") (point)))
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index cd3998520a1..43c275e4a2f 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -1,6 +1,6 @@
1;;; facemenu.el --- create a face menu for interactively adding fonts to text 1;;; facemenu.el --- create a face menu for interactively adding fonts to text
2 2
3;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc. 3;; Copyright (c) 1994, 1995, 1996, 2001, 2002, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Boris Goldowsky <boris@gnu.org> 5;; Author: Boris Goldowsky <boris@gnu.org>
6;; Keywords: faces 6;; Keywords: faces
@@ -135,7 +135,8 @@ just before \"Other\" at the end."
135 `(modeline region secondary-selection highlight scratch-face 135 `(modeline region secondary-selection highlight scratch-face
136 ,(purecopy "^font-lock-") ,(purecopy "^gnus-") ,(purecopy "^message-") 136 ,(purecopy "^font-lock-") ,(purecopy "^gnus-") ,(purecopy "^message-")
137 ,(purecopy "^ediff-") ,(purecopy "^term-") ,(purecopy "^vc-") 137 ,(purecopy "^ediff-") ,(purecopy "^term-") ,(purecopy "^vc-")
138 ,(purecopy "^widget-") ,(purecopy "^custom-") ,(purecopy "^vm-")) 138 ,(purecopy "^widget-") ,(purecopy "^custom-") ,(purecopy "^vm-")
139 ,(purecopy "^fg:") ,(purecopy "^bg:"))
139 "*List of faces not to include in the Face menu. 140 "*List of faces not to include in the Face menu.
140Each element may be either a symbol, which is the name of a face, or a string, 141Each element may be either a symbol, which is the name of a face, or a string,
141which is a regular expression to be matched against face names. Matching 142which is a regular expression to be matched against face names. Matching
@@ -162,6 +163,7 @@ when they are created."
162 "Menu keymap for faces.") 163 "Menu keymap for faces.")
163;;;###autoload 164;;;###autoload
164(defalias 'facemenu-face-menu facemenu-face-menu) 165(defalias 'facemenu-face-menu facemenu-face-menu)
166(put 'facemenu-face-menu 'menu-enable '(facemenu-enable-faces-p))
165 167
166;;;###autoload 168;;;###autoload
167(defvar facemenu-foreground-menu 169(defvar facemenu-foreground-menu
@@ -171,6 +173,7 @@ when they are created."
171 "Menu keymap for foreground colors.") 173 "Menu keymap for foreground colors.")
172;;;###autoload 174;;;###autoload
173(defalias 'facemenu-foreground-menu facemenu-foreground-menu) 175(defalias 'facemenu-foreground-menu facemenu-foreground-menu)
176(put 'facemenu-foreground-menu 'menu-enable '(facemenu-enable-faces-p))
174 177
175;;;###autoload 178;;;###autoload
176(defvar facemenu-background-menu 179(defvar facemenu-background-menu
@@ -180,6 +183,11 @@ when they are created."
180 "Menu keymap for background colors.") 183 "Menu keymap for background colors.")
181;;;###autoload 184;;;###autoload
182(defalias 'facemenu-background-menu facemenu-background-menu) 185(defalias 'facemenu-background-menu facemenu-background-menu)
186(put 'facemenu-background-menu 'menu-enable '(facemenu-enable-faces-p))
187
188;;; Condition for enabling menu items that set faces.
189(defun facemenu-enable-faces-p ()
190 (not (and font-lock-mode font-lock-defaults)))
183 191
184;;;###autoload 192;;;###autoload
185(defvar facemenu-special-menu 193(defvar facemenu-special-menu
@@ -358,10 +366,8 @@ typing a character to insert cancels the specification."
358 (region-beginning)) 366 (region-beginning))
359 (if (and mark-active (not current-prefix-arg)) 367 (if (and mark-active (not current-prefix-arg))
360 (region-end)))) 368 (region-end))))
361 (unless (color-defined-p color) 369 (facemenu-add-face (facemenu-add-new-color color 'facemenu-foreground-menu)
362 (message "Color `%s' undefined" color)) 370 start end))
363 (facemenu-add-new-color color 'facemenu-foreground-menu)
364 (facemenu-add-face (list (list :foreground color)) start end))
365 371
366;;;###autoload 372;;;###autoload
367(defun facemenu-set-background (color &optional start end) 373(defun facemenu-set-background (color &optional start end)
@@ -382,10 +388,8 @@ typing a character to insert cancels the specification."
382 (region-beginning)) 388 (region-beginning))
383 (if (and mark-active (not current-prefix-arg)) 389 (if (and mark-active (not current-prefix-arg))
384 (region-end)))) 390 (region-end))))
385 (unless (color-defined-p color) 391 (facemenu-add-face (facemenu-add-new-color color 'facemenu-background-menu)
386 (message "Color `%s' undefined" color)) 392 start end))
387 (facemenu-add-new-color color 'facemenu-background-menu)
388 (facemenu-add-face (list (list :background color)) start end))
389 393
390;;;###autoload 394;;;###autoload
391(defun facemenu-set-face-from-menu (face start end) 395(defun facemenu-set-face-from-menu (face start end)
@@ -406,7 +410,6 @@ typing a character to insert cancels the specification."
406 (if (and mark-active (not current-prefix-arg)) 410 (if (and mark-active (not current-prefix-arg))
407 (region-end)))) 411 (region-end))))
408 (barf-if-buffer-read-only) 412 (barf-if-buffer-read-only)
409 (facemenu-get-face face)
410 (if start 413 (if start
411 (facemenu-add-face face start end) 414 (facemenu-add-face face start end)
412 (facemenu-add-face face))) 415 (facemenu-add-face face)))
@@ -608,7 +611,9 @@ effect. See `facemenu-remove-face-function'."
608 self-insert-face 611 self-insert-face
609 (list self-insert-face))) 612 (list self-insert-face)))
610 face) 613 face)
611 self-insert-face-command this-command))))) 614 self-insert-face-command this-command))))
615 (unless (facemenu-enable-faces-p)
616 (message "Font-lock mode will override any faces you set in this buffer")))
612 617
613(defun facemenu-active-faces (face-list &optional frame) 618(defun facemenu-active-faces (face-list &optional frame)
614 "Return from FACE-LIST those faces that would be used for display. 619 "Return from FACE-LIST those faces that would be used for display.
@@ -641,14 +646,6 @@ use the selected frame. If t, then the global, non-frame faces are used."
641 (setq face-list (cdr face-list))) 646 (setq face-list (cdr face-list)))
642 (nreverse active-list))) 647 (nreverse active-list)))
643 648
644(defun facemenu-get-face (symbol)
645 "Make sure FACE exists.
646If not, create it and add it to the appropriate menu. Return the SYMBOL."
647 (let ((name (symbol-name symbol)))
648 (cond ((facep symbol))
649 (t (make-face symbol))))
650 symbol)
651
652(defun facemenu-add-new-face (face) 649(defun facemenu-add-new-face (face)
653 "Add FACE (a face) to the Face menu. 650 "Add FACE (a face) to the Face menu.
654 651
@@ -708,47 +705,44 @@ This is called whenever you create a new face."
708 (define-key menu key (cons name function)))))) 705 (define-key menu key (cons name function))))))
709 nil) ; Return nil for facemenu-iterate 706 nil) ; Return nil for facemenu-iterate
710 707
711(defun facemenu-add-new-color (color &optional menu) 708(defun facemenu-add-new-color (color menu)
712 "Add COLOR (a color name string) to the appropriate Face menu. 709 "Add COLOR (a color name string) to the appropriate Face menu.
713MENU should be `facemenu-foreground-menu' or 710MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'.
714`facemenu-background-menu'. 711Create the appropriate face and return it.
715 712
716This is called whenever you use a new color." 713This is called whenever you use a new color."
717 (let* (name 714 (let (symbol docstring)
718 symbol 715 (unless (color-defined-p color)
719 docstring 716 (error "Color `%s' undefined" color))
720 function menu-val key
721 (color-p (memq menu '(facemenu-foreground-menu
722 facemenu-background-menu))))
723 (unless (stringp color)
724 (error "%s is not a color" color))
725 (setq name color
726 symbol (intern name))
727
728 (cond ((eq menu 'facemenu-foreground-menu) 717 (cond ((eq menu 'facemenu-foreground-menu)
729 (setq docstring 718 (setq docstring
730 (format "Select foreground color %s for subsequent insertion." 719 (format "Select foreground color %s for subsequent insertion."
731 name))) 720 color)
721 symbol (intern (concat "fg:" color)))
722 (set-face-foreground (make-face symbol) color))
732 ((eq menu 'facemenu-background-menu) 723 ((eq menu 'facemenu-background-menu)
733 (setq docstring 724 (setq docstring
734 (format "Select background color %s for subsequent insertion." 725 (format "Select background color %s for subsequent insertion."
735 name)))) 726 color)
727 symbol (intern (concat "bg:" color)))
728 (set-face-background (make-face symbol) color))
729 (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'")))
736 (cond ((facemenu-iterate ; check if equivalent face is already in the menu 730 (cond ((facemenu-iterate ; check if equivalent face is already in the menu
737 (lambda (m) (and (listp m) 731 (lambda (m) (and (listp m)
738 (symbolp (car m)) 732 (symbolp (car m))
739 (stringp (cadr m)) 733 (stringp (cadr m))
740 (string-equal (cadr m) color))) 734 (string-equal (cadr m) color)))
741 (cdr (symbol-function menu)))) 735 (cdr (symbol-function menu))))
742 (t ; No keyboard equivalent. Figure out where to put it: 736 (t ; No keyboard equivalent. Figure out where to put it:
743 (setq key (vector symbol) 737 (let ((key (vector symbol))
744 function 'facemenu-set-face-from-menu 738 (function 'facemenu-set-face-from-menu)
745 menu-val (symbol-function menu)) 739 (menu-val (symbol-function menu)))
746 (if (and facemenu-new-faces-at-end 740 (if (and facemenu-new-faces-at-end
747 (> (length menu-val) 3)) 741 (> (length menu-val) 3))
748 (define-key-after menu-val key (cons name function) 742 (define-key-after menu-val key (cons color function)
749 (car (nth (- (length menu-val) 3) menu-val))) 743 (car (nth (- (length menu-val) 3) menu-val)))
750 (define-key menu key (cons name function)))))) 744 (define-key menu key (cons color function))))))
751 nil) ; Return nil for facemenu-iterate 745 symbol))
752 746
753(defun facemenu-complete-face-list (&optional oldlist) 747(defun facemenu-complete-face-list (&optional oldlist)
754 "Return list of all faces that look different. 748 "Return list of all faces that look different.
diff --git a/lisp/faces.el b/lisp/faces.el
index 60e34d3976d..bcdef05e8ec 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -204,7 +204,10 @@ If NAME is already a face, it is simply returned."
204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
205 205
206(defun facep (face) 206(defun facep (face)
207 "Return non-nil if FACE is a face name." 207 "Return non-nil if FACE is a face name or internal face object.
208Return nil otherwise. A face name can be a string or a symbol.
209An internal face object is a vector of the kind used internally
210to record face data."
208 (internal-lisp-face-p face)) 211 (internal-lisp-face-p face))
209 212
210 213
@@ -1573,6 +1576,13 @@ this won't have the expected effect."
1573 (choice-item light) 1576 (choice-item light)
1574 (choice-item :tag "default" nil))) 1577 (choice-item :tag "default" nil)))
1575 1578
1579(defvar default-frame-background-mode nil
1580 "Internal variable for the default brightness of the background.
1581Emacs sets it automatically depending on the terminal type.
1582The value `nil' means `dark'. If Emacs runs in non-windowed
1583mode from `xterm' or a similar terminal emulator, the value is
1584`light'. On rxvt terminals, the value depends on the environment
1585variable COLORFGBG.")
1576 1586
1577(defun frame-set-background-mode (frame) 1587(defun frame-set-background-mode (frame)
1578 "Set up display-dependent faces on FRAME. 1588 "Set up display-dependent faces on FRAME.
@@ -1588,13 +1598,13 @@ according to the `background-mode' and `display-type' frame parameters."
1588 (intern (downcase bg-resource))) 1598 (intern (downcase bg-resource)))
1589 ((and (null window-system) (null bg-color)) 1599 ((and (null window-system) (null bg-color))
1590 ;; No way to determine this automatically (?). 1600 ;; No way to determine this automatically (?).
1591 'dark) 1601 (or default-frame-background-mode 'dark))
1592 ;; Unspecified frame background color can only happen 1602 ;; Unspecified frame background color can only happen
1593 ;; on tty's. 1603 ;; on tty's.
1594 ((member bg-color '(unspecified "unspecified-bg")) 1604 ((member bg-color '(unspecified "unspecified-bg"))
1595 'dark) 1605 (or default-frame-background-mode 'dark))
1596 ((equal bg-color "unspecified-fg") ; inverted colors 1606 ((equal bg-color "unspecified-fg") ; inverted colors
1597 'light) 1607 (if (eq default-frame-background-mode 'light) 'dark 'light))
1598 ((>= (apply '+ (x-color-values bg-color frame)) 1608 ((>= (apply '+ (x-color-values bg-color frame))
1599 ;; Just looking at the screen, colors whose 1609 ;; Just looking at the screen, colors whose
1600 ;; values add up to .6 of the white total 1610 ;; values add up to .6 of the white total
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 6ee541aea88..da838981576 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -620,6 +620,7 @@ Major/minor modes can set this variable if they know which option applies.")
620 ;; We use this to preserve or protect things when modifying text properties. 620 ;; We use this to preserve or protect things when modifying text properties.
621 (defmacro save-buffer-state (varlist &rest body) 621 (defmacro save-buffer-state (varlist &rest body)
622 "Bind variables according to VARLIST and eval BODY restoring buffer state." 622 "Bind variables according to VARLIST and eval BODY restoring buffer state."
623 (declare (indent 1) (debug let))
623 (let ((modified (make-symbol "modified"))) 624 (let ((modified (make-symbol "modified")))
624 `(let* ,(append varlist 625 `(let* ,(append varlist
625 `((,modified (buffer-modified-p)) 626 `((,modified (buffer-modified-p))
@@ -634,8 +635,6 @@ Major/minor modes can set this variable if they know which option applies.")
634 ,@body) 635 ,@body)
635 (unless ,modified 636 (unless ,modified
636 (restore-buffer-modified-p nil))))) 637 (restore-buffer-modified-p nil)))))
637 (put 'save-buffer-state 'lisp-indent-function 1)
638 (def-edebug-spec save-buffer-state let)
639 ;; 638 ;;
640 ;; Shut up the byte compiler. 639 ;; Shut up the byte compiler.
641 (defvar font-lock-face-attributes)) ; Obsolete but respected if set. 640 (defvar font-lock-face-attributes)) ; Obsolete but respected if set.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index a1128f214cb..1f305f3adeb 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,18 @@
12005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify.
4 (gnus-nocem-check-article): Fetch the Type header.
5 (gnus-nocem-message-wanted-p): Fix the way to examine types.
6 (gnus-nocem-verify-issuer): Use functionp instead of fboundp.
7 (gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized.
8
9 * pgg.el (pgg-verify): Return the verification result.
10
112005-06-24 Juanma Barranquero <lekktu@gmail.com>
12
13 * gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not
14 `show-nonbreak-escape'.
15
12005-06-23 Lute Kamstra <lute@gnu.org> 162005-06-23 Lute Kamstra <lute@gnu.org>
2 17
3 * gnus-art.el (gnus-article-mode): Use kill-all-local-variables. 18 * gnus-art.el (gnus-article-mode): Use kill-all-local-variables.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 56a79951b0c..b92ce8616d5 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -3755,7 +3755,7 @@ commands:
3755 (make-local-variable 'gnus-article-charset) 3755 (make-local-variable 'gnus-article-charset)
3756 (make-local-variable 'gnus-article-ignored-charsets) 3756 (make-local-variable 'gnus-article-ignored-charsets)
3757 ;; Prevent recent Emacsen from displaying non-break space as "\ ". 3757 ;; Prevent recent Emacsen from displaying non-break space as "\ ".
3758 (set (make-local-variable 'show-nonbreak-escape) nil) 3758 (set (make-local-variable 'nobreak-char-display) nil)
3759 (gnus-set-default-directory) 3759 (gnus-set-default-directory)
3760 (buffer-disable-undo) 3760 (buffer-disable-undo)
3761 (setq buffer-read-only t) 3761 (setq buffer-read-only t)
diff --git a/lisp/gnus/gnus-nocem.el b/lisp/gnus/gnus-nocem.el
index 5a5f779b732..cd51efcf100 100644
--- a/lisp/gnus/gnus-nocem.el
+++ b/lisp/gnus/gnus-nocem.el
@@ -1,6 +1,6 @@
1;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment 1;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment
2 2
3;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004 3;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6 6
@@ -74,12 +74,13 @@ issuer registry."
74 :group 'gnus-nocem 74 :group 'gnus-nocem
75 :type 'integer) 75 :type 'integer)
76 76
77(defcustom gnus-nocem-verifyer 'mc-verify 77(defcustom gnus-nocem-verifyer 'pgg-verify
78 "*Function called to verify that the NoCeM message is valid. 78 "*Function called to verify that the NoCeM message is valid.
79One likely value is `mc-verify'. If the function in this variable 79One likely value is `pgg-verify'. If the function in this variable
80isn't bound, the message will be used unconditionally." 80isn't bound, the message will be used unconditionally."
81 :group 'gnus-nocem 81 :group 'gnus-nocem
82 :type '(radio (function-item mc-verify) 82 :type '(radio (function-item pgg-verify)
83 (function-item mc-verify)
83 (function :tag "other"))) 84 (function :tag "other")))
84 85
85(defcustom gnus-nocem-liberal-fetch nil 86(defcustom gnus-nocem-liberal-fetch nil
@@ -246,7 +247,7 @@ valid issuer, which is much faster if you are selective about the issuers."
246 ;; We get the name of the issuer. 247 ;; We get the name of the issuer.
247 (narrow-to-region b e) 248 (narrow-to-region b e)
248 (setq issuer (mail-fetch-field "issuer") 249 (setq issuer (mail-fetch-field "issuer")
249 type (mail-fetch-field "issuer")) 250 type (mail-fetch-field "type"))
250 (widen) 251 (widen)
251 (if (not (gnus-nocem-message-wanted-p issuer type)) 252 (if (not (gnus-nocem-message-wanted-p issuer type))
252 (message "invalid NoCeM issuer: %s" issuer) 253 (message "invalid NoCeM issuer: %s" issuer)
@@ -267,18 +268,20 @@ valid issuer, which is much faster if you are selective about the issuers."
267 (while (setq condition (pop conditions)) 268 (while (setq condition (pop conditions))
268 (cond 269 (cond
269 ((stringp condition) 270 ((stringp condition)
270 (setq wanted (string-match condition type))) 271 (when (string-match condition type)
272 (setq wanted t)))
271 ((and (consp condition) 273 ((and (consp condition)
272 (eq (car condition) 'not) 274 (eq (car condition) 'not)
273 (stringp (cadr condition))) 275 (stringp (cadr condition)))
274 (setq wanted (not (string-match (cadr condition) type)))) 276 (when (string-match (cadr condition) type)
277 (setq wanted nil)))
275 (t 278 (t
276 (error "Invalid NoCeM condition: %S" condition)))) 279 (error "Invalid NoCeM condition: %S" condition))))
277 wanted)))) 280 wanted))))
278 281
279(defun gnus-nocem-verify-issuer (person) 282(defun gnus-nocem-verify-issuer (person)
280 "Verify using PGP that the canceler is who she says she is." 283 "Verify using PGP that the canceler is who she says she is."
281 (if (fboundp gnus-nocem-verifyer) 284 (if (functionp gnus-nocem-verifyer)
282 (ignore-errors 285 (ignore-errors
283 (funcall gnus-nocem-verifyer)) 286 (funcall gnus-nocem-verifyer))
284 ;; If we don't have Mailcrypt, then we use the message anyway. 287 ;; If we don't have Mailcrypt, then we use the message anyway.
@@ -315,7 +318,10 @@ valid issuer, which is much faster if you are selective about the issuers."
315 (while (eq (char-after) ?\t) 318 (while (eq (char-after) ?\t)
316 (forward-line -1)) 319 (forward-line -1))
317 (setq id (buffer-substring (point) (1- (search-forward "\t")))) 320 (setq id (buffer-substring (point) (1- (search-forward "\t"))))
318 (unless (gnus-gethash id gnus-nocem-hashtb) 321 (unless (if gnus-nocem-hashtb
322 (gnus-gethash id gnus-nocem-hashtb)
323 (setq gnus-nocem-hashtb (gnus-make-hashtable))
324 nil)
319 ;; only store if not already present 325 ;; only store if not already present
320 (gnus-sethash id t gnus-nocem-hashtb) 326 (gnus-sethash id t gnus-nocem-hashtb)
321 (push id ncm)) 327 (push id ncm))
diff --git a/lisp/gnus/pgg.el b/lisp/gnus/pgg.el
index eff02a1c32a..ca351c90cd2 100644
--- a/lisp/gnus/pgg.el
+++ b/lisp/gnus/pgg.el
@@ -380,7 +380,8 @@ within the region."
380 (with-output-to-temp-buffer pgg-echo-buffer 380 (with-output-to-temp-buffer pgg-echo-buffer
381 (set-buffer standard-output) 381 (set-buffer standard-output)
382 (insert-buffer-substring (if status pgg-output-buffer 382 (insert-buffer-substring (if status pgg-output-buffer
383 pgg-errors-buffer))))))) 383 pgg-errors-buffer)))))
384 status))
384 385
385;;;###autoload 386;;;###autoload
386(defun pgg-insert-key () 387(defun pgg-insert-key ()
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 0ebdbc4b5f3..2248ece3dbd 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -877,7 +877,7 @@ Return one of the entries in index-alist or nil."
877 (if (not imenu-space-replacement) index-alist 877 (if (not imenu-space-replacement) index-alist
878 (mapcar 878 (mapcar
879 (lambda (item) 879 (lambda (item)
880 (cons (subst-char-in-string ?\ (aref imenu-space-replacement 0) 880 (cons (subst-char-in-string ?\s (aref imenu-space-replacement 0)
881 (car item)) 881 (car item))
882 (cdr item))) 882 (cdr item)))
883 index-alist)))) 883 index-alist))))
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index ca5e158349d..f282957512c 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -474,6 +474,9 @@ There should be no more than seven characters after the final `/'."
474 (delete-region (point) (point-max))) 474 (delete-region (point) (point-max)))
475 (goto-char start)) 475 (goto-char start))
476 (error 476 (error
477 ;; If the file we wanted to uncompress does not exist,
478 ;; handle that according to VISIT as `insert-file-contents'
479 ;; would, maybe signaling the same error it normally would.
477 (if (and (eq (car error-code) 'file-error) 480 (if (and (eq (car error-code) 'file-error)
478 (eq (nth 3 error-code) local-file)) 481 (eq (nth 3 error-code) local-file))
479 (if visit 482 (if visit
@@ -481,6 +484,13 @@ There should be no more than seven characters after the final `/'."
481 (signal 'file-error 484 (signal 'file-error
482 (cons "Opening input file" 485 (cons "Opening input file"
483 (nthcdr 2 error-code)))) 486 (nthcdr 2 error-code))))
487 ;; If the uncompression program can't be found,
488 ;; signal that as a non-file error
489 ;; so that find-file-noselect-1 won't handle it.
490 (if (and (eq (car error-code) 'file-error)
491 (equal (cadr error-code) "Searching for program"))
492 (error "Uncompression program `%s' not found"
493 (nth 3 error-code)))
484 (signal (car error-code) (cdr error-code)))))) 494 (signal (car error-code) (cdr error-code))))))
485 495
486 (and 496 (and
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 07e593a70c1..03740e780d5 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1857,7 +1857,7 @@ and selects that window."
1857 (string< (buffer-name elt1) (buffer-name elt2)))))) 1857 (string< (buffer-name elt1) (buffer-name elt2))))))
1858 (setq tail buffers) 1858 (setq tail buffers)
1859 (while tail 1859 (while tail
1860 (or (eq ?\ (aref (buffer-name (car tail)) 0)) 1860 (or (eq ?\s (aref (buffer-name (car tail)) 0))
1861 (setq maxlen 1861 (setq maxlen
1862 (max maxlen 1862 (max maxlen
1863 (length (buffer-name (car tail)))))) 1863 (length (buffer-name (car tail))))))
diff --git a/lisp/msb.el b/lisp/msb.el
index 0bcdad314a6..02ab487bc69 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -489,7 +489,7 @@ See the function `mouse-select-buffer' and the variable
489 "Return t if optional BUFFER is an \"invisible\" buffer. 489 "Return t if optional BUFFER is an \"invisible\" buffer.
490If the argument is left out or nil, then the current buffer is considered." 490If the argument is left out or nil, then the current buffer is considered."
491 (and (> (length (buffer-name buffer)) 0) 491 (and (> (length (buffer-name buffer)) 0)
492 (eq ?\ (aref (buffer-name buffer) 0)))) 492 (eq ?\s (aref (buffer-name buffer) 0))))
493 493
494(defun msb--strip-dir (dir) 494(defun msb--strip-dir (dir)
495 "Strip one hierarchy level from the end of DIR." 495 "Strip one hierarchy level from the end of DIR."
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 59044da6ef9..590e6ce37ba 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -502,7 +502,7 @@ Point is assumed to be just at the end of a comment."
502 (or (match-end 1) (/= (current-column) (current-indentation)))) 502 (or (match-end 1) (/= (current-column) (current-indentation))))
503 0 503 0
504 (when (or (/= (current-column) (current-indentation)) 504 (when (or (/= (current-column) (current-indentation))
505 (and (> comment-add 0) (looking-at "\\s<\\S<"))) 505 (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)")))
506 comment-column))) 506 comment-column)))
507 507
508;;;###autoload 508;;;###autoload
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index 9ef8d0fd01f..86e6a35b646 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -772,7 +772,7 @@ See `decipher-loop-no-breaks' if you do not care about word divisions."
772 (forward-char)) 772 (forward-char))
773 (or (equal decipher-char ?\ ) 773 (or (equal decipher-char ?\ )
774 (progn 774 (progn
775 (setq decipher-char ?\ ; 775 (setq decipher-char ?\s
776 decipher--loop-prev-char ?\ ) 776 decipher--loop-prev-char ?\ )
777 (funcall func))))))) 777 (funcall func)))))))
778 778
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 3f3b385c5ed..f8da248535b 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -493,25 +493,60 @@ starting the compilation process.")
493;; backward-compatibility alias 493;; backward-compatibility alias
494(put 'compilation-info-face 'face-alias 'compilation-info) 494(put 'compilation-info-face 'face-alias 'compilation-info)
495 495
496(defface compilation-error-file-name
497 '((default :inherit font-lock-warning-face)
498 (((supports :underline t)) :underline t))
499 "Face for displaying file names in compilation errors."
500 :group 'font-lock-highlighting-faces
501 :version "22.1")
502
503(defface compilation-warning-file-name
504 '((default :inherit font-lock-warning-face)
505 (((supports :underline t)) :underline t))
506 "Face for displaying file names in compilation errors."
507 :group 'font-lock-highlighting-faces
508 :version "22.1")
509
510(defface compilation-info-file-name
511 '((default :inherit compilation-info)
512 (((supports :underline t)) :underline t))
513 "Face for displaying file names in compilation errors."
514 :group 'font-lock-highlighting-faces
515 :version "22.1")
516
517(defface compilation-line-number
518 '((default :inherit font-lock-variable-name-face)
519 (((supports :underline t)) :underline t))
520 "Face for displaying file names in compilation errors."
521 :group 'font-lock-highlighting-faces
522 :version "22.1")
523
524(defface compilation-column-number
525 '((default :inherit font-lock-type-face)
526 (((supports :underline t)) :underline t))
527 "Face for displaying file names in compilation errors."
528 :group 'font-lock-highlighting-faces
529 :version "22.1")
530
496(defvar compilation-message-face nil 531(defvar compilation-message-face nil
497 "Face name to use for whole messages. 532 "Face name to use for whole messages.
498Faces `compilation-error-face', `compilation-warning-face', 533Faces `compilation-error-face', `compilation-warning-face',
499`compilation-info-face', `compilation-line-face' and 534`compilation-info-face', `compilation-line-face' and
500`compilation-column-face' get prepended to this, when applicable.") 535`compilation-column-face' get prepended to this, when applicable.")
501 536
502(defvar compilation-error-face 'font-lock-warning-face 537(defvar compilation-error-face 'compilation-error-file-name
503 "Face name to use for file name in error messages.") 538 "Face name to use for file name in error messages.")
504 539
505(defvar compilation-warning-face 'compilation-warning 540(defvar compilation-warning-face 'compilation-warning-file-name
506 "Face name to use for file name in warning messages.") 541 "Face name to use for file name in warning messages.")
507 542
508(defvar compilation-info-face 'compilation-info 543(defvar compilation-info-face 'compilation-info-file-name
509 "Face name to use for file name in informational messages.") 544 "Face name to use for file name in informational messages.")
510 545
511(defvar compilation-line-face 'font-lock-variable-name-face 546(defvar compilation-line-face 'compilation-line-number
512 "Face name to use for line number in message.") 547 "Face name to use for line number in message.")
513 548
514(defvar compilation-column-face 'font-lock-type-face 549(defvar compilation-column-face 'compilation-column-number
515 "Face name to use for column number in message.") 550 "Face name to use for column number in message.")
516 551
517;; same faces as dired uses 552;; same faces as dired uses
@@ -1342,8 +1377,9 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
1342 (force-mode-line-update) 1377 (force-mode-line-update)
1343 (if (and opoint (< opoint omax)) 1378 (if (and opoint (< opoint omax))
1344 (goto-char opoint)) 1379 (goto-char opoint))
1345 (if compilation-finish-function 1380 (with-no-warnings
1346 (funcall compilation-finish-function (current-buffer) msg)) 1381 (if compilation-finish-function
1382 (funcall compilation-finish-function (current-buffer) msg)))
1347 (let ((functions compilation-finish-functions)) 1383 (let ((functions compilation-finish-functions))
1348 (while functions 1384 (while functions
1349 (funcall (car functions) (current-buffer) msg) 1385 (funcall (car functions) (current-buffer) msg)
@@ -1501,8 +1537,9 @@ Use this command in a compilation log buffer. Sets the mark at point there."
1501 1537
1502;;;###autoload 1538;;;###autoload
1503(defun compilation-next-error-function (n &optional reset) 1539(defun compilation-next-error-function (n &optional reset)
1540 "Advance to the next error message and visit the file where the error was.
1541This is the value of `next-error-function' in Compilation buffers."
1504 (interactive "p") 1542 (interactive "p")
1505 (set-buffer (compilation-find-buffer))
1506 (when reset 1543 (when reset
1507 (setq compilation-current-error nil)) 1544 (setq compilation-current-error nil))
1508 (let* ((columns compilation-error-screen-columns) ; buffer's local value 1545 (let* ((columns compilation-error-screen-columns) ; buffer's local value
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index d95c0294c4d..052df4eedda 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1516,7 +1516,8 @@ or as help on variables `cperl-tips', `cperl-problems',
1516 (t 1516 (t
1517 '((cperl-load-font-lock-keywords 1517 '((cperl-load-font-lock-keywords
1518 cperl-load-font-lock-keywords-1 1518 cperl-load-font-lock-keywords-1
1519 cperl-load-font-lock-keywords-2))))) 1519 cperl-load-font-lock-keywords-2)
1520 nil nil ((?_ . "w"))))))
1520 (make-local-variable 'cperl-syntax-state) 1521 (make-local-variable 'cperl-syntax-state)
1521 (if cperl-use-syntax-table-text-property 1522 (if cperl-use-syntax-table-text-property
1522 (progn 1523 (progn
@@ -3840,7 +3841,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3840 (and (buffer-modified-p) 3841 (and (buffer-modified-p)
3841 (not modified) 3842 (not modified)
3842 (set-buffer-modified-p nil)) 3843 (set-buffer-modified-p nil))
3843 (set-syntax-table cperl-mode-syntax-table)) 3844 ;; I do not understand what this is doing here. It breaks font-locking
3845 ;; because it resets the syntax-table from font-lock-syntax-table to
3846 ;; cperl-mode-syntax-table.
3847 ;; (set-syntax-table cperl-mode-syntax-table)
3848 )
3844 (car err-l))) 3849 (car err-l)))
3845 3850
3846(defun cperl-backward-to-noncomment (lim) 3851(defun cperl-backward-to-noncomment (lim)
@@ -4350,7 +4355,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4350 fill-column) 4355 fill-column)
4351 (let ((c (save-excursion (beginning-of-line) 4356 (let ((c (save-excursion (beginning-of-line)
4352 (cperl-to-comment-or-eol) (point))) 4357 (cperl-to-comment-or-eol) (point)))
4353 (s (memq (following-char) '(?\ ?\t))) marker) 4358 (s (memq (following-char) '(?\s ?\t))) marker)
4354 (if (>= c (point)) 4359 (if (>= c (point))
4355 ;; Don't break line inside code: only inside comment. 4360 ;; Don't break line inside code: only inside comment.
4356 nil 4361 nil
@@ -4361,11 +4366,11 @@ indentation and initial hashes. Behaves usually outside of comment."
4361 (if (bolp) (progn (re-search-forward "#+[ \t]*") 4366 (if (bolp) (progn (re-search-forward "#+[ \t]*")
4362 (goto-char (match-end 0)))) 4367 (goto-char (match-end 0))))
4363 ;; Following space could have gone: 4368 ;; Following space could have gone:
4364 (if (or (not s) (memq (following-char) '(?\ ?\t))) nil 4369 (if (or (not s) (memq (following-char) '(?\s ?\t))) nil
4365 (insert " ") 4370 (insert " ")
4366 (backward-char 1)) 4371 (backward-char 1))
4367 ;; Previous space could have gone: 4372 ;; Previous space could have gone:
4368 (or (memq (preceding-char) '(?\ ?\t)) (insert " ")))))) 4373 (or (memq (preceding-char) '(?\s ?\t)) (insert " "))))))
4369 4374
4370(defun cperl-imenu-addback (lst &optional isback name) 4375(defun cperl-imenu-addback (lst &optional isback name)
4371 ;; We suppose that the lst is a DAG, unless the first element only 4376 ;; We suppose that the lst is a DAG, unless the first element only
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index c6e85934db4..dc7e64e6e35 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2534,16 +2534,13 @@ It is saved for when this flag is not set.")
2534 ;; This must be outside of the save-excursion 2534 ;; This must be outside of the save-excursion
2535 ;; in case the source file is our current buffer. 2535 ;; in case the source file is our current buffer.
2536 (if process-window 2536 (if process-window
2537 (save-selected-window 2537 (progn
2538 (select-window process-window) 2538 (with-selected-window process-window
2539 (gud-display-frame)) 2539 (gud-display-frame)))
2540 ;; We have to be in the proper buffer, (process-buffer proc), 2540 ;; We have to be in the proper buffer, (process-buffer proc),
2541 ;; but not in a save-excursion, because that would restore point. 2541 ;; but not in a save-excursion, because that would restore point.
2542 (let ((old-buf (current-buffer))) 2542 (with-current-buffer (process-buffer proc)
2543 (set-buffer (process-buffer proc)) 2543 (gud-display-frame))))
2544 (unwind-protect
2545 (gud-display-frame)
2546 (set-buffer old-buf)))))
2547 2544
2548 ;; If we deferred text that arrived during this processing, 2545 ;; If we deferred text that arrived during this processing,
2549 ;; handle it now. 2546 ;; handle it now.
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 3f556bdb695..70ea8b4bac6 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -949,6 +949,7 @@ See `python-check-command' for the default."
949 (if name 949 (if name
950 (file-name-nondirectory name)))))))) 950 (file-name-nondirectory name))))))))
951 (setq python-saved-check-command command) 951 (setq python-saved-check-command command)
952 (require 'compile) ;To define compilation-* variables.
952 (save-some-buffers (not compilation-ask-about-save) nil) 953 (save-some-buffers (not compilation-ask-about-save) nil)
953 (let ((compilation-error-regexp-alist 954 (let ((compilation-error-regexp-alist
954 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2) 955 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 825b035ba52..6252187724a 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -10,12 +10,12 @@
10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) 10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
11;; Vinicius Jose Latorre <viniciusjl@ig.com.br> 11;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
12;; Keywords: wp, print, PostScript 12;; Keywords: wp, print, PostScript
13;; Time-stamp: <2005/03/19 00:40:12 vinicius> 13;; Time-stamp: <2005/06/27 00:57:22 vinicius>
14;; Version: 6.6.6 14;; Version: 6.6.7
15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
16 16
17(defconst ps-print-version "6.6.6" 17(defconst ps-print-version "6.6.7"
18 "ps-print.el, v 6.6.6 <2005/03/19 vinicius> 18 "ps-print.el, v 6.6.7 <2005/06/27 vinicius>
19 19
20Vinicius's last change version -- this file may have been edited as part of 20Vinicius's last change version -- this file may have been edited as part of
21Emacs without changes to the version number. When reporting bugs, please also 21Emacs without changes to the version number. When reporting bugs, please also
@@ -5936,10 +5936,14 @@ XSTART YSTART are the relative position for the first page in a sheet.")
5936 (ps-begin-page)) 5936 (ps-begin-page))
5937 5937
5938 5938
5939(defun ps-end-sheet ()
5940 (and ps-print-page-p (> ps-page-sheet 0)
5941 (ps-output "EndSheet\n")))
5942
5943
5939(defun ps-header-sheet () 5944(defun ps-header-sheet ()
5940 ;; Print only when a new sheet begins. 5945 ;; Print only when a new sheet begins.
5941 (and ps-print-page-p (> ps-page-sheet 0) 5946 (ps-end-sheet)
5942 (ps-output "EndSheet\n"))
5943 (setq ps-page-sheet (1+ ps-page-sheet)) 5947 (setq ps-page-sheet (1+ ps-page-sheet))
5944 (when (ps-print-sheet-p) 5948 (when (ps-print-sheet-p)
5945 (setq ps-page-order (1+ ps-page-order)) 5949 (setq ps-page-order (1+ ps-page-order))
@@ -6624,8 +6628,7 @@ If FACE is not a valid face name, it is used default face."
6624 6628
6625 6629
6626(defun ps-end-job (needs-begin-file) 6630(defun ps-end-job (needs-begin-file)
6627 (let ((previous-print ps-print-page-p) 6631 (let ((ps-print-page-p t))
6628 (ps-print-page-p t))
6629 (ps-flush-output) 6632 (ps-flush-output)
6630 (save-excursion 6633 (save-excursion
6631 (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing)) 6634 (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing))
@@ -6652,8 +6655,7 @@ If FACE is not a valid face name, it is used default face."
6652 (number-to-string ps-lines-printed) " BeginPage\n") 6655 (number-to-string ps-lines-printed) " BeginPage\n")
6653 (ps-end-page))) 6656 (ps-end-page)))
6654 ;; Set end of PostScript file 6657 ;; Set end of PostScript file
6655 (and previous-print 6658 (ps-end-sheet)
6656 (ps-output "EndSheet\n"))
6657 (ps-output "\n%%Trailer\n%%Pages: " 6659 (ps-output "\n%%Trailer\n%%Pages: "
6658 (number-to-string 6660 (number-to-string
6659 (if (and needs-begin-file 6661 (if (and needs-begin-file
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 1ea3ae6ecb2..64af3b1da3f 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -28,18 +28,18 @@
28;;; Commentary: 28;;; Commentary:
29 29
30;; This package maintains a menu for visiting files that were operated 30;; This package maintains a menu for visiting files that were operated
31;; on recently. When enabled a new "Open Recent" submenu is displayed 31;; on recently. When enabled a new "Open Recent" sub menu is
32;; in the "Files" menu. The recent files list is automatically saved 32;; displayed in the "Files" menu. The recent files list is
33;; across Emacs sessions. You can customize the number of recent 33;; automatically saved across Emacs sessions. You can customize the
34;; files displayed, the location of the menu and others options (see 34;; number of recent files displayed, the location of the menu and
35;; the source code for details). 35;; others options (see the source code for details).
36 36
37;;; History: 37;;; History:
38;; 38;;
39 39
40;;; Code: 40;;; Code:
41(require 'easymenu) 41(require 'easymenu)
42(require 'wid-edit) 42(require 'tree-widget)
43(require 'timer) 43(require 'timer)
44 44
45;;; Internal data 45;;; Internal data
@@ -259,7 +259,8 @@ If `file-name-history' is not empty, do nothing."
259It is passed a filename to give a chance to transform it. 259It is passed a filename to give a chance to transform it.
260If it returns nil, the filename is left unchanged." 260If it returns nil, the filename is left unchanged."
261 :group 'recentf 261 :group 'recentf
262 :type 'function) 262 :type '(choice (const :tag "None" nil)
263 function))
263 264
264;;; Utilities 265;;; Utilities
265;; 266;;
@@ -904,30 +905,54 @@ unchanged."
904;; 905;;
905(defun recentf-cancel-dialog (&rest ignore) 906(defun recentf-cancel-dialog (&rest ignore)
906 "Cancel the current dialog. 907 "Cancel the current dialog.
907Used internally by recentf dialogs.
908IGNORE arguments." 908IGNORE arguments."
909 (interactive) 909 (interactive)
910 (kill-buffer (current-buffer)) 910 (kill-buffer (current-buffer))
911 (message "Dialog canceled")) 911 (message "Dialog canceled"))
912 912
913(defun recentf-dialog-goto-first (widget-type)
914 "Move the cursor to the first WIDGET-TYPE in current dialog.
915Go to the beginning of buffer if not found."
916 (goto-char (point-min))
917 (condition-case nil
918 (let (done)
919 (widget-move 1)
920 (while (not done)
921 (if (eq widget-type (widget-type (widget-at (point))))
922 (setq done t)
923 (widget-move 1))))
924 (goto-char (point-min))))
925
913(defvar recentf-dialog-mode-map 926(defvar recentf-dialog-mode-map
914 (let ((km (make-sparse-keymap))) 927 (let ((km (make-sparse-keymap)))
928 (set-keymap-parent km widget-keymap)
915 (define-key km "q" 'recentf-cancel-dialog) 929 (define-key km "q" 'recentf-cancel-dialog)
916 (define-key km [down-mouse-1] 'widget-button-click) 930 (define-key km [down-mouse-1] 'widget-button-click)
917 (set-keymap-parent km widget-keymap)
918 km) 931 km)
919 "Keymap used in recentf dialogs.") 932 "Keymap used in recentf dialogs.")
920 933
921(defun recentf-dialog-mode () 934(define-derived-mode recentf-dialog-mode nil "recentf-dialog"
922 "Major mode of recentf dialogs. 935 "Major mode of recentf dialogs.
923 936
924\\{recentf-dialog-mode-map}" 937\\{recentf-dialog-mode-map}"
925 (interactive) 938 :syntax-table nil
926 (kill-all-local-variables) 939 :abbrev-table nil
927 (setq major-mode 'recentf-dialog-mode) 940 (setq truncate-lines t))
928 (setq mode-name "recentf-dialog") 941
929 (use-local-map recentf-dialog-mode-map) 942(defmacro recentf-dialog (name &rest forms)
930 (run-mode-hooks 'recentf-dialog-mode-hook)) 943 "Show a dialog buffer with NAME, setup with FORMS."
944 (declare (indent 1) (debug t))
945 `(with-current-buffer (get-buffer-create ,name)
946 ;; Cleanup buffer
947 (let ((inhibit-read-only t)
948 (ol (overlay-lists)))
949 (mapc 'delete-overlay (car ol))
950 (mapc 'delete-overlay (cdr ol))
951 (erase-buffer))
952 (recentf-dialog-mode)
953 ,@forms
954 (widget-setup)
955 (switch-to-buffer (current-buffer))))
931 956
932;;; Hooks 957;;; Hooks
933;; 958;;
@@ -976,163 +1001,127 @@ That is, remove a non kept file from the recent list."
976 1001
977;;; Commands 1002;;; Commands
978;; 1003;;
979(defvar recentf-edit-selected-items nil
980 "List of files to be deleted from the recent list.
981Used internally by `recentf-edit-list'.")
982 1004
983(defun recentf-edit-list-action (widget &rest ignore) 1005;;; Edit list dialog
984 "Checkbox WIDGET action that toogles a file selection. 1006;;
985Used internally by `recentf-edit-list'. 1007(defvar recentf-edit-list nil)
1008
1009(defun recentf-edit-list-select (widget &rest ignore)
1010 "Toggle a file selection based on the checkbox WIDGET state.
986IGNORE other arguments." 1011IGNORE other arguments."
987 (let ((value (widget-get widget ':tag))) 1012 (let ((value (widget-get widget :tag))
988 ;; if value is already in the selected items 1013 (check (widget-value widget)))
989 (if (memq value recentf-edit-selected-items) 1014 (if check
990 ;; then remove it 1015 (add-to-list 'recentf-edit-list value)
991 (progn 1016 (setq recentf-edit-list (delq value recentf-edit-list)))
992 (setq recentf-edit-selected-items 1017 (message "%s %sselected" value (if check "" "un"))))
993 (delq value recentf-edit-selected-items)) 1018
994 (message "%s removed from selection" value)) 1019(defun recentf-edit-list-validate (&rest ignore)
995 ;; else add it 1020 "Process the recent list when the edit list dialog is committed.
996 (push value recentf-edit-selected-items) 1021IGNORE arguments."
997 (message "%s added to selection" value)))) 1022 (if recentf-edit-list
1023 (let ((i 0))
1024 (dolist (e recentf-edit-list)
1025 (setq recentf-list (delq e recentf-list)
1026 i (1+ i)))
1027 (kill-buffer (current-buffer))
1028 (message "%S file(s) removed from the list" i)
1029 (recentf-clear-data))
1030 (message "No file selected")))
998 1031
999(defun recentf-edit-list () 1032(defun recentf-edit-list ()
1000 "Show a dialog buffer to edit the recent list. 1033 "Show a dialog to delete selected files from the recent list."
1001That is to select files to be deleted from the recent list."
1002 (interactive) 1034 (interactive)
1003 (with-current-buffer 1035 (recentf-dialog (format "*%s - Edit list*" recentf-menu-title)
1004 (get-buffer-create (format "*%s - Edit list*" recentf-menu-title)) 1036 (set (make-local-variable 'recentf-edit-list) nil)
1005 (switch-to-buffer (current-buffer))
1006 ;; Cleanup buffer
1007 (let ((inhibit-read-only t)
1008 (ol (overlay-lists)))
1009 (erase-buffer)
1010 ;; Delete all the overlays.
1011 (mapc 'delete-overlay (car ol))
1012 (mapc 'delete-overlay (cdr ol)))
1013 (recentf-dialog-mode)
1014 (setq recentf-edit-selected-items nil)
1015 ;; Insert the dialog header
1016 (widget-insert 1037 (widget-insert
1017 "\ 1038 "Click on OK to delete selected files from the recent list.
1018Select the files to be deleted from the recent list.\n\n\ 1039Click on Cancel or type `q' to cancel.\n")
1019Click on Ok to update the list. \
1020Click on Cancel or type \"q\" to quit.\n")
1021 ;; Insert the list of files as checkboxes 1040 ;; Insert the list of files as checkboxes
1022 (dolist (item recentf-list) 1041 (dolist (item recentf-list)
1023 (widget-create 1042 (widget-create 'checkbox
1024 'checkbox 1043 :value nil ; unselected checkbox
1025 :value nil ; unselected checkbox 1044 :format "\n %[%v%] %t"
1026 :format "\n %[%v%] %t" 1045 :tag item
1027 :tag item 1046 :notify 'recentf-edit-list-select))
1028 :notify 'recentf-edit-list-action))
1029 (widget-insert "\n\n") 1047 (widget-insert "\n\n")
1030 ;; Insert the Ok button
1031 (widget-create 1048 (widget-create
1032 'push-button 1049 'push-button
1033 :notify (lambda (&rest ignore) 1050 :notify 'recentf-edit-list-validate
1034 (if recentf-edit-selected-items 1051 :help-echo "Delete selected files from the recent list"
1035 (let ((i 0)) 1052 "Ok")
1036 (kill-buffer (current-buffer))
1037 (dolist (e recentf-edit-selected-items)
1038 (setq recentf-list (delq e recentf-list)
1039 i (1+ i)))
1040 (message "%S file(s) removed from the list" i)
1041 (recentf-clear-data))
1042 (message "No file selected")))
1043 "Ok")
1044 (widget-insert " ") 1053 (widget-insert " ")
1045 ;; Insert the Cancel button
1046 (widget-create 1054 (widget-create
1047 'push-button 1055 'push-button
1048 :notify 'recentf-cancel-dialog 1056 :notify 'recentf-cancel-dialog
1049 "Cancel") 1057 "Cancel")
1050 (widget-setup) 1058 (recentf-dialog-goto-first 'checkbox)))
1051 (goto-char (point-min))))
1052 1059
1060;;; Open file dialog
1061;;
1053(defun recentf-open-files-action (widget &rest ignore) 1062(defun recentf-open-files-action (widget &rest ignore)
1054 "Button WIDGET action that open a file. 1063 "Open the file stored in WIDGET's value when notified.
1055Used internally by `recentf-open-files'.
1056IGNORE other arguments." 1064IGNORE other arguments."
1057 (kill-buffer (current-buffer)) 1065 (kill-buffer (current-buffer))
1058 (funcall recentf-menu-action (widget-value widget))) 1066 (funcall recentf-menu-action (widget-value widget)))
1059 1067
1060(defvar recentf-open-files-item-shift ""
1061 "Amount of space to shift right sub-menu items.
1062Used internally by `recentf-open-files'.")
1063
1064(defun recentf-open-files-item (menu-element) 1068(defun recentf-open-files-item (menu-element)
1065 "Insert an item widget for MENU-ELEMENT in the current dialog buffer. 1069 "Return a widget to display MENU-ELEMENT in a dialog buffer."
1066Used internally by `recentf-open-files'." 1070 (if (consp (cdr menu-element))
1067 (let ((item (car menu-element)) 1071 ;; Represent a sub-menu with a tree widget
1068 (file (cdr menu-element))) 1072 `(tree-widget
1069 (if (consp file) ; This is a sub-menu 1073 :open t
1070 (let* ((shift recentf-open-files-item-shift) 1074 :match ignore
1071 (recentf-open-files-item-shift (concat shift " "))) 1075 :node (item :tag ,(car menu-element)
1072 (widget-create 1076 :sample-face bold
1073 'item 1077 :format "%{%t%}:\n")
1074 :tag item 1078 ,@(mapcar 'recentf-open-files-item
1075 :sample-face 'bold 1079 (cdr menu-element)))
1076 :format (concat shift "%{%t%}:\n")) 1080 ;; Represent a single file with a link widget
1077 (mapc 'recentf-open-files-item file) 1081 `(link :tag ,(car menu-element)
1078 (widget-insert "\n")) 1082 :button-prefix ""
1079 (widget-create 1083 :button-suffix ""
1080 'push-button 1084 :button-face default
1081 :button-face 'default 1085 :format "%[%t%]\n"
1082 :tag item 1086 :help-echo ,(concat "Open " (cdr menu-element))
1083 :help-echo (concat "Open " file) 1087 :action recentf-open-files-action
1084 :format (concat recentf-open-files-item-shift "%[%t%]") 1088 ,(cdr menu-element))))
1085 :notify 'recentf-open-files-action
1086 file)
1087 (widget-insert "\n"))))
1088 1089
1089(defun recentf-open-files (&optional files buffer-name) 1090(defun recentf-open-files (&optional files buffer-name)
1090 "Show a dialog buffer to open a recent file. 1091 "Show a dialog to open a recent file.
1091If optional argument FILES is non-nil, it specifies the list of 1092If optional argument FILES is non-nil, it is a list of recently-opened
1092recently-opened files to choose from. It is the whole recent list 1093files to choose from. It defaults to the whole recent list.
1093otherwise. 1094If optional argument BUFFER-NAME is non-nil, it is a buffer name to
1094If optional argument BUFFER-NAME is non-nil, it specifies which buffer 1095use for the dialog. It defaults to \"*`recentf-menu-title'*\"."
1095name to use for the interaction. It is \"*`recentf-menu-title'*\" by
1096default."
1097 (interactive) 1096 (interactive)
1098 (unless files 1097 (recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title))
1099 (setq files recentf-list)) 1098 (widget-insert "Click on a file to open it.
1100 (unless buffer-name 1099Click on Cancel or type `q' to cancel.\n" )
1101 (setq buffer-name (format "*%s*" recentf-menu-title))) 1100 ;; Use a L&F that looks like the recentf menu.
1102 (with-current-buffer (get-buffer-create buffer-name) 1101 (tree-widget-set-theme "folder")
1103 (switch-to-buffer (current-buffer)) 1102 (apply 'widget-create
1104 ;; Cleanup buffer 1103 `(group
1105 (let ((inhibit-read-only t) 1104 :indent 2
1106 (ol (overlay-lists))) 1105 :format "\n%v\n"
1107 (erase-buffer) 1106 ,@(mapcar 'recentf-open-files-item
1108 ;; Delete all the overlays. 1107 (recentf-apply-menu-filter
1109 (mapc 'delete-overlay (car ol)) 1108 recentf-menu-filter
1110 (mapc 'delete-overlay (cdr ol))) 1109 (mapcar 'recentf-make-default-menu-element
1111 (recentf-dialog-mode) 1110 (or files recentf-list))))))
1112 ;; Insert the dialog header
1113 (widget-insert "Click on a file to open it. ")
1114 (widget-insert "Click on Cancel or type \"q\" to quit.\n\n" )
1115 ;; Insert the list of files as buttons
1116 (let ((recentf-open-files-item-shift ""))
1117 (mapc 'recentf-open-files-item
1118 (recentf-apply-menu-filter
1119 recentf-menu-filter
1120 (mapcar 'recentf-make-default-menu-element files))))
1121 (widget-insert "\n")
1122 ;; Insert the Cancel button
1123 (widget-create 1111 (widget-create
1124 'push-button 1112 'push-button
1125 :notify 'recentf-cancel-dialog 1113 :notify 'recentf-cancel-dialog
1126 "Cancel") 1114 "Cancel")
1127 (widget-setup) 1115 (recentf-dialog-goto-first 'link)))
1128 (goto-char (point-min))))
1129 1116
1130(defun recentf-open-more-files () 1117(defun recentf-open-more-files ()
1131 "Show a dialog buffer to open a recent file that is not in the menu." 1118 "Show a dialog to open a recent file that is not in the menu."
1132 (interactive) 1119 (interactive)
1133 (recentf-open-files (nthcdr recentf-max-menu-items recentf-list) 1120 (recentf-open-files (nthcdr recentf-max-menu-items recentf-list)
1134 (format "*%s - More*" recentf-menu-title))) 1121 (format "*%s - More*" recentf-menu-title)))
1135 1122
1123;;; Save/load/cleanup the recent list
1124;;
1136(defconst recentf-save-file-header 1125(defconst recentf-save-file-header
1137 ";;; Automatically generated by `recentf' on %s.\n" 1126 ";;; Automatically generated by `recentf' on %s.\n"
1138 "Header to be written into the `recentf-save-file'.") 1127 "Header to be written into the `recentf-save-file'.")
@@ -1149,16 +1138,16 @@ Write data into the file specified by `recentf-save-file'."
1149 (interactive) 1138 (interactive)
1150 (condition-case error 1139 (condition-case error
1151 (with-temp-buffer 1140 (with-temp-buffer
1152 (erase-buffer) 1141 (erase-buffer)
1153 (set-buffer-file-coding-system recentf-save-file-coding-system) 1142 (set-buffer-file-coding-system recentf-save-file-coding-system)
1154 (insert (format recentf-save-file-header (current-time-string))) 1143 (insert (format recentf-save-file-header (current-time-string)))
1155 (recentf-dump-variable 'recentf-list recentf-max-saved-items) 1144 (recentf-dump-variable 'recentf-list recentf-max-saved-items)
1156 (recentf-dump-variable 'recentf-filter-changer-state) 1145 (recentf-dump-variable 'recentf-filter-changer-state)
1157 (insert "\n \n;;; Local Variables:\n" 1146 (insert "\n \n;;; Local Variables:\n"
1158 (format ";;; coding: %s\n" recentf-save-file-coding-system) 1147 (format ";;; coding: %s\n" recentf-save-file-coding-system)
1159 ";;; End:\n") 1148 ";;; End:\n")
1160 (write-file (expand-file-name recentf-save-file)) 1149 (write-file (expand-file-name recentf-save-file))
1161 nil) 1150 nil)
1162 (error 1151 (error
1163 (warn "recentf mode: %s" (error-message-string error))))) 1152 (warn "recentf mode: %s" (error-message-string error)))))
1164 1153
@@ -1218,5 +1207,5 @@ that were operated on recently."
1218 1207
1219(run-hooks 'recentf-load-hook) 1208(run-hooks 'recentf-load-hook)
1220 1209
1221;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a 1210;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
1222;;; recentf.el ends here 1211;;; recentf.el ends here
diff --git a/lisp/replace.el b/lisp/replace.el
index d5ccd8723c2..0b19d72178f 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -516,21 +516,32 @@ which will run faster and will not set the mark or print anything."
516Prompt for a regexp with PROMPT. 516Prompt for a regexp with PROMPT.
517Value is a list, (REGEXP)." 517Value is a list, (REGEXP)."
518 (list (read-from-minibuffer prompt nil nil nil 518 (list (read-from-minibuffer prompt nil nil nil
519 'regexp-history nil t))) 519 'regexp-history nil t)
520 nil nil t))
520 521
521(defun keep-lines (regexp &optional rstart rend) 522(defun keep-lines (regexp &optional rstart rend interactive)
522 "Delete all lines except those containing matches for REGEXP. 523 "Delete all lines except those containing matches for REGEXP.
523A match split across lines preserves all the lines it lies in. 524A match split across lines preserves all the lines it lies in.
524Applies to all lines after point. 525When called from Lisp (and usually interactively as well, see below)
526applies to all lines starting after point.
525 527
526If REGEXP contains upper case characters (excluding those preceded by `\\'), 528If REGEXP contains upper case characters (excluding those preceded by `\\'),
527the matching is case-sensitive. 529the matching is case-sensitive.
528 530
529Second and third arg RSTART and REND specify the region to operate on. 531Second and third arg RSTART and REND specify the region to operate on.
532This command operates on (the accessible part of) all lines whose
533accessible part is entirely contained in the region determined by RSTART
534and REND. (A newline ending a line counts as part of that line.)
530 535
531Interactively, in Transient Mark mode when the mark is active, operate 536Interactively, in Transient Mark mode when the mark is active, operate
532on the contents of the region. Otherwise, operate from point to the 537on all lines whose accessible part is entirely contained in the region.
533end of the buffer." 538Otherwise, the command applies to all lines starting after point.
539When calling this function from Lisp, you can pretend that it was
540called interactively by passing a non-nil INTERACTIVE argument.
541
542This function starts looking for the next match from the end of
543the previous match. Hence, it ignores matches that overlap
544a previously found match."
534 545
535 (interactive 546 (interactive
536 (progn 547 (progn
@@ -539,10 +550,20 @@ end of the buffer."
539 (if rstart 550 (if rstart
540 (progn 551 (progn
541 (goto-char (min rstart rend)) 552 (goto-char (min rstart rend))
542 (setq rend (copy-marker (max rstart rend)))) 553 (setq rend
543 (if (and transient-mark-mode mark-active) 554 (progn
555 (save-excursion
556 (goto-char (max rstart rend))
557 (unless (or (bolp) (eobp))
558 (forward-line 0))
559 (point-marker)))))
560 (if (and interactive transient-mark-mode mark-active)
544 (setq rstart (region-beginning) 561 (setq rstart (region-beginning)
545 rend (copy-marker (region-end))) 562 rend (progn
563 (goto-char (region-end))
564 (unless (or (bolp) (eobp))
565 (forward-line 0))
566 (point-marker)))
546 (setq rstart (point) 567 (setq rstart (point)
547 rend (point-max-marker))) 568 rend (point-max-marker)))
548 (goto-char rstart)) 569 (goto-char rstart))
@@ -556,7 +577,7 @@ end of the buffer."
556 (if (not (re-search-forward regexp rend 'move)) 577 (if (not (re-search-forward regexp rend 'move))
557 (delete-region start rend) 578 (delete-region start rend)
558 (let ((end (save-excursion (goto-char (match-beginning 0)) 579 (let ((end (save-excursion (goto-char (match-beginning 0))
559 (beginning-of-line) 580 (forward-line 0)
560 (point)))) 581 (point))))
561 ;; Now end is first char preserved by the new match. 582 ;; Now end is first char preserved by the new match.
562 (if (< start end) 583 (if (< start end)
@@ -566,22 +587,34 @@ end of the buffer."
566 ;; If the match was empty, avoid matching again at same place. 587 ;; If the match was empty, avoid matching again at same place.
567 (and (< (point) rend) 588 (and (< (point) rend)
568 (= (match-beginning 0) (match-end 0)) 589 (= (match-beginning 0) (match-end 0))
569 (forward-char 1)))))) 590 (forward-char 1)))))
591 (set-marker rend nil)
592 nil)
570 593
571 594
572(defun flush-lines (regexp &optional rstart rend) 595(defun flush-lines (regexp &optional rstart rend interactive)
573 "Delete lines containing matches for REGEXP. 596 "Delete lines containing matches for REGEXP.
574If a match is split across lines, all the lines it lies in are deleted. 597When called from Lisp (and usually when called interactively as
575Applies to lines after point. 598well, see below), applies to the part of the buffer after point.
599The line point is in is deleted if and only if it contains a
600match for regexp starting after point.
576 601
577If REGEXP contains upper case characters (excluding those preceded by `\\'), 602If REGEXP contains upper case characters (excluding those preceded by `\\'),
578the matching is case-sensitive. 603the matching is case-sensitive.
579 604
580Second and third arg RSTART and REND specify the region to operate on. 605Second and third arg RSTART and REND specify the region to operate on.
606Lines partially contained in this region are deleted if and only if
607they contain a match entirely contained in it.
581 608
582Interactively, in Transient Mark mode when the mark is active, operate 609Interactively, in Transient Mark mode when the mark is active, operate
583on the contents of the region. Otherwise, operate from point to the 610on the contents of the region. Otherwise, operate from point to the
584end of the buffer." 611end of (the accessible portion of) the buffer. When calling this function
612from Lisp, you can pretend that it was called interactively by passing
613a non-nil INTERACTIVE argument.
614
615If a match is split across lines, all the lines it lies in are deleted.
616They are deleted _before_ looking for the next match. Hence, a match
617starting on the same line at which another match ended is ignored."
585 618
586 (interactive 619 (interactive
587 (progn 620 (progn
@@ -591,7 +624,7 @@ end of the buffer."
591 (progn 624 (progn
592 (goto-char (min rstart rend)) 625 (goto-char (min rstart rend))
593 (setq rend (copy-marker (max rstart rend)))) 626 (setq rend (copy-marker (max rstart rend))))
594 (if (and transient-mark-mode mark-active) 627 (if (and interactive transient-mark-mode mark-active)
595 (setq rstart (region-beginning) 628 (setq rstart (region-beginning)
596 rend (copy-marker (region-end))) 629 rend (copy-marker (region-end)))
597 (setq rstart (point) 630 (setq rstart (point)
@@ -603,13 +636,18 @@ end of the buffer."
603 (while (and (< (point) rend) 636 (while (and (< (point) rend)
604 (re-search-forward regexp rend t)) 637 (re-search-forward regexp rend t))
605 (delete-region (save-excursion (goto-char (match-beginning 0)) 638 (delete-region (save-excursion (goto-char (match-beginning 0))
606 (beginning-of-line) 639 (forward-line 0)
607 (point)) 640 (point))
608 (progn (forward-line 1) (point))))))) 641 (progn (forward-line 1) (point))))))
642 (set-marker rend nil)
643 nil)
609 644
610 645
611(defun how-many (regexp &optional rstart rend) 646(defun how-many (regexp &optional rstart rend interactive)
612 "Print number of matches for REGEXP following point. 647 "Print and return number of matches for REGEXP following point.
648When called from Lisp and INTERACTIVE is omitted or nil, just return
649the number, do not print it; if INTERACTIVE is t, the function behaves
650in all respects has if it had been called interactively.
613 651
614If REGEXP contains upper case characters (excluding those preceded by `\\'), 652If REGEXP contains upper case characters (excluding those preceded by `\\'),
615the matching is case-sensitive. 653the matching is case-sensitive.
@@ -618,18 +656,24 @@ Second and third arg RSTART and REND specify the region to operate on.
618 656
619Interactively, in Transient Mark mode when the mark is active, operate 657Interactively, in Transient Mark mode when the mark is active, operate
620on the contents of the region. Otherwise, operate from point to the 658on the contents of the region. Otherwise, operate from point to the
621end of the buffer." 659end of (the accessible portion of) the buffer.
660
661This function starts looking for the next match from the end of
662the previous match. Hence, it ignores matches that overlap
663a previously found match."
622 664
623 (interactive 665 (interactive
624 (keep-lines-read-args "How many matches for (regexp): ")) 666 (keep-lines-read-args "How many matches for (regexp): "))
625 (save-excursion 667 (save-excursion
626 (if rstart 668 (if rstart
627 (goto-char (min rstart rend)) 669 (progn
628 (if (and transient-mark-mode mark-active) 670 (goto-char (min rstart rend))
671 (setq rend (max rstart rend)))
672 (if (and interactive transient-mark-mode mark-active)
629 (setq rstart (region-beginning) 673 (setq rstart (region-beginning)
630 rend (copy-marker (region-end))) 674 rend (region-end))
631 (setq rstart (point) 675 (setq rstart (point)
632 rend (point-max-marker))) 676 rend (point-max)))
633 (goto-char rstart)) 677 (goto-char rstart))
634 (let ((count 0) 678 (let ((count 0)
635 opoint 679 opoint
@@ -641,7 +685,10 @@ end of the buffer."
641 (if (= opoint (point)) 685 (if (= opoint (point))
642 (forward-char 1) 686 (forward-char 1)
643 (setq count (1+ count)))) 687 (setq count (1+ count))))
644 (message "%d occurrences" count)))) 688 (when interactive (message "%d occurrence%s"
689 count
690 (if (= count 1) "" "s")))
691 count)))
645 692
646 693
647(defvar occur-mode-map 694(defvar occur-mode-map
@@ -892,8 +939,7 @@ buffer for each buffer where you invoke `occur'."
892 939
893(defun occur (regexp &optional nlines) 940(defun occur (regexp &optional nlines)
894 "Show all lines in the current buffer containing a match for REGEXP. 941 "Show all lines in the current buffer containing a match for REGEXP.
895 942This function can not handle matches that span more than one line.
896If a match spreads across multiple lines, all those lines are shown.
897 943
898Each line is displayed with NLINES lines before and after, or -NLINES 944Each line is displayed with NLINES lines before and after, or -NLINES
899before if NLINES is negative. 945before if NLINES is negative.
@@ -1001,9 +1047,9 @@ See also `multi-occur'."
1001 (display-buffer occur-buf) 1047 (display-buffer occur-buf)
1002 (setq next-error-last-buffer occur-buf)) 1048 (setq next-error-last-buffer occur-buf))
1003 (kill-buffer occur-buf))) 1049 (kill-buffer occur-buf)))
1004 (run-hooks 'occur-hook)) 1050 (setq buffer-read-only t)
1005 (setq buffer-read-only t) 1051 (set-buffer-modified-p nil)
1006 (set-buffer-modified-p nil)))) 1052 (run-hooks 'occur-hook)))))
1007 1053
1008(defun occur-engine-add-prefix (lines) 1054(defun occur-engine-add-prefix (lines)
1009 (mapcar 1055 (mapcar
@@ -1603,15 +1649,15 @@ make, or the user didn't cancel the call."
1603 ;; Change markers to numbers in the match data 1649 ;; Change markers to numbers in the match data
1604 ;; since lots of markers slow down editing. 1650 ;; since lots of markers slow down editing.
1605 (push (list (point) replaced 1651 (push (list (point) replaced
1606;;; If the replacement has already happened, all we need is the 1652;;; If the replacement has already happened, all we need is the
1607;;; current match start and end. We could get this with a trivial 1653;;; current match start and end. We could get this with a trivial
1608;;; match like 1654;;; match like
1609;;; (save-excursion (goto-char (match-beginning 0)) 1655;;; (save-excursion (goto-char (match-beginning 0))
1610;;; (search-forward (match-string 0)) 1656;;; (search-forward (match-string 0))
1611;;; (match-data t)) 1657;;; (match-data t))
1612;;; if we really wanted to avoid manually constructing match data. 1658;;; if we really wanted to avoid manually constructing match data.
1613;;; Adding current-buffer is necessary so that match-data calls can 1659;;; Adding current-buffer is necessary so that match-data calls can
1614;;; return markers which are appropriate for editing. 1660;;; return markers which are appropriate for editing.
1615 (if replaced 1661 (if replaced
1616 (list 1662 (list
1617 (match-beginning 0) 1663 (match-beginning 0)
diff --git a/lisp/simple.el b/lisp/simple.el
index 08e87737288..3f9b4788373 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3442,18 +3442,14 @@ Outline mode sets this."
3442 (when (and (not done) 3442 (when (and (not done)
3443 (not (integerp selective-display)) 3443 (not (integerp selective-display))
3444 (not (line-move-invisible-p (point)))) 3444 (not (line-move-invisible-p (point))))
3445 ;; We avoid vertical-motion when possible
3446 ;; because that has to fontify.
3447 (forward-line 1)
3448 ;; If there are overlays in and around
3449 ;; the text we moved over, we need to be
3450 ;; sophisticated.
3451 (unless (overlays-in (max (1- pos-before) (point-min)) 3445 (unless (overlays-in (max (1- pos-before) (point-min))
3452 (min (1+ (point)) (point-max))) 3446 (min (1+ (point)) (point-max)))
3447 ;; We avoid vertical-motion when possible
3448 ;; because that has to fontify.
3449 (forward-line 1)
3453 (setq line-done t))) 3450 (setq line-done t)))
3454 ;; Otherwise move a more sophisticated way.
3455 ;; (What's the logic behind this code?)
3456 (and (not done) (not line-done) 3451 (and (not done) (not line-done)
3452 ;; Otherwise move a more sophisticated way.
3457 (zerop (vertical-motion 1)) 3453 (zerop (vertical-motion 1))
3458 (if (not noerror) 3454 (if (not noerror)
3459 (signal 'end-of-buffer nil) 3455 (signal 'end-of-buffer nil)
@@ -3473,9 +3469,9 @@ Outline mode sets this."
3473 (when (and (not done) 3469 (when (and (not done)
3474 (not (integerp selective-display)) 3470 (not (integerp selective-display))
3475 (not (line-move-invisible-p (1- (point))))) 3471 (not (line-move-invisible-p (1- (point)))))
3476 (forward-line -1)
3477 (unless (overlays-in (max (1- (point)) (point-min)) 3472 (unless (overlays-in (max (1- (point)) (point-min))
3478 (min (1+ pos-before) (point-max))) 3473 (min (1+ pos-before) (point-max)))
3474 (forward-line -1)
3479 (setq line-done t))) 3475 (setq line-done t)))
3480 (and (not done) (not line-done) 3476 (and (not done) (not line-done)
3481 (zerop (vertical-motion -1)) 3477 (zerop (vertical-motion -1))
diff --git a/lisp/startup.el b/lisp/startup.el
index fa18b607b2d..a570581d02b 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -444,24 +444,23 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
444 ;; frame-notice-user-settings didn't (such as on a tty). 444 ;; frame-notice-user-settings didn't (such as on a tty).
445 ;; frame-set-background-mode is idempotent, so it won't 445 ;; frame-set-background-mode is idempotent, so it won't
446 ;; cause any harm if it's already been done. 446 ;; cause any harm if it's already been done.
447 (let ((frame-background-mode frame-background-mode) 447 (let ((frame (selected-frame))
448 (frame (selected-frame))
449 term) 448 term)
450 (when (and (null window-system) 449 (when (and (null window-system)
451 ;; Don't override a possibly customized value. 450 ;; Don't override default set by files in lisp/term.
452 (null frame-background-mode) 451 (null default-frame-background-mode)
453 ;; Don't override user specifications.
454 (null (frame-parameter frame 'reverse))
455 (let ((bg (frame-parameter frame 'background-color))) 452 (let ((bg (frame-parameter frame 'background-color)))
456 (or (null bg) 453 (or (null bg)
457 (member bg '(unspecified "unspecified-bg"))))) 454 (member bg '(unspecified "unspecified-bg"
455 "unspecified-fg")))))
456
458 (setq term (getenv "TERM")) 457 (setq term (getenv "TERM"))
459 ;; Some files in lisp/term do a better job with the 458 ;; Some files in lisp/term do a better job with the
460 ;; background mode, but we leave this here anyway, in 459 ;; background mode, but we leave this here anyway, in
461 ;; case they remove those files. 460 ;; case they remove those files.
462 (if (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)" 461 (if (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
463 term) 462 term)
464 (setq frame-background-mode 'light))) 463 (setq default-frame-background-mode 'light)))
465 (frame-set-background-mode (selected-frame))))) 464 (frame-set-background-mode (selected-frame)))))
466 465
467 ;; Now we know the user's default font, so add it to the menu. 466 ;; Now we know the user's default font, so add it to the menu.
diff --git a/lisp/subr.el b/lisp/subr.el
index 8bcdc42706f..8e871673bbc 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -937,7 +937,7 @@ the hook's buffer-local value rather than its default value."
937 (set hook hook-value)))))) 937 (set hook hook-value))))))
938 938
939(defun add-to-list (list-var element &optional append) 939(defun add-to-list (list-var element &optional append)
940 "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. 940 "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
941The test for presence of ELEMENT is done with `equal'. 941The test for presence of ELEMENT is done with `equal'.
942If ELEMENT is added, it is added at the beginning of the list, 942If ELEMENT is added, it is added at the beginning of the list,
943unless the optional argument APPEND is non-nil, in which case 943unless the optional argument APPEND is non-nil, in which case
@@ -959,15 +959,18 @@ other hooks, such as major mode hooks, can do the job."
959 959
960 960
961(defun add-to-ordered-list (list-var element &optional order) 961(defun add-to-ordered-list (list-var element &optional order)
962 "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. 962 "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
963The test for presence of ELEMENT is done with `eq'. 963The test for presence of ELEMENT is done with `eq'.
964 964
965The resulting list is reordered so that the elements are in the 965The resulting list is reordered so that the elements are in the
966order given by each element's numeric list order. Elements 966order given by each element's numeric list order. Elements
967without a numeric list order are placed at the end of the list. 967without a numeric list order are placed at the end of the list.
968 968
969If the third optional argument ORDER is non-nil, set the 969If the third optional argument ORDER is a number (integer or
970element's list order to the given value. 970float), set the element's list order to the given value. If
971ORDER is nil or omitted, do not change the numeric order of
972ELEMENT. If ORDER has any other value, remove the numeric order
973of ELEMENT if it has one.
971 974
972The list order for each element is stored in LIST-VAR's 975The list order for each element is stored in LIST-VAR's
973`list-order' property. 976`list-order' property.
@@ -1717,8 +1720,12 @@ See also `with-temp-buffer'."
1717(defmacro with-selected-window (window &rest body) 1720(defmacro with-selected-window (window &rest body)
1718 "Execute the forms in BODY with WINDOW as the selected window. 1721 "Execute the forms in BODY with WINDOW as the selected window.
1719The value returned is the value of the last form in BODY. 1722The value returned is the value of the last form in BODY.
1720This does not alter the buffer list ordering. 1723
1721This function saves and restores the selected window, as well as 1724This macro saves and restores the current buffer, since otherwise
1725its normal operation could potentially make a different
1726buffer current. It does not alter the buffer list ordering.
1727
1728This macro saves and restores the selected window, as well as
1722the selected window in each frame. If the previously selected 1729the selected window in each frame. If the previously selected
1723window of some frame is no longer live at the end of BODY, that 1730window of some frame is no longer live at the end of BODY, that
1724frame's selected window is left alone. If the selected window is 1731frame's selected window is left alone. If the selected window is
@@ -1734,15 +1741,16 @@ See also `with-temp-buffer'."
1734 (save-selected-window-alist 1741 (save-selected-window-alist
1735 (mapcar (lambda (frame) (list frame (frame-selected-window frame))) 1742 (mapcar (lambda (frame) (list frame (frame-selected-window frame)))
1736 (frame-list)))) 1743 (frame-list))))
1737 (unwind-protect 1744 (save-current-buffer
1738 (progn (select-window ,window 'norecord) 1745 (unwind-protect
1739 ,@body) 1746 (progn (select-window ,window 'norecord)
1740 (dolist (elt save-selected-window-alist) 1747 ,@body)
1741 (and (frame-live-p (car elt)) 1748 (dolist (elt save-selected-window-alist)
1742 (window-live-p (cadr elt)) 1749 (and (frame-live-p (car elt))
1743 (set-frame-selected-window (car elt) (cadr elt)))) 1750 (window-live-p (cadr elt))
1744 (if (window-live-p save-selected-window-window) 1751 (set-frame-selected-window (car elt) (cadr elt))))
1745 (select-window save-selected-window-window 'norecord))))) 1752 (if (window-live-p save-selected-window-window)
1753 (select-window save-selected-window-window 'norecord))))))
1746 1754
1747(defmacro with-temp-file (file &rest body) 1755(defmacro with-temp-file (file &rest body)
1748 "Create a new buffer, evaluate BODY there, and write the buffer to FILE. 1756 "Create a new buffer, evaluate BODY there, and write the buffer to FILE.
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index 7839ebba95d..a47b6787913 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -150,7 +150,7 @@ for the currently selected frame."
150 "Set background mode as appropriate for the default rxvt colors." 150 "Set background mode as appropriate for the default rxvt colors."
151 (let ((fgbg (getenv "COLORFGBG")) 151 (let ((fgbg (getenv "COLORFGBG"))
152 bg rgb) 152 bg rgb)
153 (setq frame-background-mode 'light) ; default 153 (setq default-frame-background-mode 'light)
154 (when (and fgbg 154 (when (and fgbg
155 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) 155 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
156 (setq bg (string-to-number (substring fgbg (match-beginning 1)))) 156 (setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -163,7 +163,7 @@ for the currently selected frame."
163 ;; The following line assumes that white is the 15th 163 ;; The following line assumes that white is the 15th
164 ;; color in rxvt-standard-colors. 164 ;; color in rxvt-standard-colors.
165 (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6)) 165 (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
166 (setq frame-background-mode 'dark))) 166 (setq default-frame-background-mode 'dark)))
167 (frame-set-background-mode (selected-frame)))) 167 (frame-set-background-mode (selected-frame))))
168 168
169;; Do it! 169;; Do it!
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index b55f18f6883..2a2df2564e4 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -366,7 +366,7 @@ versions of xterm."
366 "Set background mode as appropriate for the default rxvt colors." 366 "Set background mode as appropriate for the default rxvt colors."
367 (let ((fgbg (getenv "COLORFGBG")) 367 (let ((fgbg (getenv "COLORFGBG"))
368 bg rgb) 368 bg rgb)
369 (setq frame-background-mode 'light) ; default 369 (setq default-frame-background-mode 'light)
370 (when (and fgbg 370 (when (and fgbg
371 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg)) 371 (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
372 (setq bg (string-to-number (substring fgbg (match-beginning 1)))) 372 (setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -379,7 +379,7 @@ versions of xterm."
379 ;; The following line assumes that white is the 15th 379 ;; The following line assumes that white is the 15th
380 ;; color in xterm-standard-colors. 380 ;; color in xterm-standard-colors.
381 (* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6)) 381 (* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6))
382 (setq frame-background-mode 'dark))) 382 (setq default-frame-background-mode 'dark)))
383 (frame-set-background-mode (selected-frame)))) 383 (frame-set-background-mode (selected-frame))))
384 384
385;; Do it! 385;; Do it!
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 2d40d6da026..1fe3c9dcbfe 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -2875,7 +2875,7 @@ Returns a list of strings."
2875 2875
2876(defun artist-figlet-get-extra-args () 2876(defun artist-figlet-get-extra-args ()
2877 "Read any extra arguments for figlet." 2877 "Read any extra arguments for figlet."
2878 (let ((extra-args (read-input "Extra args to figlet: "))) 2878 (let ((extra-args (read-string "Extra args to figlet: ")))
2879 (if (string= extra-args "") 2879 (if (string= extra-args "")
2880 nil 2880 nil
2881 extra-args))) 2881 extra-args)))
@@ -2916,7 +2916,7 @@ This is done by calling the function specified by `artist-text-renderer',
2916which must return a list of strings, to be inserted in the buffer. 2916which must return a list of strings, to be inserted in the buffer.
2917 2917
2918Text already in the buffer ``shines thru'' blanks in the rendered text." 2918Text already in the buffer ``shines thru'' blanks in the rendered text."
2919 (let* ((input-text (read-input "Type text to render: ")) 2919 (let* ((input-text (read-string "Type text to render: "))
2920 (rendered-text (artist-funcall artist-text-renderer input-text))) 2920 (rendered-text (artist-funcall artist-text-renderer input-text)))
2921 (artist-text-insert-see-thru x y rendered-text))) 2921 (artist-text-insert-see-thru x y rendered-text)))
2922 2922
@@ -2927,7 +2927,7 @@ This is done by calling the function specified by `artist-text-renderer',
2927which must return a list of strings, to be inserted in the buffer. 2927which must return a list of strings, to be inserted in the buffer.
2928 2928
2929Blanks in the rendered text overwrites any text in the buffer." 2929Blanks in the rendered text overwrites any text in the buffer."
2930 (let* ((input-text (read-input "Type text to render: ")) 2930 (let* ((input-text (read-string "Type text to render: "))
2931 (rendered-text (artist-funcall artist-text-renderer input-text))) 2931 (rendered-text (artist-funcall artist-text-renderer input-text)))
2932 (artist-text-insert-overwrite x y rendered-text))) 2932 (artist-text-insert-overwrite x y rendered-text)))
2933 2933
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 8c2d0937a5a..fc74fc67041 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -66,10 +66,6 @@
66 'emacs)) 66 'emacs))
67 "The type of Emacs we are currently running.") 67 "The type of Emacs we are currently running.")
68 68
69(defvar flyspell-use-local-map
70 (or (eq flyspell-emacs 'xemacs)
71 (not (string< emacs-version "20"))))
72
73;*---------------------------------------------------------------------*/ 69;*---------------------------------------------------------------------*/
74;* User configuration ... */ 70;* User configuration ... */
75;*---------------------------------------------------------------------*/ 71;*---------------------------------------------------------------------*/
@@ -403,34 +399,22 @@ property of the major mode name.")
403;*---------------------------------------------------------------------*/ 399;*---------------------------------------------------------------------*/
404;* The minor mode declaration. */ 400;* The minor mode declaration. */
405;*---------------------------------------------------------------------*/ 401;*---------------------------------------------------------------------*/
406(eval-when-compile (defvar flyspell-local-mouse-map))
407
408(defvar flyspell-mouse-map 402(defvar flyspell-mouse-map
409 (let ((map (make-sparse-keymap))) 403 (let ((map (make-sparse-keymap)))
410 (if flyspell-use-meta-tab
411 (define-key map "\M-\t" #'flyspell-auto-correct-word))
412 (define-key map (if (featurep 'xemacs) [button2] [down-mouse-2]) 404 (define-key map (if (featurep 'xemacs) [button2] [down-mouse-2])
413 #'flyspell-correct-word) 405 #'flyspell-correct-word)
414 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) 406 map)
415 (define-key map [(control \,)] 'flyspell-goto-next-error) 407 "Keymap for Flyspell to put on erroneous words.")
416 (define-key map [(control \.)] 'flyspell-auto-correct-word)
417 map))
418 408
419(defvar flyspell-mode-map 409(defvar flyspell-mode-map
420 (let ((map (make-sparse-keymap))) 410 (let ((map (make-sparse-keymap)))
421 ;; mouse, keyboard bindings and misc definition
422 (if flyspell-use-meta-tab 411 (if flyspell-use-meta-tab
423 (define-key map "\M-\t" 'flyspell-auto-correct-word)) 412 (define-key map "\M-\t" 'flyspell-auto-correct-word))
424 (cond 413 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
425 ;; I don't understand this test, so I left it as is. --Stef 414 (define-key map [(control ?\,)] 'flyspell-goto-next-error)
426 ((or (featurep 'xemacs) flyspell-use-local-map) 415 (define-key map [(control ?\.)] 'flyspell-auto-correct-word)
427 (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word) 416 map)
428 (define-key map [(control ?\,)] 'flyspell-goto-next-error) 417 "Minor mode keymap for Flyspell mode--for the whole buffer.")
429 (define-key map [(control ?\.)] 'flyspell-auto-correct-word)))
430 map))
431
432;; the name of the overlay property that defines the keymap
433(defvar flyspell-overlay-keymap-property-name 'keymap)
434 418
435;; dash character machinery 419;; dash character machinery
436(defvar flyspell-consider-dash-as-word-delimiter-flag nil 420(defvar flyspell-consider-dash-as-word-delimiter-flag nil
@@ -569,22 +553,6 @@ in your .emacs file.
569 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate))) 553 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
570 (if mode-predicate 554 (if mode-predicate
571 (setq flyspell-generic-check-word-p mode-predicate))) 555 (setq flyspell-generic-check-word-p mode-predicate)))
572 ;; work around the fact that the `local-map' text-property replaces the
573 ;; buffer's local map rather than shadowing it.
574 (set (make-local-variable 'flyspell-mouse-map)
575 (let ((map (copy-keymap flyspell-mouse-map)))
576 (set-keymap-parent map (current-local-map))
577 (if (and (eq flyspell-emacs 'emacs)
578 (not (string< emacs-version "20")))
579 (define-key map '[tool-bar] nil))
580 map))
581 (set (make-local-variable 'flyspell-mode-map)
582 (let ((map (copy-keymap flyspell-mode-map)))
583 (set-keymap-parent map (current-local-map))
584 (if (and (eq flyspell-emacs 'emacs)
585 (not (string< emacs-version "20")))
586 (define-key map '[tool-bar] nil))
587 map))
588 ;; the welcome message 556 ;; the welcome message
589 (if (and flyspell-issue-message-flag 557 (if (and flyspell-issue-message-flag
590 flyspell-issue-welcome-flag 558 flyspell-issue-welcome-flag
@@ -1570,10 +1538,7 @@ for the overlay."
1570 (overlay-put flyspell-overlay 'flyspell-overlay t) 1538 (overlay-put flyspell-overlay 'flyspell-overlay t)
1571 (overlay-put flyspell-overlay 'evaporate t) 1539 (overlay-put flyspell-overlay 'evaporate t)
1572 (overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point") 1540 (overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point")
1573 (if flyspell-use-local-map 1541 (overlay-put flyspell-overlay 'keymap flyspell-mouse-map)
1574 (overlay-put flyspell-overlay
1575 flyspell-overlay-keymap-property-name
1576 flyspell-mouse-map))
1577 (when (eq face 'flyspell-incorrect) 1542 (when (eq face 'flyspell-incorrect)
1578 (and (stringp flyspell-before-incorrect-word-string) 1543 (and (stringp flyspell-before-incorrect-word-string)
1579 (overlay-put flyspell-overlay 'before-string 1544 (overlay-put flyspell-overlay 'before-string
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 67af240f522..eda2872df68 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1438,80 +1438,79 @@ quit spell session exited."
1438 end (car (cdr (cdr word))) 1438 end (car (cdr (cdr word)))
1439 word (car word)) 1439 word (car word))
1440 1440
1441 ;; now check spelling of word if it has 3 or more characters. 1441 ;; At this point it used to ignore 2-letter words.
1442 (cond 1442 ;; But that is silly; if the user asks for it, we should do it. - rms.
1443 ((> (length word) 2) 1443 (or quietly
1444 (or quietly 1444 (message "Checking spelling of %s..."
1445 (message "Checking spelling of %s..." 1445 (funcall ispell-format-word word)))
1446 (funcall ispell-format-word word))) 1446 (ispell-send-string "%\n") ; put in verbose mode
1447 (ispell-send-string "%\n") ; put in verbose mode 1447 (ispell-send-string (concat "^" word "\n"))
1448 (ispell-send-string (concat "^" word "\n")) 1448 ;; wait until ispell has processed word
1449 ;; wait until ispell has processed word 1449 (while (progn
1450 (while (progn 1450 (ispell-accept-output)
1451 (ispell-accept-output) 1451 (not (string= "" (car ispell-filter)))))
1452 (not (string= "" (car ispell-filter))))) 1452 ;;(ispell-send-string "!\n") ;back to terse mode.
1453 ;;(ispell-send-string "!\n") ;back to terse mode. 1453 (setq ispell-filter (cdr ispell-filter)) ; remove extra \n
1454 (setq ispell-filter (cdr ispell-filter)) ; remove extra \n 1454 (if (and ispell-filter (listp ispell-filter))
1455 (if (and ispell-filter (listp ispell-filter)) 1455 (if (> (length ispell-filter) 1)
1456 (if (> (length ispell-filter) 1) 1456 (error "Ispell and its process have different character maps")
1457 (error "Ispell and its process have different character maps") 1457 (setq poss (ispell-parse-output (car ispell-filter)))))
1458 (setq poss (ispell-parse-output (car ispell-filter))))) 1458 (cond ((eq poss t)
1459 (cond ((eq poss t) 1459 (or quietly
1460 (or quietly 1460 (message "%s is correct"
1461 (message "%s is correct" 1461 (funcall ispell-format-word word)))
1462 (funcall ispell-format-word word))) 1462 (and (fboundp 'extent-at)
1463 (and (fboundp 'extent-at) 1463 (extent-at start)
1464 (extent-at start) 1464 (delete-extent (extent-at start))))
1465 (delete-extent (extent-at start)))) 1465 ((stringp poss)
1466 ((stringp poss) 1466 (or quietly
1467 (or quietly 1467 (message "%s is correct because of root %s"
1468 (message "%s is correct because of root %s" 1468 (funcall ispell-format-word word)
1469 (funcall ispell-format-word word) 1469 (funcall ispell-format-word poss)))
1470 (funcall ispell-format-word poss))) 1470 (and (fboundp 'extent-at)
1471 (and (fboundp 'extent-at) 1471 (extent-at start)
1472 (extent-at start) 1472 (delete-extent (extent-at start))))
1473 (delete-extent (extent-at start)))) 1473 ((null poss) (message "Error in ispell process"))
1474 ((null poss) (message "Error in ispell process")) 1474 (ispell-check-only ; called from ispell minor mode.
1475 (ispell-check-only ; called from ispell minor mode. 1475 (if (fboundp 'make-extent)
1476 (if (fboundp 'make-extent) 1476 (let ((ext (make-extent start end)))
1477 (let ((ext (make-extent start end))) 1477 (set-extent-property ext 'face ispell-highlight-face)
1478 (set-extent-property ext 'face ispell-highlight-face) 1478 (set-extent-property ext 'priority 2000))
1479 (set-extent-property ext 'priority 2000)) 1479 (beep)
1480 (beep) 1480 (message "%s is incorrect"(funcall ispell-format-word word))))
1481 (message "%s is incorrect"(funcall ispell-format-word word)))) 1481 (t ; prompt for correct word.
1482 (t ; prompt for correct word. 1482 (save-window-excursion
1483 (save-window-excursion 1483 (setq replace (ispell-command-loop
1484 (setq replace (ispell-command-loop 1484 (car (cdr (cdr poss)))
1485 (car (cdr (cdr poss))) 1485 (car (cdr (cdr (cdr poss))))
1486 (car (cdr (cdr (cdr poss)))) 1486 (car poss) start end)))
1487 (car poss) start end))) 1487 (cond ((equal 0 replace)
1488 (cond ((equal 0 replace) 1488 (ispell-add-per-file-word-list (car poss)))
1489 (ispell-add-per-file-word-list (car poss))) 1489 (replace
1490 (replace 1490 (setq new-word (if (atom replace) replace (car replace))
1491 (setq new-word (if (atom replace) replace (car replace)) 1491 cursor-location (+ (- (length word) (- end start))
1492 cursor-location (+ (- (length word) (- end start)) 1492 cursor-location))
1493 cursor-location)) 1493 (if (not (equal new-word (car poss)))
1494 (if (not (equal new-word (car poss))) 1494 (progn
1495 (progn 1495 (delete-region start end)
1496 (delete-region start end) 1496 (setq start (point))
1497 (setq start (point)) 1497 (ispell-insert-word new-word)
1498 (ispell-insert-word new-word) 1498 (setq end (point))))
1499 (setq end (point)))) 1499 (if (not (atom replace)) ;recheck spelling of replacement
1500 (if (not (atom replace)) ;recheck spelling of replacement 1500 (progn
1501 (progn 1501 (if (car (cdr replace)) ; query replace requested
1502 (if (car (cdr replace)) ; query replace requested 1502 (save-window-excursion
1503 (save-window-excursion 1503 (query-replace word new-word t)))
1504 (query-replace word new-word t))) 1504 (goto-char start)
1505 (goto-char start) 1505 ;; single word could be split into multiple words
1506 ;; single word could be split into multiple words 1506 (setq ispell-quit (not (ispell-region start end)))
1507 (setq ispell-quit (not (ispell-region start end))) 1507 ))))
1508 )))) 1508 ;; keep if rechecking word and we keep choices win.
1509 ;; keep if rechecking word and we keep choices win. 1509 (if (get-buffer ispell-choices-buffer)
1510 (if (get-buffer ispell-choices-buffer) 1510 (kill-buffer ispell-choices-buffer))))
1511 (kill-buffer ispell-choices-buffer)))) 1511 (ispell-pdict-save ispell-silently-savep)
1512 (ispell-pdict-save ispell-silently-savep) 1512 ;; NB: Cancels ispell-quit incorrectly if called from ispell-region
1513 ;; NB: Cancels ispell-quit incorrectly if called from ispell-region 1513 (if ispell-quit (setq ispell-quit nil replace 'quit))
1514 (if ispell-quit (setq ispell-quit nil replace 'quit))))
1515 (goto-char cursor-location) ; return to original location 1514 (goto-char cursor-location) ; return to original location
1516 replace))) 1515 replace)))
1517 1516
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 635bb6b5a98..9db111ea7a9 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -1,11 +1,11 @@
1;;; org.el --- Outline-based notes management and organizer 1;; org.el --- Outline-based notes management and organizer
2;; Carstens outline-mode for keeping track of everything. 2;; Carstens outline-mode for keeping track of everything.
3;; Copyright (c) 2004, 2005 Free Software Foundation 3;; Copyright (c) 2004, 2005 Free Software Foundation
4;; 4;;
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar 6;; Keywords: outlines, hypermedia, calendar
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 3.11 8;; Version: 3.12
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -80,10 +80,20 @@
80;; 80;;
81;; Changes: 81;; Changes:
82;; ------- 82;; -------
83;; Version 3.12
84;; - Tables can store formulas (one per column) and compute fields.
85;; Not quite like a full spreadsheet, but very powerful.
86;; - table.el keybinding is now `C-c ~'.
87;; - Numeric argument to org-cycle does `show-subtree' above on level ARG.
88;; - Small changes to keys in agenda buffer. Affected keys:
89;; [w] weekly view; [d] daily view; [D] toggle diary inclusion.
90;; - Bug fixes.
91;;
83;; Version 3.11 92;; Version 3.11
84;; - Links inserted with C-c C-l are now by default enclosed in angle 93;; - Links inserted with C-c C-l are now by default enclosed in angle
85;; brackets. See the new variable `org-link-format'. 94;; brackets. See the new variable `org-link-format'.
86;; - ">" terminates a link, this is a way to have several links in a line. 95;; - ">" terminates a link, this is a way to have several links in a line.
96;; Both "<" and ">" are no longer allowed as characters in a link.
87;; - Archiving of finished tasks. 97;; - Archiving of finished tasks.
88;; - C-<up>/<down> bindings removed, to allow access to paragraph commands. 98;; - C-<up>/<down> bindings removed, to allow access to paragraph commands.
89;; - Compatibility with CUA-mode (see variable `org-CUA-compatible'). 99;; - Compatibility with CUA-mode (see variable `org-CUA-compatible').
@@ -168,7 +178,7 @@
168 178
169;;; Customization variables 179;;; Customization variables
170 180
171(defvar org-version "3.11" 181(defvar org-version "3.12"
172 "The version number of the file org.el.") 182 "The version number of the file org.el.")
173(defun org-version () 183(defun org-version ()
174 (interactive) 184 (interactive)
@@ -445,7 +455,7 @@ is used instead.")
445 (goto-char (point-min)) 455 (goto-char (point-min))
446 (while (re-search-forward re nil t) 456 (while (re-search-forward re nil t)
447 (setq key (match-string 1) value (match-string 2)) 457 (setq key (match-string 1) value (match-string 2))
448 (cond 458 (cond
449 ((equal key "CATEGORY") 459 ((equal key "CATEGORY")
450 (if (string-match "[ \t]+$" value) 460 (if (string-match "[ \t]+$" value)
451 (setq value (replace-match "" t t value))) 461 (setq value (replace-match "" t t value)))
@@ -485,7 +495,7 @@ is used instead.")
485 org-todo-kwd-max-priority (1- (length org-todo-keywords)) 495 org-todo-kwd-max-priority (1- (length org-todo-keywords))
486 org-ds-keyword-length (+ 2 (max (length org-deadline-string) 496 org-ds-keyword-length (+ 2 (max (length org-deadline-string)
487 (length org-scheduled-string))) 497 (length org-scheduled-string)))
488 org-done-string 498 org-done-string
489 (nth (1- (length org-todo-keywords)) org-todo-keywords) 499 (nth (1- (length org-todo-keywords)) org-todo-keywords)
490 org-todo-regexp 500 org-todo-regexp
491 (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords 501 (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords
@@ -565,7 +575,7 @@ When nil, cursor will remain in the current window."
565 575
566(defcustom org-select-agenda-window t 576(defcustom org-select-agenda-window t
567 "Non-nil means, after creating an agenda, move cursor into Agenda window. 577 "Non-nil means, after creating an agenda, move cursor into Agenda window.
568When nil, cursor will remain in the current window." 578When nil, cursor will remain in the current window."
569 :group 'org-agenda 579 :group 'org-agenda
570 :type 'boolean) 580 :type 'boolean)
571 581
@@ -601,7 +611,7 @@ When nil, always start on the current day."
601When nil, date-less entries will only be shown if `org-agenda' is called 611When nil, date-less entries will only be shown if `org-agenda' is called
602with a prefix argument. 612with a prefix argument.
603When non-nil, the TODO entries will be listed at the top of the agenda, before 613When non-nil, the TODO entries will be listed at the top of the agenda, before
604the entries for specific days." 614the entries for specific days."
605 :group 'org-agenda 615 :group 'org-agenda
606 :type 'boolean) 616 :type 'boolean)
607 617
@@ -646,7 +656,7 @@ priority.
646Leaving out `category-keep' would mean that items will be sorted across 656Leaving out `category-keep' would mean that items will be sorted across
647categories by priority." 657categories by priority."
648 :group 'org-agenda 658 :group 'org-agenda
649 :type '(repeat 659 :type '(repeat
650 (choice 660 (choice
651 (const time-up) 661 (const time-up)
652 (const time-down) 662 (const time-down)
@@ -722,7 +732,7 @@ the variable `org-agenda-time-grid'."
722 :group 'org-agenda 732 :group 'org-agenda
723 :type 'boolean) 733 :type 'boolean)
724 734
725(defcustom org-agenda-time-grid 735(defcustom org-agenda-time-grid
726 '((daily today require-timed) 736 '((daily today require-timed)
727 "----------------" 737 "----------------"
728 (800 1000 1200 1400 1600 1800 2000)) 738 (800 1000 1200 1400 1600 1800 2000))
@@ -741,7 +751,7 @@ The second item is a string which will be places behing the grid time.
741The third item is a list of integers, indicating the times that should have 751The third item is a list of integers, indicating the times that should have
742a grid line." 752a grid line."
743 :group 'org-agenda 753 :group 'org-agenda
744 :type 754 :type
745 '(list 755 '(list
746 (set :greedy t :tag "Grid Display Options" 756 (set :greedy t :tag "Grid Display Options"
747 (const :tag "Show grid in single day agenda display" daily) 757 (const :tag "Show grid in single day agenda display" daily)
@@ -835,7 +845,7 @@ unnecessary clutter."
835 845
836(defcustom org-archive-location "%s_archive::" 846(defcustom org-archive-location "%s_archive::"
837 "The location where subtrees should be archived. 847 "The location where subtrees should be archived.
838This string consists of two parts, separated by a double-colon. 848This string consists of two parts, separated by a double-colon.
839 849
840The first part is a file name - when omitted, archiving happens in the same 850The first part is a file name - when omitted, archiving happens in the same
841file. %s will be replaced by the current file name (without directory part). 851file. %s will be replaced by the current file name (without directory part).
@@ -864,7 +874,7 @@ Here are a few examples:
864 874
865You may set this option on a per-file basis by adding to the buffer a 875You may set this option on a per-file basis by adding to the buffer a
866line like 876line like
867 877
868#+ARCHIVE: basement::** Finished Tasks" 878#+ARCHIVE: basement::** Finished Tasks"
869 :group 'org-structure 879 :group 'org-structure
870 :type 'string) 880 :type 'string)
@@ -1201,9 +1211,70 @@ line will be formatted with <th> tags."
1201 :group 'org-table 1211 :group 'org-table
1202 :type 'boolean) 1212 :type 'boolean)
1203 1213
1214
1215(defgroup org-table-calculation nil
1216 "Options concerning tables in Org-mode."
1217 :tag "Org Table Calculation"
1218 :group 'org)
1219
1204(defcustom org-table-copy-increment t 1220(defcustom org-table-copy-increment t
1205 "Non-nil means, increment when copying current field with \\[org-table-copy-down]." 1221 "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
1206 :group 'org-table 1222 :group 'org-table-calculation
1223 :type 'boolean)
1224
1225(defcustom org-calc-default-modes
1226 '(calc-internal-prec 12
1227 calc-float-format (float 5)
1228 calc-angle-mode deg
1229 calc-prefer-frac nil
1230 calc-symbolic-mode nil)
1231 "List with Calc mode settings for use in calc-eval for table formulas.
1232The list must contain alternating symbols (calc modes variables and values.
1233Don't remove any of the default settings, just change the values. Org-mode
1234relies on the variables to be present in the list."
1235 :group 'org-table-calculation
1236 :type 'plist)
1237
1238(defcustom org-table-formula-evaluate-inline t
1239 "Non-nil means, TAB and RET evaluate a formula in current table field.
1240If the current field starts with an equal sign, it is assumed to be a formula
1241which should be evaluated as described in the manual and in the documentation
1242string of the command `org-table-eval-formula'. This feature requires the
1243Emacs calc package.
1244When this variable is nil, formula calculation is only available through
1245the command \\[org-table-eval-formula]."
1246 :group 'org-table-calculation
1247 :type 'boolean)
1248
1249
1250(defcustom org-table-formula-use-constants t
1251 "Non-nil means, interpret constants in formulas in tables.
1252A constant looks like `$c' or `$Grav' and will be replaced before evaluation
1253by the value given in `org-table-formula-constants', or by a value obtained
1254from the `constants.el' package."
1255 :group 'org-table-calculation
1256 :type 'boolean)
1257
1258(defcustom org-table-formula-constants nil
1259 "Alist with constant names and values, for use in table formulas.
1260The car of each element is a name of a constant, without the `$' before it.
1261The cdr is the value as a string. For example, if you'd like to use the
1262speed of light in a formula, you would configure
1263
1264 (setq org-table-formula-constants '((\"c\" . \"299792458.\")))
1265
1266and then use it in an equation like `$1*$c'."
1267 :group 'org-table-calculation
1268 :type '(repeat
1269 (cons (string :tag "name")
1270 (string :tag "value"))))
1271
1272(defcustom org-table-formula-numbers-only nil
1273 "Non-nil means, calculate only with numbers in table formulas.
1274Then all input fields will be converted to a number, and the result
1275must also be a number. When nil, calc's full potential is available
1276in table calculations, including symbolics etc."
1277 :group 'org-table-calculation
1207 :type 'boolean) 1278 :type 'boolean)
1208 1279
1209(defcustom org-table-tab-recognizes-table.el t 1280(defcustom org-table-tab-recognizes-table.el t
@@ -1432,7 +1503,6 @@ Otherwise, the buffer will just be saved to a file and stay hidden."
1432 :group 'org-export 1503 :group 'org-export
1433 :type 'boolean) 1504 :type 'boolean)
1434 1505
1435
1436(defgroup org-faces nil 1506(defgroup org-faces nil
1437 "Faces for highlighting in Org-mode." 1507 "Faces for highlighting in Org-mode."
1438 :tag "Org Faces" 1508 :tag "Org Faces"
@@ -1556,7 +1626,16 @@ When this is non-nil, the headline after the keyword is set to the
1556 "Face for items scheduled previously, and not yet done." 1626 "Face for items scheduled previously, and not yet done."
1557 :group 'org-faces) 1627 :group 'org-faces)
1558 1628
1559(defface org-link 1629(defface org-formula
1630 '((((type tty pc) (class color) (background light)) (:foreground "red"))
1631 (((type tty pc) (class color) (background dark)) (:foreground "red1"))
1632 (((class color) (background light)) (:foreground "Firebrick"))
1633 (((class color) (background dark)) (:foreground "chocolate1"))
1634 (t (:bold t :italic t)))
1635 "Face for items scheduled previously, and not yet done."
1636 :group 'org-faces)
1637
1638(defface org-link
1560 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) 1639 '((((type tty) (class color)) (:foreground "cyan" :weight bold))
1561 (((class color) (background light)) (:foreground "Purple")) 1640 (((class color) (background light)) (:foreground "Purple"))
1562 (((class color) (background dark)) (:foreground "Cyan")) 1641 (((class color) (background dark)) (:foreground "Cyan"))
@@ -1649,6 +1728,7 @@ When this is non-nil, the headline after the keyword is set to the
1649 1728
1650(defvar org-struct-menu) 1729(defvar org-struct-menu)
1651(defvar org-org-menu) 1730(defvar org-org-menu)
1731(defvar org-tbl-menu)
1652 1732
1653;; We use a before-change function to check if a table might need 1733;; We use a before-change function to check if a table might need
1654;; an update. 1734;; an update.
@@ -1656,14 +1736,13 @@ When this is non-nil, the headline after the keyword is set to the
1656 "Indicates of a table might need an update. 1736 "Indicates of a table might need an update.
1657This variable is set by `org-before-change-function'. `org-table-align' 1737This variable is set by `org-before-change-function'. `org-table-align'
1658sets it back to nil.") 1738sets it back to nil.")
1659
1660(defvar org-mode-hook nil) 1739(defvar org-mode-hook nil)
1661(defvar org-inhibit-startup nil) ; Dynamically-scoped param. 1740(defvar org-inhibit-startup nil) ; Dynamically-scoped param.
1662 1741
1663 1742
1664;;;###autoload 1743;;;###autoload
1665(define-derived-mode org-mode outline-mode "Org" 1744(define-derived-mode org-mode outline-mode "Org"
1666 "Outline-based notes management and organizer, alias 1745 "Outline-based notes management and organizer, alias
1667\"Carstens outline-mode for keeping track of everything.\" 1746\"Carstens outline-mode for keeping track of everything.\"
1668 1747
1669Org-mode develops organizational tasks around a NOTES file which 1748Org-mode develops organizational tasks around a NOTES file which
@@ -1681,6 +1760,7 @@ The following commands are available:
1681 1760
1682\\{org-mode-map}" 1761\\{org-mode-map}"
1683 (easy-menu-add org-org-menu) 1762 (easy-menu-add org-org-menu)
1763 (easy-menu-add org-tbl-menu)
1684 (org-install-agenda-files-menu) 1764 (org-install-agenda-files-menu)
1685 (setq outline-regexp "\\*+") 1765 (setq outline-regexp "\\*+")
1686 (if org-startup-truncated (setq truncate-lines t)) 1766 (if org-startup-truncated (setq truncate-lines t))
@@ -1693,11 +1773,11 @@ The following commands are available:
1693 (add-hook 'before-change-functions 'org-before-change-function nil 1773 (add-hook 'before-change-functions 'org-before-change-function nil
1694 'local) 1774 'local)
1695 ;; Paragraph regular expressions 1775 ;; Paragraph regular expressions
1696 (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$") 1776 (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$\\|\\([*\f]+\\)")
1697 (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)") 1777 (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)")
1698 ;; Inhibit auto-fill for headers, tables and fixed-width lines. 1778 ;; Inhibit auto-fill for headers, tables and fixed-width lines.
1699 (set (make-local-variable 'auto-fill-inhibit-regexp) 1779 (set (make-local-variable 'auto-fill-inhibit-regexp)
1700 (concat "\\*" 1780 (concat "\\*\\|#"
1701 (if (or org-enable-table-editor org-enable-fixed-width-editor) 1781 (if (or org-enable-table-editor org-enable-fixed-width-editor)
1702 (concat 1782 (concat
1703 "\\|[ \t]*[" 1783 "\\|[ \t]*["
@@ -1709,6 +1789,20 @@ The following commands are available:
1709 (interactive-p) 1789 (interactive-p)
1710 (= (point-min) (point-max))) 1790 (= (point-min) (point-max)))
1711 (insert " -*- mode: org -*-\n\n")) 1791 (insert " -*- mode: org -*-\n\n"))
1792
1793 ;; Get rid of Outline menus, they are not needed
1794 ;; Need to do this here because define-derived-mode sets up
1795 ;; the keymap so late.
1796 (if org-xemacs-p
1797 (progn
1798 (delete-menu-item '("Headings"))
1799 (delete-menu-item '("Show"))
1800 (delete-menu-item '("Hide"))
1801 (set-menubar-dirty-flag))
1802 (define-key org-mode-map [menu-bar headings] 'undefined)
1803 (define-key org-mode-map [menu-bar hide] 'undefined)
1804 (define-key org-mode-map [menu-bar show] 'undefined))
1805
1712 (unless org-inhibit-startup 1806 (unless org-inhibit-startup
1713 (if org-startup-with-deadline-check 1807 (if org-startup-with-deadline-check
1714 (call-interactively 'org-check-deadlines) 1808 (call-interactively 'org-check-deadlines)
@@ -1725,10 +1819,13 @@ The following commands are available:
1725 (beginning-of-line 1) 1819 (beginning-of-line 1)
1726 (looking-at "\\s-*\\(|\\|\\+-+\\)"))) 1820 (looking-at "\\s-*\\(|\\|\\+-+\\)")))
1727 1821
1822(defsubst org-current-line (&optional pos)
1823 (+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point)))))
1824
1728;;; Font-Lock stuff 1825;;; Font-Lock stuff
1729 1826
1730(defvar org-mouse-map (make-sparse-keymap)) 1827(defvar org-mouse-map (make-sparse-keymap))
1731(define-key org-mouse-map 1828(define-key org-mouse-map
1732 (if org-xemacs-p [button2] [mouse-2]) 'org-open-at-mouse) 1829 (if org-xemacs-p [button2] [mouse-2]) 'org-open-at-mouse)
1733(define-key org-mouse-map 1830(define-key org-mouse-map
1734 (if org-xemacs-p [button3] [mouse-3]) 'org-find-file-at-mouse) 1831 (if org-xemacs-p [button3] [mouse-3]) 'org-find-file-at-mouse)
@@ -1804,11 +1901,10 @@ The following commands are available:
1804 (list (concat "\\<" org-scheduled-string) '(0 'org-warning t)) 1901 (list (concat "\\<" org-scheduled-string) '(0 'org-warning t))
1805 ;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)" 1902 ;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)"
1806 ;; (3 'bold)) 1903 ;; (3 'bold))
1807 ;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)" 1904 ;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)"
1808 ;; (3 'italic)) 1905 ;; (3 'italic))
1809 ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)" 1906 ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
1810 ;; (3 'underline)) 1907 ;; (3 'underline))
1811 '("\\<FIXME\\>" (0 'org-warning t))
1812 (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") 1908 (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
1813 '(1 'org-warning t)) 1909 '(1 'org-warning t))
1814 '("^#.*" (0 'font-lock-comment-face t)) 1910 '("^#.*" (0 'font-lock-comment-face t))
@@ -1819,13 +1915,16 @@ The following commands are available:
1819 '(1 'org-done t))) 1915 '(1 'org-done t)))
1820 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" 1916 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
1821 (1 'org-table t)) 1917 (1 'org-table t))
1822 '("^[ \t]*\\(:.*\\)" (1 'org-table t))))) 1918 '("^[ \t]*\\(:.*\\)" (1 'org-table t))
1919 '("| *\\(=[^|\n]*\\)" (1 'org-formula t))
1920 '("^[ \t]*| *\\([#!$*]\\) *|" (1 'org-formula t))
1921 )))
1823 (set (make-local-variable 'org-font-lock-keywords) 1922 (set (make-local-variable 'org-font-lock-keywords)
1824 (append 1923 (append
1825 (if org-noutline-p ; FIXME: I am not sure if eval will work 1924 (if org-noutline-p ; FIXME: I am not sure if eval will work
1826 ; on XEmacs if noutline is ever ported 1925 ; on XEmacs if noutline is ever ported
1827 '((eval . (list "^\\(\\*+\\).*" 1926 '((eval . (list "^\\(\\*+\\).*"
1828 0 '(nth 1927 0 '(nth
1829 (% (- (match-end 1) (match-beginning 1) 1) 1928 (% (- (match-end 1) (match-beginning 1) 1)
1830 org-n-levels) 1929 org-n-levels)
1831 org-level-faces) 1930 org-level-faces)
@@ -1839,7 +1938,7 @@ The following commands are available:
1839 (set (make-local-variable 'font-lock-defaults) 1938 (set (make-local-variable 'font-lock-defaults)
1840 '(org-font-lock-keywords t nil nil backward-paragraph)) 1939 '(org-font-lock-keywords t nil nil backward-paragraph))
1841 (kill-local-variable 'font-lock-keywords) nil)) 1940 (kill-local-variable 'font-lock-keywords) nil))
1842 1941
1843(defun org-unfontify-region (beg end &optional maybe_loudly) 1942(defun org-unfontify-region (beg end &optional maybe_loudly)
1844 "Remove fontification and activation overlays from links." 1943 "Remove fontification and activation overlays from links."
1845 (font-lock-default-unfontify-region beg end) 1944 (font-lock-default-unfontify-region beg end)
@@ -1870,8 +1969,9 @@ The following commands are available:
1870 zoom in further. 1969 zoom in further.
1871 3. SUBTREE: Show the entire subtree, including body text. 1970 3. SUBTREE: Show the entire subtree, including body text.
1872 1971
1873- When there is a numeric prefix, go ARG levels up and do a `show-subtree', 1972- When there is a numeric prefix, go up to a heading with level ARG, do
1874 keeping cursor position. 1973 a `show-subtree' and return to the previous cursor position. If ARG
1974 is negative, go up that many levels.
1875 1975
1876- When point is not at the beginning of a headline, execute 1976- When point is not at the beginning of a headline, execute
1877 `indent-relative', like TAB normally does. See the option 1977 `indent-relative', like TAB normally does. See the option
@@ -1937,7 +2037,8 @@ The following commands are available:
1937 ;; Show-subtree, ARG levels up from here. 2037 ;; Show-subtree, ARG levels up from here.
1938 (save-excursion 2038 (save-excursion
1939 (org-back-to-heading) 2039 (org-back-to-heading)
1940 (outline-up-heading arg) 2040 (outline-up-heading (if (< arg 0) (- arg)
2041 (- (outline-level) arg)))
1941 (org-show-subtree))) 2042 (org-show-subtree)))
1942 2043
1943 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) 2044 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp))
@@ -2273,8 +2374,6 @@ in the region."
2273 (save-excursion 2374 (save-excursion
2274 (setq end (copy-marker end)) 2375 (setq end (copy-marker end))
2275 (goto-char beg) 2376 (goto-char beg)
2276 ;; (if (fboundp 'deactivate-mark) (deactivate-mark))
2277 ;; (if (fboundp 'zmacs-deactivate-region) (zmacs-deactivate-region))
2278 (if (and (re-search-forward (concat "^" outline-regexp) nil t) 2377 (if (and (re-search-forward (concat "^" outline-regexp) nil t)
2279 (< (point) end)) 2378 (< (point) end))
2280 (funcall fun)) 2379 (funcall fun))
@@ -2558,7 +2657,7 @@ heading be marked DONE, and the current time will be added."
2558 (end-of-line 0)) 2657 (end-of-line 0))
2559 ;; Make the heading visible, and the following as well 2658 ;; Make the heading visible, and the following as well
2560 (let ((org-show-following-heading t)) (org-show-hierarchy-above)) 2659 (let ((org-show-following-heading t)) (org-show-hierarchy-above))
2561 (if (re-search-forward 2660 (if (re-search-forward
2562 (concat "^" (regexp-quote (make-string level ?*)) "[ \t]") 2661 (concat "^" (regexp-quote (make-string level ?*)) "[ \t]")
2563 nil t) 2662 nil t)
2564 (progn (goto-char (match-beginning 0)) (insert "\n") 2663 (progn (goto-char (match-beginning 0)) (insert "\n")
@@ -2605,9 +2704,10 @@ At all other locations, this simply calls `ispell-complete-word'."
2605 (let* ((end (point)) 2704 (let* ((end (point))
2606 (beg (save-excursion 2705 (beg (save-excursion
2607 (if (equal (char-before (point)) ?\ ) (backward-char 1)) 2706 (if (equal (char-before (point)) ?\ ) (backward-char 1))
2608 (skip-chars-backward "a-zA-Z0-9_:") 2707 (skip-chars-backward "a-zA-Z0-9_:$")
2609 (point))) 2708 (point)))
2610 (texp (equal (char-before beg) ?\\)) 2709 (texp (equal (char-before beg) ?\\))
2710 (form (equal (char-before beg) ?=))
2611 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2)) 2711 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
2612 beg) 2712 beg)
2613 "#+")) 2713 "#+"))
@@ -2617,13 +2717,16 @@ At all other locations, this simply calls `ispell-complete-word'."
2617 (table (cond 2717 (table (cond
2618 (opt 2718 (opt
2619 (setq type :opt) 2719 (setq type :opt)
2620 (mapcar (lambda (x) 2720 (mapcar (lambda (x)
2621 (string-match "^#\\+\\(\\([A-Z_]+:?\\).*\\)" x) 2721 (string-match "^#\\+\\(\\([A-Z_]+:?\\).*\\)" x)
2622 (cons (match-string 2 x) (match-string 1 x))) 2722 (cons (match-string 2 x) (match-string 1 x)))
2623 (org-split-string (org-get-current-options) "\n"))) 2723 (org-split-string (org-get-current-options) "\n")))
2624 (texp 2724 (texp
2625 (setq type :tex) 2725 (setq type :tex)
2626 org-html-entities) 2726 org-html-entities)
2727 (form
2728 (setq type :form)
2729 '(("sum") ("sumv") ("sumh")))
2627 ((string-match "\\`\\*+[ \t]*\\'" 2730 ((string-match "\\`\\*+[ \t]*\\'"
2628 (buffer-substring (point-at-bol) beg)) 2731 (buffer-substring (point-at-bol) beg))
2629 (setq type :todo) 2732 (setq type :todo)
@@ -2631,7 +2734,7 @@ At all other locations, this simply calls `ispell-complete-word'."
2631 (t (progn (ispell-complete-word arg) (throw 'exit nil))))) 2734 (t (progn (ispell-complete-word arg) (throw 'exit nil)))))
2632 (completion (try-completion pattern table))) 2735 (completion (try-completion pattern table)))
2633 (cond ((eq completion t) 2736 (cond ((eq completion t)
2634 (if (equal type :opt) 2737 (if (equal type :opt)
2635 (insert (substring (cdr (assoc (upcase pattern) table)) 2738 (insert (substring (cdr (assoc (upcase pattern) table))
2636 (length pattern))))) 2739 (length pattern)))))
2637 ((null completion) 2740 ((null completion)
@@ -2639,7 +2742,7 @@ At all other locations, this simply calls `ispell-complete-word'."
2639 (ding)) 2742 (ding))
2640 ((not (string= pattern completion)) 2743 ((not (string= pattern completion))
2641 (delete-region beg end) 2744 (delete-region beg end)
2642 (if (string-match " +$" completion) 2745 (if (string-match " +$" completion)
2643 (setq completion (replace-match "" t t completion))) 2746 (setq completion (replace-match "" t t completion)))
2644 (insert completion) 2747 (insert completion)
2645 (if (get-buffer-window "*Completions*") 2748 (if (get-buffer-window "*Completions*")
@@ -2876,9 +2979,9 @@ ACTION can be set, up, or down."
2876 (save-match-data 2979 (save-match-data
2877 (if (not (string-match org-priority-regexp s)) 2980 (if (not (string-match org-priority-regexp s))
2878 (* 1000 (- org-lowest-priority org-default-priority)) 2981 (* 1000 (- org-lowest-priority org-default-priority))
2879 (* 1000 (- org-lowest-priority 2982 (* 1000 (- org-lowest-priority
2880 (string-to-char (match-string 2 s))))))) 2983 (string-to-char (match-string 2 s)))))))
2881 2984
2882;;; Timestamps 2985;;; Timestamps
2883 2986
2884(defvar org-last-changed-timestamp nil) 2987(defvar org-last-changed-timestamp nil)
@@ -2910,7 +3013,7 @@ at the cursor, it will be modified."
2910 (setq time (let ((this-command this-command)) 3013 (setq time (let ((this-command this-command))
2911 (org-read-date arg 'totime))) 3014 (org-read-date arg 'totime)))
2912 (and (org-at-timestamp-p) (replace-match 3015 (and (org-at-timestamp-p) (replace-match
2913 (setq org-last-changed-timestamp 3016 (setq org-last-changed-timestamp
2914 (format-time-string fmt time)) 3017 (format-time-string fmt time))
2915 t t)) 3018 t t))
2916 (message "Timestamp updated")) 3019 (message "Timestamp updated"))
@@ -2940,8 +3043,8 @@ but this can be configured with the variables `parse-time-months' and
2940 3043
2941While prompting, a calendar is popped up - you can also select the 3044While prompting, a calendar is popped up - you can also select the
2942date with the mouse (button 1). The calendar shows a period of three 3045date with the mouse (button 1). The calendar shows a period of three
2943month. To scroll it to other months, use the keys `>' and `<'. 3046month. To scroll it to other months, use the keys `>' and `<'.
2944If you don't like the calendar, turn it off with 3047If you don't like the calendar, turn it off with
2945 \(setq org-popup-calendar-for-date-prompt nil). 3048 \(setq org-popup-calendar-for-date-prompt nil).
2946 3049
2947With optional argument TO-TIME, the date will immediately be converted 3050With optional argument TO-TIME, the date will immediately be converted
@@ -2955,7 +3058,7 @@ used to insert the time stamp into the buffer to include the time."
2955 ;; Default time is either today, or, when entering a range, 3058 ;; Default time is either today, or, when entering a range,
2956 ;; the range start. 3059 ;; the range start.
2957 (if (save-excursion 3060 (if (save-excursion
2958 (re-search-backward 3061 (re-search-backward
2959 (concat org-ts-regexp "--\\=") 3062 (concat org-ts-regexp "--\\=")
2960 (- (point) 20) t)) 3063 (- (point) 20) t))
2961 (apply 3064 (apply
@@ -3066,7 +3169,7 @@ This is used by `org-read-date' in a temporary keymap for the calendar buffer."
3066 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date)))) 3169 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
3067 (setq ans1 (format-time-string "%Y-%m-%d" time))) 3170 (setq ans1 (format-time-string "%Y-%m-%d" time)))
3068 (if (active-minibuffer-window) (exit-minibuffer)))) 3171 (if (active-minibuffer-window) (exit-minibuffer))))
3069 3172
3070(defun org-check-deadlines (ndays) 3173(defun org-check-deadlines (ndays)
3071 "Check if there are any deadlines due or past due. 3174 "Check if there are any deadlines due or past due.
3072A deadline is considered due if it happens within `org-deadline-warning-days' 3175A deadline is considered due if it happens within `org-deadline-warning-days'
@@ -3358,10 +3461,10 @@ The following commands are available:
3358 (add-hook 'post-command-hook 'org-agenda-post-command-hook nil 'local) 3461 (add-hook 'post-command-hook 'org-agenda-post-command-hook nil 'local)
3359 (add-hook 'pre-command-hook 'org-unhighlight nil 'local) 3462 (add-hook 'pre-command-hook 'org-unhighlight nil 'local)
3360 (setq org-agenda-follow-mode nil) 3463 (setq org-agenda-follow-mode nil)
3361 (easy-menu-change 3464 (easy-menu-change
3362 '("Agenda") "Agenda Files" 3465 '("Agenda") "Agenda Files"
3363 (append 3466 (append
3364 (list 3467 (list
3365 ["Edit File List" (customize-variable 'org-agenda-files) t] 3468 ["Edit File List" (customize-variable 'org-agenda-files) t]
3366 "--") 3469 "--")
3367 (mapcar 'org-file-menu-entry org-agenda-files))) 3470 (mapcar 'org-file-menu-entry org-agenda-files)))
@@ -3378,7 +3481,8 @@ The following commands are available:
3378(define-key org-agenda-mode-map "l" 'org-agenda-recenter) 3481(define-key org-agenda-mode-map "l" 'org-agenda-recenter)
3379(define-key org-agenda-mode-map "t" 'org-agenda-todo) 3482(define-key org-agenda-mode-map "t" 'org-agenda-todo)
3380(define-key org-agenda-mode-map "." 'org-agenda-goto-today) 3483(define-key org-agenda-mode-map "." 'org-agenda-goto-today)
3381(define-key org-agenda-mode-map "w" 'org-agenda-toggle-week-view) 3484(define-key org-agenda-mode-map "d" 'org-agenda-day-view)
3485(define-key org-agenda-mode-map "w" 'org-agenda-week-view)
3382(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later) 3486(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later)
3383(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier) 3487(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier)
3384 3488
@@ -3388,7 +3492,7 @@ The following commands are available:
3388 (int-to-string (pop l)) 'digit-argument))) 3492 (int-to-string (pop l)) 'digit-argument)))
3389 3493
3390(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode) 3494(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode)
3391(define-key org-agenda-mode-map "d" 'org-agenda-toggle-diary) 3495(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary)
3392(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid) 3496(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
3393(define-key org-agenda-mode-map "r" 'org-agenda-redo) 3497(define-key org-agenda-mode-map "r" 'org-agenda-redo)
3394(define-key org-agenda-mode-map "q" 'org-agenda-quit) 3498(define-key org-agenda-mode-map "q" 'org-agenda-quit)
@@ -3422,7 +3526,7 @@ The following commands are available:
3422(defvar org-agenda-keymap (copy-keymap org-agenda-mode-map) 3526(defvar org-agenda-keymap (copy-keymap org-agenda-mode-map)
3423 "Local keymap for agenda entries from Org-mode.") 3527 "Local keymap for agenda entries from Org-mode.")
3424 3528
3425(define-key org-agenda-keymap 3529(define-key org-agenda-keymap
3426 (if org-xemacs-p [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse) 3530 (if org-xemacs-p [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse)
3427(define-key org-agenda-keymap 3531(define-key org-agenda-keymap
3428 (if org-xemacs-p [(button3)] [(mouse-3)]) 'org-agenda-show-mouse) 3532 (if org-xemacs-p [(button3)] [(mouse-3)]) 'org-agenda-show-mouse)
@@ -3434,7 +3538,7 @@ The following commands are available:
3434 ["Show" org-agenda-show t] 3538 ["Show" org-agenda-show t]
3435 ["Go To (other window)" org-agenda-goto t] 3539 ["Go To (other window)" org-agenda-goto t]
3436 ["Go To (one window)" org-agenda-switch-to t] 3540 ["Go To (one window)" org-agenda-switch-to t]
3437 ["Follow Mode" org-agenda-follow-mode 3541 ["Follow Mode" org-agenda-follow-mode
3438 :style toggle :selected org-agenda-follow-mode :active t] 3542 :style toggle :selected org-agenda-follow-mode :active t]
3439 "--" 3543 "--"
3440 ["Cycle TODO" org-agenda-todo t] 3544 ["Cycle TODO" org-agenda-todo t]
@@ -3454,8 +3558,11 @@ The following commands are available:
3454 ["Next Dates" org-agenda-later (local-variable-p 'starting-day)] 3558 ["Next Dates" org-agenda-later (local-variable-p 'starting-day)]
3455 ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)] 3559 ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)]
3456 "--" 3560 "--"
3457 ["Week/Day View" org-agenda-toggle-week-view 3561 ["Day View" org-agenda-day-view :active (local-variable-p 'starting-day)
3458 (local-variable-p 'starting-day)] 3562 :style radio :selected (equal org-agenda-ndays 1)]
3563 ["Week View" org-agenda-week-view :active (local-variable-p 'starting-day)
3564 :style radio :selected (equal org-agenda-ndays 7)]
3565 "--"
3459 ["Include Diary" org-agenda-toggle-diary 3566 ["Include Diary" org-agenda-toggle-diary
3460 :style toggle :selected org-agenda-include-diary :active t] 3567 :style toggle :selected org-agenda-include-diary :active t]
3461 ["Use Time Grid" org-agenda-toggle-time-grid 3568 ["Use Time Grid" org-agenda-toggle-time-grid
@@ -3552,7 +3659,7 @@ dates."
3552 (org-respect-restriction t) 3659 (org-respect-restriction t)
3553 (past t) 3660 (past t)
3554 s e rtn d) 3661 s e rtn d)
3555 (setq org-agenda-redo-command 3662 (setq org-agenda-redo-command
3556 (list 'progn 3663 (list 'progn
3557 (list 'switch-to-buffer-other-window (current-buffer)) 3664 (list 'switch-to-buffer-other-window (current-buffer))
3558 (list 'org-timeline include-all))) 3665 (list 'org-timeline include-all)))
@@ -3561,7 +3668,7 @@ dates."
3561 (setq day-numbers (delq nil (mapcar (lambda(x) 3668 (setq day-numbers (delq nil (mapcar (lambda(x)
3562 (if (>= x today) x nil)) 3669 (if (>= x today) x nil))
3563 day-numbers)))) 3670 day-numbers))))
3564 (switch-to-buffer-other-window 3671 (switch-to-buffer-other-window
3565 (get-buffer-create org-agenda-buffer-name)) 3672 (get-buffer-create org-agenda-buffer-name))
3566 (setq buffer-read-only nil) 3673 (setq buffer-read-only nil)
3567 (erase-buffer) 3674 (erase-buffer)
@@ -3576,7 +3683,7 @@ dates."
3576 (setq date (calendar-gregorian-from-absolute d)) 3683 (setq date (calendar-gregorian-from-absolute d))
3577 (setq s (point)) 3684 (setq s (point))
3578 (if dotodo 3685 (if dotodo
3579 (setq rtn (org-agenda-get-day-entries 3686 (setq rtn (org-agenda-get-day-entries
3580 entry date :todo :timestamp)) 3687 entry date :todo :timestamp))
3581 (setq rtn (org-agenda-get-day-entries entry date :timestamp))) 3688 (setq rtn (org-agenda-get-day-entries entry date :timestamp)))
3582 (if (or rtn (equal d today)) 3689 (if (or rtn (equal d today))
@@ -3632,7 +3739,7 @@ NDAYS defaults to `org-agenda-ndays'."
3632 (day-numbers (list start)) 3739 (day-numbers (list start))
3633 (inhibit-redisplay t) 3740 (inhibit-redisplay t)
3634 s e rtn rtnall file date d start-pos end-pos todayp nd) 3741 s e rtn rtnall file date d start-pos end-pos todayp nd)
3635 (setq org-agenda-redo-command 3742 (setq org-agenda-redo-command
3636 (list 'org-agenda include-all start-day ndays)) 3743 (list 'org-agenda include-all start-day ndays))
3637 ;; Make the list of days 3744 ;; Make the list of days
3638 (setq ndays (or ndays org-agenda-ndays) 3745 (setq ndays (or ndays org-agenda-ndays)
@@ -3644,7 +3751,7 @@ NDAYS defaults to `org-agenda-ndays'."
3644 (if (not (equal (current-buffer) (get-buffer org-agenda-buffer-name))) 3751 (if (not (equal (current-buffer) (get-buffer org-agenda-buffer-name)))
3645 (progn 3752 (progn
3646 (delete-other-windows) 3753 (delete-other-windows)
3647 (switch-to-buffer-other-window 3754 (switch-to-buffer-other-window
3648 (get-buffer-create org-agenda-buffer-name)))) 3755 (get-buffer-create org-agenda-buffer-name))))
3649 (setq buffer-read-only nil) 3756 (setq buffer-read-only nil)
3650 (erase-buffer) 3757 (erase-buffer)
@@ -3662,7 +3769,7 @@ NDAYS defaults to `org-agenda-ndays'."
3662 rtn (org-agenda-get-day-entries 3769 rtn (org-agenda-get-day-entries
3663 file date :todo)) 3770 file date :todo))
3664 (setq rtnall (append rtnall rtn)))) 3771 (setq rtnall (append rtnall rtn))))
3665 (when rtnall 3772 (when rtnall
3666 (insert "ALL CURRENTLY OPEN TODO ITEMS:\n") 3773 (insert "ALL CURRENTLY OPEN TODO ITEMS:\n")
3667 (add-text-properties (point-min) (1- (point)) 3774 (add-text-properties (point-min) (1- (point))
3668 (list 'face 'org-link)) 3775 (list 'face 'org-link))
@@ -3696,12 +3803,12 @@ NDAYS defaults to `org-agenda-ndays'."
3696 (extract-calendar-year date))) 3803 (extract-calendar-year date)))
3697 (put-text-property s (1- (point)) 'face 3804 (put-text-property s (1- (point)) 'face
3698 'org-link) 3805 'org-link)
3699 (if rtnall (insert 3806 (if rtnall (insert
3700 (org-finalize-agenda-entries ;; FIXME: condition needed 3807 (org-finalize-agenda-entries ;; FIXME: condition needed
3701 (org-agenda-add-time-grid-maybe 3808 (org-agenda-add-time-grid-maybe
3702 rtnall nd todayp)) 3809 rtnall nd todayp))
3703 "\n")) 3810 "\n"))
3704 (put-text-property s (1- (point)) 'day d)))) 3811 (put-text-property s (1- (point)) 'day d))))
3705 (goto-char (point-min)) 3812 (goto-char (point-min))
3706 (setq buffer-read-only t) 3813 (setq buffer-read-only t)
3707 (if org-fit-agenda-window 3814 (if org-fit-agenda-window
@@ -3784,19 +3891,29 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3784 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil) 3891 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil)
3785 (- starting-day (* arg org-agenda-ndays)))) 3892 (- starting-day (* arg org-agenda-ndays))))
3786 3893
3787(defun org-agenda-toggle-week-view () 3894(defun org-agenda-week-view ()
3788 "Toggle weekly/daily view for aagenda." 3895 "Switch to weekly view for agenda."
3896 (interactive)
3897 (unless (boundp 'starting-day)
3898 (error "Not allowed"))
3899 (setq org-agenda-ndays 7)
3900 (org-agenda include-all-loc
3901 (or (get-text-property (point) 'day)
3902 starting-day))
3903 (org-agenda-set-mode-name)
3904 (message "Switched to week view"))
3905
3906(defun org-agenda-day-view ()
3907 "Switch to weekly view for agenda."
3789 (interactive) 3908 (interactive)
3790 (unless (boundp 'starting-day) 3909 (unless (boundp 'starting-day)
3791 (error "Not allowed")) 3910 (error "Not allowed"))
3792 (setq org-agenda-ndays 3911 (setq org-agenda-ndays 1)
3793 (if (equal org-agenda-ndays 1) 7 1)) 3912 (org-agenda include-all-loc
3794 (org-agenda include-all-loc
3795 (or (get-text-property (point) 'day) 3913 (or (get-text-property (point) 'day)
3796 starting-day)) 3914 starting-day))
3797 (org-agenda-set-mode-name) 3915 (org-agenda-set-mode-name)
3798 (message "Switched to %s view" 3916 (message "Switched to day view"))
3799 (if (equal org-agenda-ndays 1) "day" "week")))
3800 3917
3801(defun org-agenda-next-date-line (&optional arg) 3918(defun org-agenda-next-date-line (&optional arg)
3802 "Jump to the next line indicating a date in agenda buffer." 3919 "Jump to the next line indicating a date in agenda buffer."
@@ -3880,7 +3997,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3880 "Get the (Emacs Calendar) diary entries for DATE." 3997 "Get the (Emacs Calendar) diary entries for DATE."
3881 (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*") 3998 (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*")
3882 (diary-display-hook '(fancy-diary-display)) 3999 (diary-display-hook '(fancy-diary-display))
3883 (list-diary-entries-hook 4000 (list-diary-entries-hook
3884 (cons 'org-diary-default-entry list-diary-entries-hook)) 4001 (cons 'org-diary-default-entry list-diary-entries-hook))
3885 entries 4002 entries
3886 (org-disable-diary t)) 4003 (org-disable-diary t))
@@ -3904,12 +4021,12 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
3904 (kill-buffer fancy-diary-buffer))) 4021 (kill-buffer fancy-diary-buffer)))
3905 (when entries 4022 (when entries
3906 (setq entries (org-split-string entries "\n")) 4023 (setq entries (org-split-string entries "\n"))
3907 (setq entries 4024 (setq entries
3908 (mapcar 4025 (mapcar
3909 (lambda (x) 4026 (lambda (x)
3910 (setq x (org-format-agenda-item "" x "Diary" 'time)) 4027 (setq x (org-format-agenda-item "" x "Diary" 'time))
3911 ;; Extend the text properties to the beginning of the line 4028 ;; Extend the text properties to the beginning of the line
3912 (add-text-properties 4029 (add-text-properties
3913 0 (length x) 4030 0 (length x)
3914 (text-properties-at (1- (length x)) x) 4031 (text-properties-at (1- (length x)) x)
3915 x) 4032 x)
@@ -3950,7 +4067,7 @@ date. Itt also removes lines that contain only whitespace."
3950 0 (length string) 4067 0 (length string)
3951 (list 'mouse-face 'highlight 4068 (list 'mouse-face 'highlight
3952 'keymap org-agenda-keymap 4069 'keymap org-agenda-keymap
3953 'help-echo 4070 'help-echo
3954 (format 4071 (format
3955 "mouse-2 or RET jump to diary file %s" 4072 "mouse-2 or RET jump to diary file %s"
3956 (abbreviate-file-name (buffer-file-name))) 4073 (abbreviate-file-name (buffer-file-name)))
@@ -3972,7 +4089,7 @@ Needed to avoid empty dates which mess up holiday display."
3972These are the files which are being checked for agenda entries. 4089These are the files which are being checked for agenda entries.
3973Optional argument FILE means, use this file instead of the current. 4090Optional argument FILE means, use this file instead of the current.
3974It is possible (but not recommended) to add this function to the 4091It is possible (but not recommended) to add this function to the
3975`org-mode-hook'." 4092`org-mode-hook'."
3976 (interactive) 4093 (interactive)
3977 (catch 'exit 4094 (catch 'exit
3978 (let* ((file (or file (buffer-file-name) 4095 (let* ((file (or file (buffer-file-name)
@@ -3987,7 +4104,7 @@ It is possible (but not recommended) to add this function to the
3987 org-agenda-files)))) 4104 org-agenda-files))))
3988 (if (not present) 4105 (if (not present)
3989 (progn 4106 (progn
3990 (setq org-agenda-files 4107 (setq org-agenda-files
3991 (cons afile org-agenda-files)) 4108 (cons afile org-agenda-files))
3992 ;; Make sure custom.el does not end up with Org-mode 4109 ;; Make sure custom.el does not end up with Org-mode
3993 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode)) 4110 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode))
@@ -4004,7 +4121,7 @@ Optional argument FILE means, use this file instead of the current."
4004 (let* ((file (or file (buffer-file-name))) 4121 (let* ((file (or file (buffer-file-name)))
4005 (true-file (file-truename file)) 4122 (true-file (file-truename file))
4006 (afile (abbreviate-file-name file)) 4123 (afile (abbreviate-file-name file))
4007 (files (delq nil (mapcar 4124 (files (delq nil (mapcar
4008 (lambda (x) 4125 (lambda (x)
4009 (if (equal true-file 4126 (if (equal true-file
4010 (file-truename x)) 4127 (file-truename x))
@@ -4051,6 +4168,7 @@ sure that TODAY is included in the list."
4051 "Return diary information from org-files. 4168 "Return diary information from org-files.
4052This function can be used in a \"sexp\" diary entry in the Emacs calendar. 4169This function can be used in a \"sexp\" diary entry in the Emacs calendar.
4053It accesses org files and extracts information from those files to be 4170It accesses org files and extracts information from those files to be
4171
4054listed in the diary. The function accepts arguments specifying what 4172listed in the diary. The function accepts arguments specifying what
4055items should be listed. The following arguments are allowed: 4173items should be listed. The following arguments are allowed:
4056 4174
@@ -4089,9 +4207,9 @@ also be written as
4089 4207
4090The function expects the lisp variables `entry' and `date' to be provided 4208The function expects the lisp variables `entry' and `date' to be provided
4091by the caller, because this is how the calendar works. Don't use this 4209by the caller, because this is how the calendar works. Don't use this
4092function from a program - use `org-agenda-get-day-entries' instead." 4210function from a program - use `org-agenda-get-day-entries' instead."
4093 (org-agenda-maybe-reset-markers) 4211 (org-agenda-maybe-reset-markers)
4094 (org-compile-agenda-prefix-format org-agenda-prefix-format) 4212 (org-compile-prefix-format org-agenda-prefix-format)
4095 (setq args (or args '(:deadline :scheduled :timestamp))) 4213 (setq args (or args '(:deadline :scheduled :timestamp)))
4096 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) 4214 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
4097 (list entry) 4215 (list entry)
@@ -4131,7 +4249,7 @@ the documentation of `org-diary'."
4131 (if (org-region-active-p) 4249 (if (org-region-active-p)
4132 ;; Respect a region to restrict search 4250 ;; Respect a region to restrict search
4133 (narrow-to-region (region-beginning) (region-end))) 4251 (narrow-to-region (region-beginning) (region-end)))
4134 ;; If we work for the calendar or many files, 4252 ;; If we work for the calendar or many files,
4135 ;; get rid of any restriction 4253 ;; get rid of any restriction
4136 (widen)) 4254 (widen))
4137 ;; The way we repeatedly append to `results' makes it O(n^2) :-( 4255 ;; The way we repeatedly append to `results' makes it O(n^2) :-(
@@ -4197,7 +4315,7 @@ the documentation of `org-diary'."
4197 (goto-char (match-beginning 1)) 4315 (goto-char (match-beginning 1))
4198 (setq marker (org-agenda-new-marker (point-at-bol)) 4316 (setq marker (org-agenda-new-marker (point-at-bol))
4199 txt (org-format-agenda-item "" (match-string 1)) 4317 txt (org-format-agenda-item "" (match-string 1))
4200 priority 4318 priority
4201 (+ (org-get-priority txt) 4319 (+ (org-get-priority txt)
4202 (if org-todo-kwd-priority-p 4320 (if org-todo-kwd-priority-p
4203 (- org-todo-kwd-max-priority -2 4321 (- org-todo-kwd-max-priority -2
@@ -4269,7 +4387,7 @@ the documentation of `org-diary'."
4269 (if deadlinep 4387 (if deadlinep
4270 (add-text-properties 4388 (add-text-properties
4271 0 (length txt) 4389 0 (length txt)
4272 (list 'face 4390 (list 'face
4273 (if donep 'org-done 'org-warning) 4391 (if donep 'org-done 'org-warning)
4274 'undone-face 'org-warning 4392 'undone-face 'org-warning
4275 'done-face 'org-done 4393 'done-face 'org-done
@@ -4329,8 +4447,8 @@ the documentation of `org-diary'."
4329 (setq txt org-agenda-no-heading-message)) 4447 (setq txt org-agenda-no-heading-message))
4330 (when txt 4448 (when txt
4331 (add-text-properties 4449 (add-text-properties
4332 0 (length txt) 4450 0 (length txt)
4333 (append 4451 (append
4334 (list 'org-marker (org-agenda-new-marker pos) 4452 (list 'org-marker (org-agenda-new-marker pos)
4335 'org-hd-marker (org-agenda-new-marker pos1) 4453 'org-hd-marker (org-agenda-new-marker pos1)
4336 'priority (+ (- 10 diff) (org-get-priority txt)) 4454 'priority (+ (- 10 diff) (org-get-priority txt))
@@ -4422,7 +4540,7 @@ the documentation of `org-diary'."
4422 (setq hdmarker (org-agenda-new-marker (match-end 1))) 4540 (setq hdmarker (org-agenda-new-marker (match-end 1)))
4423 (goto-char (match-end 1)) 4541 (goto-char (match-end 1))
4424 (looking-at "\\*+[ \t]*\\([^\r\n]+\\)") 4542 (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
4425 (setq txt (org-format-agenda-item 4543 (setq txt (org-format-agenda-item
4426 (format (if (= d1 d2) "" "(%d/%d): ") 4544 (format (if (= d1 d2) "" "(%d/%d): ")
4427 (1+ (- d0 d1)) (1+ (- d2 d1))) 4545 (1+ (- d0 d1)) (1+ (- d2 d1)))
4428 (match-string 1) nil (if (= d0 d1) timestr)))) 4546 (match-string 1) nil (if (= d0 d1) timestr))))
@@ -4504,7 +4622,7 @@ only the correctly processes TXT should be returned - this is used by
4504 (setq s0 (match-string 0 ts) 4622 (setq s0 (match-string 0 ts)
4505 s1 (match-string (if plain 1 2) ts) 4623 s1 (match-string (if plain 1 2) ts)
4506 s2 (match-string (if plain 8 4) ts)) 4624 s2 (match-string (if plain 8 4) ts))
4507 4625
4508 ;; If the times are in TXT (not in DOTIMES), and the prefix will list 4626 ;; If the times are in TXT (not in DOTIMES), and the prefix will list
4509 ;; them, we might want to remove them there to avoid duplication. 4627 ;; them, we might want to remove them there to avoid duplication.
4510 ;; The user can turn this off with a variable. 4628 ;; The user can turn this off with a variable.
@@ -4517,7 +4635,7 @@ only the correctly processes TXT should be returned - this is used by
4517 ;; Normalize the time(s) to 24 hour 4635 ;; Normalize the time(s) to 24 hour
4518 (if s1 (setq s1 (org-get-time-of-day s1 'string))) 4636 (if s1 (setq s1 (org-get-time-of-day s1 'string)))
4519 (if s2 (setq s2 (org-get-time-of-day s2 'string)))) 4637 (if s2 (setq s2 (org-get-time-of-day s2 'string))))
4520 4638
4521 ;; Create the final string 4639 ;; Create the final string
4522 (if noprefix 4640 (if noprefix
4523 (setq rtn txt) 4641 (setq rtn txt)
@@ -4529,7 +4647,7 @@ only the correctly processes TXT should be returned - this is used by
4529 category (if (symbolp category) (symbol-name category) category)) 4647 category (if (symbolp category) (symbol-name category) category))
4530 ;; Evaluate the compiled format 4648 ;; Evaluate the compiled format
4531 (setq rtn (concat (eval org-prefix-format-compiled) txt))) 4649 (setq rtn (concat (eval org-prefix-format-compiled) txt)))
4532 4650
4533 ;; And finally add the text properties 4651 ;; And finally add the text properties
4534 (add-text-properties 4652 (add-text-properties
4535 0 (length rtn) (list 'category (downcase category) 4653 0 (length rtn) (list 'category (downcase category)
@@ -4560,11 +4678,11 @@ only the correctly processes TXT should be returned - this is used by
4560 (while (setq time (pop gridtimes)) 4678 (while (setq time (pop gridtimes))
4561 (unless (and remove (member time have)) 4679 (unless (and remove (member time have))
4562 (setq time (int-to-string time)) 4680 (setq time (int-to-string time))
4563 (push (org-format-agenda-item 4681 (push (org-format-agenda-item
4564 nil string "" ;; FIXME: put a category? 4682 nil string "" ;; FIXME: put a category?
4565 (concat (substring time 0 -2) ":" (substring time -2))) 4683 (concat (substring time 0 -2) ":" (substring time -2)))
4566 new) 4684 new)
4567 (put-text-property 4685 (put-text-property
4568 1 (length (car new)) 'face 'org-time-grid (car new)))) 4686 1 (length (car new)) 'face 'org-time-grid (car new))))
4569 (if (member 'time-up org-agenda-sorting-strategy) 4687 (if (member 'time-up org-agenda-sorting-strategy)
4570 (append new list) 4688 (append new list)
@@ -4603,7 +4721,7 @@ If not found, return nil.
4603The optional STRING argument forces conversion into a 5 character wide string 4721The optional STRING argument forces conversion into a 5 character wide string
4604HH:MM." 4722HH:MM."
4605 (save-match-data 4723 (save-match-data
4606 (when 4724 (when
4607 (or 4725 (or
4608 (string-match 4726 (string-match
4609 "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)\\([AaPp][Mm]\\)?\\> *" s) 4727 "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)\\([AaPp][Mm]\\)?\\> *" s)
@@ -4659,7 +4777,7 @@ HH:MM."
4659 (category-up (org-cmp-category a b)) 4777 (category-up (org-cmp-category a b))
4660 (category-down (if category-up (- category-up) nil)) 4778 (category-down (if category-up (- category-up) nil))
4661 (category-keep (if category-up +1 nil))) ; FIXME +1 or -1? 4779 (category-keep (if category-up +1 nil))) ; FIXME +1 or -1?
4662 (cdr (assoc 4780 (cdr (assoc
4663 (eval (cons 'or org-agenda-sorting-strategy)) 4781 (eval (cons 'or org-agenda-sorting-strategy))
4664 '((-1 . t) (1 . nil) (nil . nil)))))) 4782 '((-1 . t) (1 . nil) (nil . nil))))))
4665 4783
@@ -4674,7 +4792,7 @@ and by additional input from the age of a schedules or deadline entry."
4674(defun org-agenda-goto (&optional highlight) 4792(defun org-agenda-goto (&optional highlight)
4675 "Go to the Org-mode file which contains the item at point." 4793 "Go to the Org-mode file which contains the item at point."
4676 (interactive) 4794 (interactive)
4677 (let* ((marker (or (get-text-property (point) 'org-marker) 4795 (let* ((marker (or (get-text-property (point) 'org-marker)
4678 (org-agenda-error))) 4796 (org-agenda-error)))
4679 (buffer (marker-buffer marker)) 4797 (buffer (marker-buffer marker))
4680 (pos (marker-position marker))) 4798 (pos (marker-position marker)))
@@ -4691,7 +4809,7 @@ and by additional input from the age of a schedules or deadline entry."
4691(defun org-agenda-switch-to () 4809(defun org-agenda-switch-to ()
4692 "Go to the Org-mode file which contains the item at point." 4810 "Go to the Org-mode file which contains the item at point."
4693 (interactive) 4811 (interactive)
4694 (let* ((marker (or (get-text-property (point) 'org-marker) 4812 (let* ((marker (or (get-text-property (point) 'org-marker)
4695 (org-agenda-error))) 4813 (org-agenda-error)))
4696 (buffer (marker-buffer marker)) 4814 (buffer (marker-buffer marker))
4697 (pos (marker-position marker))) 4815 (pos (marker-position marker)))
@@ -4805,7 +4923,7 @@ the new TODO state."
4805 (beginning-of-line 1) 4923 (beginning-of-line 1)
4806 (add-text-properties (point-at-bol) (point-at-eol) props) 4924 (add-text-properties (point-at-bol) (point-at-eol) props)
4807 (if fixface 4925 (if fixface
4808 (add-text-properties 4926 (add-text-properties
4809 (point-at-bol) (point-at-eol) 4927 (point-at-bol) (point-at-eol)
4810 (list 'face 4928 (list 'face
4811 (if org-last-todo-state-is-todo 4929 (if org-last-todo-state-is-todo
@@ -4902,7 +5020,7 @@ be used to request time specification in the time stamp."
4902All the standard commands work: block, weekly etc" 5020All the standard commands work: block, weekly etc"
4903 (interactive) 5021 (interactive)
4904 (require 'diary-lib) 5022 (require 'diary-lib)
4905 (let* ((char (progn 5023 (let* ((char (progn
4906 (message "Diary entry: [d]ay [w]eekly [m]onthly [y]early [a]nniversary [b]lock [c]yclic") 5024 (message "Diary entry: [d]ay [w]eekly [m]onthly [y]early [a]nniversary [b]lock [c]yclic")
4907 (read-char-exclusive))) 5025 (read-char-exclusive)))
4908 (cmd (cdr (assoc char 5026 (cmd (cdr (assoc char
@@ -4932,7 +5050,7 @@ All the standard commands work: block, weekly etc"
4932 (progn 5050 (progn
4933 (fset 'calendar-cursor-to-date 5051 (fset 'calendar-cursor-to-date
4934 (lambda (&optional error) 5052 (lambda (&optional error)
4935 (calendar-gregorian-from-absolute 5053 (calendar-gregorian-from-absolute
4936 (get-text-property point 'day)))) 5054 (get-text-property point 'day))))
4937 (call-interactively cmd)) 5055 (call-interactively cmd))
4938 (fset 'calendar-cursor-to-date oldf))))) 5056 (fset 'calendar-cursor-to-date oldf)))))
@@ -4955,7 +5073,7 @@ the cursor position."
4955 (progn 5073 (progn
4956 (fset 'calendar-cursor-to-date 5074 (fset 'calendar-cursor-to-date
4957 (lambda (&optional error) 5075 (lambda (&optional error)
4958 (calendar-gregorian-from-absolute 5076 (calendar-gregorian-from-absolute
4959 (get-text-property point 'day)))) 5077 (get-text-property point 'day))))
4960 (call-interactively cmd)) 5078 (call-interactively cmd))
4961 (fset 'calendar-cursor-to-date oldf)))) 5079 (fset 'calendar-cursor-to-date oldf))))
@@ -5005,7 +5123,7 @@ This is a command that has to be installed in `calendar-mode-map'."
5005 (unless day 5123 (unless day
5006 (error "Don't know which date to convert")) 5124 (error "Don't know which date to convert"))
5007 (setq date (calendar-gregorian-from-absolute day)) 5125 (setq date (calendar-gregorian-from-absolute day))
5008 (setq s (concat 5126 (setq s (concat
5009 "Gregorian: " (calendar-date-string date) "\n" 5127 "Gregorian: " (calendar-date-string date) "\n"
5010 "ISO: " (calendar-iso-date-string date) "\n" 5128 "ISO: " (calendar-iso-date-string date) "\n"
5011 "Day of Yr: " (calendar-day-of-year-string date) "\n" 5129 "Day of Yr: " (calendar-day-of-year-string date) "\n"
@@ -5118,9 +5236,9 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
5118 5236
5119 ((string= type "shell") 5237 ((string= type "shell")
5120 (let ((cmd path)) 5238 (let ((cmd path))
5121 (while (string-match "@{" cmd) 5239 (while (string-match "@{" cmd)
5122 (setq cmd (replace-match "<" t t cmd))) 5240 (setq cmd (replace-match "<" t t cmd)))
5123 (while (string-match "@}" cmd) 5241 (while (string-match "@}" cmd)
5124 (setq cmd (replace-match ">" t t cmd))) 5242 (setq cmd (replace-match ">" t t cmd)))
5125 (if (or (not org-confirm-shell-links) 5243 (if (or (not org-confirm-shell-links)
5126 (yes-or-no-p (format "Execute \"%s\" in the shell? " cmd))) 5244 (yes-or-no-p (format "Execute \"%s\" in the shell? " cmd)))
@@ -5217,7 +5335,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
5217 (widen) 5335 (widen)
5218 (goto-char (point-max)) 5336 (goto-char (point-max))
5219 (if (re-search-backward 5337 (if (re-search-backward
5220 (concat "^Message-ID:\\s-+" (regexp-quote 5338 (concat "^Message-ID:\\s-+" (regexp-quote
5221 (or article ""))) 5339 (or article "")))
5222 nil t) 5340 nil t)
5223 (rmail-what-message)))))) 5341 (rmail-what-message))))))
@@ -5304,7 +5422,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5304 (or (bbdb-record-name (bbdb-current-record)) 5422 (or (bbdb-record-name (bbdb-current-record))
5305 (bbdb-record-company (bbdb-current-record)))) 5423 (bbdb-record-company (bbdb-current-record))))
5306 link (org-make-link cpltxt))) 5424 link (org-make-link cpltxt)))
5307 5425
5308 ((eq major-mode 'calendar-mode) 5426 ((eq major-mode 'calendar-mode)
5309 (let ((cd (calendar-cursor-to-date))) 5427 (let ((cd (calendar-cursor-to-date)))
5310 (setq link 5428 (setq link
@@ -5330,8 +5448,8 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5330 folder) 5448 folder)
5331 (setq folder (replace-match "" t t folder))) 5449 (setq folder (replace-match "" t t folder)))
5332 (setq cpltxt (concat author " on: " subject)) 5450 (setq cpltxt (concat author " on: " subject))
5333 (setq link (concat cpltxt "\n " 5451 (setq link (concat cpltxt "\n "
5334 (org-make-link 5452 (org-make-link
5335 "vm:" folder "#" message-id)))))) 5453 "vm:" folder "#" message-id))))))
5336 5454
5337 ((eq major-mode 'wl-summary-mode) 5455 ((eq major-mode 'wl-summary-mode)
@@ -5343,7 +5461,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5343 (author (wl-summary-line-from)) ; FIXME: how to get author name? 5461 (author (wl-summary-line-from)) ; FIXME: how to get author name?
5344 (subject "???")) ; FIXME: How to get subject of email? 5462 (subject "???")) ; FIXME: How to get subject of email?
5345 (setq cpltxt (concat author " on: " subject)) 5463 (setq cpltxt (concat author " on: " subject))
5346 (setq link (concat cpltxt "\n " 5464 (setq link (concat cpltxt "\n "
5347 (org-make-link 5465 (org-make-link
5348 "wl:" wl-summary-buffer-folder-name 5466 "wl:" wl-summary-buffer-folder-name
5349 "#" message-id))))) 5467 "#" message-id)))))
@@ -5357,7 +5475,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5357 (author (mail-fetch-field "from")) 5475 (author (mail-fetch-field "from"))
5358 (subject (mail-fetch-field "subject"))) 5476 (subject (mail-fetch-field "subject")))
5359 (setq cpltxt (concat author " on: " subject)) 5477 (setq cpltxt (concat author " on: " subject))
5360 (setq link (concat cpltxt "\n " 5478 (setq link (concat cpltxt "\n "
5361 (org-make-link 5479 (org-make-link
5362 "rmail:" folder "#" message-id))))))) 5480 "rmail:" folder "#" message-id)))))))
5363 5481
@@ -5411,7 +5529,7 @@ For file links, arg negates `org-line-numbers-in-file-links'."
5411 (if (org-xor org-line-numbers-in-file-links arg) 5529 (if (org-xor org-line-numbers-in-file-links arg)
5412 (setq cpltxt 5530 (setq cpltxt
5413 (concat cpltxt 5531 (concat cpltxt
5414 ":" (int-to-string 5532 ":" (int-to-string
5415 (+ (if (bolp) 1 0) (count-lines 5533 (+ (if (bolp) 1 0) (count-lines
5416 (point-min) (point))))))) 5534 (point-min) (point)))))))
5417 (setq link (org-make-link cpltxt))) 5535 (setq link (org-make-link cpltxt)))
@@ -5581,7 +5699,7 @@ If the variable `org-adapt-indentation' is non-nil, the entire text is
5581also indented so that it starts in the same column as the headline 5699also indented so that it starts in the same column as the headline
5582\(i.e. after the stars). 5700\(i.e. after the stars).
5583 5701
5584See also the variable `org-reverse-note-order'." 5702See also the variable `org-reverse-note-order'."
5585 (catch 'quit 5703 (catch 'quit
5586 (let* ((txt (buffer-substring (point-min) (point-max))) 5704 (let* ((txt (buffer-substring (point-min) (point-max)))
5587 (fastp current-prefix-arg) 5705 (fastp current-prefix-arg)
@@ -5687,6 +5805,10 @@ See also the variable `org-reverse-note-order'."
5687 "Detects an org-type table line.") 5805 "Detects an org-type table line.")
5688(defconst org-table-dataline-regexp "^[ \t]*|[^-]" 5806(defconst org-table-dataline-regexp "^[ \t]*|[^-]"
5689 "Detects an org-type table line.") 5807 "Detects an org-type table line.")
5808(defconst org-table-auto-recalculate-regexp "^[ \t]*| *# *\\(|\\|$\\)"
5809 "Detects a table line marked for automatic recalculation.")
5810(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)"
5811 "Detects a table line marked for automatic recalculation.")
5690(defconst org-table-hline-regexp "^[ \t]*|-" 5812(defconst org-table-hline-regexp "^[ \t]*|-"
5691 "Detects an org-type table hline.") 5813 "Detects an org-type table hline.")
5692(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]" 5814(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]"
@@ -5843,6 +5965,7 @@ This is being used to correctly align a single field after TAB or RET.")
5843 "List of max width of fields in each column. 5965 "List of max width of fields in each column.
5844This is being used to correctly align a single field after TAB or RET.") 5966This is being used to correctly align a single field after TAB or RET.")
5845 5967
5968(defvar org-last-recalc-line nil)
5846 5969
5847(defun org-table-align () 5970(defun org-table-align ()
5848 "Align the table at point by aligning all vertical bars." 5971 "Align the table at point by aligning all vertical bars."
@@ -5878,7 +6001,12 @@ This is being used to correctly align a single field after TAB or RET.")
5878 (if (string-match "^ *" (car lines)) 6001 (if (string-match "^ *" (car lines))
5879 (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ ))) 6002 (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
5880 ;; Mark the hlines 6003 ;; Mark the hlines
5881 (setq lines (mapcar (lambda (l) (if (string-match "^ *|-" l) nil l)) 6004 (setq lines (mapcar (lambda (l)
6005 (if (string-match "^ *|-" l)
6006 nil
6007 (if (string-match "[ \t]+$" l)
6008 (substring l 0 (match-beginning 0))
6009 l)))
5882 lines)) 6010 lines))
5883 ;; Get the data fields 6011 ;; Get the data fields
5884 (setq fields (mapcar 6012 (setq fields (mapcar
@@ -5994,15 +6122,17 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
5994 (let* ((pos (point)) s org-table-may-need-update 6122 (let* ((pos (point)) s org-table-may-need-update
5995 (col (org-table-current-column)) 6123 (col (org-table-current-column))
5996 (num (nth (1- col) org-table-last-alignment)) 6124 (num (nth (1- col) org-table-last-alignment))
5997 l f) 6125 l f n o)
5998 (when (> col 0) 6126 (when (> col 0)
5999 (skip-chars-backward "^|\n") 6127 (skip-chars-backward "^|\n")
6000 (if (looking-at " *\\([^|\n]*?\\) *|") 6128 (if (looking-at " *\\([^|\n]*?\\) *|")
6001 (progn 6129 (progn
6002 (setq s (match-string 1) 6130 (setq s (match-string 1)
6131 o (match-string 0)
6003 l (max 1 (- (match-end 0) (match-beginning 0) 3))) 6132 l (max 1 (- (match-end 0) (match-beginning 0) 3)))
6004 (setq f (format (if num " %%%ds |" " %%-%ds |") l)) 6133 (setq f (format (if num " %%%ds |" " %%-%ds |") l)
6005 (replace-match (format f s t t))) 6134 n (format f s t t))
6135 (or (equal n o) (replace-match n)))
6006 (setq org-table-may-need-update t)) 6136 (setq org-table-may-need-update t))
6007 (goto-char pos)))))) 6137 (goto-char pos))))))
6008 6138
@@ -6010,6 +6140,8 @@ With argument TABLE-TYPE, go to the end of a table.el-type table."
6010 "Go to the next field in the current table. 6140 "Go to the next field in the current table.
6011Before doing so, re-align the table if necessary." 6141Before doing so, re-align the table if necessary."
6012 (interactive) 6142 (interactive)
6143 (org-table-maybe-eval-formula)
6144 (org-table-maybe-recalculate-line)
6013 (if (and org-table-automatic-realign 6145 (if (and org-table-automatic-realign
6014 org-table-may-need-update) 6146 org-table-may-need-update)
6015 (org-table-align)) 6147 (org-table-align))
@@ -6032,6 +6164,8 @@ Before doing so, re-align the table if necessary."
6032 "Go to the previous field in the table. 6164 "Go to the previous field in the table.
6033Before doing so, re-align the table if necessary." 6165Before doing so, re-align the table if necessary."
6034 (interactive) 6166 (interactive)
6167 (org-table-justify-field-maybe)
6168 (org-table-maybe-recalculate-line)
6035 (if (and org-table-automatic-realign 6169 (if (and org-table-automatic-realign
6036 org-table-may-need-update) 6170 org-table-may-need-update)
6037 (org-table-align)) 6171 (org-table-align))
@@ -6048,6 +6182,8 @@ Before doing so, re-align the table if necessary."
6048 "Go to the next row (same column) in the current table. 6182 "Go to the next row (same column) in the current table.
6049Before doing so, re-align the table if necessary." 6183Before doing so, re-align the table if necessary."
6050 (interactive) 6184 (interactive)
6185 (org-table-maybe-eval-formula)
6186 (org-table-maybe-recalculate-line)
6051 (if (or (looking-at "[ \t]*$") 6187 (if (or (looking-at "[ \t]*$")
6052 (save-excursion (skip-chars-backward " \t") (bolp))) 6188 (save-excursion (skip-chars-backward " \t") (bolp)))
6053 (newline) 6189 (newline)
@@ -6071,7 +6207,7 @@ If the field at the cursor is empty, copy into it the content of the nearest
6071non-empty field above. With argument N, use the Nth non-empty field. 6207non-empty field above. With argument N, use the Nth non-empty field.
6072If the current field is not empty, it is copied down to the next row, and 6208If the current field is not empty, it is copied down to the next row, and
6073the cursor is moved with it. Therefore, repeating this command causes the 6209the cursor is moved with it. Therefore, repeating this command causes the
6074column to be filled row-by-row. 6210column to be filled row-by-row.
6075If the variable `org-table-copy-increment' is non-nil and the field is an 6211If the variable `org-table-copy-increment' is non-nil and the field is an
6076integer, it will be incremented while copying." 6212integer, it will be incremented while copying."
6077 (interactive "p") 6213 (interactive "p")
@@ -6081,23 +6217,29 @@ integer, it will be incremented while copying."
6081 (beg (org-table-begin)) 6217 (beg (org-table-begin))
6082 txt) 6218 txt)
6083 (org-table-check-inside-data-field) 6219 (org-table-check-inside-data-field)
6084 (if non-empty (progn (org-table-next-row) (org-table-blank-field))) 6220 (if non-empty
6085 (if (save-excursion 6221 (progn
6086 (setq txt 6222 (setq txt (org-trim field))
6087 (catch 'exit 6223 (org-table-next-row)
6088 (while (progn (beginning-of-line 1) 6224 (org-table-blank-field))
6089 (re-search-backward org-table-dataline-regexp 6225 (save-excursion
6090 beg t)) 6226 (setq txt
6091 (org-table-goto-column colpos t) 6227 (catch 'exit
6092 (if (and (looking-at 6228 (while (progn (beginning-of-line 1)
6093 "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") 6229 (re-search-backward org-table-dataline-regexp
6094 (= (setq n (1- n)) 0)) 6230 beg t))
6095 (throw 'exit (match-string 1))))))) 6231 (org-table-goto-column colpos t)
6232 (if (and (looking-at
6233 "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|")
6234 (= (setq n (1- n)) 0))
6235 (throw 'exit (match-string 1))))))))
6236 (if txt
6096 (progn 6237 (progn
6097 (if (and org-table-copy-increment 6238 (if (and org-table-copy-increment
6098 (string-match "^[0-9]+$" txt)) 6239 (string-match "^[0-9]+$" txt))
6099 (setq txt (format "%d" (+ (string-to-int txt) 1)))) 6240 (setq txt (format "%d" (+ (string-to-int txt) 1))))
6100 (insert txt) 6241 (insert txt)
6242 (org-table-maybe-recalculate-line)
6101 (org-table-align)) 6243 (org-table-align))
6102 (error "No non-empty field found")))) 6244 (error "No non-empty field found"))))
6103 6245
@@ -6119,10 +6261,10 @@ I.e. not on a hline or before the first or after the last column?"
6119 (org-table-check-inside-data-field) 6261 (org-table-check-inside-data-field)
6120 (if (and (interactive-p) (org-region-active-p)) 6262 (if (and (interactive-p) (org-region-active-p))
6121 (let (org-table-clip) 6263 (let (org-table-clip)
6122 (org-table-cut-region)) 6264 (org-table-cut-region (region-beginning) (region-end)))
6123 (skip-chars-backward "^|") 6265 (skip-chars-backward "^|")
6124 (backward-char 1) 6266 (backward-char 1)
6125 (if (looking-at "|[^|]+") 6267 (if (looking-at "|[^|\n]+")
6126 (let* ((pos (match-beginning 0)) 6268 (let* ((pos (match-beginning 0))
6127 (match (match-string 0)) 6269 (match (match-string 0))
6128 (len (length match))) 6270 (len (length match)))
@@ -6136,15 +6278,16 @@ N defaults to current field.
6136If REPLACE is a string, replace field with this value. The return value 6278If REPLACE is a string, replace field with this value. The return value
6137is always the old value." 6279is always the old value."
6138 (and n (org-table-goto-column n)) 6280 (and n (org-table-goto-column n))
6139 (skip-chars-backward "^|") 6281 (skip-chars-backward "^|\n")
6140 (backward-char 1) 6282 (backward-char 1)
6141 (if (looking-at "|[^|\r\n]*") 6283 (if (looking-at "|[^|\r\n]*")
6142 (let* ((pos (match-beginning 0)) 6284 (let* ((pos (match-beginning 0))
6143 (val (buffer-substring (1+ pos) (match-end 0)))) 6285 (val (buffer-substring (1+ pos) (match-end 0))))
6144 (if replace 6286 (if replace
6145 (replace-match (concat "|" replace))) 6287 (replace-match (concat "|" replace)))
6146 (goto-char (+ 2 pos)) 6288 (goto-char (min (point-at-eol) (+ 2 pos)))
6147 val))) 6289 val)
6290 (forward-char 1) ""))
6148 6291
6149(defun org-table-current-column () 6292(defun org-table-current-column ()
6150 "Find out which column we are in. 6293 "Find out which column we are in.
@@ -6162,7 +6305,7 @@ When called interactively, column is also displayed in echo area."
6162(defun org-table-goto-column (n &optional on-delim force) 6305(defun org-table-goto-column (n &optional on-delim force)
6163 "Move the cursor to the Nth column in the current table line. 6306 "Move the cursor to the Nth column in the current table line.
6164With optional argument ON-DELIM, stop with point before the left delimiter 6307With optional argument ON-DELIM, stop with point before the left delimiter
6165of the field. 6308of the field.
6166If there are less than N fields, just go to after the last delimiter. 6309If there are less than N fields, just go to after the last delimiter.
6167However, when FORCE is non-nil, create new columns if necessary." 6310However, when FORCE is non-nil, create new columns if necessary."
6168 (let ((pos (point-at-eol))) 6311 (let ((pos (point-at-eol)))
@@ -6173,10 +6316,10 @@ However, when FORCE is non-nil, create new columns if necessary."
6173 (and force 6316 (and force
6174 (progn (end-of-line 1) 6317 (progn (end-of-line 1)
6175 (skip-chars-backward "^|") 6318 (skip-chars-backward "^|")
6176 (insert " |") 6319 (insert " | "))))))
6177 (backward-char 2) t))))) 6320; (backward-char 2) t)))))
6178 (when (and force (not (looking-at ".*|"))) 6321 (when (and force (not (looking-at ".*|")))
6179 (save-excursion (end-of-line 1) (insert "|"))) 6322 (save-excursion (end-of-line 1) (insert " | ")))
6180 (if on-delim 6323 (if on-delim
6181 (backward-char 1) 6324 (backward-char 1)
6182 (if (looking-at " ") (forward-char 1)))))) 6325 (if (looking-at " ") (forward-char 1))))))
@@ -6255,8 +6398,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6255 (beginning-of-line 2)) 6398 (beginning-of-line 2))
6256 (move-marker end nil) 6399 (move-marker end nil)
6257 (goto-line linepos) 6400 (goto-line linepos)
6258 (org-table-goto-column colpos)) 6401 (org-table-goto-column colpos)
6259 (org-table-align)) 6402 (org-table-align)
6403 (org-table-modify-formulas 'insert col)))
6260 6404
6261(defun org-table-find-dataline () 6405(defun org-table-find-dataline ()
6262 "Find a dataline in the current table, which is needed for column commands." 6406 "Find a dataline in the current table, which is needed for column commands."
@@ -6300,8 +6444,9 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6300 (beginning-of-line 2)) 6444 (beginning-of-line 2))
6301 (move-marker end nil) 6445 (move-marker end nil)
6302 (goto-line linepos) 6446 (goto-line linepos)
6303 (org-table-goto-column colpos)) 6447 (org-table-goto-column colpos)
6304 (org-table-align)) 6448 (org-table-align)
6449 (org-table-modify-formulas 'remove col)))
6305 6450
6306(defun org-table-move-column-right () 6451(defun org-table-move-column-right ()
6307 "Move column to the right." 6452 "Move column to the right."
@@ -6340,15 +6485,16 @@ If TABLE-TYPE is non-nil, also chack for table.el-type tables."
6340 (beginning-of-line 2)) 6485 (beginning-of-line 2))
6341 (move-marker end nil) 6486 (move-marker end nil)
6342 (goto-line linepos) 6487 (goto-line linepos)
6343 (org-table-goto-column colpos)) 6488 (org-table-goto-column colpos)
6344 (org-table-align)) 6489 (org-table-align)
6490 (org-table-modify-formulas 'swap col (if left (1- col) (1+ col)))))
6345 6491
6346(defun org-table-move-row-down () 6492(defun org-table-move-row-down ()
6347 "Move table row down." 6493 "move table row down."
6348 (interactive) 6494 (interactive)
6349 (org-table-move-row nil)) 6495 (org-table-move-row nil))
6350(defun org-table-move-row-up () 6496(defun org-table-move-row-up ()
6351 "Move table row up." 6497 "move table row up."
6352 (interactive) 6498 (interactive)
6353 (org-table-move-row 'up)) 6499 (org-table-move-row 'up))
6354 6500
@@ -6380,13 +6526,18 @@ With prefix ARG, insert below the current line."
6380 (interactive "P") 6526 (interactive "P")
6381 (if (not (org-at-table-p)) 6527 (if (not (org-at-table-p))
6382 (error "Not at a table")) 6528 (error "Not at a table"))
6383 (let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))) 6529 (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol)))
6530 new)
6384 (if (string-match "^[ \t]*|-" line) 6531 (if (string-match "^[ \t]*|-" line)
6385 (setq line (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line)) 6532 (setq new (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line))
6386 (setq line (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line))) 6533 (setq new (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line)))
6534 ;; Fix the first field if necessary
6535 (setq new (concat new))
6536 (if (string-match "^[ \t]*| *[#$] *|" line)
6537 (setq new (replace-match (match-string 0 line) t t new)))
6387 (beginning-of-line (if arg 2 1)) 6538 (beginning-of-line (if arg 2 1))
6388 (let (org-table-may-need-update) 6539 (let (org-table-may-need-update)
6389 (apply 'insert-before-markers line) 6540 (insert-before-markers new)
6390 (insert-before-markers "\n")) 6541 (insert-before-markers "\n"))
6391 (beginning-of-line 0) 6542 (beginning-of-line 0)
6392 (re-search-forward "| ?" (point-at-eol) t) 6543 (re-search-forward "| ?" (point-at-eol) t)
@@ -6431,26 +6582,23 @@ With prefix ARG, insert above the current line."
6431 (move-to-column col))) 6582 (move-to-column col)))
6432 6583
6433 6584
6434(defun org-table-cut-region () 6585(defun org-table-cut-region (beg end)
6435 "Copy region in table to the clipboard and blank all relevant fields." 6586 "Copy region in table to the clipboard and blank all relevant fields."
6436 (interactive) 6587 (interactive "r")
6437 (org-table-copy-region 'cut)) 6588 (org-table-copy-region beg end 'cut))
6438 6589
6439(defun org-table-copy-region (&optional cut) 6590(defun org-table-copy-region (beg end &optional cut)
6440 "Copy rectangular region in table to clipboard. 6591 "Copy rectangular region in table to clipboard.
6441A special clipboard is used which can only be accessed 6592A special clipboard is used which can only be accessed
6442with `org-table-paste-rectangle'" 6593with `org-table-paste-rectangle'"
6443 (interactive "P") 6594 (interactive "rP")
6444 (unless (org-region-active-p) (error "No active region")) 6595 (let* (l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
6445 (let* ((beg (region-beginning))
6446 (end (region-end))
6447 l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2
6448 region cols 6596 region cols
6449 (rpl (if cut " " nil))) 6597 (rpl (if cut " " nil)))
6450 (goto-char beg) 6598 (goto-char beg)
6451 (org-table-check-inside-data-field) 6599 (org-table-check-inside-data-field)
6452 (setq l01 (count-lines (point-min) (point)) 6600 (setq l01 (count-lines (point-min) (point))
6453 c01 (org-table-current-column)) 6601 c01 (org-table-current-column))
6454 (goto-char end) 6602 (goto-char end)
6455 (org-table-check-inside-data-field) 6603 (org-table-check-inside-data-field)
6456 (setq l02 (count-lines (point-min) (point)) 6604 (setq l02 (count-lines (point-min) (point))
@@ -6470,8 +6618,9 @@ with `org-table-paste-rectangle'"
6470 (push (nreverse cols) region) 6618 (push (nreverse cols) region)
6471 (setq l1 (1+ l1))))) 6619 (setq l1 (1+ l1)))))
6472 (setq org-table-clip (nreverse region)) 6620 (setq org-table-clip (nreverse region))
6473 (if cut (org-table-align)))) 6621 (if cut (org-table-align))
6474 6622 org-table-clip))
6623
6475(defun org-table-paste-rectangle () 6624(defun org-table-paste-rectangle ()
6476 "Paste a rectangular region into a table. 6625 "Paste a rectangular region into a table.
6477The upper right corner ends up in the current field. All involved fields 6626The upper right corner ends up in the current field. All involved fields
@@ -6574,7 +6723,7 @@ blank, and the content is appended to the field above."
6574 ;; There is a region: fill as a paragraph 6723 ;; There is a region: fill as a paragraph
6575 (let ((beg (region-beginning)) 6724 (let ((beg (region-beginning))
6576 nlines) 6725 nlines)
6577 (org-table-cut-region) 6726 (org-table-cut-region (region-beginning) (region-end))
6578 (if (> (length (car org-table-clip)) 1) 6727 (if (> (length (car org-table-clip)) 1)
6579 (error "Region must be limited to single column")) 6728 (error "Region must be limited to single column"))
6580 (setq nlines (if arg 6729 (setq nlines (if arg
@@ -6582,7 +6731,7 @@ blank, and the content is appended to the field above."
6582 (+ (length org-table-clip) arg) 6731 (+ (length org-table-clip) arg)
6583 arg) 6732 arg)
6584 (length org-table-clip))) 6733 (length org-table-clip)))
6585 (setq org-table-clip 6734 (setq org-table-clip
6586 (mapcar 'list (org-wrap (mapconcat 'car org-table-clip " ") 6735 (mapcar 'list (org-wrap (mapconcat 'car org-table-clip " ")
6587 nil nlines))) 6736 nil nlines)))
6588 (goto-char beg) 6737 (goto-char beg)
@@ -6611,7 +6760,8 @@ blank, and the content is appended to the field above."
6611(defun org-trim (s) 6760(defun org-trim (s)
6612 "Remove whitespace at beginning and end of string." 6761 "Remove whitespace at beginning and end of string."
6613 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s))) 6762 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s)))
6614 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))) 6763 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))
6764 s)
6615 6765
6616(defun org-wrap (string &optional width lines) 6766(defun org-wrap (string &optional width lines)
6617 "Wrap string to either a number of lines, or a width in characters. 6767 "Wrap string to either a number of lines, or a width in characters.
@@ -6637,7 +6787,7 @@ The return value is a list of lines, without newlines at the end."
6637 (setq ll (org-do-wrap words w))) 6787 (setq ll (org-do-wrap words w)))
6638 ll)) 6788 ll))
6639 (t (error "Cannot wrap this"))))) 6789 (t (error "Cannot wrap this")))))
6640 6790
6641 6791
6642(defun org-do-wrap (words width) 6792(defun org-do-wrap (words width)
6643 "Create lines of maximum width WIDTH (in characters) from word list WORDS." 6793 "Create lines of maximum width WIDTH (in characters) from word list WORDS."
@@ -6734,7 +6884,7 @@ visible when ARG is not positive"
6734 (save-excursion (funcall function))) 6884 (save-excursion (funcall function)))
6735 (re-search-forward org-table-any-border-regexp nil 1))))) 6885 (re-search-forward org-table-any-border-regexp nil 1)))))
6736 6886
6737(defun org-table-sum () 6887(defun org-table-sum (&optional beg end nlast)
6738 "Sum numbers in region of current table column. 6888 "Sum numbers in region of current table column.
6739The result will be displayed in the echo area, and will be available 6889The result will be displayed in the echo area, and will be available
6740as kill to be inserted with \\[yank]. 6890as kill to be inserted with \\[yank].
@@ -6746,35 +6896,38 @@ column.
6746 6896
6747If at least one number looks like a time HH:MM or HH:MM:SS, all other 6897If at least one number looks like a time HH:MM or HH:MM:SS, all other
6748numbers are assumed to be times as well (in decimal hours) and the 6898numbers are assumed to be times as well (in decimal hours) and the
6749numbers are added as such." 6899numbers are added as such.
6900
6901If NLAST is a number, only the NLAST fields will actually be summed."
6750 (interactive) 6902 (interactive)
6751 (save-excursion 6903 (save-excursion
6752 (let (beg end col (timecnt 0) diff h m s) 6904 (let (col (timecnt 0) diff h m s org-table-clip)
6753 (if (org-region-active-p) 6905 (cond
6754 (setq beg (region-beginning) end (region-end)) 6906 ((and beg end)) ; beg and end given explicitly
6907 ((org-region-active-p)
6908 (setq beg (region-beginning) end (region-end)))
6909 (t
6755 (setq col (org-table-current-column)) 6910 (setq col (org-table-current-column))
6756 (goto-char (org-table-begin)) 6911 (goto-char (org-table-begin))
6757 (unless (re-search-forward "^[ \t]*|[^-]" nil t) 6912 (unless (re-search-forward "^[ \t]*|[^-]" nil t)
6758 (error "No table data")) 6913 (error "No table data"))
6759 (org-table-goto-column col) 6914 (org-table-goto-column col)
6760 (skip-chars-backward "^|") 6915;not needed? (skip-chars-backward "^|")
6761 (setq beg (point)) 6916 (setq beg (point))
6762 (goto-char (org-table-end)) 6917 (goto-char (org-table-end))
6763 (unless (re-search-backward "^[ \t]*|[^-]" nil t) 6918 (unless (re-search-backward "^[ \t]*|[^-]" nil t)
6764 (error "No table data")) 6919 (error "No table data"))
6765 (org-table-goto-column col) 6920 (org-table-goto-column col)
6766 (skip-chars-forward "^|") 6921;not needed? (skip-chars-forward "^|")
6767 (setq end (point))) 6922 (setq end (point))))
6768 (let* ((l1 (progn (goto-char beg) 6923 (let* ((items (apply 'append (org-table-copy-region beg end)))
6769 (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) 6924 (items1 (cond ((not nlast) items)
6770 (l2 (progn (goto-char end) 6925 ((>= nlast (length items)) items)
6771 (+ (if (bolp) 1 0) (count-lines (point-min) (point))))) 6926 (t (setq items (reverse items))
6772 (items (if (= l1 l2) 6927 (setcdr (nthcdr (1- nlast) items) nil)
6773 (split-string (buffer-substring beg end)) 6928 (nreverse items))))
6774 (split-string
6775 (mapconcat 'identity (extract-rectangle beg end) " "))))
6776 (numbers (delq nil (mapcar 'org-table-get-number-for-summing 6929 (numbers (delq nil (mapcar 'org-table-get-number-for-summing
6777 items))) 6930 items1)))
6778 (res (apply '+ numbers)) 6931 (res (apply '+ numbers))
6779 (sres (if (= timecnt 0) 6932 (sres (if (= timecnt 0)
6780 (format "%g" res) 6933 (format "%g" res)
@@ -6784,9 +6937,11 @@ numbers are added as such."
6784 s diff) 6937 s diff)
6785 (format "%d:%02d:%02d" h m s)))) 6938 (format "%d:%02d:%02d" h m s))))
6786 (kill-new sres) 6939 (kill-new sres)
6787 (message (substitute-command-keys 6940 (if (interactive-p)
6788 (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)" 6941 (message (substitute-command-keys
6789 (length numbers) sres))))))) 6942 (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)"
6943 (length numbers) sres))))
6944 sres))))
6790 6945
6791(defun org-table-get-number-for-summing (s) 6946(defun org-table-get-number-for-summing (s)
6792 (let (n) 6947 (let (n)
@@ -6808,15 +6963,136 @@ numbers are added as such."
6808 ((equal n 0) nil) 6963 ((equal n 0) nil)
6809 (t n)))) 6964 (t n))))
6810 6965
6811(defvar org-table-current-formula nil)
6812(defvar org-table-formula-history nil) 6966(defvar org-table-formula-history nil)
6813(defun org-table-get-formula (current) 6967
6814 (if (and current (not (equal "" org-table-current-formula))) 6968(defun org-table-get-formula (&optional equation)
6815 org-table-current-formula 6969 "Read a formula from the minibuffer, offer stored formula as default."
6816 (setq org-table-current-formula 6970 (let* ((col (org-table-current-column))
6817 (read-string 6971 (stored-list (org-table-get-stored-formulas))
6818 "Formula [last]: " "" 'org-table-formula-history 6972 (stored (cdr (assoc col stored-list)))
6819 org-table-current-formula)))) 6973 (eq (cond
6974 ((and stored equation (string-match "^ *= *$" equation))
6975 stored)
6976 ((stringp equation)
6977 equation)
6978 (t (read-string
6979 "Formula: " (or stored "") 'org-table-formula-history
6980 stored)))))
6981 (if (not (string-match "\\S-" eq))
6982 (error "Empty formula"))
6983 (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq)))
6984 (if (string-match " *$" eq) (setq eq (replace-match "" t t eq)))
6985 (if stored
6986 (setcdr (assoc col stored-list) eq)
6987 (setq stored-list (cons (cons col eq) stored-list)))
6988 (if (not (equal stored eq))
6989 (org-table-store-formulas stored-list))
6990 eq))
6991
6992(defun org-table-store-formulas (alist)
6993 "Store the list of formulas below the current table."
6994 (setq alist (sort alist (lambda (a b) (< (car a) (car b)))))
6995 (save-excursion
6996 (goto-char (org-table-end))
6997 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?")
6998 (delete-region (point) (match-end 0)))
6999 (insert "#+TBLFM: "
7000 (mapconcat (lambda (x)
7001 (concat "$" (int-to-string (car x)) "=" (cdr x)))
7002 alist "::")
7003 "\n")))
7004
7005(defun org-table-get-stored-formulas ()
7006 "Return an alist withh the t=stored formulas directly after current table."
7007 (interactive)
7008 (let (col eq eq-alist strings string)
7009 (save-excursion
7010 (goto-char (org-table-end))
7011 (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)")
7012 (setq strings (org-split-string (match-string 2) " *:: *"))
7013 (while (setq string (pop strings))
7014 (if (string-match "\\$\\([0-9]+\\) *= *\\(.*[^ \t]\\)" string)
7015 (setq col (string-to-number (match-string 1 string))
7016 eq (match-string 2 string)
7017 eq-alist (cons (cons col eq) eq-alist))))))
7018 eq-alist))
7019
7020(defun org-table-modify-formulas (action &rest columns)
7021 "Modify the formulas stored below the current table.
7022ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
7023expected, for the other action only a single column number is needed."
7024 (let ((list (org-table-get-stored-formulas))
7025 (nmax (length (org-split-string (buffer-substring (point-at-bol) (point-at-eol))
7026 "|")))
7027 col col1 col2)
7028 (cond
7029 ((null list)) ; No action needed if there are no stored formulas
7030 ((eq action 'remove)
7031 (setq col (car columns))
7032 (org-table-replace-in-formulas list col "INVALID")
7033 (if (assoc col list) (setq list (delq (assoc col list) list)))
7034 (loop for i from (1+ col) upto nmax by 1 do
7035 (org-table-replace-in-formulas list i (1- i))
7036 (if (assoc i list) (setcar (assoc i list) (1- i)))))
7037 ((eq action 'insert)
7038 (setq col (car columns))
7039 (loop for i from nmax downto col by 1 do
7040 (org-table-replace-in-formulas list i (1+ i))
7041 (if (assoc i list) (setcar (assoc i list) (1+ i)))))
7042 ((eq action 'swap)
7043 (setq col1 (car columns) col2 (nth 1 columns))
7044 (org-table-replace-in-formulas list col1 "Z")
7045 (org-table-replace-in-formulas list col2 col1)
7046 (org-table-replace-in-formulas list "Z" col2)
7047 (if (assoc col1 list) (setcar (assoc col1 list) "Z"))
7048 (if (assoc col2 list) (setcar (assoc col2 list) col1))
7049 (if (assoc "Z" list) (setcar (assoc "Z" list) col2)))
7050 (t (error "Invalid action in `org-table-modify-formulas'")))
7051 (if list (org-table-store-formulas list))))
7052
7053(defun org-table-replace-in-formulas (list s1 s2)
7054 (let (elt re s)
7055 (setq s1 (concat "$" (if (integerp s1) (int-to-string s1) s1))
7056 s2 (concat "$" (if (integerp s2) (int-to-string s2) s2))
7057 re (concat (regexp-quote s1) "\\>"))
7058 (while (setq elt (pop list))
7059 (setq s (cdr elt))
7060 (while (string-match re s)
7061 (setq s (replace-match s2 t t s)))
7062 (setcdr elt s))))
7063
7064(defvar org-table-column-names nil
7065 "Alist with column names, derived from the `!' line.")
7066(defvar org-table-column-name-regexp nil
7067 "Regular expression matching the current column names.")
7068(defvar org-table-local-parameters nil
7069 "Alist with parameter names, derived from the `$' line.")
7070
7071(defun org-table-get-specials ()
7072 "Get the column nmaes and local parameters for this table."
7073 (save-excursion
7074 (let ((beg (org-table-begin)) (end (org-table-end))
7075 names name fields field cnt)
7076 (setq org-table-column-names nil
7077 org-table-local-parameters nil)
7078 (goto-char beg)
7079 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
7080 (setq names (org-split-string (match-string 1) " *| *")
7081 cnt 1)
7082 (while (setq name (pop names))
7083 (setq cnt (1+ cnt))
7084 (if (string-match "^[a-zA-Z][a-zA-Z0-9]*$" name)
7085 (push (cons name (int-to-string cnt)) org-table-column-names))))
7086 (setq org-table-column-names (nreverse org-table-column-names))
7087 (setq org-table-column-name-regexp
7088 (concat "\\$\\(" (mapconcat 'car org-table-column-names "\\|") "\\)\\>"))
7089 (goto-char beg)
7090 (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t)
7091 (setq fields (org-split-string (match-string 1) " *| *"))
7092 (while (setq field (pop fields))
7093 (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\) *= *\\(.*\\)" field)
7094 (push (cons (match-string 1 field) (match-string 2 field))
7095 org-table-local-parameters)))))))
6820 7096
6821(defun org-this-word () 7097(defun org-this-word ()
6822 ;; Get the current word 7098 ;; Get the current word
@@ -6825,24 +7101,157 @@ numbers are added as such."
6825 (end (progn (skip-chars-forward "^ \t\n") (point)))) 7101 (end (progn (skip-chars-forward "^ \t\n") (point))))
6826 (buffer-substring-no-properties beg end)))) 7102 (buffer-substring-no-properties beg end))))
6827 7103
6828(defun org-table-eval-formula (&optional ndown) 7104(defun org-table-maybe-eval-formula ()
7105 "Check if the current field starts with \"=\" and evaluate the formula."
7106 ;; We already know we are in a table. Get field will only return a formula
7107 ;; when appropriate. It might return a separator line, but no problem.
7108 (when org-table-formula-evaluate-inline
7109 (let* ((field (org-trim (or (org-table-get-field) "")))
7110 (dfield (downcase field))
7111 col bolpos nlast)
7112 (when (equal (string-to-char field) ?=)
7113 (if (string-match "^\\(=sum[vh]?\\)\\([0-9]+\\)$" dfield)
7114 (setq nlast (1+ (string-to-number (match-string 2 dfield)))
7115 dfield (match-string 1 dfield)))
7116 (cond
7117 ((equal dfield "=sumh")
7118 (org-table-get-field
7119 nil (org-table-sum
7120 (save-excursion (org-table-goto-column 1) (point))
7121 (point) nlast)))
7122 ((member dfield '("=sum" "=sumv"))
7123 (setq col (org-table-current-column)
7124 bolpos (point-at-bol))
7125 (org-table-get-field
7126 nil (org-table-sum
7127 (save-excursion
7128 (goto-char (org-table-begin))
7129 (if (re-search-forward org-table-dataline-regexp bolpos t)
7130 (progn
7131 (goto-char (match-beginning 0))
7132 (org-table-goto-column col)
7133 (point))
7134 (error "No datalines above current")))
7135 (point) nlast)))
7136 ((and (string-match "^ *=" field)
7137 (fboundp 'calc-eval))
7138 (org-table-eval-formula nil field)))))))
7139
7140(defvar org-last-recalc-undo-list nil)
7141(defcustom org-table-allow-line-recalculation t
7142 "FIXME:"
7143 :group 'org-table
7144 :type 'boolean)
7145
7146(defvar org-recalc-commands nil
7147 "List of commands triggering the reccalculation of a line.
7148Will be filled automatically during use.")
7149
7150(defvar org-recalc-marks
7151 '((" " . "Unmarked: no special line, no automatic recalculation")
7152 ("#" . "Automatically recalculate this line upon TAB, RET, and C-c C-c in the line")
7153 ("*" . "Recalculate only when entire table is recalculated with `C-u C-c *'")
7154 ("!" . "Column name definition line. Reference in formula as $name.")
7155 ("$" . "Parameter definition line name=value. Reference in formula as $name.")))
7156
7157(defun org-table-rotate-recalc-marks (&optional newchar)
7158 "Rotate the recalculation mark in the first column.
7159If in any row, the first field is not consistent with a mark,
7160insert a new column for the makers.
7161When there is an active region, change all the lines in the region,
7162after prompting for the marking character.
7163After each change, a message will be displayed indication the meaning
7164of the new mark."
7165 (interactive)
7166 (unless (org-at-table-p) (error "Not at a table"))
7167 (let* ((marks (append (mapcar 'car org-recalc-marks) '(" ")))
7168 (beg (org-table-begin))
7169 (end (org-table-end))
7170 (l (org-current-line))
7171 (l1 (if (org-region-active-p) (org-current-line (region-beginning))))
7172 (l2 (if (org-region-active-p) (org-current-line (region-end))))
7173 (have-col
7174 (save-excursion
7175 (goto-char beg)
7176 (not (re-search-forward "^[ \t]*|[^-|][^|]*[^#!$*| \t][^|]*|" end t))))
7177 (col (org-table-current-column))
7178 (forcenew (car (assoc newchar org-recalc-marks)))
7179 epos new)
7180 (if l1 (setq newchar (char-to-string (read-char-exclusive "Change region to what mark? Type # * ! $ or SPC: "))
7181 forcenew (car (assoc newchar org-recalc-marks))))
7182 (if (and newchar (not forcenew))
7183 (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'"
7184 newchar))
7185 (if l1 (goto-line l1))
7186 (save-excursion
7187 (beginning-of-line 1)
7188 (unless (looking-at org-table-dataline-regexp)
7189 (error "Not at a table data line")))
7190 (unless have-col
7191 (org-table-goto-column 1)
7192 (org-table-insert-column)
7193 (org-table-goto-column (1+ col)))
7194 (setq epos (point-at-eol))
7195 (save-excursion
7196 (beginning-of-line 1)
7197 (org-table-get-field
7198 1 (if (looking-at "^[ \t]*| *\\([#!$* ]\\) *|")
7199 (concat " "
7200 (setq new (or forcenew
7201 (cadr (member (match-string 1) marks))))
7202 " ")
7203 " # ")))
7204 (if (and l1 l2)
7205 (progn
7206 (goto-line l1)
7207 (while (progn (beginning-of-line 2) (not (= (org-current-line) l2)))
7208 (and (looking-at org-table-dataline-regexp)
7209 (org-table-get-field 1 (concat " " new " "))))
7210 (goto-line l1)))
7211 (if (not (= epos (point-at-eol))) (org-table-align))
7212 (goto-line l)
7213 (and (interactive-p) (message (cdr (assoc new org-recalc-marks))))))
7214
7215(defun org-table-maybe-recalculate-line ()
7216 "Recompute the current line if marked for it, and if we haven't just done it."
7217 (interactive)
7218 (and org-table-allow-line-recalculation
7219 (not (and (memq last-command org-recalc-commands)
7220 (equal org-last-recalc-line (org-current-line))))
7221 (save-excursion (beginning-of-line 1)
7222 (looking-at org-table-auto-recalculate-regexp))
7223 (fboundp 'calc-eval)
7224 (org-table-recalculate) t))
7225
7226(defvar org-table-formula-debug nil
7227 "Non-nil means, debug table formulas.
7228When nil, simply write \"#ERROR\" in corrupted fields.")
7229
7230(defvar modes)
7231(defsubst org-set-calc-mode (var value)
7232 (setcar (or (cdr (memq var modes)) (cons nil nil)) value))
7233
7234(defun org-table-eval-formula (&optional ndown equation
7235 suppress-align suppress-const
7236 suppress-store)
6829 "Replace the table field value at the cursor by the result of a calculation. 7237 "Replace the table field value at the cursor by the result of a calculation.
6830 7238
6831This function makes use of Dave Gillespie's calc package, arguably the most 7239This function makes use of Dave Gillespie's calc package, in my view the
6832exciting program ever written for GNU Emacs. So you need to have calc 7240most exciting program ever written for GNU Emacs. So you need to have calc
6833installed in order to use this function. 7241installed in order to use this function.
6834 7242
6835In a table, this command replaces the value in the current field with the 7243In a table, this command replaces the value in the current field with the
6836result of a formula. While nowhere near the computation options of a 7244result of a formula. While nowhere near the computation options of a
6837spreadsheet program, this is still very useful. Note that there is no 7245spreadsheet program, this is still very useful. There is no automatic
6838automatic updating of a calculated field, nor will the field remember the 7246updating of a calculated field, but the table will remember the last
6839formula. The command needs to be applied again after changing input 7247formula for each column. The command needs to be applied again after
6840fields. 7248changing input fields.
6841 7249
6842When called, the command first prompts for a formula, which is read in the 7250When called, the command first prompts for a formula, which is read in the
6843minibuffer. Previously entered formulae are available through the history 7251minibuffer. Previously entered formulas are available through the history
6844list, and the last used formula is the default, reachable by simply 7252list, and the last used formula for each column is offered as a default.
6845pressing RET. 7253These stored formulas are adapted correctly when moving, inserting, or
7254deleting columns with the corresponding commands.
6846 7255
6847The formula can be any algebraic expression understood by the calc package. 7256The formula can be any algebraic expression understood by the calc package.
6848Before evaluation, variable substitution takes place: \"$\" is replaced by 7257Before evaluation, variable substitution takes place: \"$\" is replaced by
@@ -6852,7 +7261,7 @@ here, so the command supports only horizontal computing. The formula can
6852contain an optional printf format specifier after a semicolon, to reformat 7261contain an optional printf format specifier after a semicolon, to reformat
6853the result. 7262the result.
6854 7263
6855A few examples for formulae: 7264A few examples for formulas:
6856 $1+$2 Sum of first and second field 7265 $1+$2 Sum of first and second field
6857 $1+$2;%.2f Same, and format result to two digits after dec.point 7266 $1+$2;%.2f Same, and format result to two digits after dec.point
6858 exp($2)+exp($1) Math functions can be used 7267 exp($2)+exp($1) Math functions can be used
@@ -6864,38 +7273,101 @@ field, and to the same same column in all following rows, until reaching a
6864horizontal line or the end of the table. When the command is called with a 7273horizontal line or the end of the table. When the command is called with a
6865numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied 7274numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied
6866to the current row, and to the following n-1 rows (but not beyond a 7275to the current row, and to the following n-1 rows (but not beyond a
6867separator line)." 7276separator line).
7277
7278This function can also be called from Lisp programs and offers two additional
7279Arguments: EQUATION can be the formula to apply. If this argument is given,
7280the user will not be prompted. SUPPRESS-ALIGN is used to speed-up
7281recursive calls by by-passing unnecessary aligns. SUPPRESS-CONST suppresses
7282the interpretation of constants in the formula. SUPPRESS-STORE means the
7283formula should not be stored, either because it is already stored, or because
7284it is a modified equation that should not overwrite the stored one."
6868 (interactive "P") 7285 (interactive "P")
6869 (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown))) 7286 (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown)))
6870 (require 'calc) 7287 (require 'calc)
6871 (org-table-check-inside-data-field) 7288 (org-table-check-inside-data-field)
7289 (org-table-get-specials)
6872 (let* (fields 7290 (let* (fields
6873 (org-table-automatic-realign nil) 7291 (org-table-automatic-realign nil)
7292 (case-fold-search nil)
6874 (down (> ndown 1)) 7293 (down (> ndown 1))
6875 (formula (org-table-get-formula nil)) 7294 (formula (if (and equation suppress-store)
7295 equation
7296 (org-table-get-formula equation)))
6876 (n0 (org-table-current-column)) 7297 (n0 (org-table-current-column))
6877 n form fmt x ev) 7298 (modes (copy-sequence org-calc-default-modes))
7299 n form fmt x ev orig c)
7300 ;; Parse the format
6878 (if (string-match ";" formula) 7301 (if (string-match ";" formula)
6879 (let ((tmp (org-split-string formula ";"))) 7302 (let ((tmp (org-split-string formula ";")))
6880 (setq formula (car tmp) fmt (nth 1 tmp)))) 7303 (setq formula (car tmp) fmt (or (nth 1 tmp) ""))
7304 (while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt)
7305 (setq c (string-to-char (match-string 1 fmt))
7306 n (string-to-number (or (match-string 1 fmt) "")))
7307 (if (= c ?p) (org-set-calc-mode 'calc-internal-prec n)
7308 (org-set-calc-mode 'calc-float-format
7309 (list (cdr (assoc c '((?n. float) (?f. fix)
7310 (?s. sci) (?e. eng))))
7311 n)))
7312 (setq fmt (replace-match "" t t fmt)))
7313 (when (string-match "[DR]" fmt)
7314 (org-set-calc-mode 'calc-angle-mode
7315 (if (equal (match-string 0 fmt) "D")
7316 'deg 'rad))
7317 (setq fmt (replace-match "" t t fmt)))
7318 (when (string-match "F" fmt)
7319 (org-set-calc-mode 'calc-prefer-frac t)
7320 (setq fmt (replace-match "" t t fmt)))
7321 (when (string-match "S" fmt)
7322 (org-set-calc-mode 'calc-symbolic-mode t)
7323 (setq fmt (replace-match "" t t fmt)))
7324 (unless (string-match "\\S-" fmt)
7325 (setq fmt nil))))
7326 (if (and (not suppress-const) org-table-formula-use-constants)
7327 (setq formula (org-table-formula-substitute-names formula)))
7328 (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
6881 (while (> ndown 0) 7329 (while (> ndown 0)
6882 (setq fields (org-split-string 7330 (setq fields (org-split-string
6883 (concat " " (buffer-substring 7331 (buffer-substring
6884 (point-at-bol) (point-at-eol))) "|")) 7332 (point-at-bol) (point-at-eol)) " *| *"))
7333 (if org-table-formula-numbers-only
7334 (setq fields (mapcar
7335 (lambda (x) (number-to-string (string-to-number x)))
7336 fields)))
6885 (setq ndown (1- ndown)) 7337 (setq ndown (1- ndown))
6886 (setq form (copy-sequence formula)) 7338 (setq form (copy-sequence formula))
6887 (while (string-match "\\$\\([0-9]+\\)?" form) 7339 (while (string-match "\\$\\([0-9]+\\)?" form)
6888 (setq n (if (match-beginning 1) 7340 (setq n (if (match-beginning 1)
6889 (string-to-int (match-string 1 form)) 7341 (string-to-int (match-string 1 form))
6890 n0) 7342 n0)
6891 x (nth n fields)) 7343 x (nth (1- n) fields))
6892 (unless x (error "Invalid field specifier \"%s\"" 7344 (unless x (error "Invalid field specifier \"%s\""
6893 (match-string 0 form))) 7345 (match-string 0 form)))
6894 (if (equal (string-to-number x) 0) (setq x "0")) 7346 (if (equal x "") (setq x "0"))
6895 (setq form (replace-match x t t form))) 7347 (setq form (replace-match (concat "(" x ")") t t form)))
6896 (setq ev (calc-eval (list form) 'num)) 7348 (setq ev (calc-eval (cons form modes)
7349 (if org-table-formula-numbers-only 'num)))
7350
7351 (when org-table-formula-debug
7352 (with-output-to-temp-buffer "*Help*"
7353 (princ (format "Substitution history of formula
7354Orig: %s
7355$xyz-> %s
7356$1-> %s\n" orig formula form))
7357 (if (listp ev)
7358 (princ (format " %s^\nError: %s"
7359 (make-string (car ev) ?\-) (nth 1 ev)))
7360 (princ (format "Result: %s" ev))))
7361 (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
7362 (unless (and (interactive-p) (not ndown))
7363 (unless (let (inhibit-redisplay)
7364 (y-or-n-p "Debugging Formula. Continue to next? "))
7365 (org-table-align)
7366 (error "Abort"))
7367 (delete-window (get-buffer-window "*Help*"))
7368 (message "")))
6897 (if (listp ev) 7369 (if (listp ev)
6898 (error "Invalid expression: %s (%s at %d)" form (nth 1 ev) (car ev))) 7370 (setq fmt nil ev "#ERROR"))
6899 (org-table-blank-field) 7371 (org-table-blank-field)
6900 (if fmt 7372 (if fmt
6901 (insert (format fmt (string-to-number ev))) 7373 (insert (format fmt (string-to-number ev)))
@@ -6903,7 +7375,96 @@ separator line)."
6903 (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]")) 7375 (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]"))
6904 (call-interactively 'org-return) 7376 (call-interactively 'org-return)
6905 (setq ndown 0))) 7377 (setq ndown 0)))
6906 (org-table-align))) 7378 (or suppress-align (org-table-align))))
7379
7380(defun org-table-recalculate (&optional all noalign)
7381 "Recalculate the current table line by applying all stored formulas."
7382 (interactive "P")
7383 (or (memq this-command org-recalc-commands)
7384 (setq org-recalc-commands (cons this-command org-recalc-commands)))
7385 (unless (org-at-table-p) (error "Not at a table"))
7386 (org-table-get-specials)
7387 (let* ((eqlist (sort (org-table-get-stored-formulas)
7388 (lambda (a b) (< (car a) (car b)))))
7389 (inhibit-redisplay t)
7390 (line-re org-table-dataline-regexp)
7391 (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point))))
7392 (thiscol (org-table-current-column))
7393 beg end entry eql (cnt 0))
7394 ;; Insert constants in all formulas
7395 (setq eqlist
7396 (mapcar (lambda (x)
7397 (setcdr x (org-table-formula-substitute-names (cdr x)))
7398 x)
7399 eqlist))
7400 (if all
7401 (progn
7402 (setq end (move-marker (make-marker) (1+ (org-table-end))))
7403 (goto-char (setq beg (org-table-begin)))
7404 (if (re-search-forward org-table-recalculate-regexp end t)
7405 (setq line-re org-table-recalculate-regexp)
7406 (if (and (re-search-forward org-table-dataline-regexp end t)
7407 (re-search-forward org-table-hline-regexp end t)
7408 (re-search-forward org-table-dataline-regexp end t))
7409 (setq beg (match-beginning 0))
7410 nil))) ;; just leave beg where it is
7411 (setq beg (point-at-bol)
7412 end (move-marker (make-marker) (1+ (point-at-eol)))))
7413 (goto-char beg)
7414 (and all (message "Re-applying formulas to full table..."))
7415 (while (re-search-forward line-re end t)
7416 (unless (string-match "^ *[!$] *$" (org-table-get-field 1))
7417 ;; Unprotected line, recalculate
7418 (and all (message "Re-applying formulas to full table...(line %d)"
7419 (setq cnt (1+ cnt))))
7420 (setq org-last-recalc-line (org-current-line))
7421 (setq eql eqlist)
7422 (while (setq entry (pop eql))
7423 (goto-line org-last-recalc-line)
7424 (org-table-goto-column (car entry) nil 'force)
7425 (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
7426 (goto-line thisline)
7427 (org-table-goto-column thiscol)
7428 (or noalign (org-table-align)
7429 (and all (message "Re-applying formulas to %d lines...done" cnt)))))
7430
7431(defun org-table-formula-substitute-names (f)
7432 "Replace $const with values in stirng F."
7433 (let ((start 0) a n1 n2 nn1 nn2 s (f1 f))
7434 ;; First, check for column names
7435 (while (setq start (string-match org-table-column-name-regexp f start))
7436 (setq start (1+ start))
7437 (setq a (assoc (match-string 1 f) org-table-column-names))
7438 (setq f (replace-match (concat "$" (cdr a)) t t f)))
7439 ;; Expand ranges to vectors
7440 (while (string-match "\\$\\([0-9]+\\)\\.\\.\\.?\\$\\([0-9]+\\)" f)
7441 (setq n1 (string-to-number (match-string 1 f))
7442 n2 (string-to-number (match-string 2 f))
7443 nn1 (1+ (min n1 n2)) nn2 (max n1 n2)
7444 s (concat "[($" (number-to-string (1- nn1)) ")"))
7445 (loop for i from nn1 upto nn2 do
7446 (setq s (concat s ",($" (int-to-string i) ")")))
7447 (setq s (concat s "]"))
7448 (if (< n2 n1) (setq s (concat "rev(" s ")")))
7449 (setq f (replace-match s t t f)))
7450 ;; Parameters and constants
7451 (setq start 0)
7452 (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start))
7453 (setq start (1+ start))
7454 (if (setq a (save-match-data
7455 (org-table-get-constant (match-string 1 f))))
7456 (setq f (replace-match (concat "(" a ")") t t f))))
7457 (if org-table-formula-debug
7458 (put-text-property 0 (length f) :orig-formula f1 f))
7459 f))
7460
7461(defun org-table-get-constant (const)
7462 "Find the value for a parameter or constant in a formula.
7463Parameters get priority."
7464 (or (cdr (assoc const org-table-local-parameters))
7465 (cdr (assoc const org-table-formula-constants))
7466 (and (fboundp 'constants-get) (constants-get const))
7467 "#UNDEFINED_NAME"))
6907 7468
6908;;; The orgtbl minor mode 7469;;; The orgtbl minor mode
6909 7470
@@ -6962,7 +7523,7 @@ table editor in arbitrary modes.")
6962 7523
6963;;;###autoload 7524;;;###autoload
6964(defun orgtbl-mode (&optional arg) 7525(defun orgtbl-mode (&optional arg)
6965 "The `org-mode' table editor as a minor mode for use in other modes." 7526 "The `org-mode' table editor as a minor mode for use in other modes."
6966 (interactive) 7527 (interactive)
6967 (if (eq major-mode 'org-mode) 7528 (if (eq major-mode 'org-mode)
6968 ;; Exit without error, in case some hook functions calls this 7529 ;; Exit without error, in case some hook functions calls this
@@ -6972,6 +7533,11 @@ table editor in arbitrary modes.")
6972 (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode))) 7533 (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode)))
6973 (if orgtbl-mode 7534 (if orgtbl-mode
6974 (progn 7535 (progn
7536 (and (orgtbl-setup) (defun orgtbl-setup () nil))
7537 ;; Make sure we are first in minor-mode-map-alist
7538 (let ((c (assq 'orgtbl-mode minor-mode-map-alist)))
7539 (and c (setq minor-mode-map-alist
7540 (cons c (delq c minor-mode-map-alist)))))
6975 (set (make-local-variable (quote org-table-may-need-update)) t) 7541 (set (make-local-variable (quote org-table-may-need-update)) t)
6976 (make-local-hook (quote before-change-functions)) 7542 (make-local-hook (quote before-change-functions))
6977 (add-hook 'before-change-functions 'org-before-change-function 7543 (add-hook 'before-change-functions 'org-before-change-function
@@ -6979,7 +7545,7 @@ table editor in arbitrary modes.")
6979 (set (make-local-variable 'org-old-auto-fill-inhibit-regexp) 7545 (set (make-local-variable 'org-old-auto-fill-inhibit-regexp)
6980 auto-fill-inhibit-regexp) 7546 auto-fill-inhibit-regexp)
6981 (set (make-local-variable 'auto-fill-inhibit-regexp) 7547 (set (make-local-variable 'auto-fill-inhibit-regexp)
6982 (if auto-fill-inhibit-regexp 7548 (if auto-fill-inhibit-regexp
6983 (concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp) 7549 (concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp)
6984 "[ \t]*|")) 7550 "[ \t]*|"))
6985 (easy-menu-add orgtbl-mode-menu) 7551 (easy-menu-add orgtbl-mode-menu)
@@ -6994,81 +7560,134 @@ table editor in arbitrary modes.")
6994(put 'orgtbl-mode :menu-tag "Org Table Mode") 7560(put 'orgtbl-mode :menu-tag "Org Table Mode")
6995(add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map) 7561(add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map)
6996 7562
6997(defun orgtbl-make-binding (fun &rest keys) 7563(defun orgtbl-make-binding (fun n &rest keys)
6998 "Create a function for binding in the table minor mode." 7564 "Create a function for binding in the table minor mode.
6999 (list 'lambda '(arg) 7565FUN is the command to call inside a table. N is used to create a unique
7000 (concat "Run `" (symbol-name fun) "' or the default binding.") 7566command name. KEYS are keys that should be checked in for a command
7001 '(interactive "p") 7567to execute outside of tables."
7002 (list 'if 7568 (eval
7003 '(org-at-table-p) 7569 (list 'defun
7004 (list 'call-interactively (list 'quote fun)) 7570 (intern (concat "orgtbl-hijacker-command-" (int-to-string n)))
7005 (list 'let '(orgtbl-mode) 7571 '(arg)
7006 (list 'call-interactively 7572 (concat "In tables, run `" (symbol-name fun) "'.\n"
7007 (append '(or) 7573 "Outside of tables, run the binding of `"
7008 (mapcar (lambda (k) 7574 (mapconcat (lambda (x) (format "%s" x)) keys "' or `")
7009 (list 'key-binding k)) 7575 "'.")
7010 keys) 7576 '(interactive "p")
7011 '('orgtbl-error))))))) 7577 (list 'if
7578 '(org-at-table-p)
7579 (list 'call-interactively (list 'quote fun))
7580 (list 'let '(orgtbl-mode)
7581 (list 'call-interactively
7582 (append '(or)
7583 (mapcar (lambda (k)
7584 (list 'key-binding k))
7585 keys)
7586 '('orgtbl-error))))))))
7012 7587
7013(defun orgtbl-error () 7588(defun orgtbl-error ()
7014 "Error when there is no default binding for a table key." 7589 "Error when there is no default binding for a table key."
7015 (interactive) 7590 (interactive)
7016 (error "This key is has no function outside tables")) 7591 (error "This key is has no function outside tables"))
7017 7592
7018;; Keybindings for the minor mode 7593(defun orgtbl-setup ()
7019(let ((bindings 7594 "Setup orgtbl keymaps."
7020 (list 7595 (let ((nfunc 0)
7021 '([(meta shift left)] org-table-delete-column) 7596 (bindings
7022 '([(meta left)] org-table-move-column-left) 7597 (list
7023 '([(meta right)] org-table-move-column-right) 7598 '([(meta shift left)] org-table-delete-column)
7024 '([(meta shift right)] org-table-insert-column) 7599 '([(meta left)] org-table-move-column-left)
7025 '([(meta shift up)] org-table-kill-row) 7600 '([(meta right)] org-table-move-column-right)
7026 '([(meta shift down)] org-table-insert-row) 7601 '([(meta shift right)] org-table-insert-column)
7027 '([(meta up)] org-table-move-row-up) 7602 '([(meta shift up)] org-table-kill-row)
7028 '([(meta down)] org-table-move-row-down) 7603 '([(meta shift down)] org-table-insert-row)
7029 '("\C-c\C-w" org-table-cut-region) 7604 '([(meta up)] org-table-move-row-up)
7030 '("\C-c\M-w" org-table-copy-region) 7605 '([(meta down)] org-table-move-row-down)
7031 '("\C-c\C-y" org-table-paste-rectangle) 7606 '("\C-c\C-w" org-table-cut-region)
7032 '("\C-c-" org-table-insert-hline) 7607 '("\C-c\M-w" org-table-copy-region)
7033 '([(shift tab)] org-table-previous-field) 7608 '("\C-c\C-y" org-table-paste-rectangle)
7034 '("\C-c\C-c" org-table-align) 7609 '("\C-c-" org-table-insert-hline)
7035 '("\C-m" org-table-next-row) 7610 '([(shift tab)] org-table-previous-field)
7036 (list (org-key 'S-return) 'org-table-copy-down) 7611 '("\C-c\C-c" org-ctrl-c-ctrl-c)
7037 '([(meta return)] org-table-wrap-region) 7612 '("\C-m" org-table-next-row)
7038 '("\C-c\C-q" org-table-wrap-region) 7613 (list (org-key 'S-return) 'org-table-copy-down)
7039 '("\C-c?" org-table-current-column) 7614 '([(meta return)] org-table-wrap-region)
7040 '("\C-c " org-table-blank-field) 7615 '("\C-c\C-q" org-table-wrap-region)
7041 '("\C-c+" org-table-sum) 7616 '("\C-c?" org-table-current-column)
7042 '("\C-c|" org-table-toggle-vline-visibility) 7617 '("\C-c " org-table-blank-field)
7043 '("\C-c=" org-table-eval-formula))) 7618 '("\C-c+" org-table-sum)
7044 elt key fun cmd) 7619 '("\C-c|" org-table-toggle-vline-visibility)
7045 (while (setq elt (pop bindings)) 7620 '("\C-c=" org-table-eval-formula)
7046 (setq key (car elt) 7621 '("\C-c*" org-table-recalculate)
7047 fun (nth 1 elt) 7622 '([(control ?#)] org-table-rotate-recalc-marks)))
7048 cmd (orgtbl-make-binding fun key)) 7623 elt key fun cmd)
7049 (define-key orgtbl-mode-map key cmd))) 7624 (while (setq elt (pop bindings))
7050 7625 (setq nfunc (1+ nfunc))
7051;; Special treatment needed for TAB and RET 7626 (setq key (car elt)
7052 7627 fun (nth 1 elt)
7053(define-key orgtbl-mode-map [(return)] 7628 cmd (orgtbl-make-binding fun nfunc key))
7054 (orgtbl-make-binding 'orgtbl-ret [(return)] "\C-m")) 7629 (define-key orgtbl-mode-map key cmd))
7055(define-key orgtbl-mode-map "\C-m" 7630 ;; Special treatment needed for TAB and RET
7056 (orgtbl-make-binding 'orgtbl-ret "\C-m" [(return)])) 7631 (define-key orgtbl-mode-map [(return)]
7057(define-key orgtbl-mode-map [(tab)] 7632 (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m"))
7058 (orgtbl-make-binding 'orgtbl-tab [(tab)] "\C-i")) 7633 (define-key orgtbl-mode-map "\C-m"
7059(define-key orgtbl-mode-map "\C-i" 7634 (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)]))
7060 (orgtbl-make-binding 'orgtbl-tab "\C-i" [(tab)])) 7635 (define-key orgtbl-mode-map [(tab)]
7061 7636 (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i"))
7062(when orgtbl-optimized 7637 (define-key orgtbl-mode-map "\C-i"
7063 ;; If the user wants maximum table support, we need to hijack 7638 (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)])))
7064 ;; some standard editing functions 7639 (when orgtbl-optimized
7065 (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command 7640 ;; If the user wants maximum table support, we need to hijack
7066 orgtbl-mode-map global-map) 7641 ;; some standard editing functions
7067 (substitute-key-definition 'delete-char 'orgtbl-delete-char 7642 (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command
7068 orgtbl-mode-map global-map) 7643 orgtbl-mode-map global-map)
7069 (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char 7644 (substitute-key-definition 'delete-char 'orgtbl-delete-char
7070 orgtbl-mode-map global-map) 7645 orgtbl-mode-map global-map)
7071 (define-key org-mode-map "|" 'self-insert-command)) 7646 (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char
7647 orgtbl-mode-map global-map)
7648 (define-key org-mode-map "|" 'self-insert-command))
7649 (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
7650 '("OrgTbl"
7651 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
7652 ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
7653 ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
7654 ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
7655 "--"
7656 ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
7657 ["Copy Field from Above"
7658 org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
7659 "--"
7660 ("Column"
7661 ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
7662 ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
7663 ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
7664 ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
7665 ("Row"
7666 ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
7667 ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
7668 ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
7669 ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
7670 "--"
7671 ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
7672 ("Rectangle"
7673 ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
7674 ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
7675 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
7676 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
7677 "--"
7678 ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
7679 ["Eval Formula Down " (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
7680 ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"]
7681 ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"]
7682 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"]
7683 ["Sum Column/Rectangle" org-table-sum
7684 :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
7685 ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
7686 ["Debug Formulas"
7687 (setq org-table-formula-debug (not org-table-formula-debug))
7688 :style toggle :selected org-table-formula-debug]
7689 ))
7690 t)
7072 7691
7073(defun orgtbl-tab () 7692(defun orgtbl-tab ()
7074 "Justification and field motion for `orgtbl-mode'." 7693 "Justification and field motion for `orgtbl-mode'."
@@ -7108,13 +7727,13 @@ reduced column width."
7108 (interactive "p") 7727 (interactive "p")
7109 (if (and (org-at-table-p) 7728 (if (and (org-at-table-p)
7110 (eq N 1) 7729 (eq N 1)
7730 (string-match "|" (buffer-substring (point-at-bol) (point)))
7111 (looking-at ".*?|")) 7731 (looking-at ".*?|"))
7112 (let ((pos (point))) 7732 (let ((pos (point)))
7113 (backward-delete-char N) 7733 (backward-delete-char N)
7114 (skip-chars-forward "^|") 7734 (skip-chars-forward "^|")
7115 (insert " ") 7735 (insert " ")
7116 (goto-char (1- pos))) 7736 (goto-char (1- pos)))
7117 (message "%s" last-input-event) (sit-for 1)
7118 (delete-backward-char N))) 7737 (delete-backward-char N)))
7119 7738
7120(defun orgtbl-delete-char (N) 7739(defun orgtbl-delete-char (N)
@@ -7125,6 +7744,8 @@ will still be marked for re-alignment, because a narrow field may lead to
7125a reduced column width." 7744a reduced column width."
7126 (interactive "p") 7745 (interactive "p")
7127 (if (and (org-at-table-p) 7746 (if (and (org-at-table-p)
7747 (not (bolp))
7748 (not (= (char-after) ?|))
7128 (eq N 1)) 7749 (eq N 1))
7129 (if (looking-at ".*?|") 7750 (if (looking-at ".*?|")
7130 (let ((pos (point))) 7751 (let ((pos (point)))
@@ -7134,41 +7755,6 @@ a reduced column width."
7134 (goto-char pos))) 7755 (goto-char pos)))
7135 (delete-char N))) 7756 (delete-char N)))
7136 7757
7137(easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
7138 '("Tbl"
7139 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
7140 ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"]
7141 ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"]
7142 ["Next Row" org-return :active (org-at-table-p) :keys "RET"]
7143 "--"
7144 ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
7145 ["Copy Field from Above"
7146 org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
7147 "--"
7148 ("Column"
7149 ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
7150 ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"]
7151 ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"]
7152 ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"])
7153 ("Row"
7154 ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"]
7155 ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"]
7156 ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"]
7157 ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"]
7158 "--"
7159 ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"])
7160 ("Rectangle"
7161 ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"]
7162 ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"]
7163 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
7164 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
7165 "--"
7166 ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"]
7167 ["Sum Column/Rectangle" org-table-sum
7168 :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"]
7169 ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
7170 ))
7171
7172;;; Exporting 7758;;; Exporting
7173 7759
7174(defconst org-level-max 20) 7760(defconst org-level-max 20)
@@ -7503,7 +8089,7 @@ Entries can be like (\"ent\"), in which case \"\\ent\" will be translated to
7503In that case, \"\\ent\" will be translated to \"&other;\". 8089In that case, \"\\ent\" will be translated to \"&other;\".
7504The list contains HTML entities for Latin-1, Greek and other symbols. 8090The list contains HTML entities for Latin-1, Greek and other symbols.
7505It is supplemented by a number of commonly used TeX macros with appropriate 8091It is supplemented by a number of commonly used TeX macros with appropriate
7506translations.") 8092translations. There is currently no way for users to extend this.")
7507 8093
7508(defvar org-last-level nil) ; dynamically scoped variable 8094(defvar org-last-level nil) ; dynamically scoped variable
7509 8095
@@ -7676,7 +8262,7 @@ and all options lines."
7676 (let* ((filename (concat (file-name-sans-extension (buffer-file-name)) 8262 (let* ((filename (concat (file-name-sans-extension (buffer-file-name))
7677 ".txt")) 8263 ".txt"))
7678 (buffer (find-file-noselect filename)) 8264 (buffer (find-file-noselect filename))
7679 (ore (concat 8265 (ore (concat
7680 (org-make-options-regexp 8266 (org-make-options-regexp
7681 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" 8267 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
7682 "STARTUP" "ARCHIVE" 8268 "STARTUP" "ARCHIVE"
@@ -7908,7 +8494,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
7908 ;; This is a headline 8494 ;; This is a headline
7909 (progn 8495 (progn
7910 (setq level (- (match-end 1) (match-beginning 1)) 8496 (setq level (- (match-end 1) (match-beginning 1))
7911 txt (save-match-data 8497 txt (save-match-data
7912 (org-html-expand 8498 (org-html-expand
7913 (match-string 3 line))) 8499 (match-string 3 line)))
7914 todo 8500 todo
@@ -8413,10 +8999,10 @@ When LEVEL is non-nil, increase section numbers on that level."
8413 8999
8414;; - Bindings in Org-mode map are currently 9000;; - Bindings in Org-mode map are currently
8415;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet 9001;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet
8416;; abcd fgh j lmnopqrstuvwxyz ? # -+ /= [] ; |,.<> \t necessary bindings 9002;; abcd fgh j lmnopqrstuvwxyz ? #$ -+*/= [] ; |,.<>~ \t necessary bindings
8417;; e (?) useful from outline-mode 9003;; e (?) useful from outline-mode
8418;; i k @ expendable from outline-mode 9004;; i k @ expendable from outline-mode
8419;; 0123456789 ! $%^& * ()_{} " ~`' free 9005;; 0123456789 ! %^& ()_{} " `' free
8420 9006
8421(define-key org-mode-map "\C-i" 'org-cycle) 9007(define-key org-mode-map "\C-i" 'org-cycle)
8422(define-key org-mode-map [(meta tab)] 'org-complete) 9008(define-key org-mode-map [(meta tab)] 'org-complete)
@@ -8476,7 +9062,9 @@ When LEVEL is non-nil, increase section numbers on that level."
8476(define-key org-mode-map "\C-c+" 'org-table-sum) 9062(define-key org-mode-map "\C-c+" 'org-table-sum)
8477(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility) 9063(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility)
8478(define-key org-mode-map "\C-c=" 'org-table-eval-formula) 9064(define-key org-mode-map "\C-c=" 'org-table-eval-formula)
8479(define-key org-mode-map "\C-c#" 'org-table-create-with-table.el) 9065(define-key org-mode-map "\C-c*" 'org-table-recalculate)
9066(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
9067(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el)
8480(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) 9068(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region)
8481(define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) 9069(define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii)
8482(define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) 9070(define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii)
@@ -8489,12 +9077,7 @@ When LEVEL is non-nil, increase section numbers on that level."
8489(define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) 9077(define-key org-mode-map "\C-c\C-xh" 'org-export-as-html)
8490(define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open) 9078(define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open)
8491 9079
8492(defsubst org-table-p () 9080(defsubst org-table-p () (org-at-table-p))
8493 (if (and (eq major-mode 'org-mode) font-lock-mode)
8494 (eq (get-text-property (point) 'face) 'org-table)
8495 ;; (save-match-data (org-at-table-p)))) ; FIXME: OK to not use this?
8496 (org-at-table-p)))
8497
8498 9081
8499(defun org-self-insert-command (N) 9082(defun org-self-insert-command (N)
8500 "Like `self-insert-command', use overwrite-mode for whitespace in tables. 9083 "Like `self-insert-command', use overwrite-mode for whitespace in tables.
@@ -8525,7 +9108,8 @@ reduced column width."
8525 (interactive "p") 9108 (interactive "p")
8526 (if (and (org-table-p) 9109 (if (and (org-table-p)
8527 (eq N 1) 9110 (eq N 1)
8528 (looking-at ".*?|")) 9111 (string-match "|" (buffer-substring (point-at-bol) (point)))
9112 (looking-at ".*?|"))
8529 (let ((pos (point))) 9113 (let ((pos (point)))
8530 (backward-delete-char N) 9114 (backward-delete-char N)
8531 (skip-chars-forward "^|") 9115 (skip-chars-forward "^|")
@@ -8541,6 +9125,8 @@ will still be marked for re-alignment, because a narrow field may lead to
8541a reduced column width." 9125a reduced column width."
8542 (interactive "p") 9126 (interactive "p")
8543 (if (and (org-table-p) 9127 (if (and (org-table-p)
9128 (not (bolp))
9129 (not (= (char-after) ?|))
8544 (eq N 1)) 9130 (eq N 1))
8545 (if (looking-at ".*?|") 9131 (if (looking-at ".*?|")
8546 (let ((pos (point))) 9132 (let ((pos (point)))
@@ -8655,16 +9241,14 @@ a reduced column width."
8655(defun org-copy-special () 9241(defun org-copy-special ()
8656 "Call either `org-table-copy' or `org-copy-subtree'." 9242 "Call either `org-table-copy' or `org-copy-subtree'."
8657 (interactive) 9243 (interactive)
8658 (if (org-at-table-p) 9244 (call-interactively
8659 (org-table-copy-region) 9245 (if (org-at-table-p) 'org-table-copy-region 'org-copy-subtree)))
8660 (org-copy-subtree)))
8661 9246
8662(defun org-cut-special () 9247(defun org-cut-special ()
8663 "Call either `org-table-copy' or `org-cut-subtree'." 9248 "Call either `org-table-copy' or `org-cut-subtree'."
8664 (interactive) 9249 (interactive)
8665 (if (org-at-table-p) 9250 (call-interactively
8666 (org-table-cut-region) 9251 (if (org-at-table-p) 'org-table-cut-region 'org-cut-subtree)))
8667 (org-cut-subtree)))
8668 9252
8669(defun org-paste-special (arg) 9253(defun org-paste-special (arg)
8670 "Call either `org-table-paste-rectangle' or `org-paste-subtree'." 9254 "Call either `org-table-paste-rectangle' or `org-paste-subtree'."
@@ -8674,23 +9258,37 @@ a reduced column width."
8674 (org-paste-subtree arg))) 9258 (org-paste-subtree arg)))
8675 9259
8676(defun org-ctrl-c-ctrl-c (&optional arg) 9260(defun org-ctrl-c-ctrl-c (&optional arg)
8677 "Call realign table, or recognize a table.el table. 9261 "Call realign table, or recognize a table.el table, or update keywords.
8678When the cursor is inside a table created by the table.el package, 9262When the cursor is inside a table created by the table.el package,
8679activate that table. Otherwise, if the cursor is at a normal table 9263activate that table. Otherwise, if the cursor is at a normal table
8680created with org.el, re-align that table. This command works even if 9264created with org.el, re-align that table. This command works even if
8681the automatic table editor has been turned off." 9265the automatic table editor has been turned off.
9266If the cursor is in one of the special #+KEYWORD lines, this triggers
9267scanning the buffer for these lines and updating the information."
8682 (interactive "P") 9268 (interactive "P")
8683 (let ((org-enable-table-editor t)) 9269 (let ((org-enable-table-editor t))
8684 (cond 9270 (cond
8685 ((org-at-table.el-p) 9271 ((org-at-table.el-p)
8686 (require 'table) 9272 (require 'table)
8687 (beginning-of-line 1) 9273 (beginning-of-line 1)
8688 (re-search-forward "|" (save-excursion (end-of-line 2) (point))) ;FIXME: line-end-position? 9274 (re-search-forward "|" (save-excursion (end-of-line 2) (point)))
8689 (table-recognize-table)) 9275 (table-recognize-table))
8690 ((org-at-table-p) 9276 ((org-at-table-p)
9277 (org-table-maybe-eval-formula)
9278 (if arg
9279 (org-table-recalculate t)
9280 (org-table-maybe-recalculate-line))
8691 (org-table-align)) 9281 (org-table-align))
8692 ((save-excursion (beginning-of-line 1) (looking-at "#\\+[A-Z]+")) 9282 ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
8693 (let ((org-inhibit-startup t)) (org-mode))) 9283 (cond
9284 ((equal (match-string 1) "TBLFM")
9285 ;; Recalculate the table before this line
9286 (save-excursion
9287 (beginning-of-line 1)
9288 (skip-chars-backward " \r\n\t")
9289 (if (org-at-table-p) (org-table-recalculate t))))
9290 (t
9291 (let ((org-inhibit-startup t)) (org-mode)))))
8694 ((org-region-active-p) 9292 ((org-region-active-p)
8695 (org-table-convert-region (region-beginning) (region-end) arg)) 9293 (org-table-convert-region (region-beginning) (region-end) arg))
8696 ((and (region-beginning) (region-end)) 9294 ((and (region-beginning) (region-end))
@@ -8718,18 +9316,59 @@ the automatic table editor has been turned off."
8718 9316
8719;;; Menu entries 9317;;; Menu entries
8720 9318
8721;; First, remove the outline menus. Org-mode does not neede these commands.
8722(if org-xemacs-p
8723 (add-hook 'org-mode-hook
8724 (lambda ()
8725 (delete-menu-item '("Headings"))
8726 (delete-menu-item '("Show"))
8727 (delete-menu-item '("Hide"))
8728 (set-menubar-dirty-flag)))
8729 (setq org-mode-map (delq (assoc 'menu-bar (cdr org-mode-map))
8730 org-mode-map)))
8731
8732;; Define the Org-mode menus 9319;; Define the Org-mode menus
9320(easy-menu-define org-tbl-menu org-mode-map "Tbl menu"
9321 '("Tbl"
9322 ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
9323 ["Next Field" org-cycle (org-at-table-p)]
9324 ["Previous Field" org-shifttab (org-at-table-p)]
9325 ["Next Row" org-return (org-at-table-p)]
9326 "--"
9327 ["Blank Field" org-table-blank-field (org-at-table-p)]
9328 ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
9329 "--"
9330 ("Column"
9331 ["Move Column Left" org-metaleft (org-at-table-p)]
9332 ["Move Column Right" org-metaright (org-at-table-p)]
9333 ["Delete Column" org-shiftmetaleft (org-at-table-p)]
9334 ["Insert Column" org-shiftmetaright (org-at-table-p)])
9335 ("Row"
9336 ["Move Row Up" org-metaup (org-at-table-p)]
9337 ["Move Row Down" org-metadown (org-at-table-p)]
9338 ["Delete Row" org-shiftmetaup (org-at-table-p)]
9339 ["Insert Row" org-shiftmetadown (org-at-table-p)]
9340 "--"
9341 ["Insert Hline" org-table-insert-hline (org-at-table-p)])
9342 ("Rectangle"
9343 ["Copy Rectangle" org-copy-special (org-at-table-p)]
9344 ["Cut Rectangle" org-cut-special (org-at-table-p)]
9345 ["Paste Rectangle" org-paste-special (org-at-table-p)]
9346 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
9347 "--"
9348 ("Calculate"
9349 ["Eval Formula" org-table-eval-formula (org-at-table-p)]
9350 ["Eval Formula Down" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
9351 ["Recalculate line" org-table-recalculate (org-at-table-p)]
9352 ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
9353 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
9354 ["Sum Column/Rectangle" org-table-sum
9355 (or (org-at-table-p) (org-region-active-p))]
9356 ["Which Column?" org-table-current-column (org-at-table-p)])
9357 ["Debug Formulas"
9358 (setq org-table-formula-debug (not org-table-formula-debug))
9359 :style toggle :selected org-table-formula-debug]
9360 "--"
9361 ["Invisible Vlines" org-table-toggle-vline-visibility
9362 :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
9363 "--"
9364 ["Create" org-table-create (and (not (org-at-table-p))
9365 org-enable-table-editor)]
9366 ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
9367 ["Import from File" org-table-import (not (org-at-table-p))]
9368 ["Export to File" org-table-export (org-at-table-p)]
9369 "--"
9370 ["Create/Convert from/to table.el" org-table-create-with-table.el t]))
9371
8733(easy-menu-define org-org-menu org-mode-map "Org menu" 9372(easy-menu-define org-org-menu org-mode-map "Org menu"
8734 '("Org" 9373 '("Org"
8735 ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))] 9374 ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))]
@@ -8794,49 +9433,6 @@ the automatic table editor has been turned off."
8794 ["Insert Link" org-insert-link t] 9433 ["Insert Link" org-insert-link t]
8795 ["Follow Link" org-open-at-point t]) 9434 ["Follow Link" org-open-at-point t])
8796 "--" 9435 "--"
8797 ("Table"
8798 ["Align" org-ctrl-c-ctrl-c (org-at-table-p)]
8799 ["Next Field" org-cycle (org-at-table-p)]
8800 ["Previous Field" org-shifttab (org-at-table-p)]
8801 ["Next Row" org-return (org-at-table-p)]
8802 "--"
8803 ["Blank Field" org-table-blank-field (org-at-table-p)]
8804 ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
8805 "--"
8806 ("Column"
8807 ["Move Column Left" org-metaleft (org-at-table-p)]
8808 ["Move Column Right" org-metaright (org-at-table-p)]
8809 ["Delete Column" org-shiftmetaleft (org-at-table-p)]
8810 ["Insert Column" org-shiftmetaright (org-at-table-p)])
8811 ("Row"
8812 ["Move Row Up" org-metaup (org-at-table-p)]
8813 ["Move Row Down" org-metadown (org-at-table-p)]
8814 ["Delete Row" org-shiftmetaup (org-at-table-p)]
8815 ["Insert Row" org-shiftmetadown (org-at-table-p)]
8816 "--"
8817 ["Insert Hline" org-table-insert-hline (org-at-table-p)])
8818 ("Rectangle"
8819 ["Copy Rectangle" org-copy-special (org-at-table-p)]
8820 ["Cut Rectangle" org-cut-special (org-at-table-p)]
8821 ["Paste Rectangle" org-paste-special (org-at-table-p)]
8822 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
8823 "--"
8824 ["Which Column?" org-table-current-column (org-at-table-p)]
8825 ["Sum Column/Rectangle" org-table-sum
8826 (or (org-at-table-p) (org-region-active-p))]
8827 ["Eval Formula" org-table-eval-formula (org-at-table-p)]
8828 "--"
8829 ["Invisible Vlines" org-table-toggle-vline-visibility
8830 :style toggle :selected (org-in-invisibility-spec-p '(org-table))]
8831 "--"
8832 ["Create" org-table-create (and (not (org-at-table-p))
8833 org-enable-table-editor)]
8834 ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))]
8835 ["Import from File" org-table-import (not (org-at-table-p))]
8836 ["Export to File" org-table-export (org-at-table-p)]
8837 "--"
8838 ["Create/Convert from/to table.el" org-table-create-with-table.el t])
8839 "--"
8840 ("Export" 9436 ("Export"
8841 ["ASCII" org-export-as-ascii t] 9437 ["ASCII" org-export-as-ascii t]
8842 ["Extract Visible Text" org-export-copy-visible t] 9438 ["Extract Visible Text" org-export-copy-visible t]
@@ -8865,10 +9461,10 @@ With optional NODE, go directly to that node."
8865 (Info-goto-node (format "(org)%s" (or node "")))) 9461 (Info-goto-node (format "(org)%s" (or node ""))))
8866 9462
8867(defun org-install-agenda-files-menu () 9463(defun org-install-agenda-files-menu ()
8868 (easy-menu-change 9464 (easy-menu-change
8869 '("Org") "File List for Agenda" 9465 '("Org") "File List for Agenda"
8870 (append 9466 (append
8871 (list 9467 (list
8872 ["Edit File List" (customize-variable 'org-agenda-files) t] 9468 ["Edit File List" (customize-variable 'org-agenda-files) t]
8873 ["Add Current File to List" org-add-file t] 9469 ["Add Current File to List" org-add-file t]
8874 ["Remove Current File from List" org-remove-file t] 9470 ["Remove Current File from List" org-remove-file t]
@@ -8983,7 +9579,7 @@ that can be added."
8983;; Functions needed for compatibility with old outline.el 9579;; Functions needed for compatibility with old outline.el
8984 9580
8985;; The following functions capture almost the entire compatibility code 9581;; The following functions capture almost the entire compatibility code
8986;; between the different versions of outline-mode. The only other place 9582;; between the different versions of outline-mode. The only other place
8987;; where this is important are the font-lock-keywords. Search for 9583;; where this is important are the font-lock-keywords. Search for
8988;; `org-noutline-p' to find it. 9584;; `org-noutline-p' to find it.
8989 9585
@@ -9048,7 +9644,7 @@ If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
9048This function considers both visible and invisible heading lines. 9644This function considers both visible and invisible heading lines.
9049With argument, move up ARG levels." 9645With argument, move up ARG levels."
9050 (if org-noutline-p 9646 (if org-noutline-p
9051 (if (fboundp 'outline-up-heading-all) 9647 (if (fboundp 'outline-up-heading-all)
9052 (outline-up-heading-all arg) ; emacs 21 version of outline.el 9648 (outline-up-heading-all arg) ; emacs 21 version of outline.el
9053 (outline-up-heading arg t)) ; emacs 22 version of outline.el 9649 (outline-up-heading arg t)) ; emacs 22 version of outline.el
9054 (org-back-to-heading t) 9650 (org-back-to-heading t)
@@ -9104,8 +9700,8 @@ When ENTRY is non-nil, show the entire entry."
9104 9700
9105(defun org-show-subtree () 9701(defun org-show-subtree ()
9106 "Show everything after this heading at deeper levels." 9702 "Show everything after this heading at deeper levels."
9107 (outline-flag-region 9703 (outline-flag-region
9108 (point) 9704 (point)
9109 (save-excursion 9705 (save-excursion
9110 (outline-end-of-subtree) (outline-next-heading) (point)) 9706 (outline-end-of-subtree) (outline-next-heading) (point))
9111 (if org-noutline-p nil ?\n))) 9707 (if org-noutline-p nil ?\n)))
@@ -9116,7 +9712,7 @@ Show the heading too, if it is currently invisible."
9116 (interactive) 9712 (interactive)
9117 (save-excursion 9713 (save-excursion
9118 (org-back-to-heading t) 9714 (org-back-to-heading t)
9119 (outline-flag-region 9715 (outline-flag-region
9120 (1- (point)) 9716 (1- (point))
9121 (save-excursion 9717 (save-excursion
9122 (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move) 9718 (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el
index b3c69ca657f..34b661afcc4 100644
--- a/lisp/textmodes/picture.el
+++ b/lisp/textmodes/picture.el
@@ -359,7 +359,7 @@ With positive argument insert that many lines."
359 (point)))) 359 (point))))
360 (replace-match newtext fixedcase literal) 360 (replace-match newtext fixedcase literal)
361 (if (< change 0) 361 (if (< change 0)
362 (insert-char ?\ (- change))))) 362 (insert-char ?\s (- change)))))
363 363
364;; Picture Tabs 364;; Picture Tabs
365 365
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index 2be01d630f9..aac70dd1e23 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -816,7 +816,7 @@ Otherwise, follow with a newline."
816 (texinfo-last-unended-begin) 816 (texinfo-last-unended-begin)
817 (match-string 1))) 817 (match-string 1)))
818 "table") 818 "table")
819 ? ;space 819 ?\s
820 ?\n))) 820 ?\n)))
821 821
822(defun texinfo-insert-@kbd (&optional arg) 822(defun texinfo-insert-@kbd (&optional arg)
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 4da3d22584a..4148d62c263 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,25 @@
12005-06-28 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
2
3 * url-http.el (url-http-create-request): Call url-recreate-url
4 in proxy case.
5
62005-06-27 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
7
8 * url-http.el (url-http-create-request): When computing real-fname,
9 call url-filename in both cases.
10
112005-06-27 Richard M. Stallman <rms@gnu.org>
12
13 * url-cookie.el (url-cookie-store): Rename arg PATH to LOCALPART.
14 (url-cookie-retrieve): Likewise.
15 (url-cookie-generate-header-lines): Likewise.
16 (url-cookie-handle-set-cookie): Likewise.
17 (url-cookie-create): Expect :localpart instead of :path.
18 (url-cookie-localpart): Renamed from url-cookie-path.
19 (url-cookie-set-localpart): Renamed from url-cookie-set-path.
20 (url-cookie-file): Doc fix.
21 (url-cookie-p): Add doc string.
22
12005-06-23 Richard M. Stallman <rms@gnu.org> 232005-06-23 Richard M. Stallman <rms@gnu.org>
2 24
3 * url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie. 25 * url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie.
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index db50f289521..42c74080ec8 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -34,35 +34,48 @@
34;; 'open standard' defining this crap. 34;; 'open standard' defining this crap.
35;; 35;;
36;; A cookie is stored internally as a vector of 7 slots 36;; A cookie is stored internally as a vector of 7 slots
37;; [ 'cookie name value expires path domain secure ] 37;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
38 38
39(defsubst url-cookie-name (cookie) (aref cookie 1)) 39(defsubst url-cookie-name (cookie) (aref cookie 1))
40(defsubst url-cookie-value (cookie) (aref cookie 2)) 40(defsubst url-cookie-value (cookie) (aref cookie 2))
41(defsubst url-cookie-expires (cookie) (aref cookie 3)) 41(defsubst url-cookie-expires (cookie) (aref cookie 3))
42(defsubst url-cookie-path (cookie) (aref cookie 4)) 42(defsubst url-cookie-localpart (cookie) (aref cookie 4))
43(defsubst url-cookie-domain (cookie) (aref cookie 5)) 43(defsubst url-cookie-domain (cookie) (aref cookie 5))
44(defsubst url-cookie-secure (cookie) (aref cookie 6)) 44(defsubst url-cookie-secure (cookie) (aref cookie 6))
45 45
46(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val)) 46(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
47(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val)) 47(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
48(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val)) 48(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
49(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val)) 49(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
50(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val)) 50(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
51(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val)) 51(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
52(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args))) 52(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
53 53
54(defsubst url-cookie-create (&rest args) 54(defsubst url-cookie-create (&rest args)
55 "Create a cookie vector object from keyword-value pairs ARGS.
56The keywords allowed are
57 :name NAME
58 :value VALUE
59 :expires TIME
60 :localpart LOCALPAR
61 :domain DOMAIN
62 :secure ???
63Could someone fill in more information?"
55 (let ((retval (make-vector 7 nil))) 64 (let ((retval (make-vector 7 nil)))
56 (aset retval 0 'cookie) 65 (aset retval 0 'cookie)
57 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args)) 66 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
58 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args)) 67 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
59 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args)) 68 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
60 (url-cookie-set-path retval (url-cookie-retrieve-arg :path args)) 69 (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
61 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args)) 70 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
62 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args)) 71 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
63 retval)) 72 retval))
64 73
65(defun url-cookie-p (obj) 74(defun url-cookie-p (obj)
75 "Return non-nil if OBJ is a cookie vector object.
76These objects represent cookies in the URL package.
77A cookie vector object is a vector of 7 slots:
78 [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
66 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie))) 79 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
67 80
68(defgroup url-cookie nil 81(defgroup url-cookie nil
@@ -73,7 +86,8 @@
73 86
74(defvar url-cookie-storage nil "Where cookies are stored.") 87(defvar url-cookie-storage nil "Where cookies are stored.")
75(defvar url-cookie-secure-storage nil "Where secure cookies are stored.") 88(defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
76(defcustom url-cookie-file nil "*Where cookies are stored on disk." 89(defcustom url-cookie-file nil
90 "*File where cookies are stored on disk."
77 :type '(choice (const :tag "Default" :value nil) file) 91 :type '(choice (const :tag "Default" :value nil) file)
78 :group 'url-file 92 :group 'url-file
79 :group 'url-cookie) 93 :group 'url-cookie)
@@ -154,7 +168,7 @@ telling Microsoft that."
154 (write-file fname) 168 (write-file fname)
155 (kill-buffer (current-buffer)))))) 169 (kill-buffer (current-buffer))))))
156 170
157(defun url-cookie-store (name value &optional expires domain path secure) 171(defun url-cookie-store (name value &optional expires domain localpart secure)
158 "Store a netscape-style cookie." 172 "Store a netscape-style cookie."
159 (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage)) 173 (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
160 (tmp storage) 174 (tmp storage)
@@ -173,7 +187,7 @@ telling Microsoft that."
173 (while storage 187 (while storage
174 (setq cur (car storage) 188 (setq cur (car storage)
175 storage (cdr storage)) 189 storage (cdr storage))
176 (if (and (equal path (url-cookie-path cur)) 190 (if (and (equal localpart (url-cookie-localpart cur))
177 (equal name (url-cookie-name cur))) 191 (equal name (url-cookie-name cur)))
178 (progn 192 (progn
179 (url-cookie-set-expires cur expires) 193 (url-cookie-set-expires cur expires)
@@ -186,7 +200,7 @@ telling Microsoft that."
186 :value value 200 :value value
187 :expires expires 201 :expires expires
188 :domain domain 202 :domain domain
189 :path path 203 :localpart localpart
190 :secure secure) 204 :secure secure)
191 (cdr found-domain))))) 205 (cdr found-domain)))))
192 ;; Need to add a new top-level domain 206 ;; Need to add a new top-level domain
@@ -194,7 +208,7 @@ telling Microsoft that."
194 :value value 208 :value value
195 :expires expires 209 :expires expires
196 :domain domain 210 :domain domain
197 :path path 211 :localpart localpart
198 :secure secure)) 212 :secure secure))
199 (cond 213 (cond
200 (storage 214 (storage
@@ -235,8 +249,8 @@ telling Microsoft that."
235 (> (- cur-norm exp-norm) 1)))))) 249 (> (- cur-norm exp-norm) 1))))))
236 250
237;;;###autoload 251;;;###autoload
238(defun url-cookie-retrieve (host path &optional secure) 252(defun url-cookie-retrieve (host localpart &optional secure)
239 "Retrieve all the netscape-style cookies for a specified HOST and PATH." 253 "Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."
240 (let ((storage (if secure 254 (let ((storage (if secure
241 (append url-cookie-secure-storage url-cookie-storage) 255 (append url-cookie-secure-storage url-cookie-storage)
242 url-cookie-storage)) 256 url-cookie-storage))
@@ -244,7 +258,7 @@ telling Microsoft that."
244 (cookies nil) 258 (cookies nil)
245 (cur nil) 259 (cur nil)
246 (retval nil) 260 (retval nil)
247 (path-regexp nil)) 261 (localpart-regexp nil))
248 (while storage 262 (while storage
249 (setq cur (car storage) 263 (setq cur (car storage)
250 storage (cdr storage) 264 storage (cdr storage)
@@ -255,26 +269,26 @@ telling Microsoft that."
255 (while cookies 269 (while cookies
256 (setq cur (car cookies) 270 (setq cur (car cookies)
257 cookies (cdr cookies) 271 cookies (cdr cookies)
258 path-regexp (concat "^" (regexp-quote 272 localpart-regexp (concat "^" (regexp-quote
259 (url-cookie-path cur)))) 273 (url-cookie-localpart cur))))
260 (if (and (string-match path-regexp path) 274 (if (and (string-match localpart-regexp localpart)
261 (not (url-cookie-expired-p cur))) 275 (not (url-cookie-expired-p cur)))
262 (setq retval (cons cur retval)))))) 276 (setq retval (cons cur retval))))))
263 retval)) 277 retval))
264 278
265;;;###autoload 279;;;###autoload
266(defun url-cookie-generate-header-lines (host path secure) 280(defun url-cookie-generate-header-lines (host localpart secure)
267 (let* ((cookies (url-cookie-retrieve host path secure)) 281 (let* ((cookies (url-cookie-retrieve host localpart secure))
268 (retval nil) 282 (retval nil)
269 (cur nil) 283 (cur nil)
270 (chunk nil)) 284 (chunk nil))
271 ;; Have to sort this for sending most specific cookies first 285 ;; Have to sort this for sending most specific cookies first
272 (setq cookies (and cookies 286 (setq cookies (and cookies
273 (sort cookies 287 (sort cookies
274 (function 288 (function
275 (lambda (x y) 289 (lambda (x y)
276 (> (length (url-cookie-path x)) 290 (> (length (url-cookie-localpart x))
277 (length (url-cookie-path y)))))))) 291 (length (url-cookie-localpart y))))))))
278 (while cookies 292 (while cookies
279 (setq cur (car cookies) 293 (setq cur (car cookies)
280 cookies (cdr cookies) 294 cookies (cdr cookies)
@@ -340,9 +354,9 @@ telling Microsoft that."
340 (trusted url-cookie-trusted-urls) 354 (trusted url-cookie-trusted-urls)
341 (untrusted url-cookie-untrusted-urls) 355 (untrusted url-cookie-untrusted-urls)
342 (expires (cdr-safe (assoc-string "expires" args t))) 356 (expires (cdr-safe (assoc-string "expires" args t)))
343 (path (or (cdr-safe (assoc-string "path" args t)) 357 (localpart (or (cdr-safe (assoc-string "path" args t))
344 (file-name-directory 358 (file-name-directory
345 (url-filename url-current-object)))) 359 (url-filename url-current-object))))
346 (rest nil)) 360 (rest nil))
347 (while args 361 (while args
348 (if (not (member (downcase (car (car args))) 362 (if (not (member (downcase (car (car args)))
@@ -422,7 +436,7 @@ telling Microsoft that."
422 (while rest 436 (while rest
423 (setq cur (pop rest)) 437 (setq cur (pop rest))
424 (url-cookie-store (car cur) (cdr cur) 438 (url-cookie-store (car cur) (cdr cur)
425 expires domain path secure)))) 439 expires domain localpart secure))))
426 (t 440 (t
427 (message "%s tried to set a cookie for domain %s - rejected." 441 (message "%s tried to set a cookie for domain %s - rejected."
428 (url-host url-current-object) domain))))) 442 (url-host url-current-object) domain)))))
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index f5bbf4a7bf4..0b7e2cef8a1 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -156,8 +156,7 @@ request.
156 (let ((url-basic-auth-storage 156 (let ((url-basic-auth-storage
157 'url-http-proxy-basic-auth-storage)) 157 'url-http-proxy-basic-auth-storage))
158 (url-get-authentication url nil 'any nil)))) 158 (url-get-authentication url nil 'any nil))))
159 (real-fname (if proxy-obj (url-recreate-url proxy-obj) 159 (real-fname (url-filename (or proxy-obj url)))
160 (url-filename url)))
161 (host (url-host (or proxy-obj url))) 160 (host (url-host (or proxy-obj url)))
162 (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers)) 161 (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers))
163 nil 162 nil
@@ -200,7 +199,9 @@ request.
200 (setq request 199 (setq request
201 (concat 200 (concat
202 ;; The request 201 ;; The request
203 (or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n" 202 (or url-request-method "GET") " "
203 (if proxy-obj (url-recreate-url proxy-obj) real-fname)
204 " HTTP/" url-http-version "\r\n"
204 ;; Version of MIME we speak 205 ;; Version of MIME we speak
205 "MIME-Version: 1.0\r\n" 206 "MIME-Version: 1.0\r\n"
206 ;; (maybe) Try to keep the connection open 207 ;; (maybe) Try to keep the connection open
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 6cfb03f2ac6..b5fd9f80def 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -967,28 +967,28 @@ Recommended as a parent keymap for modes using widgets.")
967 (recenter)) 967 (recenter))
968 ) 968 )
969 969
970 (let ((up t) command) 970 (let ((up t) command)
971 ;; Mouse click not on a widget button. Find the global 971 ;; Mouse click not on a widget button. Find the global
972 ;; command to run, and check whether it is bound to an 972 ;; command to run, and check whether it is bound to an
973 ;; up event. 973 ;; up event.
974 (mouse-set-point event) 974 (mouse-set-point event)
975 (if (memq (event-basic-type event) '(mouse-1 down-mouse-1)) 975 (if (memq (event-basic-type event) '(mouse-1 down-mouse-1))
976 (cond ((setq command ;down event
977 (lookup-key widget-global-map [down-mouse-1]))
978 (setq up nil))
979 ((setq command ;up event
980 (lookup-key widget-global-map [mouse-1]))))
981 (cond ((setq command ;down event 976 (cond ((setq command ;down event
982 (lookup-key widget-global-map [down-mouse-2])) 977 (lookup-key widget-global-map [down-mouse-1]))
983 (setq up nil)) 978 (setq up nil))
984 ((setq command ;up event 979 ((setq command ;up event
985 (lookup-key widget-global-map [mouse-2]))))) 980 (lookup-key widget-global-map [mouse-1]))))
986 (when up 981 (cond ((setq command ;down event
987 ;; Don't execute up events twice. 982 (lookup-key widget-global-map [down-mouse-2]))
988 (while (not (widget-button-release-event-p event)) 983 (setq up nil))
989 (setq event (read-event)))) 984 ((setq command ;up event
990 (when command 985 (lookup-key widget-global-map [mouse-2])))))
991 (call-interactively command))))) 986 (when up
987 ;; Don't execute up events twice.
988 (while (not (widget-button-release-event-p event))
989 (setq event (read-event))))
990 (when command
991 (call-interactively command)))))
992 (message "You clicked somewhere weird."))) 992 (message "You clicked somewhere weird.")))
993 993
994(defun widget-button-press (pos &optional event) 994(defun widget-button-press (pos &optional event)
diff --git a/lisp/window.el b/lisp/window.el
index 09fac6c520f..75052f9a5f1 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -40,11 +40,18 @@ unless you explicitly change the size, or Emacs has no other choice.")
40 40
41(defmacro save-selected-window (&rest body) 41(defmacro save-selected-window (&rest body)
42 "Execute BODY, then select the window that was selected before BODY. 42 "Execute BODY, then select the window that was selected before BODY.
43Also restore the selected window of each frame as it was at the start 43The value returned is the value of the last form in BODY.
44of this construct. 44
45However, if a window has become dead, don't get an error, 45This macro saves and restores the current buffer, since otherwise
46just refrain from reselecting it. 46its normal operation could potentially make a different
47Return the value of the last form in BODY." 47buffer current. It does not alter the buffer list ordering.
48
49This macro saves and restores the selected window, as well as
50the selected window in each frame. If the previously selected
51window of some frame is no longer live at the end of BODY, that
52frame's selected window is left alone. If the selected window is
53no longer live, then whatever window is selected at the end of
54BODY remains selected."
48 `(let ((save-selected-window-window (selected-window)) 55 `(let ((save-selected-window-window (selected-window))
49 ;; It is necessary to save all of these, because calling 56 ;; It is necessary to save all of these, because calling
50 ;; select-window changes frame-selected-window for whatever 57 ;; select-window changes frame-selected-window for whatever
@@ -52,14 +59,15 @@ Return the value of the last form in BODY."
52 (save-selected-window-alist 59 (save-selected-window-alist
53 (mapcar (lambda (frame) (list frame (frame-selected-window frame))) 60 (mapcar (lambda (frame) (list frame (frame-selected-window frame)))
54 (frame-list)))) 61 (frame-list))))
55 (unwind-protect 62 (save-current-buffer
56 (progn ,@body) 63 (unwind-protect
57 (dolist (elt save-selected-window-alist) 64 (progn ,@body)
58 (and (frame-live-p (car elt)) 65 (dolist (elt save-selected-window-alist)
59 (window-live-p (cadr elt)) 66 (and (frame-live-p (car elt))
60 (set-frame-selected-window (car elt) (cadr elt)))) 67 (window-live-p (cadr elt))
61 (if (window-live-p save-selected-window-window) 68 (set-frame-selected-window (car elt) (cadr elt))))
62 (select-window save-selected-window-window))))) 69 (if (window-live-p save-selected-window-window)
70 (select-window save-selected-window-window))))))
63 71
64(defun window-body-height (&optional window) 72(defun window-body-height (&optional window)
65 "Return number of lines in window WINDOW for actual buffer text. 73 "Return number of lines in window WINDOW for actual buffer text.
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 77d2d961905..ddaac114590 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,43 @@
12005-06-29 Juanma Barranquero <lekktu@gmail.com>
2
3 * variables.texi (Defining Variables): `user-variable-p' returns t
4 for aliases of user options, nil for alias loops.
5
62005-06-28 Richard M. Stallman <rms@gnu.org>
7
8 * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
9 make-keymap.
10
112005-06-27 Luc Teirlinck <teirllm@auburn.edu>
12
13 * variables.texi (Setting Variables): Correct and clarify
14 description of `add-to-ordered-list'.
15
162005-06-26 Richard M. Stallman <rms@gnu.org>
17
18 * display.texi (Faces): Minor cleanup.
19
202005-06-25 Luc Teirlinck <teirllm@auburn.edu>
21
22 * display.texi (Faces): `facep' returns t for strings that are
23 face names.
24
252005-06-25 Richard M. Stallman <rms@gnu.org>
26
27 * objects.texi (Equality Predicates): Clarify meaning of equal.
28
29 * windows.texi (Selecting Windows): save-selected-window
30 and with-selected-window save and restore the current buffer.
31
322005-06-24 Richard M. Stallman <rms@gnu.org>
33
34 * numbers.texi (Float Basics): Explain how to test for NaN,
35 and printing the sign of NaNs.
36
372005-06-24 Eli Zaretskii <eliz@gnu.org>
38
39 * makefile.w32-in (MAKEINFO): Use --force.
40
12005-06-23 Richard M. Stallman <rms@gnu.org> 412005-06-23 Richard M. Stallman <rms@gnu.org>
2 42
3 * display.texi (Face Functions): Correct Texinfo usage. 43 * display.texi (Face Functions): Correct Texinfo usage.
diff --git a/lispref/display.texi b/lispref/display.texi
index aa3284ad0e4..4b7e0558b01 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -1628,12 +1628,12 @@ particular parts of the text or the frame.
1628@cindex face id 1628@cindex face id
1629Each face has its own @dfn{face number}, which distinguishes faces at 1629Each face has its own @dfn{face number}, which distinguishes faces at
1630low levels within Emacs. However, for most purposes, you refer to 1630low levels within Emacs. However, for most purposes, you refer to
1631faces in Lisp programs by their names. 1631faces in Lisp programs by the symbols that name them.
1632 1632
1633@defun facep object 1633@defun facep object
1634This function returns @code{t} if @var{object} is a face name symbol (or 1634This function returns @code{t} if @var{object} is a face name string
1635if it is a vector of the kind used internally to record face data). It 1635or symbol (or if it is a vector of the kind used internally to record
1636returns @code{nil} otherwise. 1636face data). It returns @code{nil} otherwise.
1637@end defun 1637@end defun
1638 1638
1639Each face name is meaningful for all frames, and by default it has the 1639Each face name is meaningful for all frames, and by default it has the
@@ -1795,7 +1795,7 @@ end of a line.
1795 The way to define a new face is with @code{defface}. This creates a 1795 The way to define a new face is with @code{defface}. This creates a
1796kind of customization item (@pxref{Customization}) which the user can 1796kind of customization item (@pxref{Customization}) which the user can
1797customize using the Customization buffer (@pxref{Easy Customization,,, 1797customize using the Customization buffer (@pxref{Easy Customization,,,
1798emacs, The GNU Emacs Manual}). 1798emacs, The GNU Emacs Manual}).
1799 1799
1800@defmac defface face spec doc [keyword value]... 1800@defmac defface face spec doc [keyword value]...
1801This declares @var{face} as a customizable face that defaults 1801This declares @var{face} as a customizable face that defaults
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index 79cbe478ea2..519f9bc1fbf 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -257,18 +257,16 @@ satisfies @code{keymapp}.
257 257
258 Here we describe the functions for creating keymaps. 258 Here we describe the functions for creating keymaps.
259 259
260@c ??? This should come after make-sparse-keymap 260@defun make-sparse-keymap &optional prompt
261@defun make-keymap &optional prompt 261This function creates and returns a new sparse keymap with no entries.
262This function creates and returns a new full keymap. That keymap 262(A sparse keymap is the kind of keymap you usually want.) The new
263contains a char-table (@pxref{Char-Tables}) with slots for all 263keymap does not contain a char-table, unlike @code{make-keymap}, and
264characters without modifiers. The new keymap initially binds all 264does not bind any events.
265these characters to @code{nil}, and does not bind any other kind of
266event.
267 265
268@example 266@example
269@group 267@group
270(make-keymap) 268(make-sparse-keymap)
271 @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap]) 269 @result{} (keymap)
272@end group 270@end group
273@end example 271@end example
274 272
@@ -277,18 +275,23 @@ the keymap. The prompt string should be provided for menu keymaps
277(@pxref{Defining Menus}). 275(@pxref{Defining Menus}).
278@end defun 276@end defun
279 277
280@defun make-sparse-keymap &optional prompt 278@defun make-keymap &optional prompt
281This function creates and returns a new sparse keymap with no entries. 279This function creates and returns a new full keymap. That keymap
282The new keymap does not contain a char-table, unlike @code{make-keymap}, 280contains a char-table (@pxref{Char-Tables}) with slots for all
283and does not bind any events. The argument @var{prompt} specifies a 281characters without modifiers. The new keymap initially binds all
284prompt string, as in @code{make-keymap}. 282these characters to @code{nil}, and does not bind any other kind of
283event. The argument @var{prompt} specifies a
284prompt string, as in @code{make-sparse-keymap}.
285 285
286@example 286@example
287@group 287@group
288(make-sparse-keymap) 288(make-keymap)
289 @result{} (keymap) 289 @result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
290@end group 290@end group
291@end example 291@end example
292
293A full keymap is more efficient than a sparse keymap when it holds
294lots of bindings; for just a few, the sparse keymap is better.
292@end defun 295@end defun
293 296
294@defun copy-keymap keymap 297@defun copy-keymap keymap
diff --git a/lispref/makefile.w32-in b/lispref/makefile.w32-in
index 248330167b2..0865aa8df58 100644
--- a/lispref/makefile.w32-in
+++ b/lispref/makefile.w32-in
@@ -29,7 +29,7 @@ infodir = $(srcdir)/../info
29# TEX=platex 29# TEX=platex
30TEX=tex 30TEX=tex
31INSTALL_INFO = install-info 31INSTALL_INFO = install-info
32MAKEINFO = makeinfo 32MAKEINFO = makeinfo --force
33 33
34# The environment variable and its value to add $(srcdir) to the path 34# The environment variable and its value to add $(srcdir) to the path
35# searched for TeX input files. 35# searched for TeX input files.
diff --git a/lispref/numbers.texi b/lispref/numbers.texi
index 776251e4933..f7f88248ff1 100644
--- a/lispref/numbers.texi
+++ b/lispref/numbers.texi
@@ -183,21 +183,26 @@ there is no correct answer. For example, @code{(/ 0.0 0.0)} returns a
183NaN. For practical purposes, there's no significant difference between 183NaN. For practical purposes, there's no significant difference between
184different NaN values in Emacs Lisp, and there's no rule for precisely 184different NaN values in Emacs Lisp, and there's no rule for precisely
185which NaN value should be used in a particular case, so Emacs Lisp 185which NaN value should be used in a particular case, so Emacs Lisp
186doesn't try to distinguish them. Here are the read syntaxes for 186doesn't try to distinguish them (but it does report the sign, if you
187these special floating point values: 187print it). Here are the read syntaxes for these special floating
188point values:
188 189
189@table @asis 190@table @asis
190@item positive infinity 191@item positive infinity
191@samp{1.0e+INF} 192@samp{1.0e+INF}
192@item negative infinity 193@item negative infinity
193@samp{-1.0e+INF} 194@samp{-1.0e+INF}
194@item Not-a-number 195@item Not-a-number
195@samp{0.0e+NaN}. 196@samp{0.0e+NaN} or @samp{-0.0e+NaN}.
196@end table 197@end table
197 198
198 In addition, the value @code{-0.0} is distinguishable from ordinary 199 To test whether a floating point value is a NaN, compare it with
199zero in @acronym{IEEE} floating point (although @code{equal} and 200itself using @code{=}. That returns @code{nil} for a NaN, and
200@code{=} consider them equal values). 201@code{t} for any other floating point value.
202
203 The value @code{-0.0} is distinguishable from ordinary zero in
204@acronym{IEEE} floating point, but Emacs Lisp @code{equal} and
205@code{=} consider them equal values.
201 206
202 You can use @code{logb} to extract the binary exponent of a floating 207 You can use @code{logb} to extract the binary exponent of a floating
203point number (or estimate the logarithm of an integer): 208point number (or estimate the logarithm of an integer):
diff --git a/lispref/objects.texi b/lispref/objects.texi
index 93d7c51b08d..4a693f186d6 100644
--- a/lispref/objects.texi
+++ b/lispref/objects.texi
@@ -1820,8 +1820,7 @@ describing the data type.
1820 1820
1821@defun eq object1 object2 1821@defun eq object1 object2
1822This function returns @code{t} if @var{object1} and @var{object2} are 1822This function returns @code{t} if @var{object1} and @var{object2} are
1823the same object, @code{nil} otherwise. The ``same object'' means that a 1823the same object, @code{nil} otherwise.
1824change in one will be reflected by the same change in the other.
1825 1824
1826@code{eq} returns @code{t} if @var{object1} and @var{object2} are 1825@code{eq} returns @code{t} if @var{object1} and @var{object2} are
1827integers with the same value. Also, since symbol names are normally 1826integers with the same value. Also, since symbol names are normally
@@ -1829,7 +1828,8 @@ unique, if the arguments are symbols with the same name, they are
1829@code{eq}. For other types (e.g., lists, vectors, strings), two 1828@code{eq}. For other types (e.g., lists, vectors, strings), two
1830arguments with the same contents or elements are not necessarily 1829arguments with the same contents or elements are not necessarily
1831@code{eq} to each other: they are @code{eq} only if they are the same 1830@code{eq} to each other: they are @code{eq} only if they are the same
1832object. 1831object, meaning that a change in the contents of one will be reflected
1832by the same change in the contents of the other.
1833 1833
1834@example 1834@example
1835@group 1835@group
diff --git a/lispref/variables.texi b/lispref/variables.texi
index 31e42b59c79..38fb929c16d 100644
--- a/lispref/variables.texi
+++ b/lispref/variables.texi
@@ -569,7 +569,7 @@ though being declared using @code{defcustom}@footnote{They may also be
569declared equivalently in @file{cus-start.el}.} or by the first character 569declared equivalently in @file{cus-start.el}.} or by the first character
570of their @code{variable-documentation} property. If the property exists 570of their @code{variable-documentation} property. If the property exists
571and is a string, and its first character is @samp{*}, then the variable 571and is a string, and its first character is @samp{*}, then the variable
572is a user option. 572is a user option. Aliases of user options are also user options.
573@end defun 573@end defun
574 574
575@kindex variable-interactive 575@kindex variable-interactive
@@ -909,18 +909,25 @@ This function sets the variable @var{symbol} by inserting
909position specified by @var{order}. If @var{element} is already a 909position specified by @var{order}. If @var{element} is already a
910member of the list, its position in the list is adjusted according 910member of the list, its position in the list is adjusted according
911to @var{order}. Membership is tested using @code{eq}. 911to @var{order}. Membership is tested using @code{eq}.
912The valued returned is the resulting list, whether updated or not. 912This function returns the resulting list, whether updated or not.
913 913
914The @var{order} is a number, and the elements on list are sorted in 914The @var{order} is typically a number (integer or float), and the
915increasing numerical order. Elements without a numeric list order are 915elements of the list are sorted in non-decreasing numerical order.
916placed at the end of @var{symbol}. 916
917@var{order} may also be omitted or @code{nil}. Then the numeric order
918of @var{element} stays unchanged if it already has one; otherwise,
919@var{element} has no numeric order. Elements without a numeric list
920order are placed at the end of the list, in no particular order.
921
922Any other value for @var{order} removes the numeric order of @var{element}
923if it already has one; otherwise, it is equivalent to @code{nil}.
917 924
918The argument @var{symbol} is not implicitly quoted; 925The argument @var{symbol} is not implicitly quoted;
919@code{add-to-ordered-list} is an ordinary function, like @code{set} 926@code{add-to-ordered-list} is an ordinary function, like @code{set}
920and unlike @code{setq}. Quote the argument yourself if that is what 927and unlike @code{setq}. Quote the argument yourself if that is what
921you want. 928you want.
922 929
923The ordering information is stored in an alist on @var{symbol}'s 930The ordering information is stored in a hash table on @var{symbol}'s
924@code{list-order} property. 931@code{list-order} property.
925@end defun 932@end defun
926 933
@@ -945,11 +952,11 @@ Here's a scenario showing how to use @code{add-to-ordered-list}:
945(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.} 952(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.}
946 @result{} (a c b d) 953 @result{} (a c b d)
947 954
948(add-to-ordered-list 'foo 'b 2) ;; @r{Move @code{b}.} 955(add-to-ordered-list 'foo 'e) ;; @r{Add @code{e}}.
949 @result{} (a b c d) 956 @result{} (a c b e d)
950 957
951foo ;; @r{@code{foo} was changed.} 958foo ;; @r{@code{foo} was changed.}
952 @result{} (a b c d) 959 @result{} (a c b e d)
953@end example 960@end example
954 961
955@node Variable Scoping 962@node Variable Scoping
diff --git a/lispref/windows.texi b/lispref/windows.texi
index d9ecf5db7eb..5a58c31f39a 100644
--- a/lispref/windows.texi
+++ b/lispref/windows.texi
@@ -463,8 +463,8 @@ The return value is @var{window}.
463@defmac save-selected-window forms@dots{} 463@defmac save-selected-window forms@dots{}
464This macro records the selected frame, as well as the selected window 464This macro records the selected frame, as well as the selected window
465of each frame, executes @var{forms} in sequence, then restores the 465of each frame, executes @var{forms} in sequence, then restores the
466earlier selected frame and windows It returns the value of the last 466earlier selected frame and windows. It also saves and restores the
467form in @var{forms}. 467current buffer. It returns the value of the last form in @var{forms}.
468 468
469This macro does not save or restore anything about the sizes, 469This macro does not save or restore anything about the sizes,
470arrangement or contents of windows; therefore, if the @var{forms} 470arrangement or contents of windows; therefore, if the @var{forms}
@@ -478,9 +478,9 @@ the end of @var{forms} remains selected.
478@defmac with-selected-window window forms@dots{} 478@defmac with-selected-window window forms@dots{}
479This macro selects @var{window} (without changing the buffer list), 479This macro selects @var{window} (without changing the buffer list),
480executes @var{forms} in sequence, then restores the previously 480executes @var{forms} in sequence, then restores the previously
481selected window (unless that window is no longer alive). It is similar 481selected window and current buffer. It is just like
482to @code{save-selected-window} except that it explicitly selects 482@code{save-selected-window}, except that it explicitly selects
483@var{window}, without altering the buffer list sequence. 483@var{window}, also without altering the buffer list sequence.
484@end defmac 484@end defmac
485 485
486@cindex finding windows 486@cindex finding windows
diff --git a/man/ChangeLog b/man/ChangeLog
index 6bcbe6dc9e9..3d75467e2bf 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,23 @@
12005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
4
52005-06-29 Carsten Dominik <dominik@science.uva.nl>
6
7 * org.texi: Version 3.12
8
92005-06-24 Richard M. Stallman <rms@gnu.org>
10
11 * display.texi (Text Display): Change index entries.
12
132005-06-24 Eli Zaretskii <eliz@gnu.org>
14
15 * makefile.w32-in (MAKEINFO): Use --force.
16 (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in
17 Makefile.in.
18 (gnus.dvi): Use "..." to quote Sed args, so that it works with
19 more shells.
20
12005-06-23 Richard M. Stallman <rms@gnu.org> 212005-06-23 Richard M. Stallman <rms@gnu.org>
2 22
3 * anti.texi (Antinews): Renamed show-nonbreak-escape to 23 * anti.texi (Antinews): Renamed show-nonbreak-escape to
diff --git a/man/display.texi b/man/display.texi
index 7bdd1d5fb59..02854b3d6db 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -946,8 +946,9 @@ them), otherwise as escape sequences. @xref{Single-Byte Character
946Support}. 946Support}.
947 947
948@vindex nobreak-char-display 948@vindex nobreak-char-display
949@cindex nobreak space, display 949@cindex no-break space, display
950@cindex nobreak hyphen, display 950@cindex no-break hyphen, display
951@cindex soft hyphen, display
951 Some character sets define ``no-break'' versions of the space and 952 Some character sets define ``no-break'' versions of the space and
952hyphen characters, which are used where a line should not be broken. 953hyphen characters, which are used where a line should not be broken.
953Emacs normally displays these characters with special faces 954Emacs normally displays these characters with special faces
diff --git a/man/gnus.texi b/man/gnus.texi
index f386297e925..b1d5be22651 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -21750,27 +21750,18 @@ The specs are applied left-to-right.
21750 21750
21751@item gnus-nocem-verifyer 21751@item gnus-nocem-verifyer
21752@vindex gnus-nocem-verifyer 21752@vindex gnus-nocem-verifyer
21753@findex mc-verify 21753@findex pgg-verify
21754This should be a function for verifying that the NoCeM issuer is who she 21754This should be a function for verifying that the NoCeM issuer is who she
21755says she is. The default is @code{mc-verify}, which is a Mailcrypt 21755says she is. The default is @code{pgg-verify}, which returns
21756function. If this is too slow and you don't care for verification 21756non-@code{nil} if the verification is successful, otherwise (including
21757(which may be dangerous), you can set this variable to @code{nil}. 21757the case the NoCeM message was not signed) returns @code{nil}. If this
21758 21758is too slow and you don't care for verification (which may be dangerous),
21759If you want signed NoCeM messages to be verified and unsigned messages 21759you can set this variable to @code{nil}.
21760not to be verified (but used anyway), you could do something like: 21760
21761 21761Formerly the default was @code{mc-verify}, which is a Mailcrypt
21762@lisp 21762function. While you can still use it, you can change it into
21763(setq gnus-nocem-verifyer 'my-gnus-mc-verify) 21763@code{pgg-verify} running with GnuPG if you are willing to add the
21764 21764@acronym{PGP} public keys to GnuPG's keyring.
21765(defun my-gnus-mc-verify ()
21766 (not (eq 'forged
21767 (ignore-errors
21768 (if (mc-verify)
21769 t
21770 'forged)))))
21771@end lisp
21772
21773This might be dangerous, though.
21774 21765
21775@item gnus-nocem-directory 21766@item gnus-nocem-directory
21776@vindex gnus-nocem-directory 21767@vindex gnus-nocem-directory
diff --git a/man/makefile.w32-in b/man/makefile.w32-in
index d89c77ab5d9..9771be8ef06 100644
--- a/man/makefile.w32-in
+++ b/man/makefile.w32-in
@@ -29,33 +29,28 @@ srcdir=.
29infodir = $(srcdir)/../info 29infodir = $(srcdir)/../info
30 30
31# The makeinfo program is part of the Texinfo distribution. 31# The makeinfo program is part of the Texinfo distribution.
32MAKEINFO = makeinfo 32MAKEINFO = makeinfo --force
33MULTI_INSTALL_INFO = $(srcdir)\..\nt\multi-install-info.bat 33MULTI_INSTALL_INFO = $(srcdir)\..\nt\multi-install-info.bat
34INFO_TARGETS = $(infodir)/emacs $(infodir)/ccmode \ 34INFO_TARGETS = $(infodir)/emacs $(infodir)/emacs-xtra $(infodir)/ccmode \
35 $(infodir)/cl $(infodir)/dired-x \ 35 $(infodir)/cl $(infodir)/dired-x $(infodir)/ediff \
36 $(infodir)/ediff $(infodir)/forms \ 36 $(infodir)/forms $(infodir)/gnus $(infodir)/message \
37 $(infodir)/gnus $(infodir)/info \ 37 $(infodir)/sieve $(infodir)/pgg $(infodir)/emacs-mime \
38 $(infodir)/message $(infodir)/mh-e \ 38 $(infodir)/info $(infodir)/mh-e $(infodir)/reftex \
39 $(infodir)/reftex $(infodir)/sc \ 39 $(infodir)/sc $(infodir)/vip $(infodir)/viper \
40 $(infodir)/vip $(infodir)/viper \ 40 $(infodir)/widget $(infodir)/efaq $(infodir)/ada-mode \
41 $(infodir)/widget $(infodir)/efaq \ 41 $(infodir)/autotype $(infodir)/calc $(infodir)/idlwave \
42 $(infodir)/ada-mode $(infodir)/autotype \ 42 $(infodir)/eudc $(infodir)/ebrowse $(infodir)/pcl-cvs \
43 $(infodir)/calc $(infodir)/idlwave \ 43 $(infodir)/woman $(infodir)/eshell $(infodir)/org \
44 $(infodir)/eudc $(infodir)/ebrowse \ 44 $(infodir)/url $(infodir)/speedbar $(infodir)/tramp \
45 $(infodir)/pcl-cvs $(infodir)/woman \ 45 $(infodir)/ses $(infodir)/smtpmail $(infodir)/flymake
46 $(infodir)/emacs-mime $(infodir)/eshell \
47 $(infodir)/speedbar $(infodir)/tramp \
48 $(infodir)/ses $(infodir)/smtpmail \
49 $(infodir)/flymake $(infodir)/emacs-xtra \
50 $(infodir)/org $(infodir)/url \
51 $(infodir)/pgg $(infodir)/sieve
52DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \ 46DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
53 ediff.dvi forms.dvi gnus.dvi message.dvi mh-e.dvi \ 47 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
48 gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
54 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \ 49 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
55 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \ 50 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
56 org.dvi pcl-cvs.dvi woman.dvi emacs-mime.dvi eshell.dvi \ 51 pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
57 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \ 52 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
58 emacs-xtra.dvi pgg.dvi sieve.dvi url.dvi 53 emacs-xtra.dvi
59INFOSOURCES = info.texi 54INFOSOURCES = info.texi
60 55
61# The following rule does not work with all versions of `make'. 56# The following rule does not work with all versions of `make'.
@@ -197,7 +192,7 @@ forms.dvi: forms.texi
197$(infodir)/gnus: gnus.texi 192$(infodir)/gnus: gnus.texi
198 $(MAKEINFO) gnus.texi 193 $(MAKEINFO) gnus.texi
199gnus.dvi: gnus.texi 194gnus.dvi: gnus.texi
200 sed -e '/@iflatex/,/@end iflatex/d' $(srcdir)/gnus.texi > gnustmp.texi 195 sed -e "/@iflatex/,/@end iflatex/d" $(srcdir)/gnus.texi > gnustmp.texi
201 $(ENVADD) $(TEXI2DVI) gnustmp.texi 196 $(ENVADD) $(TEXI2DVI) gnustmp.texi
202 cp gnustmp.dvi $*.dvi 197 cp gnustmp.dvi $*.dvi
203 rm gnustmp.* 198 rm gnustmp.*
diff --git a/man/org.texi b/man/org.texi
index e3d35cf19fa..b6d43bc50a7 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,7 +4,7 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 3.11 7@set VERSION 3.12
8@set DATE June 2005 8@set DATE June 2005
9 9
10@dircategory Emacs 10@dircategory Emacs
@@ -109,8 +109,16 @@ Document Structure
109Tables 109Tables
110 110
111* Built-in table editor:: Simple tables 111* Built-in table editor:: Simple tables
112* table.el:: Complex tables 112* Table calculations:: Compute a field from other fields
113* orgtbl-mode:: The table editor as minor mode 113* orgtbl-mode:: The table editor as minor mode
114* table.el:: Complex tables
115
116Calculations in tables
117
118* Formula syntax:: How to write a formula
119* Applying a formula:: How to get a formula executed
120* Recalculation:: Re-applying all formulas in a table
121* Summing:: Summing columns and rows
114 122
115Hyperlinks 123Hyperlinks
116 124
@@ -203,6 +211,7 @@ different levels and in different ways, for example
203@example 211@example
204@r{@bullet{} as an outline extension with visibility cycling and structure editing} 212@r{@bullet{} as an outline extension with visibility cycling and structure editing}
205@r{@bullet{} as an ASCII system and table editor to take structured notes} 213@r{@bullet{} as an ASCII system and table editor to take structured notes}
214@r{@bullet{} as an ASCII table editor with some spreadsheet-like capabilities}
206@r{@bullet{} as a simple hypertext system, with HTML export} 215@r{@bullet{} as a simple hypertext system, with HTML export}
207@r{@bullet{} as a TODO list editor} 216@r{@bullet{} as a TODO list editor}
208@r{@bullet{} as a full agenda and planner with deadlines and work scheduling} 217@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
@@ -384,7 +393,7 @@ Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
384Show all. 393Show all.
385@end table 394@end table
386 395
387When Emacs firsts visits a Org-mode file, the global state is set to 396When Emacs first visits an Org-mode file, the global state is set to
388OVERVIEW, i.e. only the top level headlines are visible. This can be 397OVERVIEW, i.e. only the top level headlines are visible. This can be
389configured through the variable @code{org-startup-folded}, or on a 398configured through the variable @code{org-startup-folded}, or on a
390per-file basis by adding one of the following lines anywhere in the 399per-file basis by adding one of the following lines anywhere in the
@@ -435,9 +444,9 @@ visible.
435@cindex promotion, of subtrees 444@cindex promotion, of subtrees
436@cindex demotion, of subtrees 445@cindex demotion, of subtrees
437@cindex subtree, cut and paste 446@cindex subtree, cut and paste
438@cindex pasting, subtrees 447@cindex pasting, of subtrees
439@cindex cutting, subtrees 448@cindex cutting, of subtrees
440@cindex copying, subtrees 449@cindex copying, of subtrees
441 450
442@table @kbd 451@table @kbd
443@kindex M-@key{RET} 452@kindex M-@key{RET}
@@ -493,11 +502,11 @@ functionality.
493@section Archiving 502@section Archiving
494@cindex archiving 503@cindex archiving
495 504
496When an project represented by a (sub)tree is finished, you may want 505When a project represented by a (sub)tree is finished, you may want
497to move the tree to an Archive place, either in the same file under a 506to move the tree to an archive place, either in the same file under a
498special top-level heading, or even to a different file. 507special top-level heading, or even to a different file.
499@table @kbd 508@table @kbd
500@kindex @kbd{C-c $} 509@kindex C-c $
501@item @kbd{C-c $} 510@item @kbd{C-c $}
502Archive the subtree starting at the cursor position to the location 511Archive the subtree starting at the cursor position to the location
503given by @code{org-archive-location}. 512given by @code{org-archive-location}.
@@ -524,7 +533,7 @@ An important feature of Org-mode is the ability to construct
524sparse tree means that the entire document is folded as much as 533sparse tree means that the entire document is folded as much as
525possible, but the selected information is made visible along with the 534possible, but the selected information is made visible along with the
526headline structure above it@footnote{See also the variable 535headline structure above it@footnote{See also the variable
527@code{org-show-following-heading}}. Just try it out and you will see 536@code{org-show-following-heading}.}. Just try it out and you will see
528immediately how it works. 537immediately how it works.
529 538
530Org-mode contains several commands creating such trees. The most 539Org-mode contains several commands creating such trees. The most
@@ -549,7 +558,7 @@ C-v} creates a sparse TODO tree (@pxref{TODO basics}).
549@cindex visible text, printing 558@cindex visible text, printing
550To print a sparse tree, you can use the Emacs command 559To print a sparse tree, you can use the Emacs command
551@code{ps-print-buffer-with-faces} which does not print invisible parts 560@code{ps-print-buffer-with-faces} which does not print invisible parts
552of the document @footnote{this does not work under XEmacs, because 561of the document @footnote{This does not work under XEmacs, because
553XEmacs uses selective display for outlining, not text properties}. 562XEmacs uses selective display for outlining, not text properties}.
554Or you can use the command @kbd{C-c C-x v} to copy the visible part of 563Or you can use the command @kbd{C-c C-x v} to copy the visible part of
555the document to another file (extension @file{.txt}) which then can be 564the document to another file (extension @file{.txt}) which then can be
@@ -559,18 +568,18 @@ printed in any desired way.
559@chapter Tables 568@chapter Tables
560@cindex tables 569@cindex tables
561 570
562For taking notes, tables are an essential tool because they allow 571Org-mode has a very fast and intuitive table editor built-in.
563immediate and clear structuring of data. Org-mode has a very fast and 572Spreadsheet-like calculations are supported in connection with the
564intuitive table editor built-in. More complex tables can be created 573Emacs @file{calc} package.
565with the Emacs table.el package.
566 574
567@menu 575@menu
568* Built-in table editor:: Simple tables 576* Built-in table editor:: Simple tables
569* table.el:: Complex tables 577* Table calculations:: Compute a field from other fields
570* orgtbl-mode:: The table editor as minor mode 578* orgtbl-mode:: The table editor as minor mode
579* table.el:: Complex tables
571@end menu 580@end menu
572 581
573@node Built-in table editor, table.el, Tables, Tables 582@node Built-in table editor, Table calculations, Tables, Tables
574@section The built-in table editor 583@section The built-in table editor
575@cindex table editor, builtin 584@cindex table editor, builtin
576 585
@@ -587,13 +596,13 @@ like this:
587@end example 596@end example
588 597
589A table is re-aligned automatically each time you press @key{TAB} or 598A table is re-aligned automatically each time you press @key{TAB} or
590@key{RET} inside the table. @key{TAB} also moves to the next field 599@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
591(@key{RET} to the next row) and creates new table rows at the end of the 600the next field (@key{RET} to the next row) and creates new table rows
592table or before horizontal lines. The indentation of the table is set 601at the end of the table or before horizontal lines. The indentation
593by the first line. Any line starting with @samp{|-} is considered as a 602of the table is set by the first line. Any line starting with
594horizontal separator line and will be expanded on the next re-align to 603@samp{|-} is considered as a horizontal separator line and will be
595span the whole table width. So, to create the above table, you would 604expanded on the next re-align to span the whole table width. So, to
596only type 605create the above table, you would only type
597 606
598@example 607@example
599|Name|Phone|Age 608|Name|Phone|Age
@@ -605,10 +614,9 @@ fields.
605 614
606@table @kbd 615@table @kbd
607@tsubheading{Creation and conversion} 616@tsubheading{Creation and conversion}
608@kindex C-c C-c 617@item M-x org-table-create
609@item C-c C-c 618Creates an empty Org-mode table. However, it is much easier to just
610Recognize @file{table.el} table. Works when the cursor is in a 619start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
611table.el table
612 620
613@kindex C-c C-c 621@kindex C-c C-c
614@item C-c C-c 622@item C-c C-c
@@ -619,10 +627,6 @@ separated. If not, lines are split at whitespace into fields. You
619can use a prefix argument to indicate how many consecutive spaces are 627can use a prefix argument to indicate how many consecutive spaces are
620at least required to indicate a field separator (default: just one). 628at least required to indicate a field separator (default: just one).
621 629
622@item M-x org-table-create
623Creates an empty Org-mode table. However, it is much easier to just
624start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
625
626@tsubheading{Re-aligning and field motion} 630@tsubheading{Re-aligning and field motion}
627@kindex C-c C-c 631@kindex C-c C-c
628@item C-c C-c 632@item C-c C-c
@@ -635,7 +639,7 @@ necessary.
635 639
636@kindex S-@key{TAB} 640@kindex S-@key{TAB}
637@item S-@key{TAB} 641@item S-@key{TAB}
638Move to previous field. 642Re-align, move to previous field.
639 643
640@kindex @key{RET} 644@kindex @key{RET}
641@item @key{RET} 645@item @key{RET}
@@ -674,19 +678,19 @@ Insert a new row above (with arg: below) the current row.
674 678
675@kindex C-c - 679@kindex C-c -
676@item C-c - 680@item C-c -
677Insert a horizontal line below current row. With prefix arg, line is 681Insert a horizontal line below current row. With prefix arg, the line
678created above the current line. 682is created above the current line.
679 683
680@tsubheading{Regions} 684@tsubheading{Regions}
681@kindex C-c C-h M-w 685@kindex C-c C-h M-w
682@item C-c C-h M-w 686@item C-c C-h M-w
683Copy an rectangular region from a table to a special clipboard. Point 687Copy a rectangular region from a table to a special clipboard. Point
684and mark determine edge fields of the rectangle. The process ignores 688and mark determine edge fields of the rectangle. The process ignores
685horizontal separator lines. 689horizontal separator lines.
686@kindex C-c C-h C-w 690@kindex C-c C-h C-w
687@item C-c C-h C-w 691@item C-c C-h C-w
688Copy an rectangular region from a table to a special clipboard, and 692Copy a rectangular region from a table to a special clipboard, and
689blank all fields in the rectangle. 693blank all fields in the rectangle. So this is the ``cut'' operation.
690@kindex C-c C-h C-y 694@kindex C-c C-h C-y
691@item C-c C-h C-y 695@item C-c C-h C-y
692Paste a rectangular region into a table. 696Paste a rectangular region into a table.
@@ -707,6 +711,29 @@ current field gets blank, and the content is appended to the field
707above. 711above.
708 712
709@tsubheading{Calculations} 713@tsubheading{Calculations}
714@cindex formula, in tables
715@cindex calculations, in tables
716@kindex C-c =
717@item C-c =
718Replace current field with the result of a formula. When called with a
719@kbd{C-u} prefix, apply the equation in the current field and down
720through the current column to a horizonal separator line or the end of
721the table. For details, see @ref{Table calculations}.
722
723@kindex C-c *
724@item C-c *
725Recalculate the current row by applying the stored formulas from left
726to right. When called with a @kbd{C-u} prefix, recalculate the
727entire table, starting with the first non-header line (i.e. below the
728first horizontal separator line). For details, see @ref{Table calculations}.
729
730@kindex C-#
731@item C-#
732Rotate the recalculation mark in first column through the states
733@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
734these marks see @ref{Table calculations}. When there is an active
735region, change all marks in the region.
736
710@kindex C-c ? 737@kindex C-c ?
711@item C-c ? 738@item C-c ?
712Which table column is the cursor in? Displays number >0 in echo 739Which table column is the cursor in? Displays number >0 in echo
@@ -718,7 +745,7 @@ area.
718@kindex C-c + 745@kindex C-c +
719@item C-c + 746@item C-c +
720Sum the numbers in the current column, or in the rectangle defined by 747Sum the numbers in the current column, or in the rectangle defined by
721the active region. The result is displayed in the echo area and can 748the active region. The result is shown in the echo area and can
722be inserted with @kbd{C-y}. 749be inserted with @kbd{C-y}.
723 750
724@kindex S-@key{RET} 751@kindex S-@key{RET}
@@ -730,23 +757,12 @@ along with it. Depending on the variable
730incremented during copy. This key is also used by CUA-mode 757incremented during copy. This key is also used by CUA-mode
731(@pxref{Interaction}). 758(@pxref{Interaction}).
732 759
733@cindex formula, in tables
734@cindex calculations, in tables
735@kindex C-c =
736@item C-c =
737Replace current field with the result of a formula. Requires the
738Emacs calc package. The formula can access the current field with
739@samp{$}, and the other fields in the current row
740with @samp{$1}, @samp{$2},... For details see the documentation of the
741command @command{org-table-eval-formula}.
742
743@tsubheading{Miscellaneous} 760@tsubheading{Miscellaneous}
744@kindex C-c | 761@kindex C-c |
745@item C-c | 762@item C-c |
746Toggle the visibility of vertical lines in tables. The lines are 763Toggle the visibility of vertical lines in tables. The lines are
747still there, only made invisible with a text property. Any @samp{|} 764still there, only made invisible with a text property. Any @samp{|}
748added by hand will become invisible on the next align. 765added by hand will become invisible on the next align.
749Typographically it is good style to have no vertical lines in tables.
750 766
751@item M-x org-table-import 767@item M-x org-table-import
752Import a file as a table. The table should be TAB- or whitespace 768Import a file as a table. The table should be TAB- or whitespace
@@ -771,23 +787,231 @@ it off with
771@noindent The only table command which then still works is 787@noindent The only table command which then still works is
772@kbd{C-c C-c} to do a manual re-align. 788@kbd{C-c C-c} to do a manual re-align.
773 789
774@node table.el, orgtbl-mode, Built-in table editor, Tables 790@node Table calculations, orgtbl-mode, Built-in table editor, Tables
791@section Calculations in tables
792@cindex calculations, in tables
793
794While the Org-mode table editor misses many features of a full
795spreadsheet, it nevertheless has very useful capabilities to compute
796fields. In horizontal direction, it can use complex expressions to
797compute a field from other fields @emph{in the same row}, using named
798columns, constants and parameters. The Emacs @file{calc} package is
799required for this feature to work. In vertical direction, only
800summing is supported.
801
802@menu
803* Formula syntax:: How to write a formula
804* Applying a formula:: How to get a formula executed
805* Recalculation:: Re-applying all formulas in a table
806* Summing:: Summing columns and rows
807@end menu
808
809@node Formula syntax, Applying a formula, Table calculations, Table calculations
810@subsection Formula syntax
811
812A formula for horizontal computations can be any algebraic expression
813understood by the Emacs @file{calc} package. Before evaluation,
814variable substitution takes place: @samp{$} is replaced by the field
815the cursor is currently in, and $1..$n reference the fields in the
816current row. @samp{$name} is interpreted as the name of a column,
817parameter or constant. Constants are defined globally through the
818variable @code{org-table-formula-constants}. If you have the
819@file{constants.el} package, it will also be used to resolve
820constants, including natural constants like @samp{$k} for Plancks
821constant, units like @samp{$km} for kilometers. Column names and
822parameters can be specified in special table lines. These are
823described below, see @ref{Recalculation}.
824
825A formula can contain an optional mode string after a semicolon. This
826string consists of flags to influence calc's modes@footnote{By
827default, Org-mode uses the standard calc modes (precision 12, angular
828units degrees, fraction and symbolic modes off). However, the display
829format which has been changed to @code{(float 5)} to keep tables
830compact. The default settings can be configured using the variable
831@code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
832switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
833@samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
834or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
835and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
836respectively. In addition, you may provide a @code{printf} specifier
837to reformat the final result. A few examples:
838@example
839 $1+$2 @r{Sum of first and second field}
840 $1+$2;%.2f @r{Same, format result to two decimals}
841 exp($2)+exp($1) @r{Math functions can be used}
842 $;%.1f @r{Reformat current cell to 1 decimal}
843 ($3-32)*5/9 @r{degrees F -> C conversion}
844 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
845 tan($1);Dp3s1 @r{compute in degrees, precision 3, display SCI 1}
846 vmean($2..$7) @r{compute column range mean, using vector function}
847 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
848@end example
849
850@node Applying a formula, Recalculation, Formula syntax, Table calculations
851@subsection Applying a formula
852
853To apply a formula to a field, type it directly into the field,
854preceded by an equal sign, like @samp{=$1+$2}. When you press
855@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
856field, the formula will be evaluated and replaced with the result. If
857the field contains only @samp{=}, the formula most recently applied
858anywhere in the @emph{same column} will be used.
859
860For each column, Org-mode will remember the most recently used
861formula. The information is stored in a special line directly below
862the table. When adding/deleting/moving columns with the appropriate
863commands, the stored equations will be modified accordingly. When a
864column used in a calculation is removed, references to this column
865become invalid and will cause an error upon applying the equation.
866
867Instead of typing an equation into the field, you may also use the
868command @kbd{C-c =}. It prompts for a formula (with default taken
869from the @samp{#+TBLFM:} line) and applies it to the current field.
870If you use a prefix argument (i.e. @kbd{C-u C-c =}), the formula will
871be applied to the current field and down to the next separator line
872or the end of the table. A numerical prefix will apply it to that
873many fields in the current column.
874
875When the evaluation of a formula leads to an error, the field content
876becomes the string @samp{#ERROR}. If you would like see what is going
877on during variable substitution and calculation in order to find a
878bug, turn on formula debugging in the menu and repeat the calculation
879by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
880Detailed information will be displayed.
881
882@node Recalculation, Summing, Applying a formula, Table calculations
883@subsection Recalculation
884
885To recompute all the fields in a line, use the command @kbd{C-c *}.
886It re-applies all stored equations to the current row, from left to
887right. With a @kbd{C-u} prefix, this will be done to every line in
888the table, so use this command it you want to make sure the entire
889table is up-to-date. A more automatic way of recalculating the
890current line requires marking the line: If the first column of a row
891contains only @samp{#}, the row will be re-computed with every
892@key{TAB}, @key{RET}, and @kbd{C-c C-c} in this row. Here is an
893example of a table that collects exam results of students, with some
894rows activated for semi-automatic computations.
895
896@example
897@group
898|---+---------+--------+--------+--------+-------+------|
899| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
900|---+---------+--------+--------+--------+-------+------|
901| ! | | P1 | P2 | P3 | Tot | |
902| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
903|---+---------+--------+--------+--------+-------+------|
904| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
905| # | Sara | 7 | 14 | 19 | 40 | 8.0 |
906| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
907|---+---------+--------+--------+--------+-------+------|
908| $ | max=50 | | | | | |
909|---+---------+--------+--------+--------+-------+------|
910#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f
911@end group
912@end example
913@noindent
914The example also demonstrates a number of convenience features:
915@enumerate
916@item
917If the first field of a row contains only @samp{!}, this row defines
918@emph{names} for the different columns so that you can write
919@samp{$Tot} instead of @samp{$6} --- useful in larger tables,
920when counting columns becomes error prone.
921@item
922If the first field of a row contains only @samp{$}, fields in this row
923can define @emph{parameters} for formulas. For example, if a field in
924a @samp{$} row contains @samp{max=50}, then formulas in this table can
925refer to the value 50 using @samp{$max}. Parameters work exactly like
926constants, only that they can be defined on a per-table basis.
927Changing a parameter and then recalculating the table can be useful
928and fun.
929@item
930A column range @samp{$P1..$P3} is expanded to a vector, so that calc's
931vector functions (in this case @samp{vsum}, but there are many more)
932can be applied to ranges. For a range, columns may be referenced by
933name or number, in either sequence.
934@end enumerate
935
936@noindent If a table contains any line with @samp{#} as the
937first field, @kbd{C-u C-c *} will only change the marked lines and
938leave all unmarked lines alone. You can also mark a line with
939@samp{*}. These lines will also be recalculated with @kbd{C-u C-c *},
940but not upon @key{TAB} and @key{RET}. Use this for lines which are
941slow to calculate.
942
943Just to wet your appetite on what can be done with the fantastic
944@file{calc} package, here is a table that computes the Taylor series
945for a couple of functions (homework: try that with Excel :-)
946
947@example
948@group
949|---+-------------+---+-----+--------------------------------------|
950| | Func | n | x | Result |
951|---+-------------+---+-----+--------------------------------------|
952| # | exp(x) | 1 | x | 1 + x |
953| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
954| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
955| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
956| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
957| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
958|---+-------------+---+-----+--------------------------------------|
959#+TBLFM: $5=taylor($2,$4,$3);n3
960@end group
961@end example
962
963@node Summing, , Recalculation, Table calculations
964@subsection Summing
965
966Finally, when typing a formula into a field, a number of special
967keywords execute predefined sums over the current row or column and
968enter the result into the current field. These calculations are
969one-off, the formula is not stored, and you will neet to re-enter it
970in order to compute again.
971
972@example
973= @r{Execute the stored formula valid in this column.}
974=sum @r{Sum all fields above the current (alias @code{=sumv}).}
975=sumh @r{Sum all fields to the left of the current field.}
976=sum3 @r{Same as @samp{=sum}, but use just 3 fields above current.}
977@end example
978
979@node orgtbl-mode, table.el, Table calculations, Tables
980@section The Orgtbl minor mode
981@cindex orgtbl-mode
982@cindex minor mode for tables
983
984If you like the intuitive way the Org-mode table editor works, you
985might want to use it also in other modes like text-mode or mail-mode.
986The minor mode Orgtbl-mode makes this possible. You can always toggle
987the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
988example in mail mode, use
989@lisp
990(add-hook 'mail-mode-hook 'turn-on-orgtbl)
991@end lisp
992
993@node table.el, , orgtbl-mode, Tables
775@section The @file{table.el} package 994@section The @file{table.el} package
776@kindex C-c C-c 995@kindex C-c C-c
777@cindex table editor, table.el 996@cindex table editor, @file{table.el}
778@cindex @file{table.el} 997@cindex @file{table.el}
779 998
780More complex ASCII tables (with automatic line wrapping, column- and 999Complex ASCII tables with automatic line wrapping, column- and
781row-spanning, and alignment) can be created using the Emacs table 1000row-spanning, and alignment can be created using the Emacs table
782package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}). 1001package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
783When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode 1002When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
784will call @command{table-recognize-table} and move the cursor into the 1003will call @command{table-recognize-table} and move the cursor into the
785table. Inside a table, the keymap of Org-mode is inactive. In order 1004table. Inside a table, the keymap of Org-mode is inactive. In order
786to execute org-related commands, leave the table. 1005to execute Org-mode-related commands, leave the table.
787 1006
788@table @kbd 1007@table @kbd
789@kindex C-c # 1008@kindex C-c C-c
790@item C-c # 1009@item C-c C-c
1010Recognize @file{table.el} table. Works when the cursor is in a
1011table.el table.
1012
1013@kindex C-c ~
1014@item C-c ~
791Insert a table.el table. If there is already a table at point, this 1015Insert a table.el table. If there is already a table at point, this
792command converts it between the table.el format and the Org-mode 1016command converts it between the table.el format and the Org-mode
793format. See the documentation string of the command 1017format. See the documentation string of the command
@@ -795,20 +1019,6 @@ format. See the documentation string of the command
795possible. 1019possible.
796@end table 1020@end table
797 1021
798@node orgtbl-mode, , table.el, Tables
799@section The Orgtbl minor mode
800@cindex orgtbl-mode
801@cindex Minor mode for tables
802
803If you like the intuitive way the Org-mode table editor works, you
804might want to use it also in other modes like text-mode or mail-mode.
805The minor mode Orgtbl-mode makes this possible. You can always toggle
806the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
807example in mail mode, use
808@lisp
809(add-hook 'mail-mode-hook 'turn-on-orgtbl)
810@end lisp
811
812@node Hyperlinks, TODO items, Tables, Top 1022@node Hyperlinks, TODO items, Tables, Top
813@chapter Hyperlinks 1023@chapter Hyperlinks
814@cindex hyperlinks 1024@cindex hyperlinks
@@ -826,6 +1036,8 @@ articles, emails and much more.
826@cindex links 1036@cindex links
827@cindex GNUS links 1037@cindex GNUS links
828@cindex BBDB links 1038@cindex BBDB links
1039@cindex URL links
1040@cindex file links
829@cindex VM links 1041@cindex VM links
830@cindex RMAIL links 1042@cindex RMAIL links
831@cindex WANDERLUST links 1043@cindex WANDERLUST links
@@ -877,6 +1089,8 @@ The key binding @kbd{C-c l} is only a suggestion - see
877@ref{Installation and Activation}. 1089@ref{Installation and Activation}.
878 1090
879@kindex C-c C-l 1091@kindex C-c C-l
1092@cindex completion, of links
1093@cindex completion, of file names
880@item C-c C-l 1094@item C-c C-l
881Insert a link. This prompts for a link to be inserted into the 1095Insert a link. This prompts for a link to be inserted into the
882buffer. You can just type a link, using one of the link type prefixes 1096buffer. You can just type a link, using one of the link type prefixes
@@ -969,8 +1183,8 @@ Before inserting the text into a tree, the function ensures that the
969text has a headline, i.e. a first line that starts with a @samp{*}. 1183text has a headline, i.e. a first line that starts with a @samp{*}.
970If not, a headline is constructed from the current date and some 1184If not, a headline is constructed from the current date and some
971additional data. If the variable @code{org-adapt-indentation} is 1185additional data. If the variable @code{org-adapt-indentation} is
972non-@code{nil}, the entire text is also indented so that it starts in 1186non-nil, the entire text is also indented so that it starts in the
973the same column as the headline (after the asterisks). 1187same column as the headline (after the asterisks).
974 1188
975@node TODO items, Timestamps, Hyperlinks, Top 1189@node TODO items, Timestamps, Hyperlinks, Top
976@chapter TODO items 1190@chapter TODO items
@@ -1057,6 +1271,7 @@ of working on an item, for example
1057 org-todo-interpretation 'sequence) 1271 org-todo-interpretation 'sequence)
1058@end lisp 1272@end lisp
1059 1273
1274@cindex completion, of TODO keywords
1060With this setup, the command @kbd{C-c C-t} will cycle an entry from 1275With this setup, the command @kbd{C-c C-t} will cycle an entry from
1061TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also 1276TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also
1062use a prefix argument to quickly select a specific state. For example 1277use a prefix argument to quickly select a specific state. For example
@@ -1084,9 +1299,9 @@ would be set up like this:
1084 1299
1085In this case, different keywords do not indicate a sequence, but 1300In this case, different keywords do not indicate a sequence, but
1086rather different types. So it is normally not useful to change from 1301rather different types. So it is normally not useful to change from
1087one type to another. Therefore, in this case the the behavior of the 1302one type to another. Therefore, in this case the behavior of the
1088command @kbd{C-c C-t} is changed slightly@footnote{This is also true 1303command @kbd{C-c C-t} is changed slightly@footnote{This is also true
1089for the @kbd{t} command in the timeline and agenda buffers}. When 1304for the @kbd{t} command in the timeline and agenda buffers.}. When
1090used several times in succession, it will still cycle through all 1305used several times in succession, it will still cycle through all
1091names. But when when you return to the item after some time and 1306names. But when when you return to the item after some time and
1092execute @kbd{C-c C-t} again, it will switch from each name directly to 1307execute @kbd{C-c C-t} again, it will switch from each name directly to
@@ -1111,7 +1326,7 @@ anywhere in the file:
1111#+TYP_TODO: Fred Sara Lucy Mike DONE 1326#+TYP_TODO: Fred Sara Lucy Mike DONE
1112@end example 1327@end example
1113 1328
1114@cindex Completing option keywords 1329@cindex Completion, of option keywords
1115@kindex M-@key{TAB} 1330@kindex M-@key{TAB}
1116@noindent To make sure you are using the correct keyword, type 1331@noindent To make sure you are using the correct keyword, type
1117@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion. 1332@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
@@ -1171,7 +1386,7 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
1171@itemx S-@key{down} 1386@itemx S-@key{down}
1172Increase/decrease priority of current item. Note that these keys are 1387Increase/decrease priority of current item. Note that these keys are
1173also used to modify time stamps (@pxref{Creating timestamps}). 1388also used to modify time stamps (@pxref{Creating timestamps}).
1174Furthermore, these keys is also used by CUA-mode 1389Furthermore, these keys are also used by CUA-mode
1175(@pxref{Interaction}). 1390(@pxref{Interaction}).
1176@end table 1391@end table
1177 1392
@@ -1221,27 +1436,27 @@ example:
1221@end example 1436@end example
1222 1437
1223@item DEADLINE 1438@item DEADLINE
1224@cindex deadline 1439@cindex DEADLINE keyword
1225If a time stamp is preceded by the word @samp{DEADLINE:}, the task 1440If a time stamp is preceded by the word @samp{DEADLINE:}, the task
1226(most likely a TODO item) is supposed to be finished on that date, and 1441(most likely a TODO item) is supposed to be finished on that date, and
1227it will be listed then. In addition, the compilation for the 1442it will be listed then. In addition, the compilation for @emph{today}
1228@emph{current day} will carry a warning about the approaching or 1443will carry a warning about the approaching or missed deadline,
1229missed deadline, starting @code{org-deadline-warning-days} before the 1444starting @code{org-deadline-warning-days} before the due date, and
1230due date, and continuing until the entry is marked DONE. An example: 1445continuing until the entry is marked DONE. An example:
1231 1446
1232@example 1447@example
1233*** TODO write article about the Earth for the Guide 1448*** TODO write article about the Earth for the Guide
1234 The editor in charge is bbdb:Ford Prefect 1449 The editor in charge is <bbdb:Ford Prefect>
1235 DEADLINE: <2004-02-29 Sun> 1450 DEADLINE: <2004-02-29 Sun>
1236@end example 1451@end example
1237 1452
1238@item SCHEDULED 1453@item SCHEDULED
1239@cindex scheduled 1454@cindex DEADLINE keyword
1240If a time stamp is preceded by the word @samp{SCHEDULED:}, it means 1455If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
1241you are planning to start working on that task on the given date. The 1456you are planning to start working on that task on the given date. The
1242headline will be listed under the given date. In addition, a reminder 1457headline will be listed under the given date. In addition, a reminder
1243that the scheduled date has passed will be present in the compilation 1458that the scheduled date has passed will be present in the compilation
1244for the @emph{current day}, until the entry is marked DONE. I.e., the 1459for the @emph{today}, until the entry is marked DONE. I.e., the
1245task will automatically be forwarded. 1460task will automatically be forwarded.
1246@end table 1461@end table
1247 1462
@@ -1310,7 +1525,7 @@ CUA-mode (@pxref{Interaction}).
1310Change the item under the cursor in a timestamp. The cursor can be on 1525Change the item under the cursor in a timestamp. The cursor can be on
1311a year, month, day, hour or minute. Note that if the cursor is not at 1526a year, month, day, hour or minute. Note that if the cursor is not at
1312a time stamp, these same keys modify the priority of an item. 1527a time stamp, these same keys modify the priority of an item.
1313(@pxref{Priorities}). These key bindings conflict with CUA-mode 1528(@pxref{Priorities}). The key bindings also conflict with CUA-mode
1314(@pxref{Interaction}). 1529(@pxref{Interaction}).
1315 1530
1316 1531
@@ -1325,9 +1540,9 @@ into the following column).
1325@cindex date, reading in minibuffer 1540@cindex date, reading in minibuffer
1326@cindex time, reading in minibuffer 1541@cindex time, reading in minibuffer
1327@cindex calendar, for selecting date 1542@cindex calendar, for selecting date
1328When org prompts for a date/time, the function reading your input will 1543When Org-mode prompts for a date/time, the function reading your input
1329replace anything you choose not to specify with the current date and 1544will replace anything you choose not to specify with the current date
1330time. For details, see the documentation string of 1545and time. For details, see the documentation string of
1331@command{org-read-date}. Also, a calender will pop up to allow 1546@command{org-read-date}. Also, a calender will pop up to allow
1332selecting a date. The calendar can be fully controlled from the 1547selecting a date. The calendar can be fully controlled from the
1333minibuffer, and a date can be selected with the following commands: 1548minibuffer, and a date can be selected with the following commands:
@@ -1487,12 +1702,12 @@ Emacs.
1487The display in the agenda buffer looks best if the category is not 1702The display in the agenda buffer looks best if the category is not
1488longer than 10 characters. 1703longer than 10 characters.
1489 1704
1490@subsection Time Specifications 1705@subsection Time-of-Day Specifications
1491 1706
1492Org-mode checks each agenda item for a time specification. The time 1707Org-mode checks each agenda item for a timeof-day specification. The
1493can be part of the time stamp that triggered inclusion into the agenda, 1708time can be part of the time stamp that triggered inclusion into the
1494for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time ranges can 1709agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
1495be specified with two time stamps, like 1710ranges can be specified with two time stamps, like
1496@c 1711@c
1497@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}. 1712@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
1498 1713
@@ -1608,10 +1823,14 @@ Delete other windows.
1608 1823
1609@kindex w 1824@kindex w
1610@item w 1825@item w
1611Toggle between weekly and daily view. 1826Switch to weekly view (7 days displayed together)
1612 1827
1613@kindex d 1828@kindex d
1614@item d 1829@item d
1830Switch to daily view (just one day displayed)
1831
1832@kindex D
1833@item D
1615Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}. 1834Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
1616 1835
1617@kindex g 1836@kindex g
@@ -1663,7 +1882,7 @@ Display weighted priority of current item.
1663@kindex + 1882@kindex +
1664@kindex S-@key{up} 1883@kindex S-@key{up}
1665@item + 1884@item +
1666@item S-@key{up} 1885@itemx S-@key{up}
1667Increase the priority of the current item. The priority is changed in 1886Increase the priority of the current item. The priority is changed in
1668the original buffer, but the agenda is not resorted. Use the @kbd{r} 1887the original buffer, but the agenda is not resorted. Use the @kbd{r}
1669key for this. 1888key for this.
@@ -1671,7 +1890,7 @@ key for this.
1671@kindex - 1890@kindex -
1672@kindex S-@key{down} 1891@kindex S-@key{down}
1673@item - 1892@item -
1674@item S-@key{down} 1893@itemx S-@key{down}
1675Decrease the priority of the current item. 1894Decrease the priority of the current item.
1676 1895
1677@kindex S-@key{right} 1896@kindex S-@key{right}
@@ -1782,12 +2001,12 @@ agenda, you only need to customize the variable
1782entries including holidays, anniversaries etc will be included in the 2001entries including holidays, anniversaries etc will be included in the
1783agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and 2002agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
1784@key{RET} can be used from the agenda buffer to jump to the diary 2003@key{RET} can be used from the agenda buffer to jump to the diary
1785file, in order to edit existing diary entries. Also the @kbd{i} 2004file, in order to edit existing diary entries. The @kbd{i} command to
1786command to insert new entries for the current date works in the agenda 2005insert new entries for the current date works in the agenda buffer, as
1787buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to 2006well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
1788display Sunrise/Sunset times, show lunar phases and to convert to 2007Sunrise/Sunset times, show lunar phases and to convert to other
1789other calendars, respectively. @kbd{c} can be used to switch back and 2008calendars, respectively. @kbd{c} can be used to switch back and forth
1790forth between calendar and agenda. 2009between calendar and agenda.
1791 2010
1792@node Agenda to diary, , Diary to agenda, Calendar/Diary integration 2011@node Agenda to diary, , Diary to agenda, Calendar/Diary integration
1793@subsection Including the agenda into the diary 2012@subsection Including the agenda into the diary
@@ -1827,9 +2046,8 @@ also the documentation of the @command{org-diary} function.
1827@node Exporting, Miscellaneous, Timeline and Agenda, Top 2046@node Exporting, Miscellaneous, Timeline and Agenda, Top
1828@chapter Exporting 2047@chapter Exporting
1829@cindex exporting 2048@cindex exporting
1830@cindex ASCII file 2049@cindex ASCII export
1831@cindex HTML 2050@cindex HTML export
1832
1833 2051
1834@cindex headline levels, for exporting 2052@cindex headline levels, for exporting
1835For printing and sharing of notes, an Org-mode document can be 2053For printing and sharing of notes, an Org-mode document can be
@@ -1896,6 +2114,7 @@ You can make words @b{*bold*}, @i{/italic/}, and _underlined_
1896@item 2114@item
1897Simple @TeX{}-like math constructs are interpreted: 2115Simple @TeX{}-like math constructs are interpreted:
1898 2116
2117@cindex completion, of @TeX{} symbols
1899@itemize @minus 2118@itemize @minus
1900@item 2119@item
1901@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote 2120@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
@@ -1931,6 +2150,7 @@ they can all be turned off with corresponding variables.
1931@section Export options 2150@section Export options
1932@cindex options, for export 2151@cindex options, for export
1933 2152
2153@cindex completion, of option keywords
1934The exporter recognizes special lines in the buffer which provide 2154The exporter recognizes special lines in the buffer which provide
1935additional information. These lines may be put anywhere in the file. 2155additional information. These lines may be put anywhere in the file.
1936The whole set of lines can be inserted into the buffer with @kbd{C-c 2156The whole set of lines can be inserted into the buffer with @kbd{C-c
@@ -1953,7 +2173,7 @@ you can
1953@cindex headline levels 2173@cindex headline levels
1954@cindex section-numbers 2174@cindex section-numbers
1955@cindex table of contents 2175@cindex table of contents
1956@cindex linebreak-preservation 2176@cindex linebreak preservation
1957@cindex quoted html tags 2177@cindex quoted html tags
1958@cindex fixed-width sections 2178@cindex fixed-width sections
1959@cindex tables 2179@cindex tables
@@ -2003,10 +2223,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
2003 2223
2004@node Completion, Customization, Miscellaneous, Miscellaneous 2224@node Completion, Customization, Miscellaneous, Miscellaneous
2005@section Completion 2225@section Completion
2006@cindex complete @TeX{} symbols 2226@cindex completion, of @TeX{} symbols
2007@cindex complete TODO keywords 2227@cindex completion, of TODO keywords
2008@cindex complete dictionary words 2228@cindex completion, of dictionary words
2009@cindex complete option keywords 2229@cindex completion, of option keywords
2230@cindex completion, of keyword formulas
2010 2231
2011Org-mode supports in-buffer completion. This type of completion does 2232Org-mode supports in-buffer completion. This type of completion does
2012not make use of the minibuffer. You simply type a few letters into 2233not make use of the minibuffer. You simply type a few letters into
@@ -2027,6 +2248,8 @@ After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
2027option keyword is already complete, pressing @kbd{M-@key{TAB}} again 2248option keyword is already complete, pressing @kbd{M-@key{TAB}} again
2028will insert example settings for this keyword. 2249will insert example settings for this keyword.
2029@item 2250@item
2251After @samp{=}, complete keyword formulas for tables.
2252@item
2030Elsewhere, complete dictionary words using ispell. 2253Elsewhere, complete dictionary words using ispell.
2031@end itemize 2254@end itemize
2032@end table 2255@end table
@@ -2047,7 +2270,7 @@ Group} from the @code{Org->Customization} menu.
2047@section Frequently asked questions 2270@section Frequently asked questions
2048 2271
2049@enumerate 2272@enumerate
2050@item @b{Org-mode seems to be useful default mode for the various 2273@item @b{Org-mode seems to be auseful default mode for the various
2051@file{README} files I have scattered through my directories. How do I 2274@file{README} files I have scattered through my directories. How do I
2052turn it on for all @file{README} files?} 2275turn it on for all @file{README} files?}
2053@example 2276@example
@@ -2065,8 +2288,8 @@ possible because of the different outline implementation.
2065 2288
2066@item @b{Is there an easy way to insert links to web locations?}@* 2289@item @b{Is there an easy way to insert links to web locations?}@*
2067@cindex URL, paste into buffer 2290@cindex URL, paste into buffer
2068Sure, just paste them into the buffer. A plain-text URL-like string 2291Sure, just type or paste them into the buffer. A plain-text URL-like
2069is directly interpreted as a link. 2292string is directly interpreted as a link.
2070 2293
2071@item @b{When I export my TODO list, every TODO item becomes a 2294@item @b{When I export my TODO list, every TODO item becomes a
2072separate section. How do I enforce these items to be exported as an 2295separate section. How do I enforce these items to be exported as an
@@ -2107,6 +2330,13 @@ To insert an empty table template, just type @samp{|-} and use
2107@code{org-table-default-size}. However, just starting to type the 2330@code{org-table-default-size}. However, just starting to type the
2108first line is usually much easier. 2331first line is usually much easier.
2109 2332
2333@item @b{One of my table columns has started to fill up with
2334@samp{#ERROR}. What is going on?}@*
2335Org-mode tried to compute the column from other fields using a
2336formula stored in the @samp{#+TBLFMT:} line just below the table, and
2337the evaluation of the formula fails. Fix the fields used in the
2338formula, or fix the formula, or remove it!
2339
2110@item @b{When I am in the last column of a table and just above a 2340@item @b{When I am in the last column of a table and just above a
2111horizontal line in the table, pressing TAB creates a new table line 2341horizontal line in the table, pressing TAB creates a new table line
2112@i{before} the horizontal line. How can I quickly move to the line 2342@i{before} the horizontal line. How can I quickly move to the line
@@ -2125,34 +2355,42 @@ indentation of the first line and realign with @key{TAB}.
2125@node Interaction, Bugs, FAQ, Miscellaneous 2355@node Interaction, Bugs, FAQ, Miscellaneous
2126@section Interaction with other packages 2356@section Interaction with other packages
2127@cindex packages, interaction with other 2357@cindex packages, interaction with other
2128@cindex @file{planner.el} 2358Org-mode can cooperate with the following packages:
2129@cindex @file{remember.el}
2130@cindex @file{table.el}
2131@file{Org.el} can cooperate with the following packages:
2132 2359
2133@table @asis 2360@table @asis
2134@cindex @file{remember.el}
2135@item @file{remember.el} by John Wiegley
2136Org mode cooperates with remember, see @ref{Remember}.
2137@cindex @file{plannner.el}
2138@item @file{planner.el} by John Wiegley
2139Planner is another tool to plan work and keep track of tasks. Planner
2140uses a multi-file approach with project pages and day pages. Is based
2141on Emacs-Wiki. It can be useful to display the agenda entries
2142resulting from org files in day-pages of the planner. This can be
2143done through the diary of the calendar: Integrate org files into the
2144diary as described above, and then turn on the diary support of
2145planner.
2146@cindex @file{table.el} 2361@cindex @file{table.el}
2147@item @file{table.el} by Takaaki Ota 2362@item @file{table.el} by Takaaki Ota
2148Org mode cooperates with table.el, see @ref{table.el}. 2363Org mode cooperates with table.el, see @ref{table.el}.
2364@cindex @file{calc.el}
2365@item @file{calc.el} by Dave Gillespie
2366Org-mode uses the calc package for implementing spreadsheet
2367functionality in its tables (@pxref{Table calculations}). Org-modes
2368checks for the availability of calc by looking for the function
2369@code{calc-eval} which should be autoloaded in your setup if calc has
2370been installed properly. As of Emacs 22, calc is part of the Emacs
2371distribution. Another possibility for interaction between the two
2372packages is using calc for embedded calculations. @xref{Embedded Mode,
2373, Embedded Mode, calc, The calc maanual}.
2374@cindex @file{constants.el}
2375@item @file{constants.el} by Carsten Dominik
2376In a table formula (@pxref{Table calculations}), it is possible to use
2377names for natural constants or units. Instead of defining you own
2378constants in the variable @code{org-table-formula-constants}, install
2379the @file{constants} package which defines a large number of constants
2380and units, and lets you use unit prefixes like @samp{M} for
2381@samp{Mega} etc. You will need version 2.0 of this package, available
2382at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
2383the function @code{constants-get}, which has to be autoloaded in your
2384setup. See the installation instructions in the file
2385@file{constants.el}.
2386@cindex @file{remember.el}
2149@cindex @file{CUA.el} 2387@cindex @file{CUA.el}
2150@item @file{CUA.el} by Kim. F. Storm 2388@item @file{CUA.el} by Kim. F. Storm
2151Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys 2389Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
2152used by CUA-mode (as well as pc-select-mode and s-region-mode) to 2390used by CUA-mode (as well as pc-select-mode and s-region-mode) to
2153select and extend the region. If you want to use one of these 2391select and extend the region. If you want to use one of these
2154packages along with Org-mode, configure the variable 2392packages along with Org-mode, configure the variable
2155@code{org-CUA-compatible}. When set, Org-mode will move the folowing 2393@code{org-CUA-compatible}. When set, Org-mode will move the following
2156keybindings in org-mode files, and in the agenda buffer (but not 2394keybindings in org-mode files, and in the agenda buffer (but not
2157during date selection). 2395during date selection).
2158@example 2396@example
@@ -2163,7 +2401,17 @@ S-RET -> C-S-RET
2163Yes, these are unfortunately more difficult to remember. If you want 2401Yes, these are unfortunately more difficult to remember. If you want
2164to have other replacement keys, look at the variable 2402to have other replacement keys, look at the variable
2165@code{org-disputed-keys}. 2403@code{org-disputed-keys}.
2166 2404@item @file{remember.el} by John Wiegley
2405Org mode cooperates with remember, see @ref{Remember}.
2406@cindex @file{planner.el}
2407@item @file{planner.el} by John Wiegley
2408Planner is another tool to plan work and keep track of tasks. Planner
2409uses a multi-file approach with project pages and day pages. Is based
2410on Emacs-Wiki. If Planner is your primary tool, it can be useful to
2411display the agenda entries resulting from org files in day-pages of
2412the planner. This can be done through the diary of the calendar:
2413Integrate org files into the diary as described above, and then turn
2414on the diary support of planner.
2167@end table 2415@end table
2168 2416
2169@node Bugs, Acknowledgments, Interaction, Miscellaneous 2417@node Bugs, Acknowledgments, Interaction, Miscellaneous
@@ -2177,7 +2425,7 @@ have found too hard to fix.
2177@item 2425@item
2178If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the 2426If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
2179filling is correctly disabled. However, if some text directly 2427filling is correctly disabled. However, if some text directly
2180(without an empty line in between) preceeds or follws a table, calling 2428(without an empty line in between) preceeds or follows a table, calling
2181@code{fill-paragraph} in that text will also fill the table like 2429@code{fill-paragraph} in that text will also fill the table like
2182normal text. Also, @code{fill-region} does bypass the 2430normal text. Also, @code{fill-region} does bypass the
2183@code{fill-paragraph} code and will fill tables like normal text. 2431@code{fill-paragraph} code and will fill tables like normal text.
@@ -2186,6 +2434,10 @@ When the application called by @kbd{C-c C-o} to open a file link fails
2186(for example because the application does not exits or refuses to open 2434(for example because the application does not exits or refuses to open
2187the file), it does so silently. No error message is displayed. 2435the file), it does so silently. No error message is displayed.
2188@item 2436@item
2437Recalculating a table line applies the formulas from left to right.
2438If a formula calculated fields further doen the row, multiple
2439recalculation may be needed to get all fields consistent.
2440@item
2189Under XEmacs, if Org-mode entries are included into the diary, it is 2441Under XEmacs, if Org-mode entries are included into the diary, it is
2190not possible to jump back from the diary to the org file. Apparently, 2442not possible to jump back from the diary to the org file. Apparently,
2191the text properties are lost when the fancy-diary-display is used. 2443the text properties are lost when the fancy-diary-display is used.
@@ -2214,8 +2466,8 @@ suggestions and patches.
2214 2466
2215@itemize @bullet 2467@itemize @bullet
2216@item 2468@item
2217Matthias Rempe (Oelde) provided ideas and suggestions, a patch 2469Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
2218introducing Windows NT/2000 support, and quality control. 2470NT/2000 support, and quality control.
2219@item 2471@item
2220Kevin Rogers contributed code to access VM files on remote hosts. 2472Kevin Rogers contributed code to access VM files on remote hosts.
2221@item 2473@item
@@ -2229,7 +2481,8 @@ his ideas have found their way into the agenda.
2229Philip Rooke created the Org-mode reference card. He also helped with 2481Philip Rooke created the Org-mode reference card. He also helped with
2230beta testing and contributed a number of very useful ideas. 2482beta testing and contributed a number of very useful ideas.
2231@item 2483@item
2232Christian Schlauer proposed angular brackets around links, and some 2484Christian Schlauer proposed angular brackets around links, among other
2485things.
2233other useful stuff. 2486other useful stuff.
2234@item 2487@item
2235David Wainberg suggested to implement an archiving mechanism. 2488David Wainberg suggested to implement an archiving mechanism.
diff --git a/src/ChangeLog b/src/ChangeLog
index 94cfec41a62..2d312756daf 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,11 +1,80 @@
12005-06-29 Juanma Barranquero <lekktu@gmail.com>
2
3 * eval.c (user_variable_p_eh): New function.
4 (Fuser_variable_p): Use it. Clarify docstring.
5 Return t for aliases of user options, nil for alias loops.
6
72005-06-27 Richard M. Stallman <rms@gnu.org>
8
9 * eval.c (Fdefvar): Improve error message.
10
112005-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
12
13 * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
14 change.
15
162005-06-27 Juanma Barranquero <lekktu@gmail.com>
17
18 * eval.c (Fdefvar): Don't try to set constant symbols.
19
202005-06-25 Richard M. Stallman <rms@gnu.org>
21
22 * macfns.c (Fx_show_tip): Pass new arg to try_window.
23
24 * w32fns.c (Fx_show_tip): Pass new arg to try_window.
25
26 * xfns.c (Fx_show_tip): Pass new arg to try_window.
27
28 * xdisp.c (try_window): New arg CHECK_MARGINS. Calls changed.
29 (redisplay_window): Handle try_window reporting point in scroll margin.
30
31 * dispextern.h (try_window): Declare new arg.
32
33 * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID.
34 Use fchmod to copy the file modes.
35 (Frename_file): Don't copy UID and GID here;
36 instead, specify t for PRESERVE_UID_GID when calling Fcopy_file.
37
38 * eval.c (call_debugger): Take full care of extending stack limits
39 to make space for the debugger, and restore the change afterward.
40 Bind debug-on-error to nil.
41 (restore_stack_limits): New subroutine.
42 (Fsignal): Extend specpdl bound along with eval depth bound,
43 for calling edebug. Don't do either one, for calling debugger.
44 (find_handler_clause): Don't bind debug-on-error here.
45 Don't unbind anything either.
46 Temporarily advance max_specpdl_size for calling
47 internal_with_output_to_temp_buffer.
48 (grow_specpdl): Don't alter max_specpdl_size before signaling
49 an error.
50 (syms_of_eval) <max-specpdl-size>: Doc fix.
51
52 * lread.c (read1): 0.0e+NaN should make a "positive" NaN.
53
542005-06-24 Eli Zaretskii <eliz@gnu.org>
55
56 * fileio.c (Frename_file): Undo last change: no need to ifdef away
57 chown on DOS_NT platforms.
58
59 * w32.c (sys_chown): New function.
60
61 * s/ms-w32.h (chown): New; define to sys_chown.
62
632005-06-24 Juanma Barranquero <lekktu@gmail.com>
64
65 * xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
66 (syms_of_xdisp) <void-text-area-pointer>: Doc fix.
67
68 * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
69
12005-06-23 Richard M. Stallman <rms@gnu.org> 702005-06-23 Richard M. Stallman <rms@gnu.org>
2 71
3 * xdisp.c (get_next_display_element): Finish reversing the tests of 72 * xdisp.c (get_next_display_element): Finish reversing the tests of
4 Vnobreak_char_display. 73 Vnobreak_char_display.
5 74
6 * xdisp.c (Vnobreak_char_display): Renamed from Vshow_nonbreak_escape. 75 * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
7 All uses changed. 76 All uses changed.
8 (Qnobreak_space): Renamed from Qno_break_space. All uses changed. 77 (Qnobreak_space): Rename from Qno_break_space. All uses changed.
9 (syms_of_xdisp): Define nobreak-char-display and nobreak-space. 78 (syms_of_xdisp): Define nobreak-char-display and nobreak-space.
10 79
11 * fileio.c (Frename_file): Preserve owner and group, if possible, 80 * fileio.c (Frename_file): Preserve owner and group, if possible,
@@ -301,8 +370,7 @@
301 370
3022005-06-06 Eli Zaretskii <eliz@gnu.org> 3712005-06-06 Eli Zaretskii <eliz@gnu.org>
303 372
304 * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): 373 * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
305 Remove macros.
306 374
307 * unexw32.c (RVA_TO_PTR): Move here from w32heap.h. 375 * unexw32.c (RVA_TO_PTR): Move here from w32heap.h.
308 376
diff --git a/src/dispextern.h b/src/dispextern.h
index cd8488830f0..c049b17ce56 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2589,7 +2589,7 @@ int line_bottom_y P_ ((struct it *));
2589int display_prop_intangible_p P_ ((Lisp_Object)); 2589int display_prop_intangible_p P_ ((Lisp_Object));
2590void resize_echo_area_exactly P_ ((void)); 2590void resize_echo_area_exactly P_ ((void));
2591int resize_mini_window P_ ((struct window *, int)); 2591int resize_mini_window P_ ((struct window *, int));
2592int try_window P_ ((Lisp_Object, struct text_pos)); 2592int try_window P_ ((Lisp_Object, struct text_pos, int));
2593void window_box P_ ((struct window *, int, int *, int *, int *, int *)); 2593void window_box P_ ((struct window *, int, int *, int *, int *, int *));
2594int window_box_height P_ ((struct window *)); 2594int window_box_height P_ ((struct window *));
2595int window_text_bottom_y P_ ((struct window *)); 2595int window_text_bottom_y P_ ((struct window *));
diff --git a/src/eval.c b/src/eval.c
index 8ad289fd51f..17e9f7f4360 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -227,6 +227,18 @@ init_eval ()
227 when_entered_debugger = -1; 227 when_entered_debugger = -1;
228} 228}
229 229
230/* unwind-protect function used by call_debugger. */
231
232static Lisp_Object
233restore_stack_limits (data)
234 Lisp_Object data;
235{
236 max_specpdl_size = XINT (XCAR (data));
237 max_lisp_eval_depth = XINT (XCDR (data));
238}
239
240/* Call the Lisp debugger, giving it argument ARG. */
241
230Lisp_Object 242Lisp_Object
231call_debugger (arg) 243call_debugger (arg)
232 Lisp_Object arg; 244 Lisp_Object arg;
@@ -234,12 +246,22 @@ call_debugger (arg)
234 int debug_while_redisplaying; 246 int debug_while_redisplaying;
235 int count = SPECPDL_INDEX (); 247 int count = SPECPDL_INDEX ();
236 Lisp_Object val; 248 Lisp_Object val;
249 int old_max = max_specpdl_size;
250
251 /* Temporarily bump up the stack limits,
252 so the debugger won't run out of stack. */
253
254 max_specpdl_size += 1;
255 record_unwind_protect (restore_stack_limits,
256 Fcons (make_number (old_max),
257 make_number (max_lisp_eval_depth)));
258 max_specpdl_size = old_max;
237 259
238 if (lisp_eval_depth + 20 > max_lisp_eval_depth) 260 if (lisp_eval_depth + 40 > max_lisp_eval_depth)
239 max_lisp_eval_depth = lisp_eval_depth + 20; 261 max_lisp_eval_depth = lisp_eval_depth + 40;
240 262
241 if (specpdl_size + 40 > max_specpdl_size) 263 if (SPECPDL_INDEX () + 100 > max_specpdl_size)
242 max_specpdl_size = specpdl_size + 40; 264 max_specpdl_size = SPECPDL_INDEX () + 100;
243 265
244#ifdef HAVE_X_WINDOWS 266#ifdef HAVE_X_WINDOWS
245 if (display_hourglass_p) 267 if (display_hourglass_p)
@@ -256,6 +278,7 @@ call_debugger (arg)
256 specbind (intern ("debugger-may-continue"), 278 specbind (intern ("debugger-may-continue"),
257 debug_while_redisplaying ? Qnil : Qt); 279 debug_while_redisplaying ? Qnil : Qt);
258 specbind (Qinhibit_redisplay, Qnil); 280 specbind (Qinhibit_redisplay, Qnil);
281 specbind (Qdebug_on_error, Qnil);
259 282
260#if 0 /* Binding this prevents execution of Lisp code during 283#if 0 /* Binding this prevents execution of Lisp code during
261 redisplay, which necessarily leads to display problems. */ 284 redisplay, which necessarily leads to display problems. */
@@ -783,6 +806,10 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
783 register Lisp_Object sym, tem, tail; 806 register Lisp_Object sym, tem, tail;
784 807
785 sym = Fcar (args); 808 sym = Fcar (args);
809 if (SYMBOL_CONSTANT_P (sym))
810 error ("Constant symbol `%s' specified in defvar",
811 SDATA (SYMBOL_NAME (sym)));
812
786 tail = Fcdr (args); 813 tail = Fcdr (args);
787 if (!NILP (Fcdr (Fcdr (tail)))) 814 if (!NILP (Fcdr (Fcdr (tail))))
788 error ("Too many arguments"); 815 error ("Too many arguments");
@@ -862,12 +889,24 @@ usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */)
862 return sym; 889 return sym;
863} 890}
864 891
892/* Error handler used in Fuser_variable_p. */
893static Lisp_Object
894user_variable_p_eh (ignore)
895 Lisp_Object ignore;
896{
897 return Qnil;
898}
899
865DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0, 900DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0,
866 doc: /* Returns t if VARIABLE is intended to be set and modified by users. 901 doc: /* Return t if VARIABLE is intended to be set and modified by users.
867\(The alternative is a variable used internally in a Lisp program.) 902\(The alternative is a variable used internally in a Lisp program.)
868Determined by whether the first character of the documentation 903A variable is a user variable if
869for the variable is `*' or if the variable is customizable (has a non-nil 904\(1) the first character of its documentation is `*', or
870value of `standard-value' or of `custom-autoload' on its property list). */) 905\(2) it is customizable (its property list contains a non-nil value
906 of `standard-value' or `custom-autoload'), or
907\(3) it is an alias for another user variable.
908Return nil if VARIABLE is an alias and there is a loop in the
909chain of symbols. */)
871 (variable) 910 (variable)
872 Lisp_Object variable; 911 Lisp_Object variable;
873{ 912{
@@ -876,23 +915,37 @@ value of `standard-value' or of `custom-autoload' on its property list). */)
876 if (!SYMBOLP (variable)) 915 if (!SYMBOLP (variable))
877 return Qnil; 916 return Qnil;
878 917
879 documentation = Fget (variable, Qvariable_documentation); 918 /* If indirect and there's an alias loop, don't check anything else. */
880 if (INTEGERP (documentation) && XINT (documentation) < 0) 919 if (XSYMBOL (variable)->indirect_variable
881 return Qt; 920 && NILP (internal_condition_case_1 (indirect_variable, variable,
882 if (STRINGP (documentation) 921 Qt, user_variable_p_eh)))
883 && ((unsigned char) SREF (documentation, 0) == '*')) 922 return Qnil;
884 return Qt; 923
885 /* If it is (STRING . INTEGER), a negative integer means a user variable. */ 924 while (1)
886 if (CONSP (documentation) 925 {
887 && STRINGP (XCAR (documentation)) 926 documentation = Fget (variable, Qvariable_documentation);
888 && INTEGERP (XCDR (documentation)) 927 if (INTEGERP (documentation) && XINT (documentation) < 0)
889 && XINT (XCDR (documentation)) < 0) 928 return Qt;
890 return Qt; 929 if (STRINGP (documentation)
891 /* Customizable? See `custom-variable-p'. */ 930 && ((unsigned char) SREF (documentation, 0) == '*'))
892 if ((!NILP (Fget (variable, intern ("standard-value")))) 931 return Qt;
893 || (!NILP (Fget (variable, intern ("custom-autoload"))))) 932 /* If it is (STRING . INTEGER), a negative integer means a user variable. */
894 return Qt; 933 if (CONSP (documentation)
895 return Qnil; 934 && STRINGP (XCAR (documentation))
935 && INTEGERP (XCDR (documentation))
936 && XINT (XCDR (documentation)) < 0)
937 return Qt;
938 /* Customizable? See `custom-variable-p'. */
939 if ((!NILP (Fget (variable, intern ("standard-value"))))
940 || (!NILP (Fget (variable, intern ("custom-autoload")))))
941 return Qt;
942
943 if (!XSYMBOL (variable)->indirect_variable)
944 return Qnil;
945
946 /* An indirect variable? Let's follow the chain. */
947 variable = XSYMBOL (variable)->value;
948 }
896} 949}
897 950
898DEFUN ("let*", FletX, SletX, 1, UNEVALLED, 0, 951DEFUN ("let*", FletX, SletX, 1, UNEVALLED, 0,
@@ -1533,7 +1586,16 @@ See also the function `condition-case'. */)
1533 /* This hook is used by edebug. */ 1586 /* This hook is used by edebug. */
1534 if (! NILP (Vsignal_hook_function) 1587 if (! NILP (Vsignal_hook_function)
1535 && ! NILP (error_symbol)) 1588 && ! NILP (error_symbol))
1536 call2 (Vsignal_hook_function, error_symbol, data); 1589 {
1590 /* Edebug takes care of restoring these variables when it exits. */
1591 if (lisp_eval_depth + 20 > max_lisp_eval_depth)
1592 max_lisp_eval_depth = lisp_eval_depth + 20;
1593
1594 if (SPECPDL_INDEX () + 40 > max_specpdl_size)
1595 max_specpdl_size = SPECPDL_INDEX () + 40;
1596
1597 call2 (Vsignal_hook_function, error_symbol, data);
1598 }
1537 1599
1538 conditions = Fget (real_error_symbol, Qerror_conditions); 1600 conditions = Fget (real_error_symbol, Qerror_conditions);
1539 1601
@@ -1555,12 +1617,6 @@ See also the function `condition-case'. */)
1555 { 1617 {
1556 register Lisp_Object clause; 1618 register Lisp_Object clause;
1557 1619
1558 if (lisp_eval_depth + 20 > max_lisp_eval_depth)
1559 max_lisp_eval_depth = lisp_eval_depth + 20;
1560
1561 if (specpdl_size + 40 > max_specpdl_size)
1562 max_specpdl_size = specpdl_size + 40;
1563
1564 clause = find_handler_clause (handlerlist->handler, conditions, 1620 clause = find_handler_clause (handlerlist->handler, conditions,
1565 error_symbol, data, &debugger_value); 1621 error_symbol, data, &debugger_value);
1566 1622
@@ -1673,7 +1729,11 @@ skip_debugger (conditions, data)
1673 = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA). 1729 = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA).
1674 This is for memory-full errors only. 1730 This is for memory-full errors only.
1675 1731
1676 Store value returned from debugger into *DEBUGGER_VALUE_PTR. */ 1732 Store value returned from debugger into *DEBUGGER_VALUE_PTR.
1733
1734 We need to increase max_specpdl_size temporarily around
1735 anything we do that can push on the specpdl, so as not to get
1736 a second error here in case we're handling specpdl overflow. */
1677 1737
1678static Lisp_Object 1738static Lisp_Object
1679find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr) 1739find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
@@ -1691,7 +1751,6 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
1691 || !NILP (Vdebug_on_signal)) /* This says call debugger even if 1751 || !NILP (Vdebug_on_signal)) /* This says call debugger even if
1692 there is a handler. */ 1752 there is a handler. */
1693 { 1753 {
1694 int count = SPECPDL_INDEX ();
1695 int debugger_called = 0; 1754 int debugger_called = 0;
1696 Lisp_Object sig_symbol, combined_data; 1755 Lisp_Object sig_symbol, combined_data;
1697 /* This is set to 1 if we are handling a memory-full error, 1756 /* This is set to 1 if we are handling a memory-full error,
@@ -1713,6 +1772,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
1713 1772
1714 if (wants_debugger (Vstack_trace_on_error, conditions)) 1773 if (wants_debugger (Vstack_trace_on_error, conditions))
1715 { 1774 {
1775 max_specpdl_size++;
1716#ifdef PROTOTYPES 1776#ifdef PROTOTYPES
1717 internal_with_output_to_temp_buffer ("*Backtrace*", 1777 internal_with_output_to_temp_buffer ("*Backtrace*",
1718 (Lisp_Object (*) (Lisp_Object)) Fbacktrace, 1778 (Lisp_Object (*) (Lisp_Object)) Fbacktrace,
@@ -1721,6 +1781,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
1721 internal_with_output_to_temp_buffer ("*Backtrace*", 1781 internal_with_output_to_temp_buffer ("*Backtrace*",
1722 Fbacktrace, Qnil); 1782 Fbacktrace, Qnil);
1723#endif 1783#endif
1784 max_specpdl_size--;
1724 } 1785 }
1725 if (! no_debugger 1786 if (! no_debugger
1726 && (EQ (sig_symbol, Qquit) 1787 && (EQ (sig_symbol, Qquit)
@@ -1729,7 +1790,6 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
1729 && ! skip_debugger (conditions, combined_data) 1790 && ! skip_debugger (conditions, combined_data)
1730 && when_entered_debugger < num_nonmacro_input_events) 1791 && when_entered_debugger < num_nonmacro_input_events)
1731 { 1792 {
1732 specbind (Qdebug_on_error, Qnil);
1733 *debugger_value_ptr 1793 *debugger_value_ptr
1734 = call_debugger (Fcons (Qerror, 1794 = call_debugger (Fcons (Qerror,
1735 Fcons (combined_data, Qnil))); 1795 Fcons (combined_data, Qnil)));
@@ -1739,7 +1799,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
1739 if (EQ (handlers, Qerror)) 1799 if (EQ (handlers, Qerror))
1740 { 1800 {
1741 if (debugger_called) 1801 if (debugger_called)
1742 return unbind_to (count, Qlambda); 1802 return Qlambda;
1743 return Qt; 1803 return Qt;
1744 } 1804 }
1745 } 1805 }
@@ -3019,13 +3079,8 @@ grow_specpdl ()
3019 if (max_specpdl_size < 400) 3079 if (max_specpdl_size < 400)
3020 max_specpdl_size = 400; 3080 max_specpdl_size = 400;
3021 if (specpdl_size >= max_specpdl_size) 3081 if (specpdl_size >= max_specpdl_size)
3022 { 3082 Fsignal (Qerror,
3023 if (!NILP (Vdebug_on_error)) 3083 Fcons (build_string ("Variable binding depth exceeds max-specpdl-size"), Qnil));
3024 /* Leave room for some specpdl in the debugger. */
3025 max_specpdl_size = specpdl_size + 100;
3026 Fsignal (Qerror,
3027 Fcons (build_string ("Variable binding depth exceeds max-specpdl-size"), Qnil));
3028 }
3029 } 3084 }
3030 specpdl_size *= 2; 3085 specpdl_size *= 2;
3031 if (specpdl_size > max_specpdl_size) 3086 if (specpdl_size > max_specpdl_size)
@@ -3333,7 +3388,7 @@ syms_of_eval ()
3333{ 3388{
3334 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size, 3389 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size,
3335 doc: /* *Limit on number of Lisp variable bindings & unwind-protects. 3390 doc: /* *Limit on number of Lisp variable bindings & unwind-protects.
3336If Lisp code tries to make more than this many at once, 3391If Lisp code tries to increase the total number past this amount,
3337an error is signaled. 3392an error is signaled.
3338You can safely use a value considerably larger than the default value, 3393You can safely use a value considerably larger than the default value,
3339if that proves inconveniently small. However, if you increase it too far, 3394if that proves inconveniently small. However, if you increase it too far,
diff --git a/src/fileio.c b/src/fileio.c
index 3dab52c47f0..112c879c1c5 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2411,7 +2411,7 @@ barf_or_query_if_file_exists (absname, querystring, interactive, statptr, quick)
2411 return; 2411 return;
2412} 2412}
2413 2413
2414DEFUN ("copy-file", Fcopy_file, Scopy_file, 2, 5, 2414DEFUN ("copy-file", Fcopy_file, Scopy_file, 2, 6,
2415 "fCopy file: \nGCopy %s to file: \np\nP", 2415 "fCopy file: \nGCopy %s to file: \np\nP",
2416 doc: /* Copy FILE to NEWNAME. Both args must be strings. 2416 doc: /* Copy FILE to NEWNAME. Both args must be strings.
2417If NEWNAME names a directory, copy FILE there. 2417If NEWNAME names a directory, copy FILE there.
@@ -2431,9 +2431,13 @@ for an existing file with the same name. If MUSTBENEW is `excl',
2431that means to get an error if the file already exists; never overwrite. 2431that means to get an error if the file already exists; never overwrite.
2432If MUSTBENEW is neither nil nor `excl', that means ask for 2432If MUSTBENEW is neither nil nor `excl', that means ask for
2433confirmation before overwriting, but do go ahead and overwrite the file 2433confirmation before overwriting, but do go ahead and overwrite the file
2434if the user confirms. */) 2434if the user confirms.
2435 (file, newname, ok_if_already_exists, keep_time, mustbenew) 2435
2436If PRESERVE-UID-GID is non-nil, we try to transfer the
2437uid and gid of FILE to NEWNAME. */)
2438 (file, newname, ok_if_already_exists, keep_time, mustbenew, preserve_uid_gid)
2436 Lisp_Object file, newname, ok_if_already_exists, keep_time, mustbenew; 2439 Lisp_Object file, newname, ok_if_already_exists, keep_time, mustbenew;
2440 Lisp_Object preserve_uid_gid;
2437{ 2441{
2438 int ifd, ofd, n; 2442 int ifd, ofd, n;
2439 char buf[16 * 1024]; 2443 char buf[16 * 1024];
@@ -2575,6 +2579,26 @@ if the user confirms. */)
2575 report_file_error ("I/O error", Fcons (newname, Qnil)); 2579 report_file_error ("I/O error", Fcons (newname, Qnil));
2576 immediate_quit = 0; 2580 immediate_quit = 0;
2577 2581
2582 /* Preserve the owner and group, if requested. */
2583 if (input_file_statable_p && ! NILP (preserve_uid_gid))
2584 fchown (ofd, st.st_uid, st.st_gid);
2585
2586 if (input_file_statable_p)
2587 {
2588#ifndef MSDOS
2589 fchmod (ofd, st.st_mode & 07777);
2590#else /* MSDOS */
2591#if defined (__DJGPP__) && __DJGPP__ > 1
2592 /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
2593 and if it can't, it tells so. Otherwise, under MSDOS we usually
2594 get only the READ bit, which will make the copied file read-only,
2595 so it's better not to chmod at all. */
2596 if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
2597 chmod (SDATA (encoded_newname), st.st_mode & 07777);
2598#endif /* DJGPP version 2 or newer */
2599#endif /* MSDOS */
2600 }
2601
2578 /* Closing the output clobbers the file times on some systems. */ 2602 /* Closing the output clobbers the file times on some systems. */
2579 if (emacs_close (ofd) < 0) 2603 if (emacs_close (ofd) < 0)
2580 report_file_error ("I/O error", Fcons (newname, Qnil)); 2604 report_file_error ("I/O error", Fcons (newname, Qnil));
@@ -2592,18 +2616,6 @@ if the user confirms. */)
2592 Fcons (build_string ("Cannot set file date"), 2616 Fcons (build_string ("Cannot set file date"),
2593 Fcons (newname, Qnil))); 2617 Fcons (newname, Qnil)));
2594 } 2618 }
2595#ifndef MSDOS
2596 chmod (SDATA (encoded_newname), st.st_mode & 07777);
2597#else /* MSDOS */
2598#if defined (__DJGPP__) && __DJGPP__ > 1
2599 /* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
2600 and if it can't, it tells so. Otherwise, under MSDOS we usually
2601 get only the READ bit, which will make the copied file read-only,
2602 so it's better not to chmod at all. */
2603 if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
2604 chmod (SDATA (encoded_newname), st.st_mode & 07777);
2605#endif /* DJGPP version 2 or newer */
2606#endif /* MSDOS */
2607 } 2619 }
2608 2620
2609 emacs_close (ifd); 2621 emacs_close (ifd);
@@ -2780,7 +2792,6 @@ This is what happens in interactive use with M-x. */)
2780 { 2792 {
2781 if (errno == EXDEV) 2793 if (errno == EXDEV)
2782 { 2794 {
2783 struct stat data;
2784#ifdef S_IFLNK 2795#ifdef S_IFLNK
2785 symlink_target = Ffile_symlink_p (file); 2796 symlink_target = Ffile_symlink_p (file);
2786 if (! NILP (symlink_target)) 2797 if (! NILP (symlink_target))
@@ -2788,15 +2799,11 @@ This is what happens in interactive use with M-x. */)
2788 NILP (ok_if_already_exists) ? Qnil : Qt); 2799 NILP (ok_if_already_exists) ? Qnil : Qt);
2789 else 2800 else
2790#endif 2801#endif
2791 Fcopy_file (file, newname, 2802 Fcopy_file (file, newname,
2792 /* We have already prompted if it was an integer, 2803 /* We have already prompted if it was an integer,
2793 so don't have copy-file prompt again. */ 2804 so don't have copy-file prompt again. */
2794 NILP (ok_if_already_exists) ? Qnil : Qt, 2805 NILP (ok_if_already_exists) ? Qnil : Qt,
2795 Qt, Qnil); 2806 Qt, Qnil, Qt);
2796
2797 /* Preserve owner and group, if possible (if we are root). */
2798 if (stat (SDATA (encoded_file), &data) >= 0)
2799 chown (SDATA (encoded_file), data.st_uid, data.st_gid);
2800 2807
2801 Fdelete_file (file); 2808 Fdelete_file (file);
2802 } 2809 }
diff --git a/src/lread.c b/src/lread.c
index d180836ada3..389bc04ddaa 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2715,6 +2715,23 @@ read1 (readcharfun, pch, first_in_list)
2715 break; 2715 break;
2716 case 'N': 2716 case 'N':
2717 value = zero / zero; 2717 value = zero / zero;
2718
2719 /* If that made a "negative" NaN, negate it. */
2720
2721 {
2722 int i;
2723 union { double d; char c[sizeof (double)]; } u_data, u_minus_zero;
2724
2725 u_data.d = value;
2726 u_minus_zero.d = - 0.0;
2727 for (i = 0; i < sizeof (double); i++)
2728 if (u_data.c[i] & u_minus_zero.c[i])
2729 {
2730 value = - value;
2731 break;
2732 }
2733 }
2734 /* Now VALUE is a positive NaN. */
2718 break; 2735 break;
2719 default: 2736 default:
2720 value = atof (read_buffer + negative); 2737 value = atof (read_buffer + negative);
diff --git a/src/macfns.c b/src/macfns.c
index 346ee1e2bde..f6ce7c42a67 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -4088,7 +4088,7 @@ Text larger than the specified size is clipped. */)
4088 clear_glyph_matrix (w->desired_matrix); 4088 clear_glyph_matrix (w->desired_matrix);
4089 clear_glyph_matrix (w->current_matrix); 4089 clear_glyph_matrix (w->current_matrix);
4090 SET_TEXT_POS (pos, BEGV, BEGV_BYTE); 4090 SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
4091 try_window (FRAME_ROOT_WINDOW (f), pos); 4091 try_window (FRAME_ROOT_WINDOW (f), pos, 0);
4092 4092
4093 /* Compute width and height of the tooltip. */ 4093 /* Compute width and height of the tooltip. */
4094 width = height = 0; 4094 width = height = 0;
diff --git a/src/macterm.c b/src/macterm.c
index cef213024fa..16d8452c87c 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -7666,6 +7666,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
7666 default: 7666 default:
7667 break; 7667 break;
7668 } 7668 }
7669 break;
7669 7670
7670 case kEventClassKeyboard: 7671 case kEventClassKeyboard:
7671 switch (GetEventKind (eventRef)) 7672 switch (GetEventKind (eventRef))
@@ -7688,6 +7689,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
7688 default: 7689 default:
7689 break; 7690 break;
7690 } 7691 }
7692 break;
7691 7693
7692 default: 7694 default:
7693 break; 7695 break;
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h
index 998c1f7cf05..10e3bfe3a5a 100644
--- a/src/s/ms-w32.h
+++ b/src/s/ms-w32.h
@@ -311,6 +311,7 @@ Boston, MA 02111-1307, USA. */
311#define chdir sys_chdir 311#define chdir sys_chdir
312#undef chmod 312#undef chmod
313#define chmod sys_chmod 313#define chmod sys_chmod
314#define chown sys_chown
314#undef close 315#undef close
315#define close sys_close 316#define close sys_close
316#undef creat 317#undef creat
diff --git a/src/w32.c b/src/w32.c
index 1bb4a91ff03..1585b3eaf1e 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -1898,6 +1898,14 @@ sys_chmod (const char * path, int mode)
1898} 1898}
1899 1899
1900int 1900int
1901sys_chown (const char *path, uid_t owner, gid_t group)
1902{
1903 if (sys_chmod (path, _S_IREAD) == -1) /* check if file exists */
1904 return -1;
1905 return 0;
1906}
1907
1908int
1901sys_creat (const char * path, int mode) 1909sys_creat (const char * path, int mode)
1902{ 1910{
1903 return _creat (map_w32_filename (path, NULL), mode); 1911 return _creat (map_w32_filename (path, NULL), mode);
diff --git a/src/w32fns.c b/src/w32fns.c
index 3913349d8bd..5d92cb03d00 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -7648,7 +7648,7 @@ Text larger than the specified size is clipped. */)
7648 clear_glyph_matrix (w->desired_matrix); 7648 clear_glyph_matrix (w->desired_matrix);
7649 clear_glyph_matrix (w->current_matrix); 7649 clear_glyph_matrix (w->current_matrix);
7650 SET_TEXT_POS (pos, BEGV, BEGV_BYTE); 7650 SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
7651 try_window (FRAME_ROOT_WINDOW (f), pos); 7651 try_window (FRAME_ROOT_WINDOW (f), pos, 0);
7652 7652
7653 /* Compute width and height of the tooltip. */ 7653 /* Compute width and height of the tooltip. */
7654 width = height = 0; 7654 width = height = 0;
diff --git a/src/xdisp.c b/src/xdisp.c
index b5f69a93810..0a2a02b4628 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7697,7 +7697,7 @@ display_echo_area_1 (a1, a2, a3, a4)
7697 clear_glyph_matrix (w->desired_matrix); 7697 clear_glyph_matrix (w->desired_matrix);
7698 XSETWINDOW (window, w); 7698 XSETWINDOW (window, w);
7699 SET_TEXT_POS (start, BEG, BEG_BYTE); 7699 SET_TEXT_POS (start, BEG, BEG_BYTE);
7700 try_window (window, start); 7700 try_window (window, start, 0);
7701 7701
7702 return window_height_changed_p; 7702 return window_height_changed_p;
7703} 7703}
@@ -11665,7 +11665,7 @@ try_scrolling (window, just_this_one_p, scroll_conservatively,
11665 11665
11666 /* Display the window. Give up if new fonts are loaded, or if point 11666 /* Display the window. Give up if new fonts are loaded, or if point
11667 doesn't appear. */ 11667 doesn't appear. */
11668 if (!try_window (window, startp)) 11668 if (!try_window (window, startp, 0))
11669 rc = SCROLLING_NEED_LARGER_MATRICES; 11669 rc = SCROLLING_NEED_LARGER_MATRICES;
11670 else if (w->cursor.vpos < 0) 11670 else if (w->cursor.vpos < 0)
11671 { 11671 {
@@ -12268,6 +12268,7 @@ redisplay_window (window, just_this_one_p)
12268 { 12268 {
12269 /* We set this later on if we have to adjust point. */ 12269 /* We set this later on if we have to adjust point. */
12270 int new_vpos = -1; 12270 int new_vpos = -1;
12271 int val;
12271 12272
12272 w->force_start = Qnil; 12273 w->force_start = Qnil;
12273 w->vscroll = 0; 12274 w->vscroll = 0;
@@ -12301,12 +12302,16 @@ redisplay_window (window, just_this_one_p)
12301 12302
12302 /* Redisplay, then check if cursor has been set during the 12303 /* Redisplay, then check if cursor has been set during the
12303 redisplay. Give up if new fonts were loaded. */ 12304 redisplay. Give up if new fonts were loaded. */
12304 if (!try_window (window, startp)) 12305 val = try_window (window, startp, 1);
12306 if (!val)
12305 { 12307 {
12306 w->force_start = Qt; 12308 w->force_start = Qt;
12307 clear_glyph_matrix (w->desired_matrix); 12309 clear_glyph_matrix (w->desired_matrix);
12308 goto need_larger_matrices; 12310 goto need_larger_matrices;
12309 } 12311 }
12312 /* Point was outside the scroll margins. */
12313 if (val < 0)
12314 new_vpos = window_box_height (w) / 2;
12310 12315
12311 if (w->cursor.vpos < 0 && !w->frozen_window_start_p) 12316 if (w->cursor.vpos < 0 && !w->frozen_window_start_p)
12312 { 12317 {
@@ -12349,7 +12354,7 @@ redisplay_window (window, just_this_one_p)
12349 && !NILP (current_buffer->mark_active)) 12354 && !NILP (current_buffer->mark_active))
12350 { 12355 {
12351 clear_glyph_matrix (w->desired_matrix); 12356 clear_glyph_matrix (w->desired_matrix);
12352 if (!try_window (window, startp)) 12357 if (!try_window (window, startp, 0))
12353 goto need_larger_matrices; 12358 goto need_larger_matrices;
12354 } 12359 }
12355 } 12360 }
@@ -12439,7 +12444,11 @@ redisplay_window (window, just_this_one_p)
12439 = try_window_reusing_current_matrix (w))) 12444 = try_window_reusing_current_matrix (w)))
12440 { 12445 {
12441 IF_DEBUG (debug_method_add (w, "1")); 12446 IF_DEBUG (debug_method_add (w, "1"));
12442 try_window (window, startp); 12447 if (try_window (window, startp, 1) < 0)
12448 /* -1 means we need to scroll.
12449 0 means we need new matrices, but fonts_changed_p
12450 is set in that case, so we will detect it below. */
12451 goto try_to_scroll;
12443 } 12452 }
12444 12453
12445 if (fonts_changed_p) 12454 if (fonts_changed_p)
@@ -12569,7 +12578,7 @@ redisplay_window (window, just_this_one_p)
12569 || MINI_WINDOW_P (w) 12578 || MINI_WINDOW_P (w)
12570 || !(used_current_matrix_p 12579 || !(used_current_matrix_p
12571 = try_window_reusing_current_matrix (w))) 12580 = try_window_reusing_current_matrix (w)))
12572 try_window (window, startp); 12581 try_window (window, startp, 0);
12573 12582
12574 /* If new fonts have been loaded (due to fontsets), give up. We 12583 /* If new fonts have been loaded (due to fontsets), give up. We
12575 have to start a new redisplay since we need to re-adjust glyph 12584 have to start a new redisplay since we need to re-adjust glyph
@@ -12589,13 +12598,13 @@ redisplay_window (window, just_this_one_p)
12589 { 12598 {
12590 clear_glyph_matrix (w->desired_matrix); 12599 clear_glyph_matrix (w->desired_matrix);
12591 move_it_by_lines (&it, 1, 0); 12600 move_it_by_lines (&it, 1, 0);
12592 try_window (window, it.current.pos); 12601 try_window (window, it.current.pos, 0);
12593 } 12602 }
12594 else if (PT < IT_CHARPOS (it)) 12603 else if (PT < IT_CHARPOS (it))
12595 { 12604 {
12596 clear_glyph_matrix (w->desired_matrix); 12605 clear_glyph_matrix (w->desired_matrix);
12597 move_it_by_lines (&it, -1, 0); 12606 move_it_by_lines (&it, -1, 0);
12598 try_window (window, it.current.pos); 12607 try_window (window, it.current.pos, 0);
12599 } 12608 }
12600 else 12609 else
12601 { 12610 {
@@ -12778,14 +12787,18 @@ redisplay_window (window, just_this_one_p)
12778 12787
12779 12788
12780/* Build the complete desired matrix of WINDOW with a window start 12789/* Build the complete desired matrix of WINDOW with a window start
12781 buffer position POS. Value is non-zero if successful. It is zero 12790 buffer position POS.
12782 if fonts were loaded during redisplay which makes re-adjusting 12791
12783 glyph matrices necessary. */ 12792 Value is 1 if successful. It is zero if fonts were loaded during
12793 redisplay which makes re-adjusting glyph matrices necessary, and -1
12794 if point would appear in the scroll margins.
12795 (We check that only if CHECK_MARGINS is nonzero. */
12784 12796
12785int 12797int
12786try_window (window, pos) 12798try_window (window, pos, check_margins)
12787 Lisp_Object window; 12799 Lisp_Object window;
12788 struct text_pos pos; 12800 struct text_pos pos;
12801 int check_margins;
12789{ 12802{
12790 struct window *w = XWINDOW (window); 12803 struct window *w = XWINDOW (window);
12791 struct it it; 12804 struct it it;
@@ -12810,6 +12823,30 @@ try_window (window, pos)
12810 return 0; 12823 return 0;
12811 } 12824 }
12812 12825
12826 /* Don't let the cursor end in the scroll margins. */
12827 if (check_margins)
12828 {
12829 int this_scroll_margin, cursor_height;
12830
12831 this_scroll_margin = max (0, scroll_margin);
12832 this_scroll_margin = min (this_scroll_margin, WINDOW_TOTAL_LINES (w) / 4);
12833 this_scroll_margin *= FRAME_LINE_HEIGHT (it.f);
12834 cursor_height = MATRIX_ROW (w->desired_matrix, w->cursor.vpos)->height;
12835
12836 if ((w->cursor.y < this_scroll_margin
12837 && CHARPOS (pos) > BEGV)
12838 /* Old redisplay didn't take scroll margin into account at the bottom,
12839 but then global-hl-line-mode doesn't scroll. KFS 2004-06-14 */
12840 || (w->cursor.y + (make_cursor_line_fully_visible_p
12841 ? cursor_height + this_scroll_margin
12842 : 1)) > it.last_visible_y)
12843 {
12844 w->cursor.vpos = -1;
12845 clear_glyph_matrix (w->desired_matrix);
12846 return -1;
12847 }
12848 }
12849
12813 /* If bottom moved off end of frame, change mode line percentage. */ 12850 /* If bottom moved off end of frame, change mode line percentage. */
12814 if (XFASTINT (w->window_end_pos) <= 0 12851 if (XFASTINT (w->window_end_pos) <= 0
12815 && Z != IT_CHARPOS (it)) 12852 && Z != IT_CHARPOS (it))
@@ -21801,7 +21838,7 @@ note_mouse_highlight (f, x, y)
21801 /* If we were displaying active text in another window, clear that. 21838 /* If we were displaying active text in another window, clear that.
21802 Also clear if we move out of text area in same window. */ 21839 Also clear if we move out of text area in same window. */
21803 if (! EQ (window, dpyinfo->mouse_face_window) 21840 if (! EQ (window, dpyinfo->mouse_face_window)
21804 || (part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE 21841 || (part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE
21805 && !NILP (dpyinfo->mouse_face_window))) 21842 && !NILP (dpyinfo->mouse_face_window)))
21806 clear_mouse_face (dpyinfo); 21843 clear_mouse_face (dpyinfo);
21807 21844
@@ -23026,17 +23063,17 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
23026 23063
23027 DEFVAR_LISP ("nobreak-char-display", &Vnobreak_char_display, 23064 DEFVAR_LISP ("nobreak-char-display", &Vnobreak_char_display,
23028 doc: /* *Control highlighting of nobreak space and soft hyphen. 23065 doc: /* *Control highlighting of nobreak space and soft hyphen.
23029t means highlight the character itself (for nobreak space, 23066A value of t means highlight the character itself (for nobreak space,
23030use face `nobreak-space'. 23067use face `nobreak-space').
23031nil means no highlighting. 23068A value of nil means no highlighting.
23032other values mean display the escape glyph followed by an ordinary 23069Other values mean display the escape glyph followed by an ordinary
23033space or ordinary hyphen. */); 23070space or ordinary hyphen. */);
23034 Vnobreak_char_display = Qt; 23071 Vnobreak_char_display = Qt;
23035 23072
23036 DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer, 23073 DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer,
23037 doc: /* *The pointer shape to show in void text areas. 23074 doc: /* *The pointer shape to show in void text areas.
23038Nil means to show the text pointer. Other options are `arrow', `text', 23075A value of nil means to show the text pointer. Other options are `arrow',
23039`hand', `vdrag', `hdrag', `modeline', and `hourglass'. */); 23076`text', `hand', `vdrag', `hdrag', `modeline', and `hourglass'. */);
23040 Vvoid_text_area_pointer = Qarrow; 23077 Vvoid_text_area_pointer = Qarrow;
23041 23078
23042 DEFVAR_LISP ("inhibit-redisplay", &Vinhibit_redisplay, 23079 DEFVAR_LISP ("inhibit-redisplay", &Vinhibit_redisplay,
diff --git a/src/xfns.c b/src/xfns.c
index e5efec27b7d..1de6fc71d1a 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5070,7 +5070,7 @@ Text larger than the specified size is clipped. */)
5070 clear_glyph_matrix (w->desired_matrix); 5070 clear_glyph_matrix (w->desired_matrix);
5071 clear_glyph_matrix (w->current_matrix); 5071 clear_glyph_matrix (w->current_matrix);
5072 SET_TEXT_POS (pos, BEGV, BEGV_BYTE); 5072 SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
5073 try_window (FRAME_ROOT_WINDOW (f), pos); 5073 try_window (FRAME_ROOT_WINDOW (f), pos, 0);
5074 5074
5075 /* Compute width and height of the tooltip. */ 5075 /* Compute width and height of the tooltip. */
5076 width = height = 0; 5076 width = height = 0;