aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-12-03 14:25:50 +0000
committerKaroly Lorentey2005-12-03 14:25:50 +0000
commit9ef706664e98e37e9633712126bae99869904677 (patch)
tree193bce7424700e4c7d70f54b04f7f81d64525554
parent950bed4bb96d2a580818bdaab64a164c7c9a1c1e (diff)
parent9f6efa0c78099f2f028c4db1db5a58567a1cfb4e (diff)
downloademacs-9ef706664e98e37e9633712126bae99869904677.tar.gz
emacs-9ef706664e98e37e9633712126bae99869904677.zip
Merged from miles@gnu.org--gnu-2005 (patch 659-663)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-659 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-660 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-661 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-662 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-663 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-445
-rw-r--r--ChangeLog4
-rw-r--r--admin/ChangeLog4
-rw-r--r--admin/FOR-RELEASE4
-rw-r--r--etc/ChangeLog10
-rw-r--r--etc/MORE.STUFF5
-rw-r--r--etc/NEWS7
-rw-r--r--etc/TODO8
-rw-r--r--etc/calccard.tex32
-rw-r--r--etc/orgcard.ps1374
-rw-r--r--etc/orgcard.tex8
-rw-r--r--lisp/ChangeLog468
-rw-r--r--lisp/apropos.el21
-rw-r--r--lisp/arc-mode.el2
-rw-r--r--lisp/buff-menu.el9
-rw-r--r--lisp/calc/calc-embed.el2
-rw-r--r--lisp/calc/calc-misc.el7
-rw-r--r--lisp/calc/calc-prog.el2
-rw-r--r--lisp/calc/calc.el19
-rw-r--r--lisp/complete.el57
-rw-r--r--lisp/completion.el819
-rw-r--r--lisp/cus-edit.el19
-rw-r--r--lisp/cus-face.el11
-rw-r--r--lisp/custom.el10
-rw-r--r--lisp/dabbrev.el94
-rw-r--r--lisp/dframe.el4
-rw-r--r--lisp/ediff-wind.el10
-rw-r--r--lisp/ediff.el2
-rw-r--r--lisp/emacs-lisp/autoload.el9
-rw-r--r--lisp/emacs-lisp/cl-macs.el7
-rw-r--r--lisp/emacs-lisp/elp.el66
-rw-r--r--lisp/emulation/cua-rect.el10
-rw-r--r--lisp/emulation/viper-keym.el5
-rw-r--r--lisp/emulation/viper.el5
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/font-lock.el5
-rw-r--r--lisp/gnus/ChangeLog6
-rw-r--r--lisp/gnus/gnus-delay.el3
-rw-r--r--lisp/help-fns.el5
-rw-r--r--lisp/help.el122
-rw-r--r--lisp/hi-lock.el178
-rw-r--r--lisp/ido.el149
-rw-r--r--lisp/info.el71
-rw-r--r--lisp/international/latexenc.el3
-rw-r--r--lisp/isearch.el21
-rw-r--r--lisp/loadup.el4
-rw-r--r--lisp/log-edit.el113
-rw-r--r--lisp/longlines.el17
-rw-r--r--lisp/ls-lisp.el31
-rw-r--r--lisp/mail/mailheader.el4
-rw-r--r--lisp/mail/sendmail.el77
-rw-r--r--lisp/mouse.el13
-rw-r--r--lisp/net/goto-addr.el4
-rw-r--r--lisp/paren.el9
-rw-r--r--lisp/progmodes/compile.el13
-rw-r--r--lisp/progmodes/gdb-ui.el167
-rw-r--r--lisp/progmodes/gud.el39
-rw-r--r--lisp/progmodes/octave-inf.el7
-rw-r--r--lisp/progmodes/sh-script.el2
-rw-r--r--lisp/recentf.el85
-rw-r--r--lisp/replace.el100
-rw-r--r--lisp/simple.el24
-rw-r--r--lisp/speedbar.el12
-rw-r--r--lisp/term/mac-win.el11
-rw-r--r--lisp/term/w32-win.el2
-rw-r--r--lisp/textmodes/flyspell.el51
-rw-r--r--lisp/textmodes/org.el399
-rw-r--r--lisp/view.el13
-rw-r--r--lisp/xt-mouse.el10
-rw-r--r--lispref/ChangeLog4
-rw-r--r--lispref/windows.texi36
-rwxr-xr-xmake-dist10
-rw-r--r--man/ChangeLog31
-rw-r--r--man/building.texi16
-rw-r--r--man/calc.texi671
-rw-r--r--man/macos.texi69
-rw-r--r--man/org.texi130
-rw-r--r--nt/ChangeLog10
-rw-r--r--nt/emacs.rc2
-rw-r--r--nt/icons/emacs.icobin766 -> 22486 bytes
-rw-r--r--nt/icons/emacs21.icobin0 -> 766 bytes
-rw-r--r--src/ChangeLog87
-rw-r--r--src/alloc.c32
-rw-r--r--src/atimer.c2
-rw-r--r--src/buffer.c3
-rw-r--r--src/emacs.c10
-rw-r--r--src/mac.c26
-rw-r--r--src/macterm.c84
-rw-r--r--src/macterm.h1
-rw-r--r--src/minibuf.c4
-rw-r--r--src/window.c137
-rw-r--r--src/xfaces.c2
91 files changed, 3750 insertions, 2503 deletions
diff --git a/ChangeLog b/ChangeLog
index 6063a54bc2c..9aea9f5ab2b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12005-11-22 Romain Francoise <romain@orebokech.com>
2
3 * make-dist: Add etc/images/icons.
4
12005-11-03 Andreas Schwab <schwab@suse.de> 52005-11-03 Andreas Schwab <schwab@suse.de>
2 6
3 * configure.in: Use GZIP_PROG instead of GZIP. 7 * configure.in: Use GZIP_PROG instead of GZIP.
diff --git a/admin/ChangeLog b/admin/ChangeLog
index ff753ae0b6f..b5545f5d76a 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,7 @@
12005-11-28 Chong Yidong <cyd@stupidchicken.com>
2
3 * FOR-RELEASE: Icons installed. Partial completion bug fixed.
4
12005-11-11 Kim F. Storm <storm@cua.dk> 52005-11-11 Kim F. Storm <storm@cua.dk>
2 6
3 * FOR-RELEASE (FATAL ERRORS): Fix infinite loop in redisplay 7 * FOR-RELEASE (FATAL ERRORS): Fix infinite loop in redisplay
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 26de10026db..741cd7a61e6 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -38,8 +38,6 @@ bitmap usage to a bitmap name, and second level maps bitmap name to
38a bitmap appearence. 38a bitmap appearence.
39[Assigned to KFS] 39[Assigned to KFS]
40 40
41** Install Zhilin's icons.
42
43* FATAL ERRORS 41* FATAL ERRORS
44 42
45** Investigate reported crashes in compact_small_strings. 43** Investigate reported crashes in compact_small_strings.
@@ -53,8 +51,6 @@ invalid pointer from string_free_list.
53C-x 2, C-x 3, C-x 2. Now try to move the bottom of the 51C-x 2, C-x 3, C-x 2. Now try to move the bottom of the
54second window to the left. 52second window to the left.
55 53
56** Fix completion highlighting bug in partial completion mode.
57
58** TCP server processes do not work on Windows. 54** TCP server processes do not work on Windows.
59 55
60TCP/IP server processes created with `make-network-process' consume 56TCP/IP server processes created with `make-network-process' consume
diff --git a/etc/ChangeLog b/etc/ChangeLog
index ef8059b68b3..9df3d9d482b 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,13 @@
12005-11-28 Thien-Thi Nguyen <ttn@gnu.org>
2
3 * MORE.STUFF: Add entry: "Go in a buffer: Go Text Protocol client".
4
52005-11-18 Chong Yidong <cyd@stupidchicken.com>
6
7 * images/icons/emacs_16.png, images/icons/emacs_24.png
8 * images/icons/emacs_32.png, images/icons/emacs_48.png:
9 New Emacs icons.
10
12005-11-18 Carsten Dominik <dominik@science.uva.nl> 112005-11-18 Carsten Dominik <dominik@science.uva.nl>
2 12
3 * orgcard.tex: Version 3.20 13 * orgcard.tex: Version 3.20
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index d88d48ab4ae..1e90298c9f0 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -174,6 +174,11 @@ Several are for Debian GNU/Linux in particular.
174 Enhanced emacsclient/emacsserver. Also available from this Web 174 Enhanced emacsclient/emacsserver. Also available from this Web
175 page: eiffel-mode.el. 175 page: eiffel-mode.el.
176 176
177 * Go in a buffer: Go Text Protocol client:
178 <URL:http://www.glug.org/people/ttn/software/personal-elisp/standalone/>
179 A modified version is also bundled with GNU Go:
180 <URL:http://www.gnu.org/software/gnugo/gnugo.html>
181
177 * hm--html-menus: 182 * hm--html-menus:
178 <URL:ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib> 183 <URL:ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib>
179 HTML-specific editing. Can work with PSGML. 184 HTML-specific editing. Can work with PSGML.
diff --git a/etc/NEWS b/etc/NEWS
index 76348145174..c701a356da0 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3317,6 +3317,9 @@ w32-use-full-screen-buffer to t.
3317** The variable `mac-keyboard-text-encoding' and the constants 3317** The variable `mac-keyboard-text-encoding' and the constants
3318`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and 3318`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
3319`kTextEncodingISOLatin2' are obsolete. 3319`kTextEncodingISOLatin2' are obsolete.
3320
3321** The variable `mac-command-key-is-meta' is obsolete. Use
3322`mac-command-modifier' and `mac-option-modifier' instead.
3320 3323
3321* Incompatible Lisp Changes in Emacs 22.1 3324* Incompatible Lisp Changes in Emacs 22.1
3322 3325
@@ -4460,6 +4463,10 @@ argument `dedicated'. If non-nil, those functions do not ignore
4460dedicated windows. 4463dedicated windows.
4461 4464
4462+++ 4465+++
4466*** The new function `adjust-window-trailing-edge' moves the right
4467or bottom edge of a window. It does not move other window edges.
4468
4469+++
4463** Customizable fringe bitmaps 4470** Customizable fringe bitmaps
4464 4471
4465*** New function `define-fringe-bitmap' can now be used to create new 4472*** New function `define-fringe-bitmap' can now be used to create new
diff --git a/etc/TODO b/etc/TODO
index 3e3e26bc32a..643679b5595 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -9,6 +9,8 @@ to the FSF.
9 9
10* Small but important fixes needed in existing features: 10* Small but important fixes needed in existing features:
11 11
12** revert-buffer should eliminate overlays and the mark.
13
12** Make occur correctly handle matches that span more than one line, 14** Make occur correctly handle matches that span more than one line,
13 as well as overlapping matches. 15 as well as overlapping matches.
14 16
@@ -73,6 +75,8 @@ to the FSF.
73 75
74** Internationalize Emacs's messages. 76** Internationalize Emacs's messages.
75 77
78** Install mmc@maruska.dyndns.org's no-flicker change.
79
76** Add a "current vertical pixel level" value that goes with point, 80** Add a "current vertical pixel level" value that goes with point,
77 so that motion commands can also move through tall images. 81 so that motion commands can also move through tall images.
78 This value would be to point as window-vscroll is to window-start. 82 This value would be to point as window-vscroll is to window-start.
@@ -101,6 +105,10 @@ to the FSF.
101** Maybe reinterpret `parse-error' as a category of errors 105** Maybe reinterpret `parse-error' as a category of errors
102 and put some other errors under it. 106 and put some other errors under it.
103 107
108** A function to tell you the argument pattern of functions.
109
110** Make byte-compile warn when a doc string is too wide.
111
104** A function to check for customizable options that have been 112** A function to check for customizable options that have been
105 set but not saved, and ask the user whether to save them. 113 set but not saved, and ask the user whether to save them.
106 This could go in kill-emacs-query-functions, to remind people 114 This could go in kill-emacs-query-functions, to remind people
diff --git a/etc/calccard.tex b/etc/calccard.tex
index 3f1c0ae3cba..1502a3c73c2 100644
--- a/etc/calccard.tex
+++ b/etc/calccard.tex
@@ -254,7 +254,7 @@ MA 02110-1301, USA.
254\def\S#1{$S_{\scriptscriptstyle #1}$} 254\def\S#1{$S_{\scriptscriptstyle #1}$}
255\def\swap{$\leftrightarrow$} 255\def\swap{$\leftrightarrow$}
256 256
257\def\mhash{M-\#\ } 257\def\calcprefix{C-x *\ }
258\def\,{{\rm ,\hskip.55em}\ignorespaces} 258\def\,{{\rm ,\hskip.55em}\ignorespaces}
259\def\lesssectionskip{\vskip-1.5ex} 259\def\lesssectionskip{\vskip-1.5ex}
260 260
@@ -277,14 +277,14 @@ MA 02110-1301, USA.
277 277
278\section{Starting and Stopping} 278\section{Starting and Stopping}
279 279
280\wkey{start/stop standard Calc}{\mhash c} 280\wkey{start/stop standard Calc}{\calcprefix c}
281\wkey{start/stop X keypad Calc}{\mhash k} 281\wkey{start/stop X keypad Calc}{\calcprefix k}
282\wkey{\quad start/stop either: \kbd{\mhash \#} or \kbd{\mhash \mhash}}{} 282\wkey{\quad start/stop either: \kbd{\calcprefix *}}{}
283\wkey{stop standard Calc}{q} 283\wkey{stop standard Calc}{q}
284 284
285\wkey{Calc tutorial}{\mhash t} 285\wkey{Calc tutorial}{\calcprefix t}
286\wkey{run Calc in other window}{\mhash o} 286\wkey{run Calc in other window}{\calcprefix o}
287\wkey{quick calculation in minibuffer}{\mhash q} 287\wkey{quick calculation in minibuffer}{\calcprefix q}
288 288
289\section{Getting Help} 289\section{Getting Help}
290 290
@@ -295,8 +295,8 @@ The \kbd{h} prefix key is Calc's analogue of \kbd{C-h} in Emacs.
295\key{describe key briefly}{h c} 295\key{describe key briefly}{h c}
296\key{describe key fully}{h k} 296\key{describe key fully}{h k}
297\key{describe function or command}{h f} 297\key{describe function or command}{h f}
298\key{read on-line manual}{h i{\rm\enskip or\enskip}\mhash i} 298\key{read on-line manual}{h i{\rm\enskip or\enskip}\calcprefix i}
299\key{read full Calc summary}{h s{\rm\enskip or\enskip}\mhash s} 299\key{read full Calc summary}{h s{\rm\enskip or\enskip}\calcprefix s}
300 300
301\section{Error Recovery} 301\section{Error Recovery}
302 302
@@ -306,16 +306,16 @@ The \kbd{h} prefix key is Calc's analogue of \kbd{C-h} in Emacs.
306\key{redo last operation}{D} 306\key{redo last operation}{D}
307\key{recall last arguments}{M-RET} 307\key{recall last arguments}{M-RET}
308\key{edit top of stack}{`} 308\key{edit top of stack}{`}
309\wkey{reset Calc to initial state}{\mhash 0 {\rm (zero)}} 309\wkey{reset Calc to initial state}{\calcprefix 0 {\rm (zero)}}
310 310
311\section{Transferring Data} 311\section{Transferring Data}
312 312
313\wkey{grab region from a buffer}{\mhash g} 313\wkey{grab region from a buffer}{\calcprefix g}
314\wkey{grab rectangle from a buffer}{\mhash r} 314\wkey{grab rectangle from a buffer}{\calcprefix r}
315\wkey{grab rectangle, summing columns}{\mhash :} 315\wkey{grab rectangle, summing columns}{\calcprefix :}
316\wkey{grab rectangle, summing rows}{\mhash \_} 316\wkey{grab rectangle, summing rows}{\calcprefix \_}
317 317
318\wkey{yank data to a buffer}{\mhash y} 318\wkey{yank data to a buffer}{\calcprefix y}
319 319
320Also, try \kbd{C-k}/\kbd{C-y} or X cut and paste. 320Also, try \kbd{C-k}/\kbd{C-y} or X cut and paste.
321 321
@@ -645,7 +645,7 @@ Variable names are single digits or whole words.
645 645
646\key{begin, end recording a macro}{C-x (\, C-x )} 646\key{begin, end recording a macro}{C-x (\, C-x )}
647\key{replay keyboard macro}{X} 647\key{replay keyboard macro}{X}
648\wkey{read region as written-out macro}{\mhash m} 648\wkey{read region as written-out macro}{\calcprefix m}
649\key{if, else, endif}{Z [\, Z :\, Z ]} 649\key{if, else, endif}{Z [\, Z :\, Z ]}
650\key{equal to, less than, member of}{a =\, a <\, a \{} 650\key{equal to, less than, member of}{a =\, a <\, a \{}
651\key{repeat {\it n} times, break from loop}{Z <\, Z >\, Z /} 651\key{repeat {\it n} times, break from loop}{Z <\, Z >\, Z /}
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
index d49242b2033..19255929a95 100644
--- a/etc/orgcard.ps
+++ b/etc/orgcard.ps
@@ -10,7 +10,7 @@
10%DVIPSWebPage: (www.radicaleye.com) 10%DVIPSWebPage: (www.radicaleye.com)
11%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi 11%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi
12%DVIPSParameters: dpi=600, compressed 12%DVIPSParameters: dpi=600, compressed
13%DVIPSSource: TeX output 2005.10.21:0749 13%DVIPSSource: TeX output 2005.11.24:1542
14%%BeginProcSet: texc.pro 14%%BeginProcSet: texc.pro
15%! 15%!
16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S 16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -352,216 +352,210 @@ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43 352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F 3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E 35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C3 355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
356975289D47E7F35898FD87E0BE88100E53DDB356245666E7F724C208CF200B76D 356C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
3576E86BB756E083DC34DE1DCF484CD664C826962DC9CD5DB207262A43EDB8A18BC 357CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
3587D3F35237299AE378AD68A89E97D65CB05503E2C2D951E3AD2A544DABB19973C 358AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
3592B9AC59428D1FBCD89C058532357D2F4D53F35D49FCDC303475E1B41B3A2E18C 359C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
360657AA0AE4D04BFBEEE2A24D462249CDB73EB96B6702C174BDF87642C3CB6F3C0 36085D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
36186B02C65EE7D5ED2F636F15F50E5D1894F48AE024E1CEB56AEAA3967DCF5ED5A 36191430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
36263C9DD1DAEB9C8A353C2C90BFAA6B66B9E0B13BA0CE464A3C8CB2C5AE94AAB37 3622E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
36372C62E70CEFD0558E483789630CB0FDF76E9EF75D8012E5F7FF85253C480F841 363342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
364CAA7F9FC1E4AD4576BFAD1825C989D197024F8ADB77B7DF5D341E2B68BD7FF5E 364ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
365414852120B733078E1B703AC4845E63CB624BFBC2B575CFF29AFB89BC5957A1C 365C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
366D3838B3FEE6252CDDEABBA24259E50B48741EC36BCCC888E09B9A0BDDE044D9B 36610B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
3670551B31409E7FE2922D73B7E52B08C32481A2F29E81F2B1573D085997BF65B06 3670FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE
36812E062C2ADDB75A199AE7785015967917D9FFF94DCC8CD8CA79B95560EE9C09B 368AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557
36904441CC622B2374030B08089E51AA9E9566AEAA9F81411C638F547B15793F884 369EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895
370E04DAA850CD17CF5093F73DEA68AD40C288EA0C25CFD9FEB596DBC7F86C9E13A 3703925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141
3712F2E43BE780B66A03B4154191383951FF535D8866735B6879C5D4C51147C7553 371F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36
372A012AB7FC667F7DF259690D47B1F2DE226FE539DAE8EE6FFEBDF3186E6ECDEE8 3722B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16
3738B3E2CBC6006456AA69276CD025F387ACD73F0CEE35CC1ED6771107E3A1B866F 373057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A
37419C5C17A18552EA2DBA65EB75D493D05DA9D1247D77F65968CE5BCF68D56E249 37491F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324
3753D41AA3360275F993A8C0C7A33D6317AED8C6426C374E7833241E88DB88862FB 37580F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC
376411E711280F84C46E1A18D0F520A2474E7AF7455709AD19CCFA00463033FD0B8 3761D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3
37761D2CEB925BA10D19FC97AF1953C8F0EEC15254F2C4C56E9FFEF66D00E8E0BF7 3778377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F
37897B60CBB7F8B56B82B2F846A53E2E36CB5D27ED3881206B27DA02F35B6D32962 378D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A
37954D89A03F67E672D019F2DD19195E80C0D0DECD8FCFD259907FCA25D5C407882 3793AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306
380CA7E54D31995F1F14376D72BF33D1AF534A05FF3D323CBBD48003F2A44369C55 380F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6
38180BAF975090EF0D6CF0347C0DB4C6CE743447C7A48981E50BD1667B08CEF2A06 3811A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E
3820B85DFC727BD8BBC505ABE8AED6B7C08C675B50ED7B4FB9FCD0777DED4D7A3DB 382F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F
383528D20414E05BE3DF1F7A76DEFA35135E27230C4CF8069081FDBDA5CAB51061A 3831B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2
384E12CD06BD02AB38CBA57492EFEB4A12AE7B58548623D7F862515AA3EC1B4F84A 38420701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6
3857C9CB4390F825B68E7A6DF4D67DAEF89F1D461ABEDACBF1FA02FEF65F0B8E3ED 3855A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4
38645974B9EC80855D5A1B34D792CC7793D4F05E81E185C3FA86C8A8FF108BAC2E0 38684D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959
387801AB0B3FE4C0CD5257441F29F2F293F4BDCC67D00EFB68440FAEAFE138279D2 3875F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D
388415687CEFCE35F8A1BBB0C18AE4A8ABA688D2F3894B5654AB7AD595E14A21FEF 38896AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558
38941EC3005C351D229B3D1186D118B72EE4143CB89492E211F7490D664ACDAD2D9 389C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7
39070F1FDD65D3A6D84370B8AC3F5FCCF497D067D5A98CC0319404B6825FDB73587 39047C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5
39151D7066CDD0EB40033BFA664BA84E58540F849C0D7987B8F9A7569879351F681 3917444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603
392AC379AA1CDEADCDAF6910C3BCC38E053F6530D9674D6E5E8352DFE3B4F9D74A8 3926671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01
3937F1E76E795110F46E7C5548B85426CEC3E9977B97EFC5DCBA8891784CEEF8917 393864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC
39439BC430CC40DC166C51C1984F1734AD604002716FD4488FADC935CF801AB0DD7 394111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850
3956C865C611509DA17DFBE1A230D6A3F7D21826AEDA368C7EB0DFC740698D2A196 395B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C
396C637BACEA9501C7D421EA39C6B49327913ED5CA51990AE2D3E5AA63732907DC2 3966B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C
397F5A64A50D2E20A1881F9B1BAA746F639EA45158DEEF3D84C08AAD15D0FA0FCAF 3979970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A
398F0C5195372E83862031BD25044DA8B5DA9A9DFB248B001D0F8E957E8810BFE7F 398421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095
3996507B8B1D8D3E81F33D615F899EC881E671E421D66BAEFB992F15E481EA42330 399BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF
4009B880E308BED0527EDBBB718761A8488B218135211541F65096AE8D70F8A8D31 400F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC
4016F6D498318D7C59D355F95650C05C489BBC03779570A4F8FEBC0FF26716243FB 4018EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372
40215D4D03E6E8A8FC09F3F06EB19DBA15E5CF724243C0CE942EFC0771E267C15DC 4023634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448
40330CC67D47504E7CD7FB549D03EDBC6D655EC9BD66160085A2AE4797BE3E87933 4039E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3
404B77CCD6DCF1026E598CB760903ECC82CAE5F6139EFB2B980B7C72552D0A8291F 404A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191
405F3CCA05628B50DECD30786F7DC9ECC532AE8AC212562F7F691D8CE393E02FF78 405A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C
406971E6D5A607F3394A57FF995BF0AFB94E16A619C89A3BE5F49F0AC96A65C76AA 4061CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF
407305C15CD82BC540D42BA924BC728948A6EEABF03A7D2E5448226D6AA94729DE9 40751D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D
4088CCA2D5832408F1685761DF7376EAE3BA2C1E5D1CC394D93E681B3931DE59B1A 4080F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450
409E69218C1108EB831FDACDFCEFE511E471665D8124E795F675E10814006F950EC 4094760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7
41033CC631392FB4C0A49D99E01EC3559A9D761F0C877982865FD2F61B97BCC3C4D 410AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53
41167392977694F889E3C5DD8DACC55498FC38586BE2AA0F754B618EC820C7C80C7 4118ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA
41258145708C6B98C5163D2B1EBFF47116E4D38A046A1E4FD901110F1A1045CE82E 412D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB
413C2020AFC6AAAEDFA12028E2142B2B3C743907C4E8D1090D29C105BE00D870796 41399515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4
414D76E5D390490E7DE28C0A8A0AB39A6E9247EF7C5B20B01F55ECCB14F875BEA2E 414481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52
415CE4397FF9523E58FE23AF03EC2289D401C1048BAECB98394EC222615811D06F0 4151B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA
416D162CF83F6F4C7A87A4DACD987AD4B64428F992AF4EC203DEEDCCEC70C3368A7 416D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586
4179570872B3AAAAE34A6E7168005DE1E5F6AF4C469205E19739271735BB60127B9 417E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF
41850153CE55340595903F815841594ECE6B84AAF2E83725C4C8995D39EF436EB0D 418B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB
419AA7C9BA7BA7A4BC876D5C554FFE4A055CF8815650B5D6B7048744AB7EB39560C 41956BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB
42009FE285561A0A04190B35170F3306CCBBE6A37ED07BECF11E890BD890FED9B80 420F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4
421330AC0D1288C028E7B1E8753C32F1C03E01C694D69561524E930583B8F98B82F 42161C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574
422EA5832D1283F330D4ABDF1B941386CF90028C8D4F33B453B9AD6137D69F0FCDF 4229098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D
42353E0BB814947DC58E45DC165478E74E07AAF3B5EF3F79A90F24A18B7F9CB8057 423FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3
424A94085D4C2B2FF62ECED65D8C47BB939AE969AEFBAE94F6B230F965D21BC9C2D 424049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA
4257C22B7F8CAC5FB01891A63EC9FC9900AEAC00AB0743D201DCD68AFEC5F877F4E 4255506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59
4263EA013E883AB0FF98AD3A4D85ADA45C5F51CB33061EA7129C1FB68D146450014 426620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8
427E98BAD39D0CC6A58E0F1D6E3AD6BD0F0FDDB9E3123843FBBFBC7C6C5A4854AF9 427E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477
4281F6E260D6E09CD14B764276F5F33E6539FAB56C3ABB3AB24ACDD7D1937B6A459 428ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE
4299D846E6AF2138B361A827CA9C5D8AE11CDD8714EAB13BE223C81FBCCE0FFF57A 4299F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA
430779FF50E761E533AFE08A5AFADB1FBF2DA3CBB35E7003C76D205040BCF2C1815 430B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431
4310FCB1609829AC06A1D2CFF13ADA1C23BD25EDE48815255E0C0CC62901D210EA2 431DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994
4322F5A1F8330AC0677DFB0F2CD0E8922570584A21C0278941EE54F9CC993BE5BDB 432322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0
4336DA0EF7ACA47555152AA2EDF27F5CFB2E3D0512795F464D30FD2C1F71241EC90 4334296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501
4342EF44228E348D3E696BDCEB802354583BBFB408879320D23D735E7C06A0A513A 434CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792
435E053521E2365A4430F131612CB06FACC0F436B9F36E927F5AB4142F9E18BE935 4352C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7
436892C440CE0D23939723F9C9680130AF7BC1FAEC6381EF863E9824A4E619646B1 43622946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595
4372FC51140B5AD7A1DA320E3BFB961A5C807B919DB572898ABBDF7AA831641426B 437376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC
4388F743177E98D22574D0F0EB55673533D3105E4C708697B61ACD89C5C5F6E46AA 438C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4
4399D5EB05B7E5ED1B663AA74D84EE8BC451A44459DA6399FD72992DED97BF05AF2 4392CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C
44059139D6470F50EA8D263F645D9C0EBFA5BA30E8CD7D4F489E0EB18B5C07BCE4C 440FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E
441CACD432ED5316356DE895C256C5FB47EBA7AABC06A92E6A360BC9174ED0F5754 4416B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262
44208F4539D8ADD26D7B27FD753572667649F8A2EDAB9A7D312FD5C26503384980F 442C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A
443345E11F3722283EF2DB9EE15A4F04CB6797B15AE0970BC2747A7F9A229275638 443AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228
4447BCDD3B7BF28FF5A143999CCF53AF3E02D8AE4B9AE572D7C2B77350509A91044 444028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5
44589F3725CB95A0F124F3E9D7504127684617509ABF65DF8821B6A168365CA625B 445A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD
446139CBF549F604FB8319B3C62770FB61114B5EA4FB1F992AA99F32543BB4464C3 4462AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193
447C86C5D85FCA3E7E1285A51167D5C17608A6C0CAEF95952461A93B1FC9CFFBC50 4479967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058
448602F25835D3A566300DAF0FCA7046930CBCA09155621BD65518ECD5B698A6FA3 448C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC
449A391E92872397BA95E7B5EA69A0EE6F9C74ECB5AA83C2FAF2B031D17E0B6FBBD 4491C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A
450CA02AA882F8925967CA744D3837890DC7D1ACBBD1F0BDA8E61B88A230F4B8291 450DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D
45173D37F471AF6AB22BB3434F00F3A35A330B69459F40DC5EE430AD2F9710580B5 451C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE
452E93F75AC1E6B516138D92BC9EE6D3085ED02616EA1474848DFEFF3A7DD443DF0 452EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285
4533B421295AF2BC090C869E92C2A774FC327D15C6AB3EE92E2B16C401740E9B1B9 453AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89
454B22B4663C9348DD5F24264352C56D872CE93DA420AA8922E572F587600346B8E 45400BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190
4554194D11B37433D0874BBD33A8B2E67F36D7A55298664F9E96DDA20846F9E9746 455F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD
456657A4F0A63D14437AC61F22DAAB23095BBD7FF8C1EB24D43DFB6A2C62B574A96 456A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD
457CAB867CF40194ED7CD9EB634AD076B42337636CFE681137A96F393CD73DE2FAA 4578C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB
458904D9F703D141D344272DD9DE9F18C74929E8DFF9CD108E69E5540A8C8D10B9D 45835BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C
4593D715CBCA486ABB3E010BA1F20F728ED2C1855B85AAE3E9AA00ACCC7DB968CD4 4597B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC
4603A03EB9270B8BF51C74881BFDABD1B25E51B3E91FF7137FBBDD7D8077E3EA554 46043990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5
4613125D1E104B26596D96EAB6B19D148A037CCAAA3469AD06B424DE6521795668A 4610D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E
4625D8AB2F65264CC20B20BD7C5D0DDF2AE0932F99D8400DC31F81030AACEA27251 462F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A
46378278C3FACBCCDC668DCECDA033F23D408BFB7E2A787D77433E23D8A36452FA9 463E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821
4647339E1A9036034A6C1D10162BC409D6B8F899CD0448C64DA643E5A38A70470CE 46402C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55
4658C8F251D7916D7786F91BD21A15FCCA149A035DD219B523F23C1CA6B07C04678 4650B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5
466EE2ED5DECE5C1B4DD835FDFB1A50D4BC57491203E521E85B8BD5635F2BCDCD00 4668B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9
467A3CF1125C8B29191E5192A22A725E0A0A26E4A6F4E19EC36E506B78EB090FA14 467AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446
468C3F5C4476665D6BD48BE1990D3B53E9BF58D70253490E9D2BB274A16F8BCB411 4689769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134
469B9B1133ECA1723C52328CBF108DD84B55F8CFAA7C642824357A76A2FA12D8BBF 4698F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26
470392474CD645BC9AB430E6031BE0220F603DC75498A4189CCB239E4F3B27B4076 470CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360
471C3793944F26B44330FB42973EF70E86F740C684F123F121BDE3758C551EEFC49 4710A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E
47269A082AD4F3FFA89509A7B8922CFB8C971C072D498712A1A5F6BF254C9A4CBA4 4728582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089
473AA3652A56675C7359DE901E292A9826D3BC140843A7799A05D20C56AE586F178 473A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267
474090E9E55876958C665923401901D4825DD5C9B7AB686AE1B38314CDFB6DAAC1B 4746940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F
475FCF2CFB4C404E173988FB1CC35297B3DC7A32F45DB7C1971973F9BA501982760 47516715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E
476E353B8DE47C6065C128680E51C080D5D3A0C9BE09C25D85E4D1E6087C9CF4F51 4769E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6
47713AB80E75EC442CE2F2E0B6F7D13733E939A3F983BA540FA236A6AADAB9C7734 47764145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C
478510C858581725CFEB2A46BAECDCAFF7E726D140F50C2A0109ECA4C1ADAAFF17C 478C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481
4793269DD90145A9007639A54DFACDAD0FE945E97A370DAF3F0B4D66F847E0CBC17 47905558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92
480F8D6E5D5E124BC85379C1FB15E82280F157ABDEB2CB67CC25DD0C4DF157B5177 480920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11
48160A7EA491389E573905653A694F31DAD0052BFE5A252C902B3976F5522526DB0 4814842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D
482CB9423C892CC9348C40DD844BF5F87BCE0D8C7E42AAABB2DAFA3001976360946 48267EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4
4838DD8EEEB4D2F1A5CE8139AF70FFE8C72E8CD4F891C679D93D7BAF53B850CE9B3 483BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718
4847672AD44717E88EB64C9EBB80727A6CDE2E07A14E686B5A452CC456FFE933F75 484A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D
485F323DFB14573F37D26F04CDFF33F6560BDFE530B4E3352F44608EB26D49EEC8C 48565C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E
486E1BDFF8ECE3823670BDDF72C4FF89327ABA853713667E4EC04D8981644D0AA5F 4867F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5
4875D872283F02F1B108533B833A33BAAE41CE4C4097242DDCA81896EC33E38F88D 487CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC
4880ECD5F240C274A5949BEE7EDA1511A2636028161A8612EF580116BD6C212821A 4880C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA
489B0C917365705937924B58BCA415E2B3C6E3191E80921F0A49F2D3AC371DEA089 4894DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824
49078FCFAA20EB6325FF3D9E57717F0A75135401322746EDE63970B7EBB07728CFA 4906F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333
491641B345A2C00B9C526191AE25B66EB97AB3A32A41D57D9B2501BBD4765137BD1 49143E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026
49204993E60EBC3DE43523B24BE3B4BA26F493C38168DA4899251AE82541118B28D 492B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79
493C653F14878DC30A9CADB3C8833968F135FCD7BFB1D2FE028C74636491D9FC892 493497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4
49481553B1775FF95FF9CAF675A2E7208CA84610F9C39F37474E18569C0209EBDCC 49412173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5
495EAAF9D06A63499C6EFC91AA8FDB9F159A6FAB1F62DFE56FA0E37BD5BDA0F17E4 4955A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6
496FAE3E27A36F95629EC2064D6A411108E721FD1091D6E9AAA5B0C0B3D41833C62 49633EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F
4974733535A726EB6AB936498812D50200AB915F8CAEA47C036F1542AFBE2E53067 4971055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD
4986366E355003FE82F28A456E79E921853B15964E911D08176F607E695FCF541A7 498114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45
499C20A3CE2A2835093F8CD0FDE40DBF10B8E96D06EFBD2D7CABAF21D411B105044 49924391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1
500431A1E87CF0CCEB10D9A9D09E84307DD362E885160EA24DC0A06D0308347E3FD 500C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C
501E8FD32456AD30269D2DC5D0E34379382B637493ECF9F143F44022A1B045BB3F3 501C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516
5026E99BF86A1AD87FEF11786DCD4443459C7F5BB2B4F3914E162DA2FD998E46067 502E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB
50307E10461AF5E065685A43BA4F1A843001D412550BC868DE93A91740B62F08026 5035EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA
5043B37B93D95448DBAEFF1089726A975FCB9BD5375457173AD766C8F99DCC54952 504B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062
5054AC00377464E80A168669A183FD69A2E31BC22989E4F34F4ACF043424598BBA5 50586032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49
50663A6EE2FF886BB0DD160FD91860CAC052E47A55BD334A5F97F8DE2ED3675D3FA 506BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C
507B838CA438EBA043D638793F04477EA8201C718124597CF1693BB99A627AFAB1D 507D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6
5085345D2F17CC96A4387BD5822186B3E488DCB0A1531F931424D9E75D19685CD15 50807EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF
50909A5014BE0FD6CDE63FF735D1BA182D015877DF843368FD7A8AC312D53A951B5 509D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723
510FA02B36337098B97B1B4FA84133BD030F7E8647B8D32697DF9E9B15D08B43187 5105E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A
511BBF609E074F0DA9CDEE2A959D46410B33E1C91A3BD703BE0B7E9698CF942BD9A 511DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D
512564C9B7F806FF1ECF1FF29C95F8733AE1BC08A607108A09E3B4B2919523164CF 51275071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480
513ACB794B5D3438B55F72700257BC5BC00735E5BDE3DF55202841314593C815857 513E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D
514428574BBD6DF0DF89D69B7246F212E81F88320B21D4E9B1BFE85329AA1794FE9 514A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C
515C8F7FA2B8A3668A2E4129350B330074831072AF3E48E672AF033D89C1C56A830 5154921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176
5165D358A92F340D0D5AF454DF9D8731215747F30990B10C18BAD25DBA0883C080D 516B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2
5178098362B9A9A0ADD65EAEFEE0DA098BDD1D351B262F18562164300DA97EC921B 517689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38
518E290B5B3C68B8695C4BFA1081CCC558E17D64A42B8769F217747D850813D66BF 518087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259
5195A399CD0E8B145D7C09527F6F9CEE142BD62B7F050C4B34D2001BA539633D9AC 5197E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175
520E02A1A4FE6225931E56289151500BDAB61556F7D599C8EC2FCC90B4DA68AF3AC 5209DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98
521370EC9FB3ED88649561481D299B57B7800CC76B3E8094F6C46832625AFF88D98 52147E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4
52299F49FD3A089606A43DB6FB466118E44BC51397CA38E6251E6C8B100AF453754 5226D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D
5236922D3E1F1F197DABF2B07B98B77B9451F62F4CC6543B4C27ACEECBC0640930F 52335F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66
52430336891857317B46FC98DD069AED6944CD0B527C961BDA2232ED479D72C7C54 524E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B
525C44D4EF3AD0B1F9F96A9F5A1D35D91EE77BAE7C77326BD0DDBD396BC3C78FAF5 525D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4
526DFEEEB59B05F0B1FE8E1347F26D09DC5534B3F1BB47B897154515E893795D4A9 526C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85
527897D7BCEA2D54AB60EB39F67399FF8777FACC4B706FC2A6137DA53A343BDC1DD 527121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81
528C0EBF311507475F6D00FD877EA29C8DAC798BFB33D9B1506AD583A2C508D231F 528BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8
5290EDF3ACBD0B48DCD12F4789AFE4B2B18390ACACB86E1333AC38DA0C1D0158061 5291BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE
5309CDEDB47CBC1CD43D191C47DC214C61EF98CD5065F63D203696B384EF1FDE092 5306259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB
53178F5DECDA175900094D90AAE4CC26A7AE779B4393DC49DBCAFAA7F319421F54F 5315D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB
5327A3AFC61D68CC5F74668C7028666B95DC14E522F11200155893EDDAD0B06F60F 532776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A
53333D2CDC6F75FF167606FBE426B627FB8661AB7B9ED104AB11ECAA5EED3717D5A 533C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B
534B491E48C5A6E778274EB5B854135DF8FF07CFE9795CC8C69079CACA09FFE5C08 5345FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99
535FC73A41C878B439E706F6C33093D4AE7E13B17EF32E115B684E9A27DB490CC35 535F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083
536DBCA03AFF0ACA4825176AB8071299BFE1F1FBB225E6915F0D52C6A5AEBD603D2 536DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE
537151C5441BEA1EE87D9F4010C4642CF89B2776351C30153B226A1A5C4654BB683 537345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92
5384AA2107029F120A491BD4103D186F800B9B785C953150094080848B6AF8969F6 538892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C
5392FE34B3631F4E50DC0EA5FE4C0826CEDA30D3F3E2983FCEC4EC872420A6ED8AF 539FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8
540EC8B02888837927D0A7574031B2853921132DE3C564F24E909FBC63690B02033 540FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38
5410D3069D8DDA63DE8DA7667D07810FDD5D4C877DDC1C180F667D6361B77E666D0 541FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924
54229AC20B15BDDE9E42ACA7802A4B74D31E91CE3FCF105A7F65B543172C8DF6248 5429BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E
543256541684153DA1EC7550E86B55DA0E87B70DF90D88358C9AC8FECA82AABCB39 5439480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766
544552DC96D1EC3310264EA111713839C45F469D16CE5510807897D58C3B2154429 5446A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23
545A2A01B2F8956B7FABF2764E131A7A819772BE63983E017737286CF2CA8C42A90 54516B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B
5462ACFAA2AADA5EE0B125415518D1F19BAE94E3EF1419A2CF9A954C37E078CE895 546823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54
547C582992082BFF6E7A6C93C322A76A7AB7D96532B0D91603461C0903C9464D2F5 54779E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685
5487F93383EB60120E8246DE8FB13A8C5253591A4FEA03E20BCDB972851572174F6 5486A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4
549DEC5F8D863641E7868FFA14D5087F98A13B7142769E04447FD93EC724D3B34CF 549A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187
55039CE00821D0E9FA5DC4255AF09F985174AE10C86FB18BE347A0E228723D00B0B 5502825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390
551968644728D65B7F3B726B287DA8419536F7BD24E7F64BA8FFCF260373183DFEF 551FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22
55236FD6696ED0DA7F01D48551C51B07276C39A3F4E2771E36DCE6A01EBA288868C 55227B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88
5538FD6E7CFB42318DF9350BF110A57BC4E3DAA29D922A39EFAF2A307912B1123EB 55367332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D
5544E0AC2F8006FCDE4D27E66E0494E52938403C0D06E7898DE0C9A550081FAE7A1 554ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A
5550998F8AC69B3FBD7903293C3DF14DD1FBEEDCC3A3ACA963137A768025CE3FB50 555B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941
556939B0571F1A89237FABD6ED4AEC9D14428FC1C77FA5405B8FD3DFA363072C841 5568437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE
557D0A118CCE8484C9BE169BF1CA9BB822F5248AD79D18821236DCF4B4615E3CC9F 557D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D
558FA968FAC447C718C3178C0EB5C7560B1E858ABDB3E2F0476D10CF52DF8CF62B0 558C48D5145E2C6AA7D7FD787BC0D
5597B6FF34D91D63901C1B35D58585449C903198846DB9DB58787F2AAFF1E392807
560F0FABADA9576D36CCFEC151C64CBA1E91CDDC9B96D59A9743072C8D45C2CCB2F
56114BE3125DE785EF47E874C4BAAA3A487DF75B8C6F680664176C9097B1C3176DD
562DBAD73CC453120BE2B47F5247C215E790B79BACA9C817CCE7F8DA2D8F791F5E3
563C1B9F32A34AE5B452CCD75FC55C1785AB8AB43029D6663ED0A6855FCC56B5443
5642379BDA7EF132F
5650000000000000000000000000000000000000000000000000000000000000000 5590000000000000000000000000000000000000000000000000000000000000000
5660000000000000000000000000000000000000000000000000000000000000000 5600000000000000000000000000000000000000000000000000000000000000000
5670000000000000000000000000000000000000000000000000000000000000000 5610000000000000000000000000000000000000000000000000000000000000000
@@ -1943,363 +1937,357 @@ A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
194323DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413 193723DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
194419B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42 193819B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
19451C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39 19391C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
19468BF32EFC8C0D1CC0C1622ABA0B6CE939036B2D9CAFA2A3B0C4B5DD9AE5B2D798 19408BF32D2E5635B6583D04BC0AA187D10FE773067ACF3B528CD412ED96902B0056
1947CC856CB41F82D3B5FCBBF70D07E05369713730081901FEDE318F9DA81D39F84C 1941567103E3FD911A099ADDB9EAEB3C08F1B36A918FE865B7DAE1C49F21650E65F0
194845D0996AC0E8FD780FD2E5E6BD013D98463E0A51034735243F2B3695371E8451 1942C6845C15740631BCB7618A3266D83E54976BCDC707883E531F3F833AD0DE88A0
19496A6EC4236E47A282AD2966E06BF3FB59C6222C15A34F1E910E637D805741BC1D 1943CDB84D8384602B992263C3C223D1B5393DC98C75EFF9AD8D98A764228C70A303
1950CD426BF31361147DA45BDA2884880D90AEE92DF02AE5C4772537FEEA157A6D50 194428D87B1A5510A579D01088C26D9667DB86F72FA302A3A8EEF7E05DD1835E72C0
19513BBB910A80A2EF41D18213631584B343ECFBD6BA006AD6BCAC63E9CD9430DF59 194566A0728CB0DD8C34BA1D772886333BC78C79374026347FAC9CED39B7FBA84DEC
195298091BE32FE17FCA7B32DCA95052F5BACF73FEAFCE5EA47B740FDC972C2FAB94 1946E70EABA29B80B4E813C0E6D5ECA5E9ECDF0413AF7556EA458C3C3B49A4B14A05
1953E1FE42F8536DE4DD0DBFC4CCF3A96DC1140F736344D4DC796756948ABEE0433B 19473034C04E1F8665532D053F810683C957050FCF44C5D4040CF09893DBF641D68C
1954BFFD9F1A343259444D248598844888F046800D6BFC7BFE3F63900767727A8742 19480969D67BEBBA6DA451D446DCF87B8243365E7158D89332FB33CA28F0A83A7A63
195510C756EC6380274290F84F7B2055C2390BF04B466B5D4437C0D6AC55C90792CE 1949D22A0948A46F0AB9B2CDECECDA40FA75B046CED41C017FF79FBD7380CF33D726
19568A8BB5602BC96118B07FDB8692006E91585273AEFF55D71967011A1658205ECB 1950B03304BF8EE1EE450C065BC8B83643AA74F8D45924181D1D0C52CE78C36DFE66
1957A0B0C1CE1F7C5167A5868D5DA81EE5CC3A41983425663776391EA37525FF1357 195199CFBD08406AB9FDCC61242472612AF009F8625C966AC9A7228B85912CA77A9C
19582CBD0C9B4644850880C5115C7F0677A605C1009D018A9D6BF4F94A6DD019CA26 1952832F9D14190A1DC798D4E99B5D067A020FAD7E13E2E5A155A94E46853CB93619
1959FA7D748D55D441CE1111EFE5254381E1F916912E1B446CC7803DEB5C9B1AF811 195339183DAAB590F1BE12C3C4B0209A93CB015E58EEA72C0F71E68EDF1CAD4CA776
19603938473A2FDD49E5A0360F4020CAF9E85E056E59430B18AD352BA929C9A3DA10 19549320076D70BD2874A166F2CF735BD5154F9FBB219C868A568A7C176060F78092
1961D7C524D92AEA6F4DCC13E2B59DBC0B8C0CD90B1E4E82BCEE516928BC9E1BB67A 19551E3661E66B7E0A8DCF294E09D487AD7F7D1ABEF83E7E0E5BDC60D672A4D8F5A2
1962060EFD856CC9F1CFFEF90C421DBB3CAFD1959B332EADE93C9CCB31006248BD6A 19564C33479DB4FB7105158E19C62FB0E1B9749E6A9D4BFDF7884B1922C4C48265FB
19635D79AA8E049C5EA70DAB46F5D3E73984814E9F3E15A0383EFCD157240D43BF23 19577851C1116696C02337B64F1A0445396102B541EE1CA10D8311F79CC58F2106D0
1964F84372FB3915791E581FA0E4CD457289FACCC08C0D37CEC1FC45DE3751445A9F 195812FF6B1D274B810AF318BEF04467B5066889896BBF019F63DD5DAC53EDB1CD7F
1965824A6B006B5E672AAABEC2B8D5DB7B0745C1D01C52657B7DF4FFB9803FD9655F 1959AD10D90B2D3CE615546860B11AFD0D6B705DAC7545579DDD3ED867F31615CF4E
1966B7D34C6048E8BF44A0235DFA9791770CB3E451E01ED7A578512DCA397F24F71D 1960F3E4BBD8527C9C3CB4DEBE71F1AC965A69A1C6E244BD5A49FC81135A587EA904
1967B2784D0778C02BCD5A88FB1671F8019523D8ECD0F42D273A72F2140D3C14F40F 1961A863FF7D421C407EDE08825D78924635E6968CAC4399D231C785C9048FD8C916
19687BC451BE2FD39FA297D9857745B4B8F8531CA0DFD9E72E8EE0E7FBCDA811C8D4 19620B2676DB4D91487B862B25F68DBBD03B604BD875420565855CCBEF9AF0793964
1969167DA0037F9F1F181115209C22FA250C8234695C1085931C3D92585563366C74 19634FD45E490EFE697A470FA3C60192E660C45083E27B9E569DD1DBE07706975B9C
1970826D4E5F9A61F39E3F8CEB8701591C4A5FC62940C2729A2D9FFAB09F833D47C8 19649AF2851279A7630999C92E9867F55D56CBBA0CA13A0F041CD0F3ADB318A0D298
19711B184163D87FB4E5EC4BD91B81C325FDA8ECC31EAC76FAB333A9EE090C202EFA 1965ED48F8288691BB2CE08B6A73E9FA89DAF661F201947BD64C1EB769EA3A0C6FC0
1972FB2BF753A5AB8D147F8949C6FCA5922E1B2C6231ED86BBB953166DE2C08A3DC2 19663DC343AEF2379881E46627AD2F653B4C6BC37E8D8452C3A7E399C0B6B3D93671
1973433C76CAA7260AC901C3B4E2E78C8A6064F0ABBA1F4D16BACAC5288F199A0929 1967F51A92EEA7712A872D0BEBEBB071C83D9254A24C8799CCB5D2FF4DB31075483F
197425F1DC8ECA38DA299A229D86E105C29CCD0FD59585467BAB46AECA7A76905CEB 19683743AE4BD1CEECE6B9432BB89399FE62B87DAB3B19FA924FCC1F6C3DCA1B0049
19751CE91EFB79E3B4EE3CDE096E2CF63DFF71544E639567BC8F12263B2F596CB4F1 196951024011B8670DCE537387069A8732AC4ADDD77B2A0D5D97105810854595C4E8
1976FEECEB69763A7EE15B0E59A2529A116E6E3BD067BFB3690021068ECBF18F6D9C 19700663FD917B5B587B8ADA22351D79F5E5AD494FADE90336AFC27FF9FE8BC770D6
19773F3F07D8C7E2A7793FDEE84EAB71613A6EA8F6AC665A7C0376A6406171EAF3F3 19710A8D6FBE6E45B3D4DB20E91A53D84C8B100813CEB9A81B03E142748475EEE77A
19784E466A08318F942F2830757721CE2B193F3A7404D51375DF34495AE48356DD78 1972892B3458A3AAD744A20ACD28C7AA6C5A996C9A9900F2D6B3C1169DF3BF2B1A9A
1979E4AB3A71C2BE2094D5196BBBEBF056029805A302F6AE5F4A9BDB25461E81617E 197356EF83195431EE89A89CCA5A0EB6A59D7D89179B6C127BA0981FE0122E4184A8
1980A634959D343DAC10BD072CE16D7C51C120F9B6A1D75EBC4D03DF60048B8CE15A 1974FA9094D9C3D54BB7CBA31FD03C7048A09AE67C956A5363F5D51ABB19CA264D9D
198194FD31DAE86A4BF525C979C7E96BC1DE88069A342C9E07C0340AA83DCF381134 19755D515F61DBD9C35D259950530A95350A313CFA8CF06413ABEF844771BF99590E
19820C13C315D1B690B5E858A20362441C9F61A20B70392F87078E5C3F8B4AF23D99 1976F9A2F28975AFD00D700E83A59A3F0B7238CC74A8C1C9DB059C84DD91F1E07580
1983B051B170140D0069DC6E2D4FFAC6E45EE56221264A894AE68FABF04994EF9D87 1977C4C1311FF1C4AF2AFAA07CDCE72B0928663109CB31DE1548C72EA321F0EAFE9A
1984EF92B498493E3F0B2F003C47C861320E714FE36F9B4669226E40753B2FA90731 1978ACE0E0BBD840254E30D9A46162DACC79A07F21BA056BD90AD312A2D728CB94F5
1985CE281E469DB371C975B186E2910879681485763CD9316CD4017C5D9ACE43DCA0 1979FDD65516843523741D2430C5338FDB4274162B8C0409ABF94581C1A3D8636BCB
198638397FE463F2A3D6B72209FBEA175E75793163F0FE4A2CAE3C7E5061D1A7C31E 198078A98069466C0C869BA08047E9C154DC6FF00A1DDCC2C4AF4D5DA5437BD02616
19871F8FD3082D2743CEEA008B0F0AB55C2BBA23918A1BE4200DC628662775AC2D66 1981C0139731CAA7817984BE614D6D41E9C21AEA1CBC9E56C783F68364023CB95387
1988FB16BB7C06C295357A1BD655CFF3E0C49046C2CFC70FDB87E62C2EA187A0914D 1982C71A72D9DCD59222964D04650181988D140295091175DD985F5B53B070D20B89
19892B55FDECDD9309FC215AF8882D65174ECEC01F38158C4D96FF9EF1B17AF32EB4 19835E4B621C848C9370E0687B45EB1070A688A94BE949D242AA6266ED2D64C2518C
1990E7C2B4770F5CE67E2B26BA0ABA9116BB3F89944E308A0127C99B1A145F730B50 19844A5E75442F030E137D2E3BD654C4E4EDAFF7B46EEDCC9090D537B6CE01DD6D0F
199128473FD0DE250D63A7116DA1ECCE93B02F3CED8C894E6B090F5A01A26822503C 19851872A47A04ECDED2421B511118B0628148D2289B74B79B3A68CA7A2547D644B5
1992EA68C5A7BC8734C35E40D3A56449F6AC36406A0818C666F0EFB88BF02AC4C296 19862ABB83CBBFFE319957FD2189E272DA2C2E35DACA8EE229F37EB4C94C920A65C7
1993201B0D0848450A54B3FE1A75F641D1592D265CA639D29DD99C47AC8DCAA2FE5F 1987165A2ACFF7B92CE4338F3030E157CC75281E1F33AF00386FBE6003C4C8CDB57C
19940216CD31751A42FB48F53200053979FD87DEBBF427363CE1748FAADFA0C6E2C7 19884EA70A31E2CD15FE6732F98BE47354C2F92AF632B5BA1C7ACCA3633ED13919BA
19959B407F5D041D9383385891A86F33AC51F0C7F4902580D9446D8118D8EF2BB177 1989106E6ABCBDC11006BA4560AFB17C7091BC1A632E7870B65717656A89EE550576
19965C2A39867EF485A454C07CD835350997F5C18EC1C3A83E57F57D8A0813EF784D 1990B5D3BD5DD829886BA59D186770871C3D293EBED70D66EE3AEA926F2AE6AC6CEE
199719B088E03344EEB3EE8AF03D18B2A4EB5A57E1DE60CFFC487FF1C2DCCDC88C40 199130CE46B99DCEA2D15384C53D08C6F1A083A24C025D92832E16E816B893B3F2F6
19981B7B1B16A0DB3AA16474F6CF5F92C7490CA1F3D94B33B18DAAAED531D2740961 199268BDF430788D1167B14633E0AD0FD74951C5826BE0F4B8CDD23CFAA88907C43D
199953F662902417A01C2B33489862A446A5D7BC27B87ED382CC41175114C7B0D42E 19931678FB2C4053E0E2056BC4B33F36A896D1BC212B0262B6CB59AB3A5ADCC027C9
20006DEED8A64B3034F764BDAFAA477191564F3EF1339976051C0BFF59E56FA20C7D 1994EA6A2C0F1EA2DC6B88517BF08AF54C9B1A4A7B0A4BB9A66ABECB539BB6BA1F9F
2001C5954E0A805A4A8431B40401E8A188D2409A16013427152F64CD8CD502C5EC4E 1995313F2A5619949D0FEF977DFB87ABB8B8DD420F3097B2B8BEC00EA5A3E8C207CF
2002B2F5AFFBF1F4D5BBD636109F2AF10BF4737DC0F722E11649EA017EBB2F4F531C 1996508C7CA5133CA63B98A14E11FB57BB7C461D7C8C767DB10E68BCEA1D5A4B7F29
20039D08E88CCC7D3345E4B2A96F14C9CF8E211B90F8A2CE2EF57A68BDA5997271C1 19977AE639BFD660B1CFC78DEF00CD1278833E48A65BE281C9438976BBB475AC6818
200493A69D91A285B2198A12F8B3C23FCA396CBF176473CC5A4C4E24ED72990BDF14 1998C533FB4D2F4D3727B68F533D03554393D66FEFDAD1A3BE79FCEF05B98A5D9EF3
2005162EDFE244272250864246D493134DBC29C5CF2C8A5B5E27FCCFC7C577C014FE 199971F4D16E531408B2D866286CB89B50DAAE9978B96C8BEA869F9E90B780F0C98C
2006FD8F723CFC46F2D9700738788930F22656B5F1AD5A34C4EA6C96EF45C8E68138 20001618C4F6FDDA21820BBA795B0AF3D00F96635FC5062544317A62A37060F965CF
2007CE87FEA609914E3936624E1E6B167A60237A34C04FF1500C52E7258FDF3DE58E 20013BF8A9C7B5C3D74914E0AF04AFFDA0FB1D1E644E2FB8125E94C480B4ED41FF6B
2008FFED1699614DE43622D1057F172E54AEE1257FCC853C0D1828B072F7F4477309 2002DE326A771B82A9C44B4DAA194D3C2A8855CA293787D7D5F466A2587860B64408
20094E3E42B5C00413307335285F8404FE1229D1B2006D482993E7F96D8C9BB7C41E 20036F14F78C085F63E6B63AC41FE7574E5E22C723202B7D42A1BE0D14A299231F75
2010CB0A9B91F02CAAA3B8A05143ED6330BE0ADC9549D1AE8A46B2BB68E3002F3589 200466FB900C2A030D0E09EF5107F9905A5C66E6A5648FBA2B8E80217160EB797496
20110D5AFDA53BF17BC6E069E5B1CB3CD24362C702BF44F7823E005F0700AD2E150C 2005FE3D4904C8E3B6FDE528D1B931C369AE5115114B3701CD40B57457341D735576
2012CC5E486F4AE4103A5D0C7396F31C42843ECA1EAF0632AB3EA191C0701EFA0C42 2006ABE1907500771C3EC5F562B63DCA85FAF5769ABF0F8F74A678E508A59802F1E1
2013452C72B6ECD57240A505F49CDC390DE48C5251F9232F837CE604CA7C6AC0F742 2007B11545E6C8697D1A7FBD4ED7A5DE57778DF66E04AD354E5A45E199615C6CBFC7
20146742EE1BA48956E6CAB43F05485A4457F44BFF2E75846BFB56F9C34B17CBF84E 20087F6C232D710E8CD5F9953DDFE922B2CF50F02F65A96E1BEF0C1FE6B5C52415B9
20154133424ADA7942199449554E493E2CBF5A4EAD39A22C166F02E5332197F32C88 2009052B9C062B532A6B83260D13AB6D3B2A48D780E03B4519F4A2152B82D1A90359
2016542CDD0D5018D322396F3BF767CAEB823ECD801D22E536D6201747DE4D2CFEFC 20107CC62EBC5F26608232CDB89D2CD44F0E889AF80B1A9F8C0B9DE0EED9787D70AA
201730CF112F6DA37736C836CE44A458B170B974F2BC9B7EE06AB478F2EB94774A5A 2011AFE3DEF464503D9E56674C9BCD0BC65876F2F455C83412E8FCAC08ADE7F8E2AE
2018F18E82473C5016AE0FA8AE9DFA174F17945A5F3526C73A24D348E2A2FD14899E 2012CDA7A57425C7ACEF0D58CC85F71D8512B32D9C06AC001382A4095FEA02E2BF2B
20195D33177E01B7D101A571E196405CA95FE795CBD73F7185DE01F99C1122B2C050 2013A7EB6C298B10CD398780A7120CE9A31DE391C349AA273C890F620172CC434C23
2020A4D54AC01881582AE55E34FCFB39189C4482230FE1C01F7BAF31F97B59DA6823 201433265359372A5451C4DACF0C859BA6D37AAAADD08D2F85DCDA2399D894840D7D
2021606D7E318EDA739F6C18B7A3F011E76EEA67C696EE9EEBFEBC8F1F95CB450D0A 2015AD9870DD307B9D602661D7ACA2F84FAFDFFABF5A89AFA9973161DC1CF3A3943D
2022FDCA2740E7CF611F427FD44ECD90CEA692377130C239B3A0AF9F492F377C55F6 2016CB84A9C241C8B6D6CBAFD2DDC75166C3C2D5994DF4D2C60739F34E7805582A15
20230C2910E3FBC614DE8F8F917FF5ED25702A5500D9477B5A09B0A12C9DAAB966C3 201776191F4150309E55FA04EF8A59C4DF8EF1C95E57F0C255B63C82A7775D4CF3BD
2024AF6B4F5C16BC519B8D147E414C1334F009730E52C0C1242685F40530A32E236C 2018A3C56600BB869D411A5ABE7EC6C67437B328DFF2F2BD6267A43D69B6788802B9
20252143B0053A7FBF6DE9CC6DA142DEE3A61E338B0E9ECE657C046F2540CA50BC49 2019249DAE42336C2A3DE75816951644C742C36C51F120943DE8B75052EE4405A346
202655062DBDC0CC1295991242EA7C749000E114EF1795ADF45A4CE8B33DB1815CB5 2020E157546DCB7D845D81AEB84E70B857B9152C3FA6D5F3BAEC8611C14F67B54DAC
2027CA3B4D8703CA72082B63700BD8ED24610FF157C3BB2A704FE41AFB1FAF4774F1 2021F58BBDBAD4C473C0DA872330902A46610865EB0EF8F97078841AF74758F0E6E6
2028A208ED52A9684A802003AAD6D9FCD5A3CF635FCC938931CB94C751212CCCDA6E 20223DBA2B1659FB937AADD1C8A612C61F0C1A9636F0624E64D6D92966D892F44F09
2029202FEB609EB5232D1CC78DC78F60A00441965117AB45E898BEEE41B9A21D4B17 202348A4BDFC9A83C267ACEF143585C51ED45F59126AF7EBCEC2B9584B0FC6C1E670
203064F5DD48296352202F5BB49BD6D7C8A031AE5E9667E077ADB2AE7D92D61EFF47 2024FC382E476B6C33071A9FD3FC2D0F943DBE055BAEDAD6702DC0F474F9B2DAFFFB
20313599436C302EA12D0C1713FDC98CFBEF052D7F06666FA15DF8571D712A3A77E1 2025C0AF48B326EC447E31210586B7DCD517FB61F4D4870A5E467492F40CCEAA4F2D
2032370D07F557A30CB110CBAF7AEFC425F9C9A4BD06F54608B44AA3B796F560711F 2026B06BF4FD8B31D9650D032A0A28E1D413162C649352784A0414C474A82DC471FF
20336EAD4AEF60B83DB1E356D7B6844375FB3AAA0389F56D070F426C759ECD2F970B 20271FFBDAE7795DDB8BF3DF22C393E939F5634C540DFE2590D71BC1444BBD79A9D9
20342E65032797BEE2FFDD78CF0B7C9684F6EB8FAAB6502F4676CA8F23D37CC4D4A3 20287261CAC5207814AAA58D8B135A52A3D3174110FAE364257A6F79AB3B73B52A0A
203542EFDCFAC381E4B95D63E26FAC8DC58232288CDF0A98F076816242E68A3C3189 2029EF08DC05593BD0327BEA4697339E45996E5D6812D166165790D8E4543C130DC5
203698B28CF2783D9BCBCF089F9E4BA80AE4FE0C21376BC144EB419F3C346A540126 203034725E44BB037555803390CAF9F94FD6BC08AFC3ACE747B9728D8CF0128D5B4E
20378DF517CB30F5C2CE09D7A269D6A02229EF415D7D9412198AABE493F3B7344688 20311275C4BD7E50AB5F980DB3C3281E3FC4A500FC6DD0038D35F4F5589679647238
203872145D60CD95F113A968F7C0C8FD1A4550EEB73BFB9231FE6C942BF859FDD93A 2032FD7EE68BFA9AE20EB140B7277073E6F26C7EF556FD311D510C92E89B70762F42
2039E4D428B7E16F01633448536CBDED367E9F725417992A4C7297DF9048760E2E64 2033410ED318AFD46F66F605E98D1EF12F00727B3B3F21F695241B4B5863FB1C27E9
2040FAD313DF07F86486996EC840E235EB5B661F915092A6A80D0CC932FC4FFBC7C1 20346BBD4365B9AEEFE8A18AFE350731AAA0ED817498539433027D50C8D38284E888
2041B1B9A1E7E71936CAE5B0729BF1D8B8BF42D0520FB7591D868D18DC4692B21881 20351E6A1E6CD54F851B264E2FC4597A6A4FE03C7CFFF7D1F75CEF43E97B22096A1B
2042AB73A3FFB3A0C6DAC4C9C6757EA9F17955336AA938DF2380AF0EEBD694CFE55A 2036D8BE2DC4A899E64492359B346D9C0051361B6AE9DF079BDF21FBD274597B3C02
2043D8BE01F9991D94DE9980879E94FB1959CA21EA09BFF8D335D24C6B1DBEA913E2 20374D0FB1C66B8AE0AAFCE0C1CAC54BEFE069C0BE9505EB0B1AE60869B63C396698
20449757D5110C7018A959C9C20873440610C113BCF278CF74EE3EB1B2BEA6BCA663 2038EF594E1C8E5995AD22DAD027BDBA4BF2FA9B570E8F0FA3CAEECEF6DB8C4819E4
2045C451D157CF420C4CDCD949309FD52FDF4189DA36ECC22CEEC43A43337F6BB755 2039AEBD7165A655F1B7828527DCA9D01324FBFEEDD6797C8E3E9E17B760C70D7AF8
2046BF613B711D1970B4F5D1C120064169F70BCA3A784B06B2542EFFB32FB5A0A534 20408EC0AEBBB2C448DFDA6B6B4BEB43291772174F1C369DBD1C4183C8E00A4DB46F
20474C560825DD4CE51941AC685E0CC87AF48AACDF6CFB9720CAB78588A05910431F 2041208C324163E0BDE572A84B85393892545249DB26457AF5FB311CD5EAA11D7F9C
2048096A2CE6059506C9496EBCF1737F801C66E96CB8093C650A49DC7D1AC6B81FFB 20423E491B0D49C77898AD873381077DF84EF4498C012D7752B22F0660810B6EC0F8
2049C20DC5BA3AC25C709A2FB2C848F203CC862BFECF195115FDB3BE0EB82FA85B0B 2043B66D447775AD659C51D3893CD2B4509E8B9D1413A99527F720571784E7B9302B
20506E83A4093122A7F459AA330606E6B6CF32C5C46656DA827AD81A86D162C7EE6C 204492175F1FCA726E8AD6D82B9B7E853FFA5739D0DE0A02BB115DABF83B1E4DE706
20510A3C0D61FACEACA53E633519D7FA77DA807D0035C88C86FAE3167C8BDCF24481 2045C23532EE82BD57109F9A7A4E6A87DB4FF5C698B04003312F1BA23AEEE22162EF
20520387070337F0388FDDB757C2A5CFAD9C2883F7F2FBB71CCD3043B35684F4ACF9 2046F22F7D338554AB08625B26D74F7D23772532A371AEDA9CC2962B0B665393FF04
2053BC0A50F9C33ECD20084082D97A71E9680E90A560B6C1760408F7CC1C18347AD2 20470B032502628AC491E593D0D450757AB016B2C74C6AD44594E0FEC2F880B578CB
2054391C7D660D50126E5B26EB49384B95BAF472769097F8FD4566D03C776F18AC7C 20485C4D6A409FD6B64B9F1BD7CD8B69676814D169609D2ADB2F1E98F6C8F1A16D90
2055C68934D967A97840034FE6966A4C44384283D25549B89163A50C27CA0E9D130F 204963FEB3C8FC663DE0CCA1C5CFF03828FD1DF28678492DA710EA61B9096A173CA5
2056E01B62AB10A8461CAF49567BF6C5A37442AF6EFAFDF352B5BDCE9301D1C0EEA4 2050FA8A85DCE00EA42ACCA03EF856F3F17FA32A69DF9F73C46944705C5DC20A7535
20573CCBCF70A8AF88C6C8A2EFA29541ACA6E8DA7254E4FA8B1768BED363E885C639 205134CCC3878E878A0BAC55B7D56CE2C43C102D0AB841BD4A3C5EA0379D321413C8
2058256E15CE6AB3F8D5F5F19828041A25E0B5F21AE224C8CB7F51333ACFE8C820CF 20526C2DF639D4EEA521E0A1C68D8B60319EB999707001795562E8AED4ABFAA486FD
205967ECD12BCE156DEB74737FF42B3A2684679EA97ACE6E24A1A9ECD7DAC0F00248 2053C11D4F12ED45A04DC72264A882C97510C91F2DD77E3D5685DB2CE52C4746F613
2060BE2A74F13F7808F8B6D001882951DBA633E4D21C47E326270AD50E91F1717F28 2054AD98EF16AA9773CB00735151B7D4B9315441BC3B8BDDA5ACF619F49B6052AFAB
20611A183A3F7603CE9F9DD8D798C5CF6D94144F1E2CB378726523E7B2080B753CFE 20550F19D9ACFC8D6E0CA79A25A8360F9749EF39FB60404E318BB1A98EEAD98FA0E8
2062D7D53773219CB1EFE995DC623A1EFFE70215F3DC17CC0695DBBAD0DEF043D57E 205640DFD76BC3A84404F7D3904BFB2EE3597D8364EA556E4F7D18F32F1D86D10287
2063226BE50D8F31C5DB8401636BA1FFAE520EBCF2AC99C4390E4D878028DF493B45 20578AE46984461ED91AE22B6EFE0CE5511921B539122DA3EB48707B8ABFCCF2E6F3
206493CC8971CBED42848099D1CAF836A594802973FCA3BC632CF8DFEDAACD30F3B8 20589408D626EBD0C2A1A87827ABAAF02873B675AB54BC6CB5B40E697471320BB686
206523933ACB3833F98296207ECC26336902EE4E61AC47F838CCA4BA4343F37337FF 20599D845AD686DCA663AB31B4C2A1915C55A814FBA82E77736F7F258C1AE7B42449
2066BC2F5D2C17B7496D794BDC9FCADF1F68710EF935BEBCA4F766D1C463D36BA87A 2060FD341CE08D65E648A3FB4DE280353F79FD70578A0C38C963461BE98100EE4084
206777634687592D7570EFD3218A155AF4F799D425EBAECDD6D53FF4BAE6AC83413B 2061CC1DEF4E35B10BB81C632FF1AB4511B80C881A729EAB34C9E9D217E3A57EFC52
2068819D0EBC3BE6F5B0503D39629FADA6A2210B7EED0D23EE9536948C36D1BCE955 20626B73AAB4911830A00BA599013AD3BB83BD3DBC7445C316172B3B8A22B8148ADC
2069978E6F5A5D5150913C1C9675FB4CC807136796691E186405E6188F536730D89F 2063FF33379CBA195094D2C2CCAE0E260D8DFEC35153BB3533BE014F456A108C9D62
207087987272EFE130166003DB3A723063C331688174788EB915C09C6D73037E0721 20645C21C1BCD3CB9D7AA0DB74AE571A88AF6BEDDB6DE3DAF92AE60187819E8EB8A6
2071B43F4365D9974F1786CDCA4DE9F2EF193DD46149B5A24098FD0106045E309809 20657CC1CCBB5F23E63A107EC8143F0F69B62CFC95605231FE605A989407218AE464
2072C88067CB5C35DB60F64DFFDF774BB30035F9C4509534F34A07E50A04BFAF6747 2066C2B566EB86E1075B0D8FF788B726FDA5F5F2D8743C39224C2231A46426F3B6AC
207331D3A2A56AB7F755BDF243345811E8AAB524A920B0F17EE914D3015EFBDD74A9 2067747E69C46AC322733DC052641526E775F10924F0AF404C37BD47369986746AEE
2074868823DB2338532AA4094051E3CD43B29B18EB3B9AAD4C4EF5D755AA3D323D11 2068ECC7CAAC1B2CF6E5D86A46F4F6AAA2BB7707BA4D89F1B46DA3024A84228E1A5C
20759440B1A2C01A0375BCF13162A3962224F04A28FC15D5000B796E39F80016F858 2069BA5EDB68205AE6971A255381FC06BC03644D67B082FD503F502B28141D437C84
2076989E64B8B9B43289FDF3CCE2D020AD995A3D7736C4A7BCCD31440EAC5518B970 2070E809F5C78BA5FBD5B8D51C012C3EFCA915505897C8099F0938EC15464FF4EAAD
2077043E2AF5D3B5618FD9D5C5716403B43D2773D94CEE751CB545AE7C8AF1431FF1 20712012A1239E0251BB126F4E400C170BD1C47656CC010235236733633CE22A43D6
2078C9C8B77065FC01530E2BDCB91308510BFFB756432885FFE7E51B8F5D078D2ED1 20723E043B687B32BAC9EDB90DEA0D0B0015E8C1DE4EE0B0E0C10F2F50F4E35B31BC
20791D894839E7AAD86FC90850472B81CE2B9F67BCF8AF334B1CCD1E4C3AAB470867 2073915A1D984614AC0B10AF2FF1B28FC135D07072C0530C50FB6ABEBC1592CAB0C7
2080591E32CC9EDDFE53FACDC1F10AB7D5200B79C5F52D0278D47E6A5D1487018879 20742FF36245ECB609DD787852E5509AA57B3EC5F6186B16A4EF52ADF58D7ECD1D34
2081528FA32BE86D7CA2C7D74A4C83DC5403EE7B5ECD0265AC43381C55C9A2A7D0B0 2075B2BDC2BA556F7915F5293A8CB3F44E707A57F6CDBD91E90F9146874311F25B80
2082100D59724CEBF79065CF467722D098AEEA112DE97D3A63B5DA728AD9649EEE38 2076A7348FA90D09459843F842FCCECFE4025D12B2BF2B61CA32E6F72B8618390560
20830FC7E3C2DF87FC75FC71FE7A1FB29CE0412A292E7D0AA49C6EB3169726CA4D35 20770157F80C82BC6A54B9F0289215D94C662CCFA55EFD0650B0ED761D98C65BD47C
20844B346F90F80759A98A4FACCD4BD3443C5D495209D5B8371CD9F609B2F31D0089 2078F7CD595FEF1C7DA57F3B79FD55ABBCE8D30B1D0DE32994D52F8885A87F0C109B
208553BE78E3031A481353B21AC539D1D0DB15D125C5A215B85C967330877CCB8E4E 2079D90052BCEF87DE36DB4A852E910C792C094D0D0228C53D20ADA83280C79E9100
2086FFA3B31297E1FF68B1F037146EE0CF72442E5D97231D60A780EFAEBD557BDF25 20808AF8888CAB9835D6CE65D7FE36B18F365C4F6324DD5670157B37AF55B205F460
20872841E68C8D9DD235D19D7949A847BA813AFDC78C45A3ADC0C594DDE1502632AC 2081D10A0D16CDCDA78539CF166ACECEF425A1740B7C8F02D13F2A86070416AD9AF7
2088C9DDF7F22C37569C4B6721F5D4E0DC02AD038A293C751E4270D83CCE38E33C0D 2082BD30314C6DC920E3CB78117564ABB1195397CD66FC92F54B5F1535C15E02F763
2089935A016C2E48A3B0B302EBC153592938C504B6E2F534DF5905DF530889A46DE2 2083C92A2F3F4CD1FEAD965306DF3614D0362B0191492905777B75D8D1C6F5064A1F
2090EF823D01C77EC705A38576040991BE498E2ABB8AF0EDF14F762E43FAD1F77BFA 2084111B7EFE43756B4F0996030C00503EFC5351D388C150BEC0FDA5AB0E218423E5
2091526507E86F108E6BC293E737B1CEF52CE5F4601AB761B18761351C8865F6C1D4 208578F87F1B7684AFA6DC450EF115ACF8AC2C8DFF33AD39FEA1008A46EA9D6BABBF
2092662420E1E761ECD0D3ADD8DDA3B4B8DFB78BC27F33BFE6CC5A2A60B31CEB007E 2086B5F220B209770EF010154C87A4BC067315192ACEECE255BC6A5896C2F4963170
20939B6D571226EFD67FAD3EABFFEE981225FEDE1627645BB5E881907B0F30E66158 2087576E250C3F8520E1E413A30A1C17F50F6E8D2DD87EC02320176F355709D75320
2094251F0FFE3FA1C010C937B6C8DC8C4A8649156947B204563B30167D4D480EA6D5 2088D1747ABB9EA215793CAF3BDAC8F5C0812A630FE85D7FFC3AD199E5D83B068C44
2095E74571126EC1F19961983A135064DE001B9F0F2FD8D63D1D9A9992964239056F 2089B757C8A127C3993C01E25FD94725415298FCFA762ED456DD7DBEDDA2F7AB71E6
20961983B84C152AAEC909E8B27FA29D309EC0FAC516F297438DF16F5DC70E3CCFA2 2090A289E0F59FAF62E3A2CB6A0995CC06838C8F9A6E19226B0E0953E2BA3764BBDC
2097CA7ACC09A83BC9B7912CDD58E0B367BF41F581162C100F3633A8DF70BFA80565 2091257212FA3143D2B67D308AD49A0B245F0A97B09919C307B326D575F1F865ADBC
20986EAA455575E8433805C923ACCD1DA4FD9A08B5A344329C61F897749DBAC3644E 2092E292206795305174C193A4CABB0044936E51BF95D0B13E81F2C64248F1D9749E
2099F76DEA49E774150D58B868B341B40EF1ED951DD2E8EFB95C2B71C0F9FE556CAC 2093CEC22448489B2AC1D766933B570E3471B4917ECB1D66E0A4779B084B1D22074D
2100AA0B805105F924AD53DF8A8792293A7C6EC634BBF784534EC60AFDDDE7A5ECFD 2094108867FEC1329F5B30FA344C19FABB7C09A50F49A5B0A1C42413B3ED9FC39B36
21017DD6399B84BED1B6603DB2807E0021CBEA0C2AB014EBDC670D082AFAB26B3151 2095500AD32B07AEE4A5C0DFE29DAC2C6FEC431842A473EB710293F23774FB448E51
2102101B9111E538CC9508786CD5B4322F6D8BE43455BC8D585663C2494F2A941AF9 20963EB6B4A27D98078B2A4DF3A5F0F41308374765C86C0A879641FAD025EB77D7BC
21035DF7A512F936105B6C0B71E4A29C189CB175F1B4ADCFEF1EE300551A573ECDEE 20979328E717E2EE4AEF31A3FD23573DDB8E81F20F6499FC2BB4C94D3F1054785E0E
2104BCD73740A44D6FCA66E22AF39A236E27C4BACDB41D616039AB10B308C0671129 20986F3B8D6176EDA6E386FCBB034F6E82F6FE43CB83AA1147B05D51BBB03C477F54
21054DF112BCC3F0709D96E00C54FC5D335632C107058AAD26366DE0A1E8D2448845 209938FC98086DE0E04722C5F0CBF9270E0DFB928EC7387710118513A3C97C0D6A9C
210699DB48A0F053672ACF7208F8EC728FAD0950599396813185862034E128C29EB2 2100D67BBC5AA5DA3A33BB0F534096582355E0B3BFF7E6536FBF496FE4E05F006F88
21075D0EA2C06F8B067F2199455E44998E7B523FF19A1F7CDAB6BA06E166E471090C 2101C7C28672CC58838790821AA48534FCFB8DFD4EBA9C94E4F50E0B9E046651F779
2108C3C7C2005CC0757F5A07CB3B1C6D050D1BDB00BE0DCD9EBB1A7CFF6E4BCF162E 2102E11B8915503682E7FDD90F05DFFCC5A009CE64FBBD223E2634DC95803805F4D1
2109FC95B6895F5E6E90C10D6D8F17CAC2B271105BAB3EA0605C8561E3DDD996DBA3 2103C27B4D543FA3EF2B222DAAACF40C526B2A1563C0968E7F2FB22489810A530519
21105DCF762D40B38DFA30086967C407F20618613CC7E2A854FF0F25CEED4DAA58FD 2104100FB442B5F972F960FF6BD86A19A1F297F93DDFF83CE2347EA3F861596B961D
21114EF8C4DA724D2B21D0DBE3F53D2D9D26FD15DAFAF81DFB2809B05BBE5B2A79B6 21054FEDC423B8262ED0F0352DA19F07ED09117CA72EFF0CA7B666EA45493D1E1317
21126BE13F46F5A94F43763AAF260231DD3C2774A165FE4D2E7C8788F23609E36249 2106559D4B5D278F107042D276C9AFA6A093ED696867BC1041E5F25B11C1687C8C1A
2113622A714A19B91ECEAC16D64CF55F761A801815A384506B6A3342EADB2671B107 210772DB2FCD4B632FC212D774785F2D3579BC0DBDDBC8CCFBCF7B686ED3BD92D4F5
21147E2099F4480AB218B8FE2CA0F6696851F6431DC6758E7C4E551ED27BAF6E28DB 2108378CDE86406399B059198B66E88BB9EF7E572C6460C36B0F2FA3E19AC56F93EE
211583AD73C80504F0ABE98095A525EFF2667E1F23380D5E9B5406830B8EE04A82D6 210960F1F7BCE76F0AF284C3F41C8BB69F7D34B4644AECA4E9324CE2EE4E4044F4EE
21160C016ECA5D0E0D22253CD23E5D4F758A919833AD851EAE0AB007BB05E6234D86 21107B9C28E8B454D894445AB47B05F7B4B94529808A007A5E3A7D323F661F9D9C0B
2117FB4070BC98506C718BD3FDEB8F98CDEC8F628F1BEF4727630C09987EE93A05A3 2111B5BF1C24FAE9D951AF26493C3C9302C4C040A33E94E6596246511185628C7A02
2118E27FDD103ED344DCF579D4E47AA29EAC5E0415C64319AB8121EE933F2DEF6C65 211215D33184493337E2543B1D82FD5ABF4F47E894E809C51DE0ABE163D378910FF1
211992D3067DAC8D228F566265AE3F51C5B5B63847066C8E15766E9C17212D17BFF3 2113717FA82AD420E076611F5559AA027F1F82433B4B103CC1541D342330D9BE4592
21203EDE7E9380DC748E30D7A441020650E6244E0A0F10B9CCB08D9D184F31557E86 21149B9112E1FAACB0FFD59326ABB3A352C54D097E0B79A91A0CB39B77AABC40D191
2121728D0D17E69D02F9139F114BE9365B5789ECD22D525B0B3F4F77BAE59FD5EEB3 2115C895ECDE7E9439DD2098E2D81E56F13F178CB8DFDCA5759C4580BF1DCF7AA3AE
21229D04F26B3EEE5107BE27FF59AE320732610814C77CC42C6A2CFBBDAC95B1692E 211683F2D998FF3B9789DDD4B2A3E1F5CEEEAB48CB410F5C07DD3FBB4C362BE0D32B
2123CB3AB1E0663590BD79F72322ED01417F7839CDCDD86E16A3FF7486D1BBBFBEA7 21175BEA9A428692EC6585A20F11A5C73FA22D023131B1B416AC0B2F4A4C801863BB
2124CC9A15F1D85E99982E657D5E6CCEC362878C63C70776B7F3129A81E71FAC756C 2118D43B180F82391830064FBCC5A233E3ABC5B30C1FF8155C61E589604EC6C16E48
21253B9D5BC099F11271EE45E8912DD6E519BE47540FA7E6CDEF4E0AE2FA78EC9909 2119F3C676C95C57B8E9D4305C1B1C7ECD75B3A5C7F8B8849AA1B46FDDD928D92B21
2126A3BA4AA0498A42D363EF9BD3EA3F44DD192054D99E2BA96AE79D58F1FBF4FEF0 2120D0B6FFBAD0B71D101EC153669E32324C497CD26093D0D2E4AA197F9D5E459C50
21271C0BE069B0D181A6BA16E7856A55A1252CB6E1CAE718F061B0D69A697F30212D 2121709C64D20552A3B9DA9475D3658C302B5E7EAE0DAD3F9270A327A6644AF5C3FB
2128ABAF64B49495CE8C2C3A021F1B63EFBECAEB14FF0F933679D4825ABA027BFD16 21228338C062F33478E38E82C09510F27C2FD1FB2D304355F28B35C9EDFA0AAED925
21298FEEDA3BEDB9333856DD7DC8DEE7C6F1A6E571996CA3850C3EC6F7AB56217F89 2123F2D1493BECA291483EB47FF0442C3692D29D10FA92ADF3C9AD85D5AC09D35949
2130BD0E5D306E9D173050124427C0639C9CB1093BC5DFAA4975639E844BD57128FD 2124166DBEBAF7D425DBDF179F8BCF21912C5A2123E869DE9A9CEB4803F2C04414BE
21318565FAB45473C77772EF4B5AF7AD6BBA291A06952A9FE634909480CDCA5D2924 212545DF573DB40F5B9E42406F49862C7B23826CCCB05E76BA23BAA5A17CDA93D4EB
2132AAC8A378DE44DEC27FB92F3EB49C2CEFBE1C9C8FF1ABEAD47EBE178369E562CD 212659569951158FC068E32ABDD8930D6C4C58A7DE1D39030E3B818E3382938F466E
213383863901139FB4CD2C62B5813AC5FA42972CD918E866C218F88F0F358066E169 212747E8189A6B902AEE4798286CF0C032E0F2AD018380C904C2F4EC61ED98CCDF25
2134AEAB4A6706F7B863BB95ED3F75F0B8C358511167E30277CA4B7D9C3829A6C4AE 21289E2C691BE9812FD5E0CE01F2C94134C9F0C05F4B7F1260DEC20B9907E1B5D372
2135382314835A27CF8DB04BD2E399315430B41AE224403FB3DC5A6E6E703CBD290F 21298677FB4F0485ED87A3F6EA1A647072D635F7E2838649CFE37A4FF8182882BF7E
21360C186179130FD6D362480F725AF7DA8FC53C3A74DFC8358BA617299FF5FB80EE 21309474583F4E9D3548795E0A63D4859BD27B662D156DD893B3799371DB1BC75A38
21373F50D30ED2ACA85ED86802C32FF46B6EEA7C574A0571A73B11E5260F8DCB7C3A 21310F454EBF825D683CF2CBC8B308AEE9D8FF8EBB8A7DEA067AEFE8CC77331156CB
21388664F92A46775E19F1EE687862A4DF83C32B055EDE4FE626C6227B0B2CCC8C42 213220210ADE2B5DD0A9F77BB6E98F3630800BF33915E73E515B34E58516D1AD87B5
2139065FCFE0EBA1778CA4AF232E795337F1F581B7904EACBE02B7C331F1089F2021 213300A8969EE2595D2365AD69FA4F67CCAA7D243B8D03FB39CA136DC1E5FD434750
21402E14F5B5F0D0F20A157BDB8CF35DBCE84930A8B594FC8D49B86DDFC8D7698F59 21348A329F7D11DC4D33F6A0BEC9A23E5EE1A18FD5C3640E3F30FC2D8CCE5630E618
2141552900CA17022719DA2DE504CB3EF99369FEAEE2B8B692F0A63A5380D4E3ADC2 2135A273CACED00DA6F094148C5D6751DD983A2823418223E715DBE8ED167B2D1999
2142B8A1A4C3D4B521F6A96AD5F04FAD50D4365038A650FF9B78CFB879B546006A42 2136650D0FD8685884BCF1D6147C162BDBBB6597DCEAED3B5CAA75F301D46F2F770A
2143468D77BEAA748544C863C4CCA988E13C4FEC9D4516A4056A79B8162198B0B0ED 2137CA1C8997E99D16CC0A58572FE1D68383D87335A38AF8C27556FF19CC421B8BE1
2144598F9A702420A7A466628922632F3EAA31D81063D23706D2BABE7072FD3F1869 21388AF89CDBB98273BF4E43025A710B4ACB5D7F2C77249CF1756282B74CE43F037B
214559256BCDABE36BFA51C205ABB4FE86E0818930A18BEF080E680AD529E3C53B69 2139F62DEC52EA41330A2783B5E64F72392EE25FCE9A7E872F4A9AA7BB41E5368888
2146640C131261131FABD462CBDCDCFB35AD7EE87A9B651394CCB46E992BDF79C47F 21406DC531A2E602696EDA1CD3DCF808F62176E9198AAE9CA8925038D41E17570FD2
21477044848CDBCF7260DB57EC13AFF48F65FAC15FBB95A84DB9B5AA65CD2A44A5A4 2141E976F627F7213AC8EE1B2BC240871B7CC1C61B81BAA031B8396536AA62A67DE7
2148BBD2598F7C46E0F55FBD3CD60D8D26B384367F3680FB23A431C4F9E4013B5FEF 214263FBDFCFD363DB5CE786230B302B786A859C48BBA8CC27EADB1FBC84F1059FA1
214979674CC608B23BA474CEE87C7C1C89505F95AF66DADA954C08B90DF6EA5C3D35 21433A02148B4CEF5DA6D90664E72DC6F3EA267E4102102F18D79FFBE4E2A642E94E
21502B6B28A4E65078A4644625C6B5748CD9F0C8E6CD8DAFCC6768448C0E1844B067 2144F3D9376838236476B1030A0C47D28F4E7EF6358D213AC0A95391659FE736010D
2151B8FE4642141CFD6AF18BE1D8D0C42ADF8EA56B2DECB0E105102329E01A326D2B 2145355826A83F7FBEDF3164FF177C16C41789E84F375C6FEFEA767DF654B0533E98
2152185371ED000FF8F10B2642191C1C8896C287CC5B02F7D0D2961311E9FDE97967 2146A1430FEE50F41D39D41DC2ED6EA7EE1FCAB31FCE526D5556E89D36F3B402C5E1
2153125F17AF2BC1C0D9E81082A0F2CAAFA85586E83DCF821169F643E378ED0C06AB 2147C0CCEAFA157772B77556AAC8F874A019EAE0A797BCF85655A7834D4DC32D388F
2154F0107C05B6C20E8C219B1EA372AFE14556BB26E265DDB35EC1A29E698ADDDC82 2148F3E48C0F7B338BBA1C9E949C5C0BC1A727A77FEBE57E1421FF81FE4AA81869FE
2155B3DB2749CC168E27B40ED391851B5D9265D59BAFC8ED28A3317D56BED94EE667 214986EF313CAD75613726AB3F7508BC904A7E55F092A16D605802D36509525EE2E0
2156C829329BACB09D1B1F7A416F23BCE70366C60E5CB4F058F00A490C2FCAF90255 215018B8CE25A0BEC74D167F9E766E30C4EB0D7914F4DA044FD895F3A9C196E23256
2157EDD033037A2DD77F576CDF4B793FD62E5EF1DA9CA07EF7196356FC92141F0786 21519033CF1E352E82193458B6CFD32238CC93CCBB0E05E8E6AED8CB27157BB148C5
21587E55CA7D70BD6C095106F365D80C5E56DA0A2EFF8BD6F4274138ED558DC888C1 2152C644977C16D7F4FC50DA22A28CF8F945B5E0209C8D715E8E7D9D80F32FEACD13
21591795AED007DE68040372974BAF475526BD0833CEFB3D115467DBA008921D3B7B 2153E6928F4BB60E9684C0F865C9D0C2EEA5EDB0A355FB16426A2405D124F3A01977
216020213B1FEFAC68B2F8881274841562A098631B4DF3055E4F993C8E3668431C87 21541DE108F66E30EE01ECAA74FE0DEC9A6D485B084FA8A38EC3A59B23FD35B72F87
2161363304114F12F7A6741E63B57EFFAD0451125284641B7B63A155786F0F30AAA6 2155ABC6B7D73EDA44DEAC4AA7285D15339EAC0B54B52FEC5B7EA723622704A3DE1C
2162B4AA243909838427881299D4A812037868176E78080B58D71BD4DB349F5FC40B 2156AAD548509991E18B3AD4CAC7FCBA320ED3989A185CAFA4E22A42E1B5C209F774
216393E93AB792213570A54812E4289E434C7C41EC8EB1D725071DF30C07955B8354 2157F5FDE4CF0FD23978F3C37BC3EB97A0AA9B9CBC66538FF705F8F7E2C3CD58A359
2164142DED8CC2746850ABEBFC9FB474A8A4B4C955E2C4B1B95C20FB7D7785D6B2C2 215840958DC811EBBD7F16902417BC1C97C3D409E4039E0569C6826D22923806BBCA
216527C53F46B5650208C05D672AC1591BE11F4EE6C139315C57010445E788312C39 2159E601CFEB9B249597BF69BB74FA9607EA9CAC2DE0C8B958574B715D64D5E2AE19
2166A20F2316933C10C67BAC33DAF32442A0321E4C9372C2B4D80414454E518C65DD 2160DF262825913DE26CB598B36E6F8168F7641A58018B9ADBF73237113B9FBB958F
2167B0D18FECA4B9D7A86A11E9B3F2E56119450551092CB2E7B4DDD3858FA8BC80E5 21611A3CF592672A51EE2463CD7F22F058597DB9C7316CCD49EFAEFB6A20646E0DDF
21686C883015EA7B770A8B51D56AD6A14D22DAF80229DF1026A723C1BA653915123F 2162794C0A9DFB62A42FC95483D7F578BA3163317AEB14561F49F6E2A909B7C92370
2169A1D57F518B44F0613521CDD32EB9A1E4E986FF5093B81985A00E0CFF355C61C0 21632592FF0614A1AAB9AC39E93A2DE2D38330AA56BD51D1FD225D0DDA8E91B94267
2170A8D01874FB5C462A3B3A317E027AF79D5820B473A61CE2D6F759CB48B441341C 2164127CADEC25E9769512EE28557E051F516329445C31D75E19711CEFDF77224F25
2171C98393C31626FB7459EDE4953D114D2A3C3266EB03F4A4545BB737E6C3BF0B5B 21658B590ABB3BCACF4C3620142B0401F7218BA00C67A748A2DA5F784EF53521F536
21724186E06CD1EEBB1DC515A1727CBECC5770212BD638BD04D1A4F2662E8DEA0713 21667110D64B659B7BCD26E03F6D35A6EA3452A8F33B4A4E580AEDBC83E7D882BF65
2173B3580AEFA6AA79AA7DDFEF04F877B1C7C763B553FC4DB31E7E73FAD239C8B871 2167AACBDB77189BD88AD8A0CAB62EA74CD673A9B37AD1C40065C309BB399045594D
2174208FE433C3902A84A0580CC2F7EF3BE276175F6A6197FBEE6E039A1AC985D478 21687BCACB882630E12489BD5E049F217C8498287D768B4D0BF904BF0BE1C6340D18
217558C86EDCE81805640D4A87D5AE7155DF9F2092966CA7A1ACF9B04AD4ADFE7EFF 2169C14229DE0AC87C1FB28EAF752A2C88FB5B80A4EA1066F11DD918A2FB2E18DBD8
21764FF711FC4D9E9CF66C395A26F25309BE09019E61F5B70C50BEF2EE54CCEDB425 2170384E38D2B645EB843A019723C71FEA7C4D02621308D92FD72A10522EFB409D8B
2177B9A0A84E2E142E4B388D3DD88062AA6FFD55B671AA4442011FD17EA9FA0B67E2 21719A5E51F4AA9D768ED428750A6F34FBFEF6FDBF163B13F6FF96450BC2DE22D65D
2178D4A2BF06F00F5B90EB8B4318F026B9F3D7862266615E87A226A0BACB505E0FD3 2172F7F0F5223CFD29524C61D0070228ED1113C58F48FA3154E53E67567B46F7040F
21792340134D25DA26A26EB4569D95B57DFFD5BCFE6CB99AD2CCE1B98C250A621F70 2173B03DAD476D4B4A2705ED9521BD22F48AE00AD101CD53BD79B7172ADBB6D4C4CD
2180A5B45601163E7CBBC9FB212E7FC224C6C9B8B3AD91D68B5244428AE7309CE55C 2174951D9CB787F957A1177A7F967A3B867D48A74A0EFF9ACB491BAAB6C997896895
21811213620A6E7AEB379F5C2374A10948A21E307EB064D46BB725F6CCFD4F0BEDBF 21752F3A1DCFFDC2D71659F916C1630ECE089BF7318201DAEE72972A8AFD0C69D5BE
218213F46A187209D019FEB51E0743A145821281A3FD631CC2A4B1A26BD2A1260756 2176B5DBBF85ACF39AEEEB8CD634A58D4AD84A49E75E39A5799D53DDAACB7CC08310
21833B54198F049B25A82FC4A40E3253B0A9B96E9E5A8E6FA072BC0C4D4957F4FF35 217723D44AEEC34D256B1C6C208CF20E986B5F52A866FBE4221FF02A77459AA91933
21841C57C6511C9DF81D02BEEA475A63108A5C89DDFCEF769227899948AA28D761F3 21784DDA62FD7070BBA306D113FFE2F96090AD748C09470FEB4FFD0CF8C72EA68FB9
2185233CB498C5178B8EF70CA1AE12602B5BB28D113B77E275D952EEFCA9111F921B 21793F00F3F93A56DE5659A40ECAFEDF5E3CF327CBF8DAC7DF31F0F02EC416863D12
2186C8AC69D314A324B93B03C97DE285958FB13FCF5D4B2F9E855CE45345ED0D8E39 21802787C56399B9BE4AB5DEF7D7E185FF02521844F75C48D1ADEA4C0D8436B3A780
21875615922765C0CAA288969E056D81CAF8012E4DF8FC543DC0FD54E1B32529C054 21818A55EB846C5CFFFC5D207B0F269DB3DAA7E06FFFAD34ED5A49BFFE73CAA09B6D
2188862911D2061DAE5AC576AF98809CACF6A86405B0A83DBBE664917625AD60143D 2182AF0C693F71CE69B77FC1378A3C4790CBE8B5546FFF134AE8CB103DD6376EF16E
2189A22DDD3FC2419A51285E8774E5BE1632EC12E29B6805E54B168B1C003385A74D 218303501532E3F725E58F36089E3718C635EF95FE9921EEDB08F0CFAEDDFBFB3336
2190385865C5A46F79692553AF2792C11DBB6911E3FDB8CF3DD6F55D31E6C1F86D3B 2184517AE8ECA540F6918563EAB9D1B5E5BFFAAADC83D0867125E2050A05EF871ED8
219119B86B8EAC47837594EF0EEB73D8EE06BB39B77A40E5C47752A314FD837F09BA 2185CD0AAACE7D95D37065EA0C92E46115A732F468AA43FF12337839C206157A96BF
21925A84A5C73111B6AFD932B5B4A4E680428F4840AD627379E9E812730577AADE4F 2186A8DFD01BFDF8E2D76E4D46C5B9AEF23193156FE4B535C6155F79149384737DB6
2193C96F1D16FB6D0BFA89779AA11708F81C9A5EEA31D608B2FA8898235219D82F81 2187BAFDB4DC69A64056EEE87A1186B137B6D9D394EB8811AADAE996D67EC403083A
21941162F1DB9E2A85F397653B8A57D9E36380A70543A1492D217323D69E42278594 218886771A4CDF9AC65678A65DCF46CD1EA9CBE4C1D839CD7F166BA2CA8521F698FD
2195B7F54368880E22CD2E2F3BF701DA9CC29DE0C62AB31BCDAE82A2F695C98FEE90 21894CDEF798D360867ADC4C8FD100DC3AB3B62C5BF2527A688D3DB498AB5F407879
2196EECA21BA77D17298F7E2DE6F74544B53CB85638E239EF670172951CC203F37DD 2190970F2EF1EEBDBC4521CFCBC3E621F992F3EAD3E9737976CDB56596E661129545
219751471D4727E6FA2098076D9177EB995C676E21AC27AD84B90DF5620FD9952A6B 21912EBE036A72F668E809D454DACA709F2C0531CCB26910652CCBF94EFC3A4B3852
2198637EA0337053F39A8101938A30F6B8E37D94D7FE31C980560519B6517155DED0 2192B144EB820877E7A55B33B3E9B2B1786729B0643517AD956A7A4779334D0A342A
2199A419B6D36CBEB64AF00518300C4AC1B9AD4336C7B099651AFC70D68C624DFB3B 21933DD38F70100854C0B3032397BCDA640CD12C985BB2B5835AA83D442166613350
22005A944675EA3ED1AE5FA7ADB63E5E0763F6BC4D4E83F8B1D1F355ACCB0F4869A0 2194BACB4CA9F706141A9E9EB3DFF314B1A82113CA28B74B6603D67AA2D15A36972B
2201C29000EE68B8D3284D782874761908D83E461D247798A35BA1B4356C4869AAB2 21951D8B0057D3D8EB92A1809023EB95762577BD753193DCAF7021366943AFF53A8B
22020263D440DFF69BF5ABE9362B1BFB8C5B6E6D8973AFDC4E76277104B8326EFE02 2196A9ECCB74BF27EE70B1D0B73078CA5CB5AACC1BEE0A61A75981F8A0A3253035FA
2203B08A5D00A6FBF10413C2B8B3E2C1BFF9F235772014C39D48821097390F760062 21971D5D6A1D47DF111693DD9A1D35D9B865C06BD05A688B0D9BC285C0EBB1DF7B2F
220403B12B90A7C766E19E6BA87211D33F2AF5F921F7387E42246E71EBE0470C0A61 21982CEA26CFF7583EFED470D4BF02CAE6E4CCFE5347F61F669BF8E82ECD2112E672
22052FBE7DC210AA55310FF8CAED5D089801DD513F6995F84D87CCCEC287B1A2E98C 219986D10C529DDB600B5237C11BEE28BC3120A0E212E2ED4F52BDF6980675D7DE7C
2206958C180C6434CAC5514B8E0BDB98FD47ECB991F7687EA48BC5348C48C6231793 220089FBE11E19865B1C163EE5F4D410F95A434056202DB1BDD10B3A75FA3C091D5B
2207D6A6AF77ADD045C90876876BCDDA1CD33A64CC745FA39E924D6CB69A26501BAD 2201E3E2F888A6509E1755BFB39F9EE35AEACEDE970EAF42BBFB0D441BED621A8E20
220834DFD096F155ADE23EDE1D17394F19D4DA037740556124BE10A1CF66EBFC7CD9 2202F504AAB0F511661754B03BFBDEE9E5D704B1FFC70E429E97B8C5651C90044269
2209093891E8C4C084B16B589A627B7807E2216E0E9E9E76E28AB4EB52E8121AB21B 220358BB39683838446D49507DCB70AB0DEDEFB73F05E621BC7371D21465AC659AA8
221068EECA8901ACBAC21610C80BD3039902AB708A0C393EA723B8C0A42626C99BA9 220490786F8CF2A0B0ECA4B40774D7143F92F2B0A95417C475DA5308B5BDCEC67A74
2211F7B4E369F4DF12F9D8F5747BED03ABF2292FBA592F614468CEBE74BC3BA016AA 2205A425CD76801FF2E115FA3A95818D088392C84FCBC00D3B3C7D683253414D4C5D
221275CBD88BA886C0FCACACB6BB14B57CB27189B6716F58DADBA7F0D94D06CC3AB4 220674446BBFD130AC89A0C9B68BB1CD772A1BFE8776D0772ED8C00C13C8D0412D7B
221341B9A6761B4F473624EB06346D2DD8C2F011BD9BD3BB17F9400E53083C924FAC 2207526A73A0E38885B79551DAC3E1060537C0EE8FFE574C4B9E8155E2CD83FD85BE
221438B5457E6E2653DADF8AE603A45761A198B0E1C03CFAB17CC01C38F3FA36B17F 2208191BDD6ACAEE898A02717A9725196FA59E41FB45D2733CE77289FD178AF07D7A
221564720594133B6994483BAC49C252F44AB1A80729ADD3C4D7A8E866694B1549BC 2209FEF8D6BABC7DA5425A45AB8EF3C2E369432252E497B172A6FFD4D3DD957C0E26
2216CE77C1F1B8287F515DED9B124AABF35EEA5761C8D86289882D9D77AFA73B4EA1 22100D3D402EAD21FB3E404DB8082DF2ED2C300A0AEC0DA12B7FB571F415017D44E2
22171BD12F4AF1416F83F99F9F70FE1B43210ACE9E76C0E0137F2018B2E89543F1ED 221157509A41CFC2284455635F50F06937D23699B43084728FCA9DD25A7264B9D1F4
2218B2C35DDCA5D68EF1641463D7B8378D195BABC1880DC6592FA2429A4FBC4DEB7C 22122E086976B56237887470653AC62DE323911A64507B40DBF281BB060AE635F37D
221967F1EAE1F0FCB79AD109EEF143B57C30CC105F65FDE1C80BAEA04282132BDA3C 2213BB4F9EF7456EF62EAACAB52F0606DFA777D2965BF03D7CDA312AE654EBFA92C7
2220B48050A7267DEF7F3F48C2A83308B16320E15564171171F46EF2CDDB10AB209C 2214580B7C2A2E604389152704BDF3008ED2F58200D825D0F60C7BF39AF14816B2DA
22214E7624373F4C6A49C566CE0B053667D12EFF5A434DDE23B32D0D3090318029CF 22155738DE7338132B7E7E92424B7FDFB15D8E1EC176CBB7E15F3FA064CF04E357DC
2222BA8A095C50BCF1F6B0504DFCFB70752A9C68ECDD82FF949C2A17822C8E3DD91F 221672FDD1E8AF8079B1134EAE3E5CB6A7262994C71714691E8BD7CFF2676EA4D0C2
222315CF16B6CC6C8EF09178CC9111B5FA9D36278B47AA95D22D6959F7882B101F69 2217A5FCD6C622B3B34469E3B2FCD810AE0252B2814EB02C544B0458CF12DAACAC5F
2224435085BA043D7465E896C536867A71DD95B07486B0DD43061FE0D4AE86C3A476 22184A2E078844AC2AC74543F4763CDC6FC081073CD60E276AA6E7F1D948EFA02C23
2225C37DDA978A549D60F17212C0F0BFD0E5EE4881686280AD90FC6090C0207FCED9 22192FC1567CD952C837AA1ABD3E3077F5AA7F9986F01B0A9EE91C0EEA3895260CB6
2226C7D395F9BFC34591D1E73A55E7257753D2603D51B0861C11810A6B2129349511 22203B4EA5F58F8C8C23D42C81764E72399D2EDF40C8F18EFAF113AD16E753263943
2227B5AA65AA3F1191066CF75BA36421A46844BD99861F9F9F241C67979D51676C57 222155EEC4F01AA885DCBCDB7C9E251210AB2B9382EE45050CC1184F592BBD65D6FD
22286D5F9C816AFAEFD24650564D8E2553A8535A2D4CC4C4C5C6D6108A9DA0D5AD91 222244D9EA6BC7583CA725A1DCD28EA77A085B0A47CFCF5A847C5D29C4F64F2A17DB
2229EDA473D9BA0AA3313D850C749B3CB733FBB7B09670C6716B9856B9773D2EC073 2223BEAD7B3BA43BAF8548B65DFB4814135A2A789E7E76C978DEAE0138AF8A0AE4BD
2230036471AA470AA02DEFC681ED77568508AB6A3BACB821B77E90A94CAC3CFF436A 2224B4D22A02C169BB0DA5215B2B91A10ED3A2A9797E5C5FBD11BB295B02C7498B13
2231C554E78721F7D5B16D70D131ABE62B6AB3CC687B1483A7A63A9563F4675295EA 22256D90D8CD79D4606007D408E8D336D75D42519BACFB7164C2797F0E9FCD98F178
223278D3B2E73D08AC9056FAB8478A6F41E24E8904CD0C65C420C1808ED22BD4A42F 2226D82372F263BAF8B2D1F185E549BA63428E2B8DBCCDD243AD605DD10666F367C2
2233F86A163D8F8C4FA298AE20293367796E5793A8F129676795ADDA26C3BAAEA0AF 22273EB98C9157E068FCAB8D91AF9683EEE87A1158A562C911574136CFC172D50C4F
22342A4A2525B889D45ACEA22616BFEC7FCDF17927C5233FBD73C3C58005C843D5BF 222870BC388C728E821395579A081CC946F528CE6F3471B7615F67623F9138DF8FD0
22357AEE8D1E6B17FE8ABC9BC16A7FACCD47D6B6CEC06016D29AFC9F9706C3109225 2229CAADC4E42AEBF892B36AC169C716DDA724300E9378B809DC6739929C3108A812
2236FE7DD2CB5B7262A2D209B3AC7AE7B5999E5143D1ADE6F9FF55848878F5F1ED01 2230F9C116118E9AE1B066E1928A4A442CE02B2D3BFE18D406AAAC1603E754224AEE
2237879C62BC67853FC360480DEEB73694A6AE25C6B2B3DE9456D6FA372DF603352C 22311B802E92CCDCDEF94BAA8955F389B7565AB67D73CED601FA7BFF438717EAD65B
2238EF498A11D4DF3C441A685AE00CBAEACF603B40527A7BC5102F082B508A869498 2232449941F0C87F048B9186C9C78A3D43A3D4C372B5F8DA74DAE6DD2A2816E44303
2239EE2741017999C5FD551668615F32AECF6008B8FFED14BA461B081C290C3E6C2C 2233790F04C13F08E0815B43FCD837A67BF4A2A86FECB6ED6FFA56018961A0C528FB
22409D11342D1F4FAC2037FAA555BC213857242D72D971081B89ADFCF15B26E6229A 2234472971A8E4C47C974DE12133616F3CBBFA20CE57B572F751649D9AE64A61F271
2241A753773EB8F05BD2C47A53B6B98D6017848D115FF490F1270ED226A588E5A714 22350DDE783CF2509DFC2ED2CE7467574AAF79101D56D3D2664DDA30FC7DD5B5C6B7
224296E737DC61DF729881023D566D428DC4F534F2619326C2C2489D492E6483A322 22360BD084CA516A72E6D3F8B7FEDF0F11EF9CA594C2318EEA3CC266A2F4C2F2AC2C
22434F93FD9A2582CFF04CB92BB84012A1217049A8EE353FEA7F6560A7EA329A0E16 2237AB1ABDC5F7419F46308865F1FA63CF2AF4AEBB8319372B3305AA052477ACD838
224452A6687FC795F57D0C9A1C54522D18B9A18BBF8A62CC93FAE2B98820149956BF 22387A35218A6CD4A7C0ADE0C3F8B005D6E30C8A208A3518C1134DC34D0E64F804A4
2245C8D0069F84CDDBF10D87E2459E0FA6DF4475AEB659F0C89DD652F25ACC69F19E 2239258A995097F17642E97FE9CC38A34C250B8828B4FBA1840EECBD06D427FE7E10
22469095CE72CE55263AB14F075FB439D5FBF36BF5088312DEE7556E12C4852ADB07 22404EFAFEBBC934AA295E12F25D6FA3D277C7C88DA60D818A8A303364BD6B2C0288
2247FB99279C9465BF097FBAFAB6A381002ED4DE4797C61478E5A002C97E89BA81BA 22416E94BD8E474F28BFB951BE4ABC493AB0EA6EFF110193105DF8E9CEAE1CE549D0
22482B9A50EA5A1FEE07DC11DB4611A1A7D24F97004E2867A807C508F17FCDD11E9B 2242A907F7A7CF1AD20E121FA6547F93CC10D7957B36ACAF213EE436C92A00AB1A24
224991C9B72B563D938B38F392827AC23D05E414A3A1FE24199FE833CBF776E19E3C 2243540E535440938E748DAA6401133235D1CC74EC8FF80F9E297FB6C56C12B4E0A4
22509408C38FE23BC89E8310D49F866F0B6034564BB21238733744ACC21D6FEECCD7 2244D53AB28F11618F2C793F6EACB593E56B8370ED5CFF467B5FFF04AD11BC5A3AF0
2251E4AA08F377CFC6CBF44CAC348CABB8FE34A6C51F5AF753F0C67B1A18F524681F 2245A6EF110B540CD2C87070FFCA3AA0776FF070C384BCDACB0FBD4921C06E24C8F0
22525E8053D13E460F59DEDC7EEF52CBB402C9E6A7988D07FA1928B1383D350E8A1E 2246CE590D788FB8C1BCF9E083B4778818F92269C274B0CC6565E2D70FFFA2480381
2253E06C576D198E12BB84C1CBCE4F47A93B569DF88BDC595E5A182E65418CAE4399 2247040C5CA012341D51427A59C3FC9B5121956B4323872E67BA499876052131B266
2254E2B76AD0A8A073BAFAB2DEA554065E5A3191809390E23FD16842391B03DEC4B1 2248C21F0B8B37902C7C3156FAEB668AE6A7851BC7AA62FE60D792B35B6A38183B23
22553FC005A829DDEE375728DC73B3E2DB901F97491B827D688B949A07F78B10535F 2249E5FB11DBBAF1E60B0D9DF0E84B9EA6F1EA6C37B84736FE657F4A29E92F7DD89D
2256662143A7D1772FA1DBCDACBE5F3527424DC787D6B404CE9714179DC10BBFBD9F 22503473C81FD7F595770BA69C91DAA3154425278D323C3E50A14FF72A02BF3820D6
2257C3E3DB0771D2C47D54473C15587342E8FE9190A6FB55CC0EDA521C73ED249D2C 22516621B91A96A1D2F76710143D41C8305E02810780D868D822DC6056DFA4690F24
2258927DD0BB776BF83492CD40DFA5514BA3986629B3B7B50BAC7351408A958CBBF3 225290BE5BB4F14902B97F5FB4CF31A6C8B346A76B95D82EEF610AAFF9F6B88E782C
22598999CB05A73F244C1230391D6F89AF2A7ECC1755DA94C389305916CEBD43B233 2253F0E46DD18BD1CD53C92075AFEA0C1F0870DA52455847B22A638DABEA04C90ACF
226088CBAFEFBFEDD7D54D00A9B88E1A391AAB951283F1BCD9E3AAED990F53BFA5BF 22540D89E8345F118E5E26A3934AC0C0C9F1269946E17F1AF5759123CE2359B60ED6
2261054DEBA1607F632C1F3D7AF66881600F84EC835F86663C12F02F084D419C8E1D 22553FB22A23380A34DF818CDA8570B36B92C4634A80AA4ABEFFFE36865AFB384DA8
2262AA77E6B3B627BC87A41A4B42B1744F410AD59846D246592AA804212BA2F38867 225670E5CB4829052F8BEB962841C2030BBBF874EDEFE149EB8A38DE0ED59903FCBC
2263A63E5EC0F71239113A3BB841435B80CAECA592F499755906A5F4D8255F003C9B 225725788EFBB825265AFD7FF2F8D5F9A947EA94A368C52986E8640A6D6A11B14DFD
22647E6CE9A6AD93B41203C0912D4603B39A9071F7473A5265958BEE4CBD6BA5870E 2258CF435B2F1F7C168D1E9C7B84B2C2D9E235DC59799B99971FE9E6D9780EAC653C
2265DE6307F6F32DE57998276F2D24D335305C3297C7B7CC3079845DF71FE32D093C 2259981FBDF083B949310FF20F7B383BD10737136E88B9D294677C7C63CC50A41AC1
2266545FAA90BE7119E3AB68E116EF3814521FEBD30724A1A3BE3217367D4221C1A6 2260B4649631134034DB9FF76E0B19799396A232809A5BE397B63B528A0E860D38AD
22673A042C0475116EC08951E0D413148A91B123166C569E22BCA891EBF87D6A2F5D 2261A90BF0D4246F012E19CEABC74F21E2BD46FACF96D5F033B6023A98DA51653D59
2268C1E36AE701F0F5D78E7428AA902F84EE66A142D8B39A5F7EA6A85E1A000DD273 2262C306875AA02EDC3DB78060D72B0A00596BE36367A1681ECFEEFA447DB8DE6879
226986A48E2E0A836679744003B9825DC3F511512954C01A877F540C02B775B2D692 226318962C974B55038A8F67AA553ECD27C6C72D46CEADA75D68D7DACB40B063F9F7
2270174EA54BF7C32F0DC93CC6E85EE8AAD0CD80B0D634B60B49DC1D0E55334C3470 2264464401B0AE4CC61A1F55A7E40FBD0FEB890DD2FE36D9641E40BD2F6D20C54353
227154907964F269EA9840FC8F3D8A72DCD773ECC2EA26CD64D42693FCD2AD8EEDA5 2265C3B282E7F46D61EF3A41F8BCB31FA38EE2B99B671841DA2FAD644C11AE20B6F8
22727814FB8BF232E547D6783DAA15880758BC4ECD8C339C5C9E7A5847605C01B417 2266C7D5D99806643412273F874273FBD04C65F048D76086EA1156F07A47CA0FE349
22735B378E0F1263B72D03AD49EE0D2893ECAD56F672B33E1652A664E87C4771B4CB 2267391E906747C833320E84E18781C61DEA8FACB8D9DDF08D29E5983F2E1FDC8C72
2274D3555B66D9E8B85B118881EAE0F13DD82A2F7F7A74CF71D23A7D26A6FA19C2BB 2268C200B63415529A45978010EA5C150BA9D70CF4F5799DA551A1CF7041A17DD5F4
227536D0B4E38237CA9D6268C55D9CCA670CF3AC1B045B30E500EB34D7406EA82B0E 2269153A868BD4B81A25551784E2A6EE42996F4D6CFAED97725C940C0FE9FFE0AA31
22760E876235556505BFAFDE2808C85978A2D04F50BF7FDF608670AA846A4434E80B 2270FB2A32941E6C555FCF33B4B8E802C40B423599C8E88C6DF1AEEC28938FCF3BAB
22777960737EB91FAA6BA784E34FC21AE584696A87250DE7D95B315D57FF73E15FB4 2271B6846C20D7EC7278A909073BD15BA75F470F82237BBFF6E7287A3771378A944C
2278D124CBFFFD7A44764687B44F0470162CBCBD649F92C1FB7038D0A298CF33FECF 22728CA6215F95437DCC9EA67F7A8721FA63614CA7BC5054EF5E5716FD4B7DEFDE48
22798F9554259983FE727592E644CCD32C3D821C1994D924813AA9AB08BC233BE5B4 2273FA8D2AF9F0B3BD92BF5F48A0DCC8406B0A940FBB5D35B56A49B7D4605A00F82D
228050DC095DAC33090D55B8B7D7C0D2261D45A923366E0595F57AA2B7D7D8DC22CE 2274495AEBF2B413F19FE37AECED8060D5C32E9FE0EE9C0FB14045AE87D04B92A734
2281F7557E20252030E3C6D3980EE05700A59B8D620CF89083D6FF2E3E78E118B144 22750A35DBFFE12CB1ED64C924E4ADEE0AD635BFC70CCEC92FB07B1DE13E3D14B09C
2282C92E2A6CDF33613CB1F74B59A6EA27E60C0156E287D05C5FA5EFCE3D4E864C39 227694590CE5F2F4B7D0C697F6F30E217ED09B35917714712B1182D687302770C205
2283CD87D636EE736F32A091F019B8E22429F50DCCA8B563A128F52C4157019DDC9B 2277C3D17944AC1CC6AE2A023707E13DC1299256DB1211650F76A969D74F940CA580
2284415524A99224287848685E353D92BE01BA661CE857F2C6172C81F5674044AE90 22786B499C40B76BA77D12688A8CF75E90A19AA3E368D6C99FCF8163450CAD6EA028
22855ECDA6944F31B45F77434DCB074658847C1AE424418E9E05611D016416891078 227984D4E9A5279013354D9C8D7FB8BCF3FD31433C822F0A412A3115B0E5E71079F6
22862225718C42E8CCC730F90CACC6B97116BF183800AF69F01922856FF6B9B280C5 228060C6BBE10380872D5D75F1BE9BB6DE755103E4B376458B97E0B50BF8932940AE
2287110DA3BA79447ABFE1B341AF90FDD05DC5FEBE1F2E7130A3D50AC68502C433DB 2281F95D4002737966FF15A0B67C5B717AFF0E95B9F8F3498D7CCB538FF133A977EF
2288534ADD5562E501CE0A212E855F1AC4FC1FF8D5379C9701F8DB718194CD20462D 22823471FCE3B83D5395F282D1982B2A6CDBD1C0DE44B3CA286E7E3F3E82B3561635
2289155A814F7AE8F20892C88B0587EB52455276439C728B8AFB4ED2A51F1DB7F9B9 22836E462A4ABFAE8DE9331FEABA97AE7E7C93F0A30F4E3FDF4DFD66E5CBE234ADD8
2290D35663433BE337AD1714E0B1488B062CF24D1763CB9AEE6E6C393ADDE0EDDD91 22840AEFB354B80ADBDC128EAE328AF10FFDEF587B462A88F62F463D640C4F8898D4
229117EE00E06C4935F05F29CB4461DF3CEDEDCDC6434823CAD2B26FD43C24F6885B 22851AAECA8EAE36639F6CC17B68BC1F1202F462BF7CB20CBD42FF2DEC420B4A7001
229237D6A22717992E0807E48E7876DA766F1B1CF264C70D0A3369B1F88D8E22023E 228690A1F1499D49731DBC0C5DD4AADC4C32A7349219F25150117D733A0D51A7E51D
2293D1E58747EBE1AE3C32120E87FE87B76F7CED4053270A7E89AEDED4B6F24A5E8D 228788712AF2AC91D73A906CCFFAEA98C68DB967D96DA69E38A0406F2DD149B3E771
22944F0801E430D2104D6700AC07A211CBBC57A43AB300C631564453D826C5E97BDC 228868D65EF65F99A4AD33BB5B15672E57433BC84C9023BA77997E82473C557D18A9
22953ED112A498A8398051492FE1B7A227AC36B18BDE5124A6650DFCE5846717DC0C 228960F7064934EDDA12E614186A092930690D2DF97E1955FA75CA3CA077EC39A561
22962C388CC394AB0C398CEA7FC7FD2D7CA461D238AA6A0E22E1E507220225057BF5 229027FC8DCBF13DC183774AF61C2B1B65E5E4
2297C76EE2E2B58C865B229EF8C8A89F18355678937A3720C6A4C150CA3C124CEA6B
2298AA1862B18FA26E7F9E082D5F620B17FE5E5E1F85303D1719AAE1C3CA1B9AD700
229905DBE2CBB952C6E97BFC43FE8AE9EEFD5B6CDF601C65761526A0AEEAB5CA3A91
2300FF7C201BCE050030628D6933DDE2F17C7A9D3D8C0E985004A1E21EEBDF785E8E
230168EA0444A0C05DEEE046BB18A79C7ECFCBF5702B834459B78787D2A3513A0A39
23026CA03C25E2623919FA2B
23030000000000000000000000000000000000000000000000000000000000000000 22910000000000000000000000000000000000000000000000000000000000000000
23040000000000000000000000000000000000000000000000000000000000000000 22920000000000000000000000000000000000000000000000000000000000000000
23050000000000000000000000000000000000000000000000000000000000000000 22930000000000000000000000000000000000000000000000000000000000000000
@@ -2314,8 +2302,8 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
2314@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1 2302@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
231549.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34 230349.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
231630 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44 230430 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
23171[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 1[30 2[30 1[30 23051[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30
231830 30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }42 230630 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
231949.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36 230749.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
23202[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14 23082[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
232166.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45 230966.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
@@ -2338,10 +2326,10 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
2338rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59 2326rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
233920 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72 232720 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72
234053 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54 232853 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54
234151 50 53 6[20 1[35 4[35 35 35 1[35 20 24 20 55 35 27 232951 50 53 6[20 6[35 35 35 1[35 20 24 20 55 35 27 27 20
234227 20 2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont } 23302[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }70
234371 66.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 233166.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
234461 1[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53 23321[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
234553 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552 233353 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
2346/CMBX10 rf end 2334/CMBX10 rf end
2347%%EndProlog 2335%%EndProlog
@@ -2354,7 +2342,7 @@ TeXDict begin
2354%%Page: 1 1 2342%%Page: 1 1
2355TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45 2343TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
2356b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2344b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2357(3.18\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y 2345(3.21\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
2358Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931 2346Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
2359102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h 2347102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
2360(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h 2348(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
@@ -2391,10 +2379,10 @@ b(curren)n(t)f(heading)h(do)n(wn)f(one)g(lev)n(el)233
2391b Fg(M-RIGHT)-150 2768 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g 2379b Fg(M-RIGHT)-150 2768 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g
2392(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2838 y Fi(demote)25 2380(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2838 y Fi(demote)25
2393b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248 2381b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248
2394b Fg(M-S-RIGHT)-150 2935 y Fi(mo)n(v)n(e)24 b(subtree)h(up)932 2382b Fg(M-S-RIGHT)-150 2935 y Fi(mo)n(v)n(e)24 b(subtree/list)h(item)e(up)
2395b Fg(M-S-UP)-150 3004 y Fi(mo)n(v)n(e)24 b(subtree)h(do)n(wn)848 2383642 b Fg(M-S-UP)-150 3004 y Fi(mo)n(v)n(e)24 b(subtree/list)h(item)e
2396b Fg(M-S-DOWN)-150 3074 y Fi(kill)23 b(subtree)1097 b 2384(do)n(wn)558 b Fg(M-S-DOWN)-150 3074 y Fi(kill)23 b(subtree)1097
2397Fg(C-c)36 b(C-x)g(C-w)-150 3144 y Fi(cop)n(y)25 b(subtree)1052 2385b Fg(C-c)36 b(C-x)g(C-w)-150 3144 y Fi(cop)n(y)25 b(subtree)1052
2398b Fg(C-c)36 b(C-x)g(M-w)-150 3213 y Fi(y)n(ank)25 b(subtree)1046 2386b Fg(C-c)36 b(C-x)g(M-w)-150 3213 y Fi(y)n(ank)25 b(subtree)1046
2399b Fg(C-c)36 b(C-x)g(C-y)-150 3310 y Fi(arc)n(hiv)n(e)24 2387b Fg(C-c)36 b(C-x)g(C-y)-150 3310 y Fi(arc)n(hiv)n(e)24
2400b(subtree)976 b Fg(C-c)36 b($)-150 3380 y Fi(T)-6 b(o)24 2388b(subtree)976 b Fg(C-c)36 b($)-150 3380 y Fi(T)-6 b(o)24
@@ -2408,7 +2396,7 @@ g(regexp)92 b Fg(C-c)36 b(/)-150 3851 y Fi(view)24 b(TODO's)e(in)i
2408b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b 2396b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b
2409Fg(C-c)36 b(C-w)-150 3991 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n 2397Fg(C-c)36 b(C-w)-150 3991 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n
2410(t)h(org)g(\014le)367 b Fg(C-c)36 b(C-r)-150 4060 y Fi(agenda)25 2398(t)h(org)g(\014le)367 b Fg(C-c)36 b(C-r)-150 4060 y Fi(agenda)25
2411b(for)e(the)i(w)n(eek)823 b Fg(C-c)36 b(a)p Fi(1)-150 2399b(for)e(the)i(w)n(eek)823 b Fg(C-c)36 b(a)p Fi(2)-150
24124130 y(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36 24004130 y(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2413b(C-o)2046 -364 y Fh(TODO)i(Items)2046 -215 y Fi(rotate)25 2401b(C-o)2046 -364 y Fh(TODO)i(Items)2046 -215 y Fi(rotate)25
2414b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354 b Fg(C-c)36 2402b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354 b Fg(C-c)36
@@ -2484,82 +2472,82 @@ y Fg(<vm:folder#id>)950 b Fi(VM)23 b(message)2046 4073
2484y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105 2472y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105
2485b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b 2473b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b
2486Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242 2474Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242
2487-364 y Fh(T)-10 b(ables)4242 -265 y Fd(Creating)25 b(a)i(table)4242 2475-364 y Fh(T)-10 b(ables)4242 -263 y Fd(Creating)25 b(a)i(table)4242
2488-181 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330 2476-178 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330
2489b Fg(M-x)36 b(org-table-create)4242 -111 y Fi(...)30 2477b Fg(M-x)36 b(org-table-create)4242 -108 y Fi(...)30
2490b(or)23 b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39 2478b(or)23 b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39
2491b(RET)d(|-)g(TAB)4242 -41 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table) 2479b(RET)d(|-)g(TAB)4242 -39 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
2492741 b Fg(C-c)36 b(C-c)4242 28 y Fi(...)30 b(separator)24 2480741 b Fg(C-c)36 b(C-c)4242 31 y Fi(...)30 b(separator)24
2493b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242 2481b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242
2494113 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242 2482116 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242
2495197 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h 2483201 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
2496(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 266 2484(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 270
2497y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n 2485y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
2498(e)h(other)g(functionalit)n(y)-6 b(.)4242 351 y Fd(Re-aligning)25 2486(e)h(other)g(functionalit)n(y)-6 b(.)4242 355 y Fd(Re-aligning)25
2499b(and)i(\014eld)h(motion)4242 435 y Fi(re-align)22 b(the)i(table)g 2487b(and)i(\014eld)h(motion)4242 440 y Fi(re-align)22 b(the)i(table)g
2500(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242 2488(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242
2501505 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld) 2489510 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
2502311 b Fg(TAB)4242 574 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762 2490311 b Fg(TAB)4242 579 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
2503b Fg(S-TAB)4242 644 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f 2491b Fg(S-TAB)4242 649 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
2504(next)h(ro)n(w)328 b Fg(RET)4242 728 y Fd(Ro)n(w)26 b(and)h(column)g 2492(next)h(ro)n(w)328 b Fg(RET)4242 734 y Fd(Ro)n(w)26 b(and)h(column)g
2505(editing)4242 812 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left) 2493(editing)4242 819 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
2506544 b Fg(M-LEFT)4242 882 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f 2494544 b Fg(M-LEFT)4242 888 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2507(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 952 y Fi(kill)23 2495(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 958 y Fi(kill)23
2508b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1022 2496b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1028
2509y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition) 2497y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
2510104 b Fg(M-S-RIGHT)4242 1106 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f 2498104 b Fg(M-S-RIGHT)4242 1112 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2511(ro)n(w)f(up)678 b Fg(M-UP)4242 1176 y Fi(mo)n(v)n(e)24 2499(ro)n(w)f(up)678 b Fg(M-UP)4242 1182 y Fi(mo)n(v)n(e)24
2512b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242 2500b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242
25131245 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h 25011252 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
2514(line)291 b Fg(M-S-UP)4242 1315 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o) 2502(line)291 b Fg(M-S-UP)4242 1322 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
2515n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242 2503n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242
25161399 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h 25041391 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h
2517(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1469 y 2505(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1461 y
2518Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n 2506Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n
2519(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1553 y Fd(Regions)4242 2507(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1531 y Fi(sort)24
25201637 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36 2508b(lines)f(in)g(region)867 b Fg(C-c)36 b(^)4242 1616 y
2521b(C-x)g(C-w)4242 1707 y Fi(cop)n(y)25 b(rectangular)f(region)715 2509Fd(Regions)4242 1700 y Fi(cut)25 b(rectangular)f(region)758
2522b Fg(C-c)36 b(C-x)g(M-w)4242 1777 y Fi(paste)25 b(rectangular)f(region) 2510b Fg(C-c)36 b(C-x)g(C-w)4242 1770 y Fi(cop)n(y)25 b(rectangular)f
2523695 b Fg(C-c)36 b(C-x)g(C-y)4242 1847 y Fi(\014ll)23 2511(region)715 b Fg(C-c)36 b(C-x)g(M-w)4242 1840 y Fi(paste)25
2524b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36 2512b(rectangular)f(region)695 b Fg(C-c)36 b(C-x)g(C-y)4242
2525b(C-q)4242 1931 y Fd(Calculations)4242 2015 y Fi(Except)31 25131910 y Fi(\014ll)23 b(paragraph)h(across)g(selected)h(cells)399
2526b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242 2514b Fg(C-c)36 b(C-q)4242 1994 y Fd(Calculations)4242 2079
25272085 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2169 2515y Fi(These)24 b(need)h(the)f(Emacs)g(calc)g(pac)n(k)l(age)i(installed.)
2528y(set)e(and)g(ev)l(al)g(column)g(form)n(ula)567 b Fg(C-c)36 25164242 2164 y(set)e(and)g(ev)l(al)g(column)g(form)n(ula)567
2529b(=)4242 2239 y Fi(set)24 b(and)g(ev)l(al)g(named-\014eld)h(form)n(ula) 2517b Fg(C-c)36 b(=)4242 2234 y Fi(set)24 b(and)g(ev)l(al)g(named-\014eld)h
2530433 b Fg(C-u)36 b(C-c)g(=)4242 2308 y Fi(edit)24 b(form)n(ulas)f(in)g 2518(form)n(ula)433 b Fg(C-u)36 b(C-c)g(=)4242 2303 y Fi(edit)24
2531(separate)i(bu\013er)473 b Fg(C-c)36 b(')4242 2378 y 2519b(form)n(ulas)f(in)g(separate)i(bu\013er)473 b Fg(C-c)36
2532Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96 2520b(')4242 2373 y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f
2533b Fg(C-c)36 b(*)4242 2448 y Fi(re-apply)23 b(all)g(stored)i(equations)g 2521(curren)n(t)g(line)96 b Fg(C-c)36 b(*)4242 2443 y Fi(re-apply)23
2534(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242 2522b(all)g(stored)i(equations)g(to)f(en)n(tire)g(table)101
25352532 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28 2523b Fg(C-u)36 b(C-c)g(*)4242 2527 y(TAB)p Fi(,)30 b Fg(RET)f
2536b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242 2524Fi(and)f Fg(C-c)37 b(C-c)28 b Fi(trigger)h(automatic)g(recalculation)h
25372602 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242 2525(in)d(lines)4242 2597 y(starting)d(with:)31 b Fg(|)36
25382686 y(rotate)25 b(calculation)g(mark)e(through)i(#)e(*)h(!)31 2526b(#)f(|)p Fi(.)4242 2682 y(rotate)25 b(calculation)g(mark)e(through)i
2539b(^)p 5487 2686 22 4 v 49 w($)115 b Fg(C-#)4242 2770 2527(#)e(*)h(!)31 b(^)p 5487 2682 22 4 v 49 w($)115 b Fg(C-#)4242
2540y Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)354 25282767 y Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)
2541b Fg(C-c)36 b(?)4242 2840 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren) 2529354 b Fg(C-c)36 b(?)4242 2836 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f
2542n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242 2924 2530(curren)n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242
2543y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b 25312921 y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625
2544Fg(S-RET)5857 2900 y Ff(4)4242 3008 y Fi(A)25 b(form)n(ula)f(can)i 2532b Fg(S-RET)5857 2897 y Ff(4)4242 3005 y Fi(A)25 b(form)n(ula)f(can)i
2545(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)f(in)n(to)h(a)f 2533(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)f(in)n(to)h(a)f
2546(\014eld)g(and)h(will)4242 3078 y(executed)31 b(b)n(y)e 2534(\014eld)g(and)h(will)4242 3075 y(executed)31 b(b)n(y)e
2547Fg(TAB)p Fi(,)h Fg(RET)g Fi(and)f Fg(C-c)36 b(C-c)p Fi(.)47 2535Fg(TAB)p Fi(,)h Fg(RET)g Fi(and)f Fg(C-c)36 b(C-c)p Fi(.)47
2548b(A)28 b(leading)h Fg(=)g Fi(in)n(tro)r(duces)h(a)4242 2536b(A)28 b(leading)h Fg(=)g Fi(in)n(tro)r(duces)h(a)4242
25493148 y(column)24 b(form)n(ula,)e Fg(:=)j Fi(a)e(named-\014eld)i(form)n 25373145 y(column)24 b(form)n(ula,)e Fg(:=)j Fi(a)e(named-\014eld)i(form)n
2550(ula.)4242 3232 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522 2538(ula.)4242 3230 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522
2551b Fg(=$1+$2)4242 3301 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r 2539b Fg(=$1+$2)4242 3299 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r
2552(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3371 y Fi(...)30 2540(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3369 y Fi(...)30
2553b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352 2541b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352
2554b Fg(=$1/$c/$cm)4242 3441 y Fi(sum)23 b(from)g(3rd)h(hline)f(ab)r(o)n 2542b Fg(=$1/$c/$cm)4242 3439 y Fi(sum)23 b(from)g(3rd)h(hline)f(ab)r(o)n
2555(v)n(e)i(to)f(here)411 b Fg(:=vsum\(&III\))4242 3511 2543(v)n(e)i(to)f(here)411 b Fg(:=vsum\(&III\))4242 3508
2556y Fi(apply)24 b(curren)n(t)g(column)g(form)n(ula)518 2544y Fi(apply)24 b(curren)n(t)g(column)g(form)n(ula)518
2557b Fg(=)4242 3595 y Fd(Miscellaneous)4242 3679 y Fi(toggle)25 2545b Fg(=)4242 3593 y Fd(Miscellaneous)4242 3678 y Fi(toggle)25
2558b(visibilit)n(y)d(of)i(v)n(ertical)g(lines)474 b Fg(C-c)36 2546b(visibilit)n(y)d(of)i(v)n(ertical)g(lines)474 b Fg(C-c)36
2559b(|)4242 3749 y Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370 2547b(|)4242 3748 y Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370
2560b Fg(M-x)36 b(org-table-export)4242 3819 y Fi(imp)r(ort)23 2548b Fg(M-x)36 b(org-table-export)4242 3817 y Fi(imp)r(ort)23
2561b(tab-separated)j(\014le)447 b Fg(M-x)36 b(org-table-import)4242 2549b(tab-separated)j(\014le)447 b Fg(M-x)36 b(org-table-import)4242
25623903 y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i 25503902 y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
2563Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g 2551Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g
2564Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057 2552Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057
2565y Fi(recognize)25 b(existing)f(table.el)g(table)474 b 2553y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
@@ -2569,65 +2557,67 @@ end
2569%%Page: 2 2 2557%%Page: 2 2
2570TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45 2558TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
2571b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2559b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2572(3.18\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150 2560(3.21\))-150 -46 y Fh(Timeline)37 b(and)g(Agenda)-150
2573120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458 2561101 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
2574b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793 2562b Fg(C-c)36 b(C-r)-150 170 y Fi(...)30 b(include)24 b(past)h(dates)793
2575b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g 2563b Fg(C-u)36 b(C-c)g(C-r)-150 267 y Fi(add/mo)n(v)n(e)25
2576(to)g(y)n(our)g(agenda)483 b Fg(C-c)36 b([)-150 358 y 2564b(curren)n(t)f(\014le)g(to)g(fron)n(t)g(of)f(agenda)197
2577Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g(from)f(y)n(our)g(agenda)299 2565b Fg(C-c)36 b([)-150 336 y Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g
2578b Fg(C-c)36 b(])-150 438 y Fi(compile)24 b(agenda)h(for)e(the)h(curren) 2566(from)f(y)n(our)g(agenda)299 b Fg(C-c)36 b(])-150 406
2579n(t)g(w)n(eek)320 b Fg(C-c)36 b(a)1466 415 y Ff(2)-150 2567y Fi(cycle)24 b(through)h(agenda)g(\014le)f(list)551
2580508 y Fi(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36 2568b Fg(C-,)-150 487 y Fi(compile)24 b(agenda)h(for)e(the)h(curren)n(t)g
2581b(C-o)-150 641 y Fi(T)-6 b(o)24 b(set)g(category)h(for)e(curren)n(t)h 2569(w)n(eek)320 b Fg(C-c)36 b(a)1466 463 y Ff(2)-150 556
2582(\014le,)g(add)g(line)1082 617 y Ff(3)1119 641 y Fi(:)-150 2570y Fi(agenda)25 b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36
2583715 y Fg(#+CATEGORY:)38 b(MyCateg)-150 814 y Fd(Commands)26 2571b(C-o)-150 687 y Fi(T)-6 b(o)24 b(set)g(category)h(for)e(curren)n(t)h
2572(\014le,)g(add)g(line)1082 663 y Ff(3)1119 687 y Fi(:)-150
2573759 y Fg(#+CATEGORY:)38 b(MyCateg)-150 856 y Fd(Commands)26
2584b(a)n(v)-5 b(ailable)25 b(in)i(an)g(agenda)g(bu\013er)-150 2574b(a)n(v)-5 b(ailable)25 b(in)i(an)g(agenda)g(bu\013er)-150
2585912 y Fi(The)g(agenda)h(bu\013er)f(is)f(electric:)38 2575952 y Fi(The)g(agenda)h(bu\013er)f(is)f(electric:)38
2586b(single)26 b(k)n(ey)i(presses)e(execute)j(com-)-150 2576b(single)26 b(k)n(ey)i(presses)e(execute)j(com-)-150
2587982 y(mands.)-150 1080 y Fd(View)e(org)f(\014le)-150 25771022 y(mands.)-150 1118 y Fd(View)e(org)f(\014le)-150
25881178 y Fi(sho)n(w)e(original)f(lo)r(cation)h(of)g(item)524 25781214 y Fi(sho)n(w)e(original)f(lo)r(cation)h(of)g(item)524
2589b Fg(SPC)-150 1248 y Fi(...)30 b(also)24 b(a)n(v)l(ailable)g(with)781 2579b Fg(SPC)-150 1284 y Fi(...)30 b(also)24 b(a)n(v)l(ailable)g(with)781
2590b Fg(mouse-3)-150 1318 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)n(w) 2580b Fg(mouse-3)-150 1353 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)n(w)
2591626 b Fg(l)-150 1388 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g 2581626 b Fg(l)-150 1423 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g
2592(other)g(windo)n(w)260 b Fg(TAB)-150 1457 y Fi(...)30 2582(other)g(windo)n(w)260 b Fg(TAB)-150 1493 y Fi(...)30
2593b(also)24 b(a)n(v)l(ailable)g(with)781 b Fg(mouse-2)-150 2583b(also)24 b(a)n(v)l(ailable)g(with)781 b Fg(mouse-2)-150
25941527 y Fi(goto)25 b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n 25841563 y Fi(goto)25 b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n
2595(ws)91 b Fg(RET)-150 1597 y Fi(toggle)25 b(follo)n(w-mo)r(de)861 2585(ws)91 b Fg(RET)-150 1632 y Fi(toggle)25 b(follo)n(w-mo)r(de)861
2596b Fg(f)-150 1695 y Fd(Change)27 b(displa)n(y)-150 1794 2586b Fg(f)-150 1729 y Fd(Change)27 b(displa)n(y)-150 1825
2597y Fi(delete)e(other)f(windo)n(ws)791 b Fg(o)-150 1863 2587y Fi(delete)e(other)f(windo)n(ws)791 b Fg(o)-150 1895
2598y Fi(switc)n(h)24 b(to)g(w)n(eekly)h(view)767 b Fg(w)-150 2588y Fi(switc)n(h)24 b(to)g(w)n(eekly)h(view)767 b Fg(w)-150
25991933 y Fi(switc)n(h)24 b(to)g(daily)g(view)822 b Fg(d)-150 25891964 y Fi(switc)n(h)24 b(to)g(daily)g(view)822 b Fg(d)-150
26002003 y Fi(toggle)25 b(inclusion)e(of)h(diary)f(en)n(tries)473 25902034 y Fi(toggle)25 b(inclusion)e(of)h(diary)f(en)n(tries)473
2601b Fg(D)-150 2072 y Fi(toggle)25 b(time)f(grid)f(for)g(daily)g(sc)n 2591b Fg(D)-150 2104 y Fi(toggle)25 b(time)f(grid)f(for)g(daily)g(sc)n
2602(hedule)388 b Fg(g)-150 2142 y Fi(refresh)23 b(agenda)i(bu\013er)f 2592(hedule)388 b Fg(g)-150 2174 y Fi(refresh)23 b(agenda)i(bu\013er)f
2603(with)g(an)n(y)g(c)n(hanges)239 b Fg(r)-150 2212 y Fi(displa)n(y)24 2593(with)g(an)n(y)g(c)n(hanges)239 b Fg(r)-150 2243 y Fi(displa)n(y)24
2604b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)-150 2594b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)-150
26052282 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238 25952313 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238
2606b(LEFT)-150 2351 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)-150 2596b(LEFT)-150 2383 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)-150
26072450 y Fd(Remote)27 b(editing)-150 2548 y Fi(digit)d(argumen)n(t)984 25972479 y Fd(Remote)27 b(editing)-150 2575 y Fi(digit)d(argumen)n(t)984
2608b Fg(0-9)-150 2646 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f 2598b Fg(0-9)-150 2671 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f
2609(item)333 b Fg(t)-150 2716 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t) 2599(item)333 b Fg(t)-150 2741 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t)
2610i(item)612 b Fg(p)-150 2798 y Fi(raise)23 b(priorit)n(y)g(of)g(curren)n 2600i(item)612 b Fg(p)-150 2823 y Fi(raise)23 b(priorit)n(y)g(of)g(curren)n
2611(t)i(item)557 b Fg(S-UP)1430 2775 y Ff(4)-150 2879 y 2601(t)i(item)557 b Fg(S-UP)1430 2800 y Ff(4)-150 2904 y
2612Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)g(item)538 2602Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n(t)g(item)538
2613b Fg(S-DOWN)1500 2855 y Ff(4)-150 2949 y Fi(displa)n(y)24 2603b Fg(S-DOWN)1500 2880 y Ff(4)-150 2974 y Fi(displa)n(y)24
2614b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h(item)189 2604b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h(item)189
2615b Fg(P)-150 3058 y Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h 2605b Fg(P)-150 3080 y Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h
2616(earlier)315 b Fg(S-LEFT)1500 3034 y Ff(4)-150 3138 y 2606(earlier)315 b Fg(S-LEFT)1500 3057 y Ff(4)-150 3161 y
2617Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h(later)367 2607Fi(c)n(hange)25 b(timestamp)g(to)f(one)g(da)n(y)h(later)367
2618b Fg(S-RIGHT)1535 3115 y Ff(4)-150 3208 y Fi(c)n(hange)25 2608b Fg(S-RIGHT)1535 3137 y Ff(4)-150 3231 y Fi(c)n(hange)25
2619b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)-150 3306 y 2609b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)-150 3327 y
2620Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b 2610Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b
2621Fg(i)-150 3405 y Fd(Calendar)26 b(commands)-150 3503 2611Fg(i)-150 3423 y Fd(Calendar)26 b(commands)-150 3519
2622y Fi(\014nd)e(agenda)h(cursor)f(date)g(in)g(calendar)350 2612y Fi(\014nd)e(agenda)h(cursor)f(date)g(in)g(calendar)350
2623b Fg(c)-150 3573 y Fi(compute)25 b(agenda)g(for)e(calendar)i(cursor)e 2613b Fg(c)-150 3589 y Fi(compute)25 b(agenda)g(for)e(calendar)i(cursor)e
2624(date)180 b Fg(c)-150 3642 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r 2614(date)180 b Fg(c)-150 3659 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r
2625(on)669 b Fg(M)-150 3712 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636 2615(on)669 b Fg(M)-150 3728 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636
2626b Fg(S)-150 3782 y Fi(sho)n(w)24 b(holida)n(ys)1014 b 2616b Fg(S)-150 3798 y Fi(sho)n(w)24 b(holida)n(ys)1014 b
2627Fg(H)-150 3852 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars) 2617Fg(H)-150 3868 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars)
2628478 b Fg(C)-150 3950 y Fd(Quit)27 b(and)g(Exit)-150 4048 2618478 b Fg(C)-150 3964 y Fd(Quit)27 b(and)g(Exit)-150 4060
2629y Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376 2619y Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376
2630b Fg(q)-150 4118 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i 2620b Fg(q)-150 4130 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i
2631(bu\013ers)258 b Fg(x)2046 -364 y Fh(Exp)s(orting)2046 2621(bu\013ers)258 b Fg(x)2046 -364 y Fh(Exp)s(orting)2046
2632-229 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f(extensions)i 2622-229 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f(extensions)i
2633Fc(.txt)k Fi(and)32 b Fc(.html)38 b Fi(in)31 b(the)2046 2623Fc(.txt)k Fi(and)32 b Fc(.html)38 b Fi(in)31 b(the)2046
@@ -2642,8 +2632,8 @@ b(arg)g(sets)g(n)n(b.)31 b(of)23 b(headline)i(lev)n(els,)e(e.g.)182
2642b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 306 y Fi(exp)r(ort)25 2632b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 306 y Fi(exp)r(ort)25
2643b(as)e(iCalendar)h(\014le)718 b Fg(C-c)36 b(C-x)g(i)2046 2633b(as)e(iCalendar)h(\014le)718 b Fg(C-c)36 b(C-x)g(i)2046
2644376 y Fi(exp)r(ort)25 b(all)e(agenda)i(\014les)e(as)h(iCalendar)f 2634376 y Fi(exp)r(ort)25 b(all)e(agenda)i(\014les)e(as)h(iCalendar)f
2645(\014les)212 b Fg(C-c)36 b(C-x)g(C-i)2046 445 y Fi(compine)24 2635(\014les)212 b Fg(C-c)36 b(C-x)g(C-i)2046 445 y Fi(com)n(bine)24
2646b(all)f(agenda)j(\014les)d(to)h(single)g(iCal)f(\014le)161 2636b(all)f(agenda)j(\014les)d(to)h(single)g(iCal)f(\014le)163
2647b Fg(C-c)36 b(C-x)g(C-c)2046 538 y Fi(insert)23 b(template)j(of)d(exp)r 2637b Fg(C-c)36 b(C-x)g(C-c)2046 538 y Fi(insert)23 b(template)j(of)d(exp)r
2648(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 632 y Fi(toggle)25 2638(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 632 y Fi(toggle)25
2649b(\014xed)f(width)g(for)f(en)n(try)h(or)g(region)295 2639b(\014xed)f(width)g(for)f(en)n(try)h(or)g(region)295
@@ -2760,7 +2750,7 @@ b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
2760Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838 2750Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
27613768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21 27513768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
2762b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826 2752b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
2763y(v3.18)h(for)h(Org-Mo)r(de)e(3.18,)i(2005)4912 3882 2753y(v3.21)h(for)h(Org-Mo)r(de)e(3.21,)i(2005)4912 3882
2764y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g 2754y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
2765(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242 2755(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
27664022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e 27564022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
index 96261a7fc2d..33bd637bab0 100644
--- a/etc/orgcard.tex
+++ b/etc/orgcard.tex
@@ -1,4 +1,4 @@
1% Reference Card for Org Mode 3.20 1% Reference Card for Org Mode 3.21
2% 2%
3%**start of header 3%**start of header
4\newcount\columnsperpage 4\newcount\columnsperpage
@@ -58,7 +58,7 @@
58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik 58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
59% for their many good ideas. 59% for their many good ideas.
60 60
61\def\orgversionnumber{3.20} 61\def\orgversionnumber{3.21}
62\def\year{2005} 62\def\year{2005}
63 63
64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill 64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
@@ -313,8 +313,8 @@ Put the following in your \kbd{~/.emacs}$^1$
313\key{promote current subtree up one level}{M-S-LEFT} 313\key{promote current subtree up one level}{M-S-LEFT}
314\key{demote current subtree down one level}{M-S-RIGHT} 314\key{demote current subtree down one level}{M-S-RIGHT}
315 315
316\key{move subtree up}{M-S-UP} 316\key{move subtree/list item up}{M-S-UP}
317\key{move subtree down}{M-S-DOWN} 317\key{move subtree/list item down}{M-S-DOWN}
318\key{kill subtree}{C-c C-x C-w} 318\key{kill subtree}{C-c C-x C-w}
319\key{copy subtree}{C-c C-x M-w} 319\key{copy subtree}{C-c C-x M-w}
320\key{yank subtree}{C-c C-x C-y} 320\key{yank subtree}{C-c C-x C-y}
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3a9e3f9c83d..00797a5140e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,465 @@
12005-12-01 Nick Roberts <nickrob@snap.net.nz>
2
3 * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-2 to gdb-mouse-until
4 in the margin also.
5 (gdb-breakpoints-mode-map): Use D instead of d for
6 gdb-delete-breakpoint.
7 (gdb-get-frame-number): Require a number to match on.
8 (gdb-threads-mode-map): Add follow-link binding.
9
102005-11-30 Jason Rumney <jasonr@gnu.org>
11
12 * isearch.el (isearch-mode-map): Avoid exiting search on
13 language-change event.
14
152005-11-30 Romain Francoise <romain@orebokech.com>
16
17 * speedbar.el (speedbar-default-position): New defcustom.
18 (speedbar-frame-reposition-smartly): Use it.
19
20 * dframe.el (dframe-reposition-frame-emacs): Fix position
21 computation for 'left location.
22 Update copyright year.
23
242005-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * help.el (help-map): Move initialization into declaration.
27
28 * emacs-lisp/autoload.el (make-autoload): Handle defgroup specially.
29
30 * help-fns.el (help-argument-name): Don't autoload.
31 It's useless and triggers a bug in cus-dep.el causing ldefs-boot
32 to be re-loaded when customizing the `help' group.
33
342005-11-30 John Paul Wallington <jpw@gnu.org>
35
36 * help-fns.el (describe-function-1): Fill arglist output.
37
382005-11-30 Kim F. Storm <storm@cua.dk>
39
40 * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
41 (cua--rectangle-post-command): Cleanup overlays and deactivate mark
42 after revert-buffer (or anything else which kills all local variables).
43
44 * apropos.el (apropos-parse-pattern): Doc fix.
45 Set apropos-regexp directly, rather than expecting callers to do so.
46 (apropos-command, apropos, apropos-value, apropos-documentation):
47 Simplify calls to apropos-parse-pattern.
48
492005-11-29 Chong Yidong <cyd@stupidchicken.com>
50
51 * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
52 (hi-lock-face-phrase-buffer): Use hi-yellow face.
53 (hi-lock-write-interactive-patterns): Use comment-region.
54
55 * longlines.el (longlines-mode): Add mail-setup-hook.
56
57 * mail/mailheader.el, mail/sendmail.el: Revert 2005-11-17 changes.
58
59 * simple.el (sendmail-user-agent-compose, next-line):
60 Conditionally use hard-newline.
61
622005-11-29 Reiner Steib <Reiner.Steib@gmx.de>
63
64 * international/latexenc.el (latex-inputenc-coding-alist):
65 Reword doc string.
66
672005-11-29 Chong Yidong <cyd@stupidchicken.com>
68
69 * help.el (describe-key-briefly, describe-key): Recognize default
70 bindings.
71
722005-11-29 Romain Francoise <romain@orebokech.com>
73
74 * view.el (view-inhibit-help-message): New defcustom.
75 (view-mode-enter): Use it.
76
772005-11-29 Michael Kifer <kifer@cs.stonybrook.edu>
78
79 * ediff-wind (ediff-setup-control-frame, ediff-make-wide-display):
80 Preserve user position.
81
822005-11-28 Luc Teirlinck <teirllm@auburn.edu>
83
84 * font-lock.el: Throw error if facemenu is not loaded to prevent
85 accidental change of loading order in loadup.el. (Suggested by RMS.)
86
87 * loadup.el: Add comment explaining why facemenu must be loaded
88 before font-lock.
89
902005-11-28 Jay Belanger <belanger@truman.edu>
91
92 * calc/calc.el: Change global keybinding for calc-dispatch to "\C-x*".
93 (calc-dispatch-map): Add more keys for `calc-same-interface'.
94
95 * calc/calc-misc.el (calc-dispatch-help): Update docstring.
96
97 * calc/calc-embed.el (calc-do-embedded): Update help message.
98
99 * calc/calc-prog.el (calc-user-define-invokation): Update help message.
100
1012005-11-28 Stefan Monnier <monnier@iro.umontreal.ca>
102
103 * log-edit.el (log-edit-insert-cvs-rcstemplate): Ignore stderr.
104
105 * emacs-lisp/elp.el (elp-not-profilable): Replace interactive-p with
106 called-interactively-p.
107 (elp-profilable-p): Rename from elp-not-profilable-p.
108 Invert result and take into account macros and autoloaded functions.
109 (elp-instrument-function): Update call.
110 (elp-instrument-package): Update call. Add completion.
111 (elp-pack-number): Use match-string.
112 (elp-results-jump-to-definition-by-mouse): Merge into
113 elp-results-jump-to-definition and then remove.
114 (elp-output-insert-symname): Make help echo text single-line.
115
116 * replace.el (query-replace-map): Move initialization into declaration.
117 (occur-engine): Use with-current-buffer.
118 (occur-mode-goto-occurrence): Make it work for mouse-clicks as well.
119 (occur-mode-mouse-goto): Replace with an alias.
120
1212005-11-28 Juri Linkov <juri@jurta.org>
122
123 * simple.el (quoted-insert): Let-bind input-method-function to nil.
124
125 * term/w32-win.el: Bind [S-tab] to [backtab].
126
127 * info.el (Info-fontify-node): Set 2nd arg `noerror' of
128 `Info-find-file' to t.
129
130 * replace.el (occur-mode-mouse-goto): Pop, don't switch.
131 (occur-mode-goto-occurrence): Let-bind same-window-buffer-names
132 and same-window-regexps.
133 (occur-next-error): Don't move point for arg 0.
134
1352005-11-28 Chong Yidong <cyd@stupidchicken.com>
136
137 * replace.el (occur-mode-goto-occurrence): Pop, don't switch.
138
1392005-11-28 Stefan Monnier <monnier@iro.umontreal.ca>
140
141 * log-edit.el (log-edit-changelog-use-first): New var.
142 (log-edit-changelog-ours-p): Use it.
143 (log-edit-insert-changelog): Set it with new arg `use-first'.
144 (log-edit-insert-cvs-rcstemplate, log-edit-insert-filenames): New funs.
145 (log-edit-hook): Add them to the list of suggested options.
146
147 * textmodes/flyspell.el (flyspell-last-buffer): New var.
148 (flyspell-accept-buffer-local-defs): Use it to avoid doing silly
149 redundant work.
150 (flyspell-mode-on): Use add-hook for after-change-functions.
151 (flyspell-mode-off): Use remove-hook for after-change-functions.
152 (flyspell-changes): Make it buffer-local.
153 (flyspell-after-change-function): Make it non-interactive. Use push.
154 (flyspell-post-command-hook): Check input-pending-p while processing
155 the potentially long list of buffer changes.
156
1572005-11-28 L$,1 q(Brentey K,Aa(Broly <lorentey@elte.hu>
158
159 * buff-menu.el (list-buffers-noselect): Display the selected
160 frame's buffer list, not the global one.
161
1622005-11-28 Nick Roberts <nickrob@snap.net.nz>
163
164 * xt-mouse.el (xterm-mouse-event): Set last-input-event so
165 that (list last-input-event) works as in interactive spec.
166
1672005-11-27 Luc Teirlinck <teirllm@auburn.edu>
168
169 * loadup.el ("facemenu"): Load facemenu before font-lock, because
170 `facemenu-keymap' needs to be defined when font-lock is loaded.
171 Otherwise, `M-o M-o' is not bound to `font-lock-fontify-block'.
172
1732005-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
174
175 * completion.el: Remove useless leading * in defcustom docstrings.
176 (save-completions-file-name): Use ~/.emacs.d if available.
177 (completion-standard-syntax-table): Rename from
178 cmpl-standard-syntax-table and fold initialization into declaration,
179 thus removing cmpl-make-standard-completion-syntax-table.
180 (completion-lisp-syntax-table, completion-c-syntax-table)
181 (completion-fortran-syntax-table, completion-c-def-syntax-table): Idem.
182 (cmpl-saved-syntax, cmpl-saved-point): Remove.
183 (symbol-under-point, symbol-before-point)
184 (symbol-under-or-before-point, symbol-before-point-for-complete)
185 (add-completions-from-c-buffer): Use with-syntax-table.
186 (make-completion): Don't return a list of completion entries.
187 Update callers.
188 (cmpl-prefix-entry-head, cmpl-prefix-entry-tail): Use defalias.
189 (completion-initialize): Rename from initialize-completions.
190 (completion-find-file-hook): Rename from cmpl-find-file-hook.
191 (kill-emacs-save-completions): Collect stats here.
192 (save-completions-to-file, load-completions-from-file):
193 Use with-current-buffer.
194 (completion-def-wrapper): Rename from def-completion-wrapper. Make it
195 into a function. Move all calls to toplevel.
196 (completion-lisp-mode-hook): New fun.
197 (completion-c-mode-hook, completion-setup-fortran-mode):
198 Set the syntax-table here. Use local-set-key.
199 (completion-saved-bindings): New var.
200 (dynamic-completion-mode): Make it into a proper minor mode.
201 (load-completions-from-file): Remove unused var `num-uses'.
202
203 * emacs-lisp/cl-macs.el (defstruct): Don't define the default
204 constructor if it is explicitly overridden.
205
206 * complete.el (PC-completion-as-file-name-predicate):
207 Use minibuffer-completing-file-name.
208 (partial-completion-mode): Use find-file-not-found-functions.
209 (PC-lisp-complete-symbol): Use with-syntax-table.
210 (PC-look-for-include-file): Remove dead setq.
211 (PC-look-for-include-file, PC-expand-many-files, PC-do-completion)
212 (PC-complete): Use with-current-buffer.
213
214 * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): \ doesn't
215 escape single quotes.
216
2172005-11-27 Luc Teirlinck <teirllm@auburn.edu>
218
219 * dabbrev.el (dabbrev-completion): Simplify code, by getting rid
220 of `if' whose condition always returned nil. Doc fix.
221
222 * buff-menu.el (Buffer-menu-revert-function): Make the selected
223 window's buffer the current buffer around the call to
224 `list-buffers-noselect'. This is necessary to mark that buffer
225 with a `.' in the Buffer Menu when called from Lisp, for instance
226 by Auto Revert Mode.
227
2282005-11-28 Nick Roberts <nickrob@snap.net.nz>
229
230 * progmodes/gdb-ui.el (gdb-stopped): Detect child process when
231 attaching to it.
232 (gdb-pre-prompt): Make sure gdb-error is reset.
233
234 * progmodes/gud.el (gud-gdb-marker-filter): When GDB is invoked
235 with a child process, detect it.
236 (gud-speedbar-buttons): Match regexp more carefully.
237
2382005-11-27 Richard M. Stallman <rms@gnu.org>
239
240 * mouse.el (mouse-drag-move-window-bottom):
241 Use adjust-window-trailing-edge.
242
2432005-11-27 Luc Teirlinck <teirllm@auburn.edu>
244
245 * simple.el (blink-matching-open): Ignore
246 `blink-matching-paren-on-screen' if `show-paren-mode' is enabled.
247 (blink-matching-paren-on-screen): Update docstring.
248
249 * paren.el (show-paren-mode): No longer change
250 `blink-matching-paren-on-screen'.
251
2522005-11-27 John Paul Wallington <jpw@pobox.com>
253
254 * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select)
255 (gdb-threads-select, gdb-edit-register-value):
256 Use `posn-set-point' instead of `mouse-set-point' because the
257 latter is not fbound when configured without X.
258
2592005-11-27 Kim F. Storm <storm@cua.dk>
260
261 * emulation/cua-rect.el (cua--highlight-rectangle): Preserve
262 existing face when partially highlighting a TAB in a rectangle.
263
2642005-11-26 Kim F. Storm <storm@cua.dk>
265
266 * ido.el (ido-mode-map): Doc fix.
267 (ido-mode-common-map, ido-mode-file-map)
268 (ido-mode-file-dir-map, ido-mode-buffer-map): New keymaps.
269 (ido-define-mode-map): Rewrite. Select one of the new maps as
270 parent for ido-mode-map instead of building from scratch.
271 (ido-init-mode-maps): New defun to initialize new maps.
272 (ido-mode): Call it.
273 (ido-switch-buffer): Doc fix -- use \<ido-mode-buffer-map>.
274 (ido-find-file): Doc fix -- use \<ido-mode-file-map>.
275
2762005-11-26 John Paul Wallington <jpw@pobox.com>
277
278 * arc-mode.el (archive-extract): Use `posn-set-point' instead of
279 `mouse-set-point' because the latter is not fbound when configured
280 without X.
281
2822005-11-26 Thien-Thi Nguyen <ttn@gnu.org>
283
284 * files.el (file-relative-name): Doc fix.
285
2862005-11-26 Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
287
288 * progmodes/octave-inf.el (inferior-octave-startup): Force a
289 non-empty string for secondary prompt PS2.
290
2912005-11-25 Chong Yidong <cyd@stupidchicken.com>
292
293 * progmodes/compile.el (compilation-setup): Fix last change.
294
2952005-11-26 Nick Roberts <nickrob@snap.net.nz>
296
297 * progmodes/gdb-ui.el (gdb-info-breakpoints-custom)
298 (gdb-mouse-toggle-breakpoint-margin)
299 (gdb-mouse-toggle-breakpoint-fringe, gdb-threads-select):
300 Add gdb-server-prefix to keep out of command history.
301 (gdb-edit-register-value): New function.
302 (gdb-registers-mode-map): Bind mouse-2 and RET to it.
303 (gdb-info-registers-custom): Use above map.
304
3052005-11-25 Chong Yidong <cyd@stupidchicken.com>
306
307 * custom.el (enable-theme): Signal error if argument is not a
308 theme. Don't recalculate a face if it's not loaded yet.
309
310 * cus-face.el (custom-theme-set-faces): Don't change saved-face if
311 the `user' theme is in effect.
312
313 * info.el (Info-on-current-buffer): Record actual filename in
314 Info-current-file, instead of t, or a fake filename if a non-file
315 buffer. Make autoload.
316 (Info-find-node, Info-revert-find-node): No need to check for
317 Info-current-file nil.
318 (Info-set-mode-line, Info-up, Info-copy-current-node-name):
319 Info-current-file is now never `t'.
320 (Info-fontify-node): Many simplifications due to Info-current-file
321 always being valid. Use Info-find-file to find node filename.
322
3232005-11-25 David Kastrup <dak@gnu.org>
324
325 * longlines.el (longlines-wrap-line): Reorder wrapping to "insert
326 new character, then delete" in order to preserve markers.
327
3282005-11-25 David Ponce <david@dponce.com>
329
330 * recentf.el (recentf-arrange-by-rule): Handle a special
331 `auto-mode-alist'-like "strip suffix" rule.
332 (recentf-build-mode-rules): Handle second level auto-mode entries.
333
3342005-11-25 Michael Kifer <kifer@cs.stonybrook.edu>
335
336 * viper-keym.el (viper-ESC-key): Use different values in terminal and
337 window modes.
338
339 * viper.el (viper-emacs-state-mode-list): Delete mail-mode, add
340 jde-javadoc-checker-report-mode.
341
342 * ediff-wind (ediff-make-wide-display): Slight simplification.
343
344 * ediff.el (ediff-date): Change the date of last update.
345
3462005-11-24 Chong Yidong <cyd@stupidchicken.com>
347
348 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
349 Use define-minor-mode, and make it a local mode. Turn on font-lock.
350 (hi-lock-mode): New global minor mode.
351 (turn-on-hi-lock-if-enabled): New function.
352 (hi-lock-line-face-buffer, hi-lock-face-buffer, hi-lock-set-pattern):
353 Change arguments to regexp and face instead of a font-lock pattern.
354 Directly set face property, instead of refontifying.
355 (hi-lock-font-lock-hook): Check if font-lock is being turned on.
356 (hi-lock-find-patterns): Use line-number-at-pos.
357
358 (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new
359 arguments for hi-lock-set-pattern.
360 (hi-lock-unface-buffer, hi-lock-set-file-patterns): Call
361 font-lock-fontify-buffer.
362 (hi-lock-find-file-hook, hi-lock-current-line)
363 (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions.
364
365 (hi-lock-font-lock-hook): Turn off hi-lock when font lock is
366 turned off.
367
368 * progmodes/compile.el (compilation-setup): Don't fiddle with
369 font-lock-defaults.
370
3712005-11-25 Nick Roberts <nickrob@snap.net.nz>
372
373 * progmodes/gdb-ui.el (gdb-var-create-handler)
374 (gdb-var-list-children-handler): Find values for all variable
375 objects. gud-speedbar-buttons decides whether to display them.
376
3772005-11-24 Romain Francoise <romain@orebokech.com>
378
379 * info.el (Info-speedbar-fetch-file-nodes): Prefix temporary
380 buffer name with a space.
381
3822005-11-24 Carsten Dominik <dominik@science.uva.nl>
383
384 * textmodes/org.el: (org-export-plain-list-max-depth): Renamed from
385 `org-export-local-list-max-depth'. Change default value to 3.
386 (org-auto-renumber-ordered-lists)
387 (org-plain-list-ordered-item-terminator): New options.
388 (org-at-item-p, org-beginning-of-item, org-end-of-item)
389 (org-get-indentation, org-get-string-indentation)
390 (org-maybe-renumber-ordered-list, org-renumber-ordered-list): New
391 functions.
392 (org-move-item-down, org-move-item-up): New commands.
393 (org-export-as-html): New classes for CSS support. Bug fix in
394 regular expression detecting fixed-width regions. Respect
395 `org-local-list-ordered-item-terminator'.
396 (org-set-autofill-regexps, org-adaptive-fill-function): "1)" is
397 also a list item.
398 (org-metaup, org-metadown, org-shiftmetaup, org-shiftmetadown):
399 New item moving functions.
400
4012005-11-24 Juri Linkov <juri@jurta.org>
402
403 * isearch.el (isearch-repeat): With empty search ring set
404 `isearch-error' to the error string instead of signaling error
405 with the function `error'.
406
4072005-11-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
408
409 * term/mac-win.el: Make modifier `ctrl' an alias for `control'.
410
4112005-11-24 Nick Roberts <nickrob@snap.net.nz>
412
413 * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): New function
414 and variable.
415 (gdb-var-create-handler, gdb-var-list-children-handler):
416 Don't match on "char **...".
417 (gdb-var-update-handler): Find values for all variable objects.
418 (gdb-info-frames-custom): Identify frames by leading "#".
419
420 * progmodes/gud.el (gud-speedbar-menu-items): Add
421 gdb-speedbar-auto-raise as radio button.
422 (gud-speedbar-buttons): Raise speedbar if requested.
423 Don't match on "char **...".
424 (gud-speedbar-buttons): Add (pointer) value for non-leaves.
425 Make it editable.
426
4272005-11-23 Chong Yidong <cyd@stupidchicken.com>
428
429 * info.el (Info-fontify-node): Handle the case where
430 Info-current-file is t.
431
4322005-11-23 Stefan Monnier <monnier@iro.umontreal.ca>
433
434 * simple.el (blink-matching-open): Fix off-by-one in last change.
435
4362005-11-23 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
437
438 * term/mac-win.el: Don't change default directory.
439
4402005-11-22 Luc Teirlinck <teirllm@auburn.edu>
441
442 * cus-edit.el (Custom-reset-standard): Make it handle Custom group
443 buffers correctly. (It used to throw an error in such buffers.)
444 Make it ask for confirmation in group buffers and other Custom
445 buffers containing more than one customization item.
446
4472005-11-22 John Paul Wallington <jpw@gnu.org>
448
449 * net/goto-addr.el (goto-address-fontify): Put `follow-link'
450 property on mail and url overlays.
451 (goto-address-at-point): Use `posn-set-point' instead of
452 `mouse-set-point' because the latter is not fbound when configured
453 without X.
454
4552005-11-22 Lars Hansen <larsh@soem.dk>
456
457 * ls-lisp.el (ls-lisp-parse-symlink): Delete.
458 (ls-lisp-classify, ls-lisp-format): Delete call to
459 ls-lisp-parse-symlink.
460 (ls-lisp-handle-switches): Handle symlinks to directories as
461 directories when ls-lisp-dirs-first in non-nil.
462
12005-11-21 Luc Teirlinck <teirllm@auburn.edu> 4632005-11-21 Luc Teirlinck <teirllm@auburn.edu>
2 464
3 * startup.el (command-line): Make sure that loaddefs.el is handled 465 * startup.el (command-line): Make sure that loaddefs.el is handled
@@ -37,6 +499,12 @@
37 * faces.el: Revert 2005-11-17 change. :ignore-defface is now 499 * faces.el: Revert 2005-11-17 change. :ignore-defface is now
38 handled automagically. 500 handled automagically.
39 501
5022005-11-20 Andreas Schwab <schwab@suse.de>
503
504 * descr-text.el (describe-char): When copying overlays put them
505 over the full char description instead of just the first character
506 of it.
507
402005-11-20 Juri Linkov <juri@jurta.org> 5082005-11-20 Juri Linkov <juri@jurta.org>
41 509
42 * simple.el (what-cursor-position): 510 * simple.el (what-cursor-position):
diff --git a/lisp/apropos.el b/lisp/apropos.el
index 5eda7567ef0..4e5109c1efb 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -301,7 +301,9 @@ kind of objects to search."
301 301
302(defun apropos-parse-pattern (pattern) 302(defun apropos-parse-pattern (pattern)
303 "Rewrite a list of words to a regexp matching all permutations. 303 "Rewrite a list of words to a regexp matching all permutations.
304If PATTERN is a string, that means it is already a regexp." 304If PATTERN is a string, that means it is already a regexp.
305This updates variables `apropos-pattern', `apropos-pattern-quoted',
306`apropos-regexp', `apropos-words', and `apropos-all-words-regexp'."
305 (setq apropos-words nil 307 (setq apropos-words nil
306 apropos-all-words nil) 308 apropos-all-words nil)
307 (if (consp pattern) 309 (if (consp pattern)
@@ -325,11 +327,14 @@ If PATTERN is a string, that means it is already a regexp."
325 (setq syn (cdr syn)))) 327 (setq syn (cdr syn))))
326 (setq apropos-words (cons s apropos-words) 328 (setq apropos-words (cons s apropos-words)
327 apropos-all-words (cons a apropos-all-words)))) 329 apropos-all-words (cons a apropos-all-words))))
328 (setq apropos-all-words-regexp (apropos-words-to-regexp apropos-all-words ".+")) 330 (setq apropos-all-words-regexp
329 (apropos-words-to-regexp apropos-words ".*?")) 331 (apropos-words-to-regexp apropos-all-words ".+"))
332 (setq apropos-regexp
333 (apropos-words-to-regexp apropos-words ".*?")))
330 (setq apropos-pattern-quoted (regexp-quote pattern) 334 (setq apropos-pattern-quoted (regexp-quote pattern)
331 apropos-all-words-regexp pattern 335 apropos-all-words-regexp pattern
332 apropos-pattern pattern))) 336 apropos-pattern pattern
337 apropos-regexp pattern)))
333 338
334 339
335(defun apropos-calc-scores (str words) 340(defun apropos-calc-scores (str words)
@@ -442,7 +447,7 @@ while a list of strings is used as a word list."
442 (if (or current-prefix-arg apropos-do-all) 447 (if (or current-prefix-arg apropos-do-all)
443 "command or function" "command")) 448 "command or function" "command"))
444 current-prefix-arg)) 449 current-prefix-arg))
445 (setq apropos-regexp (apropos-parse-pattern pattern)) 450 (apropos-parse-pattern pattern)
446 (let ((message 451 (let ((message
447 (let ((standard-output (get-buffer-create "*Apropos*"))) 452 (let ((standard-output (get-buffer-create "*Apropos*")))
448 (print-help-return-message 'identity)))) 453 (print-help-return-message 'identity))))
@@ -508,7 +513,7 @@ show unbound symbols and key bindings, which is a little more
508time-consuming. Returns list of symbols and documentation found." 513time-consuming. Returns list of symbols and documentation found."
509 (interactive (list (apropos-read-pattern "symbol") 514 (interactive (list (apropos-read-pattern "symbol")
510 current-prefix-arg)) 515 current-prefix-arg))
511 (setq apropos-regexp (apropos-parse-pattern pattern)) 516 (apropos-parse-pattern pattern)
512 (apropos-symbols-internal 517 (apropos-symbols-internal
513 (apropos-internal apropos-regexp 518 (apropos-internal apropos-regexp
514 (and (not do-all) 519 (and (not do-all)
@@ -577,7 +582,7 @@ at the function and at the names and values of properties.
577Returns list of symbols and values found." 582Returns list of symbols and values found."
578 (interactive (list (apropos-read-pattern "value") 583 (interactive (list (apropos-read-pattern "value")
579 current-prefix-arg)) 584 current-prefix-arg))
580 (setq apropos-regexp (apropos-parse-pattern pattern)) 585 (apropos-parse-pattern pattern)
581 (or do-all (setq do-all apropos-do-all)) 586 (or do-all (setq do-all apropos-do-all))
582 (setq apropos-accumulator ()) 587 (setq apropos-accumulator ())
583 (let (f v p) 588 (let (f v p)
@@ -623,7 +628,7 @@ bindings.
623Returns list of symbols and documentation found." 628Returns list of symbols and documentation found."
624 (interactive (list (apropos-read-pattern "documentation") 629 (interactive (list (apropos-read-pattern "documentation")
625 current-prefix-arg)) 630 current-prefix-arg))
626 (setq apropos-regexp (apropos-parse-pattern pattern)) 631 (apropos-parse-pattern pattern)
627 (or do-all (setq do-all apropos-do-all)) 632 (or do-all (setq do-all apropos-do-all))
628 (setq apropos-accumulator () apropos-files-scanned ()) 633 (setq apropos-accumulator () apropos-files-scanned ())
629 (let ((standard-input (get-buffer-create " apropos-temp")) 634 (let ((standard-input (get-buffer-create " apropos-temp"))
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index ae5ff9a4dbc..c376070ea3b 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -895,7 +895,7 @@ using `make-temp-file', and the generated name is returned."
895(defun archive-extract (&optional other-window-p event) 895(defun archive-extract (&optional other-window-p event)
896 "In archive mode, extract this entry of the archive into its own buffer." 896 "In archive mode, extract this entry of the archive into its own buffer."
897 (interactive (list nil last-input-event)) 897 (interactive (list nil last-input-event))
898 (if event (mouse-set-point event)) 898 (if event (posn-set-point (event-end event)))
899 (let* ((view-p (eq other-window-p 'view)) 899 (let* ((view-p (eq other-window-p 'view))
900 (descr (archive-get-descr)) 900 (descr (archive-get-descr))
901 (ename (aref descr 0)) 901 (ename (aref descr 0))
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index e48aa9e34b4..818fc19a4fd 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -210,7 +210,12 @@ Letters do not insert themselves; instead, they are commands.
210 (prop (point-min)) 210 (prop (point-min))
211 ;; do not make undo records for the reversion. 211 ;; do not make undo records for the reversion.
212 (buffer-undo-list t)) 212 (buffer-undo-list t))
213 (list-buffers-noselect Buffer-menu-files-only) 213 ;; We can be called by Auto Revert Mode with the "*Buffer Menu*"
214 ;; temporarily the current buffer. Make sure that the
215 ;; interactively current buffer is correctly identified with a `.'
216 ;; by `list-buffers-noselect'.
217 (with-current-buffer (window-buffer)
218 (list-buffers-noselect Buffer-menu-files-only))
214 (if oline 219 (if oline
215 (while (setq prop (next-single-property-change prop 'buffer)) 220 (while (setq prop (next-single-property-change prop 'buffer))
216 (when (eq (get-text-property prop 'buffer) oline) 221 (when (eq (get-text-property prop 'buffer) oline)
@@ -717,7 +722,7 @@ For more information, see the function `buffer-menu'."
717 (if (memq c '(?\n ?\s)) c underline)) 722 (if (memq c '(?\n ?\s)) c underline))
718 header))))) 723 header)))))
719 ;; Collect info for every buffer we're interested in. 724 ;; Collect info for every buffer we're interested in.
720 (dolist (buffer (or buffer-list (buffer-list))) 725 (dolist (buffer (or buffer-list (buffer-list (selected-frame))))
721 (with-current-buffer buffer 726 (with-current-buffer buffer
722 (let ((name (buffer-name)) 727 (let ((name (buffer-name))
723 (file buffer-file-name)) 728 (file buffer-file-name))
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index 4127c0b33da..7878034694e 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -315,7 +315,7 @@
315 (or (eq calc-embedded-quiet t) 315 (or (eq calc-embedded-quiet t)
316 (message "Embedded Calc mode enabled; %s to return to normal" 316 (message "Embedded Calc mode enabled; %s to return to normal"
317 (if calc-embedded-quiet 317 (if calc-embedded-quiet
318 "Type `M-# x'" 318 "Type `C-x * x'"
319 "Give this command again"))))) 319 "Give this command again")))))
320 (scroll-down 0)) ; fix a bug which occurs when truncate-lines is changed. 320 (scroll-down 0)) ; fix a bug which occurs when truncate-lines is changed.
321 321
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index ba80f455b4f..ca8e8bbdbfe 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -33,7 +33,7 @@
33(require 'calc-macs) 33(require 'calc-macs)
34 34
35(defun calc-dispatch-help (arg) 35(defun calc-dispatch-help (arg)
36 "M-# is a prefix key; follow it with one of these letters: 36 "C-x* is a prefix key sequence; follow it with one of these letters:
37 37
38For turning Calc on and off: 38For turning Calc on and off:
39 C calc. Start the Calculator in a window at the bottom of the screen. 39 C calc. Start the Calculator in a window at the bottom of the screen.
@@ -73,8 +73,9 @@ Miscellaneous:
73 M read-kbd-macro. Read a region of keystroke names as a keyboard macro. 73 M read-kbd-macro. Read a region of keystroke names as a keyboard macro.
74 0 (zero) calc-reset. Reset Calc stack and modes to default state. 74 0 (zero) calc-reset. Reset Calc stack and modes to default state.
75 75
76Press twice (`M-# M-#' or `M-# #') to turn Calc on or off using the same 76Press `*' twice (`C-x * *') to turn Calc on or off using the same
77Calc user interface as before (either M-# C or M-# K; initially M-# C)." 77Calc user interface as before (either C-x * C or C-x * K; initially C-x * C).
78"
78 (interactive "P") 79 (interactive "P")
79 (calc-check-defines) 80 (calc-check-defines)
80 (if calc-dispatch-help 81 (if calc-dispatch-help
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index 2bbbbcceee5..8736d4375dd 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -667,7 +667,7 @@
667 (or last-kbd-macro 667 (or last-kbd-macro
668 (error "No keyboard macro defined")) 668 (error "No keyboard macro defined"))
669 (setq calc-invocation-macro last-kbd-macro) 669 (setq calc-invocation-macro last-kbd-macro)
670 (message "Use `M-# Z' to invoke this macro")) 670 (message "Use `C-x * Z' to invoke this macro"))
671 671
672(defun calc-user-define-edit () 672(defun calc-user-define-edit ()
673 (interactive) ; but no calc-wrapper! 673 (interactive) ; but no calc-wrapper!
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index bd161132ddf..fe55b7587f3 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -816,11 +816,6 @@ If nil, selections displayed but ignored.")
816;; Verify that Calc is running on the right kind of system. 816;; Verify that Calc is running on the right kind of system.
817(defvar calc-emacs-type-lucid (not (not (string-match "Lucid" emacs-version)))) 817(defvar calc-emacs-type-lucid (not (not (string-match "Lucid" emacs-version))))
818 818
819;; Set up the standard keystroke (M-#) to run the Calculator, if that key
820;; has not yet been bound to anything. For best results, the user should
821;; do this before Calc is even loaded, so that M-# can auto-load Calc.
822(or (global-key-binding "\e#") (global-set-key "\e#" 'calc-dispatch))
823
824;; Set up the autoloading linkage. 819;; Set up the autoloading linkage.
825(let ((name (and (fboundp 'calc-dispatch) 820(let ((name (and (fboundp 'calc-dispatch)
826 (eq (car-safe (symbol-function 'calc-dispatch)) 'autoload) 821 (eq (car-safe (symbol-function 'calc-dispatch)) 'autoload)
@@ -1046,14 +1041,20 @@ If nil, selections displayed but ignored.")
1046 ( ?x . calc-quit ) 1041 ( ?x . calc-quit )
1047 ( ?y . calc-copy-to-buffer ) 1042 ( ?y . calc-copy-to-buffer )
1048 ( ?z . calc-user-invocation ) 1043 ( ?z . calc-user-invocation )
1049 ( ?= . calc-embedded-update-formula )
1050 ( ?\' . calc-embedded-new-formula ) 1044 ( ?\' . calc-embedded-new-formula )
1051 ( ?\` . calc-embedded-edit ) 1045 ( ?\` . calc-embedded-edit )
1052 ( ?: . calc-grab-sum-down ) 1046 ( ?: . calc-grab-sum-down )
1053 ( ?_ . calc-grab-sum-across ) 1047 ( ?_ . calc-grab-sum-across )
1054 ( ?0 . calc-reset ) 1048 ( ?0 . calc-reset )
1049 ( ?? . calc-dispatch-help )
1055 ( ?# . calc-same-interface ) 1050 ( ?# . calc-same-interface )
1056 ( ?? . calc-dispatch-help ) )) 1051 ( ?& . calc-same-interface )
1052 ( ?\\ . calc-same-interface )
1053 ( ?= . calc-same-interface )
1054 ( ?* . calc-same-interface )
1055 ( ?/ . calc-same-interface )
1056 ( ?+ . calc-same-interface )
1057 ( ?- . calc-same-interface ) ))
1057 map)) 1058 map))
1058 1059
1059;;;; (Autoloads here) 1060;;;; (Autoloads here)
@@ -1095,7 +1096,7 @@ If nil, selections displayed but ignored.")
1095 report-calc-bug))) 1096 report-calc-bug)))
1096 1097
1097 1098
1098;;;###autoload (global-set-key "\e#" 'calc-dispatch) 1099;;;###autoload (define-key ctl-x-map "*" 'calc-dispatch)
1099 1100
1100;;;###autoload 1101;;;###autoload
1101(defun calc-dispatch (&optional arg) 1102(defun calc-dispatch (&optional arg)
@@ -3534,7 +3535,7 @@ Also looks for the equivalent TeX words, \\gets and \\evalto."
3534(defun calc-user-invocation () 3535(defun calc-user-invocation ()
3535 (interactive) 3536 (interactive)
3536 (unless calc-invocation-macro 3537 (unless calc-invocation-macro
3537 (error "Use `Z I' inside Calc to define a `M-# Z' keyboard macro")) 3538 (error "Use `Z I' inside Calc to define a `C-x * Z' keyboard macro"))
3538 (execute-kbd-macro calc-invocation-macro nil)) 3539 (execute-kbd-macro calc-invocation-macro nil))
3539 3540
3540;;; User-programmability. 3541;;; User-programmability.
diff --git a/lisp/complete.el b/lisp/complete.el
index 4a2ce48f152..f5ab178e1b3 100644
--- a/lisp/complete.el
+++ b/lisp/complete.el
@@ -216,9 +216,9 @@ the *Completions* buffer."
216 (PC-bindings partial-completion-mode) 216 (PC-bindings partial-completion-mode)
217 ;; Deal with include file feature... 217 ;; Deal with include file feature...
218 (cond ((not partial-completion-mode) 218 (cond ((not partial-completion-mode)
219 (remove-hook 'find-file-not-found-hooks 'PC-look-for-include-file)) 219 (remove-hook 'find-file-not-found-functions 'PC-look-for-include-file))
220 ((not PC-disable-includes) 220 ((not PC-disable-includes)
221 (add-hook 'find-file-not-found-hooks 'PC-look-for-include-file))) 221 (add-hook 'find-file-not-found-functions 'PC-look-for-include-file)))
222 ;; ... with some underhand redefining. 222 ;; ... with some underhand redefining.
223 (cond ((and (not partial-completion-mode) 223 (cond ((and (not partial-completion-mode)
224 (functionp PC-old-read-file-name-internal)) 224 (functionp PC-old-read-file-name-internal))
@@ -261,8 +261,7 @@ Word-delimiters for the purposes of Partial Completion are \"-\", \"_\",
261 ;; and this command is repeated, scroll that window. 261 ;; and this command is repeated, scroll that window.
262 (if (and window (window-buffer window) 262 (if (and window (window-buffer window)
263 (buffer-name (window-buffer window))) 263 (buffer-name (window-buffer window)))
264 (save-excursion 264 (with-current-buffer (window-buffer window)
265 (set-buffer (window-buffer window))
266 (if (pos-visible-in-window-p (point-max) window) 265 (if (pos-visible-in-window-p (point-max) window)
267 (set-window-start window (point-min) nil) 266 (set-window-start window (point-min) nil)
268 (scroll-other-window))) 267 (scroll-other-window)))
@@ -346,11 +345,8 @@ See `PC-complete' for details."
346(defvar PC-delims-list nil) 345(defvar PC-delims-list nil)
347 346
348(defvar PC-completion-as-file-name-predicate 347(defvar PC-completion-as-file-name-predicate
349 (function 348 (lambda () minibuffer-completing-file-name)
350 (lambda () 349 "A function testing whether a minibuffer completion now will work filename-style.
351 (memq minibuffer-completion-table
352 '(read-file-name-internal read-directory-name-internal))))
353 "A function testing whether a minibuffer completion now will work filename-style.
354The function takes no arguments, and typically looks at the value 350The function takes no arguments, and typically looks at the value
355of `minibuffer-completion-table' and the minibuffer contents.") 351of `minibuffer-completion-table' and the minibuffer contents.")
356 352
@@ -665,8 +661,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
665 (eq mode 'help)) 661 (eq mode 'help))
666 (with-output-to-temp-buffer "*Completions*" 662 (with-output-to-temp-buffer "*Completions*"
667 (display-completion-list (sort helpposs 'string-lessp)) 663 (display-completion-list (sort helpposs 'string-lessp))
668 (save-excursion 664 (with-current-buffer standard-output
669 (set-buffer standard-output)
670 ;; Record which part of the buffer we are completing 665 ;; Record which part of the buffer we are completing
671 ;; so that choosing a completion from the list 666 ;; so that choosing a completion from the list
672 ;; knows how much old text to replace. 667 ;; knows how much old text to replace.
@@ -732,16 +727,12 @@ Otherwise, all symbols with function definitions, values
732or properties are considered." 727or properties are considered."
733 (interactive) 728 (interactive)
734 (let* ((end (point)) 729 (let* ((end (point))
735 (buffer-syntax (syntax-table)) 730 (beg (save-excursion
736 (beg (unwind-protect 731 (with-syntax-table lisp-mode-syntax-table
737 (save-excursion 732 (backward-sexp 1)
738 (if lisp-mode-syntax-table 733 (while (= (char-syntax (following-char)) ?\')
739 (set-syntax-table lisp-mode-syntax-table)) 734 (forward-char 1))
740 (backward-sexp 1) 735 (point))))
741 (while (= (char-syntax (following-char)) ?\')
742 (forward-char 1))
743 (point))
744 (set-syntax-table buffer-syntax)))
745 (minibuffer-completion-table obarray) 736 (minibuffer-completion-table obarray)
746 (minibuffer-completion-predicate 737 (minibuffer-completion-predicate
747 (if (eq (char-after (1- beg)) ?\() 738 (if (eq (char-after (1- beg)) ?\()
@@ -767,12 +758,11 @@ or properties are considered."
767 (goto-char end) 758 (goto-char end)
768 (PC-do-completion nil beg end))) 759 (PC-do-completion nil beg end)))
769 760
770;;; Use the shell to do globbing. 761;; Use the shell to do globbing.
771;;; This could now use file-expand-wildcards instead. 762;; This could now use file-expand-wildcards instead.
772 763
773(defun PC-expand-many-files (name) 764(defun PC-expand-many-files (name)
774 (save-excursion 765 (with-current-buffer (generate-new-buffer " *Glob Output*")
775 (set-buffer (generate-new-buffer " *Glob Output*"))
776 (erase-buffer) 766 (erase-buffer)
777 (shell-command (concat "echo " name) t) 767 (shell-command (concat "echo " name) t)
778 (goto-char (point-min)) 768 (goto-char (point-min))
@@ -804,9 +794,9 @@ or properties are considered."
804 (setq files (cdr files))) 794 (setq files (cdr files)))
805 p)))) 795 p))))
806 796
807;;; Facilities for loading C header files. This is independent from the 797;; Facilities for loading C header files. This is independent from the
808;;; main completion code. See also the variable `PC-include-file-path' 798;; main completion code. See also the variable `PC-include-file-path'
809;;; at top of this file. 799;; at top of this file.
810 800
811(defun PC-look-for-include-file () 801(defun PC-look-for-include-file ()
812 (if (string-match "[\"<]\\([^\"<>]*\\)[\">]?$" (buffer-file-name)) 802 (if (string-match "[\"<]\\([^\"<>]*\\)[\">]?$" (buffer-file-name))
@@ -817,8 +807,7 @@ or properties are considered."
817 new-buf) 807 new-buf)
818 (kill-buffer (current-buffer)) 808 (kill-buffer (current-buffer))
819 (if (equal name "") 809 (if (equal name "")
820 (save-excursion 810 (with-current-buffer (car (buffer-list))
821 (set-buffer (car (buffer-list)))
822 (save-excursion 811 (save-excursion
823 (beginning-of-line) 812 (beginning-of-line)
824 (if (looking-at 813 (if (looking-at
@@ -855,8 +844,7 @@ or properties are considered."
855 (if path 844 (if path
856 (setq name (concat (file-name-as-directory (car path)) name)) 845 (setq name (concat (file-name-as-directory (car path)) name))
857 (error "No such include file: <%s>" name))) 846 (error "No such include file: <%s>" name)))
858 (let ((dir (save-excursion 847 (let ((dir (with-current-buffer (car (buffer-list))
859 (set-buffer (car (buffer-list)))
860 default-directory))) 848 default-directory)))
861 (if (file-exists-p (concat dir name)) 849 (if (file-exists-p (concat dir name))
862 (setq name (concat dir name)) 850 (setq name (concat dir name))
@@ -865,8 +853,7 @@ or properties are considered."
865 (if new-buf 853 (if new-buf
866 ;; no need to verify last-modified time for this! 854 ;; no need to verify last-modified time for this!
867 (set-buffer new-buf) 855 (set-buffer new-buf)
868 (setq new-buf (create-file-buffer name)) 856 (set-buffer (create-file-buffer name))
869 (set-buffer new-buf)
870 (erase-buffer) 857 (erase-buffer)
871 (insert-file-contents name t)) 858 (insert-file-contents name t))
872 ;; Returning non-nil with the new buffer current 859 ;; Returning non-nil with the new buffer current
@@ -885,7 +872,7 @@ or properties are considered."
885 env (substring env 0 pos))) 872 env (substring env 0 pos)))
886 path))) 873 path)))
887 874
888;;; This is adapted from lib-complete.el, by Mike Williams. 875;; This is adapted from lib-complete.el, by Mike Williams.
889(defun PC-include-file-all-completions (file search-path &optional full) 876(defun PC-include-file-all-completions (file search-path &optional full)
890 "Return all completions for FILE in any directory on SEARCH-PATH. 877 "Return all completions for FILE in any directory on SEARCH-PATH.
891If optional third argument FULL is non-nil, returned pathnames should be 878If optional third argument FULL is non-nil, returned pathnames should be
diff --git a/lisp/completion.el b/lisp/completion.el
index 12df9a52714..2cd30e6513f 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -82,11 +82,11 @@
82;; SAVING/LOADING COMPLETIONS 82;; SAVING/LOADING COMPLETIONS
83;; Completions are automatically saved from one session to another 83;; Completions are automatically saved from one session to another
84;; (unless save-completions-flag or enable-completion is nil). 84;; (unless save-completions-flag or enable-completion is nil).
85;; Loading this file (or calling initialize-completions) causes EMACS 85;; Activating this minor-mode calling completion-initialize) causes Emacs
86;; to load a completions database for a saved completions file 86;; to load a completions database for a saved completions file
87;; (default: ~/.completions). When you exit, EMACS saves a copy of the 87;; (default: ~/.completions). When you exit, Emacs saves a copy of the
88;; completions that you 88;; completions that you
89;; often use. When you next start, EMACS loads in the saved completion file. 89;; often use. When you next start, Emacs loads in the saved completion file.
90;; 90;;
91;; The number of completions saved depends loosely on 91;; The number of completions saved depends loosely on
92;; *saved-completions-decay-factor*. Completions that have never been 92;; *saved-completions-decay-factor*. Completions that have never been
@@ -141,8 +141,8 @@
141;; App --> Appropriately] 141;; App --> Appropriately]
142;; 142;;
143;; INITIALIZATION 143;; INITIALIZATION
144;; The form `(initialize-completions)' initializes the completion system by 144;; The form `(completion-initialize)' initializes the completion system by
145;; trying to load in the user's completions. After the first cal, further 145;; trying to load in the user's completions. After the first call, further
146;; calls have no effect so one should be careful not to put the form in a 146;; calls have no effect so one should be careful not to put the form in a
147;; site's standard site-init file. 147;; site's standard site-init file.
148;; 148;;
@@ -180,7 +180,7 @@
180;; complete 180;; complete
181;; Inserts a completion at point 181;; Inserts a completion at point
182;; 182;;
183;; initialize-completions 183;; completion-initialize
184;; Loads the completions file and sets up so that exiting emacs will 184;; Loads the completions file and sets up so that exiting emacs will
185;; save them. 185;; save them.
186;; 186;;
@@ -286,59 +286,65 @@
286 286
287 287
288(defcustom enable-completion t 288(defcustom enable-completion t
289 "*Non-nil means enable recording and saving of completions. 289 "Non-nil means enable recording and saving of completions.
290If nil, no new words are added to the database or saved to the init file." 290If nil, no new words are added to the database or saved to the init file."
291 :type 'boolean 291 :type 'boolean
292 :group 'completion) 292 :group 'completion)
293 293
294(defcustom save-completions-flag t 294(defcustom save-completions-flag t
295 "*Non-nil means save most-used completions when exiting Emacs. 295 "Non-nil means save most-used completions when exiting Emacs.
296See also `save-completions-retention-time'." 296See also `save-completions-retention-time'."
297 :type 'boolean 297 :type 'boolean
298 :group 'completion) 298 :group 'completion)
299 299
300(defcustom save-completions-file-name (convert-standard-filename "~/.completions") 300(defcustom save-completions-file-name
301 "*The filename to save completions to." 301 (let ((olddef (convert-standard-filename "~/.completions")))
302 (cond
303 ((file-readable-p olddef) olddef)
304 ((file-directory-p (convert-standard-filename "~/.emacs.d/"))
305 (convert-standard-filename (expand-file-name completions "~/.emacs.d/")))
306 (t olddef)))
307 "The filename to save completions to."
302 :type 'file 308 :type 'file
303 :group 'completion) 309 :group 'completion)
304 310
305(defcustom save-completions-retention-time 336 311(defcustom save-completions-retention-time 336
306 "*Discard a completion if unused for this many hours. 312 "Discard a completion if unused for this many hours.
307\(1 day = 24, 1 week = 168). If this is 0, non-permanent completions 313\(1 day = 24, 1 week = 168). If this is 0, non-permanent completions
308will not be saved unless these are used. Default is two weeks." 314will not be saved unless these are used. Default is two weeks."
309 :type 'integer 315 :type 'integer
310 :group 'completion) 316 :group 'completion)
311 317
312(defcustom completion-on-separator-character nil 318(defcustom completion-on-separator-character nil
313 "*Non-nil means separator characters mark previous word as used. 319 "Non-nil means separator characters mark previous word as used.
314This means the word will be saved as a completion." 320This means the word will be saved as a completion."
315 :type 'boolean 321 :type 'boolean
316 :group 'completion) 322 :group 'completion)
317 323
318(defcustom completions-file-versions-kept kept-new-versions 324(defcustom completions-file-versions-kept kept-new-versions
319 "*Number of versions to keep for the saved completions file." 325 "Number of versions to keep for the saved completions file."
320 :type 'integer 326 :type 'integer
321 :group 'completion) 327 :group 'completion)
322 328
323(defcustom completion-prompt-speed-threshold 4800 329(defcustom completion-prompt-speed-threshold 4800
324 "*Minimum output speed at which to display next potential completion." 330 "Minimum output speed at which to display next potential completion."
325 :type 'integer 331 :type 'integer
326 :group 'completion) 332 :group 'completion)
327 333
328(defcustom completion-cdabbrev-prompt-flag nil 334(defcustom completion-cdabbrev-prompt-flag nil
329 "*If non-nil, the next completion prompt does a cdabbrev search. 335 "If non-nil, the next completion prompt does a cdabbrev search.
330This can be time consuming." 336This can be time consuming."
331 :type 'boolean 337 :type 'boolean
332 :group 'completion) 338 :group 'completion)
333 339
334(defcustom completion-search-distance 15000 340(defcustom completion-search-distance 15000
335 "*How far to search in the buffer when looking for completions. 341 "How far to search in the buffer when looking for completions.
336In number of characters. If nil, search the whole buffer." 342In number of characters. If nil, search the whole buffer."
337 :type 'integer 343 :type 'integer
338 :group 'completion) 344 :group 'completion)
339 345
340(defcustom completions-merging-modes '(lisp c) 346(defcustom completions-merging-modes '(lisp c)
341 "*List of modes {`c' or `lisp'} for automatic completions merging. 347 "List of modes {`c' or `lisp'} for automatic completions merging.
342Definitions from visited files which have these modes 348Definitions from visited files which have these modes
343are automatically added to the completion database." 349are automatically added to the completion database."
344 :type '(set (const lisp) (const c)) 350 :type '(set (const lisp) (const c))
@@ -495,7 +501,7 @@ Used to decide whether to save completions.")
495;; Table definitions 501;; Table definitions
496;;----------------------------------------------- 502;;-----------------------------------------------
497 503
498(defun cmpl-make-standard-completion-syntax-table () 504(defconst completion-standard-syntax-table
499 (let ((table (make-syntax-table)) 505 (let ((table (make-syntax-table))
500 i) 506 i)
501 ;; Default syntax is whitespace. 507 ;; Default syntax is whitespace.
@@ -523,36 +529,9 @@ Used to decide whether to save completions.")
523 (modify-syntax-entry char "w" table))) 529 (modify-syntax-entry char "w" table)))
524 table)) 530 table))
525 531
526(defconst cmpl-standard-syntax-table (cmpl-make-standard-completion-syntax-table)) 532(defvar completion-syntax-table completion-standard-syntax-table
527
528(defun cmpl-make-lisp-completion-syntax-table ()
529 (let ((table (copy-syntax-table cmpl-standard-syntax-table))
530 (symbol-chars '(?! ?& ?? ?= ?^)))
531 (dolist (char symbol-chars)
532 (modify-syntax-entry char "_" table))
533 table))
534
535(defun cmpl-make-c-completion-syntax-table ()
536 (let ((table (copy-syntax-table cmpl-standard-syntax-table))
537 (separator-chars '(?+ ?* ?/ ?: ?%)))
538 (dolist (char separator-chars)
539 (modify-syntax-entry char " " table))
540 table))
541
542(defun cmpl-make-fortran-completion-syntax-table ()
543 (let ((table (copy-syntax-table cmpl-standard-syntax-table))
544 (separator-chars '(?+ ?- ?* ?/ ?:)))
545 (dolist (char separator-chars)
546 (modify-syntax-entry char " " table))
547 table))
548
549(defconst cmpl-lisp-syntax-table (cmpl-make-lisp-completion-syntax-table))
550(defconst cmpl-c-syntax-table (cmpl-make-c-completion-syntax-table))
551(defconst cmpl-fortran-syntax-table (cmpl-make-fortran-completion-syntax-table))
552
553(defvar cmpl-syntax-table cmpl-standard-syntax-table
554 "This variable holds the current completion syntax table.") 533 "This variable holds the current completion syntax table.")
555(make-variable-buffer-local 'cmpl-syntax-table) 534(make-variable-buffer-local 'completion-syntax-table)
556 535
557;;----------------------------------------------- 536;;-----------------------------------------------
558;; Symbol functions 537;; Symbol functions
@@ -561,43 +540,34 @@ Used to decide whether to save completions.")
561 "Holds first character of symbol, after any completion symbol function.") 540 "Holds first character of symbol, after any completion symbol function.")
562(defvar cmpl-symbol-end nil 541(defvar cmpl-symbol-end nil
563 "Holds last character of symbol, after any completion symbol function.") 542 "Holds last character of symbol, after any completion symbol function.")
564;; These are temp. vars. we use to avoid using let.
565;; Why ? Small speed improvement.
566(defvar cmpl-saved-syntax nil)
567(defvar cmpl-saved-point nil)
568 543
569(defun symbol-under-point () 544(defun symbol-under-point ()
570 "Return the symbol that the point is currently on. 545 "Return the symbol that the point is currently on.
571But only if it is longer than `completion-min-length'." 546But only if it is longer than `completion-min-length'."
572 (setq cmpl-saved-syntax (syntax-table)) 547 (with-syntax-table completion-syntax-table
573 (unwind-protect 548 (when (memq (char-syntax (following-char)) '(?w ?_))
574 (progn 549 ;; Cursor is on following-char and after preceding-char
575 (set-syntax-table cmpl-syntax-table) 550 (let ((saved-point (point)))
576 (cond 551 (setq cmpl-symbol-start (scan-sexps (1+ saved-point) -1)
577 ;; Cursor is on following-char and after preceding-char 552 cmpl-symbol-end (scan-sexps saved-point 1))
578 ((memq (char-syntax (following-char)) '(?w ?_)) 553 ;; Remove chars to ignore at the start.
579 (setq cmpl-saved-point (point) 554 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
580 cmpl-symbol-start (scan-sexps (1+ cmpl-saved-point) -1) 555 (goto-char cmpl-symbol-start)
581 cmpl-symbol-end (scan-sexps cmpl-saved-point 1)) 556 (forward-word 1)
582 ;; Remove chars to ignore at the start. 557 (setq cmpl-symbol-start (point))
583 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w) 558 (goto-char saved-point)))
584 (goto-char cmpl-symbol-start) 559 ;; Remove chars to ignore at the end.
585 (forward-word 1) 560 (cond ((= (char-syntax (char-after (1- cmpl-symbol-end))) ?w)
586 (setq cmpl-symbol-start (point)) 561 (goto-char cmpl-symbol-end)
587 (goto-char cmpl-saved-point))) 562 (forward-word -1)
588 ;; Remove chars to ignore at the end. 563 (setq cmpl-symbol-end (point))
589 (cond ((= (char-syntax (char-after (1- cmpl-symbol-end))) ?w) 564 (goto-char saved-point)))
590 (goto-char cmpl-symbol-end) 565 ;; Return completion if the length is reasonable.
591 (forward-word -1) 566 (if (and (<= completion-min-length
592 (setq cmpl-symbol-end (point)) 567 (- cmpl-symbol-end cmpl-symbol-start))
593 (goto-char cmpl-saved-point))) 568 (<= (- cmpl-symbol-end cmpl-symbol-start)
594 ;; Return completion if the length is reasonable. 569 completion-max-length))
595 (if (and (<= completion-min-length 570 (buffer-substring cmpl-symbol-start cmpl-symbol-end))))))
596 (- cmpl-symbol-end cmpl-symbol-start))
597 (<= (- cmpl-symbol-end cmpl-symbol-start)
598 completion-max-length))
599 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
600 (set-syntax-table cmpl-saved-syntax)))
601 571
602;; tests for symbol-under-point 572;; tests for symbol-under-point
603;; `^' indicates cursor pos. where value is returned 573;; `^' indicates cursor pos. where value is returned
@@ -615,46 +585,42 @@ But only if it is longer than `completion-min-length'."
615 "Return a string of the symbol immediately before point. 585 "Return a string of the symbol immediately before point.
616Returns nil if there isn't one longer than `completion-min-length'." 586Returns nil if there isn't one longer than `completion-min-length'."
617 ;; This is called when a word separator is typed so it must be FAST ! 587 ;; This is called when a word separator is typed so it must be FAST !
618 (setq cmpl-saved-syntax (syntax-table)) 588 (with-syntax-table completion-syntax-table
619 (unwind-protect 589 ;; Cursor is on following-char and after preceding-char
620 (progn 590 (cond ((= (setq cmpl-preceding-syntax (char-syntax (preceding-char))) ?_)
621 (set-syntax-table cmpl-syntax-table) 591 ;; Number of chars to ignore at end.
622 ;; Cursor is on following-char and after preceding-char 592 (setq cmpl-symbol-end (point)
623 (cond ((= (setq cmpl-preceding-syntax (char-syntax (preceding-char))) ?_) 593 cmpl-symbol-start (scan-sexps cmpl-symbol-end -1))
624 ;; Number of chars to ignore at end. 594 ;; Remove chars to ignore at the start.
625 (setq cmpl-symbol-end (point) 595 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
626 cmpl-symbol-start (scan-sexps cmpl-symbol-end -1)) 596 (goto-char cmpl-symbol-start)
627 ;; Remove chars to ignore at the start. 597 (forward-word 1)
628 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w) 598 (setq cmpl-symbol-start (point))
629 (goto-char cmpl-symbol-start) 599 (goto-char cmpl-symbol-end)))
630 (forward-word 1) 600 ;; Return value if long enough.
631 (setq cmpl-symbol-start (point)) 601 (if (>= cmpl-symbol-end
632 (goto-char cmpl-symbol-end))) 602 (+ cmpl-symbol-start completion-min-length))
633 ;; Return value if long enough. 603 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))
634 (if (>= cmpl-symbol-end 604 ((= cmpl-preceding-syntax ?w)
635 (+ cmpl-symbol-start completion-min-length)) 605 ;; chars to ignore at end
636 (buffer-substring cmpl-symbol-start cmpl-symbol-end))) 606 (let ((saved-point (point)))
637 ((= cmpl-preceding-syntax ?w) 607 (setq cmpl-symbol-start (scan-sexps saved-point -1))
638 ;; chars to ignore at end 608 ;; take off chars. from end
639 (setq cmpl-saved-point (point) 609 (forward-word -1)
640 cmpl-symbol-start (scan-sexps cmpl-saved-point -1)) 610 (setq cmpl-symbol-end (point))
641 ;; take off chars. from end 611 ;; remove chars to ignore at the start
642 (forward-word -1) 612 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
643 (setq cmpl-symbol-end (point)) 613 (goto-char cmpl-symbol-start)
644 ;; remove chars to ignore at the start 614 (forward-word 1)
645 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w) 615 (setq cmpl-symbol-start (point))))
646 (goto-char cmpl-symbol-start) 616 ;; Restore state.
647 (forward-word 1) 617 (goto-char saved-point)
648 (setq cmpl-symbol-start (point)))) 618 ;; Return completion if the length is reasonable
649 ;; Restore state. 619 (if (and (<= completion-min-length
650 (goto-char cmpl-saved-point) 620 (- cmpl-symbol-end cmpl-symbol-start))
651 ;; Return completion if the length is reasonable 621 (<= (- cmpl-symbol-end cmpl-symbol-start)
652 (if (and (<= completion-min-length 622 completion-max-length))
653 (- cmpl-symbol-end cmpl-symbol-start)) 623 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))))
654 (<= (- cmpl-symbol-end cmpl-symbol-start)
655 completion-max-length))
656 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
657 (set-syntax-table cmpl-saved-syntax)))
658 624
659;; tests for symbol-before-point 625;; tests for symbol-before-point
660;; `^' indicates cursor pos. where value is returned 626;; `^' indicates cursor pos. where value is returned
@@ -675,17 +641,11 @@ Returns nil if there isn't one longer than `completion-min-length'."
675 ;; copying all the code. 641 ;; copying all the code.
676 ;; However, it is only used by the completion string prompter. 642 ;; However, it is only used by the completion string prompter.
677 ;; If it comes into common use, it could be rewritten. 643 ;; If it comes into common use, it could be rewritten.
678 (cond ((memq (progn 644 (if (memq (with-syntax-table completion-syntax-table
679 (setq cmpl-saved-syntax (syntax-table)) 645 (char-syntax (following-char)))
680 (unwind-protect 646 '(?w ?_))
681 (progn 647 (symbol-under-point)
682 (set-syntax-table cmpl-syntax-table) 648 (symbol-before-point)))
683 (char-syntax (following-char)))
684 (set-syntax-table cmpl-saved-syntax)))
685 '(?w ?_))
686 (symbol-under-point))
687 (t
688 (symbol-before-point))))
689 649
690 650
691(defun symbol-before-point-for-complete () 651(defun symbol-before-point-for-complete ()
@@ -693,28 +653,23 @@ Returns nil if there isn't one longer than `completion-min-length'."
693 ;; or nil if there isn't one. Like symbol-before-point but doesn't trim the 653 ;; or nil if there isn't one. Like symbol-before-point but doesn't trim the
694 ;; end chars." 654 ;; end chars."
695 ;; Cursor is on following-char and after preceding-char 655 ;; Cursor is on following-char and after preceding-char
696 (setq cmpl-saved-syntax (syntax-table)) 656 (with-syntax-table completion-syntax-table
697 (unwind-protect 657 (cond ((memq (setq cmpl-preceding-syntax (char-syntax (preceding-char)))
698 (progn 658 '(?_ ?w))
699 (set-syntax-table cmpl-syntax-table) 659 (setq cmpl-symbol-end (point)
700 (cond ((memq (setq cmpl-preceding-syntax (char-syntax (preceding-char))) 660 cmpl-symbol-start (scan-sexps cmpl-symbol-end -1))
701 '(?_ ?w)) 661 ;; Remove chars to ignore at the start.
702 (setq cmpl-symbol-end (point) 662 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
703 cmpl-symbol-start (scan-sexps cmpl-symbol-end -1)) 663 (goto-char cmpl-symbol-start)
704 ;; Remove chars to ignore at the start. 664 (forward-word 1)
705 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w) 665 (setq cmpl-symbol-start (point))
706 (goto-char cmpl-symbol-start) 666 (goto-char cmpl-symbol-end)))
707 (forward-word 1) 667 ;; Return completion if the length is reasonable.
708 (setq cmpl-symbol-start (point)) 668 (if (and (<= completion-prefix-min-length
709 (goto-char cmpl-symbol-end))) 669 (- cmpl-symbol-end cmpl-symbol-start))
710 ;; Return completion if the length is reasonable. 670 (<= (- cmpl-symbol-end cmpl-symbol-start)
711 (if (and (<= completion-prefix-min-length 671 completion-max-length))
712 (- cmpl-symbol-end cmpl-symbol-start)) 672 (buffer-substring cmpl-symbol-start cmpl-symbol-end))))))
713 (<= (- cmpl-symbol-end cmpl-symbol-start)
714 completion-max-length))
715 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
716 ;; Restore syntax table.
717 (set-syntax-table cmpl-saved-syntax)))
718 673
719;; tests for symbol-before-point-for-complete 674;; tests for symbol-before-point-for-complete
720;; `^' indicates cursor pos. where value is returned 675;; `^' indicates cursor pos. where value is returned
@@ -866,7 +821,7 @@ This is sensitive to `case-fold-search'."
866 (setq saved-point (point) 821 (setq saved-point (point)
867 saved-syntax (syntax-table)) 822 saved-syntax (syntax-table))
868 ;; Restore completion state 823 ;; Restore completion state
869 (set-syntax-table cmpl-syntax-table) 824 (set-syntax-table completion-syntax-table)
870 (goto-char cdabbrev-current-point) 825 (goto-char cdabbrev-current-point)
871 ;; Loop looking for completions 826 ;; Loop looking for completions
872 (while 827 (while
@@ -1010,8 +965,8 @@ Each symbol is bound to a single completion entry.")
1010 965
1011;; CONSTRUCTOR 966;; CONSTRUCTOR
1012(defun make-completion (string) 967(defun make-completion (string)
1013 "Return a list of a completion entry." 968 "Return a completion entry."
1014 (list (list string 0 nil current-completion-source))) 969 (list string 0 nil current-completion-source))
1015 970
1016;; Obsolete 971;; Obsolete
1017;;(defmacro cmpl-prefix-entry-symbol (completion-entry) 972;;(defmacro cmpl-prefix-entry-symbol (completion-entry)
@@ -1026,11 +981,9 @@ Each symbol is bound to a single completion entry.")
1026 981
1027;; READER Macros 982;; READER Macros
1028 983
1029(defmacro cmpl-prefix-entry-head (prefix-entry) 984(defalias 'cmpl-prefix-entry-head 'car)
1030 (list 'car prefix-entry))
1031 985
1032(defmacro cmpl-prefix-entry-tail (prefix-entry) 986(defalias 'cmpl-prefix-entry-tail 'cdr)
1033 (list 'cdr prefix-entry))
1034 987
1035;; WRITER Macros 988;; WRITER Macros
1036 989
@@ -1092,17 +1045,17 @@ Each symbol is bound to a single completion entry.")
1092;; These are the internal functions used to update the datebase 1045;; These are the internal functions used to update the datebase
1093;; 1046;;
1094;; 1047;;
1095(defvar completion-to-accept nil) 1048(defvar completion-to-accept nil
1096 ;;"Set to a string that is pending its acceptance." 1049 "Set to a string that is pending its acceptance.")
1097 ;; this checked by the top level reading functions 1050 ;; this checked by the top level reading functions
1098 1051
1099(defvar cmpl-db-downcase-string nil) 1052(defvar cmpl-db-downcase-string nil
1100 ;; "Setup by find-exact-completion, etc. The given string, downcased." 1053 "Setup by `find-exact-completion', etc. The given string, downcased.")
1101(defvar cmpl-db-symbol nil) 1054(defvar cmpl-db-symbol nil
1102 ;; "The interned symbol corresponding to cmpl-db-downcase-string. 1055 "The interned symbol corresponding to `cmpl-db-downcase-string'.
1103 ;; Set up by cmpl-db-symbol." 1056Set up by `cmpl-db-symbol'.")
1104(defvar cmpl-db-prefix-symbol nil) 1057(defvar cmpl-db-prefix-symbol nil
1105 ;; "The interned prefix symbol corresponding to cmpl-db-downcase-string." 1058 "The interned prefix symbol corresponding to `cmpl-db-downcase-string'.")
1106(defvar cmpl-db-entry nil) 1059(defvar cmpl-db-entry nil)
1107(defvar cmpl-db-debug-p nil 1060(defvar cmpl-db-debug-p nil
1108 "Set to t if you want to debug the database.") 1061 "Set to t if you want to debug the database.")
@@ -1190,7 +1143,7 @@ Returns the completion entry."
1190 (or (find-exact-completion string) 1143 (or (find-exact-completion string)
1191 ;; not there 1144 ;; not there
1192 (let (;; create an entry 1145 (let (;; create an entry
1193 (entry (make-completion string)) 1146 (entry (list (make-completion string)))
1194 ;; setup the prefix 1147 ;; setup the prefix
1195 (prefix-entry (find-cmpl-prefix-entry 1148 (prefix-entry (find-cmpl-prefix-entry
1196 (substring cmpl-db-downcase-string 0 1149 (substring cmpl-db-downcase-string 0
@@ -1244,7 +1197,7 @@ Returns the completion entry."
1244 cmpl-db-entry) 1197 cmpl-db-entry)
1245 ;; not there 1198 ;; not there
1246 (let (;; create an entry 1199 (let (;; create an entry
1247 (entry (make-completion completion-string)) 1200 (entry (list (make-completion completion-string)))
1248 ;; setup the prefix 1201 ;; setup the prefix
1249 (prefix-entry (find-cmpl-prefix-entry 1202 (prefix-entry (find-cmpl-prefix-entry
1250 (substring cmpl-db-downcase-string 0 1203 (substring cmpl-db-downcase-string 0
@@ -1650,7 +1603,7 @@ Prefix args ::
1650 (setq cmpl-current-index (+ cmpl-current-index (or arg 1)))) 1603 (setq cmpl-current-index (+ cmpl-current-index (or arg 1))))
1651 (t 1604 (t
1652 (if (not cmpl-initialized-p) 1605 (if (not cmpl-initialized-p)
1653 (initialize-completions)) ;; make sure everything's loaded 1606 (completion-initialize)) ;; make sure everything's loaded
1654 (cond ((consp current-prefix-arg) ;; control-u 1607 (cond ((consp current-prefix-arg) ;; control-u
1655 (setq arg 0) 1608 (setq arg 0)
1656 (setq cmpl-leave-point-at-start t)) 1609 (setq cmpl-leave-point-at-start t))
@@ -1752,9 +1705,8 @@ Prefix args ::
1752 (let ((completions-merging-modes nil)) 1705 (let ((completions-merging-modes nil))
1753 (setq buffer (find-file-noselect file)))) 1706 (setq buffer (find-file-noselect file))))
1754 (unwind-protect 1707 (unwind-protect
1755 (save-excursion 1708 (with-current-buffer buffer
1756 (set-buffer buffer) 1709 (add-completions-from-buffer))
1757 (add-completions-from-buffer))
1758 (if (not buffer-already-there-p) 1710 (if (not buffer-already-there-p)
1759 (kill-buffer buffer))))) 1711 (kill-buffer buffer)))))
1760 1712
@@ -1781,7 +1733,7 @@ Prefix args ::
1781 start-num))))) 1733 start-num)))))
1782 1734
1783;; Find file hook 1735;; Find file hook
1784(defun cmpl-find-file-hook () 1736(defun completion-find-file-hook ()
1785 (cond (enable-completion 1737 (cond (enable-completion
1786 (cond ((and (memq major-mode '(emacs-lisp-mode lisp-mode)) 1738 (cond ((and (memq major-mode '(emacs-lisp-mode lisp-mode))
1787 (memq 'lisp completions-merging-modes)) 1739 (memq 'lisp completions-merging-modes))
@@ -1864,7 +1816,7 @@ Prefix args ::
1864;; Whitespace chars (have symbol syntax) 1816;; Whitespace chars (have symbol syntax)
1865;; Everything else has word syntax 1817;; Everything else has word syntax
1866 1818
1867(defun cmpl-make-c-def-completion-syntax-table () 1819(defconst completion-c-def-syntax-table
1868 (let ((table (make-syntax-table)) 1820 (let ((table (make-syntax-table))
1869 (whitespace-chars '(? ?\n ?\t ?\f ?\v ?\r)) 1821 (whitespace-chars '(? ?\n ?\t ?\f ?\v ?\r))
1870 ;; unfortunately the ?( causes the parens to appear unbalanced 1822 ;; unfortunately the ?( causes the parens to appear unbalanced
@@ -1885,8 +1837,6 @@ Prefix args ::
1885 (modify-syntax-entry ?\} "){" table) 1837 (modify-syntax-entry ?\} "){" table)
1886 table)) 1838 table))
1887 1839
1888(defconst cmpl-c-def-syntax-table (cmpl-make-c-def-completion-syntax-table))
1889
1890;; Regexps 1840;; Regexps
1891(defconst *c-def-regexp* 1841(defconst *c-def-regexp*
1892 ;; This stops on lines with possible definitions 1842 ;; This stops on lines with possible definitions
@@ -1930,81 +1880,77 @@ Prefix args ::
1930 ;; Benchmark -- 1880 ;; Benchmark --
1931 ;; Sun 3/280-- 1250 lines/sec. 1881 ;; Sun 3/280-- 1250 lines/sec.
1932 1882
1933 (let (string next-point char 1883 (let (string next-point char)
1934 (saved-syntax (syntax-table)))
1935 (save-excursion 1884 (save-excursion
1936 (goto-char (point-min)) 1885 (goto-char (point-min))
1937 (catch 'finish-add-completions 1886 (catch 'finish-add-completions
1938 (unwind-protect 1887 (with-syntax-table completion-c-def-syntax-table
1939 (while t 1888 (while t
1940 ;; we loop here only when scan-sexps fails 1889 ;; we loop here only when scan-sexps fails
1941 ;; (i.e. unbalance exps.) 1890 ;; (i.e. unbalance exps.)
1942 (set-syntax-table cmpl-c-def-syntax-table) 1891 (condition-case e
1943 (condition-case e 1892 (while t
1944 (while t 1893 (re-search-forward *c-def-regexp*)
1945 (re-search-forward *c-def-regexp*) 1894 (cond
1946 (cond 1895 ((= (preceding-char) ?#)
1947 ((= (preceding-char) ?#) 1896 ;; preprocessor macro, see if it's one we handle
1948 ;; preprocessor macro, see if it's one we handle 1897 (setq string (buffer-substring (point) (+ (point) 6)))
1949 (setq string (buffer-substring (point) (+ (point) 6))) 1898 (cond ((member string '("define" "ifdef "))
1950 (cond ((or (string-equal string "define") 1899 ;; skip forward over definition symbol
1951 (string-equal string "ifdef ")) 1900 ;; and add it to database
1952 ;; skip forward over definition symbol 1901 (and (forward-word 2)
1953 ;; and add it to database 1902 (setq string (symbol-before-point))
1954 (and (forward-word 2) 1903 ;;(push string foo)
1955 (setq string (symbol-before-point)) 1904 (add-completion-to-tail-if-new string)))))
1956 ;;(push string foo) 1905 (t
1957 (add-completion-to-tail-if-new string))))) 1906 ;; C definition
1958 (t 1907 (setq next-point (point))
1959 ;; C definition 1908 (while (and
1960 (setq next-point (point)) 1909 next-point
1961 (while (and 1910 ;; scan to next separator char.
1962 next-point 1911 (setq next-point (scan-sexps next-point 1)))
1963 ;; scan to next separator char. 1912 ;; position the point on the word we want to add
1964 (setq next-point (scan-sexps next-point 1))) 1913 (goto-char next-point)
1965 ;; position the point on the word we want to add 1914 (while (= (setq char (following-char)) ?*)
1966 (goto-char next-point) 1915 ;; handle pointer ref
1967 (while (= (setq char (following-char)) ?*) 1916 ;; move to next separator char.
1968 ;; handle pointer ref 1917 (goto-char
1969 ;; move to next separator char. 1918 (setq next-point (scan-sexps (point) 1))))
1970 (goto-char 1919 (forward-word -1)
1971 (setq next-point (scan-sexps (point) 1)))) 1920 ;; add to database
1972 (forward-word -1) 1921 (if (setq string (symbol-under-point))
1973 ;; add to database 1922 ;; (push string foo)
1974 (if (setq string (symbol-under-point)) 1923 (add-completion-to-tail-if-new string)
1975 ;; (push string foo) 1924 ;; Local TMC hack (useful for parsing paris.h)
1976 (add-completion-to-tail-if-new string) 1925 (if (and (looking-at "_AP") ;; "ansi prototype"
1977 ;; Local TMC hack (useful for parsing paris.h) 1926 (progn
1978 (if (and (looking-at "_AP") ;; "ansi prototype" 1927 (forward-word -1)
1979 (progn 1928 (setq string
1980 (forward-word -1) 1929 (symbol-under-point))))
1981 (setq string 1930 (add-completion-to-tail-if-new string)))
1982 (symbol-under-point)))) 1931 ;; go to next
1983 (add-completion-to-tail-if-new string))) 1932 (goto-char next-point)
1984 ;; go to next 1933 ;; (push (format "%c" (following-char)) foo)
1985 (goto-char next-point) 1934 (if (= (char-syntax char) ?\()
1986 ;; (push (format "%c" (following-char)) foo) 1935 ;; if on an opening delimiter, go to end
1987 (if (= (char-syntax char) ?\() 1936 (while (= (char-syntax char) ?\()
1988 ;; if on an opening delimiter, go to end 1937 (setq next-point (scan-sexps next-point 1)
1989 (while (= (char-syntax char) ?\() 1938 char (char-after next-point)))
1990 (setq next-point (scan-sexps next-point 1) 1939 (or (= char ?,)
1991 char (char-after next-point))) 1940 ;; Current char is an end char.
1992 (or (= char ?,) 1941 (setq next-point nil)))))))
1993 ;; Current char is an end char. 1942 (search-failed ;;done
1994 (setq next-point nil))))))) 1943 (throw 'finish-add-completions t))
1995 (search-failed ;;done 1944 (error
1996 (throw 'finish-add-completions t)) 1945 ;; Check for failure in scan-sexps
1997 (error 1946 (if (or (string-equal (nth 1 e)
1998 ;; Check for failure in scan-sexps 1947 "Containing expression ends prematurely")
1999 (if (or (string-equal (nth 1 e) 1948 (string-equal (nth 1 e) "Unbalanced parentheses"))
2000 "Containing expression ends prematurely") 1949 ;; unbalanced paren., keep going
2001 (string-equal (nth 1 e) "Unbalanced parentheses")) 1950 ;;(ding)
2002 ;; unbalanced paren., keep going 1951 (forward-line 1)
2003 ;;(ding) 1952 (message "Error parsing C buffer for completions--please send bug report")
2004 (forward-line 1) 1953 (throw 'finish-add-completions t))))))))))
2005 (message "Error parsing C buffer for completions--please send bug report")
2006 (throw 'finish-add-completions t)))))
2007 (set-syntax-table saved-syntax))))))
2008 1954
2009 1955
2010;;--------------------------------------------------------------------------- 1956;;---------------------------------------------------------------------------
@@ -2018,7 +1964,8 @@ Prefix args ::
2018 ((not cmpl-completions-accepted-p) 1964 ((not cmpl-completions-accepted-p)
2019 (message "Completions database has not changed - not writing.")) 1965 (message "Completions database has not changed - not writing."))
2020 (t 1966 (t
2021 (save-completions-to-file))))) 1967 (save-completions-to-file))))
1968 (cmpl-statistics-block (record-cmpl-kill-emacs)))
2022 1969
2023;; There is no point bothering to change this again 1970;; There is no point bothering to change this again
2024;; unless the package changes so much that it matters 1971;; unless the package changes so much that it matters
@@ -2046,7 +1993,7 @@ If file name is not specified, use `save-completions-file-name'."
2046 (if (file-writable-p filename) 1993 (if (file-writable-p filename)
2047 (progn 1994 (progn
2048 (if (not cmpl-initialized-p) 1995 (if (not cmpl-initialized-p)
2049 (initialize-completions));; make sure everything's loaded 1996 (completion-initialize)) ;; make sure everything's loaded
2050 (message "Saving completions to file %s" filename) 1997 (message "Saving completions to file %s" filename)
2051 1998
2052 (let* ((delete-old-versions t) 1999 (let* ((delete-old-versions t)
@@ -2059,9 +2006,7 @@ If file name is not specified, use `save-completions-file-name'."
2059 (total-saved 0) 2006 (total-saved 0)
2060 (backup-filename (completion-backup-filename filename))) 2007 (backup-filename (completion-backup-filename filename)))
2061 2008
2062 (save-excursion 2009 (with-current-buffer (get-buffer-create " *completion-save-buffer*")
2063 (get-buffer-create " *completion-save-buffer*")
2064 (set-buffer " *completion-save-buffer*")
2065 (setq buffer-file-name filename) 2010 (setq buffer-file-name filename)
2066 2011
2067 (if (not (verify-visited-file-modtime (current-buffer))) 2012 (if (not (verify-visited-file-modtime (current-buffer)))
@@ -2151,9 +2096,7 @@ If file is not specified, then use `save-completions-file-name'."
2151 (if (not no-message-p) 2096 (if (not no-message-p)
2152 (message "Loading completions from %sfile %s . . ." 2097 (message "Loading completions from %sfile %s . . ."
2153 (if backup-readable-p "backup " "") filename)) 2098 (if backup-readable-p "backup " "") filename))
2154 (save-excursion 2099 (with-current-buffer (get-buffer-create " *completion-save-buffer*")
2155 (get-buffer-create " *completion-save-buffer*")
2156 (set-buffer " *completion-save-buffer*")
2157 (setq buffer-file-name filename) 2100 (setq buffer-file-name filename)
2158 ;; prepare the buffer to be modified 2101 ;; prepare the buffer to be modified
2159 (clear-visited-file-modtime) 2102 (clear-visited-file-modtime)
@@ -2161,8 +2104,7 @@ If file is not specified, then use `save-completions-file-name'."
2161 2104
2162 (let ((insert-okay-p nil) 2105 (let ((insert-okay-p nil)
2163 (buffer (current-buffer)) 2106 (buffer (current-buffer))
2164 (current-time (cmpl-hours-since-origin)) 2107 string entry last-use-time
2165 string num-uses entry last-use-time
2166 cmpl-entry cmpl-last-use-time 2108 cmpl-entry cmpl-last-use-time
2167 (current-completion-source cmpl-source-init-file) 2109 (current-completion-source cmpl-source-init-file)
2168 (start-num 2110 (start-num
@@ -2233,13 +2175,13 @@ If file is not specified, then use `save-completions-file-name'."
2233 start-num))) 2175 start-num)))
2234)))))) 2176))))))
2235 2177
2236(defun initialize-completions () 2178(defun completion-initialize ()
2237 "Load the default completions file. 2179 "Load the default completions file.
2238Also sets up so that exiting Emacs will automatically save the file." 2180Also sets up so that exiting Emacs will automatically save the file."
2239 (interactive) 2181 (interactive)
2240 (cond ((not cmpl-initialized-p) 2182 (unless cmpl-initialized-p
2241 (load-completions-from-file))) 2183 (load-completions-from-file)
2242 (setq cmpl-initialized-p t)) 2184 (setq cmpl-initialized-p t)))
2243 2185
2244;;----------------------------------------------- 2186;;-----------------------------------------------
2245;; Kill region patch 2187;; Kill region patch
@@ -2302,33 +2244,21 @@ Patched to remove the most recent completion."
2302;; Note that because of the way byte compiling works, none of 2244;; Note that because of the way byte compiling works, none of
2303;; the functions defined with this macro get byte compiled. 2245;; the functions defined with this macro get byte compiled.
2304 2246
2305(defmacro def-completion-wrapper (function-name type &optional new-name) 2247(defun completion-def-wrapper (function-name type)
2306 "Add a call to update the completion database before function execution. 2248 "Add a call to update the completion database before function execution.
2307TYPE is the type of the wrapper to be added. Can be :before or :under." 2249TYPE is the type of the wrapper to be added. Can be :before or :under."
2308 (cond ((eq type :separator) 2250 (put function-name 'completion-function
2309 (list 'put (list 'quote function-name) ''completion-function 2251 (cdr (assq type
2310 ''use-completion-before-separator)) 2252 '((:separator 'use-completion-before-separator)
2311 ((eq type :before) 2253 (:before 'use-completion-before-point)
2312 (list 'put (list 'quote function-name) ''completion-function 2254 (:backward-under 'use-completion-backward-under)
2313 ''use-completion-before-point)) 2255 (:backward 'use-completion-backward)
2314 ((eq type :backward-under) 2256 (:under 'use-completion-under-point)
2315 (list 'put (list 'quote function-name) ''completion-function 2257 (:under-or-before 'use-completion-under-or-before-point)
2316 ''use-completion-backward-under)) 2258 (:minibuffer-separator 'use-completion-minibuffer-separator))))))
2317 ((eq type :backward)
2318 (list 'put (list 'quote function-name) ''completion-function
2319 ''use-completion-backward))
2320 ((eq type :under)
2321 (list 'put (list 'quote function-name) ''completion-function
2322 ''use-completion-under-point))
2323 ((eq type :under-or-before)
2324 (list 'put (list 'quote function-name) ''completion-function
2325 ''use-completion-under-or-before-point))
2326 ((eq type :minibuffer-separator)
2327 (list 'put (list 'quote function-name) ''completion-function
2328 ''use-completion-minibuffer-separator))))
2329 2259
2330(defun use-completion-minibuffer-separator () 2260(defun use-completion-minibuffer-separator ()
2331 (let ((cmpl-syntax-table cmpl-standard-syntax-table)) 2261 (let ((completion-syntax-table completion-standard-syntax-table))
2332 (use-completion-before-separator))) 2262 (use-completion-before-separator)))
2333 2263
2334(defun use-completion-backward-under () 2264(defun use-completion-backward-under ()
@@ -2347,170 +2277,197 @@ TYPE is the type of the wrapper to be added. Can be :before or :under."
2347 (get this-command 'completion-function)) 2277 (get this-command 'completion-function))
2348 'use-completion-under-or-before-point))) 2278 'use-completion-under-or-before-point)))
2349 2279
2280;; Lisp mode diffs.
2281
2282(defconst completion-lisp-syntax-table
2283 (let ((table (copy-syntax-table completion-standard-syntax-table))
2284 (symbol-chars '(?! ?& ?? ?= ?^)))
2285 (dolist (char symbol-chars)
2286 (modify-syntax-entry char "_" table))
2287 table))
2288
2289(defun completion-lisp-mode-hook ()
2290 (setq completion-syntax-table completion-lisp-syntax-table)
2291 ;; Lisp Mode diffs
2292 (local-set-key "!" 'self-insert-command)
2293 (local-set-key "&" 'self-insert-command)
2294 (local-set-key "%" 'self-insert-command)
2295 (local-set-key "?" 'self-insert-command)
2296 (local-set-key "=" 'self-insert-command)
2297 (local-set-key "^" 'self-insert-command))
2298
2350;; C mode diffs. 2299;; C mode diffs.
2351 2300
2352(defvar c-mode-map) 2301(defconst completion-c-syntax-table
2302 (let ((table (copy-syntax-table completion-standard-syntax-table))
2303 (separator-chars '(?+ ?* ?/ ?: ?%)))
2304 (dolist (char separator-chars)
2305 (modify-syntax-entry char " " table))
2306 table))
2353 2307
2308(completion-def-wrapper 'electric-c-semi :separator)
2354(defun completion-c-mode-hook () 2309(defun completion-c-mode-hook ()
2355 (def-completion-wrapper electric-c-semi :separator) 2310 (setq completion-syntax-table completion-c-syntax-table)
2356 (define-key c-mode-map "+" 'completion-separator-self-insert-command) 2311 (local-set-key "+" 'completion-separator-self-insert-command)
2357 (define-key c-mode-map "*" 'completion-separator-self-insert-command) 2312 (local-set-key "*" 'completion-separator-self-insert-command)
2358 (define-key c-mode-map "/" 'completion-separator-self-insert-command)) 2313 (local-set-key "/" 'completion-separator-self-insert-command))
2359;; Do this either now or whenever C mode is loaded.
2360(if (featurep 'cc-mode)
2361 (completion-c-mode-hook)
2362 (add-hook 'c-mode-hook 'completion-c-mode-hook))
2363 2314
2364;; FORTRAN mode diffs. (these are defined when fortran is called) 2315;; FORTRAN mode diffs. (these are defined when fortran is called)
2365 2316
2366(defvar fortran-mode-map) 2317(defconst completion-fortran-syntax-table
2318 (let ((table (copy-syntax-table completion-standard-syntax-table))
2319 (separator-chars '(?+ ?- ?* ?/ ?:)))
2320 (dolist (char separator-chars)
2321 (modify-syntax-entry char " " table))
2322 table))
2367 2323
2368(defun completion-setup-fortran-mode () 2324(defun completion-setup-fortran-mode ()
2369 (define-key fortran-mode-map "+" 'completion-separator-self-insert-command) 2325 (setq completion-syntax-table completion-fortran-syntax-table)
2370 (define-key fortran-mode-map "-" 'completion-separator-self-insert-command) 2326 (local-set-key "+" 'completion-separator-self-insert-command)
2371 (define-key fortran-mode-map "*" 'completion-separator-self-insert-command) 2327 (local-set-key "-" 'completion-separator-self-insert-command)
2372 (define-key fortran-mode-map "/" 'completion-separator-self-insert-command)) 2328 (local-set-key "*" 'completion-separator-self-insert-command)
2329 (local-set-key "/" 'completion-separator-self-insert-command))
2373 2330
2374;;; Enable completion mode. 2331;; Enable completion mode.
2332
2333(defvar fortran-mode-hook)
2334
2335(defvar completion-saved-bindings nil)
2375 2336
2376;;;###autoload 2337;;;###autoload
2377(defun dynamic-completion-mode () 2338(define-minor-mode dynamic-completion-mode
2378 "Enable dynamic word-completion." 2339 "Enable dynamic word-completion."
2379 (interactive) 2340 :global t
2380 (add-hook 'find-file-hook 'cmpl-find-file-hook) 2341 ;; This is always good, not specific to dynamic-completion-mode.
2381 (add-hook 'pre-command-hook 'completion-before-command)
2382
2383 ;; Install the appropriate mode tables.
2384 (add-hook 'lisp-mode-hook
2385 (lambda ()
2386 (setq cmpl-syntax-table cmpl-lisp-syntax-table)))
2387 (add-hook 'c-mode-hook
2388 (lambda ()
2389 (setq cmpl-syntax-table cmpl-c-syntax-table)))
2390 (add-hook 'fortran-mode-hook
2391 (lambda ()
2392 (setq cmpl-syntax-table cmpl-fortran-syntax-table)
2393 (completion-setup-fortran-mode)))
2394
2395 ;; "Complete" Key Keybindings.
2396
2397 (global-set-key "\M-\r" 'complete)
2398 (global-set-key [?\C-\r] 'complete)
2399 (define-key function-key-map [C-return] [?\C-\r]) 2342 (define-key function-key-map [C-return] [?\C-\r])
2400 2343
2401 ;; Tests - 2344 (dolist (x '((find-file-hook . completion-find-file-hook)
2402 ;; (add-completion "cumberland") 2345 (pre-command-hook . completion-before-command)
2403 ;; (add-completion "cumberbund") 2346 ;; Save completions when killing Emacs.
2404 ;; cum 2347 (kill-emacs-hook . kill-emacs-save-completions)
2405 ;; Cumber 2348
2406 ;; cumbering 2349 ;; Install the appropriate mode tables.
2407 ;; cumb 2350 (lisp-mode-hook . completion-lisp-mode-hook)
2408 2351 (c-mode-hook . completion-c-mode-hook)
2409 ;; Save completions when killing Emacs. 2352 (fortran-mode-hook . completion-setup-fortran-mode)))
2410 2353 (if dynamic-completion-mode
2411 (add-hook 'kill-emacs-hook 2354 (add-hook (car x) (cdr x))
2412 (lambda () 2355 (remove-hook (car x) (cdr x))))
2413 (kill-emacs-save-completions) 2356
2414 (cmpl-statistics-block 2357 ;; "Complete" Key Keybindings. We don't want to use a minor-mode
2415 (record-cmpl-kill-emacs)))) 2358 ;; map because these have too high a priority. We could/should
2416 2359 ;; probably change the interpretation of minor-mode-map-alist such
2417 ;; Patches to standard keymaps insert completions 2360 ;; that a map has lower precedence if the symbol is not buffer-local.
2418 (substitute-key-definition 'kill-region 'completion-kill-region 2361 (while completion-saved-bindings
2419 global-map) 2362 (let ((binding (pop completion-saved-bindings)))
2420 2363 (global-set-key (car binding) (cdr binding))))
2421 ;; Separators 2364 (when dynamic-completion-mode
2422 ;; We've used the completion syntax table given as a guide. 2365 (dolist (binding
2423 ;; 2366 '(("\M-\r" . complete)
2424 ;; Global separator chars. 2367 ([?\C-\r] . complete)
2425 ;; We left out <tab> because there are too many special cases for it. Also, 2368
2426 ;; in normal coding it's rarely typed after a word. 2369 ;; Tests -
2427 (global-set-key " " 'completion-separator-self-insert-autofilling) 2370 ;; (add-completion "cumberland")
2428 (global-set-key "!" 'completion-separator-self-insert-command) 2371 ;; (add-completion "cumberbund")
2429 (global-set-key "%" 'completion-separator-self-insert-command) 2372 ;; cum
2430 (global-set-key "^" 'completion-separator-self-insert-command) 2373 ;; Cumber
2431 (global-set-key "&" 'completion-separator-self-insert-command) 2374 ;; cumbering
2432 (global-set-key "(" 'completion-separator-self-insert-command) 2375 ;; cumb
2433 (global-set-key ")" 'completion-separator-self-insert-command) 2376
2434 (global-set-key "=" 'completion-separator-self-insert-command) 2377 ;; Patches to standard keymaps insert completions
2435 (global-set-key "`" 'completion-separator-self-insert-command) 2378 ([remap kill-region] . completion-kill-region)
2436 (global-set-key "|" 'completion-separator-self-insert-command) 2379
2437 (global-set-key "{" 'completion-separator-self-insert-command) 2380 ;; Separators
2438 (global-set-key "}" 'completion-separator-self-insert-command) 2381 ;; We've used the completion syntax table given as a guide.
2439 (global-set-key "[" 'completion-separator-self-insert-command) 2382 ;;
2440 (global-set-key "]" 'completion-separator-self-insert-command) 2383 ;; Global separator chars.
2441 (global-set-key ";" 'completion-separator-self-insert-command) 2384 ;; We left out <tab> because there are too many special
2442 (global-set-key "\"" 'completion-separator-self-insert-command) 2385 ;; cases for it. Also, in normal coding it's rarely typed
2443 (global-set-key "'" 'completion-separator-self-insert-command) 2386 ;; after a word.
2444 (global-set-key "#" 'completion-separator-self-insert-command) 2387 (" " . completion-separator-self-insert-autofilling)
2445 (global-set-key "," 'completion-separator-self-insert-command) 2388 ("!" . completion-separator-self-insert-command)
2446 (global-set-key "?" 'completion-separator-self-insert-command) 2389 ("%" . completion-separator-self-insert-command)
2447 2390 ("^" . completion-separator-self-insert-command)
2448 ;; We include period and colon even though they are symbol chars because : 2391 ("&" . completion-separator-self-insert-command)
2449 ;; - in text we want to pick up the last word in a sentence. 2392 ("(" . completion-separator-self-insert-command)
2450 ;; - in C pointer refs. we want to pick up the first symbol 2393 (")" . completion-separator-self-insert-command)
2451 ;; - it won't make a difference for lisp mode (package names are short) 2394 ("=" . completion-separator-self-insert-command)
2452 (global-set-key "." 'completion-separator-self-insert-command) 2395 ("`" . completion-separator-self-insert-command)
2453 (global-set-key ":" 'completion-separator-self-insert-command) 2396 ("|" . completion-separator-self-insert-command)
2397 ("{" . completion-separator-self-insert-command)
2398 ("}" . completion-separator-self-insert-command)
2399 ("[" . completion-separator-self-insert-command)
2400 ("]" . completion-separator-self-insert-command)
2401 (";" . completion-separator-self-insert-command)
2402 ("\"". completion-separator-self-insert-command)
2403 ("'" . completion-separator-self-insert-command)
2404 ("#" . completion-separator-self-insert-command)
2405 ("," . completion-separator-self-insert-command)
2406 ("?" . completion-separator-self-insert-command)
2407
2408 ;; We include period and colon even though they are symbol
2409 ;; chars because :
2410 ;; - in text we want to pick up the last word in a sentence.
2411 ;; - in C pointer refs. we want to pick up the first symbol
2412 ;; - it won't make a difference for lisp mode (package names
2413 ;; are short)
2414 ("." . completion-separator-self-insert-command)
2415 (":" . completion-separator-self-insert-command)))
2416 (push (cons (car binding) (lookup-key global-map (car binding)))
2417 completion-saved-bindings)
2418 (global-set-key (car binding) (cdr binding)))
2419
2420 ;; Tests --
2421 ;; foobarbiz
2422 ;; foobar
2423 ;; fooquux
2424 ;; fooper
2454 2425
2455 ;; Lisp Mode diffs 2426 (cmpl-statistics-block
2456 (define-key lisp-mode-map "!" 'self-insert-command) 2427 (record-completion-file-loaded))
2457 (define-key lisp-mode-map "&" 'self-insert-command)
2458 (define-key lisp-mode-map "%" 'self-insert-command)
2459 (define-key lisp-mode-map "?" 'self-insert-command)
2460 (define-key lisp-mode-map "=" 'self-insert-command)
2461 (define-key lisp-mode-map "^" 'self-insert-command)
2462
2463 ;; Avoid warnings.
2464 (defvar c-mode-map)
2465 (defvar fortran-mode-map)
2466
2467 ;;-----------------------------------------------
2468 ;; End of line chars.
2469 ;;-----------------------------------------------
2470 (def-completion-wrapper newline :separator)
2471 (def-completion-wrapper newline-and-indent :separator)
2472 (def-completion-wrapper comint-send-input :separator)
2473 (def-completion-wrapper exit-minibuffer :minibuffer-separator)
2474 (def-completion-wrapper eval-print-last-sexp :separator)
2475 (def-completion-wrapper eval-last-sexp :separator)
2476 ;;(def-completion-wrapper minibuffer-complete-and-exit :minibuffer)
2477
2478 ;;-----------------------------------------------
2479 ;; Cursor movement
2480 ;;-----------------------------------------------
2481
2482 (def-completion-wrapper next-line :under-or-before)
2483 (def-completion-wrapper previous-line :under-or-before)
2484 (def-completion-wrapper beginning-of-buffer :under-or-before)
2485 (def-completion-wrapper end-of-buffer :under-or-before)
2486 (def-completion-wrapper beginning-of-line :under-or-before)
2487 (def-completion-wrapper end-of-line :under-or-before)
2488 (def-completion-wrapper forward-char :under-or-before)
2489 (def-completion-wrapper forward-word :under-or-before)
2490 (def-completion-wrapper forward-sexp :under-or-before)
2491 (def-completion-wrapper backward-char :backward-under)
2492 (def-completion-wrapper backward-word :backward-under)
2493 (def-completion-wrapper backward-sexp :backward-under)
2494
2495 (def-completion-wrapper delete-backward-char :backward)
2496 (def-completion-wrapper delete-backward-char-untabify :backward)
2497
2498 ;; Tests --
2499 ;; foobarbiz
2500 ;; foobar
2501 ;; fooquux
2502 ;; fooper
2503 2428
2504 (cmpl-statistics-block 2429 (completion-initialize)))
2505 (record-completion-file-loaded)) 2430
2431;;-----------------------------------------------
2432;; End of line chars.
2433;;-----------------------------------------------
2434(completion-def-wrapper 'newline :separator)
2435(completion-def-wrapper 'newline-and-indent :separator)
2436(completion-def-wrapper 'comint-send-input :separator)
2437(completion-def-wrapper 'exit-minibuffer :minibuffer-separator)
2438(completion-def-wrapper 'eval-print-last-sexp :separator)
2439(completion-def-wrapper 'eval-last-sexp :separator)
2440;;(completion-def-wrapper 'minibuffer-complete-and-exit :minibuffer)
2506 2441
2507 (initialize-completions)) 2442;;-----------------------------------------------
2443;; Cursor movement
2444;;-----------------------------------------------
2508 2445
2509(mapc (lambda (x) (add-to-list 'debug-ignored-errors x)) 2446(completion-def-wrapper 'next-line :under-or-before)
2510 '("^To complete, the point must be after a symbol at least [0-9]* character long\\.$" 2447(completion-def-wrapper 'previous-line :under-or-before)
2448(completion-def-wrapper 'beginning-of-buffer :under-or-before)
2449(completion-def-wrapper 'end-of-buffer :under-or-before)
2450(completion-def-wrapper 'beginning-of-line :under-or-before)
2451(completion-def-wrapper 'end-of-line :under-or-before)
2452(completion-def-wrapper 'forward-char :under-or-before)
2453(completion-def-wrapper 'forward-word :under-or-before)
2454(completion-def-wrapper 'forward-sexp :under-or-before)
2455(completion-def-wrapper 'backward-char :backward-under)
2456(completion-def-wrapper 'backward-word :backward-under)
2457(completion-def-wrapper 'backward-sexp :backward-under)
2458
2459(completion-def-wrapper 'delete-backward-char :backward)
2460(completion-def-wrapper 'delete-backward-char-untabify :backward)
2461
2462;; Old names, non-namespace-clean.
2463(defvaralias 'cmpl-syntax-table 'completion-syntax-table)
2464(defalias 'initialize-completions 'completion-initialize)
2465
2466(dolist (x '("^To complete, the point must be after a symbol at least [0-9]* character long\\.$"
2511 "^The string \".*\" is too short to be saved as a completion\\.$")) 2467 "^The string \".*\" is too short to be saved as a completion\\.$"))
2468 (add-to-list 'debug-ignored-errors x))
2512 2469
2513(provide 'completion) 2470(provide 'completion)
2514 2471
2515;;; arch-tag: 6990dafe-4abd-4a1f-8c42-ffb25e120f5e 2472;; arch-tag: 6990dafe-4abd-4a1f-8c42-ffb25e120f5e
2516;;; completion.el ends here 2473;;; completion.el ends here
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 59a8b341cad..b84568b7060 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -800,13 +800,18 @@ This operation eliminates any saved settings for the group members,
800making them as if they had never been customized at all." 800making them as if they had never been customized at all."
801 (interactive) 801 (interactive)
802 (let ((children custom-options)) 802 (let ((children custom-options))
803 (mapc (lambda (widget) 803 (when (or (and (= 1 (length children))
804 (and (widget-get widget :custom-standard-value) 804 (memq (widget-type (car children))
805 (widget-apply widget :custom-standard-value) 805 '(custom-variable custom-face)))
806 (if (memq (widget-get widget :custom-state) 806 (yes-or-no-p "Really erase all customizations in this buffer? "))
807 '(modified set changed saved rogue)) 807 (mapc (lambda (widget)
808 (widget-apply widget :custom-reset-standard)))) 808 (and (if (widget-get widget :custom-standard-value)
809 children))) 809 (widget-apply widget :custom-standard-value)
810 t)
811 (memq (widget-get widget :custom-state)
812 '(modified set changed saved rogue))
813 (widget-apply widget :custom-reset-standard)))
814 children))))
810 815
811;;; The Customize Commands 816;;; The Customize Commands
812 817
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 449efa5fe66..3e4e32ecc97 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -323,13 +323,18 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
323 (let ((face (nth 0 entry)) 323 (let ((face (nth 0 entry))
324 (spec (nth 1 entry)) 324 (spec (nth 1 entry))
325 (now (nth 2 entry)) 325 (now (nth 2 entry))
326 (comment (nth 3 entry))) 326 (comment (nth 3 entry))
327 oldspec)
327 ;; If FACE is actually an alias, customize the face it 328 ;; If FACE is actually an alias, customize the face it
328 ;; is aliased to. 329 ;; is aliased to.
329 (if (get face 'face-alias) 330 (if (get face 'face-alias)
330 (setq face (get face 'face-alias))) 331 (setq face (get face 'face-alias)))
331 (put face 'saved-face spec) 332
332 (put face 'saved-face-comment comment) 333 (setq oldspec (get face 'theme-face))
334 (when (not (and oldspec (eq 'user (caar oldspec))))
335 (put face 'saved-face spec)
336 (put face 'saved-face-comment comment))
337
333 (custom-push-theme 'theme-face face theme 'set spec) 338 (custom-push-theme 'theme-face face theme 'set spec)
334 (when (or now immediate) 339 (when (or now immediate)
335 (put face 'force-face (if now 'rogue 'immediate))) 340 (put face 'force-face (if now 'rogue 'immediate)))
diff --git a/lisp/custom.el b/lisp/custom.el
index 0c6085c714f..b2a9ba6443c 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1120,9 +1120,14 @@ See `custom-theme-load-themes' for more information on BODY."
1120(defun enable-theme (theme) 1120(defun enable-theme (theme)
1121 "Reenable all variable and face settings defined by THEME. 1121 "Reenable all variable and face settings defined by THEME.
1122The newly enabled theme gets the highest precedence (after `user'). 1122The newly enabled theme gets the highest precedence (after `user').
1123If it is already enabled, just give it highest precedence (after `user')." 1123If it is already enabled, just give it highest precedence (after `user').
1124
1125This signals an error if THEME does not specify any theme
1126settings. Theme settings are set using `load-theme'."
1124 (interactive "SEnable Custom theme: ") 1127 (interactive "SEnable Custom theme: ")
1125 (let ((settings (get theme 'theme-settings))) 1128 (let ((settings (get theme 'theme-settings)))
1129 (if (and (not (eq theme 'user)) (null settings))
1130 (error "No theme settings defined in %s." (symbol-name theme)))
1126 (dolist (s settings) 1131 (dolist (s settings)
1127 (let* ((prop (car s)) 1132 (let* ((prop (car s))
1128 (symbol (cadr s)) 1133 (symbol (cadr s))
@@ -1130,7 +1135,8 @@ If it is already enabled, just give it highest precedence (after `user')."
1130 (put symbol prop (cons (cddr s) (assq-delete-all theme spec-list))) 1135 (put symbol prop (cons (cddr s) (assq-delete-all theme spec-list)))
1131 (if (eq prop 'theme-value) 1136 (if (eq prop 'theme-value)
1132 (custom-theme-recalc-variable symbol) 1137 (custom-theme-recalc-variable symbol)
1133 (custom-theme-recalc-face symbol))))) 1138 (if (facep symbol)
1139 (custom-theme-recalc-face symbol))))))
1134 (setq custom-enabled-themes 1140 (setq custom-enabled-themes
1135 (cons theme (delq theme custom-enabled-themes))) 1141 (cons theme (delq theme custom-enabled-themes)))
1136 ;; `user' must always be the highest-precedence enabled theme. 1142 ;; `user' must always be the highest-precedence enabled theme.
diff --git a/lisp/dabbrev.el b/lisp/dabbrev.el
index b330f2b10d7..ea99030d943 100644
--- a/lisp/dabbrev.el
+++ b/lisp/dabbrev.el
@@ -373,11 +373,7 @@ function pointed out by `dabbrev-friend-buffer-function' to find the
373completions. 373completions.
374 374
375If the prefix argument is 16 (which comes from C-u C-u), 375If the prefix argument is 16 (which comes from C-u C-u),
376then it searches *all* buffers. 376then it searches *all* buffers."
377
378With no prefix argument, it reuses an old completion list
379if there is a suitable one already."
380
381 (interactive "*P") 377 (interactive "*P")
382 (dabbrev--reset-global-variables) 378 (dabbrev--reset-global-variables)
383 (let* ((dabbrev-check-other-buffers (and arg t)) 379 (let* ((dabbrev-check-other-buffers (and arg t))
@@ -392,57 +388,43 @@ if there is a suitable one already."
392 (my-obarray dabbrev--last-obarray) 388 (my-obarray dabbrev--last-obarray)
393 init) 389 init)
394 (save-excursion 390 (save-excursion
395 (if (and (null arg) 391 ;;--------------------------------
396 my-obarray 392 ;; New abbreviation to expand.
397 (or (eq dabbrev--last-completion-buffer (current-buffer)) 393 ;;--------------------------------
398 (and (window-minibuffer-p (selected-window)) 394 (setq dabbrev--last-abbreviation abbrev)
399 (eq dabbrev--last-completion-buffer 395 ;; Find all expansion
400 (dabbrev--minibuffer-origin)))) 396 (let ((completion-list
401 dabbrev--last-abbreviation 397 (dabbrev--find-all-expansions abbrev ignore-case-p))
402 (>= (length abbrev) (length dabbrev--last-abbreviation)) 398 (completion-ignore-case ignore-case-p))
403 (string= dabbrev--last-abbreviation 399 ;; Make an obarray with all expansions
404 (substring abbrev 0 400 (setq my-obarray (make-vector (length completion-list) 0))
405 (length dabbrev--last-abbreviation))) 401 (or (> (length my-obarray) 0)
406 (setq init (try-completion abbrev my-obarray))) 402 (error "No dynamic expansion for \"%s\" found%s"
407 ;; We can reuse the existing completion list. 403 abbrev
408 nil 404 (if dabbrev--check-other-buffers "" " in this-buffer")))
409 ;;-------------------------------- 405 (cond
410 ;; New abbreviation to expand. 406 ((or (not ignore-case-p)
411 ;;-------------------------------- 407 (not dabbrev-case-replace))
412 (setq dabbrev--last-abbreviation abbrev) 408 (mapc (function (lambda (string)
413 ;; Find all expansion 409 (intern string my-obarray)))
414 (let ((completion-list 410 completion-list))
415 (dabbrev--find-all-expansions abbrev ignore-case-p)) 411 ((string= abbrev (upcase abbrev))
416 (completion-ignore-case ignore-case-p)) 412 (mapc (function (lambda (string)
417 ;; Make an obarray with all expansions 413 (intern (upcase string) my-obarray)))
418 (setq my-obarray (make-vector (length completion-list) 0)) 414 completion-list))
419 (or (> (length my-obarray) 0) 415 ((string= (substring abbrev 0 1)
420 (error "No dynamic expansion for \"%s\" found%s" 416 (upcase (substring abbrev 0 1)))
421 abbrev 417 (mapc (function (lambda (string)
422 (if dabbrev--check-other-buffers "" " in this-buffer"))) 418 (intern (capitalize string) my-obarray)))
423 (cond 419 completion-list))
424 ((or (not ignore-case-p) 420 (t
425 (not dabbrev-case-replace)) 421 (mapc (function (lambda (string)
426 (mapc (function (lambda (string) 422 (intern (downcase string) my-obarray)))
427 (intern string my-obarray))) 423 completion-list)))
428 completion-list)) 424 (setq dabbrev--last-obarray my-obarray)
429 ((string= abbrev (upcase abbrev)) 425 (setq dabbrev--last-completion-buffer (current-buffer))
430 (mapc (function (lambda (string) 426 ;; Find the longest common string.
431 (intern (upcase string) my-obarray))) 427 (setq init (try-completion abbrev my-obarray))))
432 completion-list))
433 ((string= (substring abbrev 0 1)
434 (upcase (substring abbrev 0 1)))
435 (mapc (function (lambda (string)
436 (intern (capitalize string) my-obarray)))
437 completion-list))
438 (t
439 (mapc (function (lambda (string)
440 (intern (downcase string) my-obarray)))
441 completion-list)))
442 (setq dabbrev--last-obarray my-obarray)
443 (setq dabbrev--last-completion-buffer (current-buffer))
444 ;; Find the longest common string.
445 (setq init (try-completion abbrev my-obarray)))))
446 ;;-------------------------------- 428 ;;--------------------------------
447 ;; Let the user choose between the expansions 429 ;; Let the user choose between the expansions
448 ;;-------------------------------- 430 ;;--------------------------------
diff --git a/lisp/dframe.el b/lisp/dframe.el
index 4be0ee8f097..56bbdc36c01 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -1,6 +1,6 @@
1;;; dframe --- dedicate frame support modes 1;;; dframe --- dedicate frame support modes
2 2
3;;; Copyright (C) 1996, 97, 98, 99, 2000, 01, 02, 03, 04 Free Software Foundation 3;;; Copyright (C) 1996, 97, 98, 99, 2000, 01, 02, 03, 04, 05 Free Software Foundation
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6;; Keywords: file, tags, tools 6;; Keywords: file, tags, tools
@@ -509,7 +509,7 @@ a cons cell indicationg a position of the form (LEFT . TOP)."
509 (setq newleft (+ pfx pfw 5) 509 (setq newleft (+ pfx pfw 5)
510 newtop pfy)) 510 newtop pfy))
511 ((eq location 'left) 511 ((eq location 'left)
512 (setq newleft (+ pfx 10 nfw) 512 (setq newleft (- pfx 10 nfw)
513 newtop pfy)) 513 newtop pfy))
514 ((eq location 'left-right) 514 ((eq location 'left-right)
515 (setq newleft 515 (setq newleft
diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el
index e15c92d4bc9..9fd9f45ff03 100644
--- a/lisp/ediff-wind.el
+++ b/lisp/ediff-wind.el
@@ -955,8 +955,9 @@ into icons, regardless of the window manager."
955 (minibuffer-window 955 (minibuffer-window
956 designated-minibuffer-frame)) 956 designated-minibuffer-frame))
957 (cons 'width fwidth) 957 (cons 'width fwidth)
958 (cons 'height fheight)) 958 (cons 'height fheight)
959 ) 959 (cons 'user-position t)
960 ))
960 961
961 ;; adjust autoraise 962 ;; adjust autoraise
962 (setq adjusted-parameters 963 (setq adjusted-parameters
@@ -1135,9 +1136,8 @@ It assumes that it is called from within the control buffer."
1135 (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params))))) 1136 (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params)))))
1136 (cons 'width (cdr (assoc 'width frame-A-params)))) 1137 (cons 'width (cdr (assoc 'width frame-A-params))))
1137 ediff-wide-display-frame frame-A) 1138 ediff-wide-display-frame frame-A)
1138 (modify-frame-parameters frame-A (list (cons 'left cw) 1139 (modify-frame-parameters
1139 (cons 'width wd))))) 1140 frame-A `((left . ,cw) (width . ,wd) (user-position t)))))
1140
1141 1141
1142 1142
1143;; Revise the mode line to display which difference we have selected 1143;; Revise the mode line to display which difference we have selected
diff --git a/lisp/ediff.el b/lisp/ediff.el
index 696fc9668e6..32ca177388e 100644
--- a/lisp/ediff.el
+++ b/lisp/ediff.el
@@ -8,7 +8,7 @@
8;; Keywords: comparing, merging, patching, tools, unix 8;; Keywords: comparing, merging, patching, tools, unix
9 9
10(defconst ediff-version "2.80.1" "The current version of Ediff") 10(defconst ediff-version "2.80.1" "The current version of Ediff")
11(defconst ediff-date "October 5, 2005" "Date of last update") 11(defconst ediff-date "November 25, 2005" "Date of last update")
12 12
13 13
14;; This file is part of GNU Emacs. 14;; This file is part of GNU Emacs.
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index ff795e6de77..2356483b233 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -135,6 +135,15 @@ or macro definition or a defcustom)."
135 (if (equal setter ''custom-set-minor-mode) 135 (if (equal setter ''custom-set-minor-mode)
136 `(put ',varname 'custom-set 'custom-set-minor-mode)))))) 136 `(put ',varname 'custom-set 'custom-set-minor-mode))))))
137 137
138 ((eq car 'defgroup)
139 ;; In Emacs this is normally handled separately by cus-dep.el, but for
140 ;; third party packages, it can be convenient to explicitly autoload
141 ;; a group.
142 (let ((groupname (nth 1 form)))
143 `(let ((loads (get ',groupname 'custom-loads)))
144 (if (member ',file loads) nil
145 (put ',groupname 'custom-loads (cons ',file loads))))))
146
138 ;; nil here indicates that this is not a special autoload form. 147 ;; nil here indicates that this is not a special autoload form.
139 (t nil)))) 148 (t nil))))
140 149
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 74c77128059..244029491de 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2175,7 +2175,12 @@ copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors.
2175 (symbol-name (car args)) "")))) 2175 (symbol-name (car args)) ""))))
2176 ((eq opt :constructor) 2176 ((eq opt :constructor)
2177 (if (cdr args) 2177 (if (cdr args)
2178 (push args constrs) 2178 (progn
2179 ;; If this defines a constructor of the same name as
2180 ;; the default one, don't define the default.
2181 (if (eq (car args) constructor)
2182 (setq constructor nil))
2183 (push args constrs))
2179 (if args (setq constructor (car args))))) 2184 (if args (setq constructor (car args)))))
2180 ((eq opt :copier) 2185 ((eq opt :copier)
2181 (if args (setq copier (car args)))) 2186 (if args (setq copier (car args))))
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index 426c79e51c3..569847a0ea1 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -206,18 +206,28 @@ This variable is set by the master function.")
206 "Master function symbol.") 206 "Master function symbol.")
207 207
208(defvar elp-not-profilable 208(defvar elp-not-profilable
209 '(elp-wrapper elp-elapsed-time error call-interactively apply current-time interactive-p) 209 ;; First, the functions used inside each instrumented function:
210 '(elp-wrapper called-interactively-p
211 ;; Then the functions used by the above functions. I used
212 ;; (delq nil (mapcar (lambda (x) (and (symbolp x) (fboundp x) x))
213 ;; (aref (symbol-function 'elp-wrapper) 2)))
214 ;; to help me find this list.
215 error call-interactively apply current-time)
210 "List of functions that cannot be profiled. 216 "List of functions that cannot be profiled.
211Those functions are used internally by the profiling code and profiling 217Those functions are used internally by the profiling code and profiling
212them would thus lead to infinite recursion.") 218them would thus lead to infinite recursion.")
213 219
214(defun elp-not-profilable-p (fun) 220(defun elp-profilable-p (fun)
215 (or (memq fun elp-not-profilable) 221 (and (symbolp fun)
216 (keymapp fun) 222 (fboundp fun)
217 (condition-case nil 223 (not (or (memq fun elp-not-profilable)
218 (when (subrp (symbol-function fun)) 224 (keymapp fun)
219 (eq 'unevalled (cdr (subr-arity (symbol-function fun))))) 225 (memq (car-safe (symbol-function fun)) '(autoload macro))
220 (error nil)))) 226 (condition-case nil
227 (when (subrp (indirect-function fun))
228 (eq 'unevalled
229 (cdr (subr-arity (indirect-function fun)))))
230 (error nil))))))
221 231
222 232
223;;;###autoload 233;;;###autoload
@@ -237,9 +247,6 @@ FUNSYM must be a symbol of a defined function."
237 (let* ((funguts (symbol-function funsym)) 247 (let* ((funguts (symbol-function funsym))
238 (infovec (vector 0 0 funguts)) 248 (infovec (vector 0 0 funguts))
239 (newguts '(lambda (&rest args)))) 249 (newguts '(lambda (&rest args))))
240 ;; We cannot profile functions used internally during profiling.
241 (when (elp-not-profilable-p funsym)
242 (error "ELP cannot profile the function: %s" funsym))
243 ;; we cannot profile macros 250 ;; we cannot profile macros
244 (and (eq (car-safe funguts) 'macro) 251 (and (eq (car-safe funguts) 'macro)
245 (error "ELP cannot profile macro: %s" funsym)) 252 (error "ELP cannot profile macro: %s" funsym))
@@ -252,6 +259,9 @@ FUNSYM must be a symbol of a defined function."
252 ;; type functionality (i.e. it shouldn't execute the function). 259 ;; type functionality (i.e. it shouldn't execute the function).
253 (and (eq (car-safe funguts) 'autoload) 260 (and (eq (car-safe funguts) 'autoload)
254 (error "ELP cannot profile autoloaded function: %s" funsym)) 261 (error "ELP cannot profile autoloaded function: %s" funsym))
262 ;; We cannot profile functions used internally during profiling.
263 (unless (elp-profilable-p funsym)
264 (error "ELP cannot profile the function: %s" funsym))
255 ;; put rest of newguts together 265 ;; put rest of newguts together
256 (if (commandp funsym) 266 (if (commandp funsym)
257 (setq newguts (append newguts '((interactive))))) 267 (setq newguts (append newguts '((interactive)))))
@@ -344,18 +354,15 @@ Use optional LIST if provided instead."
344For example, to instrument all ELP functions, do the following: 354For example, to instrument all ELP functions, do the following:
345 355
346 \\[elp-instrument-package] RET elp- RET" 356 \\[elp-instrument-package] RET elp- RET"
347 (interactive "sPrefix of package to instrument: ") 357 (interactive
358 (list (completing-read "Prefix of package to instrument: "
359 obarray 'elp-profilable-p)))
348 (if (zerop (length prefix)) 360 (if (zerop (length prefix))
349 (error "Instrumenting all Emacs functions would render Emacs unusable")) 361 (error "Instrumenting all Emacs functions would render Emacs unusable"))
350 (elp-instrument-list 362 (elp-instrument-list
351 (mapcar 363 (mapcar
352 'intern 364 'intern
353 (all-completions 365 (all-completions prefix obarray 'elp-profilable-p))))
354 prefix obarray
355 (lambda (sym)
356 (and (fboundp sym)
357 (not (or (memq (car-safe (symbol-function sym)) '(autoload macro))
358 (elp-not-profilable-p sym)))))))))
359 366
360(defun elp-restore-list (&optional list) 367(defun elp-restore-list (&optional list)
361 "Restore the original definitions for all functions in `elp-function-list'. 368 "Restore the original definitions for all functions in `elp-function-list'.
@@ -488,12 +495,12 @@ original definition, use \\[elp-restore-function] or \\[elp-restore-all]."
488 ;; check for very large or small numbers 495 ;; check for very large or small numbers
489 (if (string-match "^\\(.*\\)\\(e[+-].*\\)$" number) 496 (if (string-match "^\\(.*\\)\\(e[+-].*\\)$" number)
490 (concat (substring 497 (concat (substring
491 (substring number (match-beginning 1) (match-end 1)) 498 (match-string 1 number)
492 0 499 0
493 (- width (match-end 2) (- (match-beginning 2)) 3)) 500 (- width (match-end 2) (- (match-beginning 2)) 3))
494 "..." 501 "..."
495 (substring number (match-beginning 2) (match-end 2))) 502 (match-string 2 number))
496 (concat (substring number 0 width))))) 503 (substring number 0 width))))
497 504
498(defun elp-output-result (resultvec) 505(defun elp-output-result (resultvec)
499 ;; output the RESULTVEC into the results buffer. RESULTVEC is a 4 or 506 ;; output the RESULTVEC into the results buffer. RESULTVEC is a 4 or
@@ -528,20 +535,15 @@ original definition, use \\[elp-restore-function] or \\[elp-restore-all]."
528 535
529(defvar elp-results-symname-map 536(defvar elp-results-symname-map
530 (let ((map (make-sparse-keymap))) 537 (let ((map (make-sparse-keymap)))
531 (define-key map [mouse-2] 'elp-results-jump-to-definition-by-mouse) 538 (define-key map [mouse-2] 'elp-results-jump-to-definition)
532 (define-key map "\C-m" 'elp-results-jump-to-definition) 539 (define-key map "\C-m" 'elp-results-jump-to-definition)
533 map) 540 map)
534 "Keymap used on the function name column." ) 541 "Keymap used on the function name column." )
535 542
536(defun elp-results-jump-to-definition-by-mouse (event) 543(defun elp-results-jump-to-definition (&optional event)
537 "Jump to the definition of the function under the place specified by EVENT."
538 (interactive "e")
539 (posn-set-point (event-end event))
540 (elp-results-jump-to-definition))
541
542(defun elp-results-jump-to-definition ()
543 "Jump to the definition of the function under the point." 544 "Jump to the definition of the function under the point."
544 (interactive) 545 (interactive (list last-nonmenu-event))
546 (if event (posn-set-point (event-end event)))
545 (find-function (get-text-property (point) 'elp-symname))) 547 (find-function (get-text-property (point) 'elp-symname)))
546 548
547(defun elp-output-insert-symname (symname) 549(defun elp-output-insert-symname (symname)
@@ -550,7 +552,7 @@ original definition, use \\[elp-restore-function] or \\[elp-restore-all]."
550 'elp-symname (intern symname) 552 'elp-symname (intern symname)
551 'keymap elp-results-symname-map 553 'keymap elp-results-symname-map
552 'mouse-face 'highlight 554 'mouse-face 'highlight
553 'help-echo (substitute-command-keys "\\{elp-results-symname-map}")))) 555 'help-echo "mouse-2 or RET jumps to definition")))
554 556
555;;;###autoload 557;;;###autoload
556(defun elp-results () 558(defun elp-results ()
@@ -630,5 +632,5 @@ displayed."
630 632
631(provide 'elp) 633(provide 'elp)
632 634
633;;; arch-tag: c4eef311-9b3e-4bb2-8a54-3485d41b4eb1 635;; arch-tag: c4eef311-9b3e-4bb2-8a54-3485d41b4eb1
634;;; elp.el ends here 636;;; elp.el ends here
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index d83ebd543cd..0590af50249 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -65,6 +65,7 @@
65;; List of overlays used to display current rectangle. 65;; List of overlays used to display current rectangle.
66(defvar cua--rectangle-overlays nil) 66(defvar cua--rectangle-overlays nil)
67(make-variable-buffer-local 'cua--rectangle-overlays) 67(make-variable-buffer-local 'cua--rectangle-overlays)
68(put 'cua--rectangle-overlays 'permanent-local t)
68 69
69(defvar cua--overlay-keymap 70(defvar cua--overlay-keymap
70 (let ((map (make-sparse-keymap))) 71 (let ((map (make-sparse-keymap)))
@@ -781,7 +782,7 @@ If command is repeated at same position, delete the rectangle."
781 (make-string 782 (make-string
782 (- l cl0 (if (and (= le pl) (/= le lb)) 1 0)) 783 (- l cl0 (if (and (= le pl) (/= le lb)) 1 0))
783 (if cua--virtual-edges-debug ?. ?\s)) 784 (if cua--virtual-edges-debug ?. ?\s))
784 'face 'default)) 785 'face (or (get-text-property (1- s) 'face) 'default)))
785 (if (/= pl le) 786 (if (/= pl le)
786 (setq s (1- s)))) 787 (setq s (1- s))))
787 (cond 788 (cond
@@ -1393,7 +1394,12 @@ With prefix arg, indent to that column."
1393 (if (and mark-active 1394 (if (and mark-active
1394 (not deactivate-mark)) 1395 (not deactivate-mark))
1395 (cua--highlight-rectangle) 1396 (cua--highlight-rectangle)
1396 (cua--deactivate-rectangle))) 1397 (cua--deactivate-rectangle))
1398 (when cua--rectangle-overlays
1399 ;; clean-up after revert-buffer
1400 (mapcar (function delete-overlay) cua--rectangle-overlays)
1401 (setq cua--rectangle-overlays nil)
1402 (setq deactivate-mark t)))
1397 (when cua--rect-undo-set-point 1403 (when cua--rect-undo-set-point
1398 (goto-char cua--rect-undo-set-point) 1404 (goto-char cua--rect-undo-set-point)
1399 (setq cua--rect-undo-set-point nil))) 1405 (setq cua--rect-undo-set-point nil)))
diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el
index 2af0a9bbfa8..c8a5d53b504 100644
--- a/lisp/emulation/viper-keym.el
+++ b/lisp/emulation/viper-keym.el
@@ -200,9 +200,10 @@ Enter as a sexp. Examples: \"\\C-z\", [(control ?z)]."
200 :type 'string 200 :type 'string
201 :group 'viper) 201 :group 'viper)
202 202
203(defcustom viper-ESC-key [(escape)] ; "\e" 203(defcustom viper-ESC-key (if (viper-window-display-p) [(escape)] "\e")
204 "Key used to ESC. 204 "Key used to ESC.
205Enter as a sexp. Examples: \"\\e\", [(escape)]." 205Enter as a sexp. Examples: \"\\e\", [(escape)].
206If running in a terminal, [(escape)] is not understood, so must use \"\\e\"."
206 :type 'sexp 207 :type 'sexp
207 :group 'viper 208 :group 'viper
208 :set (lambda (symbol value) 209 :set (lambda (symbol value)
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index 7bcaf8be399..754eff3906d 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -9,7 +9,7 @@
9;; Author: Michael Kifer <kifer@cs.stonybrook.edu> 9;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
10;; Keywords: emulations 10;; Keywords: emulations
11 11
12(defconst viper-version "3.11.5 of October 5, 2005" 12(defconst viper-version "3.11.5 of November 25, 2005"
13 "The current version of Viper") 13 "The current version of Viper")
14 14
15;; This file is part of GNU Emacs. 15;; This file is part of GNU Emacs.
@@ -429,7 +429,6 @@ widget."
429 occur-mode 429 occur-mode
430 430
431 mh-folder-mode 431 mh-folder-mode
432 mail-mode
433 gnus-group-mode 432 gnus-group-mode
434 gnus-summary-mode 433 gnus-summary-mode
435 434
@@ -442,6 +441,8 @@ widget."
442 441
443 rcirc-mode 442 rcirc-mode
444 443
444 jde-javadoc-checker-report-mode
445
445 view-mode 446 view-mode
446 vm-mode 447 vm-mode
447 vm-summary-mode) 448 vm-summary-mode)
diff --git a/lisp/files.el b/lisp/files.el
index 7bd01f93841..6a049f8f0f1 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3154,7 +3154,7 @@ Uses `backup-directory-alist' in the same way as does
3154This function returns a relative file name which is equivalent to FILENAME 3154This function returns a relative file name which is equivalent to FILENAME
3155when used with that default directory as the default. 3155when used with that default directory as the default.
3156If FILENAME and DIRECTORY lie on different machines or on different drives 3156If FILENAME and DIRECTORY lie on different machines or on different drives
3157on a DOS/Windows machine, it returns FILENAME on expanded form." 3157on a DOS/Windows machine, it returns FILENAME in expanded form."
3158 (save-match-data 3158 (save-match-data
3159 (setq directory 3159 (setq directory
3160 (file-name-as-directory (expand-file-name (or directory 3160 (file-name-as-directory (expand-file-name (or directory
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 1c9ccff2432..47bc5152501 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1123,8 +1123,9 @@ delimit the region to fontify."
1123 (font-lock-fontify-region (point) (mark))) 1123 (font-lock-fontify-region (point) (mark)))
1124 ((error quit) (message "Fontifying block...%s" error-data))))))) 1124 ((error quit) (message "Fontifying block...%s" error-data)))))))
1125 1125
1126(if (boundp 'facemenu-keymap) 1126(unless (featurep 'facemenu)
1127 (define-key facemenu-keymap "\M-o" 'font-lock-fontify-block)) 1127 (error "facemenu must be loaded before font-lock"))
1128(define-key facemenu-keymap "\M-o" 'font-lock-fontify-block)
1128 1129
1129;;; End of Fontification functions. 1130;;; End of Fontification functions.
1130 1131
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index b6d62bf9b83..01babcddc86 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,9 @@
12005-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * gnus-delay.el (gnus-delay-group): Don't autoload.
4 It's useless and could trigger a bug in cus-dep.el causing ldefs-boot
5 to be re-loaded when customizing the `gnus-delay' group.
6
12005-11-19 Chong Yidong <cyd@stupidchicken.com> 72005-11-19 Chong Yidong <cyd@stupidchicken.com>
2 8
3 * message.el: Revert last changes. 9 * message.el: Revert last changes.
diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index a664ff8ba00..a427aaefab8 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -39,7 +39,6 @@
39(require 'gnus-draft) 39(require 'gnus-draft)
40(autoload 'parse-time-string "parse-time" nil nil) 40(autoload 'parse-time-string "parse-time" nil nil)
41 41
42;;;###autoload
43(defgroup gnus-delay nil 42(defgroup gnus-delay nil
44 "Arrange for sending postings later." 43 "Arrange for sending postings later."
45 :version "22.1" 44 :version "22.1"
@@ -195,5 +194,5 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil."
195;; coding: iso-8859-1 194;; coding: iso-8859-1
196;; End: 195;; End:
197 196
198;;; arch-tag: fb2ad634-a897-4142-a503-f5991ec2349d 197;; arch-tag: fb2ad634-a897-4142-a503-f5991ec2349d
199;;; gnus-delay.el ends here 198;;; gnus-delay.el ends here
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 6d95827c3e4..6bc41e7b947 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -223,7 +223,6 @@ KIND should be `var' for a variable or `subr' for a subroutine."
223 (concat "src/" file) 223 (concat "src/" file)
224 file))))) 224 file)))))
225 225
226;;;###autoload
227(defface help-argument-name '((((supports :slant italic)) :inherit italic)) 226(defface help-argument-name '((((supports :slant italic)) :inherit italic))
228 "Face to highlight argument names in *Help* buffers." 227 "Face to highlight argument names in *Help* buffers."
229 :group 'help) 228 :group 'help)
@@ -436,7 +435,9 @@ face (according to `face-differs-from-default-p')."
436 (format "\nMacro: %s" (format-kbd-macro def))) 435 (format "\nMacro: %s" (format-kbd-macro def)))
437 (t "[Missing arglist. Please make a bug report.]"))) 436 (t "[Missing arglist. Please make a bug report.]")))
438 (high (help-highlight-arguments use doc))) 437 (high (help-highlight-arguments use doc)))
439 (insert (car high) "\n") 438 (let ((fill-begin (point)))
439 (insert (car high) "\n")
440 (fill-region fill-begin (point)))
440 (setq doc (cdr high)))) 441 (setq doc (cdr high))))
441 (let ((obsolete (and 442 (let ((obsolete (and
442 ;; function might be a lambda construct. 443 ;; function might be a lambda construct.
diff --git a/lisp/help.el b/lisp/help.el
index 5141c06981a..cd95af0e866 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -38,7 +38,57 @@
38(add-hook 'temp-buffer-setup-hook 'help-mode-setup) 38(add-hook 'temp-buffer-setup-hook 'help-mode-setup)
39(add-hook 'temp-buffer-show-hook 'help-mode-finish) 39(add-hook 'temp-buffer-show-hook 'help-mode-finish)
40 40
41(defvar help-map (make-sparse-keymap) 41(defvar help-map
42 (let ((map (make-sparse-keymap)))
43 (define-key map (char-to-string help-char) 'help-for-help)
44 (define-key map [help] 'help-for-help)
45 (define-key map [f1] 'help-for-help)
46 (define-key map "." 'display-local-help)
47 (define-key map "?" 'help-for-help)
48
49 (define-key map "\C-c" 'describe-copying)
50 (define-key map "\C-d" 'describe-distribution)
51 (define-key map "\C-e" 'view-emacs-problems)
52 (define-key map "\C-f" 'view-emacs-FAQ)
53 (define-key map "\C-m" 'view-order-manuals)
54 (define-key map "\C-n" 'view-emacs-news)
55 (define-key map "\C-p" 'describe-project)
56 (define-key map "\C-t" 'view-todo)
57 (define-key map "\C-w" 'describe-no-warranty)
58
59 ;; This does not fit the pattern, but it is natural given the C-\ command.
60 (define-key map "\C-\\" 'describe-input-method)
61
62 (define-key map "C" 'describe-coding-system)
63 (define-key map "F" 'Info-goto-emacs-command-node)
64 (define-key map "I" 'describe-input-method)
65 (define-key map "K" 'Info-goto-emacs-key-command-node)
66 (define-key map "L" 'describe-language-environment)
67 (define-key map "S" 'info-lookup-symbol)
68
69 (define-key map "a" 'apropos-command)
70 (define-key map "b" 'describe-bindings)
71 (define-key map "c" 'describe-key-briefly)
72 (define-key map "d" 'apropos-documentation)
73 (define-key map "e" 'view-echo-area-messages)
74 (define-key map "f" 'describe-function)
75 (define-key map "h" 'view-hello-file)
76
77 (define-key map "i" 'info)
78 (define-key map "4i" 'info-other-window)
79
80 (define-key map "k" 'describe-key)
81 (define-key map "l" 'view-lossage)
82 (define-key map "m" 'describe-mode)
83 (define-key map "n" 'view-emacs-news)
84 (define-key map "p" 'finder-by-keyword)
85 (define-key map "r" 'info-emacs-manual)
86 (define-key map "s" 'describe-syntax)
87 (define-key map "t" 'help-with-tutorial)
88 (define-key map "w" 'where-is)
89 (define-key map "v" 'describe-variable)
90 (define-key map "q" 'help-quit)
91 map)
42 "Keymap for characters following the Help key.") 92 "Keymap for characters following the Help key.")
43 93
44(define-key global-map (char-to-string help-char) 'help-command) 94(define-key global-map (char-to-string help-char) 'help-command)
@@ -46,73 +96,9 @@
46(define-key global-map [f1] 'help-command) 96(define-key global-map [f1] 'help-command)
47(fset 'help-command help-map) 97(fset 'help-command help-map)
48 98
49(define-key help-map (char-to-string help-char) 'help-for-help)
50(define-key help-map [help] 'help-for-help)
51(define-key help-map [f1] 'help-for-help)
52(define-key help-map "." 'display-local-help)
53(define-key help-map "?" 'help-for-help)
54
55(define-key help-map "\C-c" 'describe-copying)
56(define-key help-map "\C-d" 'describe-distribution)
57(define-key help-map "\C-e" 'view-emacs-problems)
58(define-key help-map "\C-f" 'view-emacs-FAQ)
59(define-key help-map "\C-m" 'view-order-manuals)
60(define-key help-map "\C-n" 'view-emacs-news)
61(define-key help-map "\C-p" 'describe-project)
62(define-key help-map "\C-t" 'view-todo)
63(define-key help-map "\C-w" 'describe-no-warranty)
64
65;; This does not fit the pattern, but it is natural given the C-\ command.
66(define-key help-map "\C-\\" 'describe-input-method)
67
68(define-key help-map "C" 'describe-coding-system)
69(define-key help-map "F" 'Info-goto-emacs-command-node)
70(define-key help-map "I" 'describe-input-method)
71(define-key help-map "K" 'Info-goto-emacs-key-command-node)
72(define-key help-map "L" 'describe-language-environment)
73(define-key help-map "S" 'info-lookup-symbol)
74
75(define-key help-map "a" 'apropos-command)
76
77(define-key help-map "b" 'describe-bindings)
78
79(define-key help-map "c" 'describe-key-briefly)
80
81(define-key help-map "d" 'apropos-documentation)
82
83(define-key help-map "e" 'view-echo-area-messages)
84
85(define-key help-map "f" 'describe-function)
86
87(define-key help-map "h" 'view-hello-file)
88
89(define-key help-map "i" 'info)
90(define-key help-map "4i" 'info-other-window)
91
92(define-key help-map "k" 'describe-key)
93
94(define-key help-map "l" 'view-lossage)
95
96(define-key help-map "m" 'describe-mode)
97
98(define-key help-map "n" 'view-emacs-news)
99
100(define-key help-map "p" 'finder-by-keyword)
101(autoload 'finder-by-keyword "finder" 99(autoload 'finder-by-keyword "finder"
102 "Find packages matching a given keyword." t) 100 "Find packages matching a given keyword." t)
103 101
104(define-key help-map "r" 'info-emacs-manual)
105
106(define-key help-map "s" 'describe-syntax)
107
108(define-key help-map "t" 'help-with-tutorial)
109
110(define-key help-map "w" 'where-is)
111
112(define-key help-map "v" 'describe-variable)
113
114(define-key help-map "q" 'help-quit)
115
116;; insert-button makes the action nil if it is not store somewhere 102;; insert-button makes the action nil if it is not store somewhere
117(defvar help-button-cache nil) 103(defvar help-button-cache nil)
118 104
@@ -590,7 +576,7 @@ the last key hit are used."
590 (goto-char position))) 576 (goto-char position)))
591 ;; Ok, now look up the key and name the command. 577 ;; Ok, now look up the key and name the command.
592 (let ((defn (or (string-key-binding key) 578 (let ((defn (or (string-key-binding key)
593 (key-binding key))) 579 (key-binding key t)))
594 key-desc) 580 key-desc)
595 ;; Don't bother user with strings from (e.g.) the select-paste menu. 581 ;; Don't bother user with strings from (e.g.) the select-paste menu.
596 (if (stringp (aref key (1- (length key)))) 582 (if (stringp (aref key (1- (length key))))
@@ -615,7 +601,7 @@ KEY can be any kind of a key sequence; it can include keyboard events,
615mouse events, and/or menu events. When calling from a program, 601mouse events, and/or menu events. When calling from a program,
616pass KEY as a string or a vector. 602pass KEY as a string or a vector.
617 603
618If non-nil, UNTRANSLATED is a vector of the correspondinguntranslated events. 604If non-nil, UNTRANSLATED is a vector of the corresponding untranslated events.
619It can also be a number, in which case the untranslated events from 605It can also be a number, in which case the untranslated events from
620the last key sequence entered are used." 606the last key sequence entered are used."
621 ;; UP-EVENT is the up-event that was discarded by reading KEY, or nil. 607 ;; UP-EVENT is the up-event that was discarded by reading KEY, or nil.
@@ -635,7 +621,7 @@ the last key sequence entered are used."
635 (when (windowp window) 621 (when (windowp window)
636 (set-buffer (window-buffer window)) 622 (set-buffer (window-buffer window))
637 (goto-char position)) 623 (goto-char position))
638 (let ((defn (or (string-key-binding key) (key-binding key)))) 624 (let ((defn (or (string-key-binding key) (key-binding key t))))
639 (if (or (null defn) (integerp defn) (equal defn 'undefined)) 625 (if (or (null defn) (integerp defn) (equal defn 'undefined))
640 (message "%s is undefined" (help-key-description key untranslated)) 626 (message "%s is undefined" (help-key-description key untranslated))
641 (help-setup-xref (list #'describe-function defn) (interactive-p)) 627 (help-setup-xref (list #'describe-function defn) (interactive-p))
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 8d565ab61a8..4c61be5529e 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -89,16 +89,6 @@
89 :link '(custom-manual "(emacs)Highlight Interactively") 89 :link '(custom-manual "(emacs)Highlight Interactively")
90 :group 'font-lock) 90 :group 'font-lock)
91 91
92;;;###autoload
93(defcustom hi-lock-mode nil
94 "Toggle hi-lock, for interactively adding font-lock text-highlighting patterns."
95 :set (lambda (symbol value)
96 (hi-lock-mode (or value 0)))
97 :initialize 'custom-initialize-default
98 :type 'boolean
99 :group 'hi-lock
100 :require 'hi-lock)
101
102(defcustom hi-lock-file-patterns-range 10000 92(defcustom hi-lock-file-patterns-range 10000
103 "Limit of search in a buffer for hi-lock patterns. 93 "Limit of search in a buffer for hi-lock patterns.
104When a file is visited and hi-lock mode is on patterns starting 94When a file is visited and hi-lock mode is on patterns starting
@@ -244,19 +234,11 @@ calls."
244(define-key hi-lock-map "\C-xwr" 'unhighlight-regexp) 234(define-key hi-lock-map "\C-xwr" 'unhighlight-regexp)
245(define-key hi-lock-map "\C-xwb" 'hi-lock-write-interactive-patterns) 235(define-key hi-lock-map "\C-xwb" 'hi-lock-write-interactive-patterns)
246 236
247(unless (assq 'hi-lock-mode minor-mode-map-alist)
248 (setq minor-mode-map-alist (cons (cons 'hi-lock-mode hi-lock-map)
249 minor-mode-map-alist)))
250
251(unless (assq 'hi-lock-mode minor-mode-alist)
252 (setq minor-mode-alist (cons '(hi-lock-mode " H") minor-mode-alist)))
253
254
255;; Visible Functions 237;; Visible Functions
256 238
257 239
258;;;###autoload 240;;;###autoload
259(defun hi-lock-mode (&optional arg) 241(define-minor-mode hi-lock-buffer-mode
260 "Toggle minor mode for interactively adding font-lock highlighting patterns. 242 "Toggle minor mode for interactively adding font-lock highlighting patterns.
261 243
262If ARG positive turn hi-lock on. Issuing a hi-lock command will also 244If ARG positive turn hi-lock on. Issuing a hi-lock command will also
@@ -297,43 +279,40 @@ of characters into buffer) `hi-lock-file-patterns-range'. Patterns
297will be read until 279will be read until
298 Hi-lock: end 280 Hi-lock: end
299is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'." 281is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'."
300 (interactive) 282 :group 'hi-lock
301 (let ((hi-lock-mode-prev hi-lock-mode)) 283 :lighter " H"
302 (setq hi-lock-mode 284 :global nil
303 (if (null arg) (not hi-lock-mode) 285 :keymap hi-lock-map
304 (> (prefix-numeric-value arg) 0))) 286 (if hi-lock-buffer-mode
305 ;; Turned on. 287 ;; Turned on.
306 (when (and (not hi-lock-mode-prev) hi-lock-mode) 288 (progn
307 (add-hook 'find-file-hook 'hi-lock-find-file-hook) 289 (unless font-lock-mode (font-lock-mode 1))
308 (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook) 290 (define-key-after menu-bar-edit-menu [hi-lock]
309 (if (null (default-value 'font-lock-defaults)) 291 (cons "Regexp Highlighting" hi-lock-menu))
310 (setq-default font-lock-defaults '(nil))) 292 (hi-lock-find-patterns)
311 (if (null font-lock-defaults) 293 (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t))
312 (setq font-lock-defaults '(nil)))
313 (unless font-lock-mode
314 (font-lock-mode 1))
315 (define-key-after menu-bar-edit-menu [hi-lock]
316 (cons "Regexp Highlighting" hi-lock-menu))
317 (dolist (buffer (buffer-list))
318 (with-current-buffer buffer (hi-lock-find-patterns))))
319 ;; Turned off. 294 ;; Turned off.
320 (when (and hi-lock-mode-prev (not hi-lock-mode)) 295 (when (or hi-lock-interactive-patterns
321 (dolist (buffer (buffer-list)) 296 hi-lock-file-patterns)
322 (with-current-buffer buffer 297 (when hi-lock-interactive-patterns
323 (when (or hi-lock-interactive-patterns hi-lock-file-patterns) 298 (font-lock-remove-keywords nil hi-lock-interactive-patterns)
324 (font-lock-remove-keywords nil hi-lock-interactive-patterns) 299 (setq hi-lock-interactive-patterns nil))
325 (font-lock-remove-keywords nil hi-lock-file-patterns) 300 (when hi-lock-file-patterns
326 (setq hi-lock-interactive-patterns nil 301 (font-lock-remove-keywords nil hi-lock-file-patterns)
327 hi-lock-file-patterns nil) 302 (setq hi-lock-file-patterns nil))
328 (when font-lock-mode (hi-lock-refontify))))) 303 (if font-lock-mode
329 304 (font-lock-fontify-buffer)))
330 (let ((fld (default-value 'font-lock-defaults))) 305 (define-key-after menu-bar-edit-menu [hi-lock] nil)
331 (if (and fld (listp fld) (null (car fld))) 306 (remove-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook t)))
332 (setq-default font-lock-defaults (cdr fld))))
333 (define-key-after menu-bar-edit-menu [hi-lock] nil)
334 (remove-hook 'find-file-hook 'hi-lock-find-file-hook)
335 (remove-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook))))
336 307
308;;;###autoload
309(define-global-minor-mode hi-lock-mode
310 hi-lock-buffer-mode turn-on-hi-lock-if-enabled
311 :group 'hi-lock)
312
313(defun turn-on-hi-lock-if-enabled ()
314 (unless (memq major-mode hi-lock-exclude-modes)
315 (hi-lock-buffer-mode 1)))
337 316
338;;;###autoload 317;;;###autoload
339(defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer) 318(defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer)
@@ -352,12 +331,12 @@ list maintained for regexps, global history maintained for faces.
352 (cons (or (car hi-lock-regexp-history) "") 1 ) 331 (cons (or (car hi-lock-regexp-history) "") 1 )
353 nil nil 'hi-lock-regexp-history)) 332 nil nil 'hi-lock-regexp-history))
354 (hi-lock-read-face-name))) 333 (hi-lock-read-face-name)))
355 (unless hi-lock-mode (hi-lock-mode)) 334 (or (facep face) (setq face 'hi-yellow))
356 (or (facep face) (setq face 'rwl-yellow)) 335 (unless hi-lock-buffer-mode (hi-lock-buffer-mode 1))
357 (hi-lock-set-pattern 336 (hi-lock-set-pattern
358 ;; The \\(?:...\\) grouping construct ensures that a leading ^, +, * or ? 337 ;; The \\(?:...\\) grouping construct ensures that a leading ^, +, * or ?
359 ;; or a trailing $ in REGEXP will be interpreted correctly. 338 ;; or a trailing $ in REGEXP will be interpreted correctly.
360 (list (concat "^.*\\(?:" regexp "\\).*$") (list 0 (list 'quote face) t)))) 339 (concat "^.*\\(?:" regexp "\\).*$") face))
361 340
362 341
363;;;###autoload 342;;;###autoload
@@ -377,9 +356,9 @@ list maintained for regexps, global history maintained for faces.
377 (cons (or (car hi-lock-regexp-history) "") 1 ) 356 (cons (or (car hi-lock-regexp-history) "") 1 )
378 nil nil 'hi-lock-regexp-history)) 357 nil nil 'hi-lock-regexp-history))
379 (hi-lock-read-face-name))) 358 (hi-lock-read-face-name)))
380 (or (facep face) (setq face 'rwl-yellow)) 359 (or (facep face) (setq face 'hi-yellow))
381 (unless hi-lock-mode (hi-lock-mode)) 360 (unless hi-lock-buffer-mode (hi-lock-buffer-mode 1))
382 (hi-lock-set-pattern (list regexp (list 0 (list 'quote face) t)))) 361 (hi-lock-set-pattern regexp face))
383 362
384;;;###autoload 363;;;###autoload
385(defalias 'highlight-phrase 'hi-lock-face-phrase-buffer) 364(defalias 'highlight-phrase 'hi-lock-face-phrase-buffer)
@@ -397,9 +376,9 @@ lower-case letters made case insensitive."
397 (cons (or (car hi-lock-regexp-history) "") 1 ) 376 (cons (or (car hi-lock-regexp-history) "") 1 )
398 nil nil 'hi-lock-regexp-history))) 377 nil nil 'hi-lock-regexp-history)))
399 (hi-lock-read-face-name))) 378 (hi-lock-read-face-name)))
400 (or (facep face) (setq face 'rwl-yellow)) 379 (or (facep face) (setq face 'hi-yellow))
401 (unless hi-lock-mode (hi-lock-mode)) 380 (unless hi-lock-buffer-mode (hi-lock-buffer-mode 1))
402 (hi-lock-set-pattern (list regexp (list 0 (list 'quote face) t)))) 381 (hi-lock-set-pattern regexp face))
403 382
404;;;###autoload 383;;;###autoload
405(defalias 'unhighlight-regexp 'hi-lock-unface-buffer) 384(defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
@@ -451,7 +430,7 @@ interactive functions. \(See `hi-lock-interactive-patterns'.\)
451 (font-lock-remove-keywords nil (list keyword)) 430 (font-lock-remove-keywords nil (list keyword))
452 (setq hi-lock-interactive-patterns 431 (setq hi-lock-interactive-patterns
453 (delq keyword hi-lock-interactive-patterns)) 432 (delq keyword hi-lock-interactive-patterns))
454 (hi-lock-refontify)))) 433 (font-lock-fontify-buffer))))
455 434
456;;;###autoload 435;;;###autoload
457(defun hi-lock-write-interactive-patterns () 436(defun hi-lock-write-interactive-patterns ()
@@ -461,17 +440,16 @@ Interactively added patterns are those normally specified using
461`highlight-regexp' and `highlight-lines-matching-regexp'; they can 440`highlight-regexp' and `highlight-lines-matching-regexp'; they can
462be found in variable `hi-lock-interactive-patterns'." 441be found in variable `hi-lock-interactive-patterns'."
463 (interactive) 442 (interactive)
464 (let ((prefix (format "%s %s:" (or comment-start "") "Hi-lock"))) 443 (if (null hi-lock-interactive-patterns)
465 (when (> (+ (point) (length prefix)) hi-lock-file-patterns-range) 444 (error "There are no interactive patterns"))
466 (beep) 445 (let ((beg (point)))
467 (message
468 "Warning, inserted keywords not close enough to top of file."))
469 (mapcar 446 (mapcar
470 (lambda (pattern) 447 (lambda (pattern)
471 (insert (format "%s (%s) %s\n" 448 (insert (format "Hi-lock: (%s)\n" (prin1-to-string pattern))))
472 prefix (prin1-to-string pattern) (or comment-end "")))) 449 hi-lock-interactive-patterns)
473 hi-lock-interactive-patterns))) 450 (comment-region beg (point)))
474 451 (when (> (point) hi-lock-file-patterns-range)
452 (warn "Inserted keywords not close enough to top of file")))
475 453
476;; Implementation Functions 454;; Implementation Functions
477 455
@@ -513,29 +491,22 @@ not suitable."
513 (length prefix) 0))) 491 (length prefix) 0)))
514 '(hi-lock-face-history . 0)))) 492 '(hi-lock-face-history . 0))))
515 493
516(defun hi-lock-find-file-hook () 494(defun hi-lock-set-pattern (regexp face)
517 "Add hi-lock patterns, if present." 495 "Highlight REGEXP with face FACE."
518 (hi-lock-find-patterns)) 496 (let ((pattern (list regexp (list 0 (list 'quote face) t))))
519
520(defun hi-lock-current-line (&optional end)
521 "Return line number of line at point.
522Optional argument END is maximum excursion."
523 (interactive)
524 (save-excursion
525 (beginning-of-line)
526 (1+ (count-lines 1 (or end (point))))))
527
528(defun hi-lock-set-pattern (pattern)
529 "Add PATTERN to list of interactively highlighted patterns and refontify."
530 (hi-lock-set-patterns (list pattern)))
531
532(defun hi-lock-set-patterns (patterns)
533 "Add PATTERNS to list of interactively highlighted patterns and refontify.."
534 (dolist (pattern patterns)
535 (unless (member pattern hi-lock-interactive-patterns) 497 (unless (member pattern hi-lock-interactive-patterns)
536 (font-lock-add-keywords nil (list pattern)) 498 (font-lock-add-keywords nil (list pattern))
537 (add-to-list 'hi-lock-interactive-patterns pattern))) 499 (push pattern hi-lock-interactive-patterns)
538 (hi-lock-refontify)) 500 (let ((buffer-undo-list t)
501 (inhibit-read-only t)
502 (mod (buffer-modified-p)))
503 (save-excursion
504 (goto-char (point-min))
505 (while (re-search-forward regexp (point-max) t)
506 (put-text-property
507 (match-beginning 0) (match-end 0) 'face face)
508 (goto-char (match-end 0))))
509 (set-buffer-modified-p mod)))))
539 510
540(defun hi-lock-set-file-patterns (patterns) 511(defun hi-lock-set-file-patterns (patterns)
541 "Replace file patterns list with PATTERNS and refontify." 512 "Replace file patterns list with PATTERNS and refontify."
@@ -543,13 +514,7 @@ Optional argument END is maximum excursion."
543 (font-lock-remove-keywords nil hi-lock-file-patterns) 514 (font-lock-remove-keywords nil hi-lock-file-patterns)
544 (setq hi-lock-file-patterns patterns) 515 (setq hi-lock-file-patterns patterns)
545 (font-lock-add-keywords nil hi-lock-file-patterns) 516 (font-lock-add-keywords nil hi-lock-file-patterns)
546 (hi-lock-refontify))) 517 (font-lock-fontify-buffer)))
547
548(defun hi-lock-refontify ()
549 "Unfontify then refontify buffer. Used when hi-lock patterns change."
550 (interactive)
551 (unless font-lock-mode (font-lock-mode 1))
552 (font-lock-fontify-buffer))
553 518
554(defun hi-lock-find-patterns () 519(defun hi-lock-find-patterns ()
555 "Find patterns in current buffer for hi-lock." 520 "Find patterns in current buffer for hi-lock."
@@ -569,16 +534,17 @@ Optional argument END is maximum excursion."
569 (condition-case nil 534 (condition-case nil
570 (setq all-patterns (append (read (current-buffer)) all-patterns)) 535 (setq all-patterns (append (read (current-buffer)) all-patterns))
571 (error (message "Invalid pattern list expression at %d" 536 (error (message "Invalid pattern list expression at %d"
572 (hi-lock-current-line))))))) 537 (line-number-at-pos)))))))
573 (when hi-lock-mode (hi-lock-set-file-patterns all-patterns)) 538 (when hi-lock-buffer-mode (hi-lock-set-file-patterns all-patterns))
574 (if (interactive-p) 539 (if (interactive-p)
575 (message "Hi-lock added %d patterns." (length all-patterns)))))) 540 (message "Hi-lock added %d patterns." (length all-patterns))))))
576 541
577(defun hi-lock-font-lock-hook () 542(defun hi-lock-font-lock-hook ()
578 "Add hi lock patterns to font-lock's." 543 "Add hi lock patterns to font-lock's."
579 (when hi-lock-mode 544 (if font-lock-mode
580 (font-lock-add-keywords nil hi-lock-file-patterns) 545 (progn (font-lock-add-keywords nil hi-lock-file-patterns)
581 (font-lock-add-keywords nil hi-lock-interactive-patterns))) 546 (font-lock-add-keywords nil hi-lock-interactive-patterns))
547 (hi-lock-buffer-mode -1)))
582 548
583(provide 'hi-lock) 549(provide 'hi-lock)
584 550
diff --git a/lisp/ido.el b/lisp/ido.el
index cc4eab4bb4d..a6bd99cdeea 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -899,7 +899,19 @@ The fallback command is passed as an argument to the functions."
899;; Persistent variables 899;; Persistent variables
900 900
901(defvar ido-mode-map nil 901(defvar ido-mode-map nil
902 "Keymap for `ido-find-file' and `ido-switch-buffer'.") 902 "Currently active keymap for ido commands.")
903
904(defvar ido-mode-common-map nil
905 "Keymap for all ido commands.")
906
907(defvar ido-mode-file-map nil
908 "Keymap for ido file commands.")
909
910(defvar ido-mode-file-dir-map nil
911 "Keymap for ido file and directory commands.")
912
913(defvar ido-mode-buffer-map nil
914 "Keymap for ido buffer commands.")
903 915
904(defvar ido-file-history nil 916(defvar ido-file-history nil
905 "History of files selected using `ido-find-file'.") 917 "History of files selected using `ido-find-file'.")
@@ -1301,8 +1313,7 @@ Removes badly formatted data and ignored directories."
1301 (while e 1313 (while e
1302 (setq d (car e) e (cdr e)) 1314 (setq d (car e) e (cdr e))
1303 (if (not (consp d)) 1315 (if (not (consp d))
1304 (set-text-properties 0 (length d) nil d)))))) 1316 (set-text-properties 0 (length d) nil d)))))))
1305)
1306 1317
1307 1318
1308(defun ido-kill-emacs-hook () 1319(defun ido-kill-emacs-hook ()
@@ -1333,6 +1344,8 @@ This function also adds a hook to the minibuffer."
1333 (t nil))) 1344 (t nil)))
1334 1345
1335 (ido-everywhere (if ido-everywhere 1 -1)) 1346 (ido-everywhere (if ido-everywhere 1 -1))
1347 (when ido-mode
1348 (ido-init-mode-maps))
1336 1349
1337 (when ido-mode 1350 (when ido-mode
1338 (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup) 1351 (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
@@ -1391,12 +1404,11 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
1391 1404
1392 1405
1393;;; IDO KEYMAP 1406;;; IDO KEYMAP
1394(defun ido-define-mode-map () 1407(defun ido-init-mode-maps ()
1395 "Set up the keymap for `ido'." 1408 "Set up the keymaps used by `ido'."
1396 (let (map)
1397 ;; generated every time so that it can inherit new functions.
1398 1409
1399 (setq map (copy-keymap minibuffer-local-map)) 1410 ;; Common map
1411 (let ((map (make-sparse-keymap)))
1400 (define-key map "\C-a" 'ido-toggle-ignore) 1412 (define-key map "\C-a" 'ido-toggle-ignore)
1401 (define-key map "\C-c" 'ido-toggle-case) 1413 (define-key map "\C-c" 'ido-toggle-case)
1402 (define-key map "\C-e" 'ido-edit-input) 1414 (define-key map "\C-e" 'ido-edit-input)
@@ -1414,57 +1426,90 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
1414 (define-key map [right] 'ido-next-match) 1426 (define-key map [right] 'ido-next-match)
1415 (define-key map [left] 'ido-prev-match) 1427 (define-key map [left] 'ido-prev-match)
1416 (define-key map "?" 'ido-completion-help) 1428 (define-key map "?" 'ido-completion-help)
1417
1418 ;; Magic commands. 1429 ;; Magic commands.
1419 (define-key map "\C-b" 'ido-magic-backward-char) 1430 (define-key map "\C-b" 'ido-magic-backward-char)
1420 (define-key map "\C-f" 'ido-magic-forward-char) 1431 (define-key map "\C-f" 'ido-magic-forward-char)
1421 (define-key map "\C-d" 'ido-magic-delete-char) 1432 (define-key map "\C-d" 'ido-magic-delete-char)
1433 (set-keymap-parent map minibuffer-local-map)
1434 (setq ido-mode-common-map map))
1435
1436 ;; File and directory map
1437 (let ((map (make-sparse-keymap)))
1438 (define-key map "\C-x\C-b" 'ido-enter-switch-buffer)
1439 (define-key map "\C-x\C-f" 'ido-fallback-command)
1440 (define-key map "\C-x\C-d" 'ido-enter-dired)
1441 (define-key map [down] 'ido-next-match-dir)
1442 (define-key map [up] 'ido-prev-match-dir)
1443 (define-key map [(meta up)] 'ido-prev-work-directory)
1444 (define-key map [(meta down)] 'ido-next-work-directory)
1445 (define-key map [backspace] 'ido-delete-backward-updir)
1446 (define-key map "\d" 'ido-delete-backward-updir)
1447 (define-key map [(meta backspace)] 'ido-delete-backward-word-updir)
1448 (define-key map [(control backspace)] 'ido-up-directory)
1449 (define-key map "\C-l" 'ido-reread-directory)
1450 (define-key map [(meta ?d)] 'ido-wide-find-dir-or-delete-dir)
1451 (define-key map [(meta ?b)] 'ido-push-dir)
1452 (define-key map [(meta ?f)] 'ido-wide-find-file-or-pop-dir)
1453 (define-key map [(meta ?k)] 'ido-forget-work-directory)
1454 (define-key map [(meta ?m)] 'ido-make-directory)
1455 (define-key map [(meta ?n)] 'ido-next-work-directory)
1456 (define-key map [(meta ?o)] 'ido-prev-work-file)
1457 (define-key map [(meta control ?o)] 'ido-next-work-file)
1458 (define-key map [(meta ?p)] 'ido-prev-work-directory)
1459 (define-key map [(meta ?s)] 'ido-merge-work-directories)
1460 (set-keymap-parent map ido-mode-common-map)
1461 (setq ido-mode-file-dir-map map))
1462
1463 ;; File only map
1464 (let ((map (make-sparse-keymap)))
1465 (define-key map "\C-k" 'ido-delete-file-at-head)
1466 (define-key map "\C-o" 'ido-copy-current-word)
1467 (define-key map "\C-w" 'ido-copy-current-file-name)
1468 (define-key map [(meta ?l)] 'ido-toggle-literal)
1469 (define-key map "\C-v" 'ido-toggle-vc)
1470 (set-keymap-parent map ido-mode-file-dir-map)
1471 (setq ido-mode-file-map map))
1472
1473 ;; Buffer map
1474 (let ((map (make-sparse-keymap)))
1475 (define-key map "\C-x\C-f" 'ido-enter-find-file)
1476 (define-key map "\C-x\C-b" 'ido-fallback-command)
1477 (define-key map "\C-k" 'ido-kill-buffer-at-head)
1478 (set-keymap-parent map ido-mode-common-map)
1479 (setq ido-mode-buffer-map map)))
1422 1480
1423 (when (memq ido-cur-item '(file dir))
1424 (define-key map "\C-x\C-b" (or ido-context-switch-command 'ido-enter-switch-buffer))
1425 (define-key map "\C-x\C-f" 'ido-fallback-command)
1426 (define-key map "\C-x\C-d" (or (and ido-context-switch-command 'ignore) 'ido-enter-dired))
1427 (define-key map [down] 'ido-next-match-dir)
1428 (define-key map [up] 'ido-prev-match-dir)
1429 (define-key map [(meta up)] 'ido-prev-work-directory)
1430 (define-key map [(meta down)] 'ido-next-work-directory)
1431 (define-key map [backspace] 'ido-delete-backward-updir)
1432 (define-key map "\d" 'ido-delete-backward-updir)
1433 (define-key map [(meta backspace)] 'ido-delete-backward-word-updir)
1434 (define-key map [(control backspace)] 'ido-up-directory)
1435 (define-key map "\C-l" 'ido-reread-directory)
1436 (define-key map [(meta ?d)] 'ido-wide-find-dir-or-delete-dir)
1437 (define-key map [(meta ?b)] 'ido-push-dir)
1438 (define-key map [(meta ?f)] 'ido-wide-find-file-or-pop-dir)
1439 (define-key map [(meta ?k)] 'ido-forget-work-directory)
1440 (define-key map [(meta ?m)] 'ido-make-directory)
1441 (define-key map [(meta ?n)] 'ido-next-work-directory)
1442 (define-key map [(meta ?o)] 'ido-prev-work-file)
1443 (define-key map [(meta control ?o)] 'ido-next-work-file)
1444 (define-key map [(meta ?p)] 'ido-prev-work-directory)
1445 (define-key map [(meta ?s)] 'ido-merge-work-directories)
1446 )
1447 1481
1448 (when (eq ido-cur-item 'file) 1482(defun ido-define-mode-map ()
1449 (define-key map "\C-k" 'ido-delete-file-at-head) 1483 "Set up the keymap for `ido'."
1450 (define-key map "\C-o" 'ido-copy-current-word)
1451 (define-key map "\C-w" 'ido-copy-current-file-name)
1452 (define-key map [(meta ?l)] 'ido-toggle-literal)
1453 (define-key map "\C-v" 'ido-toggle-vc)
1454 )
1455 1484
1456 (when (eq ido-cur-item 'buffer) 1485 ;; generated every time so that it can inherit new functions.
1457 (define-key map "\C-x\C-f" (or ido-context-switch-command 'ido-enter-find-file)) 1486 (let ((map (make-sparse-keymap))
1458 (define-key map "\C-x\C-b" 'ido-fallback-command) 1487 (viper-p (if (boundp 'viper-mode) viper-mode)))
1459 (define-key map "\C-k" 'ido-kill-buffer-at-head)
1460 )
1461 1488
1462 (when (if (boundp 'viper-mode) viper-mode) 1489 (when viper-p
1463 (define-key map [remap viper-intercept-ESC-key] 'ignore) 1490 (define-key map [remap viper-intercept-ESC-key] 'ignore))
1464 (when (memq ido-cur-item '(file dir)) 1491
1492 (cond
1493 ((memq ido-cur-item '(file dir))
1494 (when ido-context-switch-command
1495 (define-key map "\C-x\C-b" ido-context-switch-command)
1496 (define-key map "\C-x\C-d" 'ignore))
1497 (when viper-p
1465 (define-key map [remap viper-backward-char] 'ido-delete-backward-updir) 1498 (define-key map [remap viper-backward-char] 'ido-delete-backward-updir)
1466 (define-key map [remap viper-del-backward-char-in-insert] 'ido-delete-backward-updir) 1499 (define-key map [remap viper-del-backward-char-in-insert] 'ido-delete-backward-updir)
1467 (define-key map [remap viper-delete-backward-word] 'ido-delete-backward-word-updir))) 1500 (define-key map [remap viper-delete-backward-word] 'ido-delete-backward-word-updir))
1501 (set-keymap-parent map
1502 (if (eq ido-cur-item 'file)
1503 ido-mode-file-map
1504 ido-mode-file-dir-map)))
1505
1506 ((eq ido-cur-item 'buffer)
1507 (when ido-context-switch-command
1508 (define-key map "\C-x\C-f" ido-context-switch-command))
1509 (set-keymap-parent map ido-mode-buffer-map))
1510
1511 (t
1512 (set-keymap-parent map ido-mode-common-map)))
1468 1513
1469 (setq ido-mode-map map))) 1514 (setq ido-mode-map map)))
1470 1515
@@ -3625,7 +3670,7 @@ As you type in a string, all of the buffers matching the string are
3625displayed if substring-matching is used \(default). Look at 3670displayed if substring-matching is used \(default). Look at
3626`ido-enable-prefix' and `ido-toggle-prefix'. When you have found the 3671`ido-enable-prefix' and `ido-toggle-prefix'. When you have found the
3627buffer you want, it can then be selected. As you type, most keys have 3672buffer you want, it can then be selected. As you type, most keys have
3628their normal keybindings, except for the following: \\<ido-mode-map> 3673their normal keybindings, except for the following: \\<ido-mode-buffer-map>
3629 3674
3630RET Select the buffer at the front of the list of matches. If the 3675RET Select the buffer at the front of the list of matches. If the
3631list is empty, possibly prompt to create new buffer. 3676list is empty, possibly prompt to create new buffer.
@@ -3713,7 +3758,7 @@ type in a string, all of the filenames matching the string are displayed
3713if substring-matching is used \(default). Look at `ido-enable-prefix' and 3758if substring-matching is used \(default). Look at `ido-enable-prefix' and
3714`ido-toggle-prefix'. When you have found the filename you want, it can 3759`ido-toggle-prefix'. When you have found the filename you want, it can
3715then be selected. As you type, most keys have their normal keybindings, 3760then be selected. As you type, most keys have their normal keybindings,
3716except for the following: \\<ido-mode-map> 3761except for the following: \\<ido-mode-file-map>
3717 3762
3718RET Select the file at the front of the list of matches. If the 3763RET Select the file at the front of the list of matches. If the
3719list is empty, possibly prompt to create new file. 3764list is empty, possibly prompt to create new file.
@@ -3732,7 +3777,7 @@ in a separate window.
3732\\[ido-merge-work-directories] search for file in the work directory history. 3777\\[ido-merge-work-directories] search for file in the work directory history.
3733\\[ido-forget-work-directory] removes current directory from the work directory history. 3778\\[ido-forget-work-directory] removes current directory from the work directory history.
3734\\[ido-prev-work-file] or \\[ido-next-work-file] cycle through the work file history. 3779\\[ido-prev-work-file] or \\[ido-next-work-file] cycle through the work file history.
3735\\[ido-wide-find-file] and \\[ido-wide-find-dir] prompts and uses find to locate files or directories. 3780\\[ido-wide-find-file-or-pop-dir] and \\[ido-wide-find-dir-or-delete-dir] prompts and uses find to locate files or directories.
3736\\[ido-make-directory] prompts for a directory to create in current directory. 3781\\[ido-make-directory] prompts for a directory to create in current directory.
3737\\[ido-fallback-command] Fallback to non-ido version of current command. 3782\\[ido-fallback-command] Fallback to non-ido version of current command.
3738\\[ido-toggle-regexp] Toggle regexp searching. 3783\\[ido-toggle-regexp] Toggle regexp searching.
diff --git a/lisp/info.el b/lisp/info.el
index 84c83bd419b..a00afce7d0a 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -290,8 +290,7 @@ with wrapping around the current Info node."
290(defvar Info-current-file nil 290(defvar Info-current-file nil
291 "Info file that Info is now looking at, or nil. 291 "Info file that Info is now looking at, or nil.
292This is the name that was specified in Info, not the actual file name. 292This is the name that was specified in Info, not the actual file name.
293It doesn't contain directory names or file name extensions added by Info. 293It doesn't contain directory names or file name extensions added by Info.")
294Can also be t when using `Info-on-current-buffer'.")
295 294
296(defvar Info-current-subfile nil 295(defvar Info-current-subfile nil
297 "Info subfile that is actually in the *info* buffer now. 296 "Info subfile that is actually in the *info* buffer now.
@@ -691,12 +690,13 @@ it says do not attempt further (recursive) error recovery."
691 ;; Go into Info buffer. 690 ;; Go into Info buffer.
692 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*")) 691 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
693 ;; Record the node we are leaving. 692 ;; Record the node we are leaving.
694 (if (and Info-current-file (not no-going-back)) 693 (if (not no-going-back)
695 (setq Info-history 694 (setq Info-history
696 (cons (list Info-current-file Info-current-node (point)) 695 (cons (list Info-current-file Info-current-node (point))
697 Info-history))) 696 Info-history)))
698 (Info-find-node-2 filename nodename no-going-back)) 697 (Info-find-node-2 filename nodename no-going-back))
699 698
699;;;###autoload
700(defun Info-on-current-buffer (&optional nodename) 700(defun Info-on-current-buffer (&optional nodename)
701 "Use the `Info-mode' to browse the current Info buffer. 701 "Use the `Info-mode' to browse the current Info buffer.
702If a prefix arg is provided, it queries for the NODENAME which 702If a prefix arg is provided, it queries for the NODENAME which
@@ -708,7 +708,10 @@ else defaults to \"Top\"."
708 (unless nodename (setq nodename "Top")) 708 (unless nodename (setq nodename "Top"))
709 (info-initialize) 709 (info-initialize)
710 (Info-mode) 710 (Info-mode)
711 (set (make-local-variable 'Info-current-file) t) 711 (set (make-local-variable 'Info-current-file)
712 (or buffer-file-name
713 ;; If called on a non-file buffer, make a fake file name.
714 (concat default-directory (buffer-name))))
712 (Info-find-node-2 nil nodename)) 715 (Info-find-node-2 nil nodename))
713 716
714;; It's perhaps a bit nasty to kill the *info* buffer to force a re-read, 717;; It's perhaps a bit nasty to kill the *info* buffer to force a re-read,
@@ -726,8 +729,7 @@ is preserved, if possible."
726 (pline (count-lines (point-min) (line-beginning-position))) 729 (pline (count-lines (point-min) (line-beginning-position)))
727 (wline (count-lines (point-min) (window-start))) 730 (wline (count-lines (point-min) (window-start)))
728 (old-history Info-history) 731 (old-history Info-history)
729 (new-history (and Info-current-file 732 (new-history (list Info-current-file Info-current-node (point))))
730 (list Info-current-file Info-current-node (point)))))
731 (kill-buffer (current-buffer)) 733 (kill-buffer (current-buffer))
732 (Info-find-node filename nodename) 734 (Info-find-node filename nodename)
733 (setq Info-history old-history) 735 (setq Info-history old-history)
@@ -1400,12 +1402,10 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
1400 (nconc (propertized-buffer-identification "%b") 1402 (nconc (propertized-buffer-identification "%b")
1401 (list 1403 (list
1402 (concat " (" 1404 (concat " ("
1403 (file-name-nondirectory 1405 (if Info-current-file
1404 (if (stringp Info-current-file) 1406 (file-name-nondirectory Info-current-file)
1405 Info-current-file 1407 " ")
1406 (or buffer-file-name ""))) 1408 ") " (or Info-current-node ""))))))
1407 ") "
1408 (or Info-current-node ""))))))
1409 1409
1410;; Go to an Info node specified with a filename-and-nodename string 1410;; Go to an Info node specified with a filename-and-nodename string
1411;; of the sort that is found in pointers in nodes. 1411;; of the sort that is found in pointers in nodes.
@@ -1884,7 +1884,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
1884 (let ((old-node Info-current-node) 1884 (let ((old-node Info-current-node)
1885 (old-file Info-current-file) 1885 (old-file Info-current-file)
1886 (node (Info-extract-pointer "up")) p) 1886 (node (Info-extract-pointer "up")) p)
1887 (and (or same-file (not (stringp Info-current-file))) 1887 (and same-file
1888 (string-match "^(" node) 1888 (string-match "^(" node)
1889 (error "Up node is in another Info file")) 1889 (error "Up node is in another Info file"))
1890 (Info-goto-node node) 1890 (Info-goto-node node)
@@ -3266,12 +3266,8 @@ With a zero prefix arg, put the name inside a function call to `info'."
3266 (interactive "P") 3266 (interactive "P")
3267 (unless Info-current-node 3267 (unless Info-current-node
3268 (error "No current Info node")) 3268 (error "No current Info node"))
3269 (let ((node (concat "(" (file-name-nondirectory 3269 (let ((node (concat "(" (file-name-nondirectory Info-current-file) ")"
3270 (or (and (stringp Info-current-file) 3270 Info-current-node)))
3271 Info-current-file)
3272 buffer-file-name
3273 ""))
3274 ")" Info-current-node)))
3275 (if (zerop (prefix-numeric-value arg)) 3271 (if (zerop (prefix-numeric-value arg))
3276 (setq node (concat "(info \"" node "\")"))) 3272 (setq node (concat "(info \"" node "\")")))
3277 (kill-new node) 3273 (kill-new node)
@@ -3804,23 +3800,19 @@ the variable `Info-file-list-for-emacs'."
3804 (and (not (equal (match-string 4) "")) 3800 (and (not (equal (match-string 4) ""))
3805 (match-string 4)) 3801 (match-string 4))
3806 (match-string 2))))) 3802 (match-string 2)))))
3807 (file (file-name-nondirectory 3803 (file Info-current-file)
3808 Info-current-file))
3809 (hl Info-history-list) 3804 (hl Info-history-list)
3810 res) 3805 res)
3811 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node) 3806 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
3812 (setq file (file-name-nondirectory 3807 (setq file (Info-find-file (match-string 1 node) t)
3813 (match-string 1 node))
3814 node (if (equal (match-string 2 node) "") 3808 node (if (equal (match-string 2 node) "")
3815 "Top" 3809 "Top"
3816 (match-string 2 node)))) 3810 (match-string 2 node))))
3817 (while hl 3811 (while hl
3818 (if (and (string-equal node (nth 1 (car hl))) 3812 (if (and (string-equal node (nth 1 (car hl)))
3819 (string-equal file 3813 (string-equal file (nth 0 (car hl))))
3820 (file-name-nondirectory 3814 (setq res (car hl) hl nil)
3821 (nth 0 (car hl))))) 3815 (setq hl (cdr hl))))
3822 (setq res (car hl) hl nil)
3823 (setq hl (cdr hl))))
3824 res))) 'info-xref-visited 'info-xref)) 3816 res))) 'info-xref-visited 'info-xref))
3825 ;; For multiline ref, unfontify newline and surrounding whitespace 3817 ;; For multiline ref, unfontify newline and surrounding whitespace
3826 (save-excursion 3818 (save-excursion
@@ -3913,22 +3905,19 @@ the variable `Info-file-list-for-emacs'."
3913 (let ((node (if (equal (match-string 3) "") 3905 (let ((node (if (equal (match-string 3) "")
3914 (match-string 1) 3906 (match-string 1)
3915 (match-string 3))) 3907 (match-string 3)))
3916 (file (file-name-nondirectory Info-current-file)) 3908 (file Info-current-file)
3917 (hl Info-history-list) 3909 (hl Info-history-list)
3918 res) 3910 res)
3919 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node) 3911 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
3920 (setq file (file-name-nondirectory 3912 (setq file (Info-find-file (match-string 1 node) t)
3921 (match-string 1 node))
3922 node (if (equal (match-string 2 node) "") 3913 node (if (equal (match-string 2 node) "")
3923 "Top" 3914 "Top"
3924 (match-string 2 node)))) 3915 (match-string 2 node))))
3925 (while hl 3916 (while hl
3926 (if (and (string-equal node (nth 1 (car hl))) 3917 (if (and (string-equal node (nth 1 (car hl)))
3927 (string-equal file 3918 (string-equal file (nth 0 (car hl))))
3928 (file-name-nondirectory 3919 (setq res (car hl) hl nil)
3929 (nth 0 (car hl))))) 3920 (setq hl (cdr hl))))
3930 (setq res (car hl) hl nil)
3931 (setq hl (cdr hl))))
3932 res))) 'info-xref-visited 'info-xref))) 3921 res))) 'info-xref-visited 'info-xref)))
3933 (when (and not-fontified-p (memq Info-hide-note-references '(t hide))) 3922 (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
3934 (put-text-property (match-beginning 2) (1- (match-end 6)) 3923 (put-text-property (match-beginning 2) (1- (match-end 6))
@@ -4121,7 +4110,7 @@ INDENT is the current indentation depth."
4121NODESPEC is a string of the form: (file)node." 4110NODESPEC is a string of the form: (file)node."
4122 (save-excursion 4111 (save-excursion
4123 ;; Set up a buffer we can use to fake-out Info. 4112 ;; Set up a buffer we can use to fake-out Info.
4124 (set-buffer (get-buffer-create "*info-browse-tmp*")) 4113 (set-buffer (get-buffer-create " *info-browse-tmp*"))
4125 (if (not (equal major-mode 'Info-mode)) 4114 (if (not (equal major-mode 'Info-mode))
4126 (Info-mode)) 4115 (Info-mode))
4127 ;; Get the node into this buffer 4116 ;; Get the node into this buffer
diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el
index c2d24e1a190..15a0d1067e1 100644
--- a/lisp/international/latexenc.el
+++ b/lisp/international/latexenc.el
@@ -78,7 +78,8 @@
78 ("next" . next) ; The Next encoding 78 ("next" . next) ; The Next encoding
79 ("utf8" . utf-8) 79 ("utf8" . utf-8)
80 ("utf8x" . utf-8)) ; used by the Unicode LaTeX package 80 ("utf8x" . utf-8)) ; used by the Unicode LaTeX package
81 "Mapping from encoding names used by LaTeX's \"inputenc.sty\" to Emacs coding systems. 81 "Mapping from LaTeX encodings to Emacs coding systems.
82LaTeX encodings are specified with \"\\usepackage[encoding]{inputenc}\".
82Used by the function `latexenc-find-file-coding-system'." 83Used by the function `latexenc-find-file-coding-system'."
83 :group 'files 84 :group 'files
84 :group 'mule 85 :group 'mule
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 9d52ea1b05b..5ccf2bf92ba 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -386,6 +386,8 @@ A value of nil means highlight all matches."
386 (define-key map [iconify-frame] nil) 386 (define-key map [iconify-frame] nil)
387 (define-key map [make-frame-visible] nil) 387 (define-key map [make-frame-visible] nil)
388 (define-key map [mouse-movement] nil) 388 (define-key map [mouse-movement] nil)
389 (define-key map [language-change] nil)
390
389 ;; For searching multilingual text. 391 ;; For searching multilingual text.
390 (define-key map "\C-\\" 'isearch-toggle-input-method) 392 (define-key map "\C-\\" 'isearch-toggle-input-method)
391 (define-key map "\C-^" 'isearch-toggle-specified-input-method) 393 (define-key map "\C-^" 'isearch-toggle-specified-input-method)
@@ -1138,15 +1140,16 @@ Use `isearch-exit' to quit without signaling."
1138 ;; C-s in forward or C-r in reverse. 1140 ;; C-s in forward or C-r in reverse.
1139 (if (equal isearch-string "") 1141 (if (equal isearch-string "")
1140 ;; If search string is empty, use last one. 1142 ;; If search string is empty, use last one.
1141 (setq isearch-string 1143 (if (null (if isearch-regexp regexp-search-ring search-ring))
1142 (or (if isearch-regexp 1144 (setq isearch-error "No previous search string")
1143 (car regexp-search-ring) 1145 (setq isearch-string
1144 (car search-ring)) 1146 (if isearch-regexp
1145 (error "No previous search string")) 1147 (car regexp-search-ring)
1146 isearch-message 1148 (car search-ring))
1147 (mapconcat 'isearch-text-char-description 1149 isearch-message
1148 isearch-string "") 1150 (mapconcat 'isearch-text-char-description
1149 isearch-case-fold-search isearch-last-case-fold-search) 1151 isearch-string "")
1152 isearch-case-fold-search isearch-last-case-fold-search))
1150 ;; If already have what to search for, repeat it. 1153 ;; If already have what to search for, repeat it.
1151 (or isearch-success 1154 (or isearch-success
1152 (progn 1155 (progn
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 370eeb8aa30..a8e23c41db7 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -134,11 +134,13 @@
134(load "frame") 134(load "frame")
135(load "term/tty-colors") 135(load "term/tty-colors")
136(load "font-core") 136(load "font-core")
137;; facemenu must be loaded before font-lock, because `facemenu-keymap'
138;; needs to be defined when font-lock is loaded.
139(load "facemenu")
137(load "emacs-lisp/syntax") 140(load "emacs-lisp/syntax")
138(load "font-lock") 141(load "font-lock")
139(load "jit-lock") 142(load "jit-lock")
140 143
141(load "facemenu")
142(if (fboundp 'track-mouse) 144(if (fboundp 'track-mouse)
143 (progn 145 (progn
144 (load "mouse") 146 (load "mouse")
diff --git a/lisp/log-edit.el b/lisp/log-edit.el
index 54249eb52e3..4c66f7f280b 100644
--- a/lisp/log-edit.el
+++ b/lisp/log-edit.el
@@ -120,8 +120,10 @@ If SETUP is 'force, this variable has no effect."
120 log-edit-insert-changelog) 120 log-edit-insert-changelog)
121 "*Hook run at the end of `log-edit'." 121 "*Hook run at the end of `log-edit'."
122 :group 'log-edit 122 :group 'log-edit
123 :type '(hook :options (log-edit-insert-cvs-template 123 :type '(hook :options (log-edit-insert-changelog
124 log-edit-insert-changelog))) 124 log-edit-insert-cvs-rcstemplate
125 log-edit-insert-cvs-template
126 log-edit-insert-filenames)))
125 127
126(defcustom log-edit-mode-hook (if (boundp 'vc-log-mode-hook) vc-log-mode-hook) 128(defcustom log-edit-mode-hook (if (boundp 'vc-log-mode-hook) vc-log-mode-hook)
127 "*Hook run when entering `log-edit-mode'." 129 "*Hook run when entering `log-edit-mode'."
@@ -281,20 +283,13 @@ automatically."
281 (insert "\n")))) 283 (insert "\n"))))
282 284
283;; Compatibility with old names. 285;; Compatibility with old names.
284(defvaralias 'vc-comment-ring 'log-edit-comment-ring) 286(define-obsolete-variable-alias 'vc-comment-ring 'log-edit-comment-ring "22.1")
285(make-obsolete-variable 'vc-comment-ring 'log-edit-comment-ring "22.1") 287(define-obsolete-variable-alias 'vc-comment-ring-index 'log-edit-comment-ring-index "22.1")
286(defvaralias 'vc-comment-ring-index 'log-edit-comment-ring-index) 288(define-obsolete-function-alias 'vc-previous-comment 'log-edit-previous-comment "22.1")
287(make-obsolete-variable 'vc-comment-ring-index 'log-edit-comment-ring-index "22.1") 289(define-obsolete-function-alias 'vc-next-comment 'log-edit-next-comment "22.1")
288(defalias 'vc-previous-comment 'log-edit-previous-comment) 290(define-obsolete-function-alias 'vc-comment-search-reverse 'log-edit-comment-search-backward "22.1")
289(make-obsolete 'vc-previous-comment 'log-edit-previous-comment "22.1") 291(define-obsolete-function-alias 'vc-comment-search-forward 'log-edit-comment-search-forward "22.1")
290(defalias 'vc-next-comment 'log-edit-next-comment) 292(define-obsolete-function-alias 'vc-comment-to-change-log 'log-edit-comment-to-change-log "22.1")
291(make-obsolete 'vc-next-comment 'log-edit-next-comment "22.1")
292(defalias 'vc-comment-search-reverse 'log-edit-comment-search-backward)
293(make-obsolete 'vc-comment-search-reverse 'log-edit-comment-search-backward "22.1")
294(defalias 'vc-comment-search-forward 'log-edit-comment-search-forward)
295(make-obsolete 'vc-comment-search-forward 'log-edit-comment-search-forward "22.1")
296(defalias 'vc-comment-to-change-log 'log-edit-comment-to-change-log)
297(make-obsolete 'vc-comment-to-change-log 'log-edit-comment-to-change-log "22.1")
298 293
299;;; 294;;;
300;;; Actual code 295;;; Actual code
@@ -396,31 +391,6 @@ If you want to abort the commit, simply delete the buffer."
396 "Return the list of files that are about to be committed." 391 "Return the list of files that are about to be committed."
397 (ignore-errors (funcall log-edit-listfun))) 392 (ignore-errors (funcall log-edit-listfun)))
398 393
399
400(defun log-edit-insert-changelog ()
401 "Insert a log message by looking at the ChangeLog.
402The idea is to write your ChangeLog entries first, and then use this
403command to commit your changes.
404
405To select default log text, we:
406- find the ChangeLog entries for the files to be checked in,
407- verify that the top entry in the ChangeLog is on the current date
408 and by the current user; if not, we don't provide any default text,
409- search the ChangeLog entry for paragraphs containing the names of
410 the files we're checking in, and finally
411- use those paragraphs as the log text."
412 (interactive)
413 (log-edit-insert-changelog-entries (log-edit-files))
414 (log-edit-set-common-indentation)
415 (goto-char (point-min))
416 (when (looking-at "\\*\\s-+")
417 (forward-line 1)
418 (when (not (re-search-forward "^\\*\\s-+" nil t))
419 (goto-char (point-min))
420 (skip-chars-forward "^():")
421 (skip-chars-forward ": ")
422 (delete-region (point-min) (point)))))
423
424(defun log-edit-mode-help () 394(defun log-edit-mode-help ()
425 "Provide help for the `log-edit-mode-map'." 395 "Provide help for the `log-edit-mode-map'."
426 (interactive) 396 (interactive)
@@ -465,11 +435,29 @@ To select default log text, we:
465 (selected-window))))) 435 (selected-window)))))
466 436
467(defun log-edit-insert-cvs-template () 437(defun log-edit-insert-cvs-template ()
468 "Insert the template specified by the CVS administrator, if any." 438 "Insert the template specified by the CVS administrator, if any.
439This simply uses the local CVS/Template file."
469 (interactive) 440 (interactive)
470 (when (file-readable-p "CVS/Template") 441 (when (or (interactive-p) (= (point-min) (point-max)))
471 (insert-file-contents "CVS/Template"))) 442 (when (file-readable-p "CVS/Template")
472 443 (insert-file-contents "CVS/Template"))))
444
445(defun log-edit-insert-cvs-rcstemplate ()
446 "Insert the rcstemplate from the CVS repository.
447This contacts the repository to get the rcstemplate file and
448can thus take some time."
449 (interactive)
450 (when (or (interactive-p) (= (point-min) (point-max)))
451 (when (file-readable-p "CVS/Root")
452 ;; Ignore the stderr stuff, even if it's an error.
453 (call-process "cvs" nil '(t nil) nil
454 "checkout" "-p" "CVSROOT/rcstemplate"))))
455
456(defun log-edit-insert-filenames ()
457 "Insert the list of files that are to be committed."
458 (interactive)
459 (insert "Affected files: \n"
460 (mapconcat 'identity (log-edit-files) " \n")))
473 461
474(defun log-edit-add-to-changelog () 462(defun log-edit-add-to-changelog ()
475 "Insert this log message into the appropriate ChangeLog file." 463 "Insert this log message into the appropriate ChangeLog file."
@@ -482,6 +470,37 @@ To select default log text, we:
482 (save-excursion 470 (save-excursion
483 (log-edit-comment-to-change-log))))) 471 (log-edit-comment-to-change-log)))))
484 472
473(defvar log-edit-changelog-use-first nil)
474(defun log-edit-insert-changelog (&optional use-first)
475 "Insert a log message by looking at the ChangeLog.
476The idea is to write your ChangeLog entries first, and then use this
477command to commit your changes.
478
479To select default log text, we:
480- find the ChangeLog entries for the files to be checked in,
481- verify that the top entry in the ChangeLog is on the current date
482 and by the current user; if not, we don't provide any default text,
483- search the ChangeLog entry for paragraphs containing the names of
484 the files we're checking in, and finally
485- use those paragraphs as the log text.
486
487If the optional prefix arg USE-FIRST is given (via \\[universal-argument]),
488or if the command is repeated a second time in a row, use the first log entry
489regardless of user name or time."
490 (interactive "P")
491 (let ((log-edit-changelog-use-first
492 (or use-first (eq last-command 'log-edit-insert-changelog))))
493 (log-edit-insert-changelog-entries (log-edit-files)))
494 (log-edit-set-common-indentation)
495 (goto-char (point-min))
496 (when (looking-at "\\*\\s-+")
497 (forward-line 1)
498 (when (not (re-search-forward "^\\*\\s-+" nil t))
499 (goto-char (point-min))
500 (skip-chars-forward "^():")
501 (skip-chars-forward ": ")
502 (delete-region (point-min) (point)))))
503
485;;;; 504;;;;
486;;;; functions for getting commit message from ChangeLog a file... 505;;;; functions for getting commit message from ChangeLog a file...
487;;;; Courtesy Jim Blandy 506;;;; Courtesy Jim Blandy
@@ -561,7 +580,9 @@ Return non-nil iff it is."
561 (functionp add-log-time-format) 580 (functionp add-log-time-format)
562 (funcall add-log-time-format)) 581 (funcall add-log-time-format))
563 (format-time-string "%Y-%m-%d")))) 582 (format-time-string "%Y-%m-%d"))))
564 (looking-at (regexp-quote (format "%s %s <%s>" time name mail))))) 583 (looking-at (if log-edit-changelog-use-first
584 "[^ \t]"
585 (regexp-quote (format "%s %s <%s>" time name mail))))))
565 586
566(defun log-edit-changelog-entries (file) 587(defun log-edit-changelog-entries (file)
567 "Return the ChangeLog entries for FILE, and the ChangeLog they came from. 588 "Return the ChangeLog entries for FILE, and the ChangeLog they came from.
diff --git a/lisp/longlines.el b/lisp/longlines.el
index 93f3daa4ee8..a3912a26ca7 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -136,6 +136,7 @@ are indicated with a symbol."
136 136
137 ;; Hacks to make longlines play nice with various modes. 137 ;; Hacks to make longlines play nice with various modes.
138 (cond ((eq major-mode 'mail-mode) 138 (cond ((eq major-mode 'mail-mode)
139 (add-hook 'mail-setup-hook 'longlines-decode-buffer nil t)
139 (or mail-citation-hook 140 (or mail-citation-hook
140 (add-hook 'mail-citation-hook 'mail-indent-citation nil t)) 141 (add-hook 'mail-citation-hook 'mail-indent-citation nil t))
141 (add-hook 'mail-citation-hook 'longlines-decode-region nil t)) 142 (add-hook 'mail-citation-hook 'longlines-decode-region nil t))
@@ -246,17 +247,21 @@ not need to be wrapped, move point to the next line and return t."
246 nil) 247 nil)
247 (if (longlines-merge-lines-p) 248 (if (longlines-merge-lines-p)
248 (progn (end-of-line) 249 (progn (end-of-line)
249 (delete-char 1)
250 ;; After certain commands (e.g. kill-line), there may be two 250 ;; After certain commands (e.g. kill-line), there may be two
251 ;; successive soft newlines in the buffer. In this case, we 251 ;; successive soft newlines in the buffer. In this case, we
252 ;; replace these two newlines by a single space. Unfortunately, 252 ;; replace these two newlines by a single space. Unfortunately,
253 ;; this breaks the conservation of (spaces + newlines), so we 253 ;; this breaks the conservation of (spaces + newlines), so we
254 ;; have to fiddle with longlines-wrap-point. 254 ;; have to fiddle with longlines-wrap-point.
255 (if (or (bolp) (eolp)) 255 (if (or (prog1 (bolp) (forward-char 1)) (eolp))
256 (if (> longlines-wrap-point (point)) 256 (progn
257 (setq longlines-wrap-point 257 (delete-char -1)
258 (1- longlines-wrap-point))) 258 (if (> longlines-wrap-point (point))
259 (insert-char ? 1)) 259 (setq longlines-wrap-point
260 (1- longlines-wrap-point))))
261 (insert-before-markers-and-inherit ?\ )
262 (backward-char 1)
263 (delete-char -1)
264 (forward-char 1))
260 nil) 265 nil)
261 (forward-line 1) 266 (forward-line 1)
262 t))) 267 t)))
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 5f5a53b0df0..0da64128118 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -45,8 +45,6 @@
45;; * A few obscure ls switches are still ignored: see the docstring of 45;; * A few obscure ls switches are still ignored: see the docstring of
46;; `insert-directory'. 46;; `insert-directory'.
47 47
48;; * Generally only numeric uid/gid.
49
50;; TO DO ============================================================= 48;; TO DO =============================================================
51 49
52;; Complete handling of F switch (if/when possible). 50;; Complete handling of F switch (if/when possible).
@@ -61,8 +59,8 @@
61;; Revised by Andrew Innes and Geoff Volker (and maybe others). 59;; Revised by Andrew Innes and Geoff Volker (and maybe others).
62 60
63;; Modified by Francis J. Wright <F.J.Wright@maths.qmw.ac.uk>, mainly 61;; Modified by Francis J. Wright <F.J.Wright@maths.qmw.ac.uk>, mainly
64;; to support many more ls options, "platform emulation", hooks for 62;; to support many more ls options, "platform emulation" and more
65;; external symbolic link support and more robust sorting. 63;; robust sorting.
66 64
67;;; Code: 65;;; Code:
68 66
@@ -175,14 +173,6 @@ current year. The OLD-TIME-FORMAT is used for older files. To use ISO
175(or (featurep 'ls-lisp) ; FJW: unless this file is being reloaded! 173(or (featurep 'ls-lisp) ; FJW: unless this file is being reloaded!
176 (setq original-insert-directory (symbol-function 'insert-directory))) 174 (setq original-insert-directory (symbol-function 'insert-directory)))
177 175
178;; This stub is to allow ls-lisp to parse symbolic links via another
179;; library such as w32-symlinks.el from
180;; http://centaur.maths.qmw.ac.uk/Emacs/:
181(defun ls-lisp-parse-symlink (file-name)
182 "This stub may be redefined to parse FILE-NAME as a symlink.
183It should return nil or the link target as a string."
184 nil)
185
186 176
187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
188 178
@@ -429,7 +419,9 @@ SWITCHES is a list of characters. Default sorting is alphabetic."
429 ;; symbolic link, or nil. 419 ;; symbolic link, or nil.
430 (let (el dirs files) 420 (let (el dirs files)
431 (while file-alist 421 (while file-alist
432 (if (eq (cadr (setq el (car file-alist))) t) ; directory 422 (if (or (eq (cadr (setq el (car file-alist))) t) ; directory
423 (and (stringp (cadr el))
424 (file-directory-p (cadr el)))) ; symlink to a directory
433 (setq dirs (cons el dirs)) 425 (setq dirs (cons el dirs))
434 (setq files (cons el files))) 426 (setq files (cons el files)))
435 (setq file-alist (cdr file-alist))) 427 (setq file-alist (cdr file-alist)))
@@ -455,12 +447,11 @@ links, `|' for FIFOs, `=' for sockets, and nothing for regular files.
455\[But FIFOs and sockets are not recognized.] 447\[But FIFOs and sockets are not recognized.]
456FILEDATA has the form (filename . `file-attributes'). Its `cadr' is t 448FILEDATA has the form (filename . `file-attributes'). Its `cadr' is t
457for directory, string (name linked to) for symbolic link, or nil." 449for directory, string (name linked to) for symbolic link, or nil."
458 (let ((dir (cadr filedata)) (file-name (car filedata))) 450 (let ((file-name (car filedata))
459 (cond ((or dir 451 (type (cadr filedata)))
460 ;; Parsing .lnk files here is perhaps overkill! 452 (cond (type
461 (setq dir (ls-lisp-parse-symlink file-name)))
462 (cons 453 (cons
463 (concat file-name (if (eq dir t) "/" "@")) 454 (concat file-name (if (eq type t) "/" "@"))
464 (cdr filedata))) 455 (cdr filedata)))
465 ((string-match "x" (nth 9 filedata)) 456 ((string-match "x" (nth 9 filedata))
466 (cons 457 (cons
@@ -506,10 +497,6 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data."
506 ;; t for directory, string (name linked to) 497 ;; t for directory, string (name linked to)
507 ;; for symbolic link, or nil. 498 ;; for symbolic link, or nil.
508 (drwxrwxrwx (nth 8 file-attr))) ; attribute string ("drwxrwxrwx") 499 (drwxrwxrwx (nth 8 file-attr))) ; attribute string ("drwxrwxrwx")
509 (and (null file-type)
510 ;; Maybe no kernel support for symlinks, so...
511 (setq file-type (ls-lisp-parse-symlink file-name))
512 (aset drwxrwxrwx 0 ?l)) ; symbolic link - update attribute string
513 (concat (if (memq ?i switches) ; inode number 500 (concat (if (memq ?i switches) ; inode number
514 (format " %6d" (nth 10 file-attr))) 501 (format " %6d" (nth 10 file-attr)))
515 ;; nil is treated like "" in concat 502 ;; nil is treated like "" in concat
diff --git a/lisp/mail/mailheader.el b/lisp/mail/mailheader.el
index aeed54a5ace..1e9a24da341 100644
--- a/lisp/mail/mailheader.el
+++ b/lisp/mail/mailheader.el
@@ -146,7 +146,7 @@ skip the header altogether if there are no other elements.
146 (insert (capitalize (symbol-name header)) 146 (insert (capitalize (symbol-name header))
147 ": " 147 ": "
148 (if (consp value) (car value) value) 148 (if (consp value) (car value) value)
149 hard-newline))) 149 "\n")))
150 150
151(defun mail-header-format (format-rules headers) 151(defun mail-header-format (format-rules headers)
152 "Use FORMAT-RULES to format HEADERS and insert into current buffer. 152 "Use FORMAT-RULES to format HEADERS and insert into current buffer.
@@ -187,7 +187,7 @@ A key of nil has as its value a list of defaulted headers to ignore."
187 (if (cdr rule) 187 (if (cdr rule)
188 (funcall (cdr rule) header value) 188 (funcall (cdr rule) header value)
189 (funcall mail-header-format-function header value)))))) 189 (funcall mail-header-format-function header value))))))
190 (insert hard-newline))) 190 (insert "\n")))
191 191
192(provide 'mailheader) 192(provide 'mailheader)
193 193
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index e87aebe7cc2..242fe788052 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -446,7 +446,7 @@ actually occur.")
446 ;; has been called and has done so. 446 ;; has been called and has done so.
447 (let ((fill-prefix "\t") 447 (let ((fill-prefix "\t")
448 (address-start (point))) 448 (address-start (point)))
449 (insert to hard-newline) 449 (insert to "\n")
450 (fill-region-as-paragraph address-start (point-max)) 450 (fill-region-as-paragraph address-start (point-max))
451 (goto-char (point-max)) 451 (goto-char (point-max))
452 (unless (bolp) 452 (unless (bolp)
@@ -455,7 +455,7 @@ actually occur.")
455 (if cc 455 (if cc
456 (let ((fill-prefix "\t") 456 (let ((fill-prefix "\t")
457 (address-start (progn (insert "CC: ") (point)))) 457 (address-start (progn (insert "CC: ") (point))))
458 (insert cc hard-newline) 458 (insert cc "\n")
459 (fill-region-as-paragraph address-start (point-max)) 459 (fill-region-as-paragraph address-start (point-max))
460 (goto-char (point-max)) 460 (goto-char (point-max))
461 (unless (bolp) 461 (unless (bolp)
@@ -464,23 +464,23 @@ actually occur.")
464 (let ((fill-prefix "\t") 464 (let ((fill-prefix "\t")
465 (fill-column 78) 465 (fill-column 78)
466 (address-start (point))) 466 (address-start (point)))
467 (insert "In-reply-to: " in-reply-to hard-newline) 467 (insert "In-reply-to: " in-reply-to "\n")
468 (fill-region-as-paragraph address-start (point-max)) 468 (fill-region-as-paragraph address-start (point-max))
469 (goto-char (point-max)) 469 (goto-char (point-max))
470 (unless (bolp) 470 (unless (bolp)
471 (newline)))) 471 (newline))))
472 (insert "Subject: " (or subject "") hard-newline) 472 (insert "Subject: " (or subject "") "\n")
473 (if mail-default-headers 473 (if mail-default-headers
474 (insert mail-default-headers)) 474 (insert mail-default-headers))
475 (if mail-default-reply-to 475 (if mail-default-reply-to
476 (insert "Reply-to: " mail-default-reply-to hard-newline)) 476 (insert "Reply-to: " mail-default-reply-to "\n"))
477 (if mail-self-blind 477 (if mail-self-blind
478 (insert "BCC: " user-mail-address hard-newline)) 478 (insert "BCC: " user-mail-address "\n"))
479 (if mail-archive-file-name 479 (if mail-archive-file-name
480 (insert "FCC: " mail-archive-file-name hard-newline)) 480 (insert "FCC: " mail-archive-file-name "\n"))
481 (put-text-property (point) 481 (put-text-property (point)
482 (progn 482 (progn
483 (insert mail-header-separator hard-newline) 483 (insert mail-header-separator "\n")
484 (1- (point))) 484 (1- (point)))
485 'category 'mail-header-separator) 485 'category 'mail-header-separator)
486 ;; Insert the signature. But remember the beginning of the message. 486 ;; Insert the signature. But remember the beginning of the message.
@@ -488,7 +488,7 @@ actually occur.")
488 (cond ((eq mail-signature t) 488 (cond ((eq mail-signature t)
489 (if (file-exists-p mail-signature-file) 489 (if (file-exists-p mail-signature-file)
490 (progn 490 (progn
491 (insert hard-newline hard-newline "-- " hard-newline) 491 (insert "\n\n-- \n")
492 (insert-file-contents mail-signature-file)))) 492 (insert-file-contents mail-signature-file))))
493 ((stringp mail-signature) 493 ((stringp mail-signature)
494 (insert mail-signature)) 494 (insert mail-signature))
@@ -835,14 +835,14 @@ the user from the mailer."
835 (split-string new-header-values 835 (split-string new-header-values
836 ",[[:space:]]+" t)) 836 ",[[:space:]]+" t))
837 (mapconcat 'identity l ", ")) 837 (mapconcat 'identity l ", "))
838 hard-newline)) 838 "\n"))
839 ;; Add Mail-Reply-To if none yet 839 ;; Add Mail-Reply-To if none yet
840 (unless (mail-fetch-field "mail-reply-to") 840 (unless (mail-fetch-field "mail-reply-to")
841 (goto-char (mail-header-end)) 841 (goto-char (mail-header-end))
842 (insert "Mail-Reply-To: " 842 (insert "Mail-Reply-To: "
843 (or (mail-fetch-field "reply-to") 843 (or (mail-fetch-field "reply-to")
844 user-mail-address) 844 user-mail-address)
845 hard-newline)))))) 845 "\n"))))))
846 (unless (memq mail-send-nonascii '(t mime)) 846 (unless (memq mail-send-nonascii '(t mime))
847 (goto-char (point-min)) 847 (goto-char (point-min))
848 (skip-chars-forward "\0-\177") 848 (skip-chars-forward "\0-\177")
@@ -931,7 +931,7 @@ See also the function `select-message-coding-system'.")
931 fullname-end 1) 931 fullname-end 1)
932 (replace-match "\\\\\\&" t)) 932 (replace-match "\\\\\\&" t))
933 (insert "\"")))) 933 (insert "\""))))
934 (insert " <" login ">" hard-newline)) 934 (insert " <" login ">\n"))
935 ((eq mail-from-style 'parens) 935 ((eq mail-from-style 'parens)
936 (insert "From: " login " (") 936 (insert "From: " login " (")
937 (let ((fullname-start (point))) 937 (let ((fullname-start (point)))
@@ -955,9 +955,9 @@ See also the function `select-message-coding-system'.")
955 fullname-end 1) 955 fullname-end 1)
956 (replace-match "\\1(\\3)" t) 956 (replace-match "\\1(\\3)" t)
957 (goto-char fullname-start)))) 957 (goto-char fullname-start))))
958 (insert ")" hard-newline)) 958 (insert ")\n"))
959 ((null mail-from-style) 959 ((null mail-from-style)
960 (insert "From: " login hard-newline)) 960 (insert "From: " login "\n"))
961 ((eq mail-from-style 'system-default) 961 ((eq mail-from-style 'system-default)
962 nil) 962 nil)
963 (t (error "Invalid value for `mail-from-style'"))))) 963 (t (error "Invalid value for `mail-from-style'")))))
@@ -996,7 +996,7 @@ external program defined by `sendmail-program'."
996 (goto-char (point-max)) 996 (goto-char (point-max))
997 ;; require one newline at the end. 997 ;; require one newline at the end.
998 (or (= (preceding-char) ?\n) 998 (or (= (preceding-char) ?\n)
999 (insert hard-newline)) 999 (insert ?\n))
1000 ;; Change header-delimiter to be what sendmail expects. 1000 ;; Change header-delimiter to be what sendmail expects.
1001 (goto-char (mail-header-end)) 1001 (goto-char (mail-header-end))
1002 (delete-region (point) (progn (end-of-line) (point))) 1002 (delete-region (point) (progn (end-of-line) (point)))
@@ -1008,7 +1008,7 @@ external program defined by `sendmail-program'."
1008 ;; Ignore any blank lines in the header 1008 ;; Ignore any blank lines in the header
1009 (while (and (re-search-forward "\n\n\n*" delimline t) 1009 (while (and (re-search-forward "\n\n\n*" delimline t)
1010 (< (point) delimline)) 1010 (< (point) delimline))
1011 (replace-match hard-newline)) 1011 (replace-match "\n"))
1012 (goto-char (point-min)) 1012 (goto-char (point-min))
1013 ;; Look for Resent- headers. They require sending 1013 ;; Look for Resent- headers. They require sending
1014 ;; the message specially. 1014 ;; the message specially.
@@ -1070,10 +1070,10 @@ external program defined by `sendmail-program'."
1070 (setq charset 1070 (setq charset
1071 (coding-system-get selected-coding 'mime-charset)) 1071 (coding-system-get selected-coding 'mime-charset))
1072 (goto-char delimline) 1072 (goto-char delimline)
1073 (insert "MIME-version: 1.0" hard-newline 1073 (insert "MIME-version: 1.0\n"
1074 "Content-type: text/plain; charset=" 1074 "Content-type: text/plain; charset="
1075 (symbol-name charset) hard-newline 1075 (symbol-name charset)
1076 "Content-Transfer-Encoding: 8bit" hard-newline))) 1076 "\nContent-Transfer-Encoding: 8bit\n")))
1077 ;; Insert an extra newline if we need it to work around 1077 ;; Insert an extra newline if we need it to work around
1078 ;; Sun's bug that swallows newlines. 1078 ;; Sun's bug that swallows newlines.
1079 (goto-char (1+ delimline)) 1079 (goto-char (1+ delimline))
@@ -1167,8 +1167,8 @@ external program defined by `sendmail-program'."
1167 (set-buffer tembuf) 1167 (set-buffer tembuf)
1168 (erase-buffer) 1168 (erase-buffer)
1169 ;; This initial newline is written out if the fcc file already exists. 1169 ;; This initial newline is written out if the fcc file already exists.
1170 (insert hard-newline "From " (user-login-name) " " 1170 (insert "\nFrom " (user-login-name) " "
1171 (current-time-string time) hard-newline) 1171 (current-time-string time) "\n")
1172 ;; Insert the time zone before the year. 1172 ;; Insert the time zone before the year.
1173 (forward-char -1) 1173 (forward-char -1)
1174 (forward-word -1) 1174 (forward-word -1)
@@ -1178,7 +1178,7 @@ external program defined by `sendmail-program'."
1178 (insert-buffer-substring rmailbuf) 1178 (insert-buffer-substring rmailbuf)
1179 ;; Make sure messages are separated. 1179 ;; Make sure messages are separated.
1180 (goto-char (point-max)) 1180 (goto-char (point-max))
1181 (insert hard-newline) 1181 (insert ?\n)
1182 (goto-char 2) 1182 (goto-char 2)
1183 ;; ``Quote'' "^From " as ">From " 1183 ;; ``Quote'' "^From " as ">From "
1184 ;; (note that this isn't really quoting, as there is no requirement 1184 ;; (note that this isn't really quoting, as there is no requirement
@@ -1220,11 +1220,10 @@ external program defined by `sendmail-program'."
1220 (rmail-maybe-set-message-counters) 1220 (rmail-maybe-set-message-counters)
1221 (widen) 1221 (widen)
1222 (narrow-to-region (point-max) (point-max)) 1222 (narrow-to-region (point-max) (point-max))
1223 (insert "\C-l" hard-newline "0, unseen,," 1223 (insert "\C-l\n0, unseen,,\n*** EOOH ***\n"
1224 hard-newline "*** EOOH ***" hard-newline 1224 "Date: " (mail-rfc822-date) "\n")
1225 "Date: " (mail-rfc822-date) hard-newline)
1226 (insert-buffer-substring curbuf beg2 end) 1225 (insert-buffer-substring curbuf beg2 end)
1227 (insert hard-newline "\C-_") 1226 (insert "\n\C-_")
1228 (goto-char (point-min)) 1227 (goto-char (point-min))
1229 (widen) 1228 (widen)
1230 (search-backward "\n\^_") 1229 (search-backward "\n\^_")
@@ -1262,11 +1261,10 @@ external program defined by `sendmail-program'."
1262 (set-buffer (get-buffer-create " mail-temp")) 1261 (set-buffer (get-buffer-create " mail-temp"))
1263 (setq buffer-read-only nil) 1262 (setq buffer-read-only nil)
1264 (erase-buffer) 1263 (erase-buffer)
1265 (insert "\C-l" hard-newline "0, unseen,," hard-newline 1264 (insert "\C-l\n0, unseen,,\n*** EOOH ***\nDate: "
1266 "*** EOOH ***" hard-newline "Date: " 1265 (mail-rfc822-date) "\n")
1267 (mail-rfc822-date) hard-newline)
1268 (insert-buffer-substring curbuf beg2 end) 1266 (insert-buffer-substring curbuf beg2 end)
1269 (insert hard-newline "\C-_") 1267 (insert "\n\C-_")
1270 (write-region (point-min) (point-max) (car fcc-list) t) 1268 (write-region (point-min) (point-max) (car fcc-list) t)
1271 (erase-buffer))) 1269 (erase-buffer)))
1272 (write-region 1270 (write-region
@@ -1318,7 +1316,7 @@ external program defined by `sendmail-program'."
1318 (expand-abbrev) 1316 (expand-abbrev)
1319 (or (mail-position-on-field "cc" t) 1317 (or (mail-position-on-field "cc" t)
1320 (progn (mail-position-on-field "to") 1318 (progn (mail-position-on-field "to")
1321 (insert hard-newline "CC: ")))) 1319 (insert "\nCC: "))))
1322 1320
1323(defun mail-bcc () 1321(defun mail-bcc ()
1324 "Move point to end of BCC-field. Create a BCC field if none." 1322 "Move point to end of BCC-field. Create a BCC field if none."
@@ -1326,7 +1324,7 @@ external program defined by `sendmail-program'."
1326 (expand-abbrev) 1324 (expand-abbrev)
1327 (or (mail-position-on-field "bcc" t) 1325 (or (mail-position-on-field "bcc" t)
1328 (progn (mail-position-on-field "to") 1326 (progn (mail-position-on-field "to")
1329 (insert hard-newline "BCC: ")))) 1327 (insert "\nBCC: "))))
1330 1328
1331(defun mail-fcc (folder) 1329(defun mail-fcc (folder)
1332 "Add a new FCC field, with file name completion." 1330 "Add a new FCC field, with file name completion."
@@ -1334,7 +1332,7 @@ external program defined by `sendmail-program'."
1334 (expand-abbrev) 1332 (expand-abbrev)
1335 (or (mail-position-on-field "fcc" t) ;Put new field after exiting FCC. 1333 (or (mail-position-on-field "fcc" t) ;Put new field after exiting FCC.
1336 (mail-position-on-field "to")) 1334 (mail-position-on-field "to"))
1337 (insert hard-newline "FCC: " folder)) 1335 (insert "\nFCC: " folder))
1338 1336
1339(defun mail-reply-to () 1337(defun mail-reply-to ()
1340 "Move point to end of Reply-To-field. Create a Reply-To field if none." 1338 "Move point to end of Reply-To-field. Create a Reply-To field if none."
@@ -1349,7 +1347,7 @@ Create a Mail-Reply-To field if none."
1349 (expand-abbrev) 1347 (expand-abbrev)
1350 (or (mail-position-on-field "mail-reply-to" t) 1348 (or (mail-position-on-field "mail-reply-to" t)
1351 (progn (mail-position-on-field "to") 1349 (progn (mail-position-on-field "to")
1352 (insert hard-newline "Mail-Reply-To: ")))) 1350 (insert "\nMail-Reply-To: "))))
1353 1351
1354(defun mail-mail-followup-to () 1352(defun mail-mail-followup-to ()
1355 "Move point to end of Mail-Followup-To field. 1353 "Move point to end of Mail-Followup-To field.
@@ -1358,7 +1356,7 @@ Create a Mail-Followup-To field if none."
1358 (expand-abbrev) 1356 (expand-abbrev)
1359 (or (mail-position-on-field "mail-followup-to" t) 1357 (or (mail-position-on-field "mail-followup-to" t)
1360 (progn (mail-position-on-field "to") 1358 (progn (mail-position-on-field "to")
1361 (insert hard-newline "Mail-Followup-To: ")))) 1359 (insert "\nMail-Followup-To: "))))
1362 1360
1363(defun mail-position-on-field (field &optional soft) 1361(defun mail-position-on-field (field &optional soft)
1364 (let (end 1362 (let (end
@@ -1373,7 +1371,7 @@ Create a Mail-Followup-To field if none."
1373 t) 1371 t)
1374 (or soft 1372 (or soft
1375 (progn (goto-char end) 1373 (progn (goto-char end)
1376 (insert field ": " hard-newline) 1374 (insert field ": \n")
1377 (skip-chars-backward "\n"))) 1375 (skip-chars-backward "\n")))
1378 nil))) 1376 nil)))
1379 1377
@@ -1396,7 +1394,7 @@ Prefix arg means put contents at point."
1396 (delete-region (point) (point-max))) 1394 (delete-region (point) (point-max)))
1397 (if (stringp mail-signature) 1395 (if (stringp mail-signature)
1398 (insert mail-signature) 1396 (insert mail-signature)
1399 (insert hard-newline hard-newline "-- " hard-newline) 1397 (insert "\n\n-- \n")
1400 (insert-file-contents (expand-file-name mail-signature-file))))) 1398 (insert-file-contents (expand-file-name mail-signature-file)))))
1401 1399
1402(defun mail-fill-yanked-message (&optional justifyp) 1400(defun mail-fill-yanked-message (&optional justifyp)
@@ -1482,7 +1480,7 @@ and don't delete any header fields."
1482 ;; loop would deactivate the mark because we inserted text. 1480 ;; loop would deactivate the mark because we inserted text.
1483 (goto-char (prog1 (mark t) 1481 (goto-char (prog1 (mark t)
1484 (set-marker (mark-marker) (point) (current-buffer)))) 1482 (set-marker (mark-marker) (point) (current-buffer))))
1485 (if (not (eolp)) (insert hard-newline))))) 1483 (if (not (eolp)) (insert ?\n)))))
1486 1484
1487(defun mail-yank-clear-headers (start end) 1485(defun mail-yank-clear-headers (start end)
1488 (if (< end start) 1486 (if (< end start)
@@ -1566,8 +1564,7 @@ If the current line has `mail-yank-prefix', insert it on the new line."
1566 (insert-char ?= (max 0 (- 60 (current-column)))) 1564 (insert-char ?= (max 0 (- 60 (current-column))))
1567 (newline) 1565 (newline)
1568 (setq middle (point)) 1566 (setq middle (point))
1569 (insert "============================================================" 1567 (insert "============================================================\n")
1570 hard-newline)
1571 (push-mark) 1568 (push-mark)
1572 (goto-char middle) 1569 (goto-char middle)
1573 (insert-file-contents file) 1570 (insert-file-contents file)
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 0aab1a99bb6..2c5d9cbddd6 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -371,16 +371,9 @@ That means one whose bottom edge is at the same height as WINDOW's top edge."
371Move it down if GROWTH is positive, or up if GROWTH is negative. 371Move it down if GROWTH is positive, or up if GROWTH is negative.
372If this would make WINDOW too short, 372If this would make WINDOW too short,
373shrink the window or windows above it to make room." 373shrink the window or windows above it to make room."
374 (let ((excess (- window-min-height (+ (window-height window) growth)))) 374 (condition-case nil
375 ;; EXCESS is the number of lines we need to take from windows above. 375 (adjust-window-trailing-edge window growth nil)
376 (if (> excess 0) 376 (error nil)))
377 ;; This can recursively shrink windows all the way up.
378 (let ((window-above (mouse-drag-window-above window)))
379 (if window-above
380 (mouse-drag-move-window-bottom window-above (- excess))))))
381 (save-selected-window
382 (select-window window)
383 (enlarge-window growth nil (> growth 0))))
384 377
385(defsubst mouse-drag-move-window-top (window growth) 378(defsubst mouse-drag-move-window-top (window growth)
386 "Move the top of WINDOW up or down by GROWTH lines. 379 "Move the top of WINDOW up or down by GROWTH lines.
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index d86a8ecdf2d..9925227619f 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -174,6 +174,7 @@ and `goto-address-fontify-p'."
174 (overlay-put this-overlay 'evaporate t) 174 (overlay-put this-overlay 'evaporate t)
175 (overlay-put this-overlay 175 (overlay-put this-overlay
176 'mouse-face goto-address-url-mouse-face) 176 'mouse-face goto-address-url-mouse-face)
177 (overlay-put this-overlay 'follow-link t)
177 (overlay-put this-overlay 178 (overlay-put this-overlay
178 'help-echo "mouse-2, C-c RET: follow URL") 179 'help-echo "mouse-2, C-c RET: follow URL")
179 (overlay-put this-overlay 180 (overlay-put this-overlay
@@ -189,6 +190,7 @@ and `goto-address-fontify-p'."
189 (overlay-put this-overlay 'evaporate t) 190 (overlay-put this-overlay 'evaporate t)
190 (overlay-put this-overlay 'mouse-face 191 (overlay-put this-overlay 'mouse-face
191 goto-address-mail-mouse-face) 192 goto-address-mail-mouse-face)
193 (overlay-put this-overlay 'follow-link t)
192 (overlay-put this-overlay 194 (overlay-put this-overlay
193 'help-echo "mouse-2, C-c RET: mail this address") 195 'help-echo "mouse-2, C-c RET: mail this address")
194 (overlay-put this-overlay 196 (overlay-put this-overlay
@@ -210,7 +212,7 @@ Send mail to address at point. See documentation for
210there, then load the URL at or before point." 212there, then load the URL at or before point."
211 (interactive (list last-input-event)) 213 (interactive (list last-input-event))
212 (save-excursion 214 (save-excursion
213 (if event (mouse-set-point event)) 215 (if event (posn-set-point (event-end event)))
214 (let ((address (save-excursion (goto-address-find-address-at-point)))) 216 (let ((address (save-excursion (goto-address-find-address-at-point))))
215 (if (and address 217 (if (and address
216 (save-excursion 218 (save-excursion
diff --git a/lisp/paren.el b/lisp/paren.el
index ece3ed3c606..2164ac72d39 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -110,14 +110,7 @@ Returns the new status of Show Paren mode (non-nil means on).
110When Show Paren mode is enabled, any matching parenthesis is highlighted 110When Show Paren mode is enabled, any matching parenthesis is highlighted
111in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time." 111in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
112 :global t :group 'paren-showing 112 :global t :group 'paren-showing
113 ;; Turn off the usual paren-matching method 113 ;; Enable or disable the mechanism.
114 ;; when this one is turned on.
115 (if (local-variable-p 'show-paren-mode)
116 (make-local-variable 'blink-matching-paren-on-screen)
117 (kill-local-variable 'blink-matching-paren-on-screen))
118 (setq blink-matching-paren-on-screen (not show-paren-mode))
119
120 ;; Now enable or disable the mechanism.
121 ;; First get rid of the old idle timer. 114 ;; First get rid of the old idle timer.
122 (if show-paren-idle-timer 115 (if show-paren-idle-timer
123 (cancel-timer show-paren-idle-timer)) 116 (cancel-timer show-paren-idle-timer))
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index a158ad3f4e0..5faa21d75a2 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1335,19 +1335,18 @@ Optional argument MINOR indicates this is called from
1335 ;; jit-lock might fontify some things too late. 1335 ;; jit-lock might fontify some things too late.
1336 (set (make-local-variable 'font-lock-support-mode) nil) 1336 (set (make-local-variable 'font-lock-support-mode) nil)
1337 (set (make-local-variable 'font-lock-maximum-size) nil) 1337 (set (make-local-variable 'font-lock-maximum-size) nil)
1338 (let ((fld font-lock-defaults)) 1338 (if minor
1339 (if (and minor fld) 1339 (let ((fld font-lock-defaults))
1340 (font-lock-add-keywords nil (compilation-mode-font-lock-keywords)) 1340 (font-lock-add-keywords nil (compilation-mode-font-lock-keywords))
1341 (setq font-lock-defaults '(compilation-mode-font-lock-keywords t)))
1342 (if minor
1343 (if font-lock-mode 1341 (if font-lock-mode
1344 (if fld 1342 (if fld
1345 (font-lock-fontify-buffer) 1343 (font-lock-fontify-buffer)
1346 (font-lock-change-mode) 1344 (font-lock-change-mode)
1347 (turn-on-font-lock)) 1345 (turn-on-font-lock))
1348 (turn-on-font-lock)) 1346 (turn-on-font-lock)))
1349 ;; maybe defer font-lock till after derived mode is set up 1347 (setq font-lock-defaults '(compilation-mode-font-lock-keywords t))
1350 (run-mode-hooks 'compilation-turn-on-font-lock)))) 1348 ;; maybe defer font-lock till after derived mode is set up
1349 (run-mode-hooks 'compilation-turn-on-font-lock)))
1351 1350
1352;;;###autoload 1351;;;###autoload
1353(define-minor-mode compilation-shell-minor-mode 1352(define-minor-mode compilation-shell-minor-mode
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 961ee0747ff..e714fa3d7fb 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -41,7 +41,7 @@
41;; You don't need to know about annotations to use this mode as a debugger, 41;; You don't need to know about annotations to use this mode as a debugger,
42;; but if you are interested developing the mode itself, then see the 42;; but if you are interested developing the mode itself, then see the
43;; Annotations section in the GDB info manual. 43;; Annotations section in the GDB info manual.
44;; 44
45;; GDB developers plan to make the annotation interface obsolete. A new 45;; GDB developers plan to make the annotation interface obsolete. A new
46;; interface called GDB/MI (machine interface) has been designed to replace 46;; interface called GDB/MI (machine interface) has been designed to replace
47;; it. Some GDB/MI commands are used in this file through the CLI command 47;; it. Some GDB/MI commands are used in this file through the CLI command
@@ -49,26 +49,32 @@
49;; GDB (6.2 onwards) that uses GDB/MI as the primary interface to GDB. It is 49;; GDB (6.2 onwards) that uses GDB/MI as the primary interface to GDB. It is
50;; still under development and is part of a process to migrate Emacs from 50;; still under development and is part of a process to migrate Emacs from
51;; annotations to GDB/MI. 51;; annotations to GDB/MI.
52;; 52
53;; This mode SHOULD WORK WITH GDB 5.0 ONWARDS but you will NEED GDB 6.0 53;; This mode SHOULD WORK WITH GDB 5.0 onwards but you will NEED GDB 6.0
54;; ONWARDS TO USE WATCH EXPRESSIONS. 54;; onwards to use watch expressions.
55;; 55
56;; Windows Platforms: 56;;; Windows Platforms:
57;; 57
58;; If you are using Emacs and GDB on Windows you will need to flush the buffer 58;; If you are using Emacs and GDB on Windows you will need to flush the buffer
59;; explicitly in your program if you want timely display of I/O in Emacs. 59;; explicitly in your program if you want timely display of I/O in Emacs.
60;; Alternatively you can make the output stream unbuffered, for example, by 60;; Alternatively you can make the output stream unbuffered, for example, by
61;; using a macro: 61;; using a macro:
62;; 62
63;; #ifdef UNBUFFERED 63;; #ifdef UNBUFFERED
64;; setvbuf (stdout, (char *) NULL, _IONBF, 0); 64;; setvbuf (stdout, (char *) NULL, _IONBF, 0);
65;; #endif 65;; #endif
66;; 66
67;; and compiling with -DUNBUFFERED while debugging. 67;; and compiling with -DUNBUFFERED while debugging.
68;; 68
69;; Known Bugs: 69;;; Known Bugs:
70;; 70
71;; TODO: 71;; 1) Strings that are watched don't update in the speedbar when their
72;; contents change.
73;; 2) Watch expressions go out of scope when the inferior is re-run.
74;; 3) Cannot handle multiple debug sessions.
75
76;;; TODO:
77
72;; 1) Use MI command -data-read-memory for memory window. 78;; 1) Use MI command -data-read-memory for memory window.
73;; 2) Highlight changed register values (use MI commands 79;; 2) Highlight changed register values (use MI commands
74;; -data-list-register-values and -data-list-changed-registers instead 80;; -data-list-register-values and -data-list-changed-registers instead
@@ -397,6 +403,8 @@ With arg, use separate IO iff arg is positive."
397 'gdb-mouse-until) 403 'gdb-mouse-until)
398 (define-key gud-minor-mode-map [left-fringe drag-mouse-1] 404 (define-key gud-minor-mode-map [left-fringe drag-mouse-1]
399 'gdb-mouse-until) 405 'gdb-mouse-until)
406 (define-key gud-minor-mode-map [left-margin mouse-2]
407 'gdb-mouse-until)
400 (define-key gud-minor-mode-map [left-margin mouse-3] 408 (define-key gud-minor-mode-map [left-margin mouse-3]
401 'gdb-mouse-toggle-breakpoint-margin) 409 'gdb-mouse-toggle-breakpoint-margin)
402 (define-key gud-minor-mode-map [left-fringe mouse-3] 410 (define-key gud-minor-mode-map [left-fringe mouse-3]
@@ -471,6 +479,21 @@ With arg, use separate IO iff arg is positive."
471 (forward-char 2) 479 (forward-char 2)
472 (gud-call (concat "until *%a"))))))))) 480 (gud-call (concat "until *%a")))))))))
473 481
482(defcustom gdb-speedbar-auto-raise t
483 "If non-nil raise speedbar every time display of watch expressions is\
484 updated."
485 :type 'boolean
486 :group 'gud
487 :version "22.1")
488
489(defun gdb-speedbar-auto-raise (arg)
490 "Toggle automatic raising of the speedbar for watch expressions."
491 (interactive "P")
492 (setq gdb-speedbar-auto-raise
493 (if (null arg)
494 (not gdb-speedbar-auto-raise)
495 (> (prefix-numeric-value arg) 0))))
496
474(defcustom gdb-use-colon-colon-notation nil 497(defcustom gdb-use-colon-colon-notation nil
475 "If non-nil use FUN::VAR format to display variables in the speedbar." 498 "If non-nil use FUN::VAR format to display variables in the speedbar."
476 :type 'boolean 499 :type 'boolean
@@ -514,19 +537,16 @@ With arg, use separate IO iff arg is positive."
514 (unless (string-equal 537 (unless (string-equal
515 speedbar-initial-expansion-list-name "GUD") 538 speedbar-initial-expansion-list-name "GUD")
516 (speedbar-change-initial-expansion-list "GUD")) 539 (speedbar-change-initial-expansion-list "GUD"))
517 (if (or (equal (nth 2 var) "0") 540 (gdb-enqueue-input
518 (and (equal (nth 2 var) "1") 541 (list
519 (string-match "char \\*" (nth 3 var)))) 542 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
520 (gdb-enqueue-input 543 'gdba)
521 (list 544 (concat "server interpreter mi \"-var-evaluate-expression "
522 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 545 (nth 1 var) "\"\n")
523 'gdba) 546 (concat "-var-evaluate-expression " (nth 1 var) "\n"))
524 (concat "server interpreter mi \"-var-evaluate-expression " 547 `(lambda () (gdb-var-evaluate-expression-handler
525 (nth 1 var) "\"\n") 548 ,(nth 1 var) nil))))
526 (concat "-var-evaluate-expression " (nth 1 var) "\n")) 549 (setq gdb-var-changed t))
527 `(lambda () (gdb-var-evaluate-expression-handler
528 ,(nth 1 var) nil))))
529 (setq gdb-var-changed t)))
530 (if (re-search-forward "Undefined command" nil t) 550 (if (re-search-forward "Undefined command" nil t)
531 (message-box "Watching expressions requires gdb 6.0 onwards") 551 (message-box "Watching expressions requires gdb 6.0 onwards")
532 (message "No symbol \"%s\" in current context." expr))))) 552 (message "No symbol \"%s\" in current context." expr)))))
@@ -575,16 +595,13 @@ type=\"\\(.*?\\)\"")
575 (if (string-equal (cadr var1) (cadr varchild)) 595 (if (string-equal (cadr var1) (cadr varchild))
576 (throw 'child-already-watched nil))) 596 (throw 'child-already-watched nil)))
577 (push varchild var-list) 597 (push varchild var-list)
578 (if (or (equal (nth 2 varchild) "0") 598 (gdb-enqueue-input
579 (and (equal (nth 2 varchild) "1") 599 (list
580 (string-match "char \\*" (nth 3 varchild)))) 600 (concat
581 (gdb-enqueue-input 601 "server interpreter mi \"-var-evaluate-expression "
582 (list 602 (nth 1 varchild) "\"\n")
583 (concat 603 `(lambda () (gdb-var-evaluate-expression-handler
584 "server interpreter mi \"-var-evaluate-expression " 604 ,(nth 1 varchild) nil)))))))
585 (nth 1 varchild) "\"\n")
586 `(lambda () (gdb-var-evaluate-expression-handler
587 ,(nth 1 varchild) nil))))))))
588 (push var var-list))) 605 (push var var-list)))
589 (setq gdb-var-list (nreverse var-list)))))) 606 (setq gdb-var-list (nreverse var-list))))))
590 607
@@ -604,16 +621,12 @@ type=\"\\(.*?\\)\"")
604 (catch 'var-found-1 621 (catch 'var-found-1
605 (let ((varnum (match-string 1))) 622 (let ((varnum (match-string 1)))
606 (dolist (var gdb-var-list) 623 (dolist (var gdb-var-list)
607 (when (and (string-equal varnum (cadr var)) 624 (gdb-enqueue-input
608 (or (equal (nth 2 var) "0") 625 (list
609 (and (equal (nth 2 var) "1") 626 (concat "server interpreter mi \"-var-evaluate-expression "
610 (string-match "char \\*" (nth 3 var))))) 627 varnum "\"\n")
611 (gdb-enqueue-input 628 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))
612 (list 629 (throw 'var-found-1 nil))))))
613 (concat "server interpreter mi \"-var-evaluate-expression "
614 varnum "\"\n")
615 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))
616 (throw 'var-found-1 nil)))))))
617 (setq gdb-pending-triggers 630 (setq gdb-pending-triggers
618 (delq 'gdb-var-update gdb-pending-triggers)) 631 (delq 'gdb-var-update gdb-pending-triggers))
619 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) 632 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
@@ -1005,6 +1018,7 @@ This filter may simply queue input for a later time."
1005 "An annotation handler for `pre-prompt'. 1018 "An annotation handler for `pre-prompt'.
1006This terminates the collection of output from a previous command if that 1019This terminates the collection of output from a previous command if that
1007happens to be in effect." 1020happens to be in effect."
1021 (setq gdb-error nil)
1008 (let ((sink gdb-output-sink)) 1022 (let ((sink gdb-output-sink))
1009 (cond 1023 (cond
1010 ((eq sink 'user) t) 1024 ((eq sink 'user) t)
@@ -1097,6 +1111,7 @@ directives."
1097It is just like `gdb-stopping', except that if we already set the output 1111It is just like `gdb-stopping', except that if we already set the output
1098sink to `user' in `gdb-stopping', that is fine." 1112sink to `user' in `gdb-stopping', that is fine."
1099 (setq gud-running nil) 1113 (setq gud-running nil)
1114 (setq gdb-active-process t)
1100 (let ((sink gdb-output-sink)) 1115 (let ((sink gdb-output-sink))
1101 (cond 1116 (cond
1102 ((eq sink 'inferior) 1117 ((eq sink 'inferior)
@@ -1458,11 +1473,11 @@ static char *magick[] = {
1458 (gdb-put-breakpoint-icon (eq flag ?y) bptno))) 1473 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))
1459 (gdb-enqueue-input 1474 (gdb-enqueue-input
1460 (list 1475 (list
1461 (concat "list " 1476 (concat gdb-server-prefix "list "
1462 (match-string-no-properties 1) ":1\n") 1477 (match-string-no-properties 1) ":1\n")
1463 'ignore)) 1478 'ignore))
1464 (gdb-enqueue-input 1479 (gdb-enqueue-input
1465 (list "info source\n" 1480 (list (concat gdb-server-prefix "info source\n")
1466 `(lambda () (gdb-get-location 1481 `(lambda () (gdb-get-location
1467 ,bptno ,line ,flag)))))))))) 1482 ,bptno ,line ,flag))))))))))
1468 (end-of-line))))) 1483 (end-of-line)))))
@@ -1497,7 +1512,7 @@ static char *magick[] = {
1497 (list 1512 (list
1498 (let ((bptno (get-text-property 1513 (let ((bptno (get-text-property
1499 0 'gdb-bptno (car (posn-string posn))))) 1514 0 'gdb-bptno (car (posn-string posn)))))
1500 (concat 1515 (concat gdb-server-prefix
1501 (if (get-text-property 1516 (if (get-text-property
1502 0 'gdb-enabled (car (posn-string posn))) 1517 0 'gdb-enabled (car (posn-string posn)))
1503 "disable " 1518 "disable "
@@ -1523,7 +1538,7 @@ static char *magick[] = {
1523 (when (stringp obj) 1538 (when (stringp obj)
1524 (gdb-enqueue-input 1539 (gdb-enqueue-input
1525 (list 1540 (list
1526 (concat 1541 (concat gdb-server-prefix
1527 (if (get-text-property 0 'gdb-enabled obj) 1542 (if (get-text-property 0 'gdb-enabled obj)
1528 "disable " 1543 "disable "
1529 "enable ") 1544 "enable ")
@@ -1557,7 +1572,7 @@ static char *magick[] = {
1557 (suppress-keymap map) 1572 (suppress-keymap map)
1558 (define-key map [menu-bar breakpoints] (cons "Breakpoints" menu)) 1573 (define-key map [menu-bar breakpoints] (cons "Breakpoints" menu))
1559 (define-key map " " 'gdb-toggle-breakpoint) 1574 (define-key map " " 'gdb-toggle-breakpoint)
1560 (define-key map "d" 'gdb-delete-breakpoint) 1575 (define-key map "D" 'gdb-delete-breakpoint)
1561 (define-key map "q" 'kill-this-buffer) 1576 (define-key map "q" 'kill-this-buffer)
1562 (define-key map "\r" 'gdb-goto-breakpoint) 1577 (define-key map "\r" 'gdb-goto-breakpoint)
1563 (define-key map [mouse-2] 'gdb-goto-breakpoint) 1578 (define-key map [mouse-2] 'gdb-goto-breakpoint)
@@ -1612,7 +1627,7 @@ static char *magick[] = {
1612(defun gdb-goto-breakpoint (&optional event) 1627(defun gdb-goto-breakpoint (&optional event)
1613 "Display the breakpoint location specified at current line." 1628 "Display the breakpoint location specified at current line."
1614 (interactive (list last-input-event)) 1629 (interactive (list last-input-event))
1615 (if event (mouse-set-point event)) 1630 (if event (posn-set-point (event-end event)))
1616 ;; Hack to stop gdb-goto-breakpoint displaying in GUD buffer. 1631 ;; Hack to stop gdb-goto-breakpoint displaying in GUD buffer.
1617 (let ((window (get-buffer-window gud-comint-buffer))) 1632 (let ((window (get-buffer-window gud-comint-buffer)))
1618 (if window (save-selected-window (select-window window)))) 1633 (if window (save-selected-window (select-window window))))
@@ -1661,7 +1676,7 @@ static char *magick[] = {
1661 (while (< (point) (point-max)) 1676 (while (< (point) (point-max))
1662 (setq bl (line-beginning-position) 1677 (setq bl (line-beginning-position)
1663 el (line-end-position)) 1678 el (line-end-position))
1664 (unless (looking-at "No ") 1679 (when (looking-at "#")
1665 (add-text-properties bl el 1680 (add-text-properties bl el
1666 '(mouse-face highlight 1681 '(mouse-face highlight
1667 help-echo "mouse-2, RET: Select frame"))) 1682 help-echo "mouse-2, RET: Select frame")))
@@ -1730,14 +1745,15 @@ static char *magick[] = {
1730(defun gdb-get-frame-number () 1745(defun gdb-get-frame-number ()
1731 (save-excursion 1746 (save-excursion
1732 (end-of-line) 1747 (end-of-line)
1733 (let* ((pos (re-search-backward "^#*\\([0-9]*\\)" nil t)) 1748 (let* ((start (line-beginning-position))
1749 (pos (re-search-backward "^#*\\([0-9]+\\)" start t))
1734 (n (or (and pos (match-string-no-properties 1)) "0"))) 1750 (n (or (and pos (match-string-no-properties 1)) "0")))
1735 n))) 1751 n)))
1736 1752
1737(defun gdb-frames-select (&optional event) 1753(defun gdb-frames-select (&optional event)
1738 "Select the frame and display the relevant source." 1754 "Select the frame and display the relevant source."
1739 (interactive (list last-input-event)) 1755 (interactive (list last-input-event))
1740 (if event (mouse-set-point event)) 1756 (if event (posn-set-point (event-end event)))
1741 (gdb-enqueue-input 1757 (gdb-enqueue-input
1742 (list (concat gdb-server-prefix "frame " 1758 (list (concat gdb-server-prefix "frame "
1743 (gdb-get-frame-number) "\n") 'ignore)) 1759 (gdb-get-frame-number) "\n") 'ignore))
@@ -1790,6 +1806,7 @@ static char *magick[] = {
1790 (define-key map "q" 'kill-this-buffer) 1806 (define-key map "q" 'kill-this-buffer)
1791 (define-key map "\r" 'gdb-threads-select) 1807 (define-key map "\r" 'gdb-threads-select)
1792 (define-key map [mouse-2] 'gdb-threads-select) 1808 (define-key map [mouse-2] 'gdb-threads-select)
1809 (define-key map [follow-link] 'mouse-face)
1793 map)) 1810 map))
1794 1811
1795(defvar gdb-threads-font-lock-keywords 1812(defvar gdb-threads-font-lock-keywords
@@ -1822,9 +1839,10 @@ static char *magick[] = {
1822(defun gdb-threads-select (&optional event) 1839(defun gdb-threads-select (&optional event)
1823 "Select the thread and display the relevant source." 1840 "Select the thread and display the relevant source."
1824 (interactive (list last-input-event)) 1841 (interactive (list last-input-event))
1825 (if event (mouse-set-point event)) 1842 (if event (posn-set-point (event-end event)))
1826 (gdb-enqueue-input 1843 (gdb-enqueue-input
1827 (list (concat "thread " (gdb-get-thread-number) "\n") 'ignore)) 1844 (list (concat gdb-server-prefix "thread "
1845 (gdb-get-thread-number) "\n") 'ignore))
1828 (gud-display-frame)) 1846 (gud-display-frame))
1829 1847
1830 1848
@@ -1851,19 +1869,36 @@ static char *magick[] = {
1851 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer) 1869 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
1852 (save-excursion 1870 (save-excursion
1853 (let ((buffer-read-only nil) 1871 (let ((buffer-read-only nil)
1854 bl) 1872 start end)
1855 (goto-char (point-min)) 1873 (goto-char (point-min))
1856 (while (< (point) (point-max)) 1874 (while (< (point) (point-max))
1857 (setq bl (line-beginning-position)) 1875 (setq start (line-beginning-position))
1876 (setq end (line-end-position))
1858 (when (looking-at "^[^ ]+") 1877 (when (looking-at "^[^ ]+")
1859 (unless (string-equal (match-string 0) "The") 1878 (unless (string-equal (match-string 0) "The")
1860 (put-text-property bl (match-end 0) 1879 (put-text-property start (match-end 0)
1861 'face font-lock-variable-name-face))) 1880 'face font-lock-variable-name-face)
1881 (add-text-properties start end
1882 '(help-echo "mouse-2: edit value"
1883 mouse-face highlight))))
1862 (forward-line 1)))))) 1884 (forward-line 1))))))
1863 1885
1886(defun gdb-edit-register-value (&optional event)
1887 (interactive (list last-input-event))
1888 (save-excursion
1889 (if event (posn-set-point (event-end event)))
1890 (beginning-of-line)
1891 (let* ((register (current-word))
1892 (value (read-string (format "New value (%s): " register))))
1893 (gdb-enqueue-input
1894 (list (concat gdb-server-prefix "set $" register "=" value "\n")
1895 'ignore)))))
1896
1864(defvar gdb-registers-mode-map 1897(defvar gdb-registers-mode-map
1865 (let ((map (make-sparse-keymap))) 1898 (let ((map (make-sparse-keymap)))
1866 (suppress-keymap map) 1899 (suppress-keymap map)
1900 (define-key map "\r" 'gdb-edit-register-value)
1901 (define-key map [mouse-2] 'gdb-edit-register-value)
1867 (define-key map " " 'toggle-gdb-all-registers) 1902 (define-key map " " 'toggle-gdb-all-registers)
1868 (define-key map "q" 'kill-this-buffer) 1903 (define-key map "q" 'kill-this-buffer)
1869 map)) 1904 map))
@@ -1907,9 +1942,9 @@ static char *magick[] = {
1907 (setq gdb-all-registers nil) 1942 (setq gdb-all-registers nil)
1908 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer) 1943 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
1909 (setq mode-name "Registers:"))) 1944 (setq mode-name "Registers:")))
1910 (setq gdb-all-registers t) 1945 (setq gdb-all-registers t)
1911 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer) 1946 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
1912 (setq mode-name "Registers:All"))) 1947 (setq mode-name "Registers:All")))
1913 (gdb-invalidate-registers)) 1948 (gdb-invalidate-registers))
1914 1949
1915 1950
@@ -2245,13 +2280,13 @@ corresponding to the mode line clicked."
2245 "Keymap to create watch expression of a complex data type local variable.") 2280 "Keymap to create watch expression of a complex data type local variable.")
2246 2281
2247(defconst gdb-struct-string 2282(defconst gdb-struct-string
2248 (concat (propertize "[struct/union];" 2283 (concat (propertize "[struct/union]"
2249 'mouse-face 'highlight 2284 'mouse-face 'highlight
2250 'help-echo "mouse-2: create watch expression" 2285 'help-echo "mouse-2: create watch expression"
2251 'local-map gdb-locals-watch-keymap) "\n")) 2286 'local-map gdb-locals-watch-keymap) "\n"))
2252 2287
2253(defconst gdb-array-string 2288(defconst gdb-array-string
2254 (concat " " (propertize "[array];" 2289 (concat " " (propertize "[array]"
2255 'mouse-face 'highlight 2290 'mouse-face 'highlight
2256 'help-echo "mouse-2: create watch expression" 2291 'help-echo "mouse-2: create watch expression"
2257 'local-map gdb-locals-watch-keymap) "\n")) 2292 'local-map gdb-locals-watch-keymap) "\n"))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index e045ae76a29..81ae4c3cd02 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -52,6 +52,7 @@
52(defvar gdb-show-changed-values) 52(defvar gdb-show-changed-values)
53(defvar gdb-var-changed) 53(defvar gdb-var-changed)
54(defvar gdb-var-list) 54(defvar gdb-var-list)
55(defvar gdb-speedbar-auto-raise)
55(defvar tool-bar-map) 56(defvar tool-bar-map)
56 57
57;; ====================================================================== 58;; ======================================================================
@@ -410,6 +411,10 @@ t means that there is no stack, and we are in display-file mode.")
410 (memq gud-minor-mode '(gdbmi gdba)))] 411 (memq gud-minor-mode '(gdbmi gdba)))]
411 ["Delete expression" gdb-var-delete 412 ["Delete expression" gdb-var-delete
412 (with-current-buffer gud-comint-buffer 413 (with-current-buffer gud-comint-buffer
414 (memq gud-minor-mode '(gdbmi gdba)))]
415 ["Auto raise frame" gdb-speedbar-auto-raise
416 :style toggle :selected gdb-speedbar-auto-raise
417 :visible (with-current-buffer gud-comint-buffer
413 (memq gud-minor-mode '(gdbmi gdba)))]) 418 (memq gud-minor-mode '(gdbmi gdba)))])
414 "Additional menu items to add to the speedbar frame.") 419 "Additional menu items to add to the speedbar frame.")
415 420
@@ -444,16 +449,18 @@ required by the caller."
444 (looking-at "Watch Expressions:"))))) 449 (looking-at "Watch Expressions:")))))
445 (erase-buffer) 450 (erase-buffer)
446 (insert "Watch Expressions:\n") 451 (insert "Watch Expressions:\n")
452 (if gdb-speedbar-auto-raise
453 (raise-frame speedbar-frame))
447 (let ((var-list gdb-var-list)) 454 (let ((var-list gdb-var-list))
448 (while var-list 455 (while var-list
449 (let* ((depth 0) (start 0) (char ?+) 456 (let* (char (depth 0) (start 0)
450 (var (car var-list)) (varnum (nth 1 var))) 457 (var (car var-list)) (varnum (nth 1 var)))
451 (while (string-match "\\." varnum start) 458 (while (string-match "\\." varnum start)
452 (setq depth (1+ depth) 459 (setq depth (1+ depth)
453 start (1+ (match-beginning 0)))) 460 start (1+ (match-beginning 0))))
454 (if (or (equal (nth 2 var) "0") 461 (if (or (equal (nth 2 var) "0")
455 (and (equal (nth 2 var) "1") 462 (and (equal (nth 2 var) "1")
456 (string-match "char \\*" (nth 3 var)))) 463 (string-match "char \\*$" (nth 3 var))))
457 (speedbar-make-tag-line 'bracket ?? nil nil 464 (speedbar-make-tag-line 'bracket ?? nil nil
458 (concat (car var) "\t" (nth 4 var)) 465 (concat (car var) "\t" (nth 4 var))
459 'gdb-edit-value 466 'gdb-edit-value
@@ -463,12 +470,25 @@ required by the caller."
463 'font-lock-warning-face 470 'font-lock-warning-face
464 nil) depth) 471 nil) depth)
465 (if (and (cadr var-list) 472 (if (and (cadr var-list)
466 (string-match varnum (cadr (cadr var-list)))) 473 (string-match (concat varnum "\\.")
467 (setq char ?-)) 474 (cadr (cadr var-list))))
475 (setq char ?-)
476 (setq char ?+))
477 (if (string-match "\\*$" (nth 3 var))
478 (speedbar-make-tag-line 'bracket char
479 'gdb-speedbar-expand-node varnum
480 (concat (car var) "\t"
481 (nth 3 var)"\t"
482 (nth 4 var))
483 'gdb-edit-value nil
484 (if (and (nth 5 var)
485 gdb-show-changed-values)
486 'font-lock-warning-face
487 nil) depth)
468 (speedbar-make-tag-line 'bracket char 488 (speedbar-make-tag-line 'bracket char
469 'gdb-speedbar-expand-node varnum 489 'gdb-speedbar-expand-node varnum
470 (concat (car var) "\t" (nth 3 var)) 490 (concat (car var) "\t" (nth 3 var))
471 nil nil nil depth))) 491 nil nil nil depth))))
472 (setq var-list (cdr var-list)))) 492 (setq var-list (cdr var-list))))
473 (setq gdb-var-changed nil))) 493 (setq gdb-var-changed nil)))
474 (t (if (and (save-excursion 494 (t (if (and (save-excursion
@@ -556,6 +576,11 @@ required by the caller."
556 ;; they are found. 576 ;; they are found.
557 (while (string-match "\n\032\032\\(.*\\)\n" gud-marker-acc) 577 (while (string-match "\n\032\032\\(.*\\)\n" gud-marker-acc)
558 (let ((match (match-string 1 gud-marker-acc))) 578 (let ((match (match-string 1 gud-marker-acc)))
579
580 ;; Pick up stopped annotation if attaching to process.
581 (if (string-equal match "stopped") (setq gdb-active-process t))
582
583 ;; Using annotations, switch to gud-gdba-marker-filter.
559 (when (string-equal match "prompt") 584 (when (string-equal match "prompt")
560 (require 'gdb-ui) 585 (require 'gdb-ui)
561 (gdb-prompt nil)) 586 (gdb-prompt nil))
@@ -569,6 +594,8 @@ required by the caller."
569 ;; Set the accumulator to the remaining text. 594 ;; Set the accumulator to the remaining text.
570 595
571 gud-marker-acc (substring gud-marker-acc (match-end 0))) 596 gud-marker-acc (substring gud-marker-acc (match-end 0)))
597
598 ;; Pick up any errors that occur before first prompt annotation.
572 (if (string-equal match "error-begin") 599 (if (string-equal match "error-begin")
573 (put-text-property 0 (length gud-marker-acc) 600 (put-text-property 0 (length gud-marker-acc)
574 'face font-lock-warning-face 601 'face font-lock-warning-face
@@ -3079,6 +3106,8 @@ class of the file (using s to separate nested class ids)."
3079 ("\\$\\(\\w+\\)" (1 font-lock-variable-name-face)) 3106 ("\\$\\(\\w+\\)" (1 font-lock-variable-name-face))
3080 ("^\\s-*\\([a-z]+\\)" (1 font-lock-keyword-face)))) 3107 ("^\\s-*\\([a-z]+\\)" (1 font-lock-keyword-face))))
3081 3108
3109;; FIXME: The keyword "end" associated with "document"
3110;; should have font-lock-keyword-face (currently font-lock-doc-face).
3082(defvar gdb-script-font-lock-syntactic-keywords 3111(defvar gdb-script-font-lock-syntactic-keywords
3083 '(("^document\\s-.*\\(\n\\)" (1 "< b")) 3112 '(("^document\\s-.*\\(\n\\)" (1 "< b"))
3084 ;; It would be best to change the \n in front, but it's more difficult. 3113 ;; It would be best to change the \n in front, but it's more difficult.
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index 4f0875bbf99..67b5b108fa5 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -220,6 +220,13 @@ startup file, `~/.emacs-octave'."
220 (concat (mapconcat 220 (concat (mapconcat
221 'identity inferior-octave-output-list "\n") 221 'identity inferior-octave-output-list "\n")
222 "\n")))) 222 "\n"))))
223
224 ;; An empty secondary prompt, as e.g. obtained by '--braindead',
225 ;; means trouble.
226 (inferior-octave-send-list-and-digest (list "PS2\n"))
227 (if (string-match "^PS2 = *$" (car inferior-octave-output-list))
228 (inferior-octave-send-list-and-digest (list "PS2 = \"> \"\n")))
229
223 ;; O.k., now we are ready for the Inferior Octave startup commands. 230 ;; O.k., now we are ready for the Inferior Octave startup commands.
224 (let* (commands 231 (let* (commands
225 (program (file-name-nondirectory inferior-octave-program)) 232 (program (file-name-nondirectory inferior-octave-program))
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index f6928a72554..5728499db43 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1002,6 +1002,8 @@ Point is at the beginning of the next line."
1002 ;; The list of special chars is taken from the single-unix spec 1002 ;; The list of special chars is taken from the single-unix spec
1003 ;; of the shell command language (under `quoting') but with `$' removed. 1003 ;; of the shell command language (under `quoting') but with `$' removed.
1004 `(("[^|&;<>()`\\\"' \t\n]\\(#+\\)" 1 ,sh-st-symbol) 1004 `(("[^|&;<>()`\\\"' \t\n]\\(#+\\)" 1 ,sh-st-symbol)
1005 ;; In a '...' the backslash is not escaping.
1006 ("\\(\\\\\\)'" 1 ,sh-st-punc)
1005 ;; Make sure $@ and @? are correctly recognized as sexps. 1007 ;; Make sure $@ and @? are correctly recognized as sexps.
1006 ("\\$\\([?@]\\)" 1 ,sh-st-symbol) 1008 ("\\$\\([?@]\\)" 1 ,sh-st-symbol)
1007 ;; Find HEREDOC starters and add a corresponding rule for the ender. 1009 ;; Find HEREDOC starters and add a corresponding rule for the ender.
diff --git a/lisp/recentf.el b/lisp/recentf.el
index b14997d604f..287ab3014cb 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -813,39 +813,49 @@ See `recentf-arrange-rules' for details on MATCHER."
813Arrange them in sub-menus following rules in `recentf-arrange-rules'." 813Arrange them in sub-menus following rules in `recentf-arrange-rules'."
814 (if (not recentf-arrange-rules) 814 (if (not recentf-arrange-rules)
815 l 815 l
816 (let ((menus (mapcar #'(lambda (r) (list (car r))) 816 (let* ((strip (assq t recentf-arrange-rules))
817 recentf-arrange-rules)) 817 (rules (remq strip recentf-arrange-rules))
818 menu others min file rules elts count) 818 (menus (mapcar #'(lambda (r) (list (car r))) rules))
819 others l1 l2 menu file min count)
820 ;; Put menu items into sub-menus as defined by rules.
819 (dolist (elt l) 821 (dolist (elt l)
820 (setq file (recentf-menu-element-value elt) 822 (setq l1 menus ;; List of sub-menus
821 rules recentf-arrange-rules 823 l2 rules ;; List of corresponding matchers.
822 elts menus 824 file (recentf-menu-element-value elt)
823 menu nil) 825 menu nil)
824 (while (and (not menu) rules) 826 ;; Apply the strip suffix rule.
825 (when (recentf-match-rule-p (cdar rules) file) 827 (while (recentf-match-rule-p (cdr strip) file)
826 (setq menu (car elts)) 828 (setq file (substring file 0 (match-beginning 0))))
829 ;; Search which sub-menu to put the menu item into.
830 (while (and (not menu) l2)
831 (when (recentf-match-rule-p (cdar l2) file)
832 (setq menu (car l1))
827 (recentf-set-menu-element-value 833 (recentf-set-menu-element-value
828 menu (cons elt (recentf-menu-element-value menu)))) 834 menu (cons elt (recentf-menu-element-value menu))))
829 (setq rules (cdr rules) 835 (setq l1 (cdr l1)
830 elts (cdr elts))) 836 l2 (cdr l2)))
831 (unless menu 837 ;; Put unmatched menu items in the `others' bin.
832 (push elt others))) 838 (or menu (push elt others)))
833 839 ;; Finalize the sub-menus. That is, for each one:
834 (setq l nil 840 ;; - truncate it depending on the value of
835 min (if (natnump recentf-arrange-by-rules-min-items) 841 ;; `recentf-arrange-by-rules-min-items',
836 recentf-arrange-by-rules-min-items 0)) 842 ;; - replace %d by the number of menu items,
843 ;; - apply `recentf-arrange-by-rule-subfilter' to menu items.
844 (setq min (if (natnump recentf-arrange-by-rules-min-items)
845 recentf-arrange-by-rules-min-items 0)
846 l2 nil)
837 (dolist (menu menus) 847 (dolist (menu menus)
838 (when (setq elts (recentf-menu-element-value menu)) 848 (when (setq l1 (recentf-menu-element-value menu))
839 (setq count (length elts)) 849 (setq count (length l1))
840 (if (< count min) 850 (if (< count min)
841 (setq others (nconc elts others)) 851 (setq others (nconc l1 others))
842 (recentf-set-menu-element-item 852 (recentf-set-menu-element-item
843 menu (format (recentf-menu-element-item menu) count)) 853 menu (format (recentf-menu-element-item menu) count))
844 (recentf-set-menu-element-value 854 (recentf-set-menu-element-value
845 menu (recentf-apply-menu-filter 855 menu (recentf-apply-menu-filter
846 recentf-arrange-by-rule-subfilter (nreverse elts))) 856 recentf-arrange-by-rule-subfilter (nreverse l1)))
847 (push menu l)))) 857 (push menu l2))))
848 858 ;; Add the menu items remaining in the `others' bin.
849 (if (and (stringp recentf-arrange-by-rule-others) others) 859 (if (and (stringp recentf-arrange-by-rule-others) others)
850 (nreverse 860 (nreverse
851 (cons 861 (cons
@@ -853,12 +863,11 @@ Arrange them in sub-menus following rules in `recentf-arrange-rules'."
853 (format recentf-arrange-by-rule-others (length others)) 863 (format recentf-arrange-by-rule-others (length others))
854 (recentf-apply-menu-filter 864 (recentf-apply-menu-filter
855 recentf-arrange-by-rule-subfilter (nreverse others))) 865 recentf-arrange-by-rule-subfilter (nreverse others)))
856 l)) 866 l2))
857 (nconc 867 (nconc
858 (nreverse l) 868 (nreverse l2)
859 (recentf-apply-menu-filter 869 (recentf-apply-menu-filter
860 recentf-arrange-by-rule-subfilter (nreverse others))))) 870 recentf-arrange-by-rule-subfilter (nreverse others)))))))
861 ))
862 871
863;;; Predefined rule based menu filters 872;;; Predefined rule based menu filters
864;; 873;;
@@ -870,12 +879,20 @@ Rules obey `recentf-arrange-rules' format."
870 (dolist (mode auto-mode-alist) 879 (dolist (mode auto-mode-alist)
871 (setq regexp (car mode) 880 (setq regexp (car mode)
872 mode (cdr mode)) 881 mode (cdr mode))
873 (when (symbolp mode) 882 (when mode
874 (setq rule-name (symbol-name mode)) 883 (cond
875 (if (string-match "\\(.*\\)-mode$" rule-name) 884 ;; Build a special "strip suffix" rule from entries of the
876 (setq rule-name (match-string 1 rule-name))) 885 ;; form (REGEXP FUNCTION NON-NIL). Notice that FUNCTION is
877 (setq rule-name (concat rule-name " (%d)") 886 ;; ignored by the menu filter. So in some corner cases a
878 rule (assoc rule-name rules)) 887 ;; wrong mode could be guessed.
888 ((and (consp mode) (cadr mode))
889 (setq rule-name t))
890 ((and mode (symbolp mode))
891 (setq rule-name (symbol-name mode))
892 (if (string-match "\\(.*\\)-mode$" rule-name)
893 (setq rule-name (match-string 1 rule-name)))
894 (setq rule-name (concat rule-name " (%d)"))))
895 (setq rule (assoc rule-name rules))
879 (if rule 896 (if rule
880 (setcdr rule (cons regexp (cdr rule))) 897 (setcdr rule (cons regexp (cdr rule)))
881 (push (list rule-name regexp) rules)))) 898 (push (list rule-name regexp) rules))))
diff --git a/lisp/replace.el b/lisp/replace.el
index e74b8690c28..fbfa1be09c2 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -693,6 +693,7 @@ a previously found match."
693 693
694(defvar occur-mode-map 694(defvar occur-mode-map
695 (let ((map (make-sparse-keymap))) 695 (let ((map (make-sparse-keymap)))
696 ;; We use this alternative name, so we can use \\[occur-mode-mouse-goto].
696 (define-key map [mouse-2] 'occur-mode-mouse-goto) 697 (define-key map [mouse-2] 'occur-mode-mouse-goto)
697 (define-key map "\C-c\C-c" 'occur-mode-goto-occurrence) 698 (define-key map "\C-c\C-c" 'occur-mode-goto-occurrence)
698 (define-key map "\C-m" 'occur-mode-goto-occurrence) 699 (define-key map "\C-m" 'occur-mode-goto-occurrence)
@@ -746,18 +747,6 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it.
746 "Handle `revert-buffer' for Occur mode buffers." 747 "Handle `revert-buffer' for Occur mode buffers."
747 (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))) 748 (apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))))
748 749
749(defun occur-mode-mouse-goto (event)
750 "In Occur mode, go to the occurrence whose line you click on."
751 (interactive "e")
752 (let (pos)
753 (save-excursion
754 (set-buffer (window-buffer (posn-window (event-end event))))
755 (save-excursion
756 (goto-char (posn-point (event-end event)))
757 (setq pos (occur-mode-find-occurrence))))
758 (switch-to-buffer-other-window (marker-buffer pos))
759 (goto-char pos)))
760
761(defun occur-mode-find-occurrence () 750(defun occur-mode-find-occurrence ()
762 (let ((pos (get-text-property (point) 'occur-target))) 751 (let ((pos (get-text-property (point) 'occur-target)))
763 (unless pos 752 (unless pos
@@ -766,11 +755,23 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it.
766 (error "Buffer for this occurrence was killed")) 755 (error "Buffer for this occurrence was killed"))
767 pos)) 756 pos))
768 757
769(defun occur-mode-goto-occurrence () 758(defalias 'occur-mode-mouse-goto 'occur-mode-goto-occurrence)
759(defun occur-mode-goto-occurrence (&optional event)
770 "Go to the occurrence the current line describes." 760 "Go to the occurrence the current line describes."
771 (interactive) 761 (interactive (list last-nonmenu-event))
772 (let ((pos (occur-mode-find-occurrence))) 762 (let ((pos
773 (switch-to-buffer (marker-buffer pos)) 763 (if (null event)
764 ;; Actually `event-end' works correctly with a nil argument as
765 ;; well, so we could dispense with this test, but let's not
766 ;; rely on this undocumented behavior.
767 (occur-mode-find-occurrence)
768 (with-current-buffer (window-buffer (posn-window (event-end event)))
769 (save-excursion
770 (goto-char (posn-point (event-end event)))
771 (occur-mode-find-occurrence)))))
772 same-window-buffer-names
773 same-window-regexps)
774 (pop-to-buffer (marker-buffer pos))
774 (goto-char pos))) 775 (goto-char pos)))
775 776
776(defun occur-mode-goto-occurrence-other-window () 777(defun occur-mode-goto-occurrence-other-window ()
@@ -832,7 +833,8 @@ Compatibility function for \\[next-error] invocations."
832 833
833 (goto-char (cond (reset (point-min)) 834 (goto-char (cond (reset (point-min))
834 ((< argp 0) (line-beginning-position)) 835 ((< argp 0) (line-beginning-position))
835 ((line-end-position)))) 836 ((> argp 0) (line-end-position))
837 ((point))))
836 (occur-find-match 838 (occur-find-match
837 (abs argp) 839 (abs argp)
838 (if (> 0 argp) 840 (if (> 0 argp)
@@ -1089,8 +1091,7 @@ See also `multi-occur'."
1089 (marker nil) 1091 (marker nil)
1090 (curstring "") 1092 (curstring "")
1091 (headerpt (with-current-buffer out-buf (point)))) 1093 (headerpt (with-current-buffer out-buf (point))))
1092 (save-excursion 1094 (with-current-buffer buf
1093 (set-buffer buf)
1094 (or coding 1095 (or coding
1095 ;; Set CODING only if the current buffer locally 1096 ;; Set CODING only if the current buffer locally
1096 ;; binds buffer-file-coding-system. 1097 ;; binds buffer-file-coding-system.
@@ -1223,42 +1224,43 @@ C-l to clear the screen, redisplay, and offer same replacement again,
1223E to edit the replacement string" 1224E to edit the replacement string"
1224 "Help message while in `query-replace'.") 1225 "Help message while in `query-replace'.")
1225 1226
1226(defvar query-replace-map (make-sparse-keymap) 1227(defvar query-replace-map
1228 (let ((map (make-sparse-keymap)))
1229 (define-key map " " 'act)
1230 (define-key map "\d" 'skip)
1231 (define-key map [delete] 'skip)
1232 (define-key map [backspace] 'skip)
1233 (define-key map "y" 'act)
1234 (define-key map "n" 'skip)
1235 (define-key map "Y" 'act)
1236 (define-key map "N" 'skip)
1237 (define-key map "e" 'edit-replacement)
1238 (define-key map "E" 'edit-replacement)
1239 (define-key map "," 'act-and-show)
1240 (define-key map "q" 'exit)
1241 (define-key map "\r" 'exit)
1242 (define-key map [return] 'exit)
1243 (define-key map "." 'act-and-exit)
1244 (define-key map "\C-r" 'edit)
1245 (define-key map "\C-w" 'delete-and-edit)
1246 (define-key map "\C-l" 'recenter)
1247 (define-key map "!" 'automatic)
1248 (define-key map "^" 'backup)
1249 (define-key map "\C-h" 'help)
1250 (define-key map [f1] 'help)
1251 (define-key map [help] 'help)
1252 (define-key map "?" 'help)
1253 (define-key map "\C-g" 'quit)
1254 (define-key map "\C-]" 'quit)
1255 (define-key map "\e" 'exit-prefix)
1256 (define-key map [escape] 'exit-prefix)
1257 map)
1227 "Keymap that defines the responses to questions in `query-replace'. 1258 "Keymap that defines the responses to questions in `query-replace'.
1228The \"bindings\" in this map are not commands; they are answers. 1259The \"bindings\" in this map are not commands; they are answers.
1229The valid answers include `act', `skip', `act-and-show', 1260The valid answers include `act', `skip', `act-and-show',
1230`exit', `act-and-exit', `edit', `delete-and-edit', `recenter', 1261`exit', `act-and-exit', `edit', `delete-and-edit', `recenter',
1231`automatic', `backup', `exit-prefix', and `help'.") 1262`automatic', `backup', `exit-prefix', and `help'.")
1232 1263
1233(define-key query-replace-map " " 'act)
1234(define-key query-replace-map "\d" 'skip)
1235(define-key query-replace-map [delete] 'skip)
1236(define-key query-replace-map [backspace] 'skip)
1237(define-key query-replace-map "y" 'act)
1238(define-key query-replace-map "n" 'skip)
1239(define-key query-replace-map "Y" 'act)
1240(define-key query-replace-map "N" 'skip)
1241(define-key query-replace-map "e" 'edit-replacement)
1242(define-key query-replace-map "E" 'edit-replacement)
1243(define-key query-replace-map "," 'act-and-show)
1244(define-key query-replace-map "q" 'exit)
1245(define-key query-replace-map "\r" 'exit)
1246(define-key query-replace-map [return] 'exit)
1247(define-key query-replace-map "." 'act-and-exit)
1248(define-key query-replace-map "\C-r" 'edit)
1249(define-key query-replace-map "\C-w" 'delete-and-edit)
1250(define-key query-replace-map "\C-l" 'recenter)
1251(define-key query-replace-map "!" 'automatic)
1252(define-key query-replace-map "^" 'backup)
1253(define-key query-replace-map "\C-h" 'help)
1254(define-key query-replace-map [f1] 'help)
1255(define-key query-replace-map [help] 'help)
1256(define-key query-replace-map "?" 'help)
1257(define-key query-replace-map "\C-g" 'quit)
1258(define-key query-replace-map "\C-]" 'quit)
1259(define-key query-replace-map "\e" 'exit-prefix)
1260(define-key query-replace-map [escape] 'exit-prefix)
1261
1262(defun replace-match-string-symbols (n) 1264(defun replace-match-string-symbols (n)
1263 "Process a list (and any sub-lists), expanding certain symbols. 1265 "Process a list (and any sub-lists), expanding certain symbols.
1264Symbol Expands To 1266Symbol Expands To
diff --git a/lisp/simple.el b/lisp/simple.el
index a1be91f5abf..302354dff26 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -609,7 +609,7 @@ In binary overwrite mode, this function does overwrite, and octal
609digits are interpreted as a character code. This is intended to be 609digits are interpreted as a character code. This is intended to be
610useful for editing binary files." 610useful for editing binary files."
611 (interactive "*p") 611 (interactive "*p")
612 (let* ((char (let (translation-table-for-input) 612 (let* ((char (let (translation-table-for-input input-method-function)
613 (if (or (not overwrite-mode) 613 (if (or (not overwrite-mode)
614 (eq overwrite-mode 'overwrite-mode-binary)) 614 (eq overwrite-mode 'overwrite-mode-binary))
615 (read-quoted-char) 615 (read-quoted-char)
@@ -3330,7 +3330,7 @@ and more reliable (no dependence on goal column, etc.)."
3330 ;; When adding a newline, don't expand an abbrev. 3330 ;; When adding a newline, don't expand an abbrev.
3331 (let ((abbrev-mode nil)) 3331 (let ((abbrev-mode nil))
3332 (end-of-line) 3332 (end-of-line)
3333 (insert hard-newline)) 3333 (insert (if use-hard-newlines hard-newline "\n")))
3334 (line-move arg nil nil try-vscroll)) 3334 (line-move arg nil nil try-vscroll))
3335 (if (interactive-p) 3335 (if (interactive-p)
3336 (condition-case nil 3336 (condition-case nil
@@ -4263,7 +4263,11 @@ of the buffer appears in the mode line."
4263(defcustom blink-matching-paren-on-screen t 4263(defcustom blink-matching-paren-on-screen t
4264 "*Non-nil means show matching open-paren when it is on screen. 4264 "*Non-nil means show matching open-paren when it is on screen.
4265If nil, means don't show it (but the open-paren can still be shown 4265If nil, means don't show it (but the open-paren can still be shown
4266when it is off screen)." 4266when it is off screen).
4267
4268This variable has no effect if `blink-matching-paren' is nil.
4269\(In that case, the open-paren is never shown.)
4270It is also ignored if `show-paren-mode' is enabled."
4267 :type 'boolean 4271 :type 'boolean
4268 :group 'paren-blinking) 4272 :group 'paren-blinking)
4269 4273
@@ -4324,7 +4328,7 @@ If nil, search stops at the beginning of the accessible portion of the buffer."
4324 ;; The cdr might hold a new paren-class info rather than 4328 ;; The cdr might hold a new paren-class info rather than
4325 ;; a matching-char info, in which case the two CDRs 4329 ;; a matching-char info, in which case the two CDRs
4326 ;; should match. 4330 ;; should match.
4327 (eq matching-paren (cdr (syntax-after oldpos))))) 4331 (eq matching-paren (cdr (syntax-after (1- oldpos))))))
4328 (message "Mismatched parentheses")) 4332 (message "Mismatched parentheses"))
4329 ((not blinkpos) 4333 ((not blinkpos)
4330 (if (not blink-matching-paren-distance) 4334 (if (not blink-matching-paren-distance)
@@ -4332,10 +4336,11 @@ If nil, search stops at the beginning of the accessible portion of the buffer."
4332 ((pos-visible-in-window-p blinkpos) 4336 ((pos-visible-in-window-p blinkpos)
4333 ;; Matching open within window, temporarily move to blinkpos but only 4337 ;; Matching open within window, temporarily move to blinkpos but only
4334 ;; if `blink-matching-paren-on-screen' is non-nil. 4338 ;; if `blink-matching-paren-on-screen' is non-nil.
4335 (when blink-matching-paren-on-screen 4339 (and blink-matching-paren-on-screen
4336 (save-excursion 4340 (not show-paren-mode)
4337 (goto-char blinkpos) 4341 (save-excursion
4338 (sit-for blink-matching-delay)))) 4342 (goto-char blinkpos)
4343 (sit-for blink-matching-delay))))
4339 (t 4344 (t
4340 (save-excursion 4345 (save-excursion
4341 (goto-char blinkpos) 4346 (goto-char blinkpos)
@@ -4514,7 +4519,8 @@ See also `read-mail-command' concerning reading mail."
4514 (unless (member-ignore-case (car (car other-headers)) 4519 (unless (member-ignore-case (car (car other-headers))
4515 '("in-reply-to" "cc" "body")) 4520 '("in-reply-to" "cc" "body"))
4516 (insert (car (car other-headers)) ": " 4521 (insert (car (car other-headers)) ": "
4517 (cdr (car other-headers)) hard-newline)) 4522 (cdr (car other-headers))
4523 (if use-hard-newlines hard-newline "\n")))
4518 (setq other-headers (cdr other-headers))) 4524 (setq other-headers (cdr other-headers)))
4519 (when body 4525 (when body
4520 (forward-line 1) 4526 (forward-line 1)
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index e09c0d734cc..a48f480a756 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -331,6 +331,16 @@ display is used instead."
331 :group 'speedbar 331 :group 'speedbar
332 :type 'boolean) 332 :type 'boolean)
333 333
334(defcustom speedbar-default-position 'left-right
335 "*Default position of the speedbar frame.
336Possible values are 'left, 'right or 'left-right.
337If value is 'left-right, the most suitable location is
338determined automatically."
339 :group 'speedbar
340 :type '(radio (const :tag "Automatic" left-right)
341 (const :tag "Left" left)
342 (const :tag "Right" right)))
343
334(defcustom speedbar-sort-tags nil 344(defcustom speedbar-sort-tags nil
335 "*If non-nil, sort tags in the speedbar display. *Obsolete*. 345 "*If non-nil, sort tags in the speedbar display. *Obsolete*.
336Use `semantic-tag-hierarchy-method' instead." 346Use `semantic-tag-hierarchy-method' instead."
@@ -967,7 +977,7 @@ supported at a time.
967 (t 977 (t
968 (dframe-reposition-frame speedbar-frame 978 (dframe-reposition-frame speedbar-frame
969 (dframe-attached-frame speedbar-frame) 979 (dframe-attached-frame speedbar-frame)
970 'left-right)))) 980 speedbar-default-position))))
971 981
972(defun speedbar-detach () 982(defun speedbar-detach ()
973 "Detach the current Speedbar from auto-updating. 983 "Detach the current Speedbar from auto-updating.
diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el
index 7912bb1a4d6..66a633d6f36 100644
--- a/lisp/term/mac-win.el
+++ b/lisp/term/mac-win.el
@@ -1085,6 +1085,9 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
1085(put 'return 'ascii-character ?\C-m) 1085(put 'return 'ascii-character ?\C-m)
1086(put 'escape 'ascii-character ?\e) 1086(put 'escape 'ascii-character ?\e)
1087 1087
1088;; Modifier name `ctrl' is an alias of `control'.
1089(put 'ctrl 'modifier-value (get 'control 'modifier-value))
1090
1088 1091
1089;;;; Script codes and coding systems 1092;;;; Script codes and coding systems
1090(defconst mac-script-code-coding-systems 1093(defconst mac-script-code-coding-systems
@@ -1962,10 +1965,10 @@ Switch to a buffer editing the last file dropped."
1962 user-login-name user-real-login-name user-full-name)) 1965 user-login-name user-real-login-name user-full-name))
1963 (set v (decode-coding-string (symbol-value v) mac-system-coding-system)))) 1966 (set v (decode-coding-string (symbol-value v) mac-system-coding-system))))
1964 1967
1965;; If Emacs is started from the Finder, change the default directory 1968;; Now the default directory is changed to the user's home directory
1966;; to the user's home directory. 1969;; in emacs.c if invoked from the WindowServer (with -psn_* option).
1967(if (string= default-directory "/") 1970;; (if (string= default-directory "/")
1968 (cd "~")) 1971;; (cd "~"))
1969 1972
1970;; Darwin 6- pty breakage is now controlled from the C code so that 1973;; Darwin 6- pty breakage is now controlled from the C code so that
1971;; it applies to all builds on darwin. See s/darwin.h PTY_ITERATION. 1974;; it applies to all builds on darwin. See s/darwin.h PTY_ITERATION.
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index ffa7d606a95..aff6d032f06 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -1039,6 +1039,8 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
1039(substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame 1039(substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
1040 global-map) 1040 global-map)
1041 1041
1042(define-key function-key-map [S-tab] [backtab])
1043
1042 1044
1043;;; Do the actual Windows setup here; the above code just defines 1045;;; Do the actual Windows setup here; the above code just defines
1044;;; functions and variables that we use now. 1046;;; functions and variables that we use now.
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index dd718e21ed9..a0f36f5f794 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -501,23 +501,29 @@ in your .emacs file.
501;;*---------------------------------------------------------------------*/ 501;;*---------------------------------------------------------------------*/
502;;* flyspell-accept-buffer-local-defs ... */ 502;;* flyspell-accept-buffer-local-defs ... */
503;;*---------------------------------------------------------------------*/ 503;;*---------------------------------------------------------------------*/
504(defvar flyspell-last-buffer nil
505 "The buffer in which the last flyspell operation took place.")
506
504(defun flyspell-accept-buffer-local-defs () 507(defun flyspell-accept-buffer-local-defs ()
505 ;; strange problem. If buffer in current window has font-lock turned on, 508 ;; When flyspell-word is used inside a loop (e.g. when processing
506 ;; but SET-BUFFER was called to point to an invisible buffer, this ispell 509 ;; flyspell-changes), the calls to `ispell-accept-buffer-local-defs' end
507 ;; call will reset the buffer to the buffer in the current window. However, 510 ;; up dwarfing everything else, so only do it when the buffer has changed.
508 ;; it only happens at startup (fix by Albert L. Ting). 511 (unless (eq flyspell-last-buffer (current-buffer))
509 (save-current-buffer 512 (setq flyspell-last-buffer (current-buffer))
510 (ispell-accept-buffer-local-defs)) 513 ;; Strange problem: If buffer in current window has font-lock turned on,
511 (if (not (and (eq flyspell-dash-dictionary ispell-dictionary) 514 ;; but SET-BUFFER was called to point to an invisible buffer, this ispell
512 (eq flyspell-dash-local-dictionary ispell-local-dictionary))) 515 ;; call will reset the buffer to the buffer in the current window.
516 ;; However, it only happens at startup (fix by Albert L. Ting).
517 (save-current-buffer
518 (ispell-accept-buffer-local-defs))
519 (unless (and (eq flyspell-dash-dictionary ispell-dictionary)
520 (eq flyspell-dash-local-dictionary ispell-local-dictionary))
513 ;; The dictionary has changed 521 ;; The dictionary has changed
514 (progn 522 (setq flyspell-dash-dictionary ispell-dictionary)
515 (setq flyspell-dash-dictionary ispell-dictionary) 523 (setq flyspell-dash-local-dictionary ispell-local-dictionary)
516 (setq flyspell-dash-local-dictionary ispell-local-dictionary) 524 (setq flyspell-consider-dash-as-word-delimiter-flag
517 (if (member (or ispell-local-dictionary ispell-dictionary) 525 (member (or ispell-local-dictionary ispell-dictionary)
518 flyspell-dictionaries-that-consider-dash-as-word-delimiter) 526 flyspell-dictionaries-that-consider-dash-as-word-delimiter)))))
519 (setq flyspell-consider-dash-as-word-delimiter-flag t)
520 (setq flyspell-consider-dash-as-word-delimiter-flag nil)))))
521 527
522;;*---------------------------------------------------------------------*/ 528;;*---------------------------------------------------------------------*/
523;;* flyspell-mode-on ... */ 529;;* flyspell-mode-on ... */
@@ -543,9 +549,7 @@ in your .emacs file.
543 ;; we bound flyspell action to pre-command hook 549 ;; we bound flyspell action to pre-command hook
544 (add-hook 'pre-command-hook (function flyspell-pre-command-hook) t t) 550 (add-hook 'pre-command-hook (function flyspell-pre-command-hook) t t)
545 ;; we bound flyspell action to after-change hook 551 ;; we bound flyspell action to after-change hook
546 (make-local-variable 'after-change-functions) 552 (add-hook 'after-change-functions 'flyspell-after-change-function nil t)
547 (setq after-change-functions
548 (cons 'flyspell-after-change-function after-change-functions))
549 ;; set flyspell-generic-check-word-p based on the major mode 553 ;; set flyspell-generic-check-word-p based on the major mode
550 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate))) 554 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
551 (if mode-predicate 555 (if mode-predicate
@@ -650,8 +654,7 @@ not the very same deplacement command."
650 ;; we remove the hooks 654 ;; we remove the hooks
651 (remove-hook 'post-command-hook (function flyspell-post-command-hook) t) 655 (remove-hook 'post-command-hook (function flyspell-post-command-hook) t)
652 (remove-hook 'pre-command-hook (function flyspell-pre-command-hook) t) 656 (remove-hook 'pre-command-hook (function flyspell-pre-command-hook) t)
653 (setq after-change-functions (delq 'flyspell-after-change-function 657 (remove-hook 'after-change-functions 'flyspell-after-change-function t)
654 after-change-functions))
655 ;; we remove all the flyspell hilightings 658 ;; we remove all the flyspell hilightings
656 (flyspell-delete-all-overlays) 659 (flyspell-delete-all-overlays)
657 ;; we have to erase pre cache variables 660 ;; we have to erase pre cache variables
@@ -704,14 +707,14 @@ before the current command."
704;;* position has to be spell checked. */ 707;;* position has to be spell checked. */
705;;*---------------------------------------------------------------------*/ 708;;*---------------------------------------------------------------------*/
706(defvar flyspell-changes nil) 709(defvar flyspell-changes nil)
710(make-variable-buffer-local 'flyspell-changes)
707 711
708;;*---------------------------------------------------------------------*/ 712;;*---------------------------------------------------------------------*/
709;;* flyspell-after-change-function ... */ 713;;* flyspell-after-change-function ... */
710;;*---------------------------------------------------------------------*/ 714;;*---------------------------------------------------------------------*/
711(defun flyspell-after-change-function (start stop len) 715(defun flyspell-after-change-function (start stop len)
712 "Save the current buffer and point for Flyspell's post-command hook." 716 "Save the current buffer and point for Flyspell's post-command hook."
713 (interactive) 717 (push (cons start stop) flyspell-changes))
714 (setq flyspell-changes (cons (cons start stop) flyspell-changes)))
715 718
716;;*---------------------------------------------------------------------*/ 719;;*---------------------------------------------------------------------*/
717;;* flyspell-check-changed-word-p ... */ 720;;* flyspell-check-changed-word-p ... */
@@ -899,7 +902,7 @@ Mostly we check word delimiters."
899 (progn 902 (progn
900 (setq flyspell-word-cache-end -1) 903 (setq flyspell-word-cache-end -1)
901 (setq flyspell-word-cache-result '_))))) 904 (setq flyspell-word-cache-result '_)))))
902 (while (consp flyspell-changes) 905 (while (and (not (input-pending-p)) (consp flyspell-changes))
903 (let ((start (car (car flyspell-changes))) 906 (let ((start (car (car flyspell-changes)))
904 (stop (cdr (car flyspell-changes)))) 907 (stop (cdr (car flyspell-changes))))
905 (if (flyspell-check-changed-word-p start stop) 908 (if (flyspell-check-changed-word-p start stop)
@@ -1011,7 +1014,7 @@ Mostly we check word delimiters."
1011 ;; when emacs is exited without query 1014 ;; when emacs is exited without query
1012 (set-process-query-on-exit-flag ispell-process nil) 1015 (set-process-query-on-exit-flag ispell-process nil)
1013 ;; Wait until ispell has processed word. Since this code is often 1016 ;; Wait until ispell has processed word. Since this code is often
1014 ;; executed rom post-command-hook but the ispell process may not 1017 ;; executed from post-command-hook but the ispell process may not
1015 ;; be responsive, it's important to make sure we re-enable C-g. 1018 ;; be responsive, it's important to make sure we re-enable C-g.
1016 (with-local-quit 1019 (with-local-quit
1017 (while (progn 1020 (while (progn
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 0dcde3d69d5..bec088e2a1d 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
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.20 8;; Version: 3.21
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -76,10 +76,17 @@
76;; The documentation of Org-mode can be found in the TeXInfo file. The 76;; The documentation of Org-mode can be found in the TeXInfo file. The
77;; distribution also contains a PDF version of it. At the homepage of 77;; distribution also contains a PDF version of it. At the homepage of
78;; Org-mode, you can read the same text online as HTML. There is also an 78;; Org-mode, you can read the same text online as HTML. There is also an
79;; excellent reference card made by Philip Rooke. 79;; excellent reference card made by Philip Rooke. This card can be found
80;; in the etc/ directory of Emacs 22.
80;; 81;;
81;; Changes: 82;; Changes:
82;; ------- 83;; -------
84;; Version 3.21
85;; - Improved CSS support for the HTML export. Thanks to Christian Egli.
86;; - Editing support for hand-formatted lists
87;; - M-S-cursor keys handle plain list items
88;; - C-c C-c renumbers ordered plain lists
89;;
83;; Version 3.20 90;; Version 3.20
84;; - There is finally an option to make TAB jump over horizontal lines 91;; - There is finally an option to make TAB jump over horizontal lines
85;; in tables instead of creating a new line before that line. 92;; in tables instead of creating a new line before that line.
@@ -88,7 +95,7 @@
88;; - Changes to the HTML exporter 95;; - Changes to the HTML exporter
89;; - hand-formatted lists are exported correctly, similar to 96;; - hand-formatted lists are exported correctly, similar to
90;; markdown lists. Nested lists are possible. See the docstring 97;; markdown lists. Nested lists are possible. See the docstring
91;; of the variable `org-export-local-list-max-depth'. 98;; of the variable `org-export-plain-list-max-depth'.
92;; - cleaned up to produce valid HTML 4.0 (transitional). 99;; - cleaned up to produce valid HTML 4.0 (transitional).
93;; - support for cascading style sheets. 100;; - support for cascading style sheets.
94;; - New command to cycle through all agenda files, on C-, 101;; - New command to cycle through all agenda files, on C-,
@@ -234,7 +241,7 @@
234 241
235;;; Customization variables 242;;; Customization variables
236 243
237(defvar org-version "3.20" 244(defvar org-version "3.21"
238 "The version number of the file org.el.") 245 "The version number of the file org.el.")
239(defun org-version () 246(defun org-version ()
240 (interactive) 247 (interactive)
@@ -889,6 +896,25 @@ first line, so it is probably best to use this in combinations with
889 :group 'org-structure 896 :group 'org-structure
890 :type 'boolean) 897 :type 'boolean)
891 898
899(defcustom org-plain-list-ordered-item-terminator t
900 "The character that makes a line with leading number an ordered list item.
901Valid values are ?. and ?\). To get both terminators, use t. While
902?. may look nicer, it creates the danger that a line with leading
903number may be incorrectly interpreted as an item. ?\) therefore is
904the safe choice."
905 :group 'org-structure
906 :type '(choice (const :tag "dot like in \"2.\"" ?.)
907 (const :tag "paren like in \"2)\"" ?\))
908 (const :tab "both" t)))
909
910(defcustom org-auto-renumber-ordered-lists t
911 "Non-nil means, automatically renumber ordered plain lists.
912Renumbering happens when the sequence have been changed with
913\\[org-shiftmetaup] or \\[org-shiftmetadown]. After other editing commands,
914use \\[org-ctrl-c-ctrl-c] to trigger renumbering."
915 :group 'org-structure
916 :type 'boolean)
917
892(defgroup org-link nil 918(defgroup org-link nil
893 "Options concerning links in Org-mode." 919 "Options concerning links in Org-mode."
894 :tag "Org Link" 920 :tag "Org Link"
@@ -1342,24 +1368,48 @@ This should have an association in `org-export-language-setup'."
1342 :group 'org-export 1368 :group 'org-export
1343 :type 'string) 1369 :type 'string)
1344 1370
1345(defcustom org-export-html-style "" 1371(defcustom org-export-html-style
1372"<style type=\"text/css\">
1373 html {
1374 font-family: Times, serif;
1375 font-size: 12pt;
1376 }
1377 .title { text-align: center; }
1378 .todo, .deadline { color: red; }
1379 .done { color: green; }
1380 pre {
1381 border: 1pt solid #AEBDCC;
1382 background-color: #F3F5F7;
1383 padding: 5pt;
1384 font-family: courier, monospace;
1385 }
1386 table { border-collapse: collapse; }
1387 td, th {
1388 vertical-align: top;
1389 border: 1pt solid #ADB9CC;
1390 }
1391</style>"
1346 "The default style specification for exported HTML files. 1392 "The default style specification for exported HTML files.
1347Since there are different ways of setting style information, this variable 1393Since there are different ways of setting style information, this variable
1348needs to contain the full HTML structure to provide a style, including the 1394needs to contain the full HTML structure to provide a style, including the
1349surrounding HTML tags. For example, legal values would be 1395surrounding HTML tags. The style specifications should include definiitons
1396for new classes todo, done, title, and deadline. For example, legal values
1397would be.
1350 1398
1351 <style type=\"text/css\"> 1399 <style type=\"text/css\">
1352 p {font-weight: normal; color: gray; } 1400 p {font-weight: normal; color: gray; }
1353 h1 {color: black; } 1401 h1 {color: black; }
1402 .title { text-align: center; }
1403 .todo, .deadline { color: red; }
1404 .done { color: green; }
1354 </style> 1405 </style>
1355 1406
1356or 1407or, if you want to keep the style in a file,
1357 1408
1358 <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\"> 1409 <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
1359 1410
1360As the value of this option simply gets inserted into the HTML <head> header, 1411As the value of this option simply gets inserted into the HTML <head> header,
1361you can \"misuse\" it to add arbitrary text to the header. 1412you can \"misuse\" it to add arbitrary text to the header."
1362"
1363 :group 'org-export 1413 :group 'org-export
1364 :type 'string) 1414 :type 'string)
1365 1415
@@ -1393,18 +1443,16 @@ This option can also be set with the +OPTIONS line, e.g. \"toc:nil\"."
1393 :group 'org-export 1443 :group 'org-export
1394 :type 'boolean) 1444 :type 'boolean)
1395 1445
1396(defcustom org-export-local-list-max-depth 1 1446(defcustom org-export-plain-list-max-depth 3
1397 "Maximum depth of hand-formatted lists in HTML export. 1447 "Maximum depth of hand-formatted lists in HTML export.
1448
1398Org-mode parses hand-formatted enumeration and bullet lists and 1449Org-mode parses hand-formatted enumeration and bullet lists and
1399transforms them to HTML open export. Different indentation of the bullet 1450transforms them to HTML open export. Different indentation of the
1400or number indicates different list nesting levels. To avoid confusion, 1451bullet or number indicates different list nesting levels. To avoid
1401only a single level is allowed by default. This means that a list is started 1452confusion, only a single level is allowed by default. When this is
1402with an item, and that all further items are consitered as long as the 1453larger than 1, deeper indentation leads to deeper list nesting. For
1403indentation is larger or equal to the indentation of the first item. When this 1454example, the default value of 3 allows the following list to be
1404is larger than 1, deeper indentation leads to deeper list nesting. 1455formatted correctly in HTML:
1405If you are careful with hand formatting, you can increase this limit and
1406get lists of arbitrary depth. For example, by setting this option to 3, the
1407following list would look correct in HTML:
1408 1456
1409 * Fruit 1457 * Fruit
1410 - Apple 1458 - Apple
@@ -2757,6 +2805,234 @@ If optional TXT is given, check this string instead of the current kill."
2757 (throw 'exit nil))) 2805 (throw 'exit nil)))
2758 t)))) 2806 t))))
2759 2807
2808;;; Plain list item
2809
2810(defun org-at-item-p ()
2811 "Is point in a line starting a hand-formatted item?"
2812 (let ((llt org-plain-list-ordered-item-terminator))
2813 (save-excursion
2814 (goto-char (point-at-bol))
2815 (looking-at
2816 (cond
2817 ((eq llt t) "\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
2818 ((= llt ?.) "\\([ \t]*\\([-+]\\|\\([0-9]+\\.\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
2819 ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
2820 (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))))))
2821
2822(defun org-get-indentation ()
2823 "Get the indentation of the current line, ionterpreting tabs."
2824 (save-excursion
2825 (beginning-of-line 1)
2826 (skip-chars-forward " \t")
2827 (current-column)))
2828
2829(defun org-beginning-of-item ()
2830 "Go to the beginning of the current hand-formatted item.
2831If the cursor is not in an item, throw an error."
2832 (let ((pos (point))
2833 (limit (save-excursion (org-back-to-heading)
2834 (beginning-of-line 2) (point)))
2835 ind ind1)
2836 (if (org-at-item-p)
2837 (beginning-of-line 1)
2838 (beginning-of-line 1)
2839 (skip-chars-forward " \t")
2840 (setq ind (current-column))
2841 (if (catch 'exit
2842 (while t
2843 (beginning-of-line 0)
2844 (if (< (point) limit) (throw 'exit nil))
2845 (unless (looking-at " \t]*$")
2846 (skip-chars-forward " \t")
2847 (setq ind1 (current-column))
2848 (if (< ind1 ind)
2849 (throw 'exit (org-at-item-p))))))
2850 nil
2851 (goto-char pos)
2852 (error "Not in an item")))))
2853
2854(defun org-end-of-item ()
2855 "Go to the beginning of the current hand-formatted item.
2856If the cursor is not in an item, throw an error."
2857 (let ((pos (point))
2858 (limit (save-excursion (outline-next-heading) (point)))
2859 (ind (save-excursion
2860 (org-beginning-of-item)
2861 (skip-chars-forward " \t")
2862 (current-column)))
2863 ind1)
2864 (if (catch 'exit
2865 (while t
2866 (beginning-of-line 2)
2867 (if (>= (point) limit) (throw 'exit t))
2868 (unless (looking-at "[ \t]*$")
2869 (skip-chars-forward " \t")
2870 (setq ind1 (current-column))
2871 (if (<= ind1 ind) (throw 'exit t)))))
2872 (beginning-of-line 1)
2873 (goto-char pos)
2874 (error "Not in an item"))))
2875
2876(defun org-move-item-down (arg)
2877 "Move the plain list item at point down, i.e. swap with following item.
2878Subitems (items with larger indentation are considered part of the item,
2879so this really moves item trees."
2880 (interactive "p")
2881 (let (beg end ind ind1 (pos (point)) txt)
2882 (org-beginning-of-item)
2883 (setq beg (point))
2884 (setq ind (org-get-indentation))
2885 (org-end-of-item)
2886 (setq end (point))
2887 (setq ind1 (org-get-indentation))
2888 (if (and (org-at-item-p) (= ind ind1))
2889 (progn
2890 (org-end-of-item)
2891 (setq txt (buffer-substring beg end))
2892 (save-excursion
2893 (delete-region beg end))
2894 (setq pos (point))
2895 (insert txt)
2896 (goto-char pos)
2897 (org-maybe-renumber-ordered-list))
2898 (goto-char pos)
2899 (error "Cannot move this item further down"))))
2900
2901(defun org-move-item-up (arg)
2902 "Move the plain list item at point up, i.e. swap with previous item.
2903Subitems (items with larger indentation are considered part of the item,
2904so this really moves item trees."
2905 (interactive "p")
2906 (let (beg end ind ind1 (pos (point)) txt)
2907 (org-beginning-of-item)
2908 (setq beg (point))
2909 (setq ind (org-get-indentation))
2910 (org-end-of-item)
2911 (setq end (point))
2912 (goto-char beg)
2913 (catch 'exit
2914 (while t
2915 (beginning-of-line 0)
2916 (if (looking-at "[ \t]*$")
2917 nil
2918 (if (<= (setq ind1 (org-get-indentation)) ind)
2919 (throw 'exit t)))))
2920 (condition-case nil
2921 (org-beginning-of-item)
2922 (error (goto-char beg)
2923 (error "Cannot move this item further up")))
2924 (setq ind1 (org-get-indentation))
2925 (if (and (org-at-item-p) (= ind ind1))
2926 (progn
2927 (setq txt (buffer-substring beg end))
2928 (save-excursion
2929 (delete-region beg end))
2930 (setq pos (point))
2931 (insert txt)
2932 (goto-char pos)
2933 (org-maybe-renumber-ordered-list))
2934 (goto-char pos)
2935 (error "Cannot move this item further up"))))
2936
2937(defun org-maybe-renumber-ordered-list ()
2938 "Renumber the ordered list at point if setup allows it.
2939This tests the user option `org-auto-renumber-ordered-lists' before
2940doing the renumbering."
2941 (and org-auto-renumber-ordered-lists
2942 (org-at-item-p)
2943 (match-beginning 3)
2944 (org-renumber-ordered-list 1)))
2945
2946(defun org-get-string-indentation (s)
2947 "What indentation has S due to SPACE and TAB at the beginning of the string?"
2948 (let ((n -1) (i 0) (w tab-width) c)
2949 (catch 'exit
2950 (while (< (setq n (1+ n)) (length s))
2951 (setq c (aref s n))
2952 (cond ((= c ?\ ) (setq i (1+ i)))
2953 ((= c ?\t) (setq i (* (/ (+ w i) w) w)))
2954 (t (throw 'exit t)))))
2955 i))
2956
2957(defun org-renumber-ordered-list (arg)
2958 "Renumber an ordered plain list.
2959Cursor neext to be in the first line of an item, the line that starts
2960with something like \"1.\" or \"2)\"."
2961 (interactive "p")
2962 (unless (and (org-at-item-p)
2963 (match-beginning 3))
2964 (error "This is not an ordered list"))
2965 (let ((line (org-current-line))
2966 (col (current-column))
2967 (ind (org-get-string-indentation
2968 (buffer-substring (point-at-bol) (match-beginning 3))))
2969 (term (substring (match-string 3) -1))
2970 ind1 (n (1- arg)))
2971 ;; find where this list begins
2972 (catch 'exit
2973 (while t
2974 (catch 'next
2975 (beginning-of-line 0)
2976 (if (looking-at "[ \t]*$") (throw 'next t))
2977 (skip-chars-forward " \t") (setq ind1 (current-column))
2978 (if (and (<= ind1 ind)
2979 (not (org-at-item-p)))
2980 (throw 'exit t)))))
2981 ;; Walk forward and replace these numbers
2982 (catch 'exit
2983 (while t
2984 (catch 'next
2985 (beginning-of-line 2)
2986 (if (eobp) (throw 'exit nil))
2987 (if (looking-at "[ \t]*$") (throw 'next nil))
2988 (skip-chars-forward " \t") (setq ind1 (current-column))
2989 (if (> ind1 ind) (throw 'next t))
2990 (if (< ind1 ind) (throw 'exit t))
2991 (if (not (org-at-item-p)) (throw 'exit nil))
2992 (if (not (match-beginning 3))
2993 (error "unordered bullet in ordered list. Press \\[undo] to recover"))
2994 (delete-region (match-beginning 3) (1- (match-end 3)))
2995 (goto-char (match-beginning 3))
2996 (insert (format "%d" (setq n (1+ n)))))))
2997 (goto-line line)
2998 (move-to-column col)))
2999
3000(defvar org-last-indent-begin-marker (make-marker))
3001(defvar org-last-indent-end-marker (make-marker))
3002
3003
3004(defun org-outdent-item (arg)
3005 "Outdent a local list item."
3006 (interactive "p")
3007 (org-indent-item (- arg)))
3008
3009(defun org-indent-item (arg)
3010 "Indent a local list item."
3011 (interactive "p")
3012 (unless (org-at-item-p)
3013 (error "Not on an item"))
3014 (let (beg end ind ind1)
3015 (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
3016 (setq beg org-last-indent-begin-marker
3017 end org-last-indent-end-marker)
3018 (org-beginning-of-item)
3019 (setq beg (move-marker org-last-indent-begin-marker (point)))
3020 (org-end-of-item)
3021 (setq end (move-marker org-last-indent-end-marker (point))))
3022 (goto-char beg)
3023 (skip-chars-forward " \t") (setq ind (current-column))
3024 (if (< (+ arg ind) 0) (error "Cannot outdent beyond margin"))
3025 (while (< (point) end)
3026 (beginning-of-line 1)
3027 (skip-chars-forward " \t") (setq ind1 (current-column))
3028 (delete-region (point-at-bol) (point))
3029 (indent-to-column (+ ind1 arg))
3030 (beginning-of-line 2))
3031 (goto-char beg)))
3032
3033
3034;;; Archiving
3035
2760(defun org-archive-subtree () 3036(defun org-archive-subtree ()
2761 "Move the current subtree to the archive. 3037 "Move the current subtree to the archive.
2762The archive can be a certain top-level heading in the current file, or in 3038The archive can be a certain top-level heading in the current file, or in
@@ -8985,6 +9261,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
8985 (in-local-list nil) 9261 (in-local-list nil)
8986 (local-list-num nil) 9262 (local-list-num nil)
8987 (local-list-indent nil) 9263 (local-list-indent nil)
9264 (llt org-plain-list-ordered-item-terminator)
8988 (email user-mail-address) 9265 (email user-mail-address)
8989 (language org-export-default-language) 9266 (language org-export-default-language)
8990 (text nil) 9267 (text nil)
@@ -9039,7 +9316,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9039" 9316"
9040 language (org-html-expand title) (or charset "iso-8859-1") 9317 language (org-html-expand title) (or charset "iso-8859-1")
9041 date time author style)) 9318 date time author style))
9042 (if title (insert (concat "<H1 align=\"center\">" 9319 (if title (insert (concat "<H1 class=\"title\">"
9043 (org-html-expand title) "</H1>\n"))) 9320 (org-html-expand title) "</H1>\n")))
9044 (if author (insert (concat (nth 1 lang-words) ": " author "\n"))) 9321 (if author (insert (concat (nth 1 lang-words) ": " author "\n")))
9045 (if email (insert (concat "<a href=\"mailto:" email "\">&lt;" 9322 (if email (insert (concat "<a href=\"mailto:" email "\">&lt;"
@@ -9089,7 +9366,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9089 (insert 9366 (insert
9090 (format 9367 (format
9091 (if todo 9368 (if todo
9092 "<li><a href=\"#sec-%d\"><span style='color:red'>%s</span></a>\n" 9369 "<li><a href=\"#sec-%d\"><span class=\"todo\">%s</span></a>\n"
9093 "<li><a href=\"#sec-%d\">%s</a>\n") 9370 "<li><a href=\"#sec-%d\">%s</a>\n")
9094 head-count txt)) 9371 head-count txt))
9095 (setq org-last-level level)) 9372 (setq org-last-level level))
@@ -9122,7 +9399,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9122 (insert "<pre>\n")) 9399 (insert "<pre>\n"))
9123 (insert (org-html-protect (match-string 1 line)) "\n") 9400 (insert (org-html-protect (match-string 1 line)) "\n")
9124 (when (and lines 9401 (when (and lines
9125 (not (string-match "^[ \t]+\\(:.*\\)" 9402 (not (string-match "^[ \t]*\\(:.*\\)"
9126 (car lines)))) 9403 (car lines))))
9127 (setq infixed nil) 9404 (setq infixed nil)
9128 (insert "</pre>\n")) 9405 (insert "</pre>\n"))
@@ -9180,9 +9457,9 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9180 (match-beginning 2)) 9457 (match-beginning 2))
9181 (if (equal (match-string 2 line) org-done-string) 9458 (if (equal (match-string 2 line) org-done-string)
9182 (setq line (replace-match 9459 (setq line (replace-match
9183 "<span style='color:green'>\\2</span>" 9460 "<span class=\"done\">\\2</span>"
9184 nil nil line 2)) 9461 nil nil line 2))
9185 (setq line (replace-match "<span style='color:red'>\\2</span>" 9462 (setq line (replace-match "<span class=\"todo\">\\2</span>"
9186 nil nil line 2)))) 9463 nil nil line 2))))
9187 9464
9188 ;; DEADLINES 9465 ;; DEADLINES
@@ -9192,9 +9469,8 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9192 (string-match "<a href" 9469 (string-match "<a href"
9193 (substring line 0 (match-beginning 0)))) 9470 (substring line 0 (match-beginning 0))))
9194 nil ; Don't do the replacement - it is inside a link 9471 nil ; Don't do the replacement - it is inside a link
9195 (setq line (replace-match "<span style='color:red'>\\&</span>" 9472 (setq line (replace-match "<span class=\"deadline\">\\&</span>"
9196 nil nil line 1))))) 9473 nil nil line 1)))))
9197
9198 (cond 9474 (cond
9199 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) 9475 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
9200 ;; This is a headline 9476 ;; This is a headline
@@ -9233,13 +9509,21 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9233 (insert (org-format-table-html table-buffer table-orig-buffer)))) 9509 (insert (org-format-table-html table-buffer table-orig-buffer))))
9234 (t 9510 (t
9235 ;; Normal lines 9511 ;; Normal lines
9236 (when (and (> org-export-local-list-max-depth 0) 9512 (when (and (> org-export-plain-list-max-depth 0)
9237 (string-match 9513 (string-match
9238 "^\\( *\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\)\\)? *\\([^ \t\n\r]\\)" 9514 (cond
9515 ((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
9516 ((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
9517 ((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
9518 (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))
9239 line)) 9519 line))
9240 (setq ind (- (match-end 1) (match-beginning 1)) 9520 (setq ind (org-get-string-indentation line)
9241 start-is-num (match-beginning 4) 9521 start-is-num (match-beginning 4)
9242 starter (if (match-beginning 2) (match-string 2 line))) 9522 starter (if (match-beginning 2) (match-string 2 line))
9523 line (substring line (match-beginning 5)))
9524 (unless (string-match "[^ \t]" line)
9525 ;; empty line. Pretend indentation is large.
9526 (setq ind (1+ (or (car local-list-indent) 1))))
9243 (while (and in-local-list 9527 (while (and in-local-list
9244 (or (and (= ind (car local-list-indent)) 9528 (or (and (= ind (car local-list-indent))
9245 (not starter)) 9529 (not starter))
@@ -9247,13 +9531,12 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9247 (insert (if (car local-list-num) "</ol>\n" "</ul>")) 9531 (insert (if (car local-list-num) "</ol>\n" "</ul>"))
9248 (pop local-list-num) (pop local-list-indent) 9532 (pop local-list-num) (pop local-list-indent)
9249 (setq in-local-list local-list-indent)) 9533 (setq in-local-list local-list-indent))
9250
9251 (cond 9534 (cond
9252 ((and starter 9535 ((and starter
9253 (or (not in-local-list) 9536 (or (not in-local-list)
9254 (> ind (car local-list-indent))) 9537 (> ind (car local-list-indent)))
9255 (< (length local-list-indent) 9538 (< (length local-list-indent)
9256 org-export-local-list-max-depth)) 9539 org-export-plain-list-max-depth))
9257 ;; Start new (level of ) list 9540 ;; Start new (level of ) list
9258 (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n")) 9541 (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n"))
9259 (push start-is-num local-list-num) 9542 (push start-is-num local-list-num)
@@ -9261,8 +9544,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9261 (setq in-local-list t)) 9544 (setq in-local-list t))
9262 (starter 9545 (starter
9263 ;; continue current list 9546 ;; continue current list
9264 (insert "<li>\n"))) 9547 (insert "<li>\n"))))
9265 (setq line (substring line (match-beginning 5))))
9266 ;; Empty lines start a new paragraph. If hand-formatted lists 9548 ;; Empty lines start a new paragraph. If hand-formatted lists
9267 ;; are not fully interpreted, lines starting with "-", "+", "*" 9549 ;; are not fully interpreted, lines starting with "-", "+", "*"
9268 ;; also start a new paragraph. 9550 ;; also start a new paragraph.
@@ -9327,7 +9609,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
9327 (mapconcat (lambda (x) 9609 (mapconcat (lambda (x)
9328 (if head 9610 (if head
9329 (concat "<th>" x "</th>") 9611 (concat "<th>" x "</th>")
9330 (concat "<td valign=\"top\">" x "</td>"))) 9612 (concat "<td>" x "</td>")))
9331 fields "") 9613 fields "")
9332 "</tr>\n")))) 9614 "</tr>\n"))))
9333 (setq html (concat html "</table>\n")) 9615 (setq html (concat html "</table>\n"))
@@ -9366,10 +9648,8 @@ But it has the disadvantage, that no cell- or row-spanning is allowed."
9366 (lambda (x) 9648 (lambda (x)
9367 (if (equal x "") (setq x empty)) 9649 (if (equal x "") (setq x empty))
9368 (if head 9650 (if head
9369 (concat "<th valign=\"top\">" x 9651 (concat "<th>" x "</th>\n")
9370 "</th>\n") 9652 (concat "<td>" x "</td>\n")))
9371 (concat "<td valign=\"top\">" x
9372 "</td>\n")))
9373 field-buffer "\n") 9653 field-buffer "\n")
9374 "</tr>\n")) 9654 "</tr>\n"))
9375 (setq head nil) 9655 (setq head nil)
@@ -10016,6 +10296,7 @@ See the individual commands for more information."
10016 (cond 10296 (cond
10017 ((org-at-table-p) (org-table-delete-column)) 10297 ((org-at-table-p) (org-table-delete-column))
10018 ((org-on-heading-p) (org-promote-subtree)) 10298 ((org-on-heading-p) (org-promote-subtree))
10299 ((org-at-item-p) (call-interactively 'org-outdent-item))
10019 (t (org-shiftcursor-error)))) 10300 (t (org-shiftcursor-error))))
10020 10301
10021(defun org-shiftmetaright () 10302(defun org-shiftmetaright ()
@@ -10026,30 +10307,36 @@ See the individual commands for more information."
10026 (cond 10307 (cond
10027 ((org-at-table-p) (org-table-insert-column)) 10308 ((org-at-table-p) (org-table-insert-column))
10028 ((org-on-heading-p) (org-demote-subtree)) 10309 ((org-on-heading-p) (org-demote-subtree))
10310 ((org-at-item-p) (call-interactively 'org-indent-item))
10029 (t (org-shiftcursor-error)))) 10311 (t (org-shiftcursor-error))))
10030 10312
10031(defun org-shiftmetaup (&optional arg) 10313(defun org-shiftmetaup (&optional arg)
10032 "Move subtree up or kill table row. 10314 "Move subtree up or kill table row.
10033Calls `org-move-subtree-up' or `org-table-kill-row', depending on context. 10315Calls `org-move-subtree-up' or `org-table-kill-row' or
10034See the individual commands for more information." 10316`org-move-item-up' depending on context. See the individual commands
10317for more information."
10035 (interactive "P") 10318 (interactive "P")
10036 (cond 10319 (cond
10037 ((org-at-table-p) (org-table-kill-row)) 10320 ((org-at-table-p) (org-table-kill-row))
10038 ((org-on-heading-p) (org-move-subtree-up arg)) 10321 ((org-on-heading-p) (org-move-subtree-up arg))
10322 ((org-at-item-p) (org-move-item-up arg))
10039 (t (org-shiftcursor-error)))) 10323 (t (org-shiftcursor-error))))
10040(defun org-shiftmetadown (&optional arg) 10324(defun org-shiftmetadown (&optional arg)
10041 "Move subtree down or insert table row. 10325 "Move subtree down or insert table row.
10042Calls `org-move-subtree-down' or `org-table-insert-row', depending on context. 10326Calls `org-move-subtree-down' or `org-table-insert-row' or
10043See the individual commands for more information." 10327`org-move-item-down', depending on context. See the individual
10328commands for more information."
10044 (interactive "P") 10329 (interactive "P")
10045 (cond 10330 (cond
10046 ((org-at-table-p) (org-table-insert-row arg)) 10331 ((org-at-table-p) (org-table-insert-row arg))
10047 ((org-on-heading-p) (org-move-subtree-down arg)) 10332 ((org-on-heading-p) (org-move-subtree-down arg))
10333 ((org-at-item-p) (org-move-item-down arg))
10048 (t (org-shiftcursor-error)))) 10334 (t (org-shiftcursor-error))))
10049 10335
10050(defun org-metaleft (&optional arg) 10336(defun org-metaleft (&optional arg)
10051 "Promote heading or move table column to left. 10337 "Promote heading or move table column to left.
10052Calls `org-do-promote' or `org-table-move-column', depending on context. 10338Calls `org-do-promote' or `org-table-move-column', depending on context.
10339With no specific context, calls the Emacs default `backward-word'.
10053See the individual commands for more information." 10340See the individual commands for more information."
10054 (interactive "P") 10341 (interactive "P")
10055 (cond 10342 (cond
@@ -10060,6 +10347,7 @@ See the individual commands for more information."
10060(defun org-metaright (&optional arg) 10347(defun org-metaright (&optional arg)
10061 "Demote subtree or move table column to right. 10348 "Demote subtree or move table column to right.
10062Calls `org-do-demote' or `org-table-move-column', depending on context. 10349Calls `org-do-demote' or `org-table-move-column', depending on context.
10350With no specific context, calls the Emacs default `forward-word'.
10063See the individual commands for more information." 10351See the individual commands for more information."
10064 (interactive "P") 10352 (interactive "P")
10065 (cond 10353 (cond
@@ -10069,22 +10357,26 @@ See the individual commands for more information."
10069 10357
10070(defun org-metaup (&optional arg) 10358(defun org-metaup (&optional arg)
10071 "Move subtree up or move table row up. 10359 "Move subtree up or move table row up.
10072Calls `org-move-subtree-up' or `org-table-move-row', depending on context. 10360Calls `org-move-subtree-up' or `org-table-move-row' or
10073See the individual commands for more information." 10361`org-move-item-up', depending on context. See the individual commands
10362for more information."
10074 (interactive "P") 10363 (interactive "P")
10075 (cond 10364 (cond
10076 ((org-at-table-p) (org-table-move-row 'up)) 10365 ((org-at-table-p) (org-table-move-row 'up))
10077 ((org-on-heading-p) (org-move-subtree-up arg)) 10366 ((org-on-heading-p) (org-move-subtree-up arg))
10367 ((org-at-item-p) (org-move-item-up arg))
10078 (t (org-shiftcursor-error)))) 10368 (t (org-shiftcursor-error))))
10079 10369
10080(defun org-metadown (&optional arg) 10370(defun org-metadown (&optional arg)
10081 "Move subtree down or move table row down. 10371 "Move subtree down or move table row down.
10082Calls `org-move-subtree-down' or `org-table-move-row', depending on context. 10372Calls `org-move-subtree-down' or `org-table-move-row' or
10083See the individual commands for more information." 10373`org-move-item-down', depending on context. See the individual
10374commands for more information."
10084 (interactive "P") 10375 (interactive "P")
10085 (cond 10376 (cond
10086 ((org-at-table-p) (org-table-move-row nil)) 10377 ((org-at-table-p) (org-table-move-row nil))
10087 ((org-on-heading-p) (org-move-subtree-down arg)) 10378 ((org-on-heading-p) (org-move-subtree-down arg))
10379 ((org-at-item-p) (org-move-item-down arg))
10088 (t (org-shiftcursor-error)))) 10380 (t (org-shiftcursor-error))))
10089 10381
10090(defun org-shiftup (&optional arg) 10382(defun org-shiftup (&optional arg)
@@ -10153,6 +10445,8 @@ If the cursor is on a #+TBLFM line, re-apply the formulae to the table."
10153 (org-table-recalculate t) 10445 (org-table-recalculate t)
10154 (org-table-maybe-recalculate-line)) 10446 (org-table-maybe-recalculate-line))
10155 (org-table-align)) 10447 (org-table-align))
10448 ((org-at-item-p)
10449 (org-renumber-ordered-list (prefix-numeric-value arg)))
10156 ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)")) 10450 ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
10157 (cond 10451 (cond
10158 ((equal (match-string 1) "TBLFM") 10452 ((equal (match-string 1) "TBLFM")
@@ -10165,11 +10459,13 @@ If the cursor is on a #+TBLFM line, re-apply the formulae to the table."
10165 (org-mode-restart)))) 10459 (org-mode-restart))))
10166 ((org-region-active-p) 10460 ((org-region-active-p)
10167 (org-table-convert-region (region-beginning) (region-end) arg)) 10461 (org-table-convert-region (region-beginning) (region-end) arg))
10168 ((and (region-beginning) (region-end)) 10462 ((condition-case nil
10463 (and (region-beginning) (region-end))
10464 (error nil))
10169 (if (y-or-n-p "Convert inactive region to table? ") 10465 (if (y-or-n-p "Convert inactive region to table? ")
10170 (org-table-convert-region (region-beginning) (region-end) arg) 10466 (org-table-convert-region (region-beginning) (region-end) arg)
10171 (error "Abort"))) 10467 (error "Abort")))
10172 (t (error "No table at point, and no region to make one"))))) 10468 (t (error "C-c C-c can do nothing useful at this location.")))))
10173 10469
10174(defun org-mode-restart () 10470(defun org-mode-restart ()
10175 "Restart Org-mode, to scan again for special lines. 10471 "Restart Org-mode, to scan again for special lines.
@@ -10436,7 +10732,7 @@ With optional NODE, go directly to that node."
10436 (set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]") 10732 (set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]")
10437 ;; The paragraph starter includes hand-formatted lists. 10733 ;; The paragraph starter includes hand-formatted lists.
10438 (set (make-local-variable 'paragraph-start) 10734 (set (make-local-variable 'paragraph-start)
10439 "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*]\\|[0-9]+\\.[ \t]+\\)\\|[ \t]*[:|]") 10735 "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*]\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
10440 ;; Inhibit auto-fill for headers, tables and fixed-width lines. 10736 ;; Inhibit auto-fill for headers, tables and fixed-width lines.
10441 ;; But only if the user has not turned off tables or fixed-width regions 10737 ;; But only if the user has not turned off tables or fixed-width regions
10442 (set (make-local-variable 'auto-fill-inhibit-regexp) 10738 (set (make-local-variable 'auto-fill-inhibit-regexp)
@@ -10472,7 +10768,7 @@ With optional NODE, go directly to that node."
10472 "Return a fill prefix for org-mode files. 10768 "Return a fill prefix for org-mode files.
10473In particular, this makes sure hanging paragraphs for hand-formatted lists 10769In particular, this makes sure hanging paragraphs for hand-formatted lists
10474work correctly." 10770work correctly."
10475 (if (looking-at " *\\([-*+] \\|[0-9]+\\. \\)?") 10771 (if (looking-at " *\\([-*+] \\|[0-9]+[.)] \\)?")
10476 (make-string (- (match-end 0) (match-beginning 0)) ?\ ))) 10772 (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
10477 10773
10478;; Functions needed for Emacs/XEmacs region compatibility 10774;; Functions needed for Emacs/XEmacs region compatibility
@@ -10707,3 +11003,4 @@ Show the heading too, if it is currently invisible."
10707;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd 11003;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
10708;;; org.el ends here 11004;;; org.el ends here
10709 11005
11006
diff --git a/lisp/view.el b/lisp/view.el
index 0d6b941a0ca..4cbc0fe9e4c 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -93,6 +93,12 @@ considered for restoring."
93 :type 'boolean 93 :type 'boolean
94 :group 'view) 94 :group 'view)
95 95
96(defcustom view-inhibit-help-message nil
97 "*Non-nil inhibits the help message showed upon entering View mode."
98 :type 'boolean
99 :group 'view
100 :version "22.1")
101
96;;;###autoload 102;;;###autoload
97(defvar view-mode nil 103(defvar view-mode nil
98 "Non-nil if View mode is enabled. 104 "Non-nil if View mode is enabled.
@@ -516,9 +522,10 @@ This function runs the normal hook `view-mode-hook'."
516 (unless view-mode ; Do nothing if already in view mode. 522 (unless view-mode ; Do nothing if already in view mode.
517 (view-mode-enable) 523 (view-mode-enable)
518 (force-mode-line-update) 524 (force-mode-line-update)
519 (message "%s" 525 (unless view-inhibit-help-message
520 (substitute-command-keys "\ 526 (message "%s"
521View mode: type \\[help-command] for help, \\[describe-mode] for commands, \\[View-quit] to quit.")))) 527 (substitute-command-keys "\
528View mode: type \\[help-command] for help, \\[describe-mode] for commands, \\[View-quit] to quit.")))))
522 529
523(defun view-mode-exit (&optional return-to-alist exit-action all-win) 530(defun view-mode-exit (&optional return-to-alist exit-action all-win)
524 "Exit View mode in various ways, depending on optional arguments. 531 "Exit View mode in various ways, depending on optional arguments.
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index c3eb9519ab1..1268994ba89 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -151,10 +151,12 @@
151 151
152 (set-terminal-parameter nil 'xterm-mouse-x x) 152 (set-terminal-parameter nil 'xterm-mouse-x x)
153 (set-terminal-parameter nil 'xterm-mouse-y y) 153 (set-terminal-parameter nil 'xterm-mouse-y y)
154 (if w 154 (setq
155 (list mouse (posn-at-x-y (- x left) (- y top) w t)) 155 last-input-event
156 (list mouse 156 (if w
157 (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t))))))) 157 (list mouse (posn-at-x-y (- x left) (- y top) w t))
158 (list mouse
159 (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t))))))))
158 160
159;;;###autoload 161;;;###autoload
160(define-minor-mode xterm-mouse-mode 162(define-minor-mode xterm-mouse-mode
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 12fb6e42460..64c676d759f 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,7 @@
12005-11-27 Richard M. Stallman <rms@gnu.org>
2
3 * windows.texi (Resizing Windows): Add adjust-window-trailing-edge.
4
12005-11-21 Juri Linkov <juri@jurta.org> 52005-11-21 Juri Linkov <juri@jurta.org>
2 6
3 * customize.texi (Common Keywords): Update links types 7 * customize.texi (Common Keywords): Update links types
diff --git a/lispref/windows.texi b/lispref/windows.texi
index 56ec80b9a24..efb7cf32326 100644
--- a/lispref/windows.texi
+++ b/lispref/windows.texi
@@ -1216,6 +1216,9 @@ forms. But that value is hard to find.
1216@defun set-window-point window position 1216@defun set-window-point window position
1217This function positions point in @var{window} at position 1217This function positions point in @var{window} at position
1218@var{position} in @var{window}'s buffer. It returns @var{position}. 1218@var{position} in @var{window}'s buffer. It returns @var{position}.
1219
1220If @var{window} is selected, and its buffer is current,
1221this simply does @code{goto-char}.
1219@end defun 1222@end defun
1220 1223
1221@node Window Start 1224@node Window Start
@@ -1702,7 +1705,7 @@ scrolling value explicitly. The value you specify serves as a lower
1702bound for automatic scrolling, i.e. automatic scrolling will not 1705bound for automatic scrolling, i.e. automatic scrolling will not
1703scroll a window to a column less than the specified one. 1706scroll a window to a column less than the specified one.
1704 1707
1705@deffn Command scroll-left &optional count 1708@deffn Command scroll-left &optional count set-minimum
1706This function scrolls the selected window @var{count} columns to the 1709This function scrolls the selected window @var{count} columns to the
1707left (or to the right if @var{count} is negative). The default 1710left (or to the right if @var{count} is negative). The default
1708for @var{count} is the window width, minus 2. 1711for @var{count} is the window width, minus 2.
@@ -1710,20 +1713,23 @@ for @var{count} is the window width, minus 2.
1710The return value is the total amount of leftward horizontal scrolling in 1713The return value is the total amount of leftward horizontal scrolling in
1711effect after the change---just like the value returned by 1714effect after the change---just like the value returned by
1712@code{window-hscroll} (below). 1715@code{window-hscroll} (below).
1713@end deffn
1714
1715@deffn Command scroll-right &optional count
1716This function scrolls the selected window @var{count} columns to the
1717right (or to the left if @var{count} is negative). The default
1718for @var{count} is the window width, minus 2.
1719
1720The return value is the total amount of leftward horizontal scrolling in
1721effect after the change---just like the value returned by
1722@code{window-hscroll} (below).
1723 1716
1724Once you scroll a window as far right as it can go, back to its normal 1717Once you scroll a window as far right as it can go, back to its normal
1725position where the total leftward scrolling is zero, attempts to scroll 1718position where the total leftward scrolling is zero, attempts to scroll
1726any farther right have no effect. 1719any farther right have no effect.
1720
1721If @var{set-minimum} is non-@code{nil}, the new scroll amount becomes
1722the lower bound for automatic scrolling; that is, automatic scrolling
1723will not scroll a window to a column less than the value returned by
1724this function. Interactive calls pass non-@code{nil} for
1725@var{set-minimum}.
1726@end deffn
1727
1728@deffn Command scroll-right &optional count set-minimum
1729This function scrolls the selected window @var{count} columns to the
1730right (or to the left if @var{count} is negative). The default
1731for @var{count} is the window width, minus 2. Aside from the direction
1732of scrolling, this works just like @code{scroll-left}.
1727@end deffn 1733@end deffn
1728 1734
1729@defun window-hscroll &optional window 1735@defun window-hscroll &optional window
@@ -2032,6 +2038,14 @@ It could be defined as follows:
2032@end example 2038@end example
2033@end deffn 2039@end deffn
2034 2040
2041@defun adjust-window-trailing-edge window delta horizontal
2042This function makes the selected window @var{delta} lines taller or
2043@var{delta} columns wider, by moving the bottom or right edge. This
2044function does not delete other windows; if it cannot make the
2045requested size adjustment, it signals an error. On success, this
2046function returns @code{nil}.
2047@end defun
2048
2035@defun fit-window-to-buffer &optional window max-height min-height 2049@defun fit-window-to-buffer &optional window max-height min-height
2036This function makes @var{window} the right height to display its 2050This function makes @var{window} the right height to display its
2037contents exactly. If @var{window} is omitted or @code{nil}, it uses 2051contents exactly. If @var{window} is omitted or @code{nil}, it uses
diff --git a/make-dist b/make-dist
index 0e25de0059f..4b141cfe225 100755
--- a/make-dist
+++ b/make-dist
@@ -316,10 +316,10 @@ for subdir in lisp site-lisp lispref lispintro \
316 nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \ 316 nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
317 etc etc/e \ 317 etc etc/e \
318 etc/images etc/images/ezimage etc/images/gnus etc/images/gud \ 318 etc/images etc/images/ezimage etc/images/gnus etc/images/gud \
319 etc/images/low-color etc/images/mail etc/images/smilies \ 319 etc/images/icons etc/images/low-color etc/images/mail \
320 etc/tree-widget etc/tree-widget/default etc/tree-widget/folder \ 320 etc/images/smilies etc/tree-widget etc/tree-widget/default \
321 info man m4 msdos vms mac mac/inc mac/inc/sys \ 321 etc/tree-widget/folder info man m4 msdos vms mac mac/inc \
322 mac/src mac/Emacs.app mac/Emacs.app/Contents \ 322 mac/inc/sys mac/src mac/Emacs.app mac/Emacs.app/Contents \
323 mac/Emacs.app/Contents/MacOS mac/Emacs.app/Contents/Resources \ 323 mac/Emacs.app/Contents/MacOS mac/Emacs.app/Contents/Resources \
324 mac/Emacs.app/Contents/Resources/English.lproj 324 mac/Emacs.app/Contents/Resources/English.lproj
325do 325do
@@ -602,7 +602,7 @@ echo "Making links to \`etc/images'"
602 fi 602 fi
603 done) 603 done)
604 604
605for dir in etc/images/ezimage etc/images/gnus etc/images/gud \ 605for dir in etc/images/ezimage etc/images/gnus etc/images/gud etc/images/icons \
606 etc/images/low-color etc/images/mail etc/images/smilies \ 606 etc/images/low-color etc/images/mail etc/images/smilies \
607 etc/tree-widget/default etc/tree-widget/folder ; do 607 etc/tree-widget/default etc/tree-widget/folder ; do
608 echo "Making links to \`${dir}'" 608 echo "Making links to \`${dir}'"
diff --git a/man/ChangeLog b/man/ChangeLog
index 959fa4fcc41..9916392b5b7 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,34 @@
12005-12-01 Nick Roberts <nickrob@snap.net.nz>
2
3 * building.texi (GDB User Interface Layout): Describe how to
4 kill associated buffers.
5 (Breakpoints Buffer): Use D instead of d for gdb-delete-breakpoint.
6 (Watch Expressions): Be more precise.
7 (Other GDB User Interface Buffers): Describe how to change a
8 register value.
9
102005-11-30 Carsten Dominik <dominik@science.uva.nl>
11
12 * org.texi (Plain Lists): Typos fixed.
13
142005-11-28 Jay Belanger <belanger@truman.edu>
15
16 * calc.texi: Change references of `M-#' to `C-x *' prefix.
17
182005-11-24 Carsten Dominik <dominik@science.uva.nl>
19
20 * org.texi: (Structure editing): New item moving commands added.
21 (Plain Lists): New section.
22
232005-11-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
24
25 * macos.texi (Mac Input): Remove description of
26 mac-command-key-is-meta. Add descriptions of
27 mac-control-modifier, mac-command-modifier, and
28 mac-option-modifier.
29 (Mac International): Fix description of conversion of clipboard data.
30 (Mac Font Specs): Add example of font customization by face attributes.
31
12005-11-22 Nick Roberts <nickrob@snap.net.nz> 322005-11-22 Nick Roberts <nickrob@snap.net.nz>
2 33
3 * building.texi (Watch Expressions): Expand description. 34 * building.texi (Watch Expressions): Expand description.
diff --git a/man/building.texi b/man/building.texi
index 5b63467de15..82291510f08 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -835,6 +835,8 @@ respectively. If the menu-bar is unavailable, type @code{M-x
835gdb-display-@var{buffertype}-buffer} or @code{M-x 835gdb-display-@var{buffertype}-buffer} or @code{M-x
836gdb-frame-@var{buffertype}-buffer} respectively, where 836gdb-frame-@var{buffertype}-buffer} respectively, where
837@var{buffertype} is the relevant buffer type e.g breakpoints. 837@var{buffertype} is the relevant buffer type e.g breakpoints.
838Most of these buffers are read-only and be killed by simply
839pressing @kbd{q} in them.
838 840
839When you finish debugging then kill the GUD buffer with @kbd{C-x k}, 841When you finish debugging then kill the GUD buffer with @kbd{C-x k},
840which will also kill all the buffers associated with the session. 842which will also kill all the buffers associated with the session.
@@ -863,8 +865,8 @@ relevant line. This is red when the breakpoint is enabled and grey
863when it is disabled. Text-only terminals correspondingly display 865when it is disabled. Text-only terminals correspondingly display
864a @samp{B} or @samp{b}. 866a @samp{B} or @samp{b}.
865 867
866@item d 868@item D
867@kindex d @r{(GDB breakpoints buffer)} 869@kindex D @r{(GDB breakpoints buffer)}
868@findex gdb-delete-breakpoint 870@findex gdb-delete-breakpoint
869Delete the breakpoint at the current line (@code{gdb-delete-breakpoint}). 871Delete the breakpoint at the current line (@code{gdb-delete-breakpoint}).
870 872
@@ -903,8 +905,9 @@ icon in the tool bar (@code{gud-watch}).
903Each watch expression is displayed in the speedbar. Complex data 905Each watch expression is displayed in the speedbar. Complex data
904types, such as arrays, structures and unions are represented in a tree 906types, such as arrays, structures and unions are represented in a tree
905format. Leaves and simple data types show the name of the expression 907format. Leaves and simple data types show the name of the expression
906and its value, and display the type as a tooltip. Higher levels 908and its value, and display the type as a tooltip. Higher levels show
907just show the name and the data type. 909the name, type and address value for pointers and just the name and
910type otherwise.
908 911
909To expand or contract a complex data type, click @kbd{Mouse-2} 912To expand or contract a complex data type, click @kbd{Mouse-2}
910on the tag to the left of the expression. 913on the tag to the left of the expression.
@@ -961,8 +964,9 @@ alternatively click @kbd{Mouse-2} there, to examine their values.
961@item Registers Buffer 964@item Registers Buffer
962@findex toggle-gdb-all-registers 965@findex toggle-gdb-all-registers
963The registers buffer displays the values held by the registers 966The registers buffer displays the values held by the registers
964(@pxref{Registers,,, gdb, The GNU debugger}). Press @key{SPC} to 967(@pxref{Registers,,, gdb, The GNU debugger}). Press @key{RET} or
965toggle the display of floating point registers 968click @kbd{Mouse-2} on a register if you want to change its value.
969Press @key{SPC} to toggle the display of floating point registers
966(@code{toggle-gdb-all-registers}). 970(@code{toggle-gdb-all-registers}).
967 971
968@item Assembler Buffer 972@item Assembler Buffer
diff --git a/man/calc.texi b/man/calc.texi
index 726a7bc7a0c..5eab5322fca 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -167,7 +167,7 @@ longer Info tutorial.)
167* Embedded Mode:: Working with formulas embedded in a file. 167* Embedded Mode:: Working with formulas embedded in a file.
168* Programming:: Calc as a programmable calculator. 168* Programming:: Calc as a programmable calculator.
169 169
170* Customizable Variables:: Customizable Variables. 170* Customizing Calc:: Customizing Calc.
171* Reporting Bugs:: How to report bugs and make suggestions. 171* Reporting Bugs:: How to report bugs and make suggestions.
172 172
173* Summary:: Summary of Calc commands and functions. 173* Summary:: Summary of Calc commands and functions.
@@ -708,9 +708,9 @@ in the margin with its index entry.
708@c [fix-ref Help Commands] 708@c [fix-ref Help Commands]
709You can access this manual on-line at any time within Calc by 709You can access this manual on-line at any time within Calc by
710pressing the @kbd{h i} key sequence. Outside of the Calc window, 710pressing the @kbd{h i} key sequence. Outside of the Calc window,
711you can press @kbd{M-# i} to read the manual on-line. Also, you 711you can press @kbd{C-x * i} to read the manual on-line. Also, you
712can jump directly to the Tutorial by pressing @kbd{h t} or @kbd{M-# t}, 712can jump directly to the Tutorial by pressing @kbd{h t} or @kbd{C-x * t},
713or to the Summary by pressing @kbd{h s} or @kbd{M-# s}. Within Calc, 713or to the Summary by pressing @kbd{h s} or @kbd{C-x * s}. Within Calc,
714you can also go to the part of the manual describing any Calc key, 714you can also go to the part of the manual describing any Calc key,
715function, or variable using @w{@kbd{h k}}, @kbd{h f}, or @kbd{h v}, 715function, or variable using @w{@kbd{h k}}, @kbd{h f}, or @kbd{h v},
716respectively. @xref{Help Commands}. 716respectively. @xref{Help Commands}.
@@ -773,8 +773,8 @@ that you must press @key{RET} to proceed. For example, the @key{RET}
773is usually omitted in key sequences like @kbd{M-x calc-keypad @key{RET}}. 773is usually omitted in key sequences like @kbd{M-x calc-keypad @key{RET}}.
774 774
775Commands are generally shown like this: @kbd{p} (@code{calc-precision}) 775Commands are generally shown like this: @kbd{p} (@code{calc-precision})
776or @kbd{M-# k} (@code{calc-keypad}). This means that the command is 776or @kbd{C-x * k} (@code{calc-keypad}). This means that the command is
777normally used by pressing the @kbd{p} key or @kbd{M-# k} key sequence, 777normally used by pressing the @kbd{p} key or @kbd{C-x * k} key sequence,
778but it also has the full-name equivalent shown, e.g., @kbd{M-x calc-precision}. 778but it also has the full-name equivalent shown, e.g., @kbd{M-x calc-precision}.
779 779
780Commands that correspond to functions in algebraic notation 780Commands that correspond to functions in algebraic notation
@@ -797,7 +797,7 @@ everything you see here will be covered more thoroughly in the
797Tutorial. 797Tutorial.
798 798
799To begin, start Emacs if necessary (usually the command @code{emacs} 799To begin, start Emacs if necessary (usually the command @code{emacs}
800does this), and type @kbd{M-# c} (or @kbd{@key{ESC} # c}) to start the 800does this), and type @kbd{C-x * c} to start the
801Calculator. (You can also use @kbd{M-x calc} if this doesn't work. 801Calculator. (You can also use @kbd{M-x calc} if this doesn't work.
802@xref{Starting Calc}, for various ways of starting the Calculator.) 802@xref{Starting Calc}, for various ways of starting the Calculator.)
803 803
@@ -849,7 +849,7 @@ Type @kbd{' arcsinh($ - $$) @key{RET}} to subtract the second-most-recent
849result from the most-recent and compute the Inverse Hyperbolic sine. 849result from the most-recent and compute the Inverse Hyperbolic sine.
850 850
851@strong{Keypad mode.} If you are using the X window system, press 851@strong{Keypad mode.} If you are using the X window system, press
852@w{@kbd{M-# k}} to get Keypad mode. (If you don't use X, skip to 852@w{@kbd{C-x * k}} to get Keypad mode. (If you don't use X, skip to
853the next section.) 853the next section.)
854 854
855@noindent 855@noindent
@@ -869,12 +869,12 @@ Click on @key{-}, @key{INV}, @key{HYP}, and @key{SIN}.
869Click on @key{<-} to erase the result, then click @key{OFF} to turn 869Click on @key{<-} to erase the result, then click @key{OFF} to turn
870the Keypad Calculator off. 870the Keypad Calculator off.
871 871
872@strong{Grabbing data.} Type @kbd{M-# x} if necessary to exit Calc. 872@strong{Grabbing data.} Type @kbd{C-x * x} if necessary to exit Calc.
873Now select the following numbers as an Emacs region: ``Mark'' the 873Now select the following numbers as an Emacs region: ``Mark'' the
874front of the list by typing @kbd{C-@key{SPC}} or @kbd{C-@@} there, 874front of the list by typing @kbd{C-@key{SPC}} or @kbd{C-@@} there,
875then move to the other end of the list. (Either get this list from 875then move to the other end of the list. (Either get this list from
876the on-line copy of this manual, accessed by @w{@kbd{M-# i}}, or just 876the on-line copy of this manual, accessed by @w{@kbd{C-x * i}}, or just
877type these numbers into a scratch file.) Now type @kbd{M-# g} to 877type these numbers into a scratch file.) Now type @kbd{C-x * g} to
878``grab'' these numbers into Calc. 878``grab'' these numbers into Calc.
879 879
880@example 880@example
@@ -896,7 +896,7 @@ the product of the numbers.
896@noindent 896@noindent
897You can also grab data as a rectangular matrix. Place the cursor on 897You can also grab data as a rectangular matrix. Place the cursor on
898the upper-leftmost @samp{1} and set the mark, then move to just after 898the upper-leftmost @samp{1} and set the mark, then move to just after
899the lower-right @samp{8} and press @kbd{M-# r}. 899the lower-right @samp{8} and press @kbd{C-x * r}.
900 900
901@noindent 901@noindent
902Type @kbd{v t} to transpose this 902Type @kbd{v t} to transpose this
@@ -908,7 +908,7 @@ matrix into a
908matrix. Type @w{@kbd{v u}} to unpack the rows into two separate 908matrix. Type @w{@kbd{v u}} to unpack the rows into two separate
909vectors. Now type @w{@kbd{V R + @key{TAB} V R +}} to compute the sums 909vectors. Now type @w{@kbd{V R + @key{TAB} V R +}} to compute the sums
910of the two original columns. (There is also a special 910of the two original columns. (There is also a special
911grab-and-sum-columns command, @kbd{M-# :}.) 911grab-and-sum-columns command, @kbd{C-x * :}.)
912 912
913@strong{Units conversion.} Units are entered algebraically. 913@strong{Units conversion.} Units are entered algebraically.
914Type @w{@kbd{' 43 mi/hr @key{RET}}} to enter the quantity 43 miles-per-hour. 914Type @w{@kbd{' 43 mi/hr @key{RET}}} to enter the quantity 43 miles-per-hour.
@@ -939,21 +939,21 @@ Type @kbd{7.5}, then @kbd{s l a @key{RET}} to let @expr{a = 7.5} in these formul
939 939
940@iftex 940@iftex
941@strong{Help functions.} You can read about any command in the on-line 941@strong{Help functions.} You can read about any command in the on-line
942manual. Type @kbd{M-# c} to return to Calc after each of these 942manual. Type @kbd{C-x * c} to return to Calc after each of these
943commands: @kbd{h k t N} to read about the @kbd{t N} command, 943commands: @kbd{h k t N} to read about the @kbd{t N} command,
944@kbd{h f sqrt @key{RET}} to read about the @code{sqrt} function, and 944@kbd{h f sqrt @key{RET}} to read about the @code{sqrt} function, and
945@kbd{h s} to read the Calc summary. 945@kbd{h s} to read the Calc summary.
946@end iftex 946@end iftex
947@ifinfo 947@ifinfo
948@strong{Help functions.} You can read about any command in the on-line 948@strong{Help functions.} You can read about any command in the on-line
949manual. Remember to type the letter @kbd{l}, then @kbd{M-# c}, to 949manual. Remember to type the letter @kbd{l}, then @kbd{C-x * c}, to
950return here after each of these commands: @w{@kbd{h k t N}} to read 950return here after each of these commands: @w{@kbd{h k t N}} to read
951about the @w{@kbd{t N}} command, @kbd{h f sqrt @key{RET}} to read about the 951about the @w{@kbd{t N}} command, @kbd{h f sqrt @key{RET}} to read about the
952@code{sqrt} function, and @kbd{h s} to read the Calc summary. 952@code{sqrt} function, and @kbd{h s} to read the Calc summary.
953@end ifinfo 953@end ifinfo
954 954
955Press @key{DEL} repeatedly to remove any leftover results from the stack. 955Press @key{DEL} repeatedly to remove any leftover results from the stack.
956To exit from Calc, press @kbd{q} or @kbd{M-# c} again. 956To exit from Calc, press @kbd{q} or @kbd{C-x * c} again.
957 957
958@node Using Calc, History and Acknowledgements, Demonstration of Calc, Getting Started 958@node Using Calc, History and Acknowledgements, Demonstration of Calc, Getting Started
959@section Using Calc 959@section Using Calc
@@ -970,54 +970,38 @@ there are Quick mode, Keypad mode, and Embedded mode.
970* Keypad Mode Overview:: 970* Keypad Mode Overview::
971* Standalone Operation:: 971* Standalone Operation::
972* Embedded Mode Overview:: 972* Embedded Mode Overview::
973* Other M-# Commands:: 973* Other C-x * Commands::
974@end menu 974@end menu
975 975
976@node Starting Calc, The Standard Interface, Using Calc, Using Calc 976@node Starting Calc, The Standard Interface, Using Calc, Using Calc
977@subsection Starting Calc 977@subsection Starting Calc
978 978
979@noindent 979@noindent
980On most systems, you can type @kbd{M-#} to start the Calculator. 980On most systems, you can type @kbd{C-x *} to start the Calculator.
981The notation @kbd{M-#} is short for Meta-@kbd{#}. On most 981The key sequence @kbd{C-x *} is bound to the command @code{calc-dispatch},
982keyboards this means holding down the Meta (or Alt) and 982which can be rebound if convenient (@pxref{Customizing Calc}).
983Shift keys while typing @kbd{3}.
984 983
985@cindex META key 984When you press @kbd{C-x *}, Emacs waits for you to press a second key to
986Once again, if you don't have a Meta key on your keyboard you can type 985complete the command. In this case, you will follow @kbd{C-x *} with a
987@key{ESC} first, then @kbd{#}, to accomplish the same thing. If you 986letter (upper- or lower-case, it doesn't matter for @kbd{C-x *}) that says
988don't even have an @key{ESC} key, you can fake it by holding down
989Control or @key{CTRL} while typing a left square bracket
990(that's @kbd{C-[} in Emacs notation).
991
992The key @kbd{M-#} is bound to the command @code{calc-dispatch},
993which can be rebound if convenient.
994(@xref{Key Bindings,,Customizing Key Bindings,emacs,
995The GNU Emacs Manual}.)
996
997When you press @kbd{M-#}, Emacs waits for you to press a second key to
998complete the command. In this case, you will follow @kbd{M-#} with a
999letter (upper- or lower-case, it doesn't matter for @kbd{M-#}) that says
1000which Calc interface you want to use. 987which Calc interface you want to use.
1001 988
1002To get Calc's standard interface, type @kbd{M-# c}. To get 989To get Calc's standard interface, type @kbd{C-x * c}. To get
1003Keypad mode, type @kbd{M-# k}. Type @kbd{M-# ?} to get a brief 990Keypad mode, type @kbd{C-x * k}. Type @kbd{C-x * ?} to get a brief
1004list of the available options, and type a second @kbd{?} to get 991list of the available options, and type a second @kbd{?} to get
1005a complete list. 992a complete list.
1006 993
1007To ease typing, @kbd{M-# M-#} (or @kbd{M-# #} if that's easier) 994To ease typing, @kbd{C-x * *} also works to start Calc. It starts the
1008also works to start Calc. It starts the same interface (either 995same interface (either @kbd{C-x * c} or @w{@kbd{C-x * k}}) that you last
1009@kbd{M-# c} or @w{@kbd{M-# k}}) that you last used, selecting the 996used, selecting the @kbd{C-x * c} interface by default.
1010@kbd{M-# c} interface by default. (If your installation has
1011a special function key set up to act like @kbd{M-#}, hitting that
1012function key twice is just like hitting @kbd{M-# M-#}.)
1013 997
1014If @kbd{M-#} doesn't work for you, you can always type explicit 998If @kbd{C-x *} doesn't work for you, you can always type explicit
1015commands like @kbd{M-x calc} (for the standard user interface) or 999commands like @kbd{M-x calc} (for the standard user interface) or
1016@w{@kbd{M-x calc-keypad}} (for Keypad mode). First type @kbd{M-x} 1000@w{@kbd{M-x calc-keypad}} (for Keypad mode). First type @kbd{M-x}
1017(that's Meta with the letter @kbd{x}), then, at the prompt, 1001(that's Meta with the letter @kbd{x}), then, at the prompt,
1018type the full command (like @kbd{calc-keypad}) and press Return. 1002type the full command (like @kbd{calc-keypad}) and press Return.
1019 1003
1020The same commands (like @kbd{M-# c} or @kbd{M-# M-#}) that start 1004The same commands (like @kbd{C-x * c} or @kbd{C-x * *}) that start
1021the Calculator also turn it off if it is already on. 1005the Calculator also turn it off if it is already on.
1022 1006
1023@node The Standard Interface, Quick Mode Overview, Starting Calc, Using Calc 1007@node The Standard Interface, Quick Mode Overview, Starting Calc, Using Calc
@@ -1026,7 +1010,7 @@ the Calculator also turn it off if it is already on.
1026@noindent 1010@noindent
1027@cindex Standard user interface 1011@cindex Standard user interface
1028Calc's standard interface acts like a traditional RPN calculator, 1012Calc's standard interface acts like a traditional RPN calculator,
1029operated by the normal Emacs keyboard. When you type @kbd{M-# c} 1013operated by the normal Emacs keyboard. When you type @kbd{C-x * c}
1030to start the Calculator, the Emacs screen splits into two windows 1014to start the Calculator, the Emacs screen splits into two windows
1031with the file you were editing on top and Calc on the bottom. 1015with the file you were editing on top and Calc on the bottom.
1032 1016
@@ -1082,55 +1066,55 @@ inside a regular window, Emacs acts just like normal. When the
1082cursor is in the Calc stack or trail windows, keys are interpreted 1066cursor is in the Calc stack or trail windows, keys are interpreted
1083as Calc commands. 1067as Calc commands.
1084 1068
1085When you quit by pressing @kbd{M-# c} a second time, the Calculator 1069When you quit by pressing @kbd{C-x * c} a second time, the Calculator
1086windows go away but the actual Stack and Trail are not gone, just 1070windows go away but the actual Stack and Trail are not gone, just
1087hidden. When you press @kbd{M-# c} once again you will get the 1071hidden. When you press @kbd{C-x * c} once again you will get the
1088same stack and trail contents you had when you last used the 1072same stack and trail contents you had when you last used the
1089Calculator. 1073Calculator.
1090 1074
1091The Calculator does not remember its state between Emacs sessions. 1075The Calculator does not remember its state between Emacs sessions.
1092Thus if you quit Emacs and start it again, @kbd{M-# c} will give you 1076Thus if you quit Emacs and start it again, @kbd{C-x * c} will give you
1093a fresh stack and trail. There is a command (@kbd{m m}) that lets 1077a fresh stack and trail. There is a command (@kbd{m m}) that lets
1094you save your favorite mode settings between sessions, though. 1078you save your favorite mode settings between sessions, though.
1095One of the things it saves is which user interface (standard or 1079One of the things it saves is which user interface (standard or
1096Keypad) you last used; otherwise, a freshly started Emacs will 1080Keypad) you last used; otherwise, a freshly started Emacs will
1097always treat @kbd{M-# M-#} the same as @kbd{M-# c}. 1081always treat @kbd{C-x * *} the same as @kbd{C-x * c}.
1098 1082
1099The @kbd{q} key is another equivalent way to turn the Calculator off. 1083The @kbd{q} key is another equivalent way to turn the Calculator off.
1100 1084
1101If you type @kbd{M-# b} first and then @kbd{M-# c}, you get a 1085If you type @kbd{C-x * b} first and then @kbd{C-x * c}, you get a
1102full-screen version of Calc (@code{full-calc}) in which the stack and 1086full-screen version of Calc (@code{full-calc}) in which the stack and
1103trail windows are still side-by-side but are now as tall as the whole 1087trail windows are still side-by-side but are now as tall as the whole
1104Emacs screen. When you press @kbd{q} or @kbd{M-# c} again to quit, 1088Emacs screen. When you press @kbd{q} or @kbd{C-x * c} again to quit,
1105the file you were editing before reappears. The @kbd{M-# b} key 1089the file you were editing before reappears. The @kbd{C-x * b} key
1106switches back and forth between ``big'' full-screen mode and the 1090switches back and forth between ``big'' full-screen mode and the
1107normal partial-screen mode. 1091normal partial-screen mode.
1108 1092
1109Finally, @kbd{M-# o} (@code{calc-other-window}) is like @kbd{M-# c} 1093Finally, @kbd{C-x * o} (@code{calc-other-window}) is like @kbd{C-x * c}
1110except that the Calc window is not selected. The buffer you were 1094except that the Calc window is not selected. The buffer you were
1111editing before remains selected instead. @kbd{M-# o} is a handy 1095editing before remains selected instead. @kbd{C-x * o} is a handy
1112way to switch out of Calc momentarily to edit your file; type 1096way to switch out of Calc momentarily to edit your file; type
1113@kbd{M-# c} to switch back into Calc when you are done. 1097@kbd{C-x * c} to switch back into Calc when you are done.
1114 1098
1115@node Quick Mode Overview, Keypad Mode Overview, The Standard Interface, Using Calc 1099@node Quick Mode Overview, Keypad Mode Overview, The Standard Interface, Using Calc
1116@subsection Quick Mode (Overview) 1100@subsection Quick Mode (Overview)
1117 1101
1118@noindent 1102@noindent
1119@dfn{Quick mode} is a quick way to use Calc when you don't need the 1103@dfn{Quick mode} is a quick way to use Calc when you don't need the
1120full complexity of the stack and trail. To use it, type @kbd{M-# q} 1104full complexity of the stack and trail. To use it, type @kbd{C-x * q}
1121(@code{quick-calc}) in any regular editing buffer. 1105(@code{quick-calc}) in any regular editing buffer.
1122 1106
1123Quick mode is very simple: It prompts you to type any formula in 1107Quick mode is very simple: It prompts you to type any formula in
1124standard algebraic notation (like @samp{4 - 2/3}) and then displays 1108standard algebraic notation (like @samp{4 - 2/3}) and then displays
1125the result at the bottom of the Emacs screen (@mathit{3.33333333333} 1109the result at the bottom of the Emacs screen (@mathit{3.33333333333}
1126in this case). You are then back in the same editing buffer you 1110in this case). You are then back in the same editing buffer you
1127were in before, ready to continue editing or to type @kbd{M-# q} 1111were in before, ready to continue editing or to type @kbd{C-x * q}
1128again to do another quick calculation. The result of the calculation 1112again to do another quick calculation. The result of the calculation
1129will also be in the Emacs ``kill ring'' so that a @kbd{C-y} command 1113will also be in the Emacs ``kill ring'' so that a @kbd{C-y} command
1130at this point will yank the result into your editing buffer. 1114at this point will yank the result into your editing buffer.
1131 1115
1132Calc mode settings affect Quick mode, too, though you will have to 1116Calc mode settings affect Quick mode, too, though you will have to
1133go into regular Calc (with @kbd{M-# c}) to change the mode settings. 1117go into regular Calc (with @kbd{C-x * c}) to change the mode settings.
1134 1118
1135@c [fix-ref Quick Calculator mode] 1119@c [fix-ref Quick Calculator mode]
1136@xref{Quick Calculator}, for further information. 1120@xref{Quick Calculator}, for further information.
@@ -1144,7 +1128,7 @@ It is designed for use with terminals that support a mouse. If you
1144don't have a mouse, you will have to operate Keypad mode with your 1128don't have a mouse, you will have to operate Keypad mode with your
1145arrow keys (which is probably more trouble than it's worth). 1129arrow keys (which is probably more trouble than it's worth).
1146 1130
1147Type @kbd{M-# k} to turn Keypad mode on or off. Once again you 1131Type @kbd{C-x * k} to turn Keypad mode on or off. Once again you
1148get two new windows, this time on the righthand side of the screen 1132get two new windows, this time on the righthand side of the screen
1149instead of at the bottom. The upper window is the familiar Calc 1133instead of at the bottom. The upper window is the familiar Calc
1150Stack; the lower window is a picture of a typical calculator keypad. 1134Stack; the lower window is a picture of a typical calculator keypad.
@@ -1206,7 +1190,7 @@ this buffer in the usual way while also clicking on the Calculator
1206keypad. One advantage of Keypad mode is that you don't need an 1190keypad. One advantage of Keypad mode is that you don't need an
1207explicit command to switch between editing and calculating. 1191explicit command to switch between editing and calculating.
1208 1192
1209If you press @kbd{M-# b} first, you get a full-screen Keypad mode 1193If you press @kbd{C-x * b} first, you get a full-screen Keypad mode
1210(@code{full-calc-keypad}) with three windows: The keypad in the lower 1194(@code{full-calc-keypad}) with three windows: The keypad in the lower
1211left, the stack in the lower right, and the trail on top. 1195left, the stack in the lower right, and the trail on top.
1212 1196
@@ -1234,13 +1218,13 @@ emacs -f full-calc-keypad
1234@end example 1218@end example
1235 1219
1236@noindent 1220@noindent
1237which run a full-screen Calculator (as if by @kbd{M-# b M-# c}) or 1221which run a full-screen Calculator (as if by @kbd{C-x * b C-x * c}) or
1238a full-screen X-based Calculator (as if by @kbd{M-# b M-# k}). 1222a full-screen X-based Calculator (as if by @kbd{C-x * b C-x * k}).
1239In standalone operation, quitting the Calculator (by pressing 1223In standalone operation, quitting the Calculator (by pressing
1240@kbd{q} or clicking on the keypad @key{EXIT} button) quits Emacs 1224@kbd{q} or clicking on the keypad @key{EXIT} button) quits Emacs
1241itself. 1225itself.
1242 1226
1243@node Embedded Mode Overview, Other M-# Commands, Standalone Operation, Using Calc 1227@node Embedded Mode Overview, Other C-x * Commands, Standalone Operation, Using Calc
1244@subsection Embedded Mode (Overview) 1228@subsection Embedded Mode (Overview)
1245 1229
1246@noindent 1230@noindent
@@ -1276,7 +1260,7 @@ is
1276@end group 1260@end group
1277@end smallexample 1261@end smallexample
1278 1262
1279Now, move the cursor onto this new formula and press @kbd{M-# e}. 1263Now, move the cursor onto this new formula and press @kbd{C-x * e}.
1280Calc will read the formula (using the surrounding blank lines to 1264Calc will read the formula (using the surrounding blank lines to
1281tell how much text to read), then push this formula (invisibly) 1265tell how much text to read), then push this formula (invisibly)
1282onto the Calc stack. The cursor will stay on the formula in the 1266onto the Calc stack. The cursor will stay on the formula in the
@@ -1340,10 +1324,10 @@ righthand label: Type @kbd{d @} (1) @key{RET}}.
1340@end group 1324@end group
1341@end smallexample 1325@end smallexample
1342 1326
1343To leave Embedded mode, type @kbd{M-# e} again. The mode line 1327To leave Embedded mode, type @kbd{C-x * e} again. The mode line
1344and keyboard will revert to the way they were before. 1328and keyboard will revert to the way they were before.
1345 1329
1346The related command @kbd{M-# w} operates on a single word, which 1330The related command @kbd{C-x * w} operates on a single word, which
1347generally means a single number, inside text. It uses any 1331generally means a single number, inside text. It uses any
1348non-numeric characters rather than blank lines to delimit the 1332non-numeric characters rather than blank lines to delimit the
1349formula it reads. Here's an example of its use: 1333formula it reads. Here's an example of its use:
@@ -1352,10 +1336,10 @@ formula it reads. Here's an example of its use:
1352A slope of one-third corresponds to an angle of 1 degrees. 1336A slope of one-third corresponds to an angle of 1 degrees.
1353@end smallexample 1337@end smallexample
1354 1338
1355Place the cursor on the @samp{1}, then type @kbd{M-# w} to enable 1339Place the cursor on the @samp{1}, then type @kbd{C-x * w} to enable
1356Embedded mode on that number. Now type @kbd{3 /} (to get one-third), 1340Embedded mode on that number. Now type @kbd{3 /} (to get one-third),
1357and @kbd{I T} (the Inverse Tangent converts a slope into an angle), 1341and @kbd{I T} (the Inverse Tangent converts a slope into an angle),
1358then @w{@kbd{M-# w}} again to exit Embedded mode. 1342then @w{@kbd{C-x * w}} again to exit Embedded mode.
1359 1343
1360@smallexample 1344@smallexample
1361A slope of one-third corresponds to an angle of 18.4349488229 degrees. 1345A slope of one-third corresponds to an angle of 18.4349488229 degrees.
@@ -1364,48 +1348,51 @@ A slope of one-third corresponds to an angle of 18.4349488229 degrees.
1364@c [fix-ref Embedded Mode] 1348@c [fix-ref Embedded Mode]
1365@xref{Embedded Mode}, for full details. 1349@xref{Embedded Mode}, for full details.
1366 1350
1367@node Other M-# Commands, , Embedded Mode Overview, Using Calc 1351@node Other C-x * Commands, , Embedded Mode Overview, Using Calc
1368@subsection Other @kbd{M-#} Commands 1352@subsection Other @kbd{C-x *} Commands
1369 1353
1370@noindent 1354@noindent
1371Two more Calc-related commands are @kbd{M-# g} and @kbd{M-# r}, 1355Two more Calc-related commands are @kbd{C-x * g} and @kbd{C-x * r},
1372which ``grab'' data from a selected region of a buffer into the 1356which ``grab'' data from a selected region of a buffer into the
1373Calculator. The region is defined in the usual Emacs way, by 1357Calculator. The region is defined in the usual Emacs way, by
1374a ``mark'' placed at one end of the region, and the Emacs 1358a ``mark'' placed at one end of the region, and the Emacs
1375cursor or ``point'' placed at the other. 1359cursor or ``point'' placed at the other.
1376 1360
1377The @kbd{M-# g} command reads the region in the usual left-to-right, 1361The @kbd{C-x * g} command reads the region in the usual left-to-right,
1378top-to-bottom order. The result is packaged into a Calc vector 1362top-to-bottom order. The result is packaged into a Calc vector
1379of numbers and placed on the stack. Calc (in its standard 1363of numbers and placed on the stack. Calc (in its standard
1380user interface) is then started. Type @kbd{v u} if you want 1364user interface) is then started. Type @kbd{v u} if you want
1381to unpack this vector into separate numbers on the stack. Also, 1365to unpack this vector into separate numbers on the stack. Also,
1382@kbd{C-u M-# g} interprets the region as a single number or 1366@kbd{C-u C-x * g} interprets the region as a single number or
1383formula. 1367formula.
1384 1368
1385The @kbd{M-# r} command reads a rectangle, with the point and 1369The @kbd{C-x * r} command reads a rectangle, with the point and
1386mark defining opposite corners of the rectangle. The result 1370mark defining opposite corners of the rectangle. The result
1387is a matrix of numbers on the Calculator stack. 1371is a matrix of numbers on the Calculator stack.
1388 1372
1389Complementary to these is @kbd{M-# y}, which ``yanks'' the 1373Complementary to these is @kbd{C-x * y}, which ``yanks'' the
1390value at the top of the Calc stack back into an editing buffer. 1374value at the top of the Calc stack back into an editing buffer.
1391If you type @w{@kbd{M-# y}} while in such a buffer, the value is 1375If you type @w{@kbd{C-x * y}} while in such a buffer, the value is
1392yanked at the current position. If you type @kbd{M-# y} while 1376yanked at the current position. If you type @kbd{C-x * y} while
1393in the Calc buffer, Calc makes an educated guess as to which 1377in the Calc buffer, Calc makes an educated guess as to which
1394editing buffer you want to use. The Calc window does not have 1378editing buffer you want to use. The Calc window does not have
1395to be visible in order to use this command, as long as there 1379to be visible in order to use this command, as long as there
1396is something on the Calc stack. 1380is something on the Calc stack.
1397 1381
1398Here, for reference, is the complete list of @kbd{M-#} commands. 1382Here, for reference, is the complete list of @kbd{C-x *} commands.
1399The shift, control, and meta keys are ignored for the keystroke 1383The shift, control, and meta keys are ignored for the keystroke
1400following @kbd{M-#}. 1384following @kbd{C-x *}.
1401 1385
1402@noindent 1386@noindent
1403Commands for turning Calc on and off: 1387Commands for turning Calc on and off:
1404 1388
1405@table @kbd 1389@table @kbd
1406@item # 1390@item *
1407Turn Calc on or off, employing the same user interface as last time. 1391Turn Calc on or off, employing the same user interface as last time.
1408 1392
1393@item =, +, -, /, \, &, #
1394Alternatives for @kbd{*}.
1395
1409@item C 1396@item C
1410Turn Calc on or off using its standard bottom-of-the-screen 1397Turn Calc on or off using its standard bottom-of-the-screen
1411interface. If Calc is already turned on but the cursor is not 1398interface. If Calc is already turned on but the cursor is not
@@ -1417,7 +1404,7 @@ Calc is already turned on and the cursor is in the Calc window,
1417move it out of that window. 1404move it out of that window.
1418 1405
1419@item B 1406@item B
1420Control whether @kbd{M-# c} and @kbd{M-# k} use the full screen. 1407Control whether @kbd{C-x * c} and @kbd{C-x * k} use the full screen.
1421 1408
1422@item Q 1409@item Q
1423Use Quick mode for a single short calculation. 1410Use Quick mode for a single short calculation.
@@ -1628,7 +1615,7 @@ finished in two weeks.
1628@c [tutorial] 1615@c [tutorial]
1629 1616
1630@ifinfo 1617@ifinfo
1631@c This node is accessed by the `M-# t' command. 1618@c This node is accessed by the `C-x * t' command.
1632@node Interactive Tutorial, , , Top 1619@node Interactive Tutorial, , , Top
1633@chapter Tutorial 1620@chapter Tutorial
1634 1621
@@ -1682,16 +1669,16 @@ the Embedded mode interface.
1682The easiest way to read this tutorial on-line is to have two windows on 1669The easiest way to read this tutorial on-line is to have two windows on
1683your Emacs screen, one with Calc and one with the Info system. (If you 1670your Emacs screen, one with Calc and one with the Info system. (If you
1684have a printed copy of the manual you can use that instead.) Press 1671have a printed copy of the manual you can use that instead.) Press
1685@kbd{M-# c} to turn Calc on or to switch into the Calc window, and 1672@kbd{C-x * c} to turn Calc on or to switch into the Calc window, and
1686press @kbd{M-# i} to start the Info system or to switch into its window. 1673press @kbd{C-x * i} to start the Info system or to switch into its window.
1687Or, you may prefer to use the tutorial in printed form. 1674Or, you may prefer to use the tutorial in printed form.
1688@end ifinfo 1675@end ifinfo
1689@iftex 1676@iftex
1690The easiest way to read this tutorial on-line is to have two windows on 1677The easiest way to read this tutorial on-line is to have two windows on
1691your Emacs screen, one with Calc and one with the Info system. (If you 1678your Emacs screen, one with Calc and one with the Info system. (If you
1692have a printed copy of the manual you can use that instead.) Press 1679have a printed copy of the manual you can use that instead.) Press
1693@kbd{M-# c} to turn Calc on or to switch into the Calc window, and 1680@kbd{C-x * c} to turn Calc on or to switch into the Calc window, and
1694press @kbd{M-# i} to start the Info system or to switch into its window. 1681press @kbd{C-x * i} to start the Info system or to switch into its window.
1695@end iftex 1682@end iftex
1696 1683
1697This tutorial is designed to be done in sequence. But the rest of this 1684This tutorial is designed to be done in sequence. But the rest of this
@@ -1772,8 +1759,8 @@ number of operands from the stack and pushes back the result.
1772Thus we could add the numbers 2 and 3 in an RPN calculator by typing: 1759Thus we could add the numbers 2 and 3 in an RPN calculator by typing:
1773@kbd{2 @key{RET} 3 @key{RET} +}. (The @key{RET} key, Return, corresponds to 1760@kbd{2 @key{RET} 3 @key{RET} +}. (The @key{RET} key, Return, corresponds to
1774the @key{ENTER} key on traditional RPN calculators.) Try this now if 1761the @key{ENTER} key on traditional RPN calculators.) Try this now if
1775you wish; type @kbd{M-# c} to switch into the Calc window (you can type 1762you wish; type @kbd{C-x * c} to switch into the Calc window (you can type
1776@kbd{M-# c} again or @kbd{M-# o} to switch back to the Tutorial window). 1763@kbd{C-x * c} again or @kbd{C-x * o} to switch back to the Tutorial window).
1777The first four keystrokes ``push'' the numbers 2 and 3 onto the stack. 1764The first four keystrokes ``push'' the numbers 2 and 3 onto the stack.
1778The @kbd{+} key ``pops'' the top two numbers from the stack, adds them, 1765The @kbd{+} key ``pops'' the top two numbers from the stack, adds them,
1779and pushes the result (5) back onto the stack. Here's how the stack 1766and pushes the result (5) back onto the stack. Here's how the stack
@@ -1785,7 +1772,7 @@ will look at various points throughout the calculation:
1785 . 1: 3 . 1772 . 1: 3 .
1786 . 1773 .
1787 1774
1788 M-# c 2 @key{RET} 3 @key{RET} + @key{DEL} 1775 C-x * c 2 @key{RET} 3 @key{RET} + @key{DEL}
1789@end group 1776@end group
1790@end smallexample 1777@end smallexample
1791 1778
@@ -2434,7 +2421,7 @@ when we discuss the algebra and calculus features of the Calculator.
2434@noindent 2421@noindent
2435If you make a mistake, you can usually correct it by pressing shift-@kbd{U}, 2422If you make a mistake, you can usually correct it by pressing shift-@kbd{U},
2436the ``undo'' command. First, clear the stack (@kbd{M-0 @key{DEL}}) and exit 2423the ``undo'' command. First, clear the stack (@kbd{M-0 @key{DEL}}) and exit
2437and restart Calc (@kbd{M-# M-# M-# M-#}) to make sure things start off 2424and restart Calc (@kbd{C-x * * C-x * *}) to make sure things start off
2438with a clean slate. Now: 2425with a clean slate. Now:
2439 2426
2440@smallexample 2427@smallexample
@@ -4093,7 +4080,7 @@ of values in a file we have loaded into Emacs:
4093 4080
4094@noindent 4081@noindent
4095If you are reading this tutorial in printed form, you will find it 4082If you are reading this tutorial in printed form, you will find it
4096easiest to press @kbd{M-# i} to enter the on-line Info version of 4083easiest to press @kbd{C-x * i} to enter the on-line Info version of
4097the manual and find this table there. (Press @kbd{g}, then type 4084the manual and find this table there. (Press @kbd{g}, then type
4098@kbd{List Tutorial}, to jump straight to this section.) 4085@kbd{List Tutorial}, to jump straight to this section.)
4099 4086
@@ -4102,7 +4089,7 @@ to the left of the @expr{1.34}. Press @kbd{C-@@} to set the mark.
4102(On your system this may be @kbd{C-2}, @kbd{C-@key{SPC}}, or @kbd{NUL}.) 4089(On your system this may be @kbd{C-2}, @kbd{C-@key{SPC}}, or @kbd{NUL}.)
4103Now position the cursor to the lower-right, just after the @expr{1.354}. 4090Now position the cursor to the lower-right, just after the @expr{1.354}.
4104You have now defined this region as an Emacs ``rectangle.'' Still 4091You have now defined this region as an Emacs ``rectangle.'' Still
4105in the Info buffer, type @kbd{M-# r}. This command 4092in the Info buffer, type @kbd{C-x * r}. This command
4106(@code{calc-grab-rectangle}) will pop you back into the Calculator, with 4093(@code{calc-grab-rectangle}) will pop you back into the Calculator, with
4107the contents of the rectangle you specified in the form of a matrix. 4094the contents of the rectangle you specified in the form of a matrix.
4108 4095
@@ -4372,7 +4359,7 @@ to solve for @expr{m} and @expr{b}, duplicating the above result.
4372 4359
4373@cindex Geometric mean 4360@cindex Geometric mean
4374(@bullet{}) @strong{Exercise 3.} If the input data do not form a 4361(@bullet{}) @strong{Exercise 3.} If the input data do not form a
4375rectangle, you can use @w{@kbd{M-# g}} (@code{calc-grab-region}) 4362rectangle, you can use @w{@kbd{C-x * g}} (@code{calc-grab-region})
4376to grab the data the way Emacs normally works with regions---it reads 4363to grab the data the way Emacs normally works with regions---it reads
4377left-to-right, top-to-bottom, treating line breaks the same as spaces. 4364left-to-right, top-to-bottom, treating line breaks the same as spaces.
4378Use this command to find the geometric mean of the following numbers. 4365Use this command to find the geometric mean of the following numbers.
@@ -4385,7 +4372,7 @@ Use this command to find the geometric mean of the following numbers.
4385@end example 4372@end example
4386 4373
4387@noindent 4374@noindent
4388The @kbd{M-# g} command accepts numbers separated by spaces or commas, 4375The @kbd{C-x * g} command accepts numbers separated by spaces or commas,
4389with or without surrounding vector brackets. 4376with or without surrounding vector brackets.
4390@xref{List Answer 3, 3}. (@bullet{}) 4377@xref{List Answer 3, 3}. (@bullet{})
4391 4378
@@ -5120,7 +5107,7 @@ numbers are in which units:
5120@end smallexample 5107@end smallexample
5121 5108
5122To see a complete list of built-in units, type @kbd{u v}. Press 5109To see a complete list of built-in units, type @kbd{u v}. Press
5123@w{@kbd{M-# c}} again to re-enter the Calculator when you're done looking 5110@w{@kbd{C-x * c}} again to re-enter the Calculator when you're done looking
5124at the units table. 5111at the units table.
5125 5112
5126(@bullet{}) @strong{Exercise 13.} How many seconds are there really 5113(@bullet{}) @strong{Exercise 13.} How many seconds are there really
@@ -6586,9 +6573,9 @@ The @file{edmacro} package defines a handy @code{read-kbd-macro} command
6586which reads the current region of the current buffer as a sequence of 6573which reads the current region of the current buffer as a sequence of
6587keystroke names, and defines that sequence on the @kbd{X} 6574keystroke names, and defines that sequence on the @kbd{X}
6588(and @kbd{C-x e}) key. Because this is so useful, Calc puts this 6575(and @kbd{C-x e}) key. Because this is so useful, Calc puts this
6589command on the @kbd{M-# m} key. Try reading in this macro in the 6576command on the @kbd{C-x * m} key. Try reading in this macro in the
6590following form: Press @kbd{C-@@} (or @kbd{C-@key{SPC}}) at 6577following form: Press @kbd{C-@@} (or @kbd{C-@key{SPC}}) at
6591one end of the text below, then type @kbd{M-# m} at the other. 6578one end of the text below, then type @kbd{C-x * m} at the other.
6592 6579
6593@example 6580@example
6594@group 6581@group
@@ -6738,7 +6725,7 @@ it to a key with, e.g., @kbd{Z K s}. Now enter the true definition,
6738using the @kbd{z s} command to call itself recursively, then assign it 6725using the @kbd{z s} command to call itself recursively, then assign it
6739to the same key with @kbd{Z K s}. Now the @kbd{z s} command will run 6726to the same key with @kbd{Z K s}. Now the @kbd{z s} command will run
6740the complete recursive program. (Another way is to use @w{@kbd{Z E}} 6727the complete recursive program. (Another way is to use @w{@kbd{Z E}}
6741or @kbd{M-# m} (@code{read-kbd-macro}) to read the whole macro at once, 6728or @kbd{C-x * m} (@code{read-kbd-macro}) to read the whole macro at once,
6742thus avoiding the ``training'' phase.) The task: Write a program 6729thus avoiding the ``training'' phase.) The task: Write a program
6743that computes Stirling numbers of the first kind, given @expr{n} and 6730that computes Stirling numbers of the first kind, given @expr{n} and
6744@expr{m} on the stack. Test it with @emph{small} inputs like 6731@expr{m} on the stack. Test it with @emph{small} inputs like
@@ -7530,7 +7517,7 @@ fits. @xref{Curve Fitting}.
7530@noindent 7517@noindent
7531Move to one end of the list and press @kbd{C-@@} (or @kbd{C-@key{SPC}} or 7518Move to one end of the list and press @kbd{C-@@} (or @kbd{C-@key{SPC}} or
7532whatever) to set the mark, then move to the other end of the list 7519whatever) to set the mark, then move to the other end of the list
7533and type @w{@kbd{M-# g}}. 7520and type @w{@kbd{C-x * g}}.
7534 7521
7535@smallexample 7522@smallexample
7536@group 7523@group
@@ -9525,7 +9512,7 @@ the formula
9525@infoline @expr{x - f(x)/f'(x)}. 9512@infoline @expr{x - f(x)/f'(x)}.
9526 9513
9527(Because this definition is long, it will be repeated in concise form 9514(Because this definition is long, it will be repeated in concise form
9528below. You can use @w{@kbd{M-# m}} to load it from there. While you are 9515below. You can use @w{@kbd{C-x * m}} to load it from there. While you are
9529entering a @kbd{Z ` Z '} body in a macro, Calc simply collects 9516entering a @kbd{Z ` Z '} body in a macro, Calc simply collects
9530keystrokes without executing them. In the following diagrams we'll 9517keystrokes without executing them. In the following diagrams we'll
9531pretend Calc actually executed the keystrokes as you typed them, 9518pretend Calc actually executed the keystrokes as you typed them,
@@ -9647,7 +9634,7 @@ and remember to add back a factor of @expr{-1/z} when we're done. This
9647step is repeated until @expr{z > 5}. 9634step is repeated until @expr{z > 5}.
9648 9635
9649(Because this definition is long, it will be repeated in concise form 9636(Because this definition is long, it will be repeated in concise form
9650below. You can use @w{@kbd{M-# m}} to load it from there. While you are 9637below. You can use @w{@kbd{C-x * m}} to load it from there. While you are
9651entering a @kbd{Z ` Z '} body in a macro, Calc simply collects 9638entering a @kbd{Z ` Z '} body in a macro, Calc simply collects
9652keystrokes without executing them. In the following diagrams we'll 9639keystrokes without executing them. In the following diagrams we'll
9653pretend Calc actually executed the keystrokes as you typed them, 9640pretend Calc actually executed the keystrokes as you typed them,
@@ -9768,7 +9755,7 @@ derivative of a polynomial, evaluated at @expr{x = 0}, will equal the
9768coefficient on the @expr{x^n} term times @expr{n!}. 9755coefficient on the @expr{x^n} term times @expr{n!}.
9769 9756
9770(Because this definition is long, it will be repeated in concise form 9757(Because this definition is long, it will be repeated in concise form
9771below. You can use @w{@kbd{M-# m}} to load it from there. While you are 9758below. You can use @w{@kbd{C-x * m}} to load it from there. While you are
9772entering a @kbd{Z ` Z '} body in a macro, Calc simply collects 9759entering a @kbd{Z ` Z '} body in a macro, Calc simply collects
9773keystrokes without executing them. In the following diagrams we'll 9760keystrokes without executing them. In the following diagrams we'll
9774pretend Calc actually executed the keystrokes as you typed them, 9761pretend Calc actually executed the keystrokes as you typed them,
@@ -9877,7 +9864,7 @@ definition. The recurrence needs to be rewritten slightly,
9877to the form @expr{s(n,m) = s(n-1,m-1) - (n-1) s(n-1,m)}. 9864to the form @expr{s(n,m) = s(n-1,m-1) - (n-1) s(n-1,m)}.
9878 9865
9879(Because this definition is long, it will be repeated in concise form 9866(Because this definition is long, it will be repeated in concise form
9880below. You can use @kbd{M-# m} to load it from there.) 9867below. You can use @kbd{C-x * m} to load it from there.)
9881 9868
9882@smallexample 9869@smallexample
9883@group 9870@group
@@ -9951,10 +9938,10 @@ C-x )
9951@end group 9938@end group
9952@end example 9939@end example
9953 9940
9954You can read this definition using @kbd{M-# m} (@code{read-kbd-macro}) 9941You can read this definition using @kbd{C-x * m} (@code{read-kbd-macro})
9955followed by @kbd{Z K s}, without having to make a dummy definition 9942followed by @kbd{Z K s}, without having to make a dummy definition
9956first, because @code{read-kbd-macro} doesn't need to execute the 9943first, because @code{read-kbd-macro} doesn't need to execute the
9957definition as it reads it in. For this reason, @code{M-# m} is often 9944definition as it reads it in. For this reason, @code{C-x * m} is often
9958the easiest way to create recursive programs in Calc. 9945the easiest way to create recursive programs in Calc.
9959 9946
9960@node Programming Answer 12, , Programming Answer 11, Answers to Exercises 9947@node Programming Answer 12, , Programming Answer 11, Answers to Exercises
@@ -10044,15 +10031,14 @@ still work when the trail buffer's window is selected. It is possible
10044to turn the trail window off, but the @samp{*Calc Trail*} buffer itself 10031to turn the trail window off, but the @samp{*Calc Trail*} buffer itself
10045still exists and is updated silently. @xref{Trail Commands}. 10032still exists and is updated silently. @xref{Trail Commands}.
10046 10033
10047@kindex M-# c 10034@kindex C-x * c
10048@kindex M-# M-# 10035@kindex C-x * *
10049@ignore 10036@ignore
10050@mindex @null 10037@mindex @null
10051@end ignore 10038@end ignore
10052@kindex M-# # 10039In most installations, the @kbd{C-x * c} key sequence is a more
10053In most installations, the @kbd{M-# c} key sequence is a more 10040convenient way to start the Calculator. Also, @kbd{C-x * *}
10054convenient way to start the Calculator. Also, @kbd{M-# M-#} and 10041is a synonym for @kbd{C-x * c} unless you last used Calc
10055@kbd{M-# #} are synonyms for @kbd{M-# c} unless you last used Calc
10056in its Keypad mode. 10042in its Keypad mode.
10057 10043
10058@kindex x 10044@kindex x
@@ -10068,7 +10054,7 @@ for you. For example, the following key sequences are equivalent:
10068 10054
10069@cindex Extensions module 10055@cindex Extensions module
10070@cindex @file{calc-ext} module 10056@cindex @file{calc-ext} module
10071The Calculator exists in many parts. When you type @kbd{M-# c}, the 10057The Calculator exists in many parts. When you type @kbd{C-x * c}, the
10072Emacs ``auto-load'' mechanism will bring in only the first part, which 10058Emacs ``auto-load'' mechanism will bring in only the first part, which
10073contains the basic arithmetic functions. The other parts will be 10059contains the basic arithmetic functions. The other parts will be
10074auto-loaded the first time you use the more advanced commands like trig 10060auto-loaded the first time you use the more advanced commands like trig
@@ -10076,48 +10062,48 @@ functions or matrix operations. This is done to improve the response time
10076of the Calculator in the common case when all you need to do is a 10062of the Calculator in the common case when all you need to do is a
10077little arithmetic. If for some reason the Calculator fails to load an 10063little arithmetic. If for some reason the Calculator fails to load an
10078extension module automatically, you can force it to load all the 10064extension module automatically, you can force it to load all the
10079extensions by using the @kbd{M-# L} (@code{calc-load-everything}) 10065extensions by using the @kbd{C-x * L} (@code{calc-load-everything})
10080command. @xref{Mode Settings}. 10066command. @xref{Mode Settings}.
10081 10067
10082If you type @kbd{M-x calc} or @kbd{M-# c} with any numeric prefix argument, 10068If you type @kbd{M-x calc} or @kbd{C-x * c} with any numeric prefix argument,
10083the Calculator is loaded if necessary, but it is not actually started. 10069the Calculator is loaded if necessary, but it is not actually started.
10084If the argument is positive, the @file{calc-ext} extensions are also 10070If the argument is positive, the @file{calc-ext} extensions are also
10085loaded if necessary. User-written Lisp code that wishes to make use 10071loaded if necessary. User-written Lisp code that wishes to make use
10086of Calc's arithmetic routines can use @samp{(calc 0)} or @samp{(calc 1)} 10072of Calc's arithmetic routines can use @samp{(calc 0)} or @samp{(calc 1)}
10087to auto-load the Calculator. 10073to auto-load the Calculator.
10088 10074
10089@kindex M-# b 10075@kindex C-x * b
10090@pindex full-calc 10076@pindex full-calc
10091If you type @kbd{M-# b}, then next time you use @kbd{M-# c} you 10077If you type @kbd{C-x * b}, then next time you use @kbd{C-x * c} you
10092will get a Calculator that uses the full height of the Emacs screen. 10078will get a Calculator that uses the full height of the Emacs screen.
10093When full-screen mode is on, @kbd{M-# c} runs the @code{full-calc} 10079When full-screen mode is on, @kbd{C-x * c} runs the @code{full-calc}
10094command instead of @code{calc}. From the Unix shell you can type 10080command instead of @code{calc}. From the Unix shell you can type
10095@samp{emacs -f full-calc} to start a new Emacs specifically for use 10081@samp{emacs -f full-calc} to start a new Emacs specifically for use
10096as a calculator. When Calc is started from the Emacs command line 10082as a calculator. When Calc is started from the Emacs command line
10097like this, Calc's normal ``quit'' commands actually quit Emacs itself. 10083like this, Calc's normal ``quit'' commands actually quit Emacs itself.
10098 10084
10099@kindex M-# o 10085@kindex C-x * o
10100@pindex calc-other-window 10086@pindex calc-other-window
10101The @kbd{M-# o} command is like @kbd{M-# c} except that the Calc 10087The @kbd{C-x * o} command is like @kbd{C-x * c} except that the Calc
10102window is not actually selected. If you are already in the Calc 10088window is not actually selected. If you are already in the Calc
10103window, @kbd{M-# o} switches you out of it. (The regular Emacs 10089window, @kbd{C-x * o} switches you out of it. (The regular Emacs
10104@kbd{C-x o} command would also work for this, but it has a 10090@kbd{C-x o} command would also work for this, but it has a
10105tendency to drop you into the Calc Trail window instead, which 10091tendency to drop you into the Calc Trail window instead, which
10106@kbd{M-# o} takes care not to do.) 10092@kbd{C-x * o} takes care not to do.)
10107 10093
10108@ignore 10094@ignore
10109@mindex M-# q 10095@mindex C-x * q
10110@end ignore 10096@end ignore
10111For one quick calculation, you can type @kbd{M-# q} (@code{quick-calc}) 10097For one quick calculation, you can type @kbd{C-x * q} (@code{quick-calc})
10112which prompts you for a formula (like @samp{2+3/4}). The result is 10098which prompts you for a formula (like @samp{2+3/4}). The result is
10113displayed at the bottom of the Emacs screen without ever creating 10099displayed at the bottom of the Emacs screen without ever creating
10114any special Calculator windows. @xref{Quick Calculator}. 10100any special Calculator windows. @xref{Quick Calculator}.
10115 10101
10116@ignore 10102@ignore
10117@mindex M-# k 10103@mindex C-x * k
10118@end ignore 10104@end ignore
10119Finally, if you are using the X window system you may want to try 10105Finally, if you are using the X window system you may want to try
10120@kbd{M-# k} (@code{calc-keypad}) which runs Calc with a 10106@kbd{C-x * k} (@code{calc-keypad}) which runs Calc with a
10121``calculator keypad'' picture as well as a stack display. Click on 10107``calculator keypad'' picture as well as a stack display. Click on
10122the keys with the mouse to operate the calculator. @xref{Keypad Mode}. 10108the keys with the mouse to operate the calculator. @xref{Keypad Mode}.
10123 10109
@@ -10128,13 +10114,13 @@ the keys with the mouse to operate the calculator. @xref{Keypad Mode}.
10128The @kbd{q} key (@code{calc-quit}) exits Calc mode and closes the 10114The @kbd{q} key (@code{calc-quit}) exits Calc mode and closes the
10129Calculator's window(s). It does not delete the Calculator buffers. 10115Calculator's window(s). It does not delete the Calculator buffers.
10130If you type @kbd{M-x calc} again, the Calculator will reappear with the 10116If you type @kbd{M-x calc} again, the Calculator will reappear with the
10131contents of the stack intact. Typing @kbd{M-# c} or @kbd{M-# M-#} 10117contents of the stack intact. Typing @kbd{C-x * c} or @kbd{C-x * *}
10132again from inside the Calculator buffer is equivalent to executing 10118again from inside the Calculator buffer is equivalent to executing
10133@code{calc-quit}; you can think of @kbd{M-# M-#} as toggling the 10119@code{calc-quit}; you can think of @kbd{C-x * *} as toggling the
10134Calculator on and off. 10120Calculator on and off.
10135 10121
10136@kindex M-# x 10122@kindex C-x * x
10137The @kbd{M-# x} command also turns the Calculator off, no matter which 10123The @kbd{C-x * x} command also turns the Calculator off, no matter which
10138user interface (standard, Keypad, or Embedded) is currently active. 10124user interface (standard, Keypad, or Embedded) is currently active.
10139It also cancels @code{calc-edit} mode if used from there. 10125It also cancels @code{calc-edit} mode if used from there.
10140 10126
@@ -10174,18 +10160,18 @@ The @kbd{@{} and @kbd{@}} keys are bound to @code{calc-scroll-down}
10174and @code{calc-scroll-up}. They scroll up or down by one-half the 10160and @code{calc-scroll-up}. They scroll up or down by one-half the
10175height of the Calc window. 10161height of the Calc window.
10176 10162
10177@kindex M-# 0 10163@kindex C-x * 0
10178@pindex calc-reset 10164@pindex calc-reset
10179The @kbd{M-# 0} command (@code{calc-reset}; that's @kbd{M-#} followed 10165The @kbd{C-x * 0} command (@code{calc-reset}; that's @kbd{C-x *} followed
10180by a zero) resets the Calculator to its initial state. This clears 10166by a zero) resets the Calculator to its initial state. This clears
10181the stack, resets all the modes to their initial values (the values 10167the stack, resets all the modes to their initial values (the values
10182that were saved with @kbd{m m} (@code{calc-save-modes})), clears the 10168that were saved with @kbd{m m} (@code{calc-save-modes})), clears the
10183caches (@pxref{Caches}), and so on. (It does @emph{not} erase the 10169caches (@pxref{Caches}), and so on. (It does @emph{not} erase the
10184values of any variables.) With an argument of 0, Calc will be reset to 10170values of any variables.) With an argument of 0, Calc will be reset to
10185its default state; namely, the modes will be given their default values. 10171its default state; namely, the modes will be given their default values.
10186With a positive prefix argument, @kbd{M-# 0} preserves the contents of 10172With a positive prefix argument, @kbd{C-x * 0} preserves the contents of
10187the stack but resets everything else to its initial state; with a 10173the stack but resets everything else to its initial state; with a
10188negative prefix argument, @kbd{M-# 0} preserves the contents of the 10174negative prefix argument, @kbd{C-x * 0} preserves the contents of the
10189stack but resets everything else to its default state. 10175stack but resets everything else to its default state.
10190 10176
10191@pindex calc-version 10177@pindex calc-version
@@ -10219,21 +10205,21 @@ provide help within Calc. Many of the @kbd{h} key functions are
10219Calc-specific analogues to the @kbd{C-h} functions for Emacs help. 10205Calc-specific analogues to the @kbd{C-h} functions for Emacs help.
10220 10206
10221@kindex h i 10207@kindex h i
10222@kindex M-# i 10208@kindex C-x * i
10223@kindex i 10209@kindex i
10224@pindex calc-info 10210@pindex calc-info
10225The @kbd{h i} (@code{calc-info}) command runs the Emacs Info system 10211The @kbd{h i} (@code{calc-info}) command runs the Emacs Info system
10226to read this manual on-line. This is basically the same as typing 10212to read this manual on-line. This is basically the same as typing
10227@kbd{C-h i} (the regular way to run the Info system), then, if Info 10213@kbd{C-h i} (the regular way to run the Info system), then, if Info
10228is not already in the Calc manual, selecting the beginning of the 10214is not already in the Calc manual, selecting the beginning of the
10229manual. The @kbd{M-# i} command is another way to read the Calc 10215manual. The @kbd{C-x * i} command is another way to read the Calc
10230manual; it is different from @kbd{h i} in that it works any time, 10216manual; it is different from @kbd{h i} in that it works any time,
10231not just inside Calc. The plain @kbd{i} key is also equivalent to 10217not just inside Calc. The plain @kbd{i} key is also equivalent to
10232@kbd{h i}, though this key is obsolete and may be replaced with a 10218@kbd{h i}, though this key is obsolete and may be replaced with a
10233different command in a future version of Calc. 10219different command in a future version of Calc.
10234 10220
10235@kindex h t 10221@kindex h t
10236@kindex M-# t 10222@kindex C-x * t
10237@pindex calc-tutorial 10223@pindex calc-tutorial
10238The @kbd{h t} (@code{calc-tutorial}) command runs the Info system on 10224The @kbd{h t} (@code{calc-tutorial}) command runs the Info system on
10239the Tutorial section of the Calc manual. It is like @kbd{h i}, 10225the Tutorial section of the Calc manual. It is like @kbd{h i},
@@ -10241,14 +10227,14 @@ except that it selects the starting node of the tutorial rather
10241than the beginning of the whole manual. (It actually selects the 10227than the beginning of the whole manual. (It actually selects the
10242node ``Interactive Tutorial'' which tells a few things about 10228node ``Interactive Tutorial'' which tells a few things about
10243using the Info system before going on to the actual tutorial.) 10229using the Info system before going on to the actual tutorial.)
10244The @kbd{M-# t} key is equivalent to @kbd{h t} (but it works at 10230The @kbd{C-x * t} key is equivalent to @kbd{h t} (but it works at
10245all times). 10231all times).
10246 10232
10247@kindex h s 10233@kindex h s
10248@kindex M-# s 10234@kindex C-x * s
10249@pindex calc-info-summary 10235@pindex calc-info-summary
10250The @kbd{h s} (@code{calc-info-summary}) command runs the Info system 10236The @kbd{h s} (@code{calc-info-summary}) command runs the Info system
10251on the Summary node of the Calc manual. @xref{Summary}. The @kbd{M-# s} 10237on the Summary node of the Calc manual. @xref{Summary}. The @kbd{C-x * s}
10252key is equivalent to @kbd{h s}. 10238key is equivalent to @kbd{h s}.
10253 10239
10254@kindex h k 10240@kindex h k
@@ -10526,11 +10512,11 @@ you might then press @kbd{=} when it is time to evaluate this formula.
10526@section ``Quick Calculator'' Mode 10512@section ``Quick Calculator'' Mode
10527 10513
10528@noindent 10514@noindent
10529@kindex M-# q 10515@kindex C-x * q
10530@pindex quick-calc 10516@pindex quick-calc
10531@cindex Quick Calculator 10517@cindex Quick Calculator
10532There is another way to invoke the Calculator if all you need to do 10518There is another way to invoke the Calculator if all you need to do
10533is make one or two quick calculations. Type @kbd{M-# q} (or 10519is make one or two quick calculations. Type @kbd{C-x * q} (or
10534@kbd{M-x quick-calc}), then type any formula as an algebraic entry. 10520@kbd{M-x quick-calc}), then type any formula as an algebraic entry.
10535The Calculator will compute the result and display it in the echo 10521The Calculator will compute the result and display it in the echo
10536area, without ever actually putting up a Calc window. 10522area, without ever actually putting up a Calc window.
@@ -10539,11 +10525,11 @@ You can use the @kbd{$} character in a Quick Calculator formula to
10539refer to the previous Quick Calculator result. Older results are 10525refer to the previous Quick Calculator result. Older results are
10540not retained; the Quick Calculator has no effect on the full 10526not retained; the Quick Calculator has no effect on the full
10541Calculator's stack or trail. If you compute a result and then 10527Calculator's stack or trail. If you compute a result and then
10542forget what it was, just run @code{M-# q} again and enter 10528forget what it was, just run @code{C-x * q} again and enter
10543@samp{$} as the formula. 10529@samp{$} as the formula.
10544 10530
10545If this is the first time you have used the Calculator in this Emacs 10531If this is the first time you have used the Calculator in this Emacs
10546session, the @kbd{M-# q} command will create the @code{*Calculator*} 10532session, the @kbd{C-x * q} command will create the @code{*Calculator*}
10547buffer and perform all the usual initializations; it simply will 10533buffer and perform all the usual initializations; it simply will
10548refrain from putting that buffer up in a new window. The Quick 10534refrain from putting that buffer up in a new window. The Quick
10549Calculator refers to the @code{*Calculator*} buffer for all mode 10535Calculator refers to the @code{*Calculator*} buffer for all mode
@@ -10551,15 +10537,15 @@ settings. Thus, for example, to set the precision that the Quick
10551Calculator uses, simply run the full Calculator momentarily and use 10537Calculator uses, simply run the full Calculator momentarily and use
10552the regular @kbd{p} command. 10538the regular @kbd{p} command.
10553 10539
10554If you use @code{M-# q} from inside the Calculator buffer, the 10540If you use @code{C-x * q} from inside the Calculator buffer, the
10555effect is the same as pressing the apostrophe key (algebraic entry). 10541effect is the same as pressing the apostrophe key (algebraic entry).
10556 10542
10557The result of a Quick calculation is placed in the Emacs ``kill ring'' 10543The result of a Quick calculation is placed in the Emacs ``kill ring''
10558as well as being displayed. A subsequent @kbd{C-y} command will 10544as well as being displayed. A subsequent @kbd{C-y} command will
10559yank the result into the editing buffer. You can also use this 10545yank the result into the editing buffer. You can also use this
10560to yank the result into the next @kbd{M-# q} input line as a more 10546to yank the result into the next @kbd{C-x * q} input line as a more
10561explicit alternative to @kbd{$} notation, or to yank the result 10547explicit alternative to @kbd{$} notation, or to yank the result
10562into the Calculator stack after typing @kbd{M-# c}. 10548into the Calculator stack after typing @kbd{C-x * c}.
10563 10549
10564If you finish your formula by typing @key{LFD} (or @kbd{C-j}) instead 10550If you finish your formula by typing @key{LFD} (or @kbd{C-j}) instead
10565of @key{RET}, the result is inserted immediately into the current 10551of @key{RET}, the result is inserted immediately into the current
@@ -10655,7 +10641,7 @@ queried whether or not to restore the variable to its original value.
10655The @kbd{U} key may be pressed any number of times to undo successively 10641The @kbd{U} key may be pressed any number of times to undo successively
10656farther back in time; with a numeric prefix argument it undoes a 10642farther back in time; with a numeric prefix argument it undoes a
10657specified number of operations. The undo history is cleared only by the 10643specified number of operations. The undo history is cleared only by the
10658@kbd{q} (@code{calc-quit}) command. (Recall that @kbd{M-# c} is 10644@kbd{q} (@code{calc-quit}) command. (Recall that @kbd{C-x * c} is
10659synonymous with @code{calc-quit} while inside the Calculator; this 10645synonymous with @code{calc-quit} while inside the Calculator; this
10660also clears the undo history.) 10646also clears the undo history.)
10661 10647
@@ -10731,7 +10717,7 @@ that you must always press @kbd{w} yourself to see the messages).
10731@pindex another-calc 10717@pindex another-calc
10732It is possible to have any number of Calc mode buffers at once. 10718It is possible to have any number of Calc mode buffers at once.
10733Usually this is done by executing @kbd{M-x another-calc}, which 10719Usually this is done by executing @kbd{M-x another-calc}, which
10734is similar to @kbd{M-# c} except that if a @samp{*Calculator*} 10720is similar to @kbd{C-x * c} except that if a @samp{*Calculator*}
10735buffer already exists, a new, independent one with a name of the 10721buffer already exists, a new, independent one with a name of the
10736form @samp{*Calculator*<@var{n}>} is created. You can also use the 10722form @samp{*Calculator*<@var{n}>} is created. You can also use the
10737command @code{calc-mode} to put any buffer into Calculator mode, but 10723command @code{calc-mode} to put any buffer into Calculator mode, but
@@ -10778,9 +10764,9 @@ Occasionally Calc may lose track of when a certain component is
10778necessary; typically this means you will type a command and it won't 10764necessary; typically this means you will type a command and it won't
10779work because some function you've never heard of was undefined. 10765work because some function you've never heard of was undefined.
10780 10766
10781@kindex M-# L 10767@kindex C-x * L
10782@pindex calc-load-everything 10768@pindex calc-load-everything
10783If this happens, the easiest workaround is to type @kbd{M-# L} 10769If this happens, the easiest workaround is to type @kbd{C-x * L}
10784(@code{calc-load-everything}) to force all the parts of Calc to be 10770(@code{calc-load-everything}) to force all the parts of Calc to be
10785loaded right away. This will cause Emacs to take up a lot more 10771loaded right away. This will cause Emacs to take up a lot more
10786memory than it would otherwise, but it's guaranteed to fix the problem. 10772memory than it would otherwise, but it's guaranteed to fix the problem.
@@ -10839,7 +10825,7 @@ data points computed by the graphing commands.
10839If you suspect a Calculator cache has become corrupt, you can use the 10825If you suspect a Calculator cache has become corrupt, you can use the
10840@code{calc-flush-caches} command to reset all caches to the empty state. 10826@code{calc-flush-caches} command to reset all caches to the empty state.
10841(This should only be necessary in the event of bugs in the Calculator.) 10827(This should only be necessary in the event of bugs in the Calculator.)
10842The @kbd{M-# 0} (with the zero key) command also resets caches along 10828The @kbd{C-x * 0} (with the zero key) command also resets caches along
10843with all other aspects of the Calculator's state. 10829with all other aspects of the Calculator's state.
10844 10830
10845@node Debugging Calc, , Caches, Troubleshooting Commands 10831@node Debugging Calc, , Caches, Troubleshooting Commands
@@ -12049,8 +12035,8 @@ represent the same operation.
12049 12035
12050Commands that interpret (``parse'') text as algebraic formulas include 12036Commands that interpret (``parse'') text as algebraic formulas include
12051algebraic entry (@kbd{'}), editing commands like @kbd{`} which parse 12037algebraic entry (@kbd{'}), editing commands like @kbd{`} which parse
12052the contents of the editing buffer when you finish, the @kbd{M-# g} 12038the contents of the editing buffer when you finish, the @kbd{C-x * g}
12053and @w{@kbd{M-# r}} commands, the @kbd{C-y} command, the X window system 12039and @w{@kbd{C-x * r}} commands, the @kbd{C-y} command, the X window system
12054``paste'' mouse operation, and Embedded mode. All of these operations 12040``paste'' mouse operation, and Embedded mode. All of these operations
12055use the same rules for parsing formulas; in particular, language modes 12041use the same rules for parsing formulas; in particular, language modes
12056(@pxref{Language Modes}) affect them all in the same way. 12042(@pxref{Language Modes}) affect them all in the same way.
@@ -12446,8 +12432,8 @@ This will cause Emacs to reestablish these modes each time it starts up.
12446The modes saved in the file include everything controlled by the @kbd{m} 12432The modes saved in the file include everything controlled by the @kbd{m}
12447and @kbd{d} prefix keys, the current precision and binary word size, 12433and @kbd{d} prefix keys, the current precision and binary word size,
12448whether or not the trail is displayed, the current height of the Calc 12434whether or not the trail is displayed, the current height of the Calc
12449window, and more. The current interface (used when you type @kbd{M-# 12435window, and more. The current interface (used when you type @kbd{C-x * *})
12450M-#}) is also saved. If there were already saved mode settings in the 12436is also saved. If there were already saved mode settings in the
12451file, they are replaced. Otherwise, the new mode information is 12437file, they are replaced. Otherwise, the new mode information is
12452appended to the end of the file. 12438appended to the end of the file.
12453 12439
@@ -12473,7 +12459,7 @@ if this file exists, and this file becomes the one that Calc will
12473use in the future for commands like @kbd{m m}. The default settings 12459use in the future for commands like @kbd{m m}. The default settings
12474file name is @file{~/.calc.el}. You can see the current file name by 12460file name is @file{~/.calc.el}. You can see the current file name by
12475giving a blank response to the @kbd{m F} prompt. See also the 12461giving a blank response to the @kbd{m F} prompt. See also the
12476discussion of the @code{calc-settings-file} variable; @pxref{Customizable Variables}. 12462discussion of the @code{calc-settings-file} variable; @pxref{Customizing Calc}.
12477 12463
12478If the file name you give is your user init file (typically 12464If the file name you give is your user init file (typically
12479@file{~/.emacs}), @kbd{m F} will not automatically load the new file. This 12465@file{~/.emacs}), @kbd{m F} will not automatically load the new file. This
@@ -12494,7 +12480,7 @@ extensions modules. Otherwise, the extensions modules will not be loaded
12494until the various advanced Calc features are used. Since this mode only 12480until the various advanced Calc features are used. Since this mode only
12495has effect when Calc is first loaded, @kbd{m x} is usually followed by 12481has effect when Calc is first loaded, @kbd{m x} is usually followed by
12496@kbd{m m} to make the mode-setting permanent. To load all of Calc just 12482@kbd{m m} to make the mode-setting permanent. To load all of Calc just
12497once, rather than always in the future, you can press @kbd{M-# L}. 12483once, rather than always in the future, you can press @kbd{C-x * L}.
12498 12484
12499@kindex m S 12485@kindex m S
12500@pindex calc-shift-prefix 12486@pindex calc-shift-prefix
@@ -12864,7 +12850,7 @@ recomputation is off, you can think of @kbd{m C m C} as a command
12864to update all @samp{=>} operators while leaving recomputation off.) 12850to update all @samp{=>} operators while leaving recomputation off.)
12865 12851
12866To update @samp{=>} operators in an Embedded buffer while 12852To update @samp{=>} operators in an Embedded buffer while
12867automatic recomputation is off, use @w{@kbd{M-# u}}. 12853automatic recomputation is off, use @w{@kbd{C-x * u}}.
12868@xref{Embedded Mode}. 12854@xref{Embedded Mode}.
12869 12855
12870@node Working Message, , Automatic Recomputation, Calculation Modes 12856@node Working Message, , Automatic Recomputation, Calculation Modes
@@ -13511,7 +13497,7 @@ uses it as the digit separator. As a special case, @kbd{d , \} selects
13511@samp{\,} (@TeX{}'s thin-space symbol) as the digit separator. 13497@samp{\,} (@TeX{}'s thin-space symbol) as the digit separator.
13512 13498
13513Please note that grouped numbers will not generally be parsed correctly 13499Please note that grouped numbers will not generally be parsed correctly
13514if re-read in textual form, say by the use of @kbd{M-# y} and @kbd{M-# g}. 13500if re-read in textual form, say by the use of @kbd{C-x * y} and @kbd{C-x * g}.
13515(@xref{Kill and Yank}, for details on these commands.) One exception is 13501(@xref{Kill and Yank}, for details on these commands.) One exception is
13516the @samp{\,} separator, which doesn't interfere with parsing because it 13502the @samp{\,} separator, which doesn't interfere with parsing because it
13517is ignored by @TeX{} language mode. 13503is ignored by @TeX{} language mode.
@@ -13571,7 +13557,7 @@ significant figures but displays only six. (In fact, intermediate
13571calculations are often carried to one or two more significant figures, 13557calculations are often carried to one or two more significant figures,
13572but values placed on the stack will be rounded down to ten figures.) 13558but values placed on the stack will be rounded down to ten figures.)
13573Numbers are never actually rounded to the display precision for storage, 13559Numbers are never actually rounded to the display precision for storage,
13574except by commands like @kbd{C-k} and @kbd{M-# y} which operate on the 13560except by commands like @kbd{C-k} and @kbd{C-x * y} which operate on the
13575actual displayed text in the Calculator buffer. 13561actual displayed text in the Calculator buffer.
13576 13562
13577@kindex d . 13563@kindex d .
@@ -14133,9 +14119,9 @@ and use the standard notation by giving a numeric prefix, e.g., @kbd{C-u '}.
14133For example, suppose the formula @samp{2*a[1] + atan(a[2])} occurs in a C 14119For example, suppose the formula @samp{2*a[1] + atan(a[2])} occurs in a C
14134program; elsewhere in the program you need the derivatives of this formula 14120program; elsewhere in the program you need the derivatives of this formula
14135with respect to @samp{a[1]} and @samp{a[2]}. First, type @kbd{d C} 14121with respect to @samp{a[1]} and @samp{a[2]}. First, type @kbd{d C}
14136to switch to C notation. Now use @code{C-u M-# g} to grab the formula 14122to switch to C notation. Now use @code{C-u C-x * g} to grab the formula
14137into the Calculator, @kbd{a d a[1] @key{RET}} to differentiate with respect 14123into the Calculator, @kbd{a d a[1] @key{RET}} to differentiate with respect
14138to the first variable, and @kbd{M-# y} to yank the formula for the derivative 14124to the first variable, and @kbd{C-x * y} to yank the formula for the derivative
14139back into your C program. Press @kbd{U} to undo the differentiation and 14125back into your C program. Press @kbd{U} to undo the differentiation and
14140repeat with @kbd{a d a[2] @key{RET}} for the other derivative. 14126repeat with @kbd{a d a[2] @key{RET}} for the other derivative.
14141 14127
@@ -21278,8 +21264,8 @@ but they are not currently supported with @kbd{V U} or @kbd{I V U}.
21278The obsolete reduce-by-columns function, @code{reducec}, is still 21264The obsolete reduce-by-columns function, @code{reducec}, is still
21279supported but there is no way to get it through the @kbd{V R} command. 21265supported but there is no way to get it through the @kbd{V R} command.
21280 21266
21281The commands @kbd{M-# :} and @kbd{M-# _} are equivalent to typing 21267The commands @kbd{C-x * :} and @kbd{C-x * _} are equivalent to typing
21282@kbd{M-# r} to grab a rectangle of data into Calc, and then typing 21268@kbd{C-x * r} to grab a rectangle of data into Calc, and then typing
21283@kbd{V R : +} or @kbd{V R _ +}, respectively, to sum the columns or 21269@kbd{V R : +} or @kbd{V R _ +}, respectively, to sum the columns or
21284rows of the matrix. @xref{Grabbing From Buffers}. 21270rows of the matrix. @xref{Grabbing From Buffers}.
21285 21271
@@ -27934,7 +27920,7 @@ argument to @kbd{u v}.
27934The @kbd{u V} (@code{calc-view-units-table}) command is like @kbd{u v} except 27920The @kbd{u V} (@code{calc-view-units-table}) command is like @kbd{u v} except
27935that the cursor is not moved into the Units Table buffer. You can 27921that the cursor is not moved into the Units Table buffer. You can
27936type @kbd{u V} again to remove the Units Table from the display. To 27922type @kbd{u V} again to remove the Units Table from the display. To
27937return from the Units Table buffer after a @kbd{u v}, type @kbd{M-# c} 27923return from the Units Table buffer after a @kbd{u v}, type @kbd{C-x * c}
27938again or use the regular Emacs @w{@kbd{C-x o}} (@code{other-window}) 27924again or use the regular Emacs @w{@kbd{C-x o}} (@code{other-window})
27939command. You can also kill the buffer with @kbd{C-x k} if you wish; 27925command. You can also kill the buffer with @kbd{C-x k} if you wish;
27940the actual units table is safely stored inside the Calculator. 27926the actual units table is safely stored inside the Calculator.
@@ -29320,7 +29306,7 @@ display or print the output of GNUPLOT, respectively. These may be
29320@samp{%s} to signify the name of the file to be displayed or printed. 29306@samp{%s} to signify the name of the file to be displayed or printed.
29321Or, these variables may contain Lisp expressions which are evaluated 29307Or, these variables may contain Lisp expressions which are evaluated
29322to display or print the output. These variables are customizable 29308to display or print the output. These variables are customizable
29323(@pxref{Customizable Variables}). 29309(@pxref{Customizing Calc}).
29324 29310
29325@kindex g x 29311@kindex g x
29326@pindex calc-graph-display 29312@pindex calc-graph-display
@@ -29479,20 +29465,20 @@ difference.)
29479@section Grabbing from Other Buffers 29465@section Grabbing from Other Buffers
29480 29466
29481@noindent 29467@noindent
29482@kindex M-# g 29468@kindex C-x * g
29483@pindex calc-grab-region 29469@pindex calc-grab-region
29484The @kbd{M-# g} (@code{calc-grab-region}) command takes the text between 29470The @kbd{C-x * g} (@code{calc-grab-region}) command takes the text between
29485point and mark in the current buffer and attempts to parse it as a 29471point and mark in the current buffer and attempts to parse it as a
29486vector of values. Basically, it wraps the text in vector brackets 29472vector of values. Basically, it wraps the text in vector brackets
29487@samp{[ ]} unless the text already is enclosed in vector brackets, 29473@samp{[ ]} unless the text already is enclosed in vector brackets,
29488then reads the text as if it were an algebraic entry. The contents 29474then reads the text as if it were an algebraic entry. The contents
29489of the vector may be numbers, formulas, or any other Calc objects. 29475of the vector may be numbers, formulas, or any other Calc objects.
29490If the @kbd{M-# g} command works successfully, it does an automatic 29476If the @kbd{C-x * g} command works successfully, it does an automatic
29491@kbd{M-# c} to enter the Calculator buffer. 29477@kbd{C-x * c} to enter the Calculator buffer.
29492 29478
29493A numeric prefix argument grabs the specified number of lines around 29479A numeric prefix argument grabs the specified number of lines around
29494point, ignoring the mark. A positive prefix grabs from point to the 29480point, ignoring the mark. A positive prefix grabs from point to the
29495@expr{n}th following newline (so that @kbd{M-1 M-# g} grabs from point 29481@expr{n}th following newline (so that @kbd{M-1 C-x * g} grabs from point
29496to the end of the current line); a negative prefix grabs from point 29482to the end of the current line); a negative prefix grabs from point
29497back to the @expr{n+1}st preceding newline. In these cases the text 29483back to the @expr{n+1}st preceding newline. In these cases the text
29498that is grabbed is exactly the same as the text that @kbd{C-k} would 29484that is grabbed is exactly the same as the text that @kbd{C-k} would
@@ -29503,19 +29489,19 @@ line.
29503 29489
29504A plain @kbd{C-u} prefix interprets the region between point and mark 29490A plain @kbd{C-u} prefix interprets the region between point and mark
29505as a single number or formula rather than a vector. For example, 29491as a single number or formula rather than a vector. For example,
29506@kbd{M-# g} on the text @samp{2 a b} produces the vector of three 29492@kbd{C-x * g} on the text @samp{2 a b} produces the vector of three
29507values @samp{[2, a, b]}, but @kbd{C-u M-# g} on the same region 29493values @samp{[2, a, b]}, but @kbd{C-u C-x * g} on the same region
29508reads a formula which is a product of three things: @samp{2 a b}. 29494reads a formula which is a product of three things: @samp{2 a b}.
29509(The text @samp{a + b}, on the other hand, will be grabbed as a 29495(The text @samp{a + b}, on the other hand, will be grabbed as a
29510vector of one element by plain @kbd{M-# g} because the interpretation 29496vector of one element by plain @kbd{C-x * g} because the interpretation
29511@samp{[a, +, b]} would be a syntax error.) 29497@samp{[a, +, b]} would be a syntax error.)
29512 29498
29513If a different language has been specified (@pxref{Language Modes}), 29499If a different language has been specified (@pxref{Language Modes}),
29514the grabbed text will be interpreted according to that language. 29500the grabbed text will be interpreted according to that language.
29515 29501
29516@kindex M-# r 29502@kindex C-x * r
29517@pindex calc-grab-rectangle 29503@pindex calc-grab-rectangle
29518The @kbd{M-# r} (@code{calc-grab-rectangle}) command takes the text between 29504The @kbd{C-x * r} (@code{calc-grab-rectangle}) command takes the text between
29519point and mark and attempts to parse it as a matrix. If point and mark 29505point and mark and attempts to parse it as a matrix. If point and mark
29520are both in the leftmost column, the lines in between are parsed in their 29506are both in the leftmost column, the lines in between are parsed in their
29521entirety. Otherwise, point and mark define the corners of a rectangle 29507entirety. Otherwise, point and mark define the corners of a rectangle
@@ -29535,15 +29521,15 @@ were surrounded by square brackets. Leading line numbers (in the
29535format used in the Calc stack buffer) are ignored. If you wish to 29521format used in the Calc stack buffer) are ignored. If you wish to
29536force this interpretation (even if the line contains bracketed 29522force this interpretation (even if the line contains bracketed
29537portions), give a negative numeric prefix argument to the 29523portions), give a negative numeric prefix argument to the
29538@kbd{M-# r} command. 29524@kbd{C-x * r} command.
29539 29525
29540If you give a numeric prefix argument of zero or plain @kbd{C-u}, each 29526If you give a numeric prefix argument of zero or plain @kbd{C-u}, each
29541line is instead interpreted as a single formula which is converted into 29527line is instead interpreted as a single formula which is converted into
29542a one-element vector. Thus the result of @kbd{C-u M-# r} will be a 29528a one-element vector. Thus the result of @kbd{C-u C-x * r} will be a
29543one-column matrix. For example, suppose one line of the data is the 29529one-column matrix. For example, suppose one line of the data is the
29544expression @samp{2 a}. A plain @w{@kbd{M-# r}} will interpret this as 29530expression @samp{2 a}. A plain @w{@kbd{C-x * r}} will interpret this as
29545@samp{[2 a]}, which in turn is read as a two-element vector that forms 29531@samp{[2 a]}, which in turn is read as a two-element vector that forms
29546one row of the matrix. But a @kbd{C-u M-# r} will interpret this row 29532one row of the matrix. But a @kbd{C-u C-x * r} will interpret this row
29547as @samp{[2*a]}. 29533as @samp{[2*a]}.
29548 29534
29549If you give a positive numeric prefix argument @var{n}, then each line 29535If you give a positive numeric prefix argument @var{n}, then each line
@@ -29558,35 +29544,35 @@ constituent rows and columns. (If it is a
29558@infoline 1x1 29544@infoline 1x1
29559matrix, just hit @kbd{v u} (@code{calc-unpack}) twice.) 29545matrix, just hit @kbd{v u} (@code{calc-unpack}) twice.)
29560 29546
29561@kindex M-# : 29547@kindex C-x * :
29562@kindex M-# _ 29548@kindex C-x * _
29563@pindex calc-grab-sum-across 29549@pindex calc-grab-sum-across
29564@pindex calc-grab-sum-down 29550@pindex calc-grab-sum-down
29565@cindex Summing rows and columns of data 29551@cindex Summing rows and columns of data
29566The @kbd{M-# :} (@code{calc-grab-sum-down}) command is a handy way to 29552The @kbd{C-x * :} (@code{calc-grab-sum-down}) command is a handy way to
29567grab a rectangle of data and sum its columns. It is equivalent to 29553grab a rectangle of data and sum its columns. It is equivalent to
29568typing @kbd{M-# r}, followed by @kbd{V R : +} (the vector reduction 29554typing @kbd{C-x * r}, followed by @kbd{V R : +} (the vector reduction
29569command that sums the columns of a matrix; @pxref{Reducing}). The 29555command that sums the columns of a matrix; @pxref{Reducing}). The
29570result of the command will be a vector of numbers, one for each column 29556result of the command will be a vector of numbers, one for each column
29571in the input data. The @kbd{M-# _} (@code{calc-grab-sum-across}) command 29557in the input data. The @kbd{C-x * _} (@code{calc-grab-sum-across}) command
29572similarly grabs a rectangle and sums its rows by executing @w{@kbd{V R _ +}}. 29558similarly grabs a rectangle and sums its rows by executing @w{@kbd{V R _ +}}.
29573 29559
29574As well as being more convenient, @kbd{M-# :} and @kbd{M-# _} are also 29560As well as being more convenient, @kbd{C-x * :} and @kbd{C-x * _} are also
29575much faster because they don't actually place the grabbed vector on 29561much faster because they don't actually place the grabbed vector on
29576the stack. In a @kbd{M-# r V R : +} sequence, formatting the vector 29562the stack. In a @kbd{C-x * r V R : +} sequence, formatting the vector
29577for display on the stack takes a large fraction of the total time 29563for display on the stack takes a large fraction of the total time
29578(unless you have planned ahead and used @kbd{v .} and @kbd{t .} modes). 29564(unless you have planned ahead and used @kbd{v .} and @kbd{t .} modes).
29579 29565
29580For example, suppose we have a column of numbers in a file which we 29566For example, suppose we have a column of numbers in a file which we
29581wish to sum. Go to one corner of the column and press @kbd{C-@@} to 29567wish to sum. Go to one corner of the column and press @kbd{C-@@} to
29582set the mark; go to the other corner and type @kbd{M-# :}. Since there 29568set the mark; go to the other corner and type @kbd{C-x * :}. Since there
29583is only one column, the result will be a vector of one number, the sum. 29569is only one column, the result will be a vector of one number, the sum.
29584(You can type @kbd{v u} to unpack this vector into a plain number if 29570(You can type @kbd{v u} to unpack this vector into a plain number if
29585you want to do further arithmetic with it.) 29571you want to do further arithmetic with it.)
29586 29572
29587To compute the product of the column of numbers, we would have to do 29573To compute the product of the column of numbers, we would have to do
29588it ``by hand'' since there's no special grab-and-multiply command. 29574it ``by hand'' since there's no special grab-and-multiply command.
29589Use @kbd{M-# r} to grab the column of numbers into the calculator in 29575Use @kbd{C-x * r} to grab the column of numbers into the calculator in
29590the form of a column matrix. The statistics command @kbd{u *} is a 29576the form of a column matrix. The statistics command @kbd{u *} is a
29591handy way to find the product of a vector or matrix of numbers. 29577handy way to find the product of a vector or matrix of numbers.
29592@xref{Statistical Operations}. Another approach would be to use 29578@xref{Statistical Operations}. Another approach would be to use
@@ -29618,13 +29604,13 @@ latter strips off the trailing newline.
29618With a lone @kbd{C-u} as a prefix argument, @kbd{y} @emph{replaces} the 29604With a lone @kbd{C-u} as a prefix argument, @kbd{y} @emph{replaces} the
29619region in the other buffer with the yanked text, then quits the 29605region in the other buffer with the yanked text, then quits the
29620Calculator, leaving you in that buffer. A typical use would be to use 29606Calculator, leaving you in that buffer. A typical use would be to use
29621@kbd{M-# g} to read a region of data into the Calculator, operate on the 29607@kbd{C-x * g} to read a region of data into the Calculator, operate on the
29622data to produce a new matrix, then type @kbd{C-u y} to replace the 29608data to produce a new matrix, then type @kbd{C-u y} to replace the
29623original data with the new data. One might wish to alter the matrix 29609original data with the new data. One might wish to alter the matrix
29624display style (@pxref{Vector and Matrix Formats}) or change the current 29610display style (@pxref{Vector and Matrix Formats}) or change the current
29625display language (@pxref{Language Modes}) before doing this. Also, note 29611display language (@pxref{Language Modes}) before doing this. Also, note
29626that this command replaces a linear region of text (as grabbed by 29612that this command replaces a linear region of text (as grabbed by
29627@kbd{M-# g}), not a rectangle (as grabbed by @kbd{M-# r}). 29613@kbd{C-x * g}), not a rectangle (as grabbed by @kbd{C-x * r}).
29628 29614
29629If the editing buffer is in overwrite (as opposed to insert) mode, 29615If the editing buffer is in overwrite (as opposed to insert) mode,
29630and the @kbd{C-u} prefix was not used, then the yanked number will 29616and the @kbd{C-u} prefix was not used, then the yanked number will
@@ -29641,8 +29627,8 @@ number, lengthening or shortening as necessary. The concept of
29641``overwrite mode'' has thus been generalized from overwriting characters 29627``overwrite mode'' has thus been generalized from overwriting characters
29642to overwriting one complete number with another. 29628to overwriting one complete number with another.
29643 29629
29644@kindex M-# y 29630@kindex C-x * y
29645The @kbd{M-# y} key sequence is equivalent to @kbd{y} except that 29631The @kbd{C-x * y} key sequence is equivalent to @kbd{y} except that
29646it can be typed anywhere, not just in Calc. This provides an easy 29632it can be typed anywhere, not just in Calc. This provides an easy
29647way to guarantee that Calc knows which editing buffer you want to use! 29633way to guarantee that Calc knows which editing buffer you want to use!
29648 29634
@@ -29679,9 +29665,9 @@ in the Calc window.
29679@chapter Keypad Mode 29665@chapter Keypad Mode
29680 29666
29681@noindent 29667@noindent
29682@kindex M-# k 29668@kindex C-x * k
29683@pindex calc-keypad 29669@pindex calc-keypad
29684The @kbd{M-# k} (@code{calc-keypad}) command starts the Calculator 29670The @kbd{C-x * k} (@code{calc-keypad}) command starts the Calculator
29685and displays a picture of a calculator-style keypad. If you are using 29671and displays a picture of a calculator-style keypad. If you are using
29686the X window system, you can click on any of the ``keys'' in the 29672the X window system, you can click on any of the ``keys'' in the
29687keypad using the left mouse button to operate the calculator. 29673keypad using the left mouse button to operate the calculator.
@@ -29690,7 +29676,7 @@ you can type in your file while simultaneously performing
29690calculations with the mouse. 29676calculations with the mouse.
29691 29677
29692@pindex full-calc-keypad 29678@pindex full-calc-keypad
29693If you have used @kbd{M-# b} first, @kbd{M-# k} instead invokes 29679If you have used @kbd{C-x * b} first, @kbd{C-x * k} instead invokes
29694the @code{full-calc-keypad} command, which takes over the whole 29680the @code{full-calc-keypad} command, which takes over the whole
29695Emacs screen and displays the keypad, the Calc stack, and the Calc 29681Emacs screen and displays the keypad, the Calc stack, and the Calc
29696trail all at once. This mode would normally be used when running 29682trail all at once. This mode would normally be used when running
@@ -29851,9 +29837,9 @@ of 0 @samp{[]}, 1 @samp{[)}, 2 @samp{(]} or 3 @samp{()}, followed
29851by the two limits of the interval. 29837by the two limits of the interval.
29852@end table 29838@end table
29853 29839
29854The @kbd{OFF} key turns Calc off; typing @kbd{M-# k} or @kbd{M-# M-#} 29840The @kbd{OFF} key turns Calc off; typing @kbd{C-x * k} or @kbd{C-x * *}
29855again has the same effect. This is analogous to typing @kbd{q} or 29841again has the same effect. This is analogous to typing @kbd{q} or
29856hitting @kbd{M-# c} again in the normal calculator. If Calc is 29842hitting @kbd{C-x * c} again in the normal calculator. If Calc is
29857running standalone (the @code{full-calc-keypad} command appeared in the 29843running standalone (the @code{full-calc-keypad} command appeared in the
29858command line that started Emacs), then @kbd{OFF} is replaced with 29844command line that started Emacs), then @kbd{OFF} is replaced with
29859@kbd{EXIT}; clicking on this actually exits Emacs itself. 29845@kbd{EXIT}; clicking on this actually exits Emacs itself.
@@ -30093,11 +30079,11 @@ linked to the stack and this copying is taken care of automatically.
30093@section Basic Embedded Mode 30079@section Basic Embedded Mode
30094 30080
30095@noindent 30081@noindent
30096@kindex M-# e 30082@kindex C-x * e
30097@pindex calc-embedded 30083@pindex calc-embedded
30098To enter Embedded mode, position the Emacs point (cursor) on a 30084To enter Embedded mode, position the Emacs point (cursor) on a
30099formula in any buffer and press @kbd{M-# e} (@code{calc-embedded}). 30085formula in any buffer and press @kbd{C-x * e} (@code{calc-embedded}).
30100Note that @kbd{M-# e} is not to be used in the Calc stack buffer 30086Note that @kbd{C-x * e} is not to be used in the Calc stack buffer
30101like most Calc commands, but rather in regular editing buffers that 30087like most Calc commands, but rather in regular editing buffers that
30102are visiting your own files. 30088are visiting your own files.
30103 30089
@@ -30108,7 +30094,7 @@ Similarly, Calc will use @TeX{} language for @code{tex-mode},
30108@code{plain-tex-mode} and @code{context-mode}, C language for 30094@code{plain-tex-mode} and @code{context-mode}, C language for
30109@code{c-mode} and @code{c++-mode}, FORTRAN language for 30095@code{c-mode} and @code{c++-mode}, FORTRAN language for
30110@code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode}, 30096@code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode},
30111and eqn for @code{nroff-mode} (@pxref{Customizable Variables}). 30097and eqn for @code{nroff-mode} (@pxref{Customizing Calc}).
30112These can be overridden with Calc's mode 30098These can be overridden with Calc's mode
30113changing commands (@pxref{Mode Settings in Embedded Mode}). If no 30099changing commands (@pxref{Mode Settings in Embedded Mode}). If no
30114suitable language is available, Calc will continue with its current language. 30100suitable language is available, Calc will continue with its current language.
@@ -30145,9 +30131,9 @@ With a prefix argument of zero, Calc uses the current region (delimited
30145by point and mark) instead of formula delimiters. With a prefix 30131by point and mark) instead of formula delimiters. With a prefix
30146argument of @kbd{C-u} only, Calc uses the current line as the formula. 30132argument of @kbd{C-u} only, Calc uses the current line as the formula.
30147 30133
30148@kindex M-# w 30134@kindex C-x * w
30149@pindex calc-embedded-word 30135@pindex calc-embedded-word
30150The @kbd{M-# w} (@code{calc-embedded-word}) command will start Embedded 30136The @kbd{C-x * w} (@code{calc-embedded-word}) command will start Embedded
30151mode on the current ``word''; in this case Calc will scan for the first 30137mode on the current ``word''; in this case Calc will scan for the first
30152non-numeric character (i.e., the first character that is not a digit, 30138non-numeric character (i.e., the first character that is not a digit,
30153sign, decimal point, or upper- or lower-case @samp{e}) forward and 30139sign, decimal point, or upper- or lower-case @samp{e}) forward and
@@ -30165,7 +30151,7 @@ in Normal language mode, but the @code{atan} won't correspond to
30165the built-in @code{arctan} function, and the @samp{a[1]} will be 30151the built-in @code{arctan} function, and the @samp{a[1]} will be
30166interpreted as @samp{a} times the vector @samp{[1]}! 30152interpreted as @samp{a} times the vector @samp{[1]}!
30167 30153
30168If you press @kbd{M-# e} or @kbd{M-# w} to activate an embedded 30154If you press @kbd{C-x * e} or @kbd{C-x * w} to activate an embedded
30169formula which is blank, say with the cursor on the space between 30155formula which is blank, say with the cursor on the space between
30170the two delimiters @samp{$ $}, Calc will immediately prompt for 30156the two delimiters @samp{$ $}, Calc will immediately prompt for
30171an algebraic entry. 30157an algebraic entry.
@@ -30179,10 +30165,10 @@ not affected by Embedded mode.
30179When Embedded mode begins, Calc pushes the current formula onto 30165When Embedded mode begins, Calc pushes the current formula onto
30180the stack. No Calc stack window is created; however, Calc copies 30166the stack. No Calc stack window is created; however, Calc copies
30181the top-of-stack position into the original buffer at all times. 30167the top-of-stack position into the original buffer at all times.
30182You can create a Calc window by hand with @kbd{M-# o} if you 30168You can create a Calc window by hand with @kbd{C-x * o} if you
30183find you need to see the entire stack. 30169find you need to see the entire stack.
30184 30170
30185For example, typing @kbd{M-# e} while somewhere in the formula 30171For example, typing @kbd{C-x * e} while somewhere in the formula
30186@samp{n>2} in the following line enables Embedded mode on that 30172@samp{n>2} in the following line enables Embedded mode on that
30187inequality: 30173inequality:
30188 30174
@@ -30216,7 +30202,7 @@ needs to be commuted.
30216We define $F_n = F_(n-1)+F_(n-2)$ for all $2 < n$. 30202We define $F_n = F_(n-1)+F_(n-2)$ for all $2 < n$.
30217@end example 30203@end example
30218 30204
30219The @kbd{M-# o} command is a useful way to open a Calc window 30205The @kbd{C-x * o} command is a useful way to open a Calc window
30220without actually selecting that window. Giving this command 30206without actually selecting that window. Giving this command
30221verifies that @samp{2 < n} is also on the Calc stack. Typing 30207verifies that @samp{2 < n} is also on the Calc stack. Typing
30222@kbd{17 @key{RET}} would produce: 30208@kbd{17 @key{RET}} would produce:
@@ -30232,9 +30218,9 @@ at this point will exchange the two stack values and restore
30232normally see the stack in Embedded mode, it is still there and 30218normally see the stack in Embedded mode, it is still there and
30233it still operates in the same way. But, as with old-fashioned 30219it still operates in the same way. But, as with old-fashioned
30234RPN calculators, you can only see the value at the top of the 30220RPN calculators, you can only see the value at the top of the
30235stack at any given time (unless you use @kbd{M-# o}). 30221stack at any given time (unless you use @kbd{C-x * o}).
30236 30222
30237Typing @kbd{M-# e} again turns Embedded mode off. The Calc 30223Typing @kbd{C-x * e} again turns Embedded mode off. The Calc
30238window reveals that the formula @w{@samp{2 < n}} is automatically 30224window reveals that the formula @w{@samp{2 < n}} is automatically
30239removed from the stack, but the @samp{17} is not. Entering 30225removed from the stack, but the @samp{17} is not. Entering
30240Embedded mode always pushes one thing onto the stack, and 30226Embedded mode always pushes one thing onto the stack, and
@@ -30242,11 +30228,11 @@ leaving Embedded mode always removes one thing. Anything else
30242that happens on the stack is entirely your business as far as 30228that happens on the stack is entirely your business as far as
30243Embedded mode is concerned. 30229Embedded mode is concerned.
30244 30230
30245If you press @kbd{M-# e} in the wrong place by accident, it is 30231If you press @kbd{C-x * e} in the wrong place by accident, it is
30246possible that Calc will be able to parse the nearby text as a 30232possible that Calc will be able to parse the nearby text as a
30247formula and will mangle that text in an attempt to redisplay it 30233formula and will mangle that text in an attempt to redisplay it
30248``properly'' in the current language mode. If this happens, 30234``properly'' in the current language mode. If this happens,
30249press @kbd{M-# e} again to exit Embedded mode, then give the 30235press @kbd{C-x * e} again to exit Embedded mode, then give the
30250regular Emacs ``undo'' command (@kbd{C-_} or @kbd{C-x u}) to put 30236regular Emacs ``undo'' command (@kbd{C-_} or @kbd{C-x u}) to put
30251the text back the way it was before Calc edited it. Note that Calc's 30237the text back the way it was before Calc edited it. Note that Calc's
30252own Undo command (typed before you turn Embedded mode back off) 30238own Undo command (typed before you turn Embedded mode back off)
@@ -30357,10 +30343,10 @@ and at x = 3 is
30357 @r{(the value)} 30343 @r{(the value)}
30358@end smallexample 30344@end smallexample
30359 30345
30360@kindex M-# d 30346@kindex C-x * d
30361@pindex calc-embedded-duplicate 30347@pindex calc-embedded-duplicate
30362The @kbd{M-# d} (@code{calc-embedded-duplicate}) command is a 30348The @kbd{C-x * d} (@code{calc-embedded-duplicate}) command is a
30363handy way to make sequences like this. If you type @kbd{M-# d}, 30349handy way to make sequences like this. If you type @kbd{C-x * d},
30364the formula under the cursor (which may or may not have Embedded 30350the formula under the cursor (which may or may not have Embedded
30365mode enabled for it at the time) is copied immediately below and 30351mode enabled for it at the time) is copied immediately below and
30366Embedded mode is then enabled for that copy. 30352Embedded mode is then enabled for that copy.
@@ -30374,7 +30360,7 @@ The derivative of
30374@end smallexample 30360@end smallexample
30375 30361
30376@noindent 30362@noindent
30377and press @kbd{M-# d} with the cursor on this formula. The result 30363and press @kbd{C-x * d} with the cursor on this formula. The result
30378is 30364is
30379 30365
30380@smallexample 30366@smallexample
@@ -30389,12 +30375,12 @@ The derivative of
30389@noindent 30375@noindent
30390with the second copy of the formula enabled in Embedded mode. 30376with the second copy of the formula enabled in Embedded mode.
30391You can now press @kbd{a d x @key{RET}} to take the derivative, and 30377You can now press @kbd{a d x @key{RET}} to take the derivative, and
30392@kbd{M-# d M-# d} to make two more copies of the derivative. 30378@kbd{C-x * d C-x * d} to make two more copies of the derivative.
30393To complete the computations, type @kbd{3 s l x @key{RET}} to evaluate 30379To complete the computations, type @kbd{3 s l x @key{RET}} to evaluate
30394the last formula, then move up to the second-to-last formula 30380the last formula, then move up to the second-to-last formula
30395and type @kbd{2 s l x @key{RET}}. 30381and type @kbd{2 s l x @key{RET}}.
30396 30382
30397Finally, you would want to press @kbd{M-# e} to exit Embedded 30383Finally, you would want to press @kbd{C-x * e} to exit Embedded
30398mode, then go up and insert the necessary text in between the 30384mode, then go up and insert the necessary text in between the
30399various formulas and numbers. 30385various formulas and numbers.
30400 30386
@@ -30402,40 +30388,37 @@ various formulas and numbers.
30402\bigskip 30388\bigskip
30403@end tex 30389@end tex
30404 30390
30405@kindex M-# f 30391@kindex C-x * f
30406@kindex M-# ' 30392@kindex C-x * '
30407@pindex calc-embedded-new-formula 30393@pindex calc-embedded-new-formula
30408The @kbd{M-# f} (@code{calc-embedded-new-formula}) command 30394The @kbd{C-x * f} (@code{calc-embedded-new-formula}) command
30409creates a new embedded formula at the current point. It inserts 30395creates a new embedded formula at the current point. It inserts
30410some default delimiters, which are usually just blank lines, 30396some default delimiters, which are usually just blank lines,
30411and then does an algebraic entry to get the formula (which is 30397and then does an algebraic entry to get the formula (which is
30412then enabled for Embedded mode). This is just shorthand for 30398then enabled for Embedded mode). This is just shorthand for
30413typing the delimiters yourself, positioning the cursor between 30399typing the delimiters yourself, positioning the cursor between
30414the new delimiters, and pressing @kbd{M-# e}. The key sequence 30400the new delimiters, and pressing @kbd{C-x * e}. The key sequence
30415@kbd{M-# '} is equivalent to @kbd{M-# f}. 30401@kbd{C-x * '} is equivalent to @kbd{C-x * f}.
30416 30402
30417@kindex M-# n 30403@kindex C-x * n
30418@kindex M-# p 30404@kindex C-x * p
30419@pindex calc-embedded-next 30405@pindex calc-embedded-next
30420@pindex calc-embedded-previous 30406@pindex calc-embedded-previous
30421The @kbd{M-# n} (@code{calc-embedded-next}) and @kbd{M-# p} 30407The @kbd{C-x * n} (@code{calc-embedded-next}) and @kbd{C-x * p}
30422(@code{calc-embedded-previous}) commands move the cursor to the 30408(@code{calc-embedded-previous}) commands move the cursor to the
30423next or previous active embedded formula in the buffer. They 30409next or previous active embedded formula in the buffer. They
30424can take positive or negative prefix arguments to move by several 30410can take positive or negative prefix arguments to move by several
30425formulas. Note that these commands do not actually examine the 30411formulas. Note that these commands do not actually examine the
30426text of the buffer looking for formulas; they only see formulas 30412text of the buffer looking for formulas; they only see formulas
30427which have previously been activated in Embedded mode. In fact, 30413which have previously been activated in Embedded mode. In fact,
30428@kbd{M-# n} and @kbd{M-# p} are a useful way to tell which 30414@kbd{C-x * n} and @kbd{C-x * p} are a useful way to tell which
30429embedded formulas are currently active. Also, note that these 30415embedded formulas are currently active. Also, note that these
30430commands do not enable Embedded mode on the next or previous 30416commands do not enable Embedded mode on the next or previous
30431formula, they just move the cursor. (By the way, @kbd{M-# n} is 30417formula, they just move the cursor.
30432not as awkward to type as it may seem, because @kbd{M-#} ignores
30433Shift and Meta on the second keystroke: @kbd{M-# M-N} can be typed
30434by holding down Shift and Meta and alternately typing two keys.)
30435 30418
30436@kindex M-# ` 30419@kindex C-x * `
30437@pindex calc-embedded-edit 30420@pindex calc-embedded-edit
30438The @kbd{M-# `} (@code{calc-embedded-edit}) command edits the 30421The @kbd{C-x * `} (@code{calc-embedded-edit}) command edits the
30439embedded formula at the current point as if by @kbd{`} (@code{calc-edit}). 30422embedded formula at the current point as if by @kbd{`} (@code{calc-edit}).
30440Embedded mode does not have to be enabled for this to work. Press 30423Embedded mode does not have to be enabled for this to work. Press
30441@kbd{C-c C-c} to finish the edit, or @kbd{C-x k} to cancel. 30424@kbd{C-c C-c} to finish the edit, or @kbd{C-x k} to cancel.
@@ -30500,10 +30483,10 @@ will do the trick) to select the righthand side of the assignment.
30500Then, @kbd{17 @key{TAB} @key{DEL}} will swap the 17 into place (@pxref{Selecting 30483Then, @kbd{17 @key{TAB} @key{DEL}} will swap the 17 into place (@pxref{Selecting
30501Subformulas}, to see how this works). 30484Subformulas}, to see how this works).
30502 30485
30503@kindex M-# j 30486@kindex C-x * j
30504@pindex calc-embedded-select 30487@pindex calc-embedded-select
30505The @kbd{M-# j} (@code{calc-embedded-select}) command provides an 30488The @kbd{C-x * j} (@code{calc-embedded-select}) command provides an
30506easy way to operate on assignments. It is just like @kbd{M-# e}, 30489easy way to operate on assignments. It is just like @kbd{C-x * e},
30507except that if the enabled formula is an assignment, it uses 30490except that if the enabled formula is an assignment, it uses
30508@kbd{j 2} to select the righthand side. If the enabled formula 30491@kbd{j 2} to select the righthand side. If the enabled formula
30509is an evaluates-to, it uses @kbd{j 1} to select the lefthand side. 30492is an evaluates-to, it uses @kbd{j 1} to select the lefthand side.
@@ -30514,20 +30497,18 @@ bar := foo + 3 => 20
30514@end example 30497@end example
30515 30498
30516@noindent 30499@noindent
30517in which case @kbd{M-# j} will select the middle part (@samp{foo + 3}). 30500in which case @kbd{C-x * j} will select the middle part (@samp{foo + 3}).
30518 30501
30519The formula is automatically deselected when you leave Embedded 30502The formula is automatically deselected when you leave Embedded
30520mode. 30503mode.
30521 30504
30522@kindex M-# u 30505@kindex C-x * u
30523@kindex M-# =
30524@pindex calc-embedded-update-formula 30506@pindex calc-embedded-update-formula
30525Another way to change the assignment to @code{foo} would simply be 30507Another way to change the assignment to @code{foo} would simply be
30526to edit the number using regular Emacs editing rather than Embedded 30508to edit the number using regular Emacs editing rather than Embedded
30527mode. Then, we have to find a way to get Embedded mode to notice 30509mode. Then, we have to find a way to get Embedded mode to notice
30528the change. The @kbd{M-# u} or @kbd{M-# =} 30510the change. The @kbd{C-x * u} (@code{calc-embedded-update-formula})
30529(@code{calc-embedded-update-formula}) command is a convenient way 30511command is a convenient way to do this.
30530to do this.
30531 30512
30532@example 30513@example
30533foo := 6 30514foo := 6
@@ -30535,29 +30516,29 @@ foo := 6
30535foo + 7 => 13 30516foo + 7 => 13
30536@end example 30517@end example
30537 30518
30538Pressing @kbd{M-# u} is much like pressing @kbd{M-# e = M-# e}, that 30519Pressing @kbd{C-x * u} is much like pressing @kbd{C-x * e = C-x * e}, that
30539is, temporarily enabling Embedded mode for the formula under the 30520is, temporarily enabling Embedded mode for the formula under the
30540cursor and then evaluating it with @kbd{=}. But @kbd{M-# u} does 30521cursor and then evaluating it with @kbd{=}. But @kbd{C-x * u} does
30541not actually use @kbd{M-# e}, and in fact another formula somewhere 30522not actually use @kbd{C-x * e}, and in fact another formula somewhere
30542else can be enabled in Embedded mode while you use @kbd{M-# u} and 30523else can be enabled in Embedded mode while you use @kbd{C-x * u} and
30543that formula will not be disturbed. 30524that formula will not be disturbed.
30544 30525
30545With a numeric prefix argument, @kbd{M-# u} updates all active 30526With a numeric prefix argument, @kbd{C-x * u} updates all active
30546@samp{=>} formulas in the buffer. Formulas which have not yet 30527@samp{=>} formulas in the buffer. Formulas which have not yet
30547been activated in Embedded mode, and formulas which do not have 30528been activated in Embedded mode, and formulas which do not have
30548@samp{=>} as their top-level operator, are not affected by this. 30529@samp{=>} as their top-level operator, are not affected by this.
30549(This is useful only if you have used @kbd{m C}; see below.) 30530(This is useful only if you have used @kbd{m C}; see below.)
30550 30531
30551With a plain @kbd{C-u} prefix, @kbd{C-u M-# u} updates only in the 30532With a plain @kbd{C-u} prefix, @kbd{C-u C-x * u} updates only in the
30552region between mark and point rather than in the whole buffer. 30533region between mark and point rather than in the whole buffer.
30553 30534
30554@kbd{M-# u} is also a handy way to activate a formula, such as an 30535@kbd{C-x * u} is also a handy way to activate a formula, such as an
30555@samp{=>} formula that has freshly been typed in or loaded from a 30536@samp{=>} formula that has freshly been typed in or loaded from a
30556file. 30537file.
30557 30538
30558@kindex M-# a 30539@kindex C-x * a
30559@pindex calc-embedded-activate 30540@pindex calc-embedded-activate
30560The @kbd{M-# a} (@code{calc-embedded-activate}) command scans 30541The @kbd{C-x * a} (@code{calc-embedded-activate}) command scans
30561through the current buffer and activates all embedded formulas 30542through the current buffer and activates all embedded formulas
30562that contain @samp{:=} or @samp{=>} symbols. This does not mean 30543that contain @samp{:=} or @samp{=>} symbols. This does not mean
30563that Embedded mode is actually turned on, but only that the 30544that Embedded mode is actually turned on, but only that the
@@ -30565,7 +30546,7 @@ formulas' positions are registered with Embedded mode so that
30565the @samp{=>} values can be properly updated as assignments are 30546the @samp{=>} values can be properly updated as assignments are
30566changed. 30547changed.
30567 30548
30568It is a good idea to type @kbd{M-# a} right after loading a file 30549It is a good idea to type @kbd{C-x * a} right after loading a file
30569that uses embedded @samp{=>} operators. Emacs includes a nifty 30550that uses embedded @samp{=>} operators. Emacs includes a nifty
30570``buffer-local variables'' feature that you can use to do this 30551``buffer-local variables'' feature that you can use to do this
30571automatically. The idea is to place near the end of your file 30552automatically. The idea is to place near the end of your file
@@ -30588,41 +30569,41 @@ trailing strings.
30588When Emacs loads a file into memory, it checks for a Local Variables 30569When Emacs loads a file into memory, it checks for a Local Variables
30589section like this one at the end of the file. If it finds this 30570section like this one at the end of the file. If it finds this
30590section, it does the specified things (in this case, running 30571section, it does the specified things (in this case, running
30591@kbd{M-# a} automatically) before editing of the file begins. 30572@kbd{C-x * a} automatically) before editing of the file begins.
30592The Local Variables section must be within 3000 characters of the 30573The Local Variables section must be within 3000 characters of the
30593end of the file for Emacs to find it, and it must be in the last 30574end of the file for Emacs to find it, and it must be in the last
30594page of the file if the file has any page separators. 30575page of the file if the file has any page separators.
30595@xref{File Variables, , Local Variables in Files, emacs, the 30576@xref{File Variables, , Local Variables in Files, emacs, the
30596Emacs manual}. 30577Emacs manual}.
30597 30578
30598Note that @kbd{M-# a} does not update the formulas it finds. 30579Note that @kbd{C-x * a} does not update the formulas it finds.
30599To do this, type, say, @kbd{M-1 M-# u} after @w{@kbd{M-# a}}. 30580To do this, type, say, @kbd{M-1 C-x * u} after @w{@kbd{C-x * a}}.
30600Generally this should not be a problem, though, because the 30581Generally this should not be a problem, though, because the
30601formulas will have been up-to-date already when the file was 30582formulas will have been up-to-date already when the file was
30602saved. 30583saved.
30603 30584
30604Normally, @kbd{M-# a} activates all the formulas it finds, but 30585Normally, @kbd{C-x * a} activates all the formulas it finds, but
30605any previous active formulas remain active as well. With a 30586any previous active formulas remain active as well. With a
30606positive numeric prefix argument, @kbd{M-# a} first deactivates 30587positive numeric prefix argument, @kbd{C-x * a} first deactivates
30607all current active formulas, then actives the ones it finds in 30588all current active formulas, then actives the ones it finds in
30608its scan of the buffer. With a negative prefix argument, 30589its scan of the buffer. With a negative prefix argument,
30609@kbd{M-# a} simply deactivates all formulas. 30590@kbd{C-x * a} simply deactivates all formulas.
30610 30591
30611Embedded mode has two symbols, @samp{Active} and @samp{~Active}, 30592Embedded mode has two symbols, @samp{Active} and @samp{~Active},
30612which it puts next to the major mode name in a buffer's mode line. 30593which it puts next to the major mode name in a buffer's mode line.
30613It puts @samp{Active} if it has reason to believe that all 30594It puts @samp{Active} if it has reason to believe that all
30614formulas in the buffer are active, because you have typed @kbd{M-# a} 30595formulas in the buffer are active, because you have typed @kbd{C-x * a}
30615and Calc has not since had to deactivate any formulas (which can 30596and Calc has not since had to deactivate any formulas (which can
30616happen if Calc goes to update an @samp{=>} formula somewhere because 30597happen if Calc goes to update an @samp{=>} formula somewhere because
30617a variable changed, and finds that the formula is no longer there 30598a variable changed, and finds that the formula is no longer there
30618due to some kind of editing outside of Embedded mode). Calc puts 30599due to some kind of editing outside of Embedded mode). Calc puts
30619@samp{~Active} in the mode line if some, but probably not all, 30600@samp{~Active} in the mode line if some, but probably not all,
30620formulas in the buffer are active. This happens if you activate 30601formulas in the buffer are active. This happens if you activate
30621a few formulas one at a time but never use @kbd{M-# a}, or if you 30602a few formulas one at a time but never use @kbd{C-x * a}, or if you
30622used @kbd{M-# a} but then Calc had to deactivate a formula 30603used @kbd{C-x * a} but then Calc had to deactivate a formula
30623because it lost track of it. If neither of these symbols appears 30604because it lost track of it. If neither of these symbols appears
30624in the mode line, no embedded formulas are active in the buffer 30605in the mode line, no embedded formulas are active in the buffer
30625(e.g., before Embedded mode has been used, or after a @kbd{M-- M-# a}). 30606(e.g., before Embedded mode has been used, or after a @kbd{M-- C-x * a}).
30626 30607
30627Embedded formulas can refer to assignments both before and after them 30608Embedded formulas can refer to assignments both before and after them
30628in the buffer. If there are several assignments to a variable, the 30609in the buffer. If there are several assignments to a variable, the
@@ -30658,15 +30639,15 @@ and loaded in a later Emacs session, unless you have used the
30658 30639
30659The @kbd{m C} (@code{calc-auto-recompute}) command turns automatic 30640The @kbd{m C} (@code{calc-auto-recompute}) command turns automatic
30660recomputation of @samp{=>} forms on and off. If you turn automatic 30641recomputation of @samp{=>} forms on and off. If you turn automatic
30661recomputation off, you will have to use @kbd{M-# u} to update these 30642recomputation off, you will have to use @kbd{C-x * u} to update these
30662formulas manually after an assignment has been changed. If you 30643formulas manually after an assignment has been changed. If you
30663plan to change several assignments at once, it may be more efficient 30644plan to change several assignments at once, it may be more efficient
30664to type @kbd{m C}, change all the assignments, then use @kbd{M-1 M-# u} 30645to type @kbd{m C}, change all the assignments, then use @kbd{M-1 C-x * u}
30665to update the entire buffer afterwards. The @kbd{m C} command also 30646to update the entire buffer afterwards. The @kbd{m C} command also
30666controls @samp{=>} formulas on the stack; @pxref{Evaluates-To 30647controls @samp{=>} formulas on the stack; @pxref{Evaluates-To
30667Operator}. When you turn automatic recomputation back on, the 30648Operator}. When you turn automatic recomputation back on, the
30668stack will be updated but the Embedded buffer will not; you must 30649stack will be updated but the Embedded buffer will not; you must
30669use @kbd{M-# u} to update the buffer by hand. 30650use @kbd{C-x * u} to update the buffer by hand.
30670 30651
30671@node Mode Settings in Embedded Mode, Customizing Embedded Mode, Assignments in Embedded Mode, Embedded Mode 30652@node Mode Settings in Embedded Mode, Customizing Embedded Mode, Assignments in Embedded Mode, Embedded Mode
30672@section Mode Settings in Embedded Mode 30653@section Mode Settings in Embedded Mode
@@ -30777,11 +30758,11 @@ mode annotations somewhere out of the way, say, on a new page of
30777the file, as long as those mode settings are suitable for all 30758the file, as long as those mode settings are suitable for all
30778formulas in the file. 30759formulas in the file.
30779 30760
30780Enabling a formula with @kbd{M-# e} causes a fresh scan for local 30761Enabling a formula with @kbd{C-x * e} causes a fresh scan for local
30781mode annotations; you will have to use this after adding annotations 30762mode annotations; you will have to use this after adding annotations
30782above a formula by hand to get the formula to notice them. Updating 30763above a formula by hand to get the formula to notice them. Updating
30783a formula with @kbd{M-# u} will also re-scan the local modes, but 30764a formula with @kbd{C-x * u} will also re-scan the local modes, but
30784global modes are only re-scanned by @kbd{M-# a}. 30765global modes are only re-scanned by @kbd{C-x * a}.
30785 30766
30786Another way that modes can get out of date is if you add a local 30767Another way that modes can get out of date is if you add a local
30787mode annotation to a formula that has another formula after it. 30768mode annotation to a formula that has another formula after it.
@@ -30797,7 +30778,7 @@ rules of reading annotations the @samp{(sci 0)} applies to it, too.
30797456. 30778456.
30798@end example 30779@end example
30799 30780
30800We would have to go down to the other formula and press @kbd{M-# u} 30781We would have to go down to the other formula and press @kbd{C-x * u}
30801on it in order to get it to notice the new annotation. 30782on it in order to get it to notice the new annotation.
30802 30783
30803Two more mode-recording modes selectable by @kbd{m R} are available 30784Two more mode-recording modes selectable by @kbd{m R} are available
@@ -30819,13 +30800,13 @@ for @code{Save} have no effect.
30819@noindent 30800@noindent
30820You can modify Embedded mode's behavior by setting various Lisp 30801You can modify Embedded mode's behavior by setting various Lisp
30821variables described here. These variables are customizable 30802variables described here. These variables are customizable
30822(@pxref{Customizable Variables}), or you can use @kbd{M-x set-variable} 30803(@pxref{Customizing Calc}), or you can use @kbd{M-x set-variable}
30823or @kbd{M-x edit-options} to adjust a variable on the fly. 30804or @kbd{M-x edit-options} to adjust a variable on the fly.
30824(Another possibility would be to use a file-local variable annotation at 30805(Another possibility would be to use a file-local variable annotation at
30825the end of the file; 30806the end of the file;
30826@pxref{File Variables, , Local Variables in Files, emacs, the Emacs manual}.) 30807@pxref{File Variables, , Local Variables in Files, emacs, the Emacs manual}.)
30827Many of the variables given mentioned here can be set to depend on the 30808Many of the variables given mentioned here can be set to depend on the
30828major mode of the editing buffer (@pxref{Customizable Variables}). 30809major mode of the editing buffer (@pxref{Customizing Calc}).
30829 30810
30830@vindex calc-embedded-open-formula 30811@vindex calc-embedded-open-formula
30831The @code{calc-embedded-open-formula} variable holds a regular 30812The @code{calc-embedded-open-formula} variable holds a regular
@@ -30899,8 +30880,8 @@ case).
30899@vindex calc-embedded-open-word 30880@vindex calc-embedded-open-word
30900@vindex calc-embedded-close-word 30881@vindex calc-embedded-close-word
30901The @code{calc-embedded-open-word} and @code{calc-embedded-close-word} 30882The @code{calc-embedded-open-word} and @code{calc-embedded-close-word}
30902variables are similar expressions used when you type @kbd{M-# w} 30883variables are similar expressions used when you type @kbd{C-x * w}
30903instead of @kbd{M-# e} to enable Embedded mode. 30884instead of @kbd{C-x * e} to enable Embedded mode.
30904 30885
30905@vindex calc-embedded-open-plain 30886@vindex calc-embedded-open-plain
30906The @code{calc-embedded-open-plain} variable is a string which 30887The @code{calc-embedded-open-plain} variable is a string which
@@ -30921,9 +30902,9 @@ that followed might be shifted over with respect to the other lines.
30921@vindex calc-embedded-open-new-formula 30902@vindex calc-embedded-open-new-formula
30922The @code{calc-embedded-open-new-formula} variable is a string 30903The @code{calc-embedded-open-new-formula} variable is a string
30923which is inserted at the front of a new formula when you type 30904which is inserted at the front of a new formula when you type
30924@kbd{M-# f}. Its default value is @code{"\n\n"}. If this 30905@kbd{C-x * f}. Its default value is @code{"\n\n"}. If this
30925string begins with a newline character and the @kbd{M-# f} is 30906string begins with a newline character and the @kbd{C-x * f} is
30926typed at the beginning of a line, @kbd{M-# f} will skip this 30907typed at the beginning of a line, @kbd{C-x * f} will skip this
30927first newline to avoid introducing unnecessary blank lines in 30908first newline to avoid introducing unnecessary blank lines in
30928the file. 30909the file.
30929 30910
@@ -30931,15 +30912,15 @@ the file.
30931The @code{calc-embedded-close-new-formula} variable is the corresponding 30912The @code{calc-embedded-close-new-formula} variable is the corresponding
30932string which is inserted at the end of a new formula. Its default 30913string which is inserted at the end of a new formula. Its default
30933value is also @code{"\n\n"}. The final newline is omitted by 30914value is also @code{"\n\n"}. The final newline is omitted by
30934@w{@kbd{M-# f}} if typed at the end of a line. (It follows that if 30915@w{@kbd{C-x * f}} if typed at the end of a line. (It follows that if
30935@kbd{M-# f} is typed on a blank line, both a leading opening 30916@kbd{C-x * f} is typed on a blank line, both a leading opening
30936newline and a trailing closing newline are omitted.) 30917newline and a trailing closing newline are omitted.)
30937 30918
30938@vindex calc-embedded-announce-formula 30919@vindex calc-embedded-announce-formula
30939The @code{calc-embedded-announce-formula} variable is a regular 30920The @code{calc-embedded-announce-formula} variable is a regular
30940expression which is sure to be followed by an embedded formula. 30921expression which is sure to be followed by an embedded formula.
30941The @kbd{M-# a} command searches for this pattern as well as for 30922The @kbd{C-x * a} command searches for this pattern as well as for
30942@samp{=>} and @samp{:=} operators. Note that @kbd{M-# a} will 30923@samp{=>} and @samp{:=} operators. Note that @kbd{C-x * a} will
30943not activate just anything surrounded by formula delimiters; after 30924not activate just anything surrounded by formula delimiters; after
30944all, blank lines are considered formula delimiters by default! 30925all, blank lines are considered formula delimiters by default!
30945But if your language includes a delimiter which can only occur 30926But if your language includes a delimiter which can only occur
@@ -30967,7 +30948,7 @@ is simply a newline, @code{"\n"}, but may be different for different
30967major modes. If you change this, it is a good idea still to end with a 30948major modes. If you change this, it is a good idea still to end with a
30968newline so that mode annotations will appear on lines by themselves. 30949newline so that mode annotations will appear on lines by themselves.
30969 30950
30970@node Programming, Customizable Variables, Embedded Mode, Top 30951@node Programming, Customizing Calc, Embedded Mode, Top
30971@chapter Programming 30952@chapter Programming
30972 30953
30973@noindent 30954@noindent
@@ -31179,9 +31160,9 @@ takes some liberties with spaces: When we say @kbd{' [1 2 3] @key{RET}},
31179we take it for granted that it is clear we really mean 31160we take it for granted that it is clear we really mean
31180@kbd{' [1 @key{SPC} 2 @key{SPC} 3] @key{RET}}. 31161@kbd{' [1 @key{SPC} 2 @key{SPC} 3] @key{RET}}.
31181 31162
31182@kindex M-# m 31163@kindex C-x * m
31183@pindex read-kbd-macro 31164@pindex read-kbd-macro
31184The @kbd{M-# m} (@code{read-kbd-macro}) command reads an Emacs ``region'' 31165The @kbd{C-x * m} (@code{read-kbd-macro}) command reads an Emacs ``region''
31185of spelled-out keystrokes and defines it as the current keyboard macro. 31166of spelled-out keystrokes and defines it as the current keyboard macro.
31186It is a convenient way to define a keyboard macro that has been stored 31167It is a convenient way to define a keyboard macro that has been stored
31187in a file, or to define a macro without executing it at the same time. 31168in a file, or to define a macro without executing it at the same time.
@@ -31289,7 +31270,7 @@ happened to be sitting on the stack before we typed the above definition!
31289Another approach is to enter a harmless dummy definition for the macro, 31270Another approach is to enter a harmless dummy definition for the macro,
31290then go back and edit in the real one with a @kbd{Z E} command. Yet 31271then go back and edit in the real one with a @kbd{Z E} command. Yet
31291another approach is to type the macro as written-out keystroke names 31272another approach is to type the macro as written-out keystroke names
31292in a buffer, then use @kbd{M-# m} (@code{read-kbd-macro}) to read the 31273in a buffer, then use @kbd{C-x * m} (@code{read-kbd-macro}) to read the
31293macro. 31274macro.
31294 31275
31295@kindex Z / 31276@kindex Z /
@@ -31463,29 +31444,29 @@ return control to the keyboard macro.
31463@node Invocation Macros, Algebraic Definitions, Keyboard Macros, Programming 31444@node Invocation Macros, Algebraic Definitions, Keyboard Macros, Programming
31464@section Invocation Macros 31445@section Invocation Macros
31465 31446
31466@kindex M-# z 31447@kindex C-x * z
31467@kindex Z I 31448@kindex Z I
31468@pindex calc-user-invocation 31449@pindex calc-user-invocation
31469@pindex calc-user-define-invocation 31450@pindex calc-user-define-invocation
31470Calc provides one special keyboard macro, called up by @kbd{M-# z} 31451Calc provides one special keyboard macro, called up by @kbd{C-x * z}
31471(@code{calc-user-invocation}), that is intended to allow you to define 31452(@code{calc-user-invocation}), that is intended to allow you to define
31472your own special way of starting Calc. To define this ``invocation 31453your own special way of starting Calc. To define this ``invocation
31473macro,'' create the macro in the usual way with @kbd{C-x (} and 31454macro,'' create the macro in the usual way with @kbd{C-x (} and
31474@kbd{C-x )}, then type @kbd{Z I} (@code{calc-user-define-invocation}). 31455@kbd{C-x )}, then type @kbd{Z I} (@code{calc-user-define-invocation}).
31475There is only one invocation macro, so you don't need to type any 31456There is only one invocation macro, so you don't need to type any
31476additional letters after @kbd{Z I}. From now on, you can type 31457additional letters after @kbd{Z I}. From now on, you can type
31477@kbd{M-# z} at any time to execute your invocation macro. 31458@kbd{C-x * z} at any time to execute your invocation macro.
31478 31459
31479For example, suppose you find yourself often grabbing rectangles of 31460For example, suppose you find yourself often grabbing rectangles of
31480numbers into Calc and multiplying their columns. You can do this 31461numbers into Calc and multiplying their columns. You can do this
31481by typing @kbd{M-# r} to grab, and @kbd{V R : *} to multiply columns. 31462by typing @kbd{C-x * r} to grab, and @kbd{V R : *} to multiply columns.
31482To make this into an invocation macro, just type @kbd{C-x ( M-# r 31463To make this into an invocation macro, just type @kbd{C-x ( C-x * r
31483V R : * C-x )}, then @kbd{Z I}. Then, to multiply a rectangle of data, 31464V R : * C-x )}, then @kbd{Z I}. Then, to multiply a rectangle of data,
31484just mark the data in its buffer in the usual way and type @kbd{M-# z}. 31465just mark the data in its buffer in the usual way and type @kbd{C-x * z}.
31485 31466
31486Invocation macros are treated like regular Emacs keyboard macros; 31467Invocation macros are treated like regular Emacs keyboard macros;
31487all the special features described above for @kbd{Z K}-style macros 31468all the special features described above for @kbd{Z K}-style macros
31488do not apply. @kbd{M-# z} is just like @kbd{C-x e}, except that it 31469do not apply. @kbd{C-x * z} is just like @kbd{C-x e}, except that it
31489uses the macro that was last stored by @kbd{Z I}. (In fact, the 31470uses the macro that was last stored by @kbd{Z I}. (In fact, the
31490macro does not even have to have anything to do with Calc!) 31471macro does not even have to have anything to do with Calc!)
31491 31472
@@ -34729,7 +34710,7 @@ per Emacs session.
34729 34710
34730@defvar calc-end-hook 34711@defvar calc-end-hook
34731This hook is called by @code{calc-quit}, generally because the user 34712This hook is called by @code{calc-quit}, generally because the user
34732presses @kbd{q} or @kbd{M-# c} while in Calc. The Calc buffer will 34713presses @kbd{q} or @kbd{C-x * c} while in Calc. The Calc buffer will
34733be the current buffer. The hook is called as the very first 34714be the current buffer. The hook is called as the very first
34734step, before the Calc window is destroyed. 34715step, before the Calc window is destroyed.
34735@end defvar 34716@end defvar
@@ -34781,7 +34762,7 @@ message is inserted.
34781@end defvar 34762@end defvar
34782 34763
34783@defvar calc-reset-hook 34764@defvar calc-reset-hook
34784This hook is called after @kbd{M-# 0} (@code{calc-reset}) has 34765This hook is called after @kbd{C-x * 0} (@code{calc-reset}) has
34785reset all modes. The Calc buffer will be the current buffer. 34766reset all modes. The Calc buffer will be the current buffer.
34786@end defvar 34767@end defvar
34787 34768
@@ -34846,10 +34827,27 @@ used the first time, your hook should add a variable to the
34846list and also call @code{make-local-variable} itself. 34827list and also call @code{make-local-variable} itself.
34847@end defvar 34828@end defvar
34848 34829
34849@node Customizable Variables, Reporting Bugs, Programming, Top 34830@node Customizing Calc, Reporting Bugs, Programming, Top
34850@appendix Customizable Variables 34831@appendix Customizing Calc
34832
34833The usual prefix for Calc is the key sequence @kbd{C-x *}. If you wish
34834to use a different prefix, you can put
34851 34835
34852GNU Calc is controlled by many variables, most of which can be reset 34836@example
34837(global-set-key "NEWPREFIX" 'calc-dispatch)
34838@end example
34839
34840@noindent
34841in your .emacs file.
34842(@xref{Key Bindings,,Customizing Key Bindings,emacs,
34843The GNU Emacs Manual}, for more information on binding keys.)
34844A convenient way to start Calc is with @kbd{C-x * *}; to make it equally
34845convenient for users who use a different prefix, the prefix can be
34846followed by @kbd{=}, @kbd{&}, @kbd{#}, @kbd{\}, @kbd{/}, @kbd{+} or
34847@kbd{-} as well as @kbd{*} to start Calc, and so in many cases the last
34848character of the prefix can simply be typed twice.
34849
34850Calc is controlled by many variables, most of which can be reset
34853from within Calc. Some variables are less involved with actual 34851from within Calc. Some variables are less involved with actual
34854calculation, and can be set outside of Calc using Emacs's 34852calculation, and can be set outside of Calc using Emacs's
34855customization facilities. These variables are listed below. 34853customization facilities. These variables are listed below.
@@ -34882,7 +34880,7 @@ See @ref{Graphics}.@*
34882The variable @code{calc-gnuplot-name} should be the name of the 34880The variable @code{calc-gnuplot-name} should be the name of the
34883GNUPLOT program (a string). If you have GNUPLOT installed on your 34881GNUPLOT program (a string). If you have GNUPLOT installed on your
34884system but Calc is unable to find it, you may need to set this 34882system but Calc is unable to find it, you may need to set this
34885variable. (@pxref{Customizable Variables}) 34883variable. (@pxref{Customizing Calc})
34886You may also need to set some Lisp variables to show Calc how to run 34884You may also need to set some Lisp variables to show Calc how to run
34887GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} . The default value 34885GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} . The default value
34888of @code{calc-gnuplot-name} is @code{"gnuplot"}. 34886of @code{calc-gnuplot-name} is @code{"gnuplot"}.
@@ -34936,9 +34934,9 @@ The default value of @code{calc-language-alist} is
34936@defvarx calc-embedded-announce-formula-alist 34934@defvarx calc-embedded-announce-formula-alist
34937See @ref{Customizing Embedded Mode}.@* 34935See @ref{Customizing Embedded Mode}.@*
34938The variable @code{calc-embedded-announce-formula} helps determine 34936The variable @code{calc-embedded-announce-formula} helps determine
34939what formulas @kbd{M-# a} will activate in a buffer. It is a 34937what formulas @kbd{C-x * a} will activate in a buffer. It is a
34940regular expression, and when activating embedded formulas with 34938regular expression, and when activating embedded formulas with
34941@kbd{M-# a}, it will tell Calc that what follows is a formula to be 34939@kbd{C-x * a}, it will tell Calc that what follows is a formula to be
34942activated. (Calc also uses other patterns to find formulas, such as 34940activated. (Calc also uses other patterns to find formulas, such as
34943@samp{=>} and @samp{:=}.) 34941@samp{=>} and @samp{:=}.)
34944 34942
@@ -34975,7 +34973,7 @@ and @code{calc-embedded-open-close-mode-alist}.
34975See @ref{Customizing Embedded Mode}.@* 34973See @ref{Customizing Embedded Mode}.@*
34976The variables @code{calc-embedded-open-formula} and 34974The variables @code{calc-embedded-open-formula} and
34977@code{calc-embedded-open-formula} control the region that Calc will 34975@code{calc-embedded-open-formula} control the region that Calc will
34978activate as a formula when Embedded mode is entered with @kbd{M-# e}. 34976activate as a formula when Embedded mode is entered with @kbd{C-x * e}.
34979They are regular expressions; 34977They are regular expressions;
34980Calc normally scans backward and forward in the buffer for the 34978Calc normally scans backward and forward in the buffer for the
34981nearest text matching these regular expressions to be the ``formula 34979nearest text matching these regular expressions to be the ``formula
@@ -35013,7 +35011,7 @@ It consists of a list of lists of the form
35013See @ref{Customizing Embedded Mode}.@* 35011See @ref{Customizing Embedded Mode}.@*
35014The variables @code{calc-embedded-open-word} and 35012The variables @code{calc-embedded-open-word} and
35015@code{calc-embedded-close-word} control the region that Calc will 35013@code{calc-embedded-close-word} control the region that Calc will
35016activate when Embedded mode is entered with @kbd{M-# w}. They are 35014activate when Embedded mode is entered with @kbd{C-x * w}. They are
35017regular expressions. 35015regular expressions.
35018 35016
35019The default values of @code{calc-embedded-open-word} and 35017The default values of @code{calc-embedded-open-word} and
@@ -35077,15 +35075,15 @@ and @code{calc-embedded-open-close-mode-alist}.
35077See @ref{Customizing Embedded Mode}.@* 35075See @ref{Customizing Embedded Mode}.@*
35078The variables @code{calc-embedded-open-new-formula} and 35076The variables @code{calc-embedded-open-new-formula} and
35079@code{calc-embedded-close-new-formula} are strings which are 35077@code{calc-embedded-close-new-formula} are strings which are
35080inserted before and after a new formula when you type @kbd{M-# f}. 35078inserted before and after a new formula when you type @kbd{C-x * f}.
35081 35079
35082The default value of @code{calc-embedded-open-new-formula} is 35080The default value of @code{calc-embedded-open-new-formula} is
35083@code{"\n\n"}. If this string begins with a newline character and the 35081@code{"\n\n"}. If this string begins with a newline character and the
35084@kbd{M-# f} is typed at the beginning of a line, @kbd{M-# f} will skip 35082@kbd{C-x * f} is typed at the beginning of a line, @kbd{C-x * f} will skip
35085this first newline to avoid introducing unnecessary blank lines in the 35083this first newline to avoid introducing unnecessary blank lines in the
35086file. The default value of @code{calc-embedded-close-new-formula} is 35084file. The default value of @code{calc-embedded-close-new-formula} is
35087also @code{"\n\n"}. The final newline is omitted by @w{@kbd{M-# f}} 35085also @code{"\n\n"}. The final newline is omitted by @w{@kbd{C-x * f}}
35088if typed at the end of a line. (It follows that if @kbd{M-# f} is 35086if typed at the end of a line. (It follows that if @kbd{C-x * f} is
35089typed on a blank line, both a leading opening newline and a trailing 35087typed on a blank line, both a leading opening newline and a trailing
35090closing newline are omitted.) 35088closing newline are omitted.)
35091 35089
@@ -35141,7 +35139,7 @@ should also be added to @code{calc-embedded-announce-formula-alist}
35141and @code{calc-embedded-open-close-plain-alist}. 35139and @code{calc-embedded-open-close-plain-alist}.
35142@end defvar 35140@end defvar
35143 35141
35144@node Reporting Bugs, Summary, Customizable Variables, Top 35142@node Reporting Bugs, Summary, Customizing Calc, Top
35145@appendix Reporting Bugs 35143@appendix Reporting Bugs
35146 35144
35147@noindent 35145@noindent
@@ -35225,35 +35223,34 @@ keystrokes are not listed in this summary.
35225@advance@baselineskip-2.5pt 35223@advance@baselineskip-2.5pt
35226@let@c@sumbreak 35224@let@c@sumbreak
35227@end iftex 35225@end iftex
35228@r{ @: M-# a @: @: 33 @:calc-embedded-activate@:} 35226@r{ @: C-x * a @: @: 33 @:calc-embedded-activate@:}
35229@r{ @: M-# b @: @: @:calc-big-or-small@:} 35227@r{ @: C-x * b @: @: @:calc-big-or-small@:}
35230@r{ @: M-# c @: @: @:calc@:} 35228@r{ @: C-x * c @: @: @:calc@:}
35231@r{ @: M-# d @: @: @:calc-embedded-duplicate@:} 35229@r{ @: C-x * d @: @: @:calc-embedded-duplicate@:}
35232@r{ @: M-# e @: @: 34 @:calc-embedded@:} 35230@r{ @: C-x * e @: @: 34 @:calc-embedded@:}
35233@r{ @: M-# f @:formula @: @:calc-embedded-new-formula@:} 35231@r{ @: C-x * f @:formula @: @:calc-embedded-new-formula@:}
35234@r{ @: M-# g @: @: 35 @:calc-grab-region@:} 35232@r{ @: C-x * g @: @: 35 @:calc-grab-region@:}
35235@r{ @: M-# i @: @: @:calc-info@:} 35233@r{ @: C-x * i @: @: @:calc-info@:}
35236@r{ @: M-# j @: @: @:calc-embedded-select@:} 35234@r{ @: C-x * j @: @: @:calc-embedded-select@:}
35237@r{ @: M-# k @: @: @:calc-keypad@:} 35235@r{ @: C-x * k @: @: @:calc-keypad@:}
35238@r{ @: M-# l @: @: @:calc-load-everything@:} 35236@r{ @: C-x * l @: @: @:calc-load-everything@:}
35239@r{ @: M-# m @: @: @:read-kbd-macro@:} 35237@r{ @: C-x * m @: @: @:read-kbd-macro@:}
35240@r{ @: M-# n @: @: 4 @:calc-embedded-next@:} 35238@r{ @: C-x * n @: @: 4 @:calc-embedded-next@:}
35241@r{ @: M-# o @: @: @:calc-other-window@:} 35239@r{ @: C-x * o @: @: @:calc-other-window@:}
35242@r{ @: M-# p @: @: 4 @:calc-embedded-previous@:} 35240@r{ @: C-x * p @: @: 4 @:calc-embedded-previous@:}
35243@r{ @: M-# q @:formula @: @:quick-calc@:} 35241@r{ @: C-x * q @:formula @: @:quick-calc@:}
35244@r{ @: M-# r @: @: 36 @:calc-grab-rectangle@:} 35242@r{ @: C-x * r @: @: 36 @:calc-grab-rectangle@:}
35245@r{ @: M-# s @: @: @:calc-info-summary@:} 35243@r{ @: C-x * s @: @: @:calc-info-summary@:}
35246@r{ @: M-# t @: @: @:calc-tutorial@:} 35244@r{ @: C-x * t @: @: @:calc-tutorial@:}
35247@r{ @: M-# u @: @: @:calc-embedded-update-formula@:} 35245@r{ @: C-x * u @: @: @:calc-embedded-update-formula@:}
35248@r{ @: M-# w @: @: @:calc-embedded-word@:} 35246@r{ @: C-x * w @: @: @:calc-embedded-word@:}
35249@r{ @: M-# x @: @: @:calc-quit@:} 35247@r{ @: C-x * x @: @: @:calc-quit@:}
35250@r{ @: M-# y @: @:1,28,49 @:calc-copy-to-buffer@:} 35248@r{ @: C-x * y @: @:1,28,49 @:calc-copy-to-buffer@:}
35251@r{ @: M-# z @: @: @:calc-user-invocation@:} 35249@r{ @: C-x * z @: @: @:calc-user-invocation@:}
35252@r{ @: M-# = @: @: @:calc-embedded-update-formula@:} 35250@r{ @: C-x * : @: @: 36 @:calc-grab-sum-down@:}
35253@r{ @: M-# : @: @: 36 @:calc-grab-sum-down@:} 35251@r{ @: C-x * _ @: @: 36 @:calc-grab-sum-across@:}
35254@r{ @: M-# _ @: @: 36 @:calc-grab-sum-across@:} 35252@r{ @: C-x * ` @:editing @: 30 @:calc-embedded-edit@:}
35255@r{ @: M-# ` @:editing @: 30 @:calc-embedded-edit@:} 35253@r{ @: C-x * 0 @:(zero) @: @:calc-reset@:}
35256@r{ @: M-# 0 @:(zero) @: @:calc-reset@:}
35257 35254
35258@c 35255@c
35259@r{ @: 0-9 @:number @: @:@:number} 35256@r{ @: 0-9 @:number @: @:@:number}
diff --git a/man/macos.texi b/man/macos.texi
index 97952943893..90dbe311ecf 100644
--- a/man/macos.texi
+++ b/man/macos.texi
@@ -42,17 +42,25 @@ features such as file dialogs, drag-and-drop, and Unicode menus.
42@cindex Meta (Mac OS) 42@cindex Meta (Mac OS)
43@cindex keyboard coding (Mac OS) 43@cindex keyboard coding (Mac OS)
44 44
45@vindex mac-command-key-is-meta 45@vindex mac-control-modifier
46 On Mac, Emacs can use either the @key{option} key or the 46@vindex mac-command-modifier
47@key{command} key as the @key{META} key. If the value of the variable 47@vindex mac-option-modifier
48@code{mac-command-key-is-meta} is non-@code{nil} (its default value), 48 On Mac, Emacs can use @key{control}, @key{command}, and @key{option}
49Emacs uses the @key{command} key as the @key{META} key. Otherwise it 49keys as any of Emacs modifier keys except @key{SHIFT} (i.e.,
50uses the @key{option} key as the @key{META} key. 50@key{ALT}, @key{CTRL}, @key{HYPER}, @key{META}, and @key{SUPER}). The
51 51assignment is controlled by the variables @code{mac-control-modifier},
52 Most people should want to use the @key{command} key as the @key{META} key, 52@code{mac-command-modifier}, and @code{mac-option-modifier}. The
53so that dead-key processing with the @key{option} key will still work. This is 53value for each of these variables can be one of the following symbols:
54useful for entering non-@acronym{ASCII} Latin characters directly from the Mac 54@code{alt}, @code{control}, @code{hyper}, @code{meta}, @code{super},
55keyboard, for example. 55and @code{nil} (no particular assignment). By default, the
56@key{control} key works as @key{CTRL}, and the @key{command} key as
57@key{META}.
58
59 For the @key{option} key, if @code{mac-option-modifier} is set to
60@code{nil}, which is the default, the key works as the normal
61@key{option} key, i.e., dead-key processing will work. This is useful
62for entering non-@acronym{ASCII} Latin characters directly from the
63Mac keyboard, for example.
56 64
57 Emacs recognizes the setting in the Keyboard control panel (Mac OS 65 Emacs recognizes the setting in the Keyboard control panel (Mac OS
58Classic) or the International system preference pane (Mac OS X) and 66Classic) or the International system preference pane (Mac OS X) and
@@ -133,18 +141,18 @@ mainly used by applications on Mac OS X.
133converted to the encoding specified by the selection coding system 141converted to the encoding specified by the selection coding system
134using the converter in the Mac OS system, and then decoded into the 142using the converter in the Mac OS system, and then decoded into the
135Emacs internal encoding using the converter in Emacs. If the first 143Emacs internal encoding using the converter in Emacs. If the first
136conversion failed, then the UTF-16 data is directly converted to Emacs 144conversion failed, then the UTF-16 data is converted similarly but via
137internal encoding using the converter in Emacs. Copying UTF-16 text 145UTF-8. Copying UTF-16 text to the clipboard goes through the inverse
138to the clipboard goes through the inverse path. The reason for this 146path. The reason for this two-pass decoding is to avoid subtle
139two-path decoding is to avoid subtle differences in Unicode mappings 147differences in Unicode mappings between the Mac OS system and Emacs
140between the Mac OS system and Emacs such as various kinds of hyphens, 148such as various kinds of hyphens, to deal with UTF-16 data in native
141and to minimize users' customization. For example, users that mainly 149byte order with no byte order mark, and to minimize users'
142use Latin characters would prefer Greek characters to be decoded into 150customization. For example, users that mainly use Latin characters
143the @code{mule-unicode-0100-24ff} charset, but Japanese users would 151would prefer Greek characters to be decoded into the
144prefer them to be decoded into the @code{japanese-jisx0208} charset. 152@code{mule-unicode-0100-24ff} charset, but Japanese users would prefer
145Since the coding system for selection is automatically set according 153them to be decoded into the @code{japanese-jisx0208} charset. Since
146to the system locale setting, users usually don't have to set it 154the coding system for selection is automatically set according to the
147manually. 155system locale setting, users usually don't have to set it manually.
148 156
149 The default language environment (@pxref{Language Environments}) is 157 The default language environment (@pxref{Language Environments}) is
150set according to the locale setting at the startup time. On Mac OS, 158set according to the locale setting at the startup time. On Mac OS,
@@ -283,8 +291,19 @@ created.
283@cindex font names (Mac OS) 291@cindex font names (Mac OS)
284 292
285 It is rare that you need to specify a font name in Emacs; usually 293 It is rare that you need to specify a font name in Emacs; usually
286you specify face attributes instead. But when you do need to specify 294you specify face attributes instead. For example, you can use 14pt
287a font name in Emacs on Mac, use a standard X font name: 295Courier by customizing the default face attributes for all frames:
296
297@lisp
298(set-face-attribute 'default nil :family "courier" :height 140)
299@end lisp
300
301@noindent
302Alternatively, an interactive one is also available
303(@pxref{Face Customization}).
304
305But when you do need to specify a font name in Emacs on Mac, use a
306standard X font name:
288 307
289@smallexample 308@smallexample
290-@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{} 309-@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
diff --git a/man/org.texi b/man/org.texi
index 5a8d45638bd..29c3adeb14b 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,8 +4,8 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 3.20 7@set VERSION 3.21
8@set DATE October 2005 8@set DATE December 2005
9 9
10@dircategory Emacs 10@dircategory Emacs
11@direntry 11@direntry
@@ -105,6 +105,7 @@ Document Structure
105* Structure editing:: Changing sequence and level of headlines 105* Structure editing:: Changing sequence and level of headlines
106* Archiving:: Move done task trees to a different place 106* Archiving:: Move done task trees to a different place
107* Sparse trees:: Matches embedded in context 107* Sparse trees:: Matches embedded in context
108* Plain Lists:: Editing hand-formatted lists
108 109
109Tables 110Tables
110 111
@@ -212,15 +213,16 @@ printing and sharing of notes, an Org-mode file can be exported as a
212structured ASCII file, as HTML, or (todo and agenda items only) as an 213structured ASCII file, as HTML, or (todo and agenda items only) as an
213iCalendar file. 214iCalendar file.
214 215
215Org-mode keeps simple things simple. Not every outline branch needs 216Org-mode keeps simple things simple. When first fired up, it should
216to be an action item, not every action item needs to have priority or 217feel like a simple but easy to use outliner. Complexity is not
217scheduling information associated with it. Org-mode can be used on 218imposed, but a large amount of functionality is available when you
218different levels and in different ways, for example 219need it. Org-mode can be used on different levels and in different
220ways, for example
219 221
220@example 222@example
221@r{@bullet{} as an outline extension with visibility cycling and structure editing} 223@r{@bullet{} as an outline extension with visibility cycling and structure editing}
222@r{@bullet{} as an ASCII system and table editor to take structured notes} 224@r{@bullet{} as an ASCII system and table editor to take structured notes}
223@r{@bullet{} as an ASCII table editor with some spreadsheet-like capabilities} 225@r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
224@r{@bullet{} as a simple hypertext system, with HTML export} 226@r{@bullet{} as a simple hypertext system, with HTML export}
225@r{@bullet{} as a TODO list editor} 227@r{@bullet{} as a TODO list editor}
226@r{@bullet{} as a full agenda and planner with deadlines and work scheduling} 228@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
@@ -324,6 +326,7 @@ edit the structure of the document.
324* Structure editing:: Changing sequence and level of headlines 326* Structure editing:: Changing sequence and level of headlines
325* Archiving:: Move done task trees to a different place 327* Archiving:: Move done task trees to a different place
326* Sparse trees:: Matches embedded in context 328* Sparse trees:: Matches embedded in context
329* Plain Lists:: Editing hand-formatted lists
327@end menu 330@end menu
328 331
329@node Outlines, Headlines, Document Structure, Document Structure 332@node Outlines, Headlines, Document Structure, Document Structure
@@ -347,7 +350,8 @@ key.
347@cindex outline tree 350@cindex outline tree
348 351
349Headlines define the structure of an outline tree. The Headlines in 352Headlines define the structure of an outline tree. The Headlines in
350Org-mode start with one or more stars, for example 353Org-mode start with one or more stars, on the left margin. For
354example
351 355
352@example 356@example
353* Top level headline 357* Top level headline
@@ -478,7 +482,8 @@ Promote the current subtree by one level
478Demote the current subtree by one level 482Demote the current subtree by one level
479@kindex M-S-@key{up} 483@kindex M-S-@key{up}
480@item M-S-@key{up} 484@item M-S-@key{up}
481Move subtree up (swap with previous subtree of same level) 485Move subtree up (swap with previous subtree of same
486level)
482@kindex M-S-@key{down} 487@kindex M-S-@key{down}
483@item M-S-@key{down} 488@item M-S-@key{down}
484Move subtree down (swap with next subtree of same level) 489Move subtree down (swap with next subtree of same level)
@@ -530,7 +535,7 @@ this, see the documentation string of the variable
530agenda, archiving to a different file is a good way to keep archived 535agenda, archiving to a different file is a good way to keep archived
531trees from contributing agenda items. 536trees from contributing agenda items.
532 537
533@node Sparse trees, , Archiving, Document Structure 538@node Sparse trees, Plain Lists, Archiving, Document Structure
534@section Sparse trees 539@section Sparse trees
535@cindex sparse trees 540@cindex sparse trees
536@cindex trees, sparse 541@cindex trees, sparse
@@ -573,6 +578,69 @@ Or you can use the command @kbd{C-c C-x v} to copy the visible part of
573the document to another file (extension @file{.txt}) which then can be 578the document to another file (extension @file{.txt}) which then can be
574printed in any desired way. 579printed in any desired way.
575 580
581@node Plain Lists, , Sparse trees, Document Structure
582@section Plain Lists
583@cindex plain lists
584@cindex lists, plain
585
586Headlines define the entire structure of the Org-mode file, and also
587lists (for example TODO items (@pxref{TODO items}) should be created
588using headline levels. However, when taking notes, the plain text is
589sometimes easier to read with hand-formatted lists. Org-mode supports
590editing such lists, and the HTML exporter (@pxref{Exporting}) does
591parse and format them.
592
593Org-mode knows ordered and unordered lists. Unordered list items
594start with @samp{-}, @samp{+}, or @samp{*}@footnote{When using
595@samp{*} as a bullet, lines must be indented or they will be seen as
596top-level headlines.} as bullets. Ordered list items start with
597@samp{1.} or @samp{1)}. Items belonging to the same list must have
598the same indentation on the first line. In particular, if an ordered
599list reaches number @samp{10.}, also the 2--digit numbers must be
600written left-aligned with the other numbers in the list. Indentation
601also determines the end of a list item. It ends before the next line
602that is indented like the bullet/number, or less. For example:
603
604@example
605** Lord of the Rings
606My favorite scenes are (in this order)
6071. Eowyns fight with the witch-king
608 + this was already my favorite scene in the book
609 + I really like Miranda Otto.
6102. The attack of the Rohirrim
6113. Peter Jackson being shot by Legolas
612 - on DVD only
613 He makes a really funny face when it happens.
614@end example
615
616Org-mode supports these lists by tuning filling and wrapping commands
617to correctly deal with them. Futhermore, the following commands act
618on items when the cursor is in the first line of an item (the line
619with the bullet or number).
620
621@table @kbd
622@kindex M-S-@key{up}
623@kindex M-S-@key{down}
624@item M-S-@key{up}
625@itemx M-S-@key{down}
626Move the item including subitems up/down (swap with previous/next item
627of same intentation). If the list is ordered, renumbering is
628automatic.
629@kindex M-S-@key{left}
630@kindex M-S-@key{right}
631@item M-S-@key{left}
632@itemx M-S-@key{right}
633Decrease/increase the indentation of the item, including subitems.
634Initially, the item tree is selected based on current indentation.
635When these commands are executed several times in direct succession,
636the initially selected region is used, even if the new indentation
637would imply a different hierarchy. To use the new hierarchy, break
638the command chain with a cursor motion or so.
639@kindex C-c C-c
640@item C-c C-c
641Renumber the ordered list at the cursor.
642@end table
643
576@node Tables, Hyperlinks, Document Structure, Top 644@node Tables, Hyperlinks, Document Structure, Top
577@chapter Tables 645@chapter Tables
578@cindex tables 646@cindex tables
@@ -2265,29 +2333,9 @@ exporter implements the following interpretation:
2265@cindex lists, hand-formatted 2333@cindex lists, hand-formatted
2266@item 2334@item
2267Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as 2335Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as
2268bullet@footnote{When using @samp{*} as a bullet, lines must be 2336bullet, or with @samp{1.} or @samp{2)} as enumerator will be recognized and
2269indented or they will be seen as top-level headlines.}, or 2337transformed into HTML lists. See @xref{Plain Lists}.
2270with @samp{1.}, @samp{2.} as enumerator will be recognized and 2338
2271transformed into HTML lists. The
2272lists is terminated by the next headline, or by a line that is
2273indented like the bullet/enumerator in the first line, or less. For
2274example:
2275@example
2276** Lord of the Rings
2277Some of my favorite scenes are
2278- Eowyns fight
2279- The attack of the Roherim
2280 (this may be favorite one)
2281- Peter Jackson being shot by Legolas,
2282 in the extended DVD edition only
2283My favorite characters are (in this sequence):
2284 1. Sam
2285 2. Eowyn
2286 3. Aragorn
2287Among the others I don't really have a preference.
2288@end example
2289By default, only no nesting of lists is allowed, but see the variable
2290@code{org-export-local-list-max-depth}.
2291@cindex underlined text 2339@cindex underlined text
2292@cindex bold text 2340@cindex bold text
2293@cindex italic text 2341@cindex italic text
@@ -2772,9 +2820,9 @@ Kevin Rogers contributed code to access VM files on remote hosts.
2772Juergen Vollmer contributed code generating the table of contents 2820Juergen Vollmer contributed code generating the table of contents
2773in HTML output, and other export improvements. 2821in HTML output, and other export improvements.
2774@item 2822@item
2775Christian Egli converted the documentation into TeXInfo format. He 2823Christian Egli converted the documentation into TeXInfo format and
2776also showed me his plans for a multifile summary for Org-mode. Some of 2824patched basic CSS formatting support into the HTML exporter. He also
2777his ideas have found their way into the agenda. 2825inspired the agenda by showing me his plans for a multifile summary.
2778@item 2826@item
2779Philip Rooke created the Org-mode reference card. He also helped with 2827Philip Rooke created the Org-mode reference card. He also helped with
2780beta testing and contributed a number of very useful ideas. 2828beta testing and contributed a number of very useful ideas.
@@ -2790,10 +2838,10 @@ Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
2790@item 2838@item
2791Scheduling TODO items was inspired by John Wiegley's @file{planner.el}. 2839Scheduling TODO items was inspired by John Wiegley's @file{planner.el}.
2792@item 2840@item
2793Sacha Chua, the current maintainer of Planner, offered linking code 2841Sacha Chua, the current maintainer of Planner, suggested to copy
2794from Planner. I made use of the offer for links to RMAIL and Wanderlust. 2842linking code from Planner (I took code for RMAIL and Wanderlust).
2795@item 2843@item
2796Oliver Oppitz sent several useful suggestions. 2844Oliver Oppitz made useful suggestions.
2797@item 2845@item
2798Carsten Wimmer suggested some changes and helped fix a bug in linking 2846Carsten Wimmer suggested some changes and helped fix a bug in linking
2799to GNUS. 2847to GNUS.
@@ -2807,8 +2855,8 @@ Emacs-Lisp compiler happy.
2807Kai Grossjohann pointed out that a number of key bindings in Org-mode 2855Kai Grossjohann pointed out that a number of key bindings in Org-mode
2808conflict with other packages. 2856conflict with other packages.
2809@item 2857@item
2810Roland Winkler pointed out that additional keybindings are need to use 2858Roland Winkler pointed out that additional keybindings are needed to
2811Org-mode on a tty. 2859use Org-mode on a tty.
2812@end itemize 2860@end itemize
2813 2861
2814@node Index, Key Index, Miscellaneous, Top 2862@node Index, Key Index, Miscellaneous, Top
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 7436cd7b47e..ca1f8d94c46 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,13 @@
12005-11-26 Chong Yidong <cyd@stupidchicken.com>
2
3 * emacs.rc: Use new icons.
4
52005-11-26 Eli Zaretskii <eliz@gnu.org>
6
7 * emacs21.ico: Renamed from emacs.ico.
8 * emacs.ico: New icons from Andrew Zhilin
9 <andrew_zhilin@yahoo.com>.
10
12005-09-10 Eli Zaretskii <eliz@gnu.org> 112005-09-10 Eli Zaretskii <eliz@gnu.org>
2 12
3 * config.nt (HAVE_GET_CURRENT_DIR_NAME): Undefine. 13 * config.nt (HAVE_GET_CURRENT_DIR_NAME): Undefine.
diff --git a/nt/emacs.rc b/nt/emacs.rc
index 72008c78b94..fd75506b97f 100644
--- a/nt/emacs.rc
+++ b/nt/emacs.rc
@@ -1,4 +1,4 @@
1Emacs ICON icons\gnu2a32t.ico 1Emacs ICON icons\emacs.ico
232649 CURSOR icons\hand.cur 232649 CURSOR icons\hand.cur
3 3
4#ifndef VS_VERSION_INFO 4#ifndef VS_VERSION_INFO
diff --git a/nt/icons/emacs.ico b/nt/icons/emacs.ico
index 39a6a6a7c84..41a3e9cd545 100644
--- a/nt/icons/emacs.ico
+++ b/nt/icons/emacs.ico
Binary files differ
diff --git a/nt/icons/emacs21.ico b/nt/icons/emacs21.ico
new file mode 100644
index 00000000000..39a6a6a7c84
--- /dev/null
+++ b/nt/icons/emacs21.ico
Binary files differ
diff --git a/src/ChangeLog b/src/ChangeLog
index 105a03a2b8c..256172630ef 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,60 @@
12005-11-30 L$,1 q(Brentey K,Aa(Broly <lorentey@elte.hu>
2
3 * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer.
4
52005-11-30 Kim F. Storm <storm@cua.dk>
6
7 * alloc.c: Include fcntl.h. Define O_WRONLY if not defined.
8 (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by
9 passing it to `emacs_write'.
10
112005-11-29 Ari Roponen <arjuropo@cc.jyu.fi> (tiny change)
12
13 * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'.
14
152005-11-27 Richard M. Stallman <rms@gnu.org>
16
17 * window.c (adjust_window_trailing_edge): New function.
18 (Fadjust_window_trailing_edge): New function.
19 (syms_of_window): Defsubr it.
20 (window_deletion_count): New variable.
21 (delete_window): Update window_deletion_count.
22
232005-11-26 Eli Zaretskii <eliz@gnu.org>
24
25 * minibuf.c (syms_of_minibuf): Mention the extension of
26 `completion-auto-help's meaning by complete.el.
27
282005-11-26 Henrik Enberg <henrik.enberg@telia.com>
29
30 * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
31 Handle :inherit property as a lisp expression.
32
332005-11-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
34
35 * macterm.c (Qcontrol): Rename from Qctrl. All uses changed.
36 (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper,
37 Qsuper, and Qmodifier_value.
38 (Vmac_control_modifier, Vmac_option_modifier)
39 (Vmac_command_modifier, Vmac_function_modifier)
40 (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2)
41 (Vmac_pass_command_to_system, Vmac_pass_control_to_system)
42 (Vmac_charset_info_alist): Doc fixes.
43
442005-11-23 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
45
46 * emacs.c (main) [MAC_OSX]: Change working directory to home
47 directory if `-psn_*' option is specified.
48
49 * mac.c (DECODE_UTF_8): Remove macro.
50 [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function
51 created from cfstring_to_lisp.
52 [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it.
53 (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise.
54
55 * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]:
56 Add prototype.
57
12005-11-21 Ken Raeburn <raeburn@mit.edu> 582005-11-21 Ken Raeburn <raeburn@mit.edu>
2 59
3 * keymap.c (shadow_lookup): Use make_number to pass a number to 60 * keymap.c (shadow_lookup): Use make_number to pass a number to
@@ -9,8 +66,8 @@
9 66
102005-11-20 Chong Yidong <cyd@stupidchicken.com> 672005-11-20 Chong Yidong <cyd@stupidchicken.com>
11 68
12 * xfaces.c (Finternal_set_lisp_face_attribute): Use 69 * xfaces.c (Finternal_set_lisp_face_attribute):
13 :ignore-defface for new frame defaults when `unspecified' is 70 Use :ignore-defface for new frame defaults when `unspecified' is
14 supplied. 71 supplied.
15 (Finternal_get_lisp_face_attribute): Hide :ignore-defface. 72 (Finternal_get_lisp_face_attribute): Hide :ignore-defface.
16 (merge_face_vectors): Don't do :ignore-defface overwriting here. 73 (merge_face_vectors): Don't do :ignore-defface overwriting here.
@@ -35,24 +92,22 @@
35 92
36 * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold): 93 * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold):
37 New variable. 94 New variable.
38 [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New 95 [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun.
39 function.
40 (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it. 96 (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it.
41 [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if 97 [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if
42 font size is smaller than or equal to cg_text_anti_aliasing_threshold. 98 font size is smaller than or equal to cg_text_anti_aliasing_threshold.
43 99
442005-11-17 Chong Yidong <cyd@stupidchicken.com> 1002005-11-17 Chong Yidong <cyd@stupidchicken.com>
45 101
46 * image.c (x_create_bitmap_from_xpm_data): Free attributes on 102 * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail.
47 fail.
48 103
49 * xfaces.c (Qignore_defface): New variable. 104 * xfaces.c (Qignore_defface): New variable.
50 (syms_of_xfaces): Provide `:ignore-defface'. 105 (syms_of_xfaces): Provide `:ignore-defface'.
51 (IGNORE_DEFFACE_P): New macro. 106 (IGNORE_DEFFACE_P): New macro.
52 (check_lface_attrs, lface_fully_specified_p) 107 (check_lface_attrs, lface_fully_specified_p)
53 (Finternal_set_lisp_face_attribute) 108 (Finternal_set_lisp_face_attribute)
54 (Fface_attribute_relative_p, Fmerge_face_attribute): Handle 109 (Fface_attribute_relative_p, Fmerge_face_attribute):
55 Qignore_defface as a possible value. 110 Handle Qignore_defface as a possible value.
56 (merge_face_vectors): The merged face is `unspecified' if the 111 (merge_face_vectors): The merged face is `unspecified' if the
57 mergee specifies `:ignore-defface'. 112 mergee specifies `:ignore-defface'.
58 113
@@ -593,8 +648,8 @@
593 * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to 648 * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to
594 get end of text rows. Obtain header-line/mode-line rows directly. 649 get end of text rows. Obtain header-line/mode-line rows directly.
595 650
596 * xterm.c, w32term.c, macterm.c (note_mouse_movement): Restore 651 * xterm.c, w32term.c, macterm.c (note_mouse_movement):
597 help_echo_string if mouse is moved inside last_mouse_glyph. 652 Restore help_echo_string if mouse is moved inside last_mouse_glyph.
598 653
5992005-10-12 Kim F. Storm <storm@cua.dk> 6542005-10-12 Kim F. Storm <storm@cua.dk>
600 655
@@ -659,8 +714,8 @@
659 (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. 714 (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name.
660 Don't use Fdowncase because family name is already lowered by 715 Don't use Fdowncase because family name is already lowered by
661 decode_mac_font_name. 716 decode_mac_font_name.
662 (init_font_name_table): Always call decode_mac_font_name. Add 717 (init_font_name_table): Always call decode_mac_font_name.
663 pair of family name and its reference to fm_font_family_alist. 718 Add pair of family name and its reference to fm_font_family_alist.
664 (mac_clear_font_name_table): Clear fm_font_family_alist. 719 (mac_clear_font_name_table): Clear fm_font_family_alist.
665 (XLoadQueryFont): Move font size parsing part to parse_x_font_name. 720 (XLoadQueryFont): Move font size parsing part to parse_x_font_name.
666 Lookup fm_font_family_alist to get font family reference. 721 Lookup fm_font_family_alist to get font family reference.
@@ -760,8 +815,8 @@
760 (x_fix_overlapping_area): Add new OVERLAPS arg. 815 (x_fix_overlapping_area): Add new OVERLAPS arg.
761 (get_glyph_string_clip_rects): Add extern. 816 (get_glyph_string_clip_rects): Add extern.
762 817
763 * dispnew.c (redraw_overlapping_rows): Call 818 * dispnew.c (redraw_overlapping_rows):
764 rif->fix_overlapping_area with new OVERLAPS arg as redrawn part. 819 Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part.
765 820
766 * xdisp.c: Rename member for_overlaps_p in struct glyph_string to 821 * xdisp.c: Rename member for_overlaps_p in struct glyph_string to
767 for_overlaps. 822 for_overlaps.
@@ -1106,8 +1161,8 @@
1106 1161
1107 * xsmfns.c: (get_current_dir_name): Remove prototype. 1162 * xsmfns.c: (get_current_dir_name): Remove prototype.
1108 1163
1109 * lisp.h: (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: Add 1164 * lisp.h: (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
1110 prototype. 1165 Add prototype.
1111 1166
1112 * sysdep.c [WINDOWSNT]: Add prototype for getwd. 1167 * sysdep.c [WINDOWSNT]: Add prototype for getwd.
1113 Don't #undef NULL after including blockinput.h. 1168 Don't #undef NULL after including blockinput.h.
diff --git a/src/alloc.c b/src/alloc.c
index bc48f7bb3b4..5ab28bc0cde 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -66,6 +66,14 @@ Boston, MA 02110-1301, USA. */
66extern POINTER_TYPE *sbrk (); 66extern POINTER_TYPE *sbrk ();
67#endif 67#endif
68 68
69#ifdef HAVE_FCNTL_H
70#define INCLUDED_FCNTL
71#include <fcntl.h>
72#endif
73#ifndef O_WRONLY
74#define O_WRONLY 1
75#endif
76
69#ifdef DOUG_LEA_MALLOC 77#ifdef DOUG_LEA_MALLOC
70 78
71#include <malloc.h> 79#include <malloc.h>
@@ -4498,21 +4506,37 @@ int
4498valid_lisp_object_p (obj) 4506valid_lisp_object_p (obj)
4499 Lisp_Object obj; 4507 Lisp_Object obj;
4500{ 4508{
4509 void *p;
4501#if !GC_MARK_STACK 4510#if !GC_MARK_STACK
4502 /* Cannot determine this. */ 4511 int fd;
4503 return -1;
4504#else 4512#else
4505 void *p;
4506 struct mem_node *m; 4513 struct mem_node *m;
4514#endif
4507 4515
4508 if (INTEGERP (obj)) 4516 if (INTEGERP (obj))
4509 return 1; 4517 return 1;
4510 4518
4511 p = (void *) XPNTR (obj); 4519 p = (void *) XPNTR (obj);
4512
4513 if (PURE_POINTER_P (p)) 4520 if (PURE_POINTER_P (p))
4514 return 1; 4521 return 1;
4515 4522
4523#if !GC_MARK_STACK
4524 /* We need to determine whether it is safe to access memory at
4525 address P. Obviously, we cannot just access it (we would SEGV
4526 trying), so we trick the o/s to tell us whether p is a valid
4527 pointer. Unfortunately, we cannot use NULL_DEVICE here, as
4528 emacs_write may not validate p in that case. */
4529 if ((fd = emacs_open("__Valid__Lisp__Object__", O_CREAT | O_WRONLY | O_TRUNC, 0666)) >= 0)
4530 {
4531 int valid = emacs_write(fd, (char *)p, 16) == 16;
4532 emacs_close(fd);
4533 unlink("__Valid__Lisp__Object__");
4534 return valid;
4535 }
4536
4537 return -1;
4538#else
4539
4516 m = mem_find (p); 4540 m = mem_find (p);
4517 4541
4518 if (m == MEM_NIL) 4542 if (m == MEM_NIL)
diff --git a/src/atimer.c b/src/atimer.c
index f8ed1b265ec..d260f67d24d 100644
--- a/src/atimer.c
+++ b/src/atimer.c
@@ -231,7 +231,7 @@ stop_other_atimers (t)
231 struct atimer *p, *prev; 231 struct atimer *p, *prev;
232 232
233 /* See if T is active. */ 233 /* See if T is active. */
234 for (p = atimers, prev = 0; p && p != t; p = p->next) 234 for (p = atimers, prev = NULL; p && p != t; prev = p, p = p->next)
235 ; 235 ;
236 236
237 if (p == t) 237 if (p == t)
diff --git a/src/buffer.c b/src/buffer.c
index 5e304d5a1bb..a20f6a2d683 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1722,9 +1722,6 @@ do not put this buffer at the front of the list of recently selected ones. */)
1722 } 1722 }
1723 } 1723 }
1724 Fset_buffer (buf); 1724 Fset_buffer (buf);
1725 if (NILP (norecord))
1726 /* Why bother ? Fselect_window will do it for us anyway. -stef */
1727 record_buffer (buf);
1728 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil), norecord); 1725 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil), norecord);
1729 return buf; 1726 return buf;
1730} 1727}
diff --git a/src/emacs.c b/src/emacs.c
index 33941ae9227..ff1a40283fc 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -963,9 +963,15 @@ main (argc, argv
963 963
964#ifdef MAC_OSX 964#ifdef MAC_OSX
965 /* Skip process serial number passed in the form -psn_x_y as 965 /* Skip process serial number passed in the form -psn_x_y as
966 command-line argument. */ 966 command-line argument. The WindowServer adds this option when
967 Emacs is invoked from the Finder or by the `open' command. In
968 these cases, the working directory becomes `/', so we change it
969 to the user's home directory. */
967 if (argc > skip_args + 1 && strncmp (argv[skip_args+1], "-psn_", 5) == 0) 970 if (argc > skip_args + 1 && strncmp (argv[skip_args+1], "-psn_", 5) == 0)
968 skip_args++; 971 {
972 chdir (getenv ("HOME"));
973 skip_args++;
974 }
969#endif /* MAC_OSX */ 975#endif /* MAC_OSX */
970 976
971#ifdef VMS 977#ifdef VMS
diff --git a/src/mac.c b/src/mac.c
index 2493945727d..76ba3d41798 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -265,7 +265,6 @@ posix_to_mac_pathname (const char *ufn, char *mfn, int mfnbuflen)
265#if TARGET_API_MAC_CARBON 265#if TARGET_API_MAC_CARBON
266static Lisp_Object Qstring, Qnumber, Qboolean, Qdate, Qdata; 266static Lisp_Object Qstring, Qnumber, Qboolean, Qdate, Qdata;
267static Lisp_Object Qarray, Qdictionary; 267static Lisp_Object Qarray, Qdictionary;
268#define DECODE_UTF_8(str) code_convert_string_norecord (str, Qutf_8, 0)
269 268
270struct cfdict_context 269struct cfdict_context
271{ 270{
@@ -336,12 +335,11 @@ cfdata_to_lisp (data)
336} 335}
337 336
338 337
339/* From CFString to a lisp string. Never returns a unibyte string 338/* From CFString to a lisp string. Returns a unibyte string
340 (even if it only contains ASCII characters). 339 containing a UTF-8 byte sequence. */
341 This may cause GC during code conversion. */
342 340
343Lisp_Object 341Lisp_Object
344cfstring_to_lisp (string) 342cfstring_to_lisp_nodecode (string)
345 CFStringRef string; 343 CFStringRef string;
346{ 344{
347 Lisp_Object result = Qnil; 345 Lisp_Object result = Qnil;
@@ -362,9 +360,23 @@ cfstring_to_lisp (string)
362 } 360 }
363 } 361 }
364 362
363 return result;
364}
365
366
367/* From CFString to a lisp string. Never returns a unibyte string
368 (even if it only contains ASCII characters).
369 This may cause GC during code conversion. */
370
371Lisp_Object
372cfstring_to_lisp (string)
373 CFStringRef string;
374{
375 Lisp_Object result = cfstring_to_lisp_nodecode (string);
376
365 if (!NILP (result)) 377 if (!NILP (result))
366 { 378 {
367 result = DECODE_UTF_8 (result); 379 result = code_convert_string_norecord (result, Qutf_8, 0);
368 /* This may be superfluous. Just to make sure that the result 380 /* This may be superfluous. Just to make sure that the result
369 is a multibyte string. */ 381 is a multibyte string. */
370 result = string_to_multibyte (result); 382 result = string_to_multibyte (result);
@@ -1141,7 +1153,7 @@ xrm_get_preference_database (application)
1141 CFSetGetValues (key_set, (const void **)keys); 1153 CFSetGetValues (key_set, (const void **)keys);
1142 for (index = 0; index < count; index++) 1154 for (index = 0; index < count; index++)
1143 { 1155 {
1144 res_name = SDATA (cfstring_to_lisp (keys[index])); 1156 res_name = SDATA (cfstring_to_lisp_nodecode (keys[index]));
1145 quarks = parse_resource_name (&res_name); 1157 quarks = parse_resource_name (&res_name);
1146 if (!(NILP (quarks) || *res_name)) 1158 if (!(NILP (quarks) || *res_name))
1147 { 1159 {
diff --git a/src/macterm.c b/src/macterm.c
index 6c74e429726..2976a84e190 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -199,7 +199,7 @@ extern EMACS_INT extra_keyboard_modifiers;
199 199
200/* The keysyms to use for the various modifiers. */ 200/* The keysyms to use for the various modifiers. */
201 201
202static Lisp_Object Qalt, Qhyper, Qsuper, Qctrl, 202static Lisp_Object Qalt, Qhyper, Qsuper, Qcontrol,
203 Qmeta, Qmodifier_value; 203 Qmeta, Qmodifier_value;
204 204
205extern int inhibit_window_system; 205extern int inhibit_window_system;
@@ -10923,17 +10923,19 @@ syms_of_macterm ()
10923 x_error_message_string = Qnil; 10923 x_error_message_string = Qnil;
10924#endif 10924#endif
10925 10925
10926 Qcontrol = intern ("control"); staticpro (&Qcontrol);
10927 Qmeta = intern ("meta"); staticpro (&Qmeta);
10928 Qalt = intern ("alt"); staticpro (&Qalt);
10929 Qhyper = intern ("hyper"); staticpro (&Qhyper);
10930 Qsuper = intern ("super"); staticpro (&Qsuper);
10926 Qmodifier_value = intern ("modifier-value"); 10931 Qmodifier_value = intern ("modifier-value");
10927 Qctrl = intern ("ctrl"); 10932 staticpro (&Qmodifier_value);
10928 Fput (Qctrl, Qmodifier_value, make_number (ctrl_modifier)); 10933
10929 Qmeta = intern ("meta"); 10934 Fput (Qcontrol, Qmodifier_value, make_number (ctrl_modifier));
10930 Fput (Qmeta, Qmodifier_value, make_number (meta_modifier)); 10935 Fput (Qmeta, Qmodifier_value, make_number (meta_modifier));
10931 Qalt = intern ("alt"); 10936 Fput (Qalt, Qmodifier_value, make_number (alt_modifier));
10932 Fput (Qalt, Qmodifier_value, make_number (alt_modifier)); 10937 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier));
10933 Qhyper = intern ("hyper"); 10938 Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
10934 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier));
10935 Qsuper = intern ("super");
10936 Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
10937 10939
10938 Qapplication = intern ("application"); staticpro (&Qapplication); 10940 Qapplication = intern ("application"); staticpro (&Qapplication);
10939 Qabout = intern ("about"); staticpro (&Qabout); 10941 Qabout = intern ("about"); staticpro (&Qabout);
@@ -10980,63 +10982,61 @@ syms_of_macterm ()
10980 staticpro (&last_mouse_motion_frame); 10982 staticpro (&last_mouse_motion_frame);
10981 last_mouse_motion_frame = Qnil; 10983 last_mouse_motion_frame = Qnil;
10982 10984
10983
10984
10985/* Variables to configure modifier key assignment. */ 10985/* Variables to configure modifier key assignment. */
10986 10986
10987 DEFVAR_LISP ("mac-control-modifier", &Vmac_control_modifier, 10987 DEFVAR_LISP ("mac-control-modifier", &Vmac_control_modifier,
10988 doc: /* Modifier key assumed when the Mac control key is pressed. 10988 doc: /* Modifier key assumed when the Mac control key is pressed.
10989The value can be `alt', `ctrl', `hyper', or `super' for the respective 10989The value can be `alt', `control', `hyper', or `super' for the
10990modifier. The default is `ctrl'. */); 10990respective modifier. The default is `control'. */);
10991 Vmac_control_modifier = Qctrl; 10991 Vmac_control_modifier = Qcontrol;
10992 10992
10993 DEFVAR_LISP ("mac-option-modifier", &Vmac_option_modifier, 10993 DEFVAR_LISP ("mac-option-modifier", &Vmac_option_modifier,
10994 doc: /* Modifier key assumed when the Mac alt/option key is pressed. 10994 doc: /* Modifier key assumed when the Mac alt/option key is pressed.
10995The value can be `alt', `ctrl', `hyper', or `super' for the respective 10995The value can be `alt', `control', `hyper', or `super' for the
10996modifier. If the value is nil then the key will act as the normal 10996respective modifier. If the value is nil then the key will act as the
10997Mac control modifier, and the option key can be used to compose 10997normal Mac control modifier, and the option key can be used to compose
10998characters depending on the chosen Mac keyboard setting. */); 10998characters depending on the chosen Mac keyboard setting. */);
10999 Vmac_option_modifier = Qnil; 10999 Vmac_option_modifier = Qnil;
11000 11000
11001 DEFVAR_LISP ("mac-command-modifier", &Vmac_command_modifier, 11001 DEFVAR_LISP ("mac-command-modifier", &Vmac_command_modifier,
11002 doc: /* Modifier key assumed when the Mac command key is pressed. 11002 doc: /* Modifier key assumed when the Mac command key is pressed.
11003The value can be `alt', `ctrl', `hyper', or `super' for the respective 11003The value can be `alt', `control', `hyper', or `super' for the
11004modifier. The default is `meta'. */); 11004respective modifier. The default is `meta'. */);
11005 Vmac_command_modifier = Qmeta; 11005 Vmac_command_modifier = Qmeta;
11006 11006
11007 DEFVAR_LISP ("mac-function-modifier", &Vmac_function_modifier, 11007 DEFVAR_LISP ("mac-function-modifier", &Vmac_function_modifier,
11008 doc: /* Modifier key assumed when the Mac function key is pressed. 11008 doc: /* Modifier key assumed when the Mac function key is pressed.
11009The value can be `alt', `ctrl', `hyper', or `super' for the respective 11009The value can be `alt', `control', `hyper', or `super' for the
11010modifier. Note that remapping the function key may lead to unexpected 11010respective modifier. Note that remapping the function key may lead to
11011results for some keys on non-US/GB keyboards. */); 11011unexpected results for some keys on non-US/GB keyboards. */);
11012 Vmac_function_modifier = Qnil; 11012 Vmac_function_modifier = Qnil;
11013 11013
11014 DEFVAR_LISP ("mac-emulate-three-button-mouse", 11014 DEFVAR_LISP ("mac-emulate-three-button-mouse",
11015 &Vmac_emulate_three_button_mouse, 11015 &Vmac_emulate_three_button_mouse,
11016 doc: /* t means that when the option-key is held down while pressing the 11016 doc: /* Specify a way of three button mouse emulation.
11017mouse button, the click will register as mouse-2 and while the 11017The value can be nil, t, or the symbol `reverse'.
11018command-key is held down, the click will register as mouse-3. 11018nil means that no emulation should be done and the modifiers should be
11019'reverse means that the option-key will register for mouse-3 11019placed on the mouse-1 event.
11020and the command-key will register for mouse-2. nil means that 11020t means that when the option-key is held down while pressing the mouse
11021no emulation should be done and the modifiers should be placed 11021button, the click will register as mouse-2 and while the command-key
11022on the mouse-1 event. */); 11022is held down, the click will register as mouse-3.
11023The symbol `reverse' means that the option-key will register for
11024mouse-3 and the command-key will register for mouse-2. */);
11023 Vmac_emulate_three_button_mouse = Qnil; 11025 Vmac_emulate_three_button_mouse = Qnil;
11024 11026
11025#if USE_CARBON_EVENTS 11027#if USE_CARBON_EVENTS
11026 DEFVAR_LISP ("mac-wheel-button-is-mouse-2", &Vmac_wheel_button_is_mouse_2, 11028 DEFVAR_LISP ("mac-wheel-button-is-mouse-2", &Vmac_wheel_button_is_mouse_2,
11027 doc: /* Non-nil means that the wheel button will be treated as mouse-2 and 11029 doc: /* Non-nil if the wheel button is mouse-2 and the right click mouse-3.
11028the right click will be mouse-3. 11030Otherwise, the right click will be treated as mouse-2 and the wheel
11029Otherwise, the right click will be mouse-2 and the wheel button mouse-3.*/); 11031button will be mouse-3. */);
11030 Vmac_wheel_button_is_mouse_2 = Qt; 11032 Vmac_wheel_button_is_mouse_2 = Qt;
11031 11033
11032 DEFVAR_LISP ("mac-pass-command-to-system", &Vmac_pass_command_to_system, 11034 DEFVAR_LISP ("mac-pass-command-to-system", &Vmac_pass_command_to_system,
11033 doc: /* If non-nil, the Mac \"Command\" key is passed on to the Mac 11035 doc: /* Non-nil if command key presses are passed on to the Mac Toolbox. */);
11034Toolbox for processing before Emacs sees it. */);
11035 Vmac_pass_command_to_system = Qt; 11036 Vmac_pass_command_to_system = Qt;
11036 11037
11037 DEFVAR_LISP ("mac-pass-control-to-system", &Vmac_pass_control_to_system, 11038 DEFVAR_LISP ("mac-pass-control-to-system", &Vmac_pass_control_to_system,
11038 doc: /* If non-nil, the Mac \"Control\" key is passed on to the Mac 11039 doc: /* Non-nil if control key presses are passed on to the Mac Toolbox. */);
11039Toolbox for processing before Emacs sees it. */);
11040 Vmac_pass_control_to_system = Qt; 11040 Vmac_pass_control_to_system = Qt;
11041 11041
11042#endif 11042#endif
@@ -11051,14 +11051,14 @@ may anti-alias the text. */);
11051 creating the terminal frame on Mac OS 9 before loading 11051 creating the terminal frame on Mac OS 9 before loading
11052 term/mac-win.elc. */ 11052 term/mac-win.elc. */
11053 DEFVAR_LISP ("mac-charset-info-alist", &Vmac_charset_info_alist, 11053 DEFVAR_LISP ("mac-charset-info-alist", &Vmac_charset_info_alist,
11054 doc: /* Alist linking Emacs character sets to Mac text encoding and Emacs coding system. 11054 doc: /* Alist of Emacs character sets vs text encodings and coding systems.
11055Each entry should be of the form: 11055Each entry should be of the form:
11056 11056
11057 (CHARSET-NAME TEXT-ENCODING CODING-SYSTEM) 11057 (CHARSET-NAME TEXT-ENCODING CODING-SYSTEM)
11058 11058
11059where CHARSET-NAME is a string used in font names to identify the 11059where CHARSET-NAME is a string used in font names to identify the
11060charset, TEXT-ENCODING is a TextEncodingBase value, and CODING_SYSTEM 11060charset, TEXT-ENCODING is a TextEncodingBase value in Mac, and
11061is a coding system corresponding to TEXT-ENCODING. */); 11061CODING_SYSTEM is a coding system corresponding to TEXT-ENCODING. */);
11062 Vmac_charset_info_alist = 11062 Vmac_charset_info_alist =
11063 Fcons (list3 (build_string ("mac-roman"), 11063 Fcons (list3 (build_string ("mac-roman"),
11064 make_number (smRoman), Qnil), Qnil); 11064 make_number (smRoman), Qnil), Qnil);
diff --git a/src/macterm.h b/src/macterm.h
index ca6f82021fe..214037c3346 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -581,6 +581,7 @@ extern void mac_clear_font_name_table P_ ((void));
581extern CFStringRef cfstring_create_with_utf8_cstring P_ ((const char *)); 581extern CFStringRef cfstring_create_with_utf8_cstring P_ ((const char *));
582extern CFStringRef cfstring_create_with_string P_ ((Lisp_Object)); 582extern CFStringRef cfstring_create_with_string P_ ((Lisp_Object));
583extern Lisp_Object cfdata_to_lisp P_ ((CFDataRef)); 583extern Lisp_Object cfdata_to_lisp P_ ((CFDataRef));
584extern Lisp_Object cfstring_to_lisp_nodecode P_ ((CFStringRef));
584extern Lisp_Object cfstring_to_lisp P_ ((CFStringRef)); 585extern Lisp_Object cfstring_to_lisp P_ ((CFStringRef));
585extern Lisp_Object cfnumber_to_lisp P_ ((CFNumberRef)); 586extern Lisp_Object cfnumber_to_lisp P_ ((CFNumberRef));
586extern Lisp_Object cfdate_to_lisp P_ ((CFDateRef)); 587extern Lisp_Object cfdate_to_lisp P_ ((CFDateRef));
diff --git a/src/minibuf.c b/src/minibuf.c
index 71a0f15b72a..4aa6dde6cac 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -2776,7 +2776,9 @@ elements are deleted. */);
2776 history_delete_duplicates = 0; 2776 history_delete_duplicates = 0;
2777 2777
2778 DEFVAR_LISP ("completion-auto-help", &Vcompletion_auto_help, 2778 DEFVAR_LISP ("completion-auto-help", &Vcompletion_auto_help,
2779 doc: /* *Non-nil means automatically provide help for invalid completion input. */); 2779 doc: /* *Non-nil means automatically provide help for invalid completion input.
2780Under Partial Completion mode, a non-nil, non-t value has a special meaning;
2781see the doc string of `partial-completion-mode' for more details. */);
2780 Vcompletion_auto_help = Qt; 2782 Vcompletion_auto_help = Qt;
2781 2783
2782 DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case, 2784 DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case,
diff --git a/src/window.c b/src/window.c
index 69cee518ca4..2d974b4647f 100644
--- a/src/window.c
+++ b/src/window.c
@@ -212,6 +212,10 @@ Lisp_Object Vwindow_configuration_change_hook;
212 212
213Lisp_Object Vscroll_preserve_screen_position; 213Lisp_Object Vscroll_preserve_screen_position;
214 214
215/* Incremented by 1 whenever a window is deleted. */
216
217int window_deletion_count;
218
215#if 0 /* This isn't used anywhere. */ 219#if 0 /* This isn't used anywhere. */
216/* Nonzero means we can split a frame even if it is "unsplittable". */ 220/* Nonzero means we can split a frame even if it is "unsplittable". */
217static int inhibit_frame_unsplittable; 221static int inhibit_frame_unsplittable;
@@ -1335,7 +1339,7 @@ delete_window (window)
1335 CHECK_WINDOW (window); 1339 CHECK_WINDOW (window);
1336 p = XWINDOW (window); 1340 p = XWINDOW (window);
1337 1341
1338 /* It's okay to delete an already-deleted window. */ 1342 /* It's a no-op to delete an already-deleted window. */
1339 if (NILP (p->buffer) 1343 if (NILP (p->buffer)
1340 && NILP (p->hchild) 1344 && NILP (p->hchild)
1341 && NILP (p->vchild)) 1345 && NILP (p->vchild))
@@ -1399,6 +1403,9 @@ delete_window (window)
1399 } 1403 }
1400 } 1404 }
1401 1405
1406 /* Now we know we can delete this one. */
1407 window_deletion_count++;
1408
1402 tem = p->buffer; 1409 tem = p->buffer;
1403 /* tem is null for dummy parent windows 1410 /* tem is null for dummy parent windows
1404 (which have inferiors but not any contents themselves) */ 1411 (which have inferiors but not any contents themselves) */
@@ -4233,9 +4240,136 @@ enlarge_window (window, delta, horiz_flag, preserve_before)
4233 adjust_glyphs (XFRAME (WINDOW_FRAME (XWINDOW (window)))); 4240 adjust_glyphs (XFRAME (WINDOW_FRAME (XWINDOW (window))));
4234} 4241}
4235 4242
4243
4244/* Adjust the size of WINDOW by DELTA, moving only its trailing edge.
4245 HORIZ_FLAG nonzero means adjust the width, moving the right edge.
4246 zero means adjust the height, moving the bottom edge.
4247
4248 Following siblings of the selected window are resized to fulfill
4249 the size request. If they become too small in the process, they
4250 are not deleted; instead, we signal an error. */
4251
4252static void
4253adjust_window_trailing_edge (window, delta, horiz_flag)
4254 Lisp_Object window;
4255 int delta, horiz_flag;
4256{
4257 Lisp_Object parent, child;
4258 struct window *p;
4259 Lisp_Object old_config = Fcurrent_window_configuration (Qnil);
4260 int delcount = window_deletion_count;
4261
4262 /* Check values of window_min_width and window_min_height for
4263 validity. */
4264 check_min_window_sizes ();
4265
4266 if (NILP (window))
4267 window = Fselected_window ();
4268
4269 CHECK_WINDOW (window);
4270
4271 /* Give up if this window cannot be resized. */
4272 if (window_fixed_size_p (XWINDOW (window), horiz_flag, 1))
4273 error ("Window is not resizable");
4274
4275 while (1)
4276 {
4277 p = XWINDOW (window);
4278 parent = p->parent;
4279
4280 /* Make sure there is a following window. */
4281 if (NILP (parent)
4282 && (horiz_flag ? 1
4283 : NILP (XWINDOW (window)->next)))
4284 {
4285 Fset_window_configuration (old_config);
4286 error ("No other window following this one");
4287 }
4288
4289 /* Don't make this window too small. */
4290 if (XINT (CURSIZE (window)) + delta
4291 < (horiz_flag ? window_min_width : window_min_height))
4292 {
4293 Fset_window_configuration (old_config);
4294 error ("Cannot adjust window size as specified");
4295 }
4296
4297 /* Clear out some redisplay caches. */
4298 XSETFASTINT (p->last_modified, 0);
4299 XSETFASTINT (p->last_overlay_modified, 0);
4300
4301 /* Adjust this window's edge. */
4302 XSETINT (CURSIZE (window),
4303 XINT (CURSIZE (window)) + delta);
4304
4305 /* If this window has following siblings in the desired dimension,
4306 make them smaller.
4307 (If we reach the top of the tree and can never do this,
4308 we will fail and report an error, above.) */
4309 if (horiz_flag
4310 ? !NILP (XWINDOW (parent)->hchild)
4311 : !NILP (XWINDOW (parent)->vchild))
4312 {
4313 if (!NILP (XWINDOW (window)->next))
4314 {
4315 XSETINT (CURBEG (p->next),
4316 XINT (CURBEG (p->next)) + delta);
4317 size_window (p->next, XINT (CURSIZE (p->next)) - delta,
4318 horiz_flag, 0);
4319 break;
4320 }
4321 }
4322 else
4323 /* Here we have a chain of parallel siblings, in the other dimension.
4324 Change the size of the other siblings. */
4325 for (child = (horiz_flag
4326 ? XWINDOW (parent)->vchild
4327 : XWINDOW (parent)->hchild);
4328 ! NILP (child);
4329 child = XWINDOW (child)->next)
4330 if (! EQ (child, window))
4331 size_window (child, XINT (CURSIZE (child)) + delta,
4332 horiz_flag, 0);
4333
4334 window = parent;
4335 }
4336
4337 /* If we made a window so small it got deleted,
4338 we failed. Report failure. */
4339 if (delcount != window_deletion_count)
4340 {
4341 Fset_window_configuration (old_config);
4342 error ("Cannot adjust window size as specified");
4343 }
4344
4345 /* Adjust glyph matrices. */
4346 adjust_glyphs (XFRAME (WINDOW_FRAME (XWINDOW (window))));
4347}
4348
4236#undef CURBEG 4349#undef CURBEG
4237#undef CURSIZE 4350#undef CURSIZE
4238 4351
4352DEFUN ("adjust-window-trailing-edge", Fadjust_window_trailing_edge,
4353 Sadjust_window_trailing_edge, 3, 3, 0,
4354 doc: /* Adjust the bottom or right edge of WINDOW by DELTA.
4355If HORIZ_FLAG is t, that means adjust the width, moving the right edge.
4356Otherwise, adjust the height, moving the bottom edge.
4357
4358Following siblings of the selected window are resized to fulfill
4359the size request. If they become too small in the process, they
4360are not deleted; instead, we signal an error. */)
4361 (window, delta, horizontal)
4362 Lisp_Object window, delta, horizontal;
4363{
4364 CHECK_NUMBER (delta);
4365 adjust_window_trailing_edge (window, XINT (delta), !NILP (horizontal));
4366
4367 if (! NILP (Vwindow_configuration_change_hook))
4368 call1 (Vrun_hooks, Qwindow_configuration_change_hook);
4369
4370 return Qnil;
4371}
4372
4239 4373
4240 4374
4241/*********************************************************************** 4375/***********************************************************************
@@ -7116,6 +7250,7 @@ The selected frame is the one whose configuration has changed. */);
7116 defsubr (&Ssplit_window); 7250 defsubr (&Ssplit_window);
7117 defsubr (&Senlarge_window); 7251 defsubr (&Senlarge_window);
7118 defsubr (&Sshrink_window); 7252 defsubr (&Sshrink_window);
7253 defsubr (&Sadjust_window_trailing_edge);
7119 defsubr (&Sscroll_up); 7254 defsubr (&Sscroll_up);
7120 defsubr (&Sscroll_down); 7255 defsubr (&Sscroll_down);
7121 defsubr (&Sscroll_left); 7256 defsubr (&Sscroll_left);
diff --git a/src/xfaces.c b/src/xfaces.c
index c096b15ba1f..7c9230f1140 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -4704,7 +4704,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource",
4704 if (SYMBOLP (boolean_value)) 4704 if (SYMBOLP (boolean_value))
4705 value = boolean_value; 4705 value = boolean_value;
4706 } 4706 }
4707 else if (EQ (attr, QCbox)) 4707 else if (EQ (attr, QCbox) || EQ (attr, QCinherit))
4708 value = Fcar (Fread_from_string (value, Qnil, Qnil)); 4708 value = Fcar (Fread_from_string (value, Qnil, Qnil));
4709 4709
4710 return Finternal_set_lisp_face_attribute (face, attr, value, frame); 4710 return Finternal_set_lisp_face_attribute (face, attr, value, frame);