aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2005-07-22 08:27:27 +0000
committerMiles Bader2005-07-22 08:27:27 +0000
commit3674ae2f87e47a654524af689ea610ee3edeaca7 (patch)
tree58ea33c40c8521a79fb503080b8bb6231ffbf579
parent3e03f554f116e04ba860dcde7c6d862939911e16 (diff)
parent7929f858f8897f0448771a471f8afc5f244e4bca (diff)
downloademacs-3674ae2f87e47a654524af689ea610ee3edeaca7.tar.gz
emacs-3674ae2f87e47a654524af689ea610ee3edeaca7.zip
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-71
Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 485-492) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 92-94) - Merge from emacs--cvs-trunk--0 - Update from CVS
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/NEWS24
-rw-r--r--etc/PROBLEMS4
-rw-r--r--etc/grep.txt75
-rw-r--r--etc/orgcard.ps1272
-rw-r--r--etc/orgcard.tex29
-rw-r--r--lisp/ChangeLog618
-rw-r--r--lisp/abbrev.el13
-rw-r--r--lisp/add-log.el6
-rw-r--r--lisp/allout.el69
-rw-r--r--lisp/arc-mode.el26
-rw-r--r--lisp/array.el8
-rw-r--r--lisp/buff-menu.el28
-rw-r--r--lisp/calc/README3
-rw-r--r--lisp/calc/calc-aent.el3
-rw-r--r--lisp/calc/calc-alg.el3
-rw-r--r--lisp/calc/calc-arith.el3
-rw-r--r--lisp/calc/calc-bin.el3
-rw-r--r--lisp/calc/calc-comb.el3
-rw-r--r--lisp/calc/calc-cplx.el3
-rw-r--r--lisp/calc/calc-embed.el3
-rw-r--r--lisp/calc/calc-ext.el3
-rw-r--r--lisp/calc/calc-fin.el3
-rw-r--r--lisp/calc/calc-forms.el4
-rw-r--r--lisp/calc/calc-frac.el3
-rw-r--r--lisp/calc/calc-funcs.el3
-rw-r--r--lisp/calc/calc-graph.el3
-rw-r--r--lisp/calc/calc-help.el4
-rw-r--r--lisp/calc/calc-incom.el3
-rw-r--r--lisp/calc/calc-keypd.el3
-rw-r--r--lisp/calc/calc-lang.el3
-rw-r--r--lisp/calc/calc-macs.el3
-rw-r--r--lisp/calc/calc-map.el3
-rw-r--r--lisp/calc/calc-math.el3
-rw-r--r--lisp/calc/calc-misc.el3
-rw-r--r--lisp/calc/calc-mode.el3
-rw-r--r--lisp/calc/calc-mtx.el3
-rw-r--r--lisp/calc/calc-poly.el3
-rw-r--r--lisp/calc/calc-prog.el3
-rw-r--r--lisp/calc/calc-rewr.el3
-rw-r--r--lisp/calc/calc-rules.el3
-rw-r--r--lisp/calc/calc-sel.el4
-rw-r--r--lisp/calc/calc-stat.el3
-rw-r--r--lisp/calc/calc-store.el3
-rw-r--r--lisp/calc/calc-stuff.el3
-rw-r--r--lisp/calc/calc-trail.el3
-rw-r--r--lisp/calc/calc-undo.el3
-rw-r--r--lisp/calc/calc-units.el3
-rw-r--r--lisp/calc/calc-vec.el3
-rw-r--r--lisp/calc/calc-yank.el3
-rw-r--r--lisp/calc/calc.el6
-rw-r--r--lisp/calc/calcalg2.el3
-rw-r--r--lisp/calc/calcalg3.el3
-rw-r--r--lisp/calc/calccomp.el3
-rw-r--r--lisp/calc/calcsel2.el3
-rw-r--r--lisp/calculator.el15
-rw-r--r--lisp/calendar/calendar.el8
-rw-r--r--lisp/calendar/icalendar.el3
-rw-r--r--lisp/comint.el57
-rw-r--r--lisp/compare-w.el26
-rw-r--r--lisp/composite.el6
-rw-r--r--lisp/cus-edit.el3
-rw-r--r--lisp/custom.el2
-rw-r--r--lisp/descr-text.el50
-rw-r--r--lisp/desktop.el33
-rw-r--r--lisp/diff-mode.el58
-rw-r--r--lisp/dired-x.el79
-rw-r--r--lisp/dired.el69
-rw-r--r--lisp/dirtrack.el4
-rw-r--r--lisp/ediff-diff.el1
-rw-r--r--lisp/ediff.el12
-rw-r--r--lisp/emacs-lisp/bytecomp.el51
-rw-r--r--lisp/emacs-lisp/checkdoc.el44
-rw-r--r--lisp/emacs-lisp/cl-macs.el3
-rw-r--r--lisp/emacs-lisp/derived.el17
-rw-r--r--lisp/emacs-lisp/easy-mmode.el22
-rw-r--r--lisp/emacs-lisp/edebug.el13
-rw-r--r--lisp/emacs-lisp/find-func.el2
-rw-r--r--lisp/emacs-lisp/find-gc.el108
-rw-r--r--lisp/emacs-lisp/lisp-mode.el5
-rw-r--r--lisp/emacs-lisp/re-builder.el11
-rw-r--r--lisp/emulation/cua-base.el251
-rw-r--r--lisp/emulation/viper-cmd.el10
-rw-r--r--lisp/emulation/viper-init.el4
-rw-r--r--lisp/eshell/em-hist.el8
-rw-r--r--lisp/eshell/em-ls.el9
-rw-r--r--lisp/faces.el38
-rw-r--r--lisp/files.el44
-rw-r--r--lisp/font-core.el2
-rw-r--r--lisp/font-lock.el3
-rw-r--r--lisp/forms-d2.el6
-rw-r--r--lisp/frame.el30
-rw-r--r--lisp/gnus/ChangeLog22
-rw-r--r--lisp/gnus/gnus-art.el8
-rw-r--r--lisp/gnus/gnus-msg.el12
-rw-r--r--lisp/gnus/gnus-util.el26
-rw-r--r--lisp/gnus/mm-uu.el19
-rw-r--r--lisp/gnus/mml.el16
-rw-r--r--lisp/help-fns.el16
-rw-r--r--lisp/help-mode.el2
-rw-r--r--lisp/hexl.el9
-rw-r--r--lisp/hilit-chg.el37
-rw-r--r--lisp/ido.el33
-rw-r--r--lisp/image-file.el14
-rw-r--r--lisp/info.el7
-rw-r--r--lisp/international/isearch-x.el10
-rw-r--r--lisp/international/mule-cmds.el128
-rw-r--r--lisp/international/mule.el44
-rw-r--r--lisp/isearch.el70
-rw-r--r--lisp/mail/emacsbug.el13
-rw-r--r--lisp/mail/smtpmail.el22
-rw-r--r--lisp/mail/uce.el8
-rw-r--r--lisp/net/eudc-bob.el6
-rw-r--r--lisp/net/eudc-hotlist.el10
-rw-r--r--lisp/net/tramp.el2
-rw-r--r--lisp/novice.el3
-rw-r--r--lisp/paths.el4
-rw-r--r--lisp/pcvs-util.el6
-rw-r--r--lisp/play/gamegrid.el26
-rw-r--r--lisp/play/snake.el19
-rw-r--r--lisp/play/tetris.el19
-rw-r--r--lisp/play/zone.el2
-rw-r--r--lisp/progmodes/ada-mode.el3
-rw-r--r--lisp/progmodes/asm-mode.el3
-rw-r--r--lisp/progmodes/f90.el3
-rw-r--r--lisp/progmodes/gdb-ui.el33
-rw-r--r--lisp/progmodes/grep.el28
-rw-r--r--lisp/progmodes/gud.el6
-rw-r--r--lisp/progmodes/pascal.el12
-rw-r--r--lisp/ps-print.el14
-rw-r--r--lisp/replace.el2
-rw-r--r--lisp/s-region.el10
-rw-r--r--lisp/server.el2
-rw-r--r--lisp/simple.el50
-rw-r--r--lisp/skeleton.el2
-rw-r--r--lisp/startup.el29
-rw-r--r--lisp/strokes.el31
-rw-r--r--lisp/tempo.el112
-rw-r--r--lisp/term.el2
-rw-r--r--lisp/textmodes/org.el591
-rw-r--r--lisp/textmodes/picture.el2
-rw-r--r--lisp/url/ChangeLog8
-rw-r--r--lisp/url/url-http.el5
-rw-r--r--lisp/url/url.el9
-rw-r--r--lisp/vcursor.el39
-rw-r--r--lisp/version.el4
-rw-r--r--lisp/w32-fns.el12
-rw-r--r--lisp/whitespace.el39
-rw-r--r--lisp/wid-edit.el56
-rw-r--r--lispref/ChangeLog21
-rw-r--r--lispref/commands.texi2
-rw-r--r--lispref/display.texi14
-rw-r--r--lispref/frames.texi4
-rw-r--r--lispref/internals.texi14
-rw-r--r--lispref/markers.texi2
-rw-r--r--lispref/modes.texi2
-rw-r--r--lwlib/ChangeLog5
-rw-r--r--lwlib/lwlib-Xm.c6
-rw-r--r--man/ChangeLog60
-rw-r--r--man/calc.texi4
-rw-r--r--man/cl.texi7
-rw-r--r--man/cmdargs.texi13
-rw-r--r--man/custom.texi45
-rw-r--r--man/display.texi13
-rw-r--r--man/files.texi8
-rw-r--r--man/frames.texi5
-rw-r--r--man/mini.texi2
-rw-r--r--man/mule.texi2
-rw-r--r--man/org.texi349
-rw-r--r--man/sc.texi2
-rw-r--r--man/speedbar.texi2
-rw-r--r--man/text.texi2
-rw-r--r--man/trouble.texi2
-rw-r--r--man/url.texi2
-rw-r--r--man/xresources.texi2
-rw-r--r--nt/ChangeLog5
-rwxr-xr-xnt/configure.bat1
-rw-r--r--src/.gdbinit10
-rw-r--r--src/ChangeLog175
-rw-r--r--src/buffer.c30
-rw-r--r--src/buffer.h5
-rw-r--r--src/ccl.c9
-rw-r--r--src/composite.c12
-rw-r--r--src/eval.c37
-rw-r--r--src/fileio.c31
-rw-r--r--src/frame.h8
-rw-r--r--src/keymap.c2
-rw-r--r--src/lread.c16
-rw-r--r--src/mac.c8
-rw-r--r--src/macfns.c7
-rw-r--r--src/macgui.h25
-rw-r--r--src/macselect.c4
-rw-r--r--src/macterm.c304
-rw-r--r--src/macterm.h7
-rw-r--r--src/minibuf.c6
-rw-r--r--src/search.c1
-rw-r--r--src/syntax.c8
-rw-r--r--src/textprop.c4
-rw-r--r--src/w32.c39
-rw-r--r--src/w32fns.c4
-rw-r--r--src/w32proc.c5
-rw-r--r--src/window.c48
-rw-r--r--src/xdisp.c41
-rw-r--r--src/xfaces.c4
204 files changed, 4065 insertions, 2521 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 2ecc124f001..8fdb699c50e 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
12005-07-19 Juri Linkov <juri@jurta.org>
2
3 * grep.txt: New file.
4
52005-07-19 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
6
7 * PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping):
8 -R comes after i386 in setarch command.
9
12005-07-12 Juri Linkov <juri@jurta.org> 102005-07-12 Juri Linkov <juri@jurta.org>
2 11
3 * refcard.tex (Files): Change description of `C-x C-q' from 12 * refcard.tex (Files): Change description of `C-x C-q' from
diff --git a/etc/NEWS b/etc/NEWS
index 33707393e3b..e1cf10de70d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2473,7 +2473,7 @@ GDB. You can interact with GDB through the GUD buffer in the usual way, but
2473there are also further buffers which control the execution and describe the 2473there are also further buffers which control the execution and describe the
2474state of your program. It can separate the input/output of your program from 2474state of your program. It can separate the input/output of your program from
2475that of GDB and watches expressions in the speedbar. It also uses features of 2475that of GDB and watches expressions in the speedbar. It also uses features of
2476Emacs 21/22 such as the the toolbar, and bitmaps in the fringe to indicate 2476Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
2477breakpoints. 2477breakpoints.
2478 2478
2479Use M-x gdb to start GDB-UI. 2479Use M-x gdb to start GDB-UI.
@@ -3120,6 +3120,21 @@ variable `calculator-radix-grouping-mode'.
3120* Changes in Emacs 22.1 on non-free operating systems 3120* Changes in Emacs 22.1 on non-free operating systems
3121 3121
3122+++ 3122+++
3123** The HOME directory defaults to Application Data under the user profile.
3124
3125If you used a previous version of Emacs without setting the HOME
3126environment variable and a `.emacs' was saved, then Emacs will continue
3127using C:/ as the default HOME. But if you are installing Emacs afresh,
3128the default location will be the "Application Data" (or similar
3129localized name) subdirectory of your user profile. A typical location
3130of this directory is "C:\Documents and Settings\USERNAME\Application Data",
3131where USERNAME is your user name.
3132
3133This change means that users can now have their own `.emacs' files on
3134shared computers, and the default HOME directory is less likely to be
3135read-only on computers that are administered by someone else.
3136
3137+++
3123** Passing resources on the command line now works on MS Windows. 3138** Passing resources on the command line now works on MS Windows.
3124 3139
3125You can use --xrm to pass resource settings to Emacs, overriding any 3140You can use --xrm to pass resource settings to Emacs, overriding any
@@ -4154,8 +4169,7 @@ emacs tries to read it.
4154 4169
4155*** The new function `call-process-shell-command'. 4170*** The new function `call-process-shell-command'.
4156 4171
4157This executes a shell command command synchronously in a separate 4172This executes a shell command synchronously in a separate process.
4158process.
4159 4173
4160*** The new function `process-file' is similar to `call-process', but 4174*** The new function `process-file' is similar to `call-process', but
4161obeys file handlers. The file handler is chosen based on 4175obeys file handlers. The file handler is chosen based on
@@ -5090,6 +5104,10 @@ running under X.
5090** GC changes: 5104** GC changes:
5091 5105
5092+++ 5106+++
5107*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
5108as the heap sizxe increases.
5109
5110+++
5093*** New variables `gc-elapsed' and `gcs-done' provide extra information 5111*** New variables `gc-elapsed' and `gcs-done' provide extra information
5094on garbage collection. 5112on garbage collection.
5095 5113
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index f614e2f3fff..c39142a9299 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2422,11 +2422,11 @@ address space of a process. As the result dumping may fail even if
2422you turn off exec-shield. In this case, use the -R option to the setarch 2422you turn off exec-shield. In this case, use the -R option to the setarch
2423command: 2423command:
2424 2424
2425 setarch -R i386 ./temacs --batch --load loadup [dump|bootstrap] 2425 setarch i386 -R ./temacs --batch --load loadup [dump|bootstrap]
2426 2426
2427or 2427or
2428 2428
2429 setarch -R i386 make bootstrap 2429 setarch i386 -R make bootstrap
2430 2430
2431*** Fatal signal in the command temacs -l loadup inc dump. 2431*** Fatal signal in the command temacs -l loadup inc dump.
2432 2432
diff --git a/etc/grep.txt b/etc/grep.txt
new file mode 100644
index 00000000000..4149f80b203
--- /dev/null
+++ b/etc/grep.txt
@@ -0,0 +1,75 @@
1* Introduction -*-grep-*-
2
3This shows the different kinds of messages grep recognizes by default and
4how they are rendered. It is intended both to help you decide which matchers
5you need and as a test of the matchers. Move the mouse over a colored part
6to see how much text was actually matched.
7
8Please do not edit this file in grep-mode, it may lose escape
9sequences on saving. Visit this file literally for editing.
10
11
12* GNU grep 2.5.1
13
14grep -nH -e "INFO tree" ../info/*
15../info/dir:6:File: dir Node: Top This is the top of the INFO tree
16
17* GNU grep 2.5.1 with default colors
18
19grep -nH --color=always -e "INFO tree" ../info/*
20../info/dir:6:File: dir Node: Top This is the top of the INFO tree
21
22* GNU grep 2.5.1-cvs with specified minimal colors
23
24GREP_COLORS='mt=01;31:fn=:ln=:bn=:se=:ml=:cx=:ne' grep -nH --color=always -e "INFO tree" ../info/*
25../info/dir:6:File: dir Node: Top This is the top of the INFO tree
26
27* GNU grep 2.5.1-cvs with default colors
28
29grep -nH --color=always -e "INFO tree" ../info/*
30../info/dir:6:File: dir Node: Top This is the top of the INFO tree
31
32* GNU grep 2.5.1 on lines starting with a number and colon
33
34grep -nH -e "Universal Time" ../lispref/*
35../lispref/os.texi:1010:0:00 January 1, 1970 UTC (Coordinated Universal Time)
36
37* GNU grep 2.5.1 with context lines
38
39grep -C 2 -nH --color=always -e "INFO tree" ../info/*
40../info/dir-4-looking at that node, which is (dir)Top.
41../info/dir-5-
42../info/dir:6:File: dir Node: Top This is the top of the INFO tree
43../info/dir-7-
44../info/dir-8-The Info Directory
45
46* GNU grep 2.5.1 on files recognized as binary
47
48Binary file emacs-7 matches
49Binary file 2005-06 matches
50
51* GNU grep 2.5.1: other messages
52
53grep: ../info/dirinfo: No such file or directory
54Grep exited abnormally with code 2 at Tue Jul 19 15:42:32
55Grep finished with no matches found at Tue Jul 19 15:43:12
56Grep finished (matches found) at Tue Jul 19 15:45:15
57
58* agrep
59
60agrep -n "INFO tree" ../info/*
61../info/dir: 6: File: dir Node: Top This is the top of the INFO tree
62
63* unknown greps
64
65grep -nH -e "xyzxyz" ../info/*
66../info/emacs-2:1205:10:inserts `xyzxyzxyzxyz' in the current buffer.
67../info/emacs-2:1205:10-15:inserts `xyzxyzxyzxyz' in the current buffer.
68../info/emacs-2:1205.10-1205.15:inserts `xyzxyzxyzxyz' in the current buffer.
69../info/emacs-2 1205.10-15 inserts `xyzxyzxyzxyz' in the current buffer.
70../info/emacs-2 1205.10-1205.15 inserts `xyzxyzxyzxyz' in the current buffer.
71../info/emacs-2 1205 inserts `xyzxyzxyzxyz' in the current buffer.
72
73;;; Local Variables:
74;;; buffer-read-only: t
75;;; End:
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
index 298ba03da35..3715ab6d290 100644
--- a/etc/orgcard.ps
+++ b/etc/orgcard.ps
@@ -1,6 +1,6 @@
1%!PS-Adobe-2.0 1%!PS-Adobe-2.0
2%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software 2%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
3%%Title: org-ref.dvi 3%%Title: orgcard.dvi
4%%Pages: 2 4%%Pages: 2
5%%PageOrder: Ascend 5%%PageOrder: Ascend
6%%Orientation: Landscape 6%%Orientation: Landscape
@@ -8,9 +8,9 @@
8%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMSY8 CMBX8 CMTI8 CMR6 CMSY6 8%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMSY8 CMBX8 CMTI8 CMR6 CMSY6
9%%EndComments 9%%EndComments
10%DVIPSWebPage: (www.radicaleye.com) 10%DVIPSWebPage: (www.radicaleye.com)
11%DVIPSCommandLine: dvips -t landscape -o org-ref.ps org-ref.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.07.04:0825 13%DVIPSSource: TeX output 2005.07.19:1850
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,210 +352,214 @@ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43 352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F 3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E 35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2 355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C3
356C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A 356975289D47E7F35898FD87E0BE88100E53DDB356245666E7F724C208CF200B76D
357CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F 3576E86BB756E083DC34DE1DCF484CD664C826962DC9CD5DB207262A43EDB8A18BC
358AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C 3587D3F35237299AE378AD68A89E97D65CB05503E2C2D951E3AD2A544DABB19973C
359C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD 3592B9AC59428D1FBCD89C058532357D2F4D53F35D49FCDC303475E1B41B3A2E18C
36085D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE 360657AA0AE4D04BFBEEE2A24D462249CDB73EB96B6702C174BDF87642C3CB6F3C0
36191430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3 36186B02C65EE7D5ED2F636F15F50E5D1894F48AE024E1CEB56AEAA3967DCF5ED5A
3622E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76 36263C9DD1DAEB9C8A353C2C90BFAA6B66B9E0B13BA0CE464A3C8CB2C5AE94AAB37
363342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113 36372C62E70CEFD0558E483789630CB0FDF76E9EF75D8012E5F7FF85253C480F841
364ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1 364CAA7F9FC1E4AD4576BFAD1825C989D197024F8ADB77B7DF5D341E2B68BD7FF5E
365C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720 365414852120B733078E1B703AC4845E63CB624BFBC2B575CFF29AFB89BC5957A1C
36610B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C 366D3838B3FEE6252CDDEABBA24259E50B48741EC36BCCC888E09B9A0BDDE044D9B
3670FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE 3670551B31409E7FE2922D73B7E52B08C32481A2F29E81F2B1573D085997BF65B06
368AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557 36812E062C2ADDB75A199AE7785015967917D9FFF94DCC8CD8CA79B95560EE9C09B
369EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895 36904441CC622B2374030B08089E51AA9E9566AEAA9F81411C638F547B15793F884
3703925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141 370E04DAA850CD17CF5093F73DEA68AD40C288EA0C25CFD9FEB596DBC7F86C9E13A
371F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36 3712F2E43BE780B66A03B4154191383951FF535D8866735B6879C5D4C51147C7553
3722B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16 372A012AB7FC667F7DF259690D47B1F2DE226FE539DAE8EE6FFEBDF3186E6ECDEE8
373057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A 3738B3E2CBC6006456AA69276CD025F387ACD73F0CEE35CC1ED6771107E3A1B866F
37491F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324 37419C5C17A18552EA2DBA65EB75D493D05DA9D1247D77F65968CE5BCF68D56E249
37580F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC 3753D41AA3360275F993A8C0C7A33D6317AED8C6426C374E7833241E88DB88862FB
3761D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3 376411E711280F84C46E1A18D0F520A2474E7AF7455709AD19CCFA00463033FD0B8
3778377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F 37761D2CEB925BA10D19FC97AF1953C8F0EEC15254F2C4C56E9FFEF66D00E8E0BF7
378D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A 37897B60CBB7F8B56B82B2F846A53E2E36CB5D27ED3881206B27DA02F35B6D32962
3793AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306 37954D89A03F67E672D019F2DD19195E80C0D0DECD8FCFD259907FCA25D5C407882
380F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6 380CA7E54D31995F1F14376D72BF33D1AF534A05FF3D323CBBD48003F2A44369C55
3811A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E 38180BAF975090EF0D6CF0347C0DB4C6CE743447C7A48981E50BD1667B08CEF2A06
382F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F 3820B85DFC727BD8BBC56767F0D814FAD4AADB1E2E674D9D400AA6B108A7B341F4E
3831B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2 3833CEC41E8B5BEDB76CB87C0CC5408B3985FA4F651B8B73A893CDB2A6506003EEC
38420701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6 384F83AF0FED73ED31B150DB8990AED1C1A46AAE6B4E1D4182A29E8504DBBB39036
3855A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4 385135745E3E2736AE23E09384761667ECAC0F24F1110FF9EACEA55DBCF86BDBFFE
38684D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959 386F492582A7BA7DA88932AA88B02C0E5A5B0A1DD266A36756D81CA3A056213183A
3875F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D 3871B09434C9FE4C98579512A77072BE31ACF25C5EC8B38A5394484303B8BE36FDB
38896AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558 3887146EC7DE53DF053DB16D0C2C9EFBE6E52AE86CCD389E2AC772A7231044CE76B
389C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7 389ABFAE8E0F0D8BE84DC7293FE1D0FEAB9181D44BF19C2DB4C20F03DDEEFE7E463
39047C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5 390AD5A53B316CCFE4485D61E30913A3D77F5E364ABD1E3EDA95EC4DAF296261CBF
3917444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603 39122DCE22DD10B20B08876A8CAD51F4E17D981D38E6A63BF604D76901685DC3BCE
3926671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01 3929900E47A255606DD46ABFFC30D423333F49FF75A76C51EE968B190A3A848BDA1
393864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC 393C793ECF0E41DA7338F387D3EE4DADA226AFF695AD31EFCBBA7245C348DBE726A
394111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850 394C8B1C993D6FA12A4BD8B9BA30C9CE324CF051C63987866A0453F12A28C975E4D
395B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C 3954A8761C33887FC2419A63312CB4E8E6DBB0C32C1642733102B587E95F0D1A5E0
3966B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C 396364E6D6B3995970C747B0D147832A321A942A8065FABAC9EEE96A2E316149411
3979970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A 397F5F3FA0690F82CBB928FA1E325CE16E119A74AB166A368A276A3FC805D7898DA
398421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095 398869B51B99DB656B41527A83CF03050F8DB995CED24D926B8AF5C78504533F065
399BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF 3999DD3733CDF1C97907AC47CD82407271C09486765B33BEB2950B8CD2AEF17D03E
400F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC 400B93B464003418B94A165424EB4570DDB2DAB66DF48AAE2617851C443C288F122
4018EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372 401A44FDC795902732BB0AA746B4C16A1136966284913E14A44265671D4299FEFEA
4023634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448 402C5628C6CDDD52F76670D294C991C0CFF4986127A90832E4913D72457AC3EA8DB
4039E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3 403F9594539B0B1472825491EC9E13137C4FB5C4DC185130BF57D63D9D977A98365
404A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191 404F51D64D6B9595BED8EDA9296E9436C759F06620AAC3C453CFCD8852C65D147A9
405A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C 40599756DFD2399D4B8082A217E05D9713DED24E1E681A3E0D67175439B26B9C655
4061CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF 406440B992B158167C6C8866295CA085C094E447FC633477AF7EEADD2BC9CC6A83C
40751D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D 407EAC88183913966289847788602602ABF3D2BB742F24FA7F82FCB485AAA884F94
4080F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450 408D14BED3F1092FCF775BBC405267DAD50FA0FC972F9CB186FA350BC1E20CBDA18
4094760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7 4091C68E560D2FB05BF7BF45CFA16FD95BB3A92B687AB514FD2338FD965466F69EC
410AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53 410EF1E1F5453596FD2A3ADC3888756D217A48EE48A11624E07545CD78EC7993BDD
4118ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA 411EF7B2AFBD5C5BE2526D9FD331FD13E6867ADD74CD2EC7464A193E53D428BD4B9
412D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB 412AC7E96D33B684AC2F0D8F6E34D1CE086A7D7763D0D6CB811888AA6FE0BA9C5DE
41399515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4 413F700F213299DBF40FF4E6448F99FECD32DA0B6BC8E11E23C96B1DC16438D6D58
414481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52 414AB396C890349AB2588D0B4BDE1163EB4765E2380B9B071EBA0485C3F478CEFEB
4151B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA 4150AFF7F36149668C6C8B93C9DC211B8219FB219F093CC921E22EB70EDA6FB0EC1
416D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586 4163A05289BBDCB26BAF5B00DCBCE835BA66807E25354C3FF568E4D3D80A8D07345
417E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF 4173EF15442EBD1757642D2EF0FEE55F95583545A29F7F665C0DD11A13A2F172AE5
418B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB 418088656741A2FE3A7AEEC690FD9E328CCA2FC882C44665D56370347561CEE3A7B
41956BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB 419CBEF131B2FC47DCDBCCD8829B5D54DFDBB65D563D8F7E3E9BACDD012CAEECEA8
420F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4 420A546FA226B93F21AB00E1F6B8B201874AE14D19D9AA36A50D36AB1CBAE4E06B6
42161C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574 42123C979AE1C120AF31123037ED8306DA84A600F73837D7143CEC4D4FA2C9D6A80
4229098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D 422DC32A657614E781EAD5C47CBA6988C80269C521EF82DB442CE86B4741B314D53
423FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3 423779480EFB208752C601223637E90B4C6154821928D0C5852890D8B27C90E5B63
424049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA 4246579E0ADF4904E268DB32CD14C4D7EB5C57C830632498DC6F637FA7345154450
4255506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59 4254B938FB0EFABEAFF0753B770A1A81EB6A2391C369AFBB28BFB545B7DF8C5D843
426620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8 426BE2624182D1E0221C3DC415E0591828926A2B39DF8CEFDAFB6E37B085B8087CE
427E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477 42738C72FABFB40D87EC3AA2926CBFF805BD55CFA6F2A2E3AC9BC3613B673346CC0
428ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE 42800CA684A027A472F29D61001BE2DAFC38D3B40F165CEDE2C364B87527A01599C
4299F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA 429AA1BF372920926A31C0C3F0DC333088A040387445CD2AD339B7F80F38B2331EF
430B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431 4302D308D7DE22212E942D928DBEC495798B4D1C345E7E0A4E850D0E0E0DF806F22
431DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994 431E6BFF56A87D1566EEF4E5F0F5324B5C50FC8BEA1F2F56D2F9DC86028BF3E0C78
432322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0 432F3CAA5AC2C95B69A74DF70DE61FF2C400A5A87C9496355ECD9A3F6A5689B95A6
4334296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501 433DD789210074316A9500985D727C5D598DAF98D72F52A7FD4A0DAB32CDCDCB1F6
434CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792 434FC3CD5033C63E1A2723178DB9F0D30CDF7F976BB043411A9B52DC2E25EE41E62
4352C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7 435F5D7C906130515A2E871807357273606423D064280E1E0BE9C8E08406DF92012
43622946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595 43688D6AFD9A7F94364E3210CEFF7AA42F8771E9F57818E58B90BE3F70CB6E2BAA1
437376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC 43709B5DEB0F835339A3EBCC9CC91EC95362F8A82583F5FEA4A2B1E52CFF7EB08C6
438C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4 438498A0BE9922EB85DE8DC2F4C4C8BAE8A556E8799B393A1DD9A02048DE1C0BD9D
4392CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C 4399E08CFA6747D7D54CAC2F0530905D7BFA55A2725AC87B3BDA4C3E641FD40290A
440FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E 440CB21839AABD1123E885C056098C604C1BA610DAF070884DE4F9101A5979E3521
4416B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262 44116829B81A06D640539D2138120C62BF7207B0292CE093BDF51EBA7FC7F3B0A41
442C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A 44270D2392D19D708B5C9139E42C18EC86FDEFDB3B8110795EBAAE6969F2E1579AB
443AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228 4438C3F01698EF67A733A561BF577EEF58E669358AEA0730E14A12BA0A3FBE00719
444028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5 4441E1D66904BB731D4F0DB772393C47B8894FFA70AD68E895943D7EE69647CCC5B
445A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD 445129C5BDC027E93E534568C8D74108DF96E3EF84B872415FC9636B46B45D55E55
4462AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193 446BD1C1933C4110C832076A57B253210D7AB19D10D2001AB8FB7629E5ED5313ABF
4479967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058 4470F6473F479EDB06401777FA50E657CAC8CAE78AB6C226919B2696F4EE4D68B62
448C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC 44842B464F72E2DDB2CEE2F8D0CB5B817CF32C6D919BB64C1D8C09FFA63E99ECA7C
4491C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A 449334ED10FDB888A6BB4E2FEA1ECBB8B65AD694F3F0D46F833BDDCBBD326377543
450DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D 45028403188A1517C7E9B6E6CEA07FCBF028D8CFBC554B877EE3EA87E3A47177488
451C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE 451F1CEF87232E8F3B05ABC727E605AF1E6EF0491FFBB6024BDAC9E230A05D93896
452EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285 452208253F0B553F6EE3DB0938A2D20544E839A8ABB574CB1A8ACE6BEC53409BF7C
453AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89 453DD2E51D1B78E222141050DE03325D69DBC93E83DAD6C21550AED849EC7008989
45400BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190 45427AFFC46E63EA2BEB727CD69B7C25D790B0EB860A57CC6ABCB5F1D70AAABEEF4
455F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD 455F756B93CA11A3F900ABDF10E2B61FEF8B7C06614B7C951F64DBD81F0525B4FA9
456A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD 456B8F911FE3B138A2A92EB3DCCE4B1ED5EA4D5120CC6B5D9DD91AACBF96F85D5F1
4578C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB 4575EC81E82DBB6200174C99C6D3F1ED83B6787175419D71FD1D9DCE43C3A533AAD
45835BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C 45884EBFD6DA02E3FFF2671A12EC04FD54B62DFB1BFE94F6551F97D2D71101E535D
4597B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC 45949462DC28F44E9CF47141EE173B2081D27FD71818FB6759AD8F9E8EE6B4F4C42
46043990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5 460D2F5BD0EF0E42986960EBDDD1B86A8F5CCFBA8CE13790931F81A173F100262DD
4610D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E 461E5F0C88FFD92B7068C76537AB7E662C9F62A2E50CEFCDCACC22E0AAF29179981
462F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A 4627D26ECBFCD3834D74CB191D98BC4FE269A49916A8C6DF3252A36E1C9667E195B
463E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821 4633A6D4712F9E741BEFAE5464E8E62C16FC094006E6E0E44971B5477B3F613F0FD
46402C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55 464FB1F6157A8BD3850337EF664AB1BBCAAB6EF028A6DA82BF8BD37C87F556FC65A
4650B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5 465F27A92B2F03CFA2CE1C942D2F4175A1FD332F956AE4558BD42D20AF36119E967
4668B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9 466D4DF353D508ED5E3E1DB0A6D1DE3DC974AB489A0A2F1A817E798CD15124047A2
467AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446 4670BB986DDEA0C530BAD8CC74643B3F8D6D9A4249C4A049C6624AEB9D0F5B073DF
4689769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134 468391DA641ED9A5719C8DF4BECC5EB464C5FED010778A7B3EEC7C4E63063ACEE75
4698F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26 469C91F966F93B81B09B80C4B708EF232D4B3CB86E35112AE94EFB1509767F86EDC
470CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360 470CDD4D87A6CED2C54BA3D7A27D31F4D9C3C3E4BD59D5ED4FAA0EF35A95D533A46
4710A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E 4719CEF9CA8B889F5CA51C83FD1B2364D73DB45D3CBC584662928ADBE635370FA02
4728582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089 4726B27BB763476DB708A43F9056F580C234E97E925E06014F2DC0684A2B608796F
473A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267 47307B9ED031153BF3F54BEA155F5CF5796EC4F413F529B7B1623A99AB18DEB5A77
4746940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F 474638FCA175C6B608E0CA86A0006AAED13C7E32B5D2D9F5DDA900526BBE5F2A72B
47516715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E 475F6AC4738D9D5F1C0C64D6EF08FBF42A93163405AFD2BE799FEF6F261AA4B1983
4769E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6 476D7A478B8483473A8E410938149A88E2D8F2731828C578EC94A0A1524AC6AE968
47764145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C 4776FF30BA8F8941E766A3400B7C90BB0C35ACC0E151EE2DE95C96CB57870B70571
478C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481 4787780F054B0E0C6875303E6C8A86E327CFBA2A9A63C6A4A412BF4204A9A6CC043
47905558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92 479F4181DEA58886B75E8717EAC5ECA4130E3C3ACC63C974BC25168CD479B8FF2E7
480920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11 4809D7383B759D7F4CA647133895B6F27060736344E17847A5376900650E8F1DE91
4814842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D 48135A64E2BA826FDAED6126E695B383190EE119E3D2A0C55EA00B96A87D6C31D91
48267EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4 482FC138FB980FBDBB123E8528D8C6902E722B0C4D5F697D08875C4AF3B54CC9D26
483BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718 483000AE20D642627527F9122D8F7B4269226FA6996A086DA7993FAB72D12760980
484A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D 484112A7282307B973FE18CF3AB3541320F1D56B60F10D057D55110DB5B19EA8673
48565C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E 485A04150ED3E31FB13C2AB1984FC035668D97F29ED5AC599E470DDC96EC55CF3AD
4867F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5 486CC2292D5ED757017FA84B95B1A835F35FD0D053B795099C1FA04ABADF189CC05
487CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC 487CD3AB170C4676045F6218746E7BBFA8EEC7447461DE88A82CE72809B2574DD3C
4880C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA 488F742892BA4F986690998054D545A958FBDD657B159DEE0E20C09695E945D991A
4894DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824 4895A7060E0B43557D69720E5F0DA325071BA4E8612BA2CBCF0017D1DE7F75114F0
4906F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333 4907732430DE5B93F037BCCAAEC7FF15A3CE253B1B1ED90E176A5FFA28AE4D31F89
49143E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026 4918C23F25A0B3B9048B77C97251B710D6AA597F38E8A0170864721B490F332BEE3
492B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79 4923451CDFF7EA716F7B61CAF9A7379C0736869A4B7A9C4FE67E00B6121A0B80799
493497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4 493313059C1F350FFC355A9659DE24FE94DEF95A7453C402FDB76BB37A3E969920D
49412173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5 494A02E416D8BA1525DB382A268F8482D8C1F2BF85C3E0BD8BDAB6D69792018D112
4955A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6 49546AC210621CA7D1211854407CD771D007CCF721DFB38BF230F1FF6F4A975A29A
49633EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F 4965277FFECC83570E3F5F2AC00BF65CA7D6EE973E073DA7EF5C4169F2BC9EDC891
4971055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD 4977161AEBB815EC74BF843AD52A05CBBD770842B9A8D49EC5B2E81F9E0FDE14F1C
498114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45 498EBE5751331A84B761173AF701630BAFD6BEA0EC21A6CDE53DE1B77008E4CADD3
49924391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1 499A8E3DB2E1E9DABBB88779E4FFBAEE434E1A4F7CE2D1617A499BE976C26168FCC
500C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C 500D15CF368EB734E55A6AD683B870DB893552C47D703FF1C60F83BA255C2C2DF31
501C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516 50136404158B385CBD3689657DA10DB47A4ED88CE3B2A96D71574E2581002447493
502E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB 5029B2406886B0C0C63A4A8A7146E6A7376AED21B844175E225B19480E868DC4C77
5035EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA 50398D4E711CA2359CCC49DFEA8E46A328EEC393DE1D63DA45124F4943B0214D6FD
504B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062 5044E315E3B5E0628CFAF7CBEF0D6026A346F33B66F373A303D1CC81A38D46D2CE6
50586032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49 5057D8B39CAC15AF7E0F1DE6B7991AA90DECA4E35BB7D1238CE7AA94FE3D2576B33
506BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C 5063B28014FAF2CA6AEC8C1D97997CB762F0F7D0FF4992A683047F6C8584606A8D6
507D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6 507E7325296CBE312E7CEB74D5DDDC61B86B17547E0E68278136740A3B48BEA681C
50807EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF 5085DA905773ADF372E0C87312506FE1BB9F375524E3F02D6BAA197E7AE619FA82A
509D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723 509D18A24E4A384D56515B6DFB85618EA77F20007D212B8D79190B8A117CD1DCC9B
5105E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A 51040D74E4E494D174A77A174C6AF775310F7F57CD69206FCA5526EBB963951B1DA
511DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D 51129E594C254B480F0D20BBA199F7F5750D34A50402E4EED113CDDDA5B7920294E
51275071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480 512EB9C6F18F0182BCFB1E4B9B86AF6BF073260060AC88AA344F83907E7C5613324
513E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D 5131898F31B43CE8C173D1DC670BDD0FD3B75C42796FEF88BD60669FF00D6704D02
514A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C 51499678D55012907C2D659A254E86F1BA20DCFECF7B07A2C240A5B1AF4D778E3EF
5154921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176 5156358A8B10E38679D57FCF28BD6581C824A1840BF91206398E81B39012C0095F2
516B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2 516CD2C73D8845182F02BB80ABE77EEF1F709C017FC586BE7A23D0771EFC8A78165
517689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38 517FF88DDAC78A4C2979C0D16ACC0A0A74A71140BADBB7B51B79A54842497F51E6A
518087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259 51890A8B4CB10DDFB40D4FFCBC7ECE911A5D8A8E9053D8801813178028468E07D93
5197E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175 519C6645E1034CCCDC333A095C42F48AD776066DB50EA5A1048E6C13EE0838BD184
5209DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98 5200D4956E0576DCC1F6A2C6E21E38E1E837F311FA04120C2E3360DFBD7A0DC3E03
52147E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4 52159C07009AED7F8FAF16A1BCD15F01EB87AD10E096822B38CF2591EFB971D368A
5226D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D 522C29A3DAFA38DDA281EC38E0195ED98AA177067FC873D207ACDABA3AD341F16D2
52335F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66 523B7DFAFB1093FA798094251F9097EA5D8B13615A1A358758DEA0F17C8ABFFF0C4
524E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B 5245184AE86AEA2EA55A9FDE19482663F37872CDA41971E5E85DD3893C486196104
525D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4 525A892DD7B5D03E5D346E0D7D45F9514C7C41AA75C807F56A85C65A39405B2D07B
526C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85 5267B53B082BAFA4FE094A4BC15E06A4D97EB4B0D736DBA96C10A6B13828C06B543
527121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81 5275D99F79B9086F88B10E5445B8D71D587D36036D0E7095D378063F59E697A7D73
528BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8 52855DD21A26CC5BA1743D41A268B16362EFF242D60119F0068F381098CA56DF9D5
5291BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE 5290CDE40763AC2D072F5E65B4466D612E972BFB343F829F3932012637A2C2740A9
5306259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB 5304BA1A01D61225010ACA3013DE57EA5D6334DAF8DAAC64DD24BB1C75A70999C9A
5315D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB 5317F5FA55D2E4FFE4B1B21BA2504961D0E4E7CB14C0C6A789DB141AF8DC74ADB8F
532776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A 532041AC348DB7BA5ACD513735941B3234930514AAB66F7EF22D8927C5B87EA52D1
533C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B 5336126D517E98965256505F2C19D973FCD26702AEFCE06501AD33861907D5F5609
5345FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99 534A96FE16F854B011FDBB4C332A17A36A714B00A4358E2DA5342D91AEC57C4F61B
535F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083 53584F80554E8BD6C643435D36574B7A4C20F2FC49C3362A26BB2C594A7AAF50A33
536DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE 536B9A6540004A1A6F455920A4E282321607CB5D58F5262B03E338461284AE25BFC
537345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92 537254CF4A119A306233FEEBAB31CBC72F8B1B8D9EB3BEEE24427506823A432022D
538892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C 53898B856009A7D06A49FA4EF48A54783AC536996CA1729707A97E7FF8344837BC7
539FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8 53944014D12C10C2CD224D355E31FD7355427D5B19090021F607A2A44E7E45155CD
540FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38 5405284F8D641D78C7F506B8E1D3537F491334DC36B3494DFFE999507A7D7A2B1CE
541FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924 54123EB2F904B799B160FCA2BCF91BF7A139A0EAE690E1DAB7E382F0DC371D0BAF6
5429BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E 542D1F057AD27C8020025688ED5EB3609B6A26AF62270C0C4198240157766D57B7A
5439480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766 543638946EEC867B34DCCDB1FDFAFC587CAB7149D14396CE508FB1784F785B54D8E
5446A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23 544A9DCF5B823CFEE22643EF13114AF35E726DE6C9F65BC00B43BC2B7997948E878
54516B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B 54552C67D065440503BCD20AF6AB2E612F583388D8323C5117C3AA01CABB74E5F4D
546823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54 5461370DD67C55ECCA8446700CC02F0B22099CE1E4C0AB29562E5AA11B07D3538B4
54779E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685 547F1E7001510CB69852E95769C4B8C663E50C3C62310096F2041810C37711445A7
5486A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4 548475EE2E0001639453132374212076813AE1A86D1D77780AF6B769E460DD34AA3
549A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187 549A015539C85AED5D175E00231E2C476F4363945208471B458D2BDE57D51352465
5502825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390 550C9E4C989475D1B416E9E70B2521E9571B5986CF1347C5E59D4A0624899E70FF6
551FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22 551C906A7274CE96B5B8A503A3E6A6BAD424FFE0EC4EA784669AB62DB1A3F52AAEA
55227B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88 552A6A04AA6D98C551F1D2F04790F52F7745D2BB3960D8264845B953B414594D5D4
55367332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D 5538B46D75E37AA04BBBBB3063A742B43B38B380F53038E4DC91416EB14F24B2C9E
554ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A 554F5CBCFF0F116879CE571FB5DE18136795655CD15D6A0DF5813B83C16991DA0D4
555B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941 55585BDF299365B87DEDFA429E0A960427FB468E07B30CF2D2788FD423B65754AD2
5568437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE 556F4F5974176F35E34BB068DA31C7AEF659B89F9E1376F260BD18A03DF4514BCAE
557D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D 557C6DB005B366B6793914379DC4E9480B5CF2BE00D8D72503EA43D598250F95ED3
558C48D5145E2C6AA7D7FD787BC0D 5586D6CD0522D1D36E3F64E57067F86660FF4E9536D0EEE981541B56BD894E3F876
5595D600C3B8ED301CF7AF582539B9037AA1D616D6E494ABC7F7BF3BF341B8D7520
56068DCDF4E4140E9AB85F0898E634FBF91AE7352C407365B06D5AEEE21069EDAB7
561B06A99F8BFF1335AF2039095F54B5A3D62CDEF5C95B858586B344AE958124121
5622A990E05212EDD915CC7A8FDA48424
5590000000000000000000000000000000000000000000000000000000000000000 5630000000000000000000000000000000000000000000000000000000000000000
5600000000000000000000000000000000000000000000000000000000000000000 5640000000000000000000000000000000000000000000000000000000000000000
5610000000000000000000000000000000000000000000000000000000000000000 5650000000000000000000000000000000000000000000000000000000000000000
@@ -1934,357 +1938,361 @@ A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
193423DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413 193823DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
193519B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42 193919B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
19361C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39 19401C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
19378BF32D2E5635B6583D04BC0AA187D10FE773067ACF3B528CD412ED96902B0056 19418BF32EFC8C0D1CC0C1622ABA0B6CE939036B2D9CAFA2A3B0C4B5DD9AE5B2D798
1938567103E3FD911A099ADDB9EAEB3C08F1B36A918FE865B7DAE1C49F21650E65F0 1942CC856CB41F82D3B5FCBBF70D07E05369713730081901FEDE318F9DA81D39F84C
1939C6845C15740631BCB7618A3266D83E54976BCDC707883E531F3F833AD0DE88A0 194345D0996AC0E8FD780FD2E5E6BD013D98463E0A51034735243F2B3695371E8451
1940CDB84D8384602B992263C3C223D1B5393DC98C75EFF9AD8D98A764228C70A303 19446A6EC4236E47A282AD2966E06BF3FB59C6222C15A34F1E910E637D805741BC1D
194128D87B1A5510A579D01088C26D9667DB86F72FA302A3A8EEF7E05DD1835E72C0 1945CD426BF31361147DA45BDA2884880D90AEE92DF02AE5C4772537FEEA157A6D50
194266A0728CB0DD8C34BA1D772886333BC78C79374026347FAC9CED39B7FBA84DEC 19463BBB910A80A2EF41D18213631584B343ECFBD6BA006AD6BCAC63E9CD9430DF59
1943E70EABA29B80B4E813C0E6D5ECA5E9ECDF0413AF7556EA458C3C3B49A4B14A05 194798091BE32FE17FCA7B32DCA95052F5BACF73FEAFCE5EA47B740FDC972C2FAB94
19443034C04E1F8665532D053F810683C957050FCF44C5D4040CF09893DBF641D68C 1948E1FE42F8536DE4DD0DBFC4CCF3A96DC1140F736344D4DC796756948ABEE0433B
19450969D67BEBBA6DA451D446DCF87B8243365E7158D89332FB33CA28F0A83A7A63 1949BFFD9F1A343259444D248598844888F046800D6BFC7BFE3F63900767727A8742
1946D22A0948A46F0AB9B2CDECECDA40FA75B046CED41C017FF79FBD7380CF33D726 195010C756EC6380274290F84F7B2055C2390BF04B466B5D4437C0D6AC55C90792CE
1947B03304BF8EE1EE450C065BC8B83643AA74F8D45924181D1D0C52CE78C36DFE66 19518A8BB5602BC96118B07FDB8692006E91585273AEFF55D71967011A1658205ECB
194899CFBD08406AB9FDCC61242472612AF009F8625C966AC9A7228B85912CA77A9C 1952A0B0C1CE1F7C5167A5868D5DA81EE5CC3A41983425663776391EA37525FF1357
1949832F9D14190A1DC798D4E99B5D067A020FAD7E13E2E5A155A94E46853CB93619 19532CBD0C9B4644850880C5115C7F0677A605C1009D018A9D6BF4F94A6DD019CA26
195039183DAAB590F1BE12C3C4B0209A93CB015E58EEA72C0F71E68EDF1CAD4CA776 1954FA7D748D55D441CE1111EFE5254381E1F916912E1B446CC7803DEB5C9B1AF811
19519320076D70BD2874A166F2CF735BD5154F9FBB219C868A568A7C176060F78092 19553938473A2FDD49E5A0360F4020CAF9E85E056E59430B18AD352BA929C9A3DA10
19521E3661E66B7E0A8DCF294E09D487AD7F7D1ABEF83E7E0E5BDC60D672A4D8F5A2 1956D7C524D92AEA6F4DCC13E2B59DBC0B8C0CD90B1E4E82BCEE516928BC9E1BB67A
19534C33479DB4FB7105158E19C62FB0E1B9749E6A9D4BFDF7884B1922C4C48265FB 1957060EFD856CC9F1CFFEF90C421DBB3CAFD1959B332EADE93C9CCB31006248BD6A
19547851C1116696C02337B64F1A0445396102B541EE1CA10D8311F79CC58F2106D0 19585D79AA8E049C5EA70DAB46F5D3E73984814E9F3E15A0383EFCD157240D43BF23
195512FF6B1D274B810AF318BEF04467B5066889896BBF019F63DD5DAC53EDB1CD7F 1959F84372FB3915791E581FA0E4CD457289FACCC08C0D37CEC1FC45DE3751445A9F
1956AD10D90B2D3CE615546860B11AFD0D6B705DAC7545579DDD3ED867F31615CF4E 1960824A6B006B5E672AAABEC2B8D5DB7B0745C1D01C52657B7DF4FFB9803FD9655F
1957F3E4BBD8527C9C3CB4DEBE71F1AC965A69A1C6E244BD5A49FC81135A587EA904 1961B7D34C6048E8BF44A0235DFA9791770CB3E451E01ED7A578512DCA397F24F71D
1958A863FF7D421C407EDE08825D78924635E6968CAC4399D231C785C9048FD8C916 1962B2784D0778C02BCD5A88FB1671F8019523D8ECD0F42D273A72F2140D3C14F40F
19590B2676DB4D91487B862B25F68DBBD03B604BD875420565855CCBEF9AF0793964 19637BC451BE2FD39FA297D9857745B4B8F8531CA0DFD9E72E8EE0E7FBCDA811C8D4
19604FD45E490EFE697A470FA3C60192E660C45083E27B9E569DD1DBE07706975B9C 1964167DA0037F9F1F181115209C22FA250C8234695C1085931C3D92585563366C74
19619AF2851279A7630999C92E9867F55D56CBBA0CA13A0F041CD0F3ADB318A0D298 1965826D4E5F9A61F39E3F8CEB8701591C4A5FC62940C2729A2D9FFAB09F833D47C8
1962ED48F8288691BB2CE08B6A73E9FA89DAF661F201947BD64C1EB769EA3A0C6FC0 19661B184163D87FB4E5EC4BD91B81C325FDA8ECC31EAC76FAB333A9EE090C202EFA
19633DC343AEF2379881E46627AD2F653B4C6BC37E8D8452C3A7E399C0B6B3D93671 1967FB2BF753A5AB8D147F8949C6FCA5922E1B2C6231ED86BBB953166DE2C08A3DC2
1964F51A92EEA7712A872D0BEBEBB071C83D9254A24C8799CCB5D2FF4DB31075483F 1968433C76CAA7260AC901C3B4E2E78C8A6064F0ABBA1F4D16BACAC5288F199A0929
19653743AE4BD1CEECE6B9432BB89399FE62B87DAB3B19FA924FCC1F6C3DCA1B0049 196925F1DC8ECA38DA299A229D86E105C29CCD0FD59585467BAB46AECA7A76905CEB
196651024011B8670DCE537387069A8732AC4ADDD77B2A0D5D97105810854595C4E8 19701CE91EFB79E3B4EE3CDE096E2CF63DFF71544E639567BC8F12263B2F596CB4F1
19670663FD917B5B587B8ADA22351D79F5E5AD494FADE90336AFC27FF9FE8BC770D6 1971FEECEB69763A7EE15B0E59A2529A116E6E3BD067BFB3690021068ECBF18F6D9C
19680A8D6FBE6E45B3D4DB20E91A53D84C8B100813CEB9A81B03E142748475EEE77A 19723F3F07D8C7E2A7793FDEE84EAB71613A6EA8F6AC665A7C0376A6406171EAF3F3
1969892B3458A3AAD744A20ACD28C7AA6C5A996C9A9900F2D6B3C1169DF3BF2B1A9A 19734E466A08318F942F2830757721CE2B193F3A7404D51375DF34495AE48356DD78
197056EF83195431EE89A89CCA5A0EB6A59D7D89179B6C127BA0981FE0122E4184A8 1974E4AB3A71C2BE2094D5196BBBEBF056029805A302F6AE5F4A9BDB25461E81617E
1971FA9094D9C3D54BB7CBA31FD03C7048A09AE67C956A5363F5D51ABB19CA264D9D 1975A634959D343DAC10BD072CE16D7C51C120F9B6A1D75EBC4D03DF60048B8CE15A
19725D515F61DBD9C35D259950530A95350A313CFA8CF06413ABEF844771BF99590E 197694FD31DAE86A4BF525C979C7E96BC1DE88069A342C9E07C0340AA83DCF381134
1973F9A2F28975AFD00D700E83A59A3F0B7238CC74A8C1C9DB059C84DD91F1E07580 19770C13C315D1B690B5E858A20362441C9F61A20B70392F87078E5C3F8B4AF23D99
1974C4C1311FF1C4AF2AFAA07CDCE72B0928663109CB31DE1548C72EA321F0EAFE9A 1978B051B170140D0069DC6E2D4FFAC6E45EE56221264A894AE68FABF04994EF9D87
1975ACE0E0BBD840254E30D9A46162DACC79A07F21BA056BD90AD312A2D728CB94F5 1979EF92B498493E3F0B2F003C47C861320E714FE36F9B4669226E40753B2FA90731
1976FDD65516843523741D2430C5338FDB4274162B8C0409ABF94581C1A3D8636BCB 1980CE281E469DB371C975B186E2910879681485763CD9316CD4017C5D9ACE43DCA0
197778A98069466C0C869BA08047E9C154DC6FF00A1DDCC2C4AF4D5DA5437BD02616 198138397FE463F2A3D6B72209FBEA175E75793163F0FE4A2CAE3C7E5061D1A7C31E
1978C0139731CAA7817984BE614D6D41E9C21AEA1CBC9E56C783F68364023CB95387 19821F8FD3082D2743CEEA008B0F0AB55C2BBA23918A1BE4200DC628662775AC2D66
1979C71A72D9DCD59222964D04650181988D140295091175DD985F5B53B070D20B89 1983FB16BB7C06C295357A1BD655CFF3E0C49046C2CFC70FDB87E62C2EA187A0914D
19805E4B621C848C9370E0687B45EB1070A688A94BE949D242AA6266ED2D64C2518C 19842B55FDECDD9309FC215AF8882D65174ECEC01F38158C4D96FF9EF1B17AF32EB4
19814A5E75442F030E137D2E3BD654C4E4EDAFF7B46EEDCC9090D537B6CE01DD6D0F 1985E7C2B4770F5CE67E2B26BA0ABA9116BB3F89944E308A0127C99B1A145F730B50
19821872A47A04ECDED2421B511118B0628148D2289B74B79B3A68CA7A2547D644B5 198628473FD0DE250D63A7116DA1ECCE93B02F3CED8C894E6B090F5A01A26822503C
19832ABB83CBBFFE319957FD2189E272DA2C2E35DACA8EE229F37EB4C94C920A65C7 1987EA68C5A7BC8734C35E40D3A56449F6AC36406A0818C666F0EFB88BF02AC4C296
1984165A2ACFF7B92CE4338F3030E157CC75281E1F33AF00386FBE6003C4C8CDB57C 1988201B0D0848450A54B3FE1A75F641D1592D265CA639D29DD99C47AC8DCAA2FE5F
19854EA70A31E2CD15FE6732F98BE47354C2F92AF632B5BA1C7ACCA3633ED13919BA 19890216CD31751A42FB48F53200053979FD87DEBBF427363CE1748FAADFA0C6E2C7
1986106E6ABCBDC11006BA4560AFB17C7091BC1A632E7870B65717656A89EE550576 19909B407F5D041D9383385891A86F33AC51F0C7F4902580D9446D8118D8EF2BB177
1987B5D3BD5DD829886BA59D186770871C3D293EBED70D66EE3AEA926F2AE6AC6CEE 19915C2A39867EF485A454C07CD835350997F5C18EC1C3A83E57F57D8A0813EF784D
198830CE46B99DCEA2D15384C53D08C6F1A083A24C025D92832E16E816B893B3F2F6 199219B088E03344EEB3EE8AF03D18B2A4EB5A57E1DE60CFFC487FF1C2DCCDC88C40
198968BDF430788D1167B14633E0AD0FD74951C5826BE0F4B8CDD23CFAA88907C43D 19931B7B1B16A0DB3AA16474F6CF5F92C7490CA1F3D94B33B18DAAAED531D2740961
19901678FB2C4053E0E2056BC4B33F36A896D1BC212B0262B6CB59AB3A5ADCC027C9 199453F662902417A01C2B33489862A446A5D7BC27B87ED382CC41175114C7B0D42E
1991EA6A2C0F1EA2DC6B88517BF08AF54C9B1A4A7B0A4BB9A66ABECB539BB6BA1F9F 19956DEED8A64B3034F764BDAFAA477191564F3EF1339976051C0BFF59E56FA20C7D
1992313F2A5619949D0FEF977DFB87ABB8B8DD420F3097B2B8BEC00EA5A3E8C207CF 1996C5954E0A805A4A8431B40401E8A188D2409A16013427152F64CD8CD502C5EC4E
1993508C7CA5133CA63B98A14E11FB57BB7C461D7C8C767DB10E68BCEA1D5A4B7F29 1997B2F5AFFBF1F4D5BBD636109F2AF10BF4737DC0F722E11649EA017EBB2F4F531C
19947AE639BFD660B1CFC78DEF00CD1278833E48A65BE281C9438976BBB475AC6818 19989D08E88CCC7D3345E4B2A96F14C9CF8E211B90F8A2CE2EF57A68BDA5997271C1
1995C533FB4D2F4D3727B68F533D03554393D66FEFDAD1A3BE79FCEF05B98A5D9EF3 199993A69D91A285B2198A12F8B3C23FCA396CBF176473CC5A4C4E24ED72990BDF14
199671F4D16E531408B2D866286CB89B50DAAE9978B96C8BEA869F9E90B780F0C98C 2000162EDFE244272250864246D493134DBC29C5CF2C8A5B5E27FCCFC7C577C014FE
19971618C4F6FDDA21820BBA795B0AF3D00F96635FC5062544317A62A37060F965CF 2001FD8F723CFC46F2D9700738788930F22656B5F1AD5A34C4EA6C96EF45C8E68138
19983BF8A9C7B5C3D74914E0AF04AFFDA0FB1D1E644E2FB8125E94C480B4ED41FF6B 2002CE87FEA609914E3936624E1E6B167A60237A34C04FF1500C52E7258FDF3DE58E
1999DE326A771B82A9C44B4DAA194D3C2A8855CA293787D7D5F466A2587860B64408 2003FFED1699614DE43622D1057F172E54AEE1257FCC853C0D1828B072F7F4477309
20006F14F78C085F63E6B63AC41FE7574E5E22C723202B7D42A1BE0D14A299231F75 20044E3E42B5C00413307335285F8404FE1229D1B2006D482993E7F96D8C9BB7C41E
200166FB900C2A030D0E09EF5107F9905A5C66E6A5648FBA2B8E80217160EB797496 2005CB0A9B91F02CAAA3B8A05143ED6330BE0ADC9549D1AE8A46B2BB68E3002F3589
2002FE3D4904C8E3B6FDE528D1B931C369AE5115114B3701CD40B57457341D735576 20060D5AFDA53BF17BC6E069E5B1CB3CD24362C702BF44F7823E005F0700AD2E150C
2003ABE1907500771C3EC5F562B63DCA85FAF5769ABF0F8F74A678E508A59802F1E1 2007CC5E486F4AE4103A5D0C7396F31C42843ECA1EAF0632AB3EA191C0701EFA0C42
2004B11545E6C8697D1A7FBD4ED7A5DE57778DF66E04AD354E5A45E199615C6CBFC7 2008452C72B6ECD57240A505F49CDC390DE48C5251F9232F837CE604CA7C6AC0F742
20057F6C232D710E8CD5F9953DDFE922B2CF50F02F65A96E1BEF0C1FE6B5C52415B9 20096742EE1BA48956E6CAB43F05485A4457F44BFF2E75846BFB56F9C34B17CBF84E
2006052B9C062B532A6B83260D13AB6D3B2A48D780E03B4519F4A2152B82D1A90359 20104133424ADA7942199449554E493E2CBF5A4EAD39A22C166F02E5332197F32C88
20077CC62EBC5F26608232CDB89D2CD44F0E889AF80B1A9F8C0B9DE0EED9787D70AA 2011542CDD0D5018D322396F3BF767CAEB823ECD801D22E536D6201747DE4D2CFEFC
2008AFE3DEF464503D9E56674C9BCD0BC65876F2F455C83412E8FCAC08ADE7F8E2AE 201230CF112F6DA37736C836CE44A458B170B974F2BC9B7EE06AB478F2EB94774A5A
2009CDA7A57425C7ACEF0D58CC85F71D8512B32D9C06AC001382A4095FEA02E2BF2B 2013F18E82473C5016AE0FA8AE9DFA174F17945A5F3526C73A24D348E2A2FD14899E
2010A7EB6C298B10CD398780A7120CE9A31DE391C349AA273C890F620172CC434C23 20145D33177E01B7D101A571E196405CA95FE795CBD73F7185DE01F99C1122B2C050
201133265359372A5451C4DACF0C859BA6D37AAAADD08D2F85DCDA2399D894840D7D 2015A4D54AC01881582AE55E34FCFB39189C4482230FE1C01F7BAF31F97B59DA6823
2012AD9870DD307B9D602661D7ACA2F84FAFDFFABF5A89AFA9973161DC1CF3A3943D 2016606D7E318EDA739F6C18B7A3F011E76EEA67C696EE9EEBFEBC8F1F95CB450D0A
2013CB84A9C241C8B6D6CBAFD2DDC75166C3C2D5994DF4D2C60739F34E7805582A15 2017FDCA2740E7CF611F427FD44ECD90CEA692377130C239B3A0AF9F492F377C55F6
201476191F4150309E55FA04EF8A59C4DF8EF1C95E57F0C255B63C82A7775D4CF3BD 20180C2910E3FBC614DE8F8F917FF5ED25702A5500D9477B5A09B0A12C9DAAB966C3
2015A3C56600BB869D411A5ABE7EC6C67437B328DFF2F2BD6267A43D69B6788802B9 2019AF6B4F5C16BC519B8D147E414C1334F009730E52C0C1242685F40530A32E236C
2016249DAE42336C2A3DE75816951644C742C36C51F120943DE8B75052EE4405A346 20202143B0053A7FBF6DE9CC6DA142DEE3A61E338B0E9ECE657C046F2540CA50BC49
2017E157546DCB7D845D81AEB84E70B857B9152C3FA6D5F3BAEC8611C14F67B54DAC 202155062DBDC0CC1295991242EA7C749000E114EF1795ADF45A4CE8B33DB1815CB5
2018F58BBDBAD4C473C0DA872330902A46610865EB0EF8F97078841AF74758F0E6E6 2022CA3B4D8703CA72082B63700BD8ED24610FF157C3BB2A704FE41AFB1FAF4774F1
20193DBA2B1659FB937AADD1C8A612C61F0C1A9636F0624E64D6D92966D892F44F09 2023A208ED52A9684A802003AAD6D9FCD5A3CF635FCC938931CB94C751212CCCDA6E
202048A4BDFC9A83C267ACEF143585C51ED45F59126AF7EBCEC2B9584B0FC6C1E670 2024202FEB609EB5232D1CC78DC78F60A00441965117AB45E898BEEE41B9A21D4B17
2021FC382E476B6C33071A9FD3FC2D0F943DBE055BAEDAD6702DC0F474F9B2DAFFFB 202564F5DD48296352202F5BB49BD6D7C8A031AE5E9667E077ADB2AE7D92D61EFF47
2022C0AF48B326EC447E31210586B7DCD517FB61F4D4870A5E467492F40CCEAA4F2D 20263599436C302EA12D0C1713FDC98CFBEF052D7F06666FA15DF8571D712A3A77E1
2023B06BF4FD8B31D9650D032A0A28E1D413162C649352784A0414C474A82DC471FF 2027370D07F557A30CB110CBAF7AEFC425F9C9A4BD06F54608B44AA3B796F560711F
20241FFBDAE7795DDB8BF3DF22C393E939F5634C540DFE2590D71BC1444BBD79A9D9 20286EAD4AEF60B83DB1E356D7B6844375FB3AAA0389F56D070F426C759ECD2F970B
20257261CAC5207814AAA58D8B135A52A3D3174110FAE364257A6F79AB3B73B52A0A 20292E65032797BEE2FFDD78CF0B7C9684F6EB8FAAB6502F4676CA8F23D37CC4D4A3
2026EF08DC05593BD0327BEA4697339E45996E5D6812D166165790D8E4543C130DC5 203042EFDCFAC381E4B95D63E26FAC8DC58232288CDF0A98F076816242E68A3C3189
202734725E44BB037555803390CAF9F94FD6BC08AFC3ACE747B9728D8CF0128D5B4E 20319B293751D51E7582AAD19F4E575CFC301E8BDCD72F85C1BD69BC0180C1D871B4
20281275C4BD7E50AB5F980DB3C3281E3FC4A500FC6DD0038D35F4F5589679647238 203229AC63BB64E6B4F285AF1B0CE241C9658286523DEF4107AB12CABD9576D33F44
2029FD7EE68BFA9AE20EB140B7277073E6F26C7EF556FD311D510C92E89B70762F42 2033493E76711E0E75D532025539810B03BE39B802AB13458A02D7815F75CE5E621F
2030410ED318AFD46F66F605E98D1EF12F00727B3B3F21F695241B4B5863FB1C27E9 20345ECACF9B00ADFA4652530425A808B4B65B60DD4EAC947E4FA3ECF5BE3D91559D
20316BBD4365B9AEEFE8A18AFE350731AAA0ED817498539433027D50C8D38284E888 20356A9B0F16ACC5294AFD284ECF519B6612D9BADD8EF7911723F1786F2AD7D171F6
20321E6A1E6CD54F851B264E2FC4597A6A4FE03C7CFFF7D1F75CEF43E97B22096A1B 2036B55F98D80F8D65CF39EF1C58A76A8649816FD7AA1E8B091939845DD338CA2C02
2033D8BE2DC4A899E64492359B346D9C0051361B6AE9DF079BDF21FBD274597B3C02 20376ACBE870783FB4D5CD36267F4A4CF2527DE0060978524E869DE7CDAF056FBB81
20344D0FB1C66B8AE0AAFCE0C1CAC54BEFE069C0BE9505EB0B1AE60869B63C396698 203884D3FCD9D1E6F076892137B190CF20066D1E05ACF410A0024505E97EA6202686
2035EF594E1C8E5995AD22DAD027BDBA4BF2FA9B570E8F0FA3CAEECEF6DB8C4819E4 203962EBB56DE57D3298558C9EC9489312450A6D02E0490C88FC657EE2005040AE5A
2036AEBD7165A655F1B7828527DCA9D01324FBFEEDD6797C8E3E9E17B760C70D7AF8 20402B4BDDD4BE2706EEAB70C3163CCEC2C2D346E10B50E82EEA4564A96AC436C0B7
20378EC0AEBBB2C448DFDA6B6B4BEB43291772174F1C369DBD1C4183C8E00A4DB46F 204154E3D9AE06257502FC0A4F9AECF410779E47492F48C8DF69D211AB390467F1A9
2038208C324163E0BDE572A84B85393892545249DB26457AF5FB311CD5EAA11D7F9C 20422B8C820F50E0608EE015D80DB22D2067608759F0CF469C6D45CE48E1E67C2843
20393E491B0D49C77898AD873381077DF84EF4498C012D7752B22F0660810B6EC0F8 20433B6024D1D1828CBEA138A6F089389E6BE0CC0C1963E788E2696F4A950481DFC5
2040B66D447775AD659C51D3893CD2B4509E8B9D1413A99527F720571784E7B9302B 2044BBA53DC81D7AD91FDEE11146D8E242F098477E69BDA5D990386316D7224884D6
204192175F1FCA726E8AD6D82B9B7E853FFA5739D0DE0A02BB115DABF83B1E4DE706 204535F5C2AF00236F13FB8986ADC4518CDC93C2D1E1D256FA0DAA14577C61D4F6F6
2042C23532EE82BD57109F9A7A4E6A87DB4FF5C698B04003312F1BA23AEEE22162EF 20465BF08537E60599F7084EC51099B9463A0FE88BD4496BDB5F853FFC53424B0608
2043F22F7D338554AB08625B26D74F7D23772532A371AEDA9CC2962B0B665393FF04 2047E8F821F943CC9B3F3911C3E13931272E2A99258DB306F5F01397A7D9D00F7858
20440B032502628AC491E593D0D450757AB016B2C74C6AD44594E0FEC2F880B578CB 2048CBAE627A78842ACFDBB3EAC00A0AB5B4C1BA5AC3FE5E11E5FE389932B09055D7
20455C4D6A409FD6B64B9F1BD7CD8B69676814D169609D2ADB2F1E98F6C8F1A16D90 2049BCF80F8A50586E33F48844F5DFFCE3A7217597CF16952229F2CE5A20C0736A0B
204663FEB3C8FC663DE0CCA1C5CFF03828FD1DF28678492DA710EA61B9096A173CA5 20502E280594E7EC9EEDBDF338A52DA3A8C3ED7FA85BA0DE4B080E0708588321D2EE
2047FA8A85DCE00EA42ACCA03EF856F3F17FA32A69DF9F73C46944705C5DC20A7535 20511B9FFA8678E1A8FC5B7FA8322EBA857D5991F76DD9B171B3AA8D7CA3C932DCF2
204834CCC3878E878A0BAC55B7D56CE2C43C102D0AB841BD4A3C5EA0379D321413C8 20526432D88A9F8B3982D26595491C3B5563DE6FE8BCF41C162B61C716FE00397BCB
20496C2DF639D4EEA521E0A1C68D8B60319EB999707001795562E8AED4ABFAA486FD 20535DD42814590FA24014282794104D8F27676053805A311B795469644BE6CF35F5
2050C11D4F12ED45A04DC72264A882C97510C91F2DD77E3D5685DB2CE52C4746F613 2054EAD2C4382ACD7D250F2E1F6C814DCE68855536638B96159A3B9661FE9B3028A4
2051AD98EF16AA9773CB00735151B7D4B9315441BC3B8BDDA5ACF619F49B6052AFAB 20559E064166B8D39BE15834E40875CCEA8FF08F344A3E2BE9CE9086A5CDB973F6DC
20520F19D9ACFC8D6E0CA79A25A8360F9749EF39FB60404E318BB1A98EEAD98FA0E8 20563A214DC1AF1F81555AC450679150E02440198BD0D9D386A6E6B4855E6F9719B3
205340DFD76BC3A84404F7D3904BFB2EE3597D8364EA556E4F7D18F32F1D86D10287 2057AA4DFFCBA16DAE0CC848A4FA97E5F040352A8775A4B6025EF8D9A8FD61CC81A1
20548AE46984461ED91AE22B6EFE0CE5511921B539122DA3EB48707B8ABFCCF2E6F3 2058A0B7BFEF55F765592DB8347B2ABA20A3AAADB88B030DACD939E1E70DCF5A887B
20559408D626EBD0C2A1A87827ABAAF02873B675AB54BC6CB5B40E697471320BB686 20597B65F09168F08A6D1CD30FE0F0770A9DA4B23EC783F0D9C95DC0A6354913BE9D
20569D845AD686DCA663AB31B4C2A1915C55A814FBA82E77736F7F258C1AE7B42449 2060D5522D1C35D993A36D8225A148BA8867F6538B583FF2E1EA5A6C8572F4AF834A
2057FD341CE08D65E648A3FB4DE280353F79FD70578A0C38C963461BE98100EE4084 2061431BD595B9C5D1ECD00326CA1A9EDC1B1195A15D3DE3B6D1049124BF7E911769
2058CC1DEF4E35B10BB81C632FF1AB4511B80C881A729EAB34C9E9D217E3A57EFC52 2062FCC5D21ADB72B794F1AB56F08CA339026AF6D991713F6B4A1DB4A233BC571717
20596B73AAB4911830A00BA599013AD3BB83BD3DBC7445C316172B3B8A22B8148ADC 2063A15A691E9DC191E6E2450B8F57469D1A00726E74CF8850F4812D93CFAF924D27
2060FF33379CBA195094D2C2CCAE0E260D8DFEC35153BB3533BE014F456A108C9D62 2064D9B39963B01946F06A6EA9E2A6724232C4081CFA933436A8892406D2E7AF1B75
20615C21C1BCD3CB9D7AA0DB74AE571A88AF6BEDDB6DE3DAF92AE60187819E8EB8A6 2065D75D837D5B0A84E908B65705071912657FF16B480A4DBE894300749A16DF2833
20627CC1CCBB5F23E63A107EC8143F0F69B62CFC95605231FE605A989407218AE464 2066E0EBD750D22F28F6E958693BBEF81D635E8F1E60CBD720E853177EC41C17C1F2
2063C2B566EB86E1075B0D8FF788B726FDA5F5F2D8743C39224C2231A46426F3B6AC 20675FEBA206EE5234A246D731516AA0AEB5915E3AD101B7ACF69CA24706F9ADB04A
2064747E69C46AC322733DC052641526E775F10924F0AF404C37BD47369986746AEE 20682AF8E90402B5762D04DAC08EC4799554724471EBF446E7F6C9759E6D4E268724
2065ECC7CAAC1B2CF6E5D86A46F4F6AAA2BB7707BA4D89F1B46DA3024A84228E1A5C 2069115153F8532A844B933E6CD4F61D43A2BA73AA53ED9F2A905299ED8EC3AA7215
2066BA5EDB68205AE6971A255381FC06BC03644D67B082FD503F502B28141D437C84 2070BAF9E131E4F80FEB1DC72B3086A15D5EFF32B0F5A8DCD30BBDC1047ACC79605C
2067E809F5C78BA5FBD5B8D51C012C3EFCA915505897C8099F0938EC15464FF4EAAD 2071BA4F1E4138F8632E78E00E6B22C76241D1E88868D6785A39219BF6AEF386B42A
20682012A1239E0251BB126F4E400C170BD1C47656CC010235236733633CE22A43D6 2072DDB156A7BECE2B3234896551C894062D156328B803979A4DFEBBFAD3E1E039CF
20693E043B687B32BAC9EDB90DEA0D0B0015E8C1DE4EE0B0E0C10F2F50F4E35B31BC 20730075DA923DF2A6380A6141121D9AA40FD735A158AAFEA4D64F893256C114F231
2070915A1D984614AC0B10AF2FF1B28FC135D07072C0530C50FB6ABEBC1592CAB0C7 2074574D2F16C2668E4E45E3CA3B181012D5323C7EE1A92A01C2AC0AE30AD5086B20
20712FF36245ECB609DD787852E5509AA57B3EC5F6186B16A4EF52ADF58D7ECD1D34 2075C96310A4537301E1D9DAF410467722F5BE87FCAE624562B5DE40B033C759F8EA
2072B2BDC2BA556F7915F5293A8CB3F44E707A57F6CDBD91E90F9146874311F25B80 2076B2734A2A2041C0BB44C5CDD3EEA3576A77BC2C39B7BCA32F8900CA40B542B837
2073A7348FA90D09459843F842FCCECFE4025D12B2BF2B61CA32E6F72B8618390560 20779DDFBDB5B325B38672F22B23F51A20E4303DF98CFCF59BA2D0AD5DD866530F01
20740157F80C82BC6A54B9F0289215D94C662CCFA55EFD0650B0ED761D98C65BD47C 2078B410B62607CAD08422108A83920F767E4A45538AA2DA3148B87CAECD16F4CF55
2075F7CD595FEF1C7DA57F3B79FD55ABBCE8D30B1D0DE32994D52F8885A87F0C109B 20792806C64FA88AF9027565132309B5A51025B8CE6F17CCEE3BAED7011D4677D075
2076D90052BCEF87DE36DB4A852E910C792C094D0D0228C53D20ADA83280C79E9100 20804A63193C4B501D80C1E31904B2B3E8B7A01F3F85FF742B0A13D2D3570984E262
20778AF8888CAB9835D6CE65D7FE36B18F365C4F6324DD5670157B37AF55B205F460 20812C92F7C9DD4FB1E1A7B61AFD0193AA1C24C800B2CB92969DEC6D24DEA026B30B
2078D10A0D16CDCDA78539CF166ACECEF425A1740B7C8F02D13F2A86070416AD9AF7 2082E7CBA45177A45CAF5629B783C030163703FE5FEF406420F441D972FCA1DEFA21
2079BD30314C6DC920E3CB78117564ABB1195397CD66FC92F54B5F1535C15E02F763 2083195264C0A104B847B66C556D2BF35A317AE0990670F86F3CCFECC3791F9E56EC
2080C92A2F3F4CD1FEAD965306DF3614D0362B0191492905777B75D8D1C6F5064A1F 2084B145F67A503447EE875795498242E2F35F8814A2D494208851E6A206EBF4AC47
2081111B7EFE43756B4F0996030C00503EFC5351D388C150BEC0FDA5AB0E218423E5 20851C85EE20386C9B22CFAB59389D427A12B8F62678C51D128FF14942925DE6C3D7
208278F87F1B7684AFA6DC450EF115ACF8AC2C8DFF33AD39FEA1008A46EA9D6BABBF 2086274176D06D7F2E4295400606478DBE1E75F8AA7F482285897AB1992DF462DCD3
2083B5F220B209770EF010154C87A4BC067315192ACEECE255BC6A5896C2F4963170 2087482C05E7FA03AC3CD445C79EC43C9BB6CB845CDBEFB0A0DDF9AA38911D0BAB55
2084576E250C3F8520E1E413A30A1C17F50F6E8D2DD87EC02320176F355709D75320 2088FD831183B737A738EDF8F5BE2817BBAB1AA8459A01977B76F7100A30C580439C
2085D1747ABB9EA215793CAF3BDAC8F5C0812A630FE85D7FFC3AD199E5D83B068C44 2089EE6EEED014D41B3FB226AF22BF9D001E3EF2779E4504C648BFE7932E6BC42B23
2086B757C8A127C3993C01E25FD94725415298FCFA762ED456DD7DBEDDA2F7AB71E6 2090F4B30FED418B8FC6AE909169A0A045D4DD170AD5B4572D2110C5D546532E4071
2087A289E0F59FAF62E3A2CB6A0995CC06838C8F9A6E19226B0E0953E2BA3764BBDC 20912278C9CC0EF6746F8DC75DEEE4D7B14E464862A414EB912CAD09A06065E82162
2088257212FA3143D2B67D308AD49A0B245F0A97B09919C307B326D575F1F865ADBC 20924175203ECA375560F62B0C27BA57EF65D843E8A3C692BD481560B1CF971730BD
2089E292206795305174C193A4CABB0044936E51BF95D0B13E81F2C64248F1D9749E 20930188E4FBF3D0A1B0F9C1D4C0FBEC598EA6EA1B1FD4BFE3610500BEF50EBB5B05
2090CEC22448489B2AC1D766933B570E3471B4917ECB1D66E0A4779B084B1D22074D 2094389B149385313B3F3E4CF65EBD53220CC81C1023C4455C11574B3636C1964A4A
2091108867FEC1329F5B30FA344C19FABB7C09A50F49A5B0A1C42413B3ED9FC39B36 2095A5EFAD4C41D06FD44F281E112F1401BCD2B9EF2F9D244EA5F2CCD5B900CF324A
2092500AD32B07AEE4A5C0DFE29DAC2C6FEC431842A473EB710293F23774FB448E51 2096B97268F3564F0B5F73D18DFAA8DEFE4C4A886D5B8D58E0853058B8704F6F44F3
20933EB6B4A27D98078B2A4DF3A5F0F41308374765C86C0A879641FAD025EB77D7BC 20970BD42EEBB38C5B7907B4F48F63796E183B14D8D337C9B5B84A2B88038F6D7678
20949328E717E2EE4AEF31A3FD23573DDB8E81F20F6499FC2BB4C94D3F1054785E0E 2098F286C8FCDD0328716D483B8A813FABCE8BC2C7195BC0CA833B34B65C98826F3A
20956F3B8D6176EDA6E386FCBB034F6E82F6FE43CB83AA1147B05D51BBB03C477F54 2099422E60407C681903403747CA0238E90DBA1677598AC8AE992A6314B28BE29B78
209638FC98086DE0E04722C5F0CBF9270E0DFB928EC7387710118513A3C97C0D6A9C 2100478FCA65793BCC02310803F60B142F2DD9B219DC8A79C537DCED3EDBA677638D
2097D67BBC5AA5DA3A33BB0F534096582355E0B3BFF7E6536FBF496FE4E05F006F88 2101C2CD9B29FD96FF384B147380E0EFDCF1A5B6B6FBC4C44DD72F6E781D5C6C76EF
2098C7C28672CC58838790821AA48534FCFB8DFD4EBA9C94E4F50E0B9E046651F779 2102227ADA8B8A2E6D172BEE63F361FD00DD992095A386B1124E40D90CC946779602
2099E11B8915503682E7FDD90F05DFFCC5A009CE64FBBD223E2634DC95803805F4D1 21038A65D2B4FD14874121B4839E848B3DF70BC60BF4E04D9F2852BC48E16B1D35FD
2100C27B4D543FA3EF2B222DAAACF40C526B2A1563C0968E7F2FB22489810A530519 2104F7DDEE0FEF8950CAF10CB6F1A50FFE74B4B55D2974E1AA5B0EB3B9D6976D7A7E
2101100FB442B5F972F960FF6BD86A19A1F297F93DDFF83CE2347EA3F861596B961D 21051BB9B9121BA8E367B123BEC64D3FA53001DF59917935EEBC0D9475A9F54281CA
21024FEDC423B8262ED0F0352DA19F07ED09117CA72EFF0CA7B666EA45493D1E1317 21061FCC265496F1B1BD3B8627458FF0058D670296C666F26340F7F117E23AF6399D
2103559D4B5D278F107042D276C9AFA6A093ED696867BC1041E5F25B11C1687C8C1A 21076916E874FB63739188AEFB38442C49CC4943299F521E32153D5C4442BBC16147
210472DB2FCD4B632FC212D774785F2D3579BC0DBDDBC8CCFBCF7B686ED3BD92D4F5 210842720BEC8B068C579C4EFFAAE8F96738A1137DC9C20CF23463AD692547820C46
2105378CDE86406399B059198B66E88BB9EF7E572C6460C36B0F2FA3E19AC56F93EE 21090A782C06A370FE6246E22C481076C366753439B6CE9A230BEB52E6B4AF45A9A0
210660F1F7BCE76F0AF284C3F41C8BB69F7D34B4644AECA4E9324CE2EE4E4044F4EE 2110C26810B594F3A9E0662544A92A90744808F8C4A4C962E4C1D0E39F0F4BEBB95C
21077B9C28E8B454D894445AB47B05F7B4B94529808A007A5E3A7D323F661F9D9C0B 2111CDB0F08F23335159FBB51577FBF27A778D97BF5565BD0EDC997DF7F29AF3C103
2108B5BF1C24FAE9D951AF26493C3C9302C4C040A33E94E6596246511185628C7A02 2112148A2A20082C61ADE0663454087D5E6BC74E43A9C232C4CF6F912E203D82DBC4
210915D33184493337E2543B1D82FD5ABF4F47E894E809C51DE0ABE163D378910FF1 2113CD2EF6359E7C758896F3036C37012335A08A5BF506277B31C255AA6CDB380B94
2110717FA82AD420E076611F5559AA027F1F82433B4B103CC1541D342330D9BE4592 2114A0C6EA590035765131E6032050A9E07BF66A23EC6F414BAA50DE3CE5E18E875C
21119B9112E1FAACB0FFD59326ABB3A352C54D097E0B79A91A0CB39B77AABC40D191 2115A7D1AABFD7EF30A34AEA87B36D8465CCD6A027B87CFF2A2CAD98EBDA0C24FC3C
2112C895ECDE7E9439DD2098E2D81E56F13F178CB8DFDCA5759C4580BF1DCF7AA3AE 21162594B560EBABCC9FF40CF56F19B4066A3D469C963E5128EB16FFFAB62E975B19
211383F2D998FF3B9789DDD4B2A3E1F5CEEEAB48CB410F5C07DD3FBB4C362BE0D32B 211770DC9EBEE56F14DE5444B76B2031DFC03D3A9DEFC0980DAECEB02E1A36FA77D7
21145BEA9A428692EC6585A20F11A5C73FA22D023131B1B416AC0B2F4A4C801863BB 21187CDFFD2C94B0D250F8E70415DA72D3F2117384B5BDADFFFC3F25446A5F845CE6
2115D43B180F82391830064FBCC5A233E3ABC5B30C1FF8155C61E589604EC6C16E48 2119E9AAA0B316D15CB8025ED0ED3882D2EBEFC6E93F4E58E5B4D6E904958E6CAB79
2116F3C676C95C57B8E9D4305C1B1C7ECD75B3A5C7F8B8849AA1B46FDDD928D92B21 212030B28FC4314D24F20F00DB8F39BB208540B24CA419AD1A491FD6CAEDEB23333E
2117D0B6FFBAD0B71D101EC153669E32324C497CD26093D0D2E4AA197F9D5E459C50 2121602367F8FEA628AC535EA9F0BE0476B8C57BC56756C6B44829EC75C8A09134FD
2118709C64D20552A3B9DA9475D3658C302B5E7EAE0DAD3F9270A327A6644AF5C3FB 21220AB4B6D1268F94C1973E781172FC066CE1FB2FC39B3B20F420B664A5CAB14EE9
21198338C062F33478E38E82C09510F27C2FD1FB2D304355F28B35C9EDFA0AAED925 2123D0D216C2847C427F8825F859D8D9289BD8C912A16DF327EC4CB41F8A2B8D2F01
2120F2D1493BECA291483EB47FF0442C3692D29D10FA92ADF3C9AD85D5AC09D35949 2124585C4616FBF6B25E50EEFFD4494C808304B36714A82269007101446AD43277BE
2121166DBEBAF7D425DBDF179F8BCF21912C5A2123E869DE9A9CEB4803F2C04414BE 21254AC365CF6CB93EB047A73D4378087BF09AC717CE489A16E1D36B89116D3EA8C4
212245DF573DB40F5B9E42406F49862C7B23826CCCB05E76BA23BAA5A17CDA93D4EB 21265CBE0A9F629795FCDBAC49D2E3577E32779C33CD82F74A78800D868E302957D7
212359569951158FC068E32ABDD8930D6C4C58A7DE1D39030E3B818E3382938F466E 2127B766FE1D26467E86A4881125608881EA7C5697E1E8AD377D514BDFF9A1BF1566
212447E8189A6B902AEE4798286CF0C032E0F2AD018380C904C2F4EC61ED98CCDF25 21288A43C39EC482B6F20AFA8DEC15B7F444BD717E984AF6A37C99DECC94BF2B8A30
21259E2C691BE9812FD5E0CE01F2C94134C9F0C05F4B7F1260DEC20B9907E1B5D372 21291F03A05752C8AF0879168D70562B63022C61B23BC115B1D92DEC97F2978B28DA
21268677FB4F0485ED87A3F6EA1A647072D635F7E2838649CFE37A4FF8182882BF7E 21307DD4AB976BA0F0FD9BEA14F4E3D3304E95CDA39F9BB85EDBDBC28BFED6C80A66
21279474583F4E9D3548795E0A63D4859BD27B662D156DD893B3799371DB1BC75A38 2131B9613AE5F1FB97B0D5E78290B367CD0A34061830EC30CDE6C6AFCBAB9323677F
21280F454EBF825D683CF2CBC8B308AEE9D8FF8EBB8A7DEA067AEFE8CC77331156CB 213245959F7FD0608ABB2F1B8931A91A6D1DA51BEDC8037F421FA53758B4AB91E28C
212920210ADE2B5DD0A9F77BB6E98F3630800BF33915E73E515B34E58516D1AD87B5 21330789FE95B0C897CEE807B3F1EA03110300CB738E8B3C38E90D159A1E85407869
213000A8969EE2595D2365AD69FA4F67CCAA7D243B8D03FB39CA136DC1E5FD434750 213487FC294E89F8DC85C1A5545D74BB35A48144EA434A933F1E403C4FF0415FE13B
21318A329F7D11DC4D33F6A0BEC9A23E5EE1A18FD5C3640E3F30FC2D8CCE5630E618 2135D8B841C74816764E9A32230DF236FDA89EAAE9406CE0E33E672388EE47666F70
2132A273CACED00DA6F094148C5D6751DD983A2823418223E715DBE8ED167B2D1999 21365107D107E089D1FC113ACF6730DDC765049F6D6C657A99C14C8D560D6961BF89
2133650D0FD8685884BCF1D6147C162BDBBB6597DCEAED3B5CAA75F301D46F2F770A 2137F1DDE04EDB867BA7667A54700F995ABDE094D67152BB4E4A191AD52404ADB97A
2134CA1C8997E99D16CC0A58572FE1D68383D87335A38AF8C27556FF19CC421B8BE1 2138B6A50585C7618399A94407224DF225E0627E2F377CE95DBACEC28F277099E40F
21358AF89CDBB98273BF4E43025A710B4ACB5D7F2C77249CF1756282B74CE43F037B 21390474D56C1E5D6CFB36078F2FD96B34DA83F14FA6AFBEE67C0E335C844D4988D6
2136F62DEC52EA41330A2783B5E64F72392EE25FCE9A7E872F4A9AA7BB41E5368888 21408B9BB4E646B814B25479081F0FB82F5AC6BB2932EF1046269ABFC9CCE8C77548
21376DC531A2E602696EDA1CD3DCF808F62176E9198AAE9CA8925038D41E17570FD2 214136DC56E43A2BEA3643E44E273DE5B0E76DB139A0C0A42450E5DA96C6C99A64B9
2138E976F627F7213AC8EE1B2BC240871B7CC1C61B81BAA031B8396536AA62A67DE7 2142A9FDDCA3DF9A560889D798ACF492A433C6DF6D22480BB0A78C347B307114DEFB
213963FBDFCFD363DB5CE786230B302B786A859C48BBA8CC27EADB1FBC84F1059FA1 21432B81CCE915E07EC11F829265F88F8407B4545A030AA909082ACCD43E0FFB25D0
21403A02148B4CEF5DA6D90664E72DC6F3EA267E4102102F18D79FFBE4E2A642E94E 214476148792B7902E41CF04BC63A67F6C17493B2607CF7CEC2EBEFE697C1724D927
2141F3D9376838236476B1030A0C47D28F4E7EF6358D213AC0A95391659FE736010D 21455CC49FD9F51A61A838D5B6330F0A48E248893201F8931B663668DA04545F38C9
2142355826A83F7FBEDF3164FF177C16C41789E84F375C6FEFEA767DF654B0533E98 21466ADBD9A42A47151B4FD5C37ACDB0D7305D67AFE9B8B90F52065A1C9E7C4D1A4D
2143A1430FEE50F41D39D41DC2ED6EA7EE1FCAB31FCE526D5556E89D36F3B402C5E1 2147F933C37C617FE0130094B11E337F718C43FF041110DE150023E5AAF163A03084
2144C0CCEAFA157772B77556AAC8F874A019EAE0A797BCF85655A7834D4DC32D388F 2148C59FC78FB50DA0EC4ABFFD70FA1F7FF9E1399D983446D500C86F6C59EE97C4E5
2145F3E48C0F7B338BBA1C9E949C5C0BC1A727A77FEBE57E1421FF81FE4AA81869FE 2149A429A0F2C0BEB819D3618E126CECF45E27AC02768692437C632D19C5F92327FC
214686EF313CAD75613726AB3F7508BC904A7E55F092A16D605802D36509525EE2E0 215060D68C595725D3394659B7D89F0A95D62D8A66B49396A110BF64707AD6FE4E1C
214718B8CE25A0BEC74D167F9E766E30C4EB0D7914F4DA044FD895F3A9C196E23256 21512457C86C83D2A174D3DCD73FF023F13E94710E3491F5FEF7A6723EF7AA201B88
21489033CF1E352E82193458B6CFD32238CC93CCBB0E05E8E6AED8CB27157BB148C5 21523D3709B4C9CE187F16D838853A0F6A84F13246BCF4E923ABA3AF52F4346A9518
2149C644977C16D7F4FC50DA22A28CF8F945B5E0209C8D715E8E7D9D80F32FEACD13 215340F55F93D88E6A2A41DE8FB279F165131D1C6AD203D04723482F714688F8299F
2150E6928F4BB60E9684C0F865C9D0C2EEA5EDB0A355FB16426A2405D124F3A01977 2154BCCFFF3C9C7E6523CEEE130E4878D392C2E2E2F2274B2FD9DE63E65B7A263C77
21511DE108F66E30EE01ECAA74FE0DEC9A6D485B084FA8A38EC3A59B23FD35B72F87 215574C290265FA2B3ADFBF425D59A43CA8A0FFAA114FD1F912B9950BC4CC0A6E236
2152ABC6B7D73EDA44DEAC4AA7285D15339EAC0B54B52FEC5B7EA723622704A3DE1C 2156C40E2BE21E4D21AC0B9EB1DFB56940AA6F1FE1F15CA9EC254D963BDDD4A522F6
2153AAD548509991E18B3AD4CAC7FCBA320ED3989A185CAFA4E22A42E1B5C209F774 215794D6DB74970D2E8DFBC51D4642FEA8279BFEBFF8BDEE03578C26E700548D6E0F
2154F5FDE4CF0FD23978F3C37BC3EB97A0AA9B9CBC66538FF705F8F7E2C3CD58A359 2158D514C2EAF8DA61BAB330EC647A939374D913ACD6673D6E931A620EB84E3DF5D5
215540958DC811EBBD7F16902417BC1C97C3D409E4039E0569C6826D22923806BBCA 21598BB91EFB4C22FC96F27786C9959EC5BEABADB9E216D4F3B57BF1E377D7D1385F
2156E601CFEB9B249597BF69BB74FA9607EA9CAC2DE0C8B958574B715D64D5E2AE19 216068DD7FB703F5713CC2D9E4067488B863436DCFF55D2950124E18F87DB83791C9
2157DF262825913DE26CB598B36E6F8168F7641A58018B9ADBF73237113B9FBB958F 216172F5B9F39CCE7A05C2432845CA869A271753DFA0025FE7514EA09DA99365EE62
21581A3CF592672A51EE2463CD7F22F058597DB9C7316CCD49EFAEFB6A20646E0DDF 21623C98B603FABDB4CB421F625A4CD82049F402C455DB2841B066F40085E497BA62
2159794C0A9DFB62A42FC95483D7F578BA3163317AEB14561F49F6E2A909B7C92370 2163BD35AEE50F51E6B434E6DCD2EF90B42A1E9FEA21B8C99E21FA1D5D5FC28F9797
21602592FF0614A1AAB9AC39E93A2DE2D38330AA56BD51D1FD225D0DDA8E91B94267 2164873A2FA8371A7DA96D8859C7E9CD7B688F9A23BC7B62290213D19424D2515D7A
2161127CADEC25E9769512EE28557E051F516329445C31D75E19711CEFDF77224F25 2165383F8BDAA8D76836096DAF29CCF7B51C200266D5510ED2F9131444C4D8BB571B
21628B590ABB3BCACF4C3620142B0401F7218BA00C67A748A2DA5F784EF53521F536 2166EBC0C77EDDF79956BC1D8A01EEB3B83D52D156A650B13F1D5054C8279E0D5458
21637110D64B659B7BCD26E03F6D35A6EA3452A8F33B4A4E580AEDBC83E7D882BF65 216716F8518EFD81BCA14DE678E3A1385CE39BAAC3005F16AFF7CED554577ABCC7BD
2164AACBDB77189BD88AD8A0CAB62EA74CD673A9B37AD1C40065C309BB399045594D 2168AEB60BF6E98BA2C46E4389E247F0816383103594FC218540348E32B66E2CF7E5
21657BCACB882630E12489BD5E049F217C8498287D768B4D0BF904BF0BE1C6340D18 2169820494111AF1A2D2739A9F6D9D11DDB8EE0F92368A0B5006070EE15239E566AE
2166C14229DE0AC87C1FB28EAF752A2C88FB5B80A4EA1066F11DD918A2FB2E18DBD8 2170032B6CEA0798E76644A4989AF332A5731B2BFB71BAB1F0AF77B88050B14E5CEA
2167384E38D2B645EB843A019723C71FEA7C4D02621308D92FD72A10522EFB409D8B 2171B6A7C010EDDCE8E9AB9E074A675B8B6DBE76AFC5FD2794FBBBD0199E00E031A5
21689A5E51F4AA9D768ED428750A6F34FBFEF6FDBF163B13F6FF96450BC2DE22D65D 2172F8BF616BFD5775896B7FE4C0167AA435605A8AC86820D10A82F172C8D3056D8D
2169F7F0F5223CFD29524C61D0070228ED1113C58F48FA3154E53E67567B46F7040F 2173C4EAFC3824B4E508E050D8B04485DBB016CA08C41F41008E327DCD775732893B
2170B03DAD476D4B4A2705ED9521BD22F48AE00AD101CD53BD79B7172ADBB6D4C4CD 2174B32719F5B323D0C448E9077687AA52208B886472AF2C3D32104486BAC57ED9AD
2171951D9CB787F957A1177A7F967A3B867D48A74A0EFF9ACB491BAAB6C997896895 2175EA6C496CBD0402BDCEDBE0BC0F2E5DCE0173D4295F0A6A64BC91ECD30BDFC7BE
21722F3A1DCFFDC2D71659F916C1630ECE089BF7318201DAEE72972A8AFD0C69D5BE 2176B61E0F00651B9E77714A7005B1343B4A3307ECC0A2FE1078A775B66FF250D7D0
2173B5DBBF85ACF39AEEEB8CD634A58D4AD84A49E75E39A5799D53DDAACB7CC08310 2177AFC71E3194F19FA4BAA305E1B728A28E5C6283B9B59B88C874F4B792F4FAC98C
217423D44AEEC34D256B1C6C208CF20E986B5F52A866FBE4221FF02A77459AA91933 2178929EEAFA2861E5146C988CB334EEF702140F956617025D3A9277C8684971F7F2
21754DDA62FD7070BBA306D113FFE2F96090AD748C09470FEB4FFD0CF8C72EA68FB9 21793DED17E68275C6E02634F0C7FE54515EC9608F4AAD08648AAB819778A5A49B12
21763F00F3F93A56DE5659A40ECAFEDF5E3CF327CBF8DAC7DF31F0F02EC416863D12 21808D37D277ECBB796779E1604D12464026C58EC5078097CDDE149A36940EBDED9C
21772787C56399B9BE4AB5DEF7D7E185FF02521844F75C48D1ADEA4C0D8436B3A780 2181B9D85362D5F8A2373979D4EC849A803E25394973BAB1987EB84F5A4B0DCB1546
21788A55EB846C5CFFFC5D207B0F269DB3DAA7E06FFFAD34ED5A49BFFE73CAA09B6D 2182A8079EF9F9FF53F2627283E47E814EFF1BF808872BFBEADD5F0E59E5EFE3414B
2179AF0C693F71CE69B77FC1378A3C4790CBE8B5546FFF134AE8CB103DD6376EF16E 2183C473CD84E9C5C786D57DA240060618D1BEFA19CAD721C849F4EDFE61EBC5F845
218003501532E3F725E58F36089E3718C635EF95FE9921EEDB08F0CFAEDDFBFB3336 218446E4E4EC253714BE81B50AE3F7988BA94F302E6D8FC4EC497D6EEEF44C5AAC16
2181517AE8ECA540F6918563EAB9D1B5E5BFFAAADC83D0867125E2050A05EF871ED8 2185E173553CD5EE65038CF1326AB2718D6EADEC5C901ECF04D3777369FCBD20B929
2182CD0AAACE7D95D37065EA0C92E46115A732F468AA43FF12337839C206157A96BF 2186FF472729A0793B4597A81364D91CE416F4FA78FD03739BDF796704071E6CA58A
2183A8DFD01BFDF8E2D76E4D46C5B9AEF23193156FE4B535C6155F79149384737DB6 21872F496B6C2987C7DD12121FF1894BE614216FB465FDFB2E2ACCD182AECC7D01D1
2184BAFDB4DC69A64056EEE87A1186B137B6D9D394EB8811AADAE996D67EC403083A 21881FCCB5AA63B69486DD5540846B786FE54056BB60DDDFCFB4F7AF0C6C0834A0FF
218586771A4CDF9AC65678A65DCF46CD1EA9CBE4C1D839CD7F166BA2CA8521F698FD 2189835F751E60561109D628503937399CC8D8F264AE71F183DFF1D8B07823714F20
21864CDEF798D360867ADC4C8FD100DC3AB3B62C5BF2527A688D3DB498AB5F407879 2190F514146CF945FBFD953553169A654DB183DC8C83600EF2C2BE0B200FB20DB604
2187970F2EF1EEBDBC4521CFCBC3E621F992F3EAD3E9737976CDB56596E661129545 2191F5D3C8091FA066B8CBBCE4443A889BD5C9D2651707832ABC1B8B2C2FD1C29025
21882EBE036A72F668E809D454DACA709F2C0531CCB26910652CCBF94EFC3A4B3852 2192FB48BC7A3EA273CFEF1E03A3953EF9BA0B20CF5927DA061586E4EB1582500E09
2189B144EB820877E7A55B33B3E9B2B1786729B0643517AD956A7A4779334D0A342A 21935A7E6C46164997E48B0DDB56F429FEDAE8D29E683F8367442B1906D23574A8B4
21903DD38F70100854C0B3032397BCDA640CD12C985BB2B5835AA83D442166613350 2194EEC2C0709646CFC2CE3E01B96BE3D7B00024D7C5BB74654E3A4B87BCFB86C63C
2191BACB4CA9F706141A9E9EB3DFF314B1A82113CA28B74B6603D67AA2D15A36972B 2195F4D7619DF568C184993E51902A7F9F38B2540FCD9B46AAD44380919E931DF436
21921D8B0057D3D8EB92A1809023EB95762577BD753193DCAF7021366943AFF53A8B 2196F712B973A641BCD336DC7B67FA411500D7867F86D926F541B7572A0413FBE788
2193A9ECCB74BF27EE70B1D0B73078CA5CB5AACC1BEE0A61A75981F8A0A3253035FA 21974360203C36C5867812D3B44D54DF7BAAFB823597E6CC60902729BB956D2E682A
21941D5D6A1D47DF111693DD9A1D35D9B865C06BD05A688B0D9BC285C0EBB1DF7B2F 219855CAACF596C73930167F8C984DDE9FBEA620DE0D08D018D61584D9B25EDA3565
21952CEA26CFF7583EFED470D4BF02CAE6E4CCFE5347F61F669BF8E82ECD2112E672 2199EDF9D800FE84AD6186ABFAAEC6277E0AEA3628E9CAD817F5CEA33A30FE3EA14C
219686D10C529DDB600B5237C11BEE28BC3120A0E212E2ED4F52BDF6980675D7DE7C 2200D83822AB9C8D6623143314C284A0590D32184D3186D63CF8A5F79459518DB39B
219789FBE11E19865B1C163EE5F4D410F95A434056202DB1BDD10B3A75FA3C091D5B 2201D164795BB5C84950DCCA976551D40CDD62852C860310B5A59ADCA296F1596924
2198E3E2F888A6509E1755BFB39F9EE35AEACEDE970EAF42BBFB0D441BED621A8E20 220275E16C4ADBF3DBE28E1815A6E770A47DA53E94721BA678C054F2817FD44B30F5
2199F504AAB0F511661754B03BFBDEE9E5D704B1FFC70E429E97B8C5651C90044269 2203D51E5D2368E59F3FB911582851F5A030C1042CD31B77222A490882428E81F26C
220058BB39683838446D49507DCB70AB0DEDEFB73F05E621BC7371D21465AC659AA8 220470BB082E265B5F199B29661B95542D766F0B0FC5A9F814C6B5386D285B809346
220190786F8CF2A0B0ECA4B40774D7143F92F2B0A95417C475DA5308B5BDCEC67A74 2205BFDA6A762B7BC0026D472E417E9E7266A7281256BEB054D6B4872DC64E144CB4
2202A425CD76801FF2E115FA3A95818D088392C84FCBC00D3B3C7D683253414D4C5D 2206F737AB7F014466FCD41DF79C6686112DA89BD0D29AA3FA559A2BC19ADC89F884
220374446BBFD130AC89A0C9B68BB1CD772A1BFE8776D0772ED8C00C13C8D0412D7B 22075C2B294889ED373ABC2301C2DD1DFC0D51671B9D7D220D4386CE5A23C4C4E857
2204526A73A0E38885B79551DAC3E1060537C0EE8FFE574C4B9E8155E2CD83FD85BE 220807E5A7EAF6DF73C712D23E24E9C7A2D80F6147A9665C9178C91B3C40911B9393
2205191BDD6ACAEE898A02717A9725196FA59E41FB45D2733CE77289FD178AF07D7A 220908BA1952EC21A8378DA8FAA8CD751A2913AD8B744B640FFBB66C2CD68644E0D8
2206FEF8D6BABC7DA5425A45AB8EF3C2E369432252E497B172A6FFD4D3DD957C0E26 22105E24B33F5669F6A8562012FDF6578C814EE05377712F7A74E0D602AF487E298B
22070D3D402EAD21FB3E404DB8082DF2ED2C300A0AEC0DA12B7FB571F415017D44E2 2211FACAC20A401BA6CD3807E9F7DE10CF36B689F46BD14ADD3C574445CEB0671B91
220857509A41CFC2284455635F50F06937D23699B43084728FCA9DD25A7264B9D1F4 2212010858ECDD461FF2CF713F561372BA84C3EC5B00CBCEB4AE4994506F6F4456F5
22092E086976B56237887470653AC62DE323911A64507B40DBF281BB060AE635F37D 22135E26867F6535650C6682FE58333E6791642F00ECFCD856C6A09DB7A237EA903D
2210BB4F9EF7456EF62EAACAB52F0606DFA777D2965BF03D7CDA312AE654EBFA92C7 22141E1B438E00848852B3C2B9C315B74309BD50BF6E7C203DA049BED675D4049DB5
2211580B7C2A2E604389152704BDF3008ED2F58200D825D0F60C7BF39AF14816B2DA 221510C4276285D754A6F3E754E98CF96DFFE52A34E316720652FE5CC9A0AE6975F6
22125738DE7338132B7E7E92424B7FDFB15D8E1EC176CBB7E15F3FA064CF04E357DC 22169E31E137BAAD6678E7989A7A806EDAF3A0E1167FBA787CD9B9ABA1E80CB62AC5
221372FDD1E8AF8079B1134EAE3E5CB6A7262994C71714691E8BD7CFF2676EA4D0C2 2217785FCD591C4FF54A861933FCD6ED065345266AD82D10D5924EB9B7C3AABD9C7C
2214A5FCD6C622B3B34469E3B2FCD810AE0252B2814EB02C544B0458CF12DAACAC5F 2218513DC51709B815022AF3C0AF34E49FD99CE592B595AD7132C93634909209100D
22154A2E078844AC2AC74543F4763CDC6FC081073CD60E276AA6E7F1D948EFA02C23 2219463A20C4361454C1A4760B09736385B0B39D1A3E823CB3145A7770CA823EAE28
22162FC1567CD952C837AA1ABD3E3077F5AA7F9986F01B0A9EE91C0EEA3895260CB6 222090AEAF81BFF978634953B02F58E89CFBA6900A099171DE2AB435391DB7587644
22173B4EA5F58F8C8C23D42C81764E72399D2EDF40C8F18EFAF113AD16E753263943 222165328E1D61013B23F4F094B31A8DBB86AAA939D1FA8D75A72B1FBB00D13B3F1C
221855EEC4F01AA885DCBCDB7C9E251210AB2B9382EE45050CC1184F592BBD65D6FD 2222B339F7AD3CB8AE253DF7F4F3B399605CDDE708B148E3C0C5AD208502324BBE18
221944D9EA6BC7583CA725A1DCD28EA77A085B0A47CFCF5A847C5D29C4F64F2A17DB 2223A5A486825D8DD5DDF85036572B0DDA791AC650C705F46DFC590A6F3426DDF7C5
2220BEAD7B3BA43BAF8548B65DFB4814135A2A789E7E76C978DEAE0138AF8A0AE4BD 22242A079D8D089C99E1600600E7BBB79BF4419776773BC08163E13D6A05AD80614C
2221B4D22A02C169BB0DA5215B2B91A10ED3A2A9797E5C5FBD11BB295B02C7498B13 2225CB02CFB6A86942BBA32F01C7B84F0F6685B75EFF1B413C0F58E5B03F10F286E9
22226D90D8CD79D4606007D408E8D336D75D42519BACFB7164C2797F0E9FCD98F178 22266B988C313040CAFF7F18E0A43D86175B65CEBCC3B4C07E56F05DF620937D7321
2223D82372F263BAF8B2D1F185E549BA63428E2B8DBCCDD243AD605DD10666F367C2 2227886A7F6AB6E462572EB69C9559B3C82C7641CF750CB6B2D28433E2943B3213C9
22243EB98C9157E068FCAB8D91AF9683EEE87A1158A562C911574136CFC172D50C4F 22285CCBA6D90C5897256116A3F15ADE3E6A751B2A2F0CFB60148A5C71FC0964B9DA
222570BC388C728E821395579A081CC946F528CE6F3471B7615F67623F9138DF8FD0 222915C23FA6B14C168B512300A24C9C001375B3FC6A1C7CFC09A61D8ED089052150
2226CAADC4E42AEBF892B36AC169C716DDA724300E9378B809DC6739929C3108A812 22304578358876149C5DECC2C612186BB7981C2A11CD99FE26D44EDDCA89E71ACE47
2227F9C116118E9AE1B066E1928A4A442CE02B2D3BFE18D406AAAC1603E754224AEE 223181B076C12384E855F6698FA2515C65407A15A585CA438CD1C2C615D2EFA298F0
22281B802E92CCDCDEF94BAA8955F389B7565AB67D73CED601FA7BFF438717EAD65B 2232464331837B45A383E9A2E8C663810B3AE1258642741FC0CBCD05BE52FA290E26
2229449941F0C87F048B9186C9C78A3D43A3D4C372B5F8DA74DAE6DD2A2816E44303 22332D2FF964091850BBE5D1582BA6CA5A555C2C8E55E8D56955DD48314CC8BA1851
2230790F04C13F08E0815B43FCD837A67BF4A2A86FECB6ED6FFA56018961A0C528FB 2234EE75DED90DACA301A6A85B5703E01DBFAE4DD7AAC249DC86615A3F99237EA745
2231472971A8E4C47C974DE12133616F3CBBFA20CE57B572F751649D9AE64A61F271 2235E850B87C30C64ADC874028EFFC3119F423606A23710D0BA80B1108A187AF5937
22320DDE783CF2509DFC2ED2CE7467574AAF79101D56D3D2664DDA30FC7DD5B5C6B7 22365E316AA55E9AD9A478CD10D50B71A8497D3C1F53328B0DEF1C6D21A53181D62A
22330BD084CA516A72E6D3F8B7FEDF0F11EF9CA594C2318EEA3CC266A2F4C2F2AC2C 22375EDF953288250964446508ED06DFC0B165B46F4A5E3A7F381B47A5F94A0883DE
2234AB1ABDC5F7419F46308865F1FA63CF2AF4AEBB8319372B3305AA052477ACD838 22387695CB39203E1BBF91976CB314CA6E247F35539ED40A995DF6119BE2F29FD693
22357A35218A6CD4A7C0ADE0C3F8B005D6E30C8A208A3518C1134DC34D0E64F804A4 2239AE193119649AFAE8B6367D2295C353C9D3FBF01D145EF6628F920D4FCF67115D
2236258A995097F17642E97FE9CC38A34C250B8828B4FBA1840EECBD06D427FE7E10 224071259E3AF555A29A77935A94C97CD6A2F52716559AC73E5818EC15936B0322F2
22374EFAFEBBC934AA295E12F25D6FA3D277C7C88DA60D818A8A303364BD6B2C0288 224143A353B47F7842C3919E38892565747F5B1B0855E3D531B8603AB914A2885F41
22386E94BD8E474F28BFB951BE4ABC493AB0EA6EFF110193105DF8E9CEAE1CE549D0 2242D2391864960361689DA8A1FE2EF26DADCD18445B5743F1AB744446E11F8FFF63
2239A907F7A7CF1AD20E121FA6547F93CC10D7957B36ACAF213EE436C92A00AB1A24 2243995B7A0A48902C1BF963B81B5209D55C3ADF80398D0D57D9034283C48DD96E67
2240540E535440938E748DAA6401133235D1CC74EC8FF80F9E297FB6C56C12B4E0A4 2244C5B56FF59884C9399808E7E7C5D7E773DBB2DB168EE4668446681DC429130D97
2241D53AB28F11618F2C793F6EACB593E56B8370ED5CFF467B5FFF04AD11BC5A3AF0 224517067D28A3639CD643D2F87A25C44962538E82C2591DE2F5A29B2FC1FF8B9D8E
2242A6EF110B540CD2C87070FFCA3AA0776FF070C384BCDACB0FBD4921C06E24C8F0 2246830A9F5B15D0CB57FA9A803765C598BFDB51B55B5E8FD76F8F65231C2E478C20
2243CE590D788FB8C1BCF9E083B4778818F92269C274B0CC6565E2D70FFFA2480381 224718F9A237CDAFFF986CDEF61D30C8BA87440220C0777111DAB353AD4118BAAA3F
2244040C5CA012341D51427A59C3FC9B5121956B4323872E67BA499876052131B266 2248BD76BE63F22DD456C1EB7793AEFA3827A73E887AD2B1307F6E81B48EDB105419
2245C21F0B8B37902C7C3156FAEB668AE6A7851BC7AA62FE60D792B35B6A38183B23 2249A2BF1F715B73ECF7733516639F6FB7E558C6C28E945256A422CF94AF182FDB1C
2246E5FB11DBBAF1E60B0D9DF0E84B9EA6F1EA6C37B84736FE657F4A29E92F7DD89D 2250384EC08E3D7F5D06FB49E00430EE06C6838AA8FBA740957784DD199FD2E9BC6F
22473473C81FD7F595770BA69C91DAA3154425278D323C3E50A14FF72A02BF3820D6 22513D8542CBFD7485BEEBF76C2FA18D5AFD2EE239F54AE861B685FD00E6125D701C
22486621B91A96A1D2F76710143D41C8305E02810780D868D822DC6056DFA4690F24 225222BC8780C4CACB241DDCB77934A1735B01482CA3738212C39E6F9B5561800F58
224990BE5BB4F14902B97F5FB4CF31A6C8B346A76B95D82EEF610AAFF9F6B88E782C 2253C5C1953F95B4769FF0370F9B922EB647E138222061E75AAE9873E7BA6A4AE756
2250F0E46DD18BD1CD53C92075AFEA0C1F0870DA52455847B22A638DABEA04C90ACF 22548E9A885753CE75078EDC94A365E28C479804D0C36BA39F5D1F02BCF6722DC36A
22510D89E8345F118E5E26A3934AC0C0C9F1269946E17F1AF5759123CE2359B60ED6 2255DCD0B89271665266650E391AFFFDFA75E693AF1B918267F11DB1D1E55A4D651B
22523FB22A23380A34DF818CDA8570B36B92C4634A80AA4ABEFFFE36865AFB384DA8 22564B83DAC0DAA849FA1F55F4DC4A8BE1D4BD6D8585C9A892E4D4AE26383F5328E2
225370E5CB4829052F8BEB962841C2030BBBF874EDEFE149EB8A38DE0ED59903FCBC 2257C08FF079DA850B45F1339D9A94A271A2F683A619EECDD5A357FF85FBB5824ABB
225425788EFBB825265AFD7FF2F8D5F9A947EA94A368C52986E8640A6D6A11B14DFD 225839396D0D96FD99D9D9743F2168F8C1D0ACA41F6909A49CD4DA9F9E265097E0CC
2255CF435B2F1F7C168D1E9C7B84B2C2D9E235DC59799B99971FE9E6D9780EAC653C 22592AA552CB9E19779DCCBF7A76D71CB27FF30CC6EC4E6C7F9669F95111015C20C8
2256981FBDF083B949310FF20F7B383BD10737136E88B9D294677C7C63CC50A41AC1 22600F0C5314804C0D5D8D5B7D74CDEA322F7B51AC3F7AB5058B6DCFAC33B1CD0DCB
2257B4649631134034DB9FF76E0B19799396A232809A5BE397B63B528A0E860D38AD 22616CB4E7DB7537F7AE5B828A141A612933FAEE43AB160823F34C0672CBCB80EDA6
2258A90BF0D4246F012E19CEABC74F21E2BD46FACF96D5F033B6023A98DA51653D59 22622AB7D719B9A6BE29CBFAAC47336F453AA907CF3B6E8D7FF4BB43FF44498AC4F5
2259C306875AA02EDC3DB78060D72B0A00596BE36367A1681ECFEEFA447DB8DE6879 2263BB7DBD6DE4B2B3792DC1A9C552CE4BF4D6BABC2C3A11F32622022F51D665FD2A
226018962C974B55038A8F67AA553ECD27C6C72D46CEADA75D68D7DACB40B063F9F7 22640078CC6D15CDA90EDDF91A7F2956A11C03478D5F54997BA2F71796B524974336
2261464401B0AE4CC61A1F55A7E40FBD0FEB890DD2FE36D9641E40BD2F6D20C54353 22655D2F6442D67D3F7AE78B853A5306FC9540C873083A8177891DB4D228095523EA
2262C3B282E7F46D61EF3A41F8BCB31FA38EE2B99B671841DA2FAD644C11AE20B6F8 2266C16AC4E8E62422D93F27AA80C195C9F5941E0672CA120290AB23EF8BF5F56F5D
2263C7D5D99806643412273F874273FBD04C65F048D76086EA1156F07A47CA0FE349 2267458C245296DA0FAFD6DD159A89EB24CA38659E9EEA2B2CB2648D8F6CB0B1FD32
2264391E906747C833320E84E18781C61DEA8FACB8D9DDF08D29E5983F2E1FDC8C72 22686A1D9F236D6B166CB49FBD7C8875DE08FC6FA10D26E6A4FFAD94A620F4F94488
2265C200B63415529A45978010EA5C150BA9D70CF4F5799DA551A1CF7041A17DD5F4 2269F2A4B1773B6BF3CD0876F87D0CCD19227968EB33FA313773ADE29BFD69E91203
2266153A868BD4B81A25551784E2A6EE42996F4D6CFAED97725C940C0FE9FFE0AA31 2270E294ADED630580A5669A1892F27EF26006A707A3E66DE7071A82191B69D05AEF
2267FB2A32941E6C555FCF33B4B8E802C40B423599C8E88C6DF1AEEC28938FCF3BAB 227175CEC8910E439305DC9986005691CDF05951F454CD2E1CA7F92503B3C87EA23F
2268B6846C20D7EC7278A909073BD15BA75F470F82237BBFF6E7287A3771378A944C 227260C2E37F76132B0690F262077AB47694F0151898EF6F432D9A6CD73885F2C5AB
22698CA6215F95437DCC9EA67F7A8721FA63614CA7BC5054EF5E5716FD4B7DEFDE48 227357D3800E45CE7011D65B9F3343F1F438DA3B63F111C3C5CD619C4C2DE89561F2
2270FA8D2AF9F0B3BD92BF5F48A0DCC8406B0A940FBB5D35B56A49B7D4605A00F82D 22749F7FD0AA3BC9357930DA4A82DDEEA685CBFECB6FE7D6DD5559FA2C4AAB94CA34
2271495AEBF2B413F19FE37AECED8060D5C32E9FE0EE9C0FB14045AE87D04B92A734 22753E23685944DB6C55CD2F1E74D0D3C0E4E9025BADBF4CD7F52DE8BBA4AEDC669E
22720A35DBFFE12CB1ED64C924E4ADEE0AD635BFC70CCEC92FB07B1DE13E3D14B09C 2276A4DD2BF21C1AF636DEE51B180AFCF993A33B59E967FFB551F4305656268BA952
227394590CE5F2F4B7D0C697F6F30E217ED09B35917714712B1182D687302770C205 2277997ED1A8696ECBC4708039169695BD332C1E7A089A54F96ED5915DD75AC52707
2274C3D17944AC1CC6AE2A023707E13DC1299256DB1211650F76A969D74F940CA580 2278517ECD5CBD5F21A5CFC3573D889E30200F9E52CB35A5AFC0ED57A620A8597096
22756B499C40B76BA77D12688A8CF75E90A19AA3E368D6C99FCF8163450CAD6EA028 2279D03D9C5B217C3CE502BBA73B0642F612AA19F1278A704F3B488DB397A0D673AF
227684D4E9A5279013354D9C8D7FB8BCF3FD31433C822F0A412A3115B0E5E71079F6 2280A2046D8C1CB06B8C3BD389E8855E0B43D705832AF415C3B2338C5267FEB382D5
227760C6BBE10380872D5D75F1BE9BB6DE755103E4B376458B97E0B50BF8932940AE 2281735F288C177AF742347FCC76AFB650ADE48CCB4B5544E05BF9CA8DB89F393E01
2278F95D4002737966FF15A0B67C5B717AFF0E95B9F8F3498D7CCB538FF133A977EF 2282B3CDD0721DFB11300BAC7D3A55C772AA8EFF5EAF18DB6399C8FFC93EF0CCCD8C
22793471FCE3B83D5395F282D1982B2A6CDBD1C0DE44B3CA286E7E3F3E82B3561635 2283BA4082BDAEAE0CC9A1E753F58C4C7E3DB4F70809BA7096D228B8E38A4BB01B1A
22806E462A4ABFAE8DE9331FEABA97AE7E7C93F0A30F4E3FDF4DFD66E5CBE234ADD8 2284F568CA003CC2C7DEE8ACFE0BAF71717822CA654E9935548F88ACDB3BC123A340
22810AEFB354B80ADBDC128EAE328AF10FFDEF587B462A88F62F463D640C4F8898D4 2285FCF823EE9C0EBF7273268424745EF9E7B6DF2FA55B258C61EB8544AB3F909B58
22821AAECA8EAE36639F6CC17B68BC1F1202F462BF7CB20CBD42FF2DEC420B4A7001 2286FC1B4A41F17187A9333821BC4FF44305530CDFDA14DC1CF267A3658D6B1E6A87
228390A1F1499D49731DBC0C5DD4AADC4C32A7349219F25150117D733A0D51A7E51D 2287023D6B300F000D55AB02FAA24F40F8E1976B1471CEE988638E2E06CEA73E7156
228488712AF2AC91D73A906CCFFAEA98C68DB967D96DA69E38A0406F2DD149B3E771 2288ED2CBCB52D79B20A263E3FB9D73957DA47634419819A801D40D985B24E28F0D2
228568D65EF65F99A4AD33BB5B15672E57433BC84C9023BA77997E82473C557D18A9 228904FDDA67FF546A0B32AB483E261B6D604019CB686F255C69E54019C79B2E18D5
228660F7064934EDDA12E614186A092930690D2DF97E1955FA75CA3CA077EC39A561 2290678D50672FE8BD02DA01AD947CEFAD69A1DF1EBC5CA112AC077354B2DB5169A6
228727FC8DCBF13DC183774AF61C2B1B65E5E4 2291836583C79B9863279ADECF97F2D09F8728C15958220297C43DF1DB15257C970F
2292A68D43B004059E422FD37C458F98D8ED3764529765903D8938AFB452F14D818A
2293927BFEB85EAE7B3889DE3AB3FDE0F8EFC3B88AF700002CFCAFFFFF26E7B1E6F4
2294FC2509373F8311D361F57FDCD828D2CB06AF9F39F7F9D0274ABC16E1C5657C0D
2295084C4DAC3C166CBCFF1D7DCCB1BC40A69B
22880000000000000000000000000000000000000000000000000000000000000000 22960000000000000000000000000000000000000000000000000000000000000000
22890000000000000000000000000000000000000000000000000000000000000000 22970000000000000000000000000000000000000000000000000000000000000000
22900000000000000000000000000000000000000000000000000000000000000000 22980000000000000000000000000000000000000000000000000000000000000000
@@ -2295,12 +2303,12 @@ F95D4002737966FF15A0B67C5B717AFF0E95B9F8F3498D7CCB538FF133A977EF
22950000000000000000000000000000000000000000000000000000000000000000 23030000000000000000000000000000000000000000000000000000000000000000
2296cleartomark 2304cleartomark
2297%%EndFont 2305%%EndFont
2298TeXDict begin 55380996 39158280 1000 600 600 (org-ref.dvi) 2306TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
2299@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1 2307@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
230049.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34 230849.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
230130 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44 230930 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
23021[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30 23101[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 30 30 30
230330 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41 231130 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }42
230449.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36 231249.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
23052[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14 23132[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
230666.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45 231466.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
@@ -2323,8 +2331,8 @@ TeXDict begin 55380996 39158280 1000 600 600 (org-ref.dvi)
2323rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59 2331rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
232420 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72 233220 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72
232553 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54 233353 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54
232651 50 53 6[20 6[35 35 35 1[35 20 24 20 55 35 27 27 20 233451 50 53 6[20 5[35 35 35 35 1[35 20 24 20 55 35 27 27
23272[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }70 233520 2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }71
232866.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61 233666.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
23291[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53 23371[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
233053 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552 233853 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
@@ -2339,7 +2347,7 @@ TeXDict begin
2339%%Page: 1 1 2347%%Page: 1 1
2340TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45 2348TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
2341b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2349b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2342(3.13\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y 2350(3.14\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
2343Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931 2351Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
2344102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h 2352102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
2345(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h 2353(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
@@ -2467,81 +2475,82 @@ y Fg(<vm:folder#id>)950 b Fi(VM)23 b(message)2046 4073
2467y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105 2475y Fg(<vm://myself@some.where)q(.org)q(/fo)q(lder)q(#id)q(>)105
2468b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b 2476b Fi(VM)23 b(remote)2046 4143 y(W)-6 b(anderlust)25 b
2469Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242 2477Fg(<wl:...>)h Fi(and)e(RMAIL)f Fg(<rmail:...>)k Fi(lik)n(e)c(VM)4242
2470-364 y Fh(T)-10 b(ables)4242 -255 y Fd(Creating)25 b(a)i(table)4242 2478-364 y Fh(T)-10 b(ables)4242 -265 y Fd(Creating)25 b(a)i(table)4242
2471-168 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330 2479-181 y Fi(insert)c(a)h(new)g(Org-mo)r(de)g(table)330
2472b Fg(M-x)36 b(org-table-create)4242 -98 y Fi(...)30 b(or)23 2480b Fg(M-x)36 b(org-table-create)4242 -111 y Fi(...)30
2473b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39 2481b(or)23 b(just)h(start)g(t)n(yping,)g(e.g.)173 b Fg(|Name|Phone|Age)39
2474b(RET)d(|-)g(TAB)4242 -28 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table) 2482b(RET)d(|-)g(TAB)4242 -41 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
2475741 b Fg(C-c)36 b(C-c)4242 41 y Fi(...)30 b(separator)24 2483741 b Fg(C-c)36 b(C-c)4242 28 y Fi(...)30 b(separator)24
2476b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242 2484b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(C-c)4242
2477128 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242 2485113 y Fd(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)4242
2478215 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h 2486197 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
2479(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 285 2487(cursor)e(is)g Fc(inside)k(a)f(table)p Fi(.)4242 266
2480y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n 2488y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
2481(e)h(other)g(functionalit)n(y)-6 b(.)4242 371 y Fd(Re-aligning)25 2489(e)h(other)g(functionalit)n(y)-6 b(.)4242 351 y Fd(Re-aligning)25
2482b(and)i(\014eld)h(motion)4242 458 y Fi(re-align)22 b(the)i(table)g 2490b(and)i(\014eld)h(motion)4242 435 y Fi(re-align)22 b(the)i(table)g
2483(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242 2491(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)4242
2484528 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld) 2492505 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
2485311 b Fg(TAB)4242 598 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762 2493311 b Fg(TAB)4242 574 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
2486b Fg(S-TAB)4242 667 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f 2494b Fg(S-TAB)4242 644 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
2487(next)h(ro)n(w)328 b Fg(RET)4242 754 y Fd(Ro)n(w)26 b(and)h(column)g 2495(next)h(ro)n(w)328 b Fg(RET)4242 728 y Fd(Ro)n(w)26 b(and)h(column)g
2488(editing)4242 841 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left) 2496(editing)4242 812 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
2489544 b Fg(M-LEFT)4242 911 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f 2497544 b Fg(M-LEFT)4242 882 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2490(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 980 y Fi(kill)23 2498(column)g(righ)n(t)497 b Fg(M-RIGHT)4242 952 y Fi(kill)23
2491b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1050 2499b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)4242 1022
2492y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition) 2500y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
2493104 b Fg(M-S-RIGHT)4242 1137 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f 2501104 b Fg(M-S-RIGHT)4242 1106 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
2494(ro)n(w)f(up)678 b Fg(M-UP)4242 1207 y Fi(mo)n(v)n(e)24 2502(ro)n(w)f(up)678 b Fg(M-UP)4242 1176 y Fi(mo)n(v)n(e)24
2495b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242 2503b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)4242
24961276 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h 25041245 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
2497(line)291 b Fg(M-S-UP)4242 1346 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o) 2505(line)291 b Fg(M-S-UP)4242 1315 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
2498n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242 2506n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)4242
24991433 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h 25071399 y Fi(insert)23 b(horizon)n(tal)i(line)e(b)r(elo)n(w)h(the)h
2500(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1503 y 2508(curren)n(t)f(ro)n(w)100 b Fg(C-c)36 b(-)4242 1469 y
2501Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n 2509Fi(insert)23 b(horizon)n(tal)i(line)e(ab)r(o)n(v)n(e)i(the)g(curren)n
2502(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1589 y Fd(Regions)4242 2510(t)f(ro)n(w)100 b Fg(C-u)36 b(C-c)g(-)4242 1553 y Fd(Regions)4242
25031676 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36 25111637 y Fi(cut)25 b(rectangular)f(region)758 b Fg(C-c)36
2504b(C-h)g(C-w)4242 1746 y Fi(cop)n(y)25 b(rectangular)f(region)715 2512b(C-h)g(C-w)4242 1707 y Fi(cop)n(y)25 b(rectangular)f(region)715
2505b Fg(C-c)36 b(C-h)g(M-w)4242 1816 y Fi(paste)25 b(rectangular)f(region) 2513b Fg(C-c)36 b(C-h)g(M-w)4242 1777 y Fi(paste)25 b(rectangular)f(region)
2506695 b Fg(C-c)36 b(C-h)g(C-y)4242 1885 y Fi(\014ll)23 2514695 b Fg(C-c)36 b(C-h)g(C-y)4242 1847 y Fi(\014ll)23
2507b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36 2515b(paragraph)h(across)g(selected)h(cells)399 b Fg(C-c)36
2508b(C-q)4242 1972 y Fd(Calculations)4242 2059 y Fi(Except)31 2516b(C-q)4242 1931 y Fd(Calculations)4242 2015 y Fi(Except)31
2509b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242 2517b(for)e(the)i(summation)f(commands,)h(these)g(need)g(the)g(Emacs)4242
25102129 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2215 25182085 y(calc)24 b(pac)n(k)l(age)i(installed.)4242 2169
2511y(replace)e(curren)n(t)g(\014eld)g(with)g(result)f(of)h(form)n(ula)129 2519y(set)e(and)g(ev)l(al)g(column)g(form)n(ula)567 b Fg(C-c)36
2512b Fg(C-c)36 b(=)4242 2285 y Fi(...)30 b(same)24 b(calculation)h(for)e 2520b(=)4242 2239 y Fi(set)24 b(and)g(ev)l(al)g(named-\014eld)h(form)n(ula)
2513(rest)g(of)h(column)267 b Fg(C-u)36 b(C-c)g(=)4242 2355 2521433 b Fg(C-u)36 b(C-c)g(=)4242 2308 y Fi(edit)24 b(form)n(ulas)f(in)g
2514y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96 2522(separate)i(bu\013er)473 b Fg(C-c)36 b(')4242 2378 y
2515b Fg(C-c)36 b(*)4242 2425 y Fi(re-apply)23 b(all)g(stored)i(equations)g 2523Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(curren)n(t)g(line)96
2524b Fg(C-c)36 b(*)4242 2448 y Fi(re-apply)23 b(all)g(stored)i(equations)g
2516(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242 2525(to)f(en)n(tire)g(table)101 b Fg(C-u)36 b(C-c)g(*)4242
25172511 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28 25262532 y(TAB)p Fi(,)30 b Fg(RET)f Fi(and)f Fg(C-c)37 b(C-c)28
2518b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242 2527b Fi(trigger)h(automatic)g(recalculation)h(in)d(lines)4242
25192581 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242 25282602 y(starting)d(with:)31 b Fg(|)36 b(#)f(|)p Fi(.)4242
25202668 y(rotate)23 b(recalculation)f(mark)g(through)g(#)g(*)g(!)30 25292686 y(rotate)25 b(calculation)g(mark)e(through)i(#)e(*)h(!)31
2521b(^)p 5533 2668 22 4 v 47 w($)71 b Fg(C-#)4242 2755 y 2530b(^)p 5487 2686 22 4 v 49 w($)115 b Fg(C-#)4242 2770
2522Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)354 2531y Fi(displa)n(y)24 b(column)g(n)n(um)n(b)r(er)f(cursor)h(is)f(in)354
2523b Fg(C-c)36 b(?)4242 2824 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren) 2532b Fg(C-c)36 b(?)4242 2840 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren)
2524n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242 2908 2533n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)4242 2924
2525y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b 2534y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b
2526Fg(S-RET)5857 2885 y Ff(4)4242 2995 y Fi(A)27 b(form)n(ula)g(can)h 2535Fg(S-RET)5857 2900 y Ff(4)4242 3008 y Fi(A)25 b(form)n(ula)f(can)i
2527(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)g(in)n(to)f(a)h 2536(also)f(b)r(e)h(t)n(yp)r(ed)g(directly)g(in)n(to)f(in)n(to)h(a)f
2528(\014eld.)42 b(It)28 b(will)4242 3065 y(b)r(e)c(executed)i(b)n(y)e 2537(\014eld)g(and)h(will)4242 3078 y(executed)31 b(b)n(y)e
2529Fg(TAB)p Fi(,)g Fg(RET)h Fi(and)f Fg(C-c)36 b(C-c)p Fi(:)4242 2538Fg(TAB)p Fi(,)h Fg(RET)g Fi(and)f Fg(C-c)36 b(C-c)p Fi(.)47
25303152 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522 b 2539b(A)28 b(leading)h Fg(=)g Fi(in)n(tro)r(duces)h(a)4242
2531Fg(=$1+$2)4242 3221 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r 25403148 y(column)24 b(form)n(ula,)e Fg(:=)j Fi(a)e(named-\014eld)i(form)n
2532(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3291 y Fi(...)30 2541(ula.)4242 3232 y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522
2542b Fg(=$1+$2)4242 3301 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r
2543(eci\014cation)387 b Fg(=$1+$2;\045.2f)4242 3371 y Fi(...)30
2533b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352 2544b(with)24 b(constan)n(ts)h(from)e(constan)n(ts.el)352
2534b Fg(=$1/$c/$cm)4242 3361 y Fi(Apply)24 b(curren)n(t)g(\(for)f(this)h 2545b Fg(=$1/$c/$cm)4242 3441 y Fi(sum)23 b(from)g(3rd)h(hline)f(ab)r(o)n
2535(column\))g(form)n(ula)200 b Fg(=)4242 3431 y Fi(Sum)24 2546(v)n(e)i(to)f(here)411 b Fg(:=vsum\(&III\))4242 3511
2536b(all)f(n)n(um)n(b)r(ers)g(ab)r(o)n(v)n(e/left)j(of)d(cursor)292 2547y Fi(apply)24 b(curren)n(t)g(column)g(form)n(ula)518
2537b Fg(=sum)36 b(/)g(=sumh)4242 3500 y Fi(Sum)24 b(just)f(the)i(3)f 2548b Fg(=)4242 3595 y Fd(Miscellaneous)4242 3679 y Fi(toggle)25
2538(\014elds)f(closest)i(to)f(cursor)279 b Fg(=sum3/=sumh3)4242 2549b(visibilit)n(y)d(of)i(v)n(ertical)g(lines)474 b Fg(C-c)36
25393587 y Fd(Miscellaneous)4242 3674 y Fi(toggle)25 b(visibilit)n(y)d(of)i 2550b(|)4242 3749 y Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370
2540(v)n(ertical)g(lines)474 b Fg(C-c)36 b(|)4242 3744 y 2551b Fg(M-x)36 b(org-table-export)4242 3819 y Fi(imp)r(ort)23
2541Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370 b Fg(M-x)36 2552b(tab-separated)j(\014le)447 b Fg(M-x)36 b(org-table-import)4242
2542b(org-table-export)4242 3813 y Fi(imp)r(ort)23 b(tab-separated)j 25533903 y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
2543(\014le)447 b Fg(M-x)36 b(org-table-import)4242 3900
2544y Fd(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
2545Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g 2554Fd(pac)n(k)-5 b(age)4242 3987 y Fi(insert)23 b(a)h(new)g
2546Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057 2555Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)4242 4057
2547y Fi(recognize)25 b(existing)f(table.el)g(table)474 b 2556y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
@@ -2551,7 +2560,7 @@ end
2551%%Page: 2 2 2560%%Page: 2 2
2552TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45 2561TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
2553b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2562b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2554(3.13\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150 2563(3.14\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
2555120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458 2564120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
2556b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793 2565b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793
2557b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g 2566b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g
@@ -2676,10 +2685,9 @@ b(Lines)28 b(starting)g(with)g Fg(#)2046 3273 y Fi(are)j(commen)n(ts)g
26763441 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285 26853441 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285
2677b Fg(C-c)36 b(;)2046 3644 y Fh(Completion)2046 3800 y 2686b Fg(C-c)36 b(;)2046 3644 y Fh(Completion)2046 3800 y
2678Fi(In-bu\013er)e(completion)g(completes)h(TODO)d(k)n(eyw)n(ords)i(at)g 2687Fi(In-bu\013er)e(completion)g(completes)h(TODO)d(k)n(eyw)n(ords)i(at)g
2679(headline)2046 3869 y(start,)26 b(T)-6 b(eX)26 b(macros)f(after)h(\\)p 2688(headline)2046 3869 y(start,)28 b(T)-6 b(eX)27 b(macros)g(after)g(\\)p
2680Fg(\\)p Fi(",)h(option)f(k)n(eyw)n(ords)g(after)g(\\)p 2689Fg(\\)p Fi(",)h(option)g(k)n(eyw)n(ords)g(after)f(\\)p
2681Fg(#-)p Fi(",)h(k)n(ey-)2046 3939 y(w)n(ord)d(form)n(ulas)e(after)i(\\) 2690Fg(#-)p Fi(",)h(and)2046 3939 y(dictionary)c(w)n(ords)g(elsewhere.)2046
2682p Fg(=)p Fi(",)g(and)g(dictionary)g(w)n(ords)g(elsewhere.)2046
26834037 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702 b Fg(M-TAB)4242 26914037 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702 b Fg(M-TAB)4242
2684-364 y Fh(Calendar)36 b(and)h(Diary)i(In)m(tegration)4242 2692-364 y Fh(Calendar)36 b(and)h(Diary)i(In)m(tegration)4242
2685-208 y Fi(T)-6 b(o)35 b(include)g(en)n(tries)g(from)f(the)i(Emacs)f 2693-208 y Fi(T)-6 b(o)35 b(include)g(en)n(tries)g(from)f(the)i(Emacs)f
@@ -2738,7 +2746,7 @@ b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
2738Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838 2746Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
27393768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21 27473768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
2740b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826 2748b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
2741y(v3.13)h(for)h(Org-Mo)r(de)e(3.13,)i(2005)4912 3882 2749y(v3.14)h(for)h(Org-Mo)r(de)e(3.14,)i(2005)4912 3882
2742y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g 2750y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
2743(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242 2751(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
27444022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e 27524022 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 27131a001ca..f653ff78e01 100644
--- a/etc/orgcard.tex
+++ b/etc/orgcard.tex
@@ -1,4 +1,4 @@
1% Reference Card for Org Mode 3.13 1% Reference Card for Org Mode 3.14
2% 2%
3%**start of header 3%**start of header
4\newcount\columnsperpage 4\newcount\columnsperpage
@@ -32,8 +32,8 @@
32 32
33% You should have received a copy of the GNU General Public License 33% You should have received a copy of the GNU General Public License
34% along with GNU Emacs; see the file COPYING. If not, write to 34% along with GNU Emacs; see the file COPYING. If not, write to
35% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 35% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
36% Boston, MA 02110-1301, USA. 36% Boston, MA 02111-1307, USA.
37 37
38% This file is intended to be processed by plain TeX (TeX82). 38% This file is intended to be processed by plain TeX (TeX82).
39% 39%
@@ -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.13} 61\def\orgversionnumber{3.14}
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
@@ -467,29 +467,30 @@ Outside of tables, the same keys may have other functionality.
467Except for the summation commands, these need the Emacs calc package 467Except for the summation commands, these need the Emacs calc package
468installed. 468installed.
469 469
470\key{replace current field with result of formula}{C-c =} 470\key{set and eval column formula}{C-c =}
471\key{... same calculation for rest of column}{C-u C-c =} 471\key{set and eval named-field formula}{C-u C-c =}
472\key{edit formulas in separate buffer}{C-c '}
472\key{re-apply all stored equations to current line}{C-c *} 473\key{re-apply all stored equations to current line}{C-c *}
473\key{re-apply all stored equations to entire table}{C-u C-c *} 474\key{re-apply all stored equations to entire table}{C-u C-c *}
474 475
475\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation 476\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
476in lines starting with: {\tt | \# |}. 477in lines starting with: {\tt | \# |}.
477 478
478\key{rotate recalculation mark through \# * ! \^ \_ \$}{C-\#} 479\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
479 480
480\key{display column number cursor is in}{C-c ?} 481\key{display column number cursor is in}{C-c ?}
481\key{sum numbers in current column/rectangle}{C-c +} 482\key{sum numbers in current column/rectangle}{C-c +}
482\key{copy down with increment}{S-RET$^4$} 483\key{copy down with increment}{S-RET$^4$}
483 484
484A formula can also be typed directly into into a field. It will be 485A formula can also be typed directly into into a field and will
485executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}: 486executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}. A leading \kbd{=}
487introduces a column formula, \kbd{:=} a named-field formula.
486 488
487\key{Example: Add Col1 and Col2}{=\$1+\$2} 489\key{Example: Add Col1 and Col2}{=\$1+\$2}
488\key{... with printf format specification}{=\$1+\$2;\%.2f} 490\key{... with printf format specification}{=\$1+\$2;\%.2f}
489\key{... with constants from constants.el}{=\$1/\$c/\$cm} 491\key{... with constants from constants.el}{=\$1/\$c/\$cm}
490\key{Apply current (for this column) formula}{=} 492\key{sum from 3rd hline above to here}{:=vsum(\&III)}
491\key{Sum all numbers above/left of cursor}{=sum / =sumh} 493\key{apply current column formula}{=}
492\key{Sum just the 3 fields closest to cursor}{=sum3/=sumh3}
493 494
494{\bf Miscellaneous} 495{\bf Miscellaneous}
495 496
@@ -646,8 +647,8 @@ Subtrees whose header starts with COMMENT are never exported.
646\section{Completion} 647\section{Completion}
647 648
648In-buffer completion completes TODO keywords at headline start, TeX 649In-buffer completion completes TODO keywords at headline start, TeX
649macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'', 650macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'', and
650keyword formulas after ``{\tt =}'', and dictionary words elsewhere. 651dictionary words elsewhere.
651 652
652\key{Complete word at point}{M-TAB} 653\key{Complete word at point}{M-TAB}
653 654
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c822e5cfd34..e0f12487fb4 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,598 @@
12005-07-22 Juanma Barranquero <lekktu@gmail.com>
2
3 * hilit-chg.el (highlight-changes-global-initial-state)
4 (highlight-compare-buffers, hilit-chg-turn-on-maybe)
5 (hilit-chg-fixup, highlight-changes-mode):
6 Fix typos in docstrings.
7 (highlight-changes-global-modes, highlight-changes-rotate-faces):
8 Doc fixes.
9
102005-07-21 Luc Teirlinck <teirllm@auburn.edu>
11
12 * emacs-lisp/easy-mmode.el (define-minor-mode): Never call the
13 mode function using `eval-after-load'.
14
152005-07-21 Kim F. Storm <storm@cua.dk>
16
17 * mail/emacsbug.el (report-emacs-bug): Request that backtraces are
18 included when reporting an emacs crash, and tell about the DEBUG file.
19
20 * image-file.el (insert-image-file): Add yank-handler.
21 (image-file-yank-handler): Yank handler to make unique copies of
22 images when they are yanked into a buffer next to each other.
23
242005-07-21 Juanma Barranquero <lekktu@gmail.com>
25
26 * comint.el (comint-use-prompt-regexp, comint-send-input)
27 (comint-source-default, comint-extract-string)
28 (comint-get-source, comint-word, comint-completion)
29 (comint-source, comint-prompt-read-only, comint-update-fence):
30 Fix typos in docstrings.
31 (comint-use-prompt-regexp-instead-of-fields, comint-kill-output):
32 Declare with define-obsolete-*-alias macros.
33 (comint-previous-matching-input-from-input)
34 (comint-next-matching-input-from-input)
35 (comint-previous-matching-input, comint-next-matching-input)
36 (comint-forward-matching-input):
37 Improve argument/docstring consistency.
38
39 * desktop.el (desktop-clear-preserve-buffers-regexp):
40 Also preserve the *server* buffer.
41
42 * simple.el (clone-indirect-buffer): Doc fix.
43 (fixup-whitespace, just-one-space)
44 (backward-delete-char-untabify, lambda): "?\ " -> "?\s".
45 (next-error, next-error-highlight)
46 (next-error-highlight-no-select, next-error-last-buffer)
47 (next-error-buffer-p, next-error-find-buffer, next-error)
48 (previous-error, next-error-no-select, previous-error-no-select)
49 (open-line, split-line, minibuffer-prompt-width, kill-new)
50 (binary-overwrite-mode): Fix typos in docstrings.
51 (set-fill-column): Fix typo in message.
52
53 * skeleton.el (skeleton-proxy-new): Doc fix.
54
55 * strokes.el (strokes-load-hook): Doc fix.
56 (strokes-grid-resolution, strokes-get-grid-position)
57 (strokes-renormalize-to-grid, strokes-read-stroke)
58 (strokes-read-complex-stroke, strokes-file, strokes-last-stroke)
59 (strokes-global-map): Fix typos in docstrings.
60 (strokes-help): Doc fix. Fix help message and pass it through
61 `substitute-command-keys'.
62
63 * tempo.el (tempo-insert-prompt, tempo-interactive)
64 (tempo-show-completion-buffer, tempo-tags, tempo-match-finder)
65 (tempo-insert-string-functions, tempo-local-tags)
66 (tempo-define-template, tempo-insert-template)
67 (tempo-insert-prompt-compat, tempo-is-user-element)
68 (tempo-insert-mark, tempo-find-match-string, tempo-complete-tag):
69 Fix typos in docstrings.
70
71 * vcursor.el (vcursor-other-window, vcursor-bind-keys)
72 (vcursor-key-bindings, vcursor-use-vcursor-map)
73 (vcursor-find-window, vcursor-scroll-down)
74 (vcursor-disable, vcursor-beginning-of-buffer)
75 (vcursor-end-of-buffer): Fix typos in docstrings.
76 (vcursor-relative-move, vcursor-get-char-count):
77 Improve argument/docstring consistency.
78
79 * version.el: "?\ " -> "?\s".
80
81 * wid-edit.el (widget-default-create, widget-after-change)
82 (widget-default-format-handler, widget-checklist-add-item)
83 (widget-radio-add-item, widget-choose, widget-specify-secret)
84 (widget-field-value-create, widget-field-value-get)
85 (widget-editable-list-format-handler)
86 (widget-editable-list-entry-create, widget-group-value-create)
87 (widget-documentation-link-add)
88 (widget-documentation-string-value-create): "?\ " -> "?\s".
89 (widget-convert-text): Doc fix.
90 (widget-narrow-to-field, widget-field-find)
91 (widget-url-link-action, widget-emacs-library-link-action)
92 (widget-color-notify): Fix typos in docstrings.
93
94 * w32-fns.el (w32-shell-name): Use `bound-and-true-p'.
95 (x-select-text, set-w32-system-coding-system)
96 (w32-add-charset-info): Fix typos in docstrings.
97
98 * emulation/cua-base.el (cua-mode, cua-enable-register-prefix)
99 (cua-enable-cua-keys, cua-use-hyper-key)
100 (cua-virtual-rectangle-edges): Fix typos in docstrings.
101 (cua--M/H-key, cua--init-keymaps): "?\ " -> "?\s".
102
103 * net/tramp.el (tramp-handle-load): Fix typo in error message.
104
105 * emacs-lisp/re-builder.el (regexp-builder): Declare with
106 `defalias' instead of faking it.
107
108 * eshell/em-ls.el (eshell-ls-decorated-name): Doc fix.
109 (eshell-ls-missing, eshell-ls-dired-initial-args)
110 (eshell-ls-use-in-dired): Fix typos in docstrings.
111
1122005-07-20 Kim F. Storm <storm@cua.dk>
113
114 * emulation/cua-base.el (cua-mode): Improve doc string.
115
1162005-07-20 Juanma Barranquero <lekktu@gmail.com>
117
118 * abbrev.el (expand-region-abbrevs): Doc fix.
119 (inverse-add-mode-abbrev, inverse-add-global-abbrev):
120 Improve argument/docstring consistency.
121
122 * arc-mode.el (archive-get-descr, archive-alternate-display):
123 Doc fixes.
124 (archive-l-e): Improve argument/docstring consistency.
125 (archive-tmpdir, archive-unixdate, archive-unixtime)
126 (archive-chmod-entry): Fix typos in docstrings.
127 (archive-unflag, archive-unflag-backwards)
128 (archive-unmark-all-files): "?\ " -> "?\s".
129
130 * buff-menu.el (Buffer-menu-unmark): Doc fix.
131 (Buffer-menu-not-modified, Buffer-menu-execute)
132 (Buffer-menu-toggle-read-only, Buffer-menu-buffer+size)
133 (list-buffers-noselect, Buffer-menu-select): "?\ " -> "?\s".
134
135 * composite.el (compose-string, encode-composition-rule)
136 (compose-last-chars): Fix typos in docstrings.
137
138 * desktop.el (desktop-enable, desktop-basefilename):
139 Declare with `define-obsolete-variable-alias'.
140 (desktop-internal-v2s): Don't quote keywords.
141 (desktop-clear): "?\ " -> "?\s".
142
143 * dired.el (dired-align-file, dired-flag-backup-files)
144 (dired-change-marks, dired-unmark-all-files): "?\ " -> "?\s".
145 (dired-listing-switches, dired-ls-F-marks-symlinks)
146 (dired-dwim-target, dired-load-hook, dired-mode-hook)
147 (dired-directory, dired-faces, dired, dired-revert)
148 (dired-mode, dired-summary, dired-view-file)
149 (dired-copy-filename-as-kill, dired-delete-file)
150 (dired-no-confirm, dired-unmark-all-marks)
151 (dired-sort-by-date-regexp, dired-sort-by-name-regexp)
152 (dired-sort-inhibit, dired-sort-other): Fix typos in docstrings.
153 (dired-undo, dired-get-file-for-visit, dired-sort-toggle-or-edit):
154 Fix typos in message strings.
155
156 * dired-x.el (virtual-dired): Declare with `defalias'.
157 (dired-mark-unmarked-files, dired-local-variables-file)
158 (dired-omit-here-always): Doc fix.
159 (dired-omit-mode, dired-find-subdir)
160 (dired-enable-local-variables, dired-clean-up-buffers-too)
161 (dired-extra-startup, dired-mark-extension, dired-jump)
162 (dired-jump-other-window, dired-omit-localp, dired-virtual-mode)
163 (dired-smart-shell-command, dired-guess-shell-alist-user)
164 (dired-man, dired-initial-position, dired-x-hands-off-my-keys)
165 (dired-x-bind-find-file, dired-x-submit-report):
166 Fix typos in docstrings.
167 (dired-mark-unmarked-files): "?\ " -> "?\s".
168
169 * dirtrack.el (dirtrack-list): Fix typos in docstring.
170
171 * faces.el (describe-face): "?\ " -> "?\s".
172 (read-all-face-attributes, read-face-font, modify-face)
173 (face-attr-construct, italic): Fix typos in docstrings.
174 (frame-update-face-colors): Declare with
175 `define-obsolete-function-alias'.
176
177 * files.el (find-file-noselect, recode-file-name): Doc fixes.
178 (insert-directory, kill-some-buffers): "?\ " -> "?\s".
179 (magic-mode-alist, buffer-file-numbers-unique)
180 (write-file-functions, get-free-disk-space):
181 Fix typos in docstrings.
182 (find-file-not-found-hooks, find-file-hooks, write-file-hooks)
183 (write-contents-hooks, write-file-hooks):
184 Declare with `define-obsolete-variable-alias'.
185
186 * forms-d2.el (arch-rj): Fix typo in docstrings.
187 (arch-tocol): Likewise. "?\ " -> "?\s".
188
189 * frame.el (set-frame-font, cursor-in-non-selected-windows):
190 Fix typo in docstring.
191 (set-screen-width, set-screen-height): Delete redundant info in
192 doctrings.
193 (new-frame, screen-height, screen-width): Declare with
194 `define-obsolete-function-alias'.
195 (delete-frame-hook, blink-cursor): Declare with
196 `define-obsolete-variable-alias'.
197
198 * paths.el (prune-directory-list): Fix typos in docstring.
199
200 * pcvs-util.el (cvs-flags-query, cvs-strings->string)
201 (cvs-prefix-get): Fix typos in docstrings.
202
203 * ps-print.el (ps-extend-face-list, ps-extend-face)
204 (ps-print-background-image): Fix typos in docstrings.
205 (ps-default-fg, ps-default-bg): Doc fixes.
206
207 * s-region.el (s-region-bind): Doc fix.
208 (s-region-move-p1, s-region-move-p2): Fix typos in docstrings.
209
210 * textmodes/org.el (org-table-formula-substitute-names)
211 (org-table-get-vertical-vector): Doc fixes.
212 (org-table-recalculate): Remove unused argument to `message'.
213
2142005-07-19 Carsten Dominik <dominik@science.uva.nl>
215
216 * textmodes/org.el (org-table-column-names)
217 (org-table-column-name-regexp)
218 (org-table-named-field-locations): New variables.
219 (org-archive-subtree): Protect `this-command' when calling
220 `org-copy-subtree' and `org-cut-subtree', to avoid appending to
221 the kill buffer.
222 (org-complete): Remove fixed-formula completion.
223 (org-edit-formulas-map): New variable.
224 (org-table-edit-formulas): New command.
225 (org-finish-edit-formulas, org-abort-edit-formulas)
226 (org-show-variable, org-table-get-vertical-vector): New functions.
227 (org-table-maybe-eval-formula): Handle `:=' fields.
228 (org-table-get-stored-formulas, org-table-store-formulas)
229 (org-table-get-formula, org-table-modify-formulas)
230 (org-table-replace-in-formulas): Handle named field formulas.
231 (org-table-get-specials): Store locations of named fields.
232
2332005-07-19 Juri Linkov <juri@jurta.org>
234
235 * progmodes/grep.el (grep-regexp-alist)
236 (grep-mode-font-lock-keywords, grep-process-setup):
237 Use default GNU grep match color "01;31m" instead of "01;41m".
238 (grep-regexp-alist, grep-mode-font-lock-keywords):
239 Use `\\[[0-9]*m' instead of `\\[00m'.
240 (grep-regexp-alist): Move `\\(?:\033\\[K\\)?' from sgr_end to
241 sgr_start where its handling is more important. Use the real
242 length of sgr_start instead of constant 8.
243 (grep-mode-font-lock-keywords): Don't delete `\\(?:\033\\[K\\)?'
244 specially. Delete all remaining escape sequences.
245 (grep-process-setup): Set "GREP_COLORS" for GNU grep 2.5.1-cvs.
246 (grep-regexp-alist): Make hyperlink only for binary file name
247 instead of the whole line.
248 (grep-mode-map): Bind `backtab' to `compilation-previous-file'.
249 (grep-mode): Add autoload.
250
251 * emacs-lisp/find-func.el (find-function-regexp):
252 Add `define-compilation-mode'.
253
2542005-07-19 Juri Linkov <juri@jurta.org>
255
256 * compare-w.el (compare-ignore-whitespace, compare-windows-sync)
257 (compare-windows-sync-string-size, compare-windows-recenter)
258 (compare-windows-highlight, compare-windows): Add version 22.1.
259 (compare-windows) <defface>: Inherit from lazy-highlight instead
260 of duplicating its default value.
261
262 * cus-edit.el (custom-mode-map): Bind `C-c C-c' to `Custom-set'.
263 (Custom-mode-menu): Use `info' instead of `Info-goto-node'.
264
265 * descr-text.el (describe-char): Create link buttons for `charset'
266 and `code point'. Add the current input method name with a link
267 button to `to input' field. Print face names of display table
268 characters in `The display table entry is displayed by' section
269 instead of printing face-id in the `display' field.
270 Guess hardcoded faces and create a link button for them.
271 Skip empty fields when calculating max-width.
272 Treat `widget-create' specially while inserting strings from the
273 collected field list.
274 (describe-char-after): Made obsolete in version 22.1, not 21.5.
275
276 * diff-mode.el (diff-file-header): Change foreground color from
277 yellow to green on light backgrounds.
278 (diff-context): Inherit from `shadow' only for color/grayscale
279 with more than 88 colors.
280 (diff-indicator-removed, diff-indicator-added)
281 (diff-indicator-changed): New faces.
282 (diff-font-lock-keywords): Use new faces. Regroup rules.
283 Add "^---$" for `normal' diff format. Fontify `#' lines with
284 font-lock-comment-delimiter-face and font-lock-comment-face.
285 Add `#' to ^[^...] in the rule for `diff-context-face'.
286
287 * faces.el (mode-line-highlight): Replace RoyalBlue4 with
288 a button-like box. Inherit from `highlight' on low colors.
289 (shadow): Use shades of gray only for color/grayscale with
290 more than 88 colors. Use green for light backgrounds with
291 8 colors, and yellow for dark backgrounds with 8 colors.
292
293 * font-lock.el (font-lock-regexp-grouping-backslash): Don't
294 inherit from escape-glyph (use bold for all cases).
295
296 * info.el (info-xref-visited): Use light foreground color `violet'
297 for dark backgrounds instead of dark color `magenta3'.
298 (info-title-1): Use `yellow' color for dark backgrounds.
299
300 * isearch.el (isearch): Use not-too-dark magenta3 instead of
301 too-light magenta2.
302
303 * replace.el (match): Use slightly more light RoyalBlue3 instead
304 of dark RoyalBlue4.
305
306 * wid-edit.el (widget-inactive): Inherit from `shadow'.
307
3082005-07-19 Juanma Barranquero <lekktu@gmail.com>
309
310 * novice.el (disabled-command-hook): Declare it with
311 `define-obsolete-variable-alias'.
312
313 * desktop.el (desktop-enable, desktop-buffer-modes-to-save)
314 (desktop-buffer-misc-functions, desktop-buffer-handlers)
315 (desktop-load-default): Add release to obsolescence info.
316 (desktop-globals-to-clear, desktop-buffer-mode-handlers)
317 (desktop-append-buffer-args, desktop-read):
318 Fix typos in docstrings.
319 (desktop-kill): Fix typo in message.
320 (desktop-save): Doc fix.
321
3222005-07-19 Michael Kifer <kifer@cs.stonybrook.edu>
323
324 * viper-cmd.el (viper-escape-to-state): Bug fix.
325 (viper-envelop-ESC-key): Change the definition of fast
326 keysequence so it'll work with keyboard macros.
327
328 * ediff.el (ediff-patch-buffer): Change the docstring.
329
3302005-07-19 Kenichi Handa <handa@m17n.org>
331
332 * international/mule-cmds.el (select-safe-coding-system): Try to
333 use an auto-coding (if any) before anything else. If the found
334 auto-coding is invalid, show a warning message.
335
336 * international/mule.el (find-auto-coding): New function created
337 by modifying the body of set-auto-coding.
338 (set-auto-coding): Use find-auto-coding to find a coding.
339
3402005-07-18 Richard M. Stallman <rms@gnu.org>
341
342 * allout.el (allout-isearch-expose): Use isearch-mode-end-hook-quit,
343 not isearch-mode-end-hook-error.
344 (allout-before-change-protect): Fix error message.
345
3462005-07-18 Juri Linkov <juri@jurta.org>
347
348 * allout.el (allout-mode):
349 * calculator.el (calculator-copy):
350 * custom.el (custom-known-themes):
351 * dired.el (dired-desktop-buffer-misc-data)
352 (dired-restore-desktop-buffer):
353 * dired-x.el (dired-omit-marker-char):
354 * files.el (basic-save-buffer):
355 * font-core.el (font-lock-mode):
356 * calendar/calendar.el (calendar-goto-hebrew-date)
357 (calendar-goto-coptic-date, calendar-goto-ethiopic-date)
358 (calendar-goto-persian-date):
359 * language/ethio-util.el (ethio-sera-to-fidel-region):
360 * textmodes/picture.el (picture-mode):
361 Delete duplicate duplicate words.
362
3632005-07-18 Juri Linkov <juri@jurta.org>
364
365 * isearch.el (isearch-mode-map): Remove key bindings for regexp
366 chars * ? } |.
367 (isearch-fallback): Don't call `isearch-process-search-char'.
368 (isearch-*-char, isearch-}-char, isearch-|-char): Remove functions.
369 (isearch-process-search-char): Call `isearch-fallback' for regexp
370 chars * ? } |.
371 (isearch-return-char): Make obsolete with `make-obsolete' instead
372 of simply documenting it as obsolete in the docstring.
373 (isearch-fallback): Refill docstring.
374
375 * international/isearch-x.el
376 (isearch-process-search-multibyte-characters): Remove unneeded `concat'.
377 Add intermediate values to `junk-hist' instead of `minibuffer-history'.
378 Test the length of `str'.
379
3802005-07-18 Juanma Barranquero <lekktu@gmail.com>
381
382 * allout.el (allout-resolve-xref): Fix typos in error strings.
383 (allout-before-change-protect): Remove unneeded `concat'.
384
385 * array.el (array-mode, array-reconfigure-rows)
386 (untabify-backward): Fix typos in docstrings.
387 (array-reconfigure-rows): Use `insert-buffer-substring', not
388 `insert-buffer'.
389
390 * calendar/icalendar.el (icalendar--get-unfolded-buffer):
391 * progmodes/ada-mode.el (ada-make-body): Use
392 `insert-buffer-substring' and `goto-char', not `insert-buffer'.
393
394 * dired.el (dired-log):
395 * tar-mode.el (tar-subfile-save-buffer):
396 * play/zone.el (zone-pgm-stress-destress):
397 Use `insert-buffer-substring', not `insert-buffer'.
398
3992005-07-17 Simon Josefsson <jas@extundo.com>
400
401 * mail/smtpmail.el (smtpmail-auth-supported): Prefer PLAIN over LOGIN.
402
4032005-07-16 Jose E. Marchesi <jemarch@gnu.org>
404
405 * lisp/mail/smtpmail.el (smtpmail-auth-supported):
406 Add plain auth method.
407 (smtpmail-try-auth-methods): Add AUTH PLAIN dialog.
408
4092005-07-17 Kim F. Storm <storm@cua.dk>
410
411 * ido.el (dired-other-window): Add ido property.
412
4132005-07-16 Juanma Barranquero <lekktu@gmail.com>
414
415 * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded):
416 Fix typo in docstring.
417 (byte-compile-interactive-only-functions): Add `insert-buffer' and
418 `insert-file-literally'.
419
420 * emacs-lisp/edebug.el (def-edebug-form-spec): Add obsolescence
421 info and delete redundant message. Doc fix.
422 (edebug-install-custom-print-funcs, edebug-reset-print-funcs)
423 (edebug-uninstall-custom-print-funcs): Define as obsolete aliases.
424
4252005-07-16 Richard M. Stallman <rms@gnu.org>
426
427 * emacs-lisp/bytecomp.el (byte-compile-and-recursion): New function.
428 (byte-compile-and): Use byte-compile-and-recursion.
429 (byte-compile-or-recursion): New function.
430 (byte-compile-or): Use that.
431 (byte-compile-if): Guard the else-clause too.
432 (byte-compile-maybe-guarded): Handle (not (featurep 'emacs)).
433
434 * isearch.el (isearch-mode-end-hook-quit): New variable.
435 (isearch-done): Bind it.
436 (isearch-mode-end-hook): Doc fix.
437
438 * allout.el (allout-isearch-did-quit): Variable deleted.
439 (allout-real-isearch-abort): Function name no longer used.
440 (allout-mode): Do allout-enwrap-isearch whenever feature is wanted.
441 (allout-isearch-rectification): isearch-mode always exists.
442 Don't set allout-isearch-did-quit.
443 (allout-isearch-expose): Check isearch-mode-end-hook-error, not
444 allout-isearch-did-quit.
445 (allout-enwrap-isearch): Just add the hook.
446 (allout-isearch-abort): Function deleted.
447 (allout-pre-command-business): Avoid warning.
448
449 * progmodes/pascal.el (pascal-outline-map): Use fboundp, not boundp.
450 Correctly avoid warnings.
451 (pascal-outline): Likewise.
452
453 * progmodes/f90.el (f90-abbrev-start): Avoid warning.
454
455 * progmodes/asm-mode.el (asm-comment): Use with-no-warnings.
456
457 * play/tetris.el (tetris-mode): Avoid warning.
458
459 * play/snake.el (snake-mode): Avoid warning.
460
461 * play/gamegrid.el (gamegrid-shared-game-dir): Add defvar.
462 (gamegrid-set-display-table): Avoid warning.
463 (gamegrid-set-timer): Likewise.
464 (gamegrid-make-mono-tty-face): Use set-face-inverse-video-p.
465 (gamegrid-add-score-with-update-game-score-1): Take FILE
466 as argument.
467 (gamegrid-add-score-with-update-game-score): Pass that argument.
468 Rename have-shared-game-dir to gamegrid-shared-game-dir.
469
470 * net/eudc-hotlist.el (eudc-hotlist-mode): Avoid warnings.
471
472 * net/eudc-bob.el (eudc-jump-to-event): Avoid warning.
473 (eudc-bob-display-jpeg, eudc-bob-can-display-inline-images): Likewise.
474
475 * mail/uce.el (uce-reply-to-uce): Replace beginning-of-buffer
476 and insert-file.
477
478 * mail/supercite.el (sc-no-blank-line-or-header): Avoid warning.
479 (sc-ask): Avoid warnings.
480
481 * eshell/em-hist.el (eshell-rebind-keys-alist): Add defvar.
482 (eshell-hist-initialize): Use that var the natural way.
483
484 * emulation/viper-init.el (viper-activate-input-method): Avoid warning.
485
486 * emacs-lisp/re-builder.el (reb-cook-regexp): Avoid
487 warning calling lre-compile-string.
488 (reb-color-display-p): Avoid warning.
489
490 * calculator.el (calculator-last-input): Guard uses
491 of event-key and key-press-event-p.
492 (event-key, key-press-event-p): Delete definitions.
493
494 * emacs-lisp/find-gc.el (find-gc-unsafe-list)
495 (find-gc-source-directory, find-gc-subrs-callers)
496 (find-gc-noreturn-list, find-gc-source-files)
497 (find-gc-subrs-called): Vars renamed and defvar'd.
498
499 * emacs-lisp/checkdoc.el (checkdoc-make-overlay)
500 (checkdoc-overlay-put, checkdoc-delete-overlay)
501 (checkdoc-overlay-start, checkdoc-overlay-end)
502 (checkdoc-mode-line-update, checkdoc-char=):
503 Define such that compiler knows they are defined.
504 (checkdoc-call-eval-buffer): Deleted. Use eval-buffer directly.
505 (checkdoc-read-event): Deleted. Use read-event directly.
506
507 * whitespace.el (whitespace-make-overlay)
508 (whitespace-overlay-put, whitespace-delete-overlay)
509 (whitespace-overlay-start, whitespace-overlay-end):
510 Define such that compiler knows they are defined.
511 (whitespace): Move conditional inside.
512
513 * tempo.el (tempo-insert-template): Suppress warning.
514
515 * ediff-diff.el (longlines-mode): Add defvar.
516
5172005-07-16 Gary Howell <g1howell-list@yahoo.com> (tiny change)
518
519 * server.el: Bind "C-x #" in a way that works even if C-x is
520 redefined to a command key, not a prefix key.
521
5222005-07-16 Johan Bockgard <bojohan@users.sourceforge.net> (tiny change)
523
524 * emacs-lisp/cl-macs.el (cl-make-type-test): Defer evaluation of
525 cl-make-type-test till execution time.
526
5272005-07-16 Markus Rost <rost@math.uni-bielefeld.de>
528
529 * dired-x.el (dired-do-relsymlink-regexp): Add missing optional
530 arg ARG and use it.
531
5322005-07-16 Johan Bockgard <bojohan@users.sourceforge.net> (tiny change)
533
534 * emacs-lisp/cl-macs.el (cl-make-type-test): Add `atom' type.
535
5362005-07-15 Luc Teirlinck <teirllm@auburn.edu>
537
538 * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
539 a defcustom with two :set or :type keywords.
540
5412005-07-15 Richard M. Stallman <rms@gnu.org>
542
543 * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
544 Don't give ^M comment-end syntax.
545
5462005-07-16 Nick Roberts <nickrob@snap.net.nz>
547
548 * progmodes/gdb-ui.el (gdb-var-update, gdb-var-update-handler):
549 Don't consider gdbmi (gdb-mi.el has its own update functions).
550 (gdb-var-delete): Make it work for gdbmi as well.
551 (gdb-speedbar-expand-node): Move var-update here for gdbmi.
552
553 * progmodes/gud.el (etags, sdb): Only require etags when needed.
554 (gud-speedbar-menu-items): Correct logic for enabling items.
555
5562005-07-15 Kim F. Storm <storm@cua.dk>
557
558 * ido.el: Fix commentary.
559 (ido-define-mode-map): Move ido-next-work-file to C-M-o.
560 Use with-no-warnings around ffap-guesser.
561 (ido-file-internal, ido-read-file-name, ido-read-directory-name):
562 Let bind minibuffer-completing-file-name to t.
563
5642005-07-15 Juanma Barranquero <lekktu@gmail.com>
565
566 * startup.el (site-run-file, keyboard-type): Doc fixes.
567 (command-line): Check for "--basic-display" argument; also for
568 "--quick", not "--bare-bones" (which was renamed).
569 (fancy-splash-text): Add missing item "Getting New Versions".
570 (normal-splash-screen): Fix typos and improve consistency with
571 `fancy-splash-text'. Update copyright year.
572
573 * hexl.el (hexl-mode-map): Recognize also `ehelp-command' as a
574 valid binding for `help-char'.
575
576 * emacs-lisp/derived.el (derived-mode-hook-name): Doc fix.
577
5782005-07-14 Dan Nicolaescu <dann@ics.uci.edu>
579
580 * term.el (term-mode): Disable cua-mode for term buffers.
581
5822005-07-14 Juanma Barranquero <lekktu@gmail.com>
583
584 * add-log.el (add-log-mailing-address, change-log-merge):
585 Doc fixes.
586 (change-log-get-method-definition): Fix typo in docstring.
587
5882005-07-14 Kim F. Storm <storm@cua.dk>
589
590 * emulation/cua-base.el:
591 (cua--pre-command-handler-1, cua--pre-command-handler)
592 (cua--post-command-handler-1, cua--post-command-handler):
593 Split in two. Check (buffer local) value of cua-mode.
594 (cua-selection-mode): New command.
595
12005-07-13 Luc Teirlinck <teirllm@auburn.edu> 5962005-07-13 Luc Teirlinck <teirllm@auburn.edu>
2 597
3 * custom.el (custom-initialize-safe-set) 598 * custom.el (custom-initialize-safe-set)
@@ -12,8 +607,8 @@
12 * startup.el (command-line): Use `custom-reevaluate-setting' again 607 * startup.el (command-line): Use `custom-reevaluate-setting' again
13 for tooltip-mode. 608 for tooltip-mode.
14 609
15 * emacs-lisp/easy-mmode.el (define-minor-mode): Do not override 610 * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
16 explicitly specified :initialize keyword. 611 a defcustom with two :initialize keywords.
17 612
182005-07-13 Juanma Barranquero <lekktu@gmail.com> 6132005-07-13 Juanma Barranquero <lekktu@gmail.com>
19 614
@@ -24,7 +619,7 @@
24 (allout-insert-latex-header, allout-insert-latex-trailer) 619 (allout-insert-latex-header, allout-insert-latex-trailer)
25 (allout-latex-verbatim-quote-curr-line, allout-latexify-exposed) 620 (allout-latex-verbatim-quote-curr-line, allout-latexify-exposed)
26 (allout-latex-verb-quote): Fix typos in docstrings. 621 (allout-latex-verb-quote): Fix typos in docstrings.
27 (allout-enwrap-isearch, regexp-sans-escapes): Doc fix. 622 (allout-enwrap-isearch, regexp-sans-escapes): Doc fixes.
28 (allout-unprotected, allout-prefix-data): 623 (allout-unprotected, allout-prefix-data):
29 Improve argument/docstring consistency. 624 Improve argument/docstring consistency.
30 (allout-chart-subtree): Fix argument spec. 625 (allout-chart-subtree): Fix argument spec.
@@ -42,7 +637,7 @@
42 (whitespace-check-indent-whitespace) 637 (whitespace-check-indent-whitespace)
43 (whitespace-check-ateol-whitespace, whitespace-abort-on-error) 638 (whitespace-check-ateol-whitespace, whitespace-abort-on-error)
44 (whitespace-modes): Fix typos in docstrings. 639 (whitespace-modes): Fix typos in docstrings.
45 (defgroup, defcustom): Doc fix. 640 (defgroup, defcustom): Doc fixes.
46 641
47 * winner.el (winner-mode, winner-boring-buffers) 642 * winner.el (winner-mode, winner-boring-buffers)
48 (winner-pending-undo-ring): Doc fixes. 643 (winner-pending-undo-ring): Doc fixes.
@@ -335,7 +930,7 @@
335 930
3362005-07-07 Jay Belanger <belanger@truman.edu> 9312005-07-07 Jay Belanger <belanger@truman.edu>
337 932
338 * calc/calc-units.el (math-apply-units): Change the places in 933 * calc/calc-units.el (math-apply-units): Change the places in
339 which units are simplified. 934 which units are simplified.
340 935
3412005-07-07 Luc Teirlinck <teirllm@auburn.edu> 9362005-07-07 Luc Teirlinck <teirllm@auburn.edu>
@@ -6404,7 +6999,8 @@
6404 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el 6999 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el
6405 * textmodes/reftex-index.el, textmodes/reftex-parse.el 7000 * textmodes/reftex-index.el, textmodes/reftex-parse.el
6406 * textmodes/reftex-ref.el, textmodes/reftex-vars.el 7001 * textmodes/reftex-ref.el, textmodes/reftex-vars.el
6407 * textmodes/reftex.el, textmodes/org.el: Replace `illegal' with `invalid'. 7002 * textmodes/reftex.el, textmodes/org.el:
7003 Replace `illegal' with `invalid'.
6408 7004
64092005-03-24 Stefan Monnier <monnier@iro.umontreal.ca> 70052005-03-24 Stefan Monnier <monnier@iro.umontreal.ca>
6410 7006
@@ -8637,7 +9233,7 @@
8637 * textmodes/org.el (org-set-regexps-and-options): Rename from 9233 * textmodes/org.el (org-set-regexps-and-options): Rename from
8638 `org-set-regexps'. Added checking for STARTUP keyword. 9234 `org-set-regexps'. Added checking for STARTUP keyword.
8639 (org-get-current-options): Add STARTUP options. 9235 (org-get-current-options): Add STARTUP options.
8640 (org-table-insert-row): Mode mode intelligent about when 9236 (org-table-insert-row): Make mode intelligent about when
8641 realignment is needed. 9237 realignment is needed.
8642 (org-self-insert-command, org-delete-backward-char, org-delete-char): 9238 (org-self-insert-command, org-delete-backward-char, org-delete-char):
8643 New commands. 9239 New commands.
@@ -11831,7 +12427,7 @@
11831 12427
11832 * simple.el (line-move-invisible-p): Rename from line-move-invisible. 12428 * simple.el (line-move-invisible-p): Rename from line-move-invisible.
11833 (line-move): New args NOERROR and TO-END. 12429 (line-move): New args NOERROR and TO-END.
11834 Return t if if succeed in moving specified number of lines. 12430 Return t if succeed in moving specified number of lines.
11835 (move-end-of-line): New function. 12431 (move-end-of-line): New function.
11836 12432
11837 * simple.el (beginning-of-buffer-other-window): Use with-no-warnings. 12433 * simple.el (beginning-of-buffer-other-window): Use with-no-warnings.
@@ -14554,7 +15150,7 @@
145542004-08-16 Reiner Steib <Reiner.Steib@gmx.de> 151502004-08-16 Reiner Steib <Reiner.Steib@gmx.de>
14555 15151
14556 * calendar/time-date.el (time-to-number-of-days): New function. 15152 * calendar/time-date.el (time-to-number-of-days): New function.
14557 Imported from from Gnus. 15153 Imported from Gnus.
14558 15154
145592004-07-22 Kim F. Storm <storm@cua.dk> 151552004-07-22 Kim F. Storm <storm@cua.dk>
14560 15156
@@ -16115,7 +16711,7 @@
161152004-05-18 Stefan Monnier <monnier@iro.umontreal.ca> 167112004-05-18 Stefan Monnier <monnier@iro.umontreal.ca>
16116 16712
16117 * files.el (auto-save-file-name-transforms): Make sure ange-ftp temp 16713 * files.el (auto-save-file-name-transforms): Make sure ange-ftp temp
16118 files files don't contain an accidental additional /. 16714 files don't contain an accidental additional /.
16119 16715
16120 * textmodes/tex-mode.el (tex-compilation-parse-errors): Save excursion 16716 * textmodes/tex-mode.el (tex-compilation-parse-errors): Save excursion
16121 in source buffer. 16717 in source buffer.
@@ -22537,7 +23133,7 @@
22537 23133
22538 * menu-bar.el (menu-bar-options-menu): Supply a body for the 23134 * menu-bar.el (menu-bar-options-menu): Supply a body for the
22539 [save-place] binding in the Options menu. Have it require 23135 [save-place] binding in the Options menu. Have it require
22540 'saveplace' and then toggle the variable manually, to avoid an an 23136 'saveplace' and then toggle the variable manually, to avoid an
22541 unbound variable error. Thanks to <Sebastien.Kirche@sage.com> 23137 unbound variable error. Thanks to <Sebastien.Kirche@sage.com>
22542 for the bug report. 23138 for the bug report.
22543 23139
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index b63814e922a..cb8f9b69aca 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -281,7 +281,7 @@ Don't use this function in a Lisp program; use `define-abbrev' instead."
281 name (abbrev-expansion name table)))) 281 name (abbrev-expansion name table))))
282 (define-abbrev table (downcase name) exp)))) 282 (define-abbrev table (downcase name) exp))))
283 283
284(defun inverse-add-mode-abbrev (arg) 284(defun inverse-add-mode-abbrev (n)
285 "Define last word before point as a mode-specific abbrev. 285 "Define last word before point as a mode-specific abbrev.
286With prefix argument N, defines the Nth word before point. 286With prefix argument N, defines the Nth word before point.
287This command uses the minibuffer to read the expansion. 287This command uses the minibuffer to read the expansion.
@@ -292,15 +292,15 @@ Expands the abbreviation after defining it."
292 global-abbrev-table 292 global-abbrev-table
293 (or local-abbrev-table 293 (or local-abbrev-table
294 (error "No per-mode abbrev table"))) 294 (error "No per-mode abbrev table")))
295 "Mode" arg)) 295 "Mode" n))
296 296
297(defun inverse-add-global-abbrev (arg) 297(defun inverse-add-global-abbrev (n)
298 "Define last word before point as a global (mode-independent) abbrev. 298 "Define last word before point as a global (mode-independent) abbrev.
299With prefix argument N, defines the Nth word before point. 299With prefix argument N, defines the Nth word before point.
300This command uses the minibuffer to read the expansion. 300This command uses the minibuffer to read the expansion.
301Expands the abbreviation after defining it." 301Expands the abbreviation after defining it."
302 (interactive "p") 302 (interactive "p")
303 (inverse-add-abbrev global-abbrev-table "Global" arg)) 303 (inverse-add-abbrev global-abbrev-table "Global" n))
304 304
305(defun inverse-add-abbrev (table type arg) 305(defun inverse-add-abbrev (table type arg)
306 (let (name exp start end) 306 (let (name exp start end)
@@ -338,9 +338,8 @@ ARG is non-nil. Interactively, ARG is the prefix argument."
338 338
339(defun expand-region-abbrevs (start end &optional noquery) 339(defun expand-region-abbrevs (start end &optional noquery)
340 "For abbrev occurrence in the region, offer to expand it. 340 "For abbrev occurrence in the region, offer to expand it.
341The user is asked to type y or n for each occurrence. 341The user is asked to type `y' or `n' for each occurrence.
342A prefix argument means don't query; expand all abbrevs. 342A prefix argument means don't query; expand all abbrevs."
343If called from a Lisp program, arguments are START END &optional NOQUERY."
344 (interactive "r\nP") 343 (interactive "r\nP")
345 (save-excursion 344 (save-excursion
346 (goto-char start) 345 (goto-char start)
diff --git a/lisp/add-log.el b/lisp/add-log.el
index ec802ef4ae7..27da19ee602 100644
--- a/lisp/add-log.el
+++ b/lisp/add-log.el
@@ -70,7 +70,7 @@ This defaults to the value returned by the function `user-full-name'."
70 70
71;;;###autoload 71;;;###autoload
72(defcustom add-log-mailing-address nil 72(defcustom add-log-mailing-address nil
73 "*Electronic mail addresses of user, for inclusion in ChangeLog headers. 73 "*Email addresses of user, for inclusion in ChangeLog headers.
74This defaults to the value of `user-mail-address'. In addition to 74This defaults to the value of `user-mail-address'. In addition to
75being a simple string, this value can also be a list. All elements 75being a simple string, this value can also be a list. All elements
76will be recognized as referring to the same user; when creating a new 76will be recognized as referring to the same user; when creating a new
@@ -976,7 +976,7 @@ Has a preference of looking backwards."
976 (goto-char (match-end 0))) 976 (goto-char (match-end 0)))
977 977
978(defun change-log-get-method-definition () 978(defun change-log-get-method-definition ()
979"For objective C, return the method name if we are in a method." 979"For Objective C, return the method name if we are in a method."
980 (let ((change-log-get-method-definition-md "[")) 980 (let ((change-log-get-method-definition-md "["))
981 (save-excursion 981 (save-excursion
982 (if (re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t) 982 (if (re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t)
@@ -1022,7 +1022,7 @@ Point is assumed to be at the start of the entry."
1022 1022
1023;;;###autoload 1023;;;###autoload
1024(defun change-log-merge (other-log) 1024(defun change-log-merge (other-log)
1025 "Merge the contents of ChangeLog file OTHER-LOG with this buffer. 1025 "Merge the contents of change log file OTHER-LOG with this buffer.
1026Both must be found in Change Log mode (since the merging depends on 1026Both must be found in Change Log mode (since the merging depends on
1027the appropriate motion commands). OTHER-LOG can be either a file name 1027the appropriate motion commands). OTHER-LOG can be either a file name
1028or a buffer. 1028or a buffer.
diff --git a/lisp/allout.el b/lisp/allout.el
index eb8df2dae5c..6f5d06cf79e 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -870,13 +870,6 @@ allout-pre- and -post-command-hooks.")
870(defvar allout-isearch-prior-pos nil 870(defvar allout-isearch-prior-pos nil
871 "Cue for isearch-dynamic-exposure tracking, used by `allout-isearch-expose'.") 871 "Cue for isearch-dynamic-exposure tracking, used by `allout-isearch-expose'.")
872(make-variable-buffer-local 'allout-isearch-prior-pos) 872(make-variable-buffer-local 'allout-isearch-prior-pos)
873;;;_ = allout-isearch-did-quit
874(defvar allout-isearch-did-quit nil
875 "Distinguishes isearch conclusion and cancellation.
876
877Maintained by `allout-isearch-abort' \(which is wrapped around the real
878isearch-abort), and monitored by `allout-isearch-expose' for action.")
879(make-variable-buffer-local 'allout-isearch-did-quit)
880;;;_ = allout-override-protect nil 873;;;_ = allout-override-protect nil
881(defvar allout-override-protect nil 874(defvar allout-override-protect nil
882 "Used in `allout-mode' for regulate of concealed-text protection mechanism. 875 "Used in `allout-mode' for regulate of concealed-text protection mechanism.
@@ -1154,7 +1147,7 @@ Topic text constituents:
1154 1147
1155HEADER: The first line of a topic, include the topic PREFIX and header 1148HEADER: The first line of a topic, include the topic PREFIX and header
1156 text. 1149 text.
1157PREFIX: The leading text of a topic which which distinguishes it from 1150PREFIX: The leading text of a topic which distinguishes it from
1158 normal text. It has a strict form, which consists of a 1151 normal text. It has a strict form, which consists of a
1159 prefix-lead string, padding, and a bullet. The bullet may be 1152 prefix-lead string, padding, and a bullet. The bullet may be
1160 followed by a number, indicating the ordinal number of the 1153 followed by a number, indicating the ordinal number of the
@@ -1343,8 +1336,7 @@ OPEN: A topic that is not closed, though its offspring or body may be."
1343 (if allout-layout 1336 (if allout-layout
1344 (setq do-layout t)) 1337 (setq do-layout t))
1345 1338
1346 (if (and allout-isearch-dynamic-expose 1339 (if allout-isearch-dynamic-expose
1347 (not (fboundp 'allout-real-isearch-abort)))
1348 (allout-enwrap-isearch)) 1340 (allout-enwrap-isearch))
1349 1341
1350 (run-hooks 'allout-mode-hook) 1342 (run-hooks 'allout-mode-hook)
@@ -2226,8 +2218,7 @@ are exempt from this restriction."
2226 (if rehide-place (goto-char rehide-place)) 2218 (if rehide-place (goto-char rehide-place))
2227 (allout-hide-current-entry-completely)) 2219 (allout-hide-current-entry-completely))
2228 (allout-hide-current-entry)) 2220 (allout-hide-current-entry))
2229 (error (concat 2221 (error "Change within concealed region prevented"))))))
2230 "Change within concealed region prevented.")))))))
2231 ) ; if 2222 ) ; if
2232 ) ; defun 2223 ) ; defun
2233;;;_ = allout-post-goto-bullet 2224;;;_ = allout-post-goto-bullet
@@ -2325,9 +2316,7 @@ return to regular interpretation of self-insert characters."
2325 (let* ((this-key-num (cond 2316 (let* ((this-key-num (cond
2326 ((numberp last-command-char) 2317 ((numberp last-command-char)
2327 last-command-char) 2318 last-command-char)
2328 ;; XXX Only XEmacs has characterp. 2319 ((fboundp 'char-to-int)
2329 ((and (fboundp 'characterp)
2330 (characterp last-command-char))
2331 (char-to-int last-command-char)) 2320 (char-to-int last-command-char))
2332 (t 0))) 2321 (t 0)))
2333 mapped-binding) 2322 mapped-binding)
@@ -2363,7 +2352,7 @@ See `allout-init' for setup instructions."
2363 2352
2364Called as part of `allout-post-command-business'." 2353Called as part of `allout-post-command-business'."
2365 2354
2366 (let ((isearching (and (boundp 'isearch-mode) isearch-mode))) 2355 (let ((isearching isearch-mode))
2367 (cond ((and isearching (not allout-pre-was-isearching)) 2356 (cond ((and isearching (not allout-pre-was-isearching))
2368 (allout-isearch-expose 'start)) 2357 (allout-isearch-expose 'start))
2369 ((and isearching allout-pre-was-isearching) 2358 ((and isearching allout-pre-was-isearching)
@@ -2371,8 +2360,7 @@ Called as part of `allout-post-command-business'."
2371 ((and (not isearching) allout-pre-was-isearching) 2360 ((and (not isearching) allout-pre-was-isearching)
2372 (allout-isearch-expose 'final)) 2361 (allout-isearch-expose 'final))
2373 ;; Not and wasn't isearching: 2362 ;; Not and wasn't isearching:
2374 (t (setq allout-isearch-prior-pos nil) 2363 (t (setq allout-isearch-prior-pos nil)))))
2375 (setq allout-isearch-did-quit nil)))))
2376;;;_ = allout-isearch-was-font-lock 2364;;;_ = allout-isearch-was-font-lock
2377(defvar allout-isearch-was-font-lock 2365(defvar allout-isearch-was-font-lock
2378 (and (boundp 'font-lock-mode) font-lock-mode)) 2366 (and (boundp 'font-lock-mode) font-lock-mode))
@@ -2414,51 +2402,16 @@ Returns the endpoint of the region."
2414 (setq allout-isearch-prior-pos nil) 2402 (setq allout-isearch-prior-pos nil)
2415 (if (not (eq mode 'final)) 2403 (if (not (eq mode 'final))
2416 (setq allout-isearch-prior-pos (cons (point) (allout-show-entry))) 2404 (setq allout-isearch-prior-pos (cons (point) (allout-show-entry)))
2417 (if allout-isearch-did-quit 2405 (if isearch-mode-end-hook-quit
2418 nil 2406 nil
2419 (setq allout-isearch-prior-pos nil) 2407 (setq allout-isearch-prior-pos nil)
2420 (allout-show-children)))) 2408 (allout-show-children)))))
2421 (setq allout-isearch-did-quit nil))
2422;;;_ > allout-enwrap-isearch () 2409;;;_ > allout-enwrap-isearch ()
2423(defun allout-enwrap-isearch () 2410(defun allout-enwrap-isearch ()
2424 "Impose `isearch-abort' wrapper for dynamic exposure in isearch. 2411 "Impose `isearch-abort' wrapper for dynamic exposure in isearch.
2425 2412
2426The function checks to ensure that the rebinding is done only once." 2413The function checks to ensure that the rebinding is done only once."
2427 2414 (add-hook 'isearch-mode-end-hook 'allout-isearch-rectification))
2428 (add-hook 'isearch-mode-end-hook 'allout-isearch-rectification)
2429 (if (fboundp 'allout-real-isearch-abort)
2430 ;;
2431 nil
2432 ; Ensure load of isearch-mode:
2433 (if (or (and (fboundp 'isearch-mode)
2434 (fboundp 'isearch-abort))
2435 (condition-case error
2436 (load-library "isearch-mode")
2437 ('file-error (message
2438 "Skipping isearch-mode provisions - %s '%s'"
2439 (car (cdr error))
2440 (car (cdr (cdr error))))
2441 (sit-for 1)
2442 ;; Inhibit subsequent tries and return nil:
2443 (setq allout-isearch-dynamic-expose nil))))
2444 ;; Isearch-mode loaded, encapsulate specific entry points for
2445 ;; outline dynamic-exposure business:
2446 (progn
2447 ;; stash crucial isearch-mode funcs under known, private
2448 ;; names, then register wrapper functions under the old
2449 ;; names, in their stead:
2450 (fset 'allout-real-isearch-abort (symbol-function 'isearch-abort))
2451 (fset 'isearch-abort 'allout-isearch-abort)))))
2452;;;_ > allout-isearch-abort ()
2453(defun allout-isearch-abort ()
2454 "Wrapper for `allout-real-isearch-abort' \(which see), to register
2455actual quits."
2456 (interactive)
2457 (setq allout-isearch-did-quit nil)
2458 (condition-case what
2459 (allout-real-isearch-abort)
2460 ('quit (setq allout-isearch-did-quit t)
2461 (signal 'quit nil))))
2462 2415
2463;;; Prevent unnecessary font-lock while isearching! 2416;;; Prevent unnecessary font-lock while isearching!
2464(defvar isearch-was-font-locking nil) 2417(defvar isearch-was-font-locking nil)
@@ -3472,9 +3425,9 @@ by pops to non-distinctive yanks. Bug..."
3472 (interactive) 3425 (interactive)
3473 (if (not allout-file-xref-bullet) 3426 (if (not allout-file-xref-bullet)
3474 (error 3427 (error
3475 "outline cross references disabled - no `allout-file-xref-bullet'") 3428 "Outline cross references disabled - no `allout-file-xref-bullet'")
3476 (if (not (string= (allout-current-bullet) allout-file-xref-bullet)) 3429 (if (not (string= (allout-current-bullet) allout-file-xref-bullet))
3477 (error "current heading lacks cross-reference bullet `%s'" 3430 (error "Current heading lacks cross-reference bullet `%s'"
3478 allout-file-xref-bullet) 3431 allout-file-xref-bullet)
3479 (let (file-name) 3432 (let (file-name)
3480 (save-excursion 3433 (save-excursion
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 2cf578a9891..a99ad64e715 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -131,7 +131,7 @@
131 (make-temp-name 131 (make-temp-name
132 (expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp") 132 (expand-file-name (if (eq system-type 'ms-dos) "ar" "archive.tmp")
133 temporary-file-directory)) 133 temporary-file-directory))
134 "Directory for temporary files made by arc-mode.el." 134 "Directory for temporary files made by `arc-mode.el'."
135 :type 'directory 135 :type 'directory
136 :group 'archive) 136 :group 'archive)
137 137
@@ -481,9 +481,9 @@ Each descriptor is a vector of the form
481 (intern (concat "archive-" (symbol-name archive-subtype) "-" suffix))) 481 (intern (concat "archive-" (symbol-name archive-subtype) "-" suffix)))
482 482
483(defun archive-l-e (str &optional len) 483(defun archive-l-e (str &optional len)
484 "Convert little endian string/vector to integer. 484 "Convert little endian string/vector STR to integer.
485Alternatively, first argument may be a buffer position in the current buffer 485Alternatively, STR may be a buffer position in the current buffer
486in which case a second argument, length, should be supplied." 486in which case a second argument, length LEN, should be supplied."
487 (if (stringp str) 487 (if (stringp str)
488 (setq len (length str)) 488 (setq len (length str))
489 (setq str (buffer-substring str (+ str len)))) 489 (setq str (buffer-substring str (+ str len))))
@@ -584,7 +584,7 @@ the mode is invalid. If ERROR is nil then nil will be returned."
584 (format "%02d:%02d:%02d" hour minute second))) 584 (format "%02d:%02d:%02d" hour minute second)))
585 585
586(defun archive-unixdate (low high) 586(defun archive-unixdate (low high)
587 "Stringify unix (LOW HIGH) date." 587 "Stringify Unix (LOW HIGH) date."
588 (let ((str (current-time-string (cons high low)))) 588 (let ((str (current-time-string (cons high low))))
589 (format "%s-%s-%s" 589 (format "%s-%s-%s"
590 (substring str 8 10) 590 (substring str 8 10)
@@ -592,7 +592,7 @@ the mode is invalid. If ERROR is nil then nil will be returned."
592 (substring str 20 24)))) 592 (substring str 20 24))))
593 593
594(defun archive-unixtime (low high) 594(defun archive-unixtime (low high)
595 "Stringify unix (LOW HIGH) time." 595 "Stringify Unix (LOW HIGH) time."
596 (let ((str (current-time-string (cons high low)))) 596 (let ((str (current-time-string (cons high low))))
597 (substring str 11 19))) 597 (substring str 11 19)))
598 598
@@ -604,7 +604,7 @@ the mode is invalid. If ERROR is nil then nil will be returned."
604 604
605(defun archive-get-descr (&optional noerror) 605(defun archive-get-descr (&optional noerror)
606 "Return the descriptor vector for file at point. 606 "Return the descriptor vector for file at point.
607Does not signal an error if optional second argument NOERROR is non-nil." 607Does not signal an error if optional argument NOERROR is non-nil."
608 (let ((no (archive-get-lineno))) 608 (let ((no (archive-get-lineno)))
609 (if (and (>= (point) archive-file-list-start) 609 (if (and (>= (point) archive-file-list-start)
610 (< no (length archive-files))) 610 (< no (length archive-files)))
@@ -783,7 +783,7 @@ when parsing the archive."
783 783
784(defun archive-alternate-display () 784(defun archive-alternate-display ()
785 "Toggle alternative display. 785 "Toggle alternative display.
786To avoid very long lines some archive mode don't show all information. 786To avoid very long lines archive mode does not show all information.
787This function changes the set of information shown for each files." 787This function changes the set of information shown for each files."
788 (interactive) 788 (interactive)
789 (setq archive-alternate-display (not archive-alternate-display)) 789 (setq archive-alternate-display (not archive-alternate-display))
@@ -1184,13 +1184,13 @@ With a prefix argument, mark that many files."
1184 "In archive mode, un-mark this member if it is marked to be deleted. 1184 "In archive mode, un-mark this member if it is marked to be deleted.
1185With a prefix argument, un-mark that many files forward." 1185With a prefix argument, un-mark that many files forward."
1186 (interactive "p") 1186 (interactive "p")
1187 (archive-flag-deleted p ? )) 1187 (archive-flag-deleted p ?\s))
1188 1188
1189(defun archive-unflag-backwards (p) 1189(defun archive-unflag-backwards (p)
1190 "In archive mode, un-mark this member if it is marked to be deleted. 1190 "In archive mode, un-mark this member if it is marked to be deleted.
1191With a prefix argument, un-mark that many members backward." 1191With a prefix argument, un-mark that many members backward."
1192 (interactive "p") 1192 (interactive "p")
1193 (archive-flag-deleted (- p) ? )) 1193 (archive-flag-deleted (- p) ?\s))
1194 1194
1195(defun archive-unmark-all-files () 1195(defun archive-unmark-all-files ()
1196 "Remove all marks." 1196 "Remove all marks."
@@ -1200,8 +1200,8 @@ With a prefix argument, un-mark that many members backward."
1200 (save-excursion 1200 (save-excursion
1201 (goto-char archive-file-list-start) 1201 (goto-char archive-file-list-start)
1202 (while (< (point) archive-file-list-end) 1202 (while (< (point) archive-file-list-end)
1203 (or (= (following-char) ? ) 1203 (or (= (following-char) ?\s)
1204 (progn (delete-char 1) (insert ? ))) 1204 (progn (delete-char 1) (insert ?\s)))
1205 (forward-line 1))) 1205 (forward-line 1)))
1206 (restore-buffer-modified-p modified))) 1206 (restore-buffer-modified-p modified)))
1207 1207
@@ -1239,7 +1239,7 @@ Use \\[archive-unmark-all-files] to remove all marks."
1239(defun archive-chmod-entry (new-mode) 1239(defun archive-chmod-entry (new-mode)
1240 "Change the protection bits associated with all marked or this member. 1240 "Change the protection bits associated with all marked or this member.
1241The new protection bits can either be specified as an octal number or 1241The new protection bits can either be specified as an octal number or
1242as a relative change like \"g+rw\" as for chmod(2)" 1242as a relative change like \"g+rw\" as for chmod(2)."
1243 (interactive "sNew mode (octal or relative): ") 1243 (interactive "sNew mode (octal or relative): ")
1244 (if archive-read-only (error "Archive is read-only")) 1244 (if archive-read-only (error "Archive is read-only"))
1245 (let ((func (archive-name "chmod-entry"))) 1245 (let ((func (archive-name "chmod-entry")))
diff --git a/lisp/array.el b/lisp/array.el
index 836ba99ff6d..819840c8a1a 100644
--- a/lisp/array.el
+++ b/lisp/array.el
@@ -638,7 +638,7 @@ If optional ARG is given, copy through ARG rows up."
638 "Reconfigure the state of `array-rows-numbered' and `array-columns-per-line'. 638 "Reconfigure the state of `array-rows-numbered' and `array-columns-per-line'.
639NEW-COLUMNS-PER-LINE is the desired value of `array-columns-per-line' and 639NEW-COLUMNS-PER-LINE is the desired value of `array-columns-per-line' and
640NEW-ROWS-NUMBERED (a character, either ?y or ?n) is the desired value 640NEW-ROWS-NUMBERED (a character, either ?y or ?n) is the desired value
641of array-rows-numbered." 641of `array-rows-numbered'."
642 (interactive "nColumns per line: \ncRows numbered? (y or n) ") 642 (interactive "nColumns per line: \ncRows numbered? (y or n) ")
643 ;; Check on new-columns-per-line 643 ;; Check on new-columns-per-line
644 (let ((check t)) 644 (let ((check t))
@@ -717,7 +717,7 @@ of array-rows-numbered."
717 (let ((inhibit-quit t)) 717 (let ((inhibit-quit t))
718 (set-buffer main-buffer) 718 (set-buffer main-buffer)
719 (erase-buffer) 719 (erase-buffer)
720 (insert-buffer temp-buffer) 720 (insert-buffer-substring temp-buffer)
721 ;; Update local variables. 721 ;; Update local variables.
722 (setq array-columns-per-line new-columns-per-line) 722 (setq array-columns-per-line new-columns-per-line)
723 (setq array-rows-numbered new-rows-numbered) 723 (setq array-rows-numbered new-rows-numbered)
@@ -767,7 +767,7 @@ Return COLUMN."
767 (move-to-column column))))) 767 (move-to-column column)))))
768 768
769(defun untabify-backward () 769(defun untabify-backward ()
770 "Untabify the preceding tab." 770 "Untabify the preceding TAB."
771 (save-excursion 771 (save-excursion
772 (let ((start (point))) 772 (let ((start (point)))
773 (backward-char 1) 773 (backward-char 1)
@@ -817,7 +817,7 @@ NOT recognized as integers or real numbers.
817 The array MUST reside at the top of the buffer. 817 The array MUST reside at the top of the buffer.
818 818
819 TABs are not respected, and may be converted into spaces at any time. 819 TABs are not respected, and may be converted into spaces at any time.
820Setting the variable 'array-respect-tabs to non-nil will prevent TAB conversion, 820Setting the variable `array-respect-tabs' to non-nil will prevent TAB conversion,
821but will cause many functions to give errors if they encounter one. 821but will cause many functions to give errors if they encounter one.
822 822
823 Upon entering array mode, you will be prompted for the values of 823 Upon entering array mode, you will be prompted for the values of
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 7f10e7f3c1f..59188b6ae92 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -305,7 +305,7 @@ For more information, see the function `buffer-menu'."
305 305
306(defun Buffer-menu-unmark (&optional backup) 306(defun Buffer-menu-unmark (&optional backup)
307 "Cancel all requested operations on buffer on this line and move down. 307 "Cancel all requested operations on buffer on this line and move down.
308Optional ARG means move up." 308Optional prefix arg means move up."
309 (interactive "P") 309 (interactive "P")
310 (when (Buffer-menu-no-header) 310 (when (Buffer-menu-no-header)
311 (let* ((buf (Buffer-menu-buffer t)) 311 (let* ((buf (Buffer-menu-buffer t))
@@ -369,10 +369,10 @@ and then move up one line. Prefix arg means move that many lines."
369 (save-excursion 369 (save-excursion
370 (beginning-of-line) 370 (beginning-of-line)
371 (forward-char 2) 371 (forward-char 2)
372 (if (= (char-after) (if arg ? ?*)) 372 (if (= (char-after) (if arg ?\s ?*))
373 (let ((buffer-read-only nil)) 373 (let ((buffer-read-only nil))
374 (delete-char 1) 374 (delete-char 1)
375 (insert (if arg ?* ? )))))) 375 (insert (if arg ?* ?\s))))))
376 376
377(defun Buffer-menu-beginning () 377(defun Buffer-menu-beginning ()
378 (goto-char (point-min)) 378 (goto-char (point-min))
@@ -392,7 +392,7 @@ and then move up one line. Prefix arg means move that many lines."
392 (setq modp (buffer-modified-p))) 392 (setq modp (buffer-modified-p)))
393 (let ((buffer-read-only nil)) 393 (let ((buffer-read-only nil))
394 (delete-char -1) 394 (delete-char -1)
395 (insert (if modp ?* ? )))))) 395 (insert (if modp ?* ?\s))))))
396 (save-excursion 396 (save-excursion
397 (Buffer-menu-beginning) 397 (Buffer-menu-beginning)
398 (let ((buff-menu-buffer (current-buffer)) 398 (let ((buff-menu-buffer (current-buffer))
@@ -405,7 +405,7 @@ and then move up one line. Prefix arg means move that many lines."
405 (save-excursion (kill-buffer buf))) 405 (save-excursion (kill-buffer buf)))
406 (if (and buf (buffer-name buf)) 406 (if (and buf (buffer-name buf))
407 (progn (delete-char 1) 407 (progn (delete-char 1)
408 (insert ? )) 408 (insert ?\s))
409 (delete-region (point) (progn (forward-line 1) (point))) 409 (delete-region (point) (progn (forward-line 1) (point)))
410 (unless (bobp) 410 (unless (bobp)
411 (forward-char -1)))))))) 411 (forward-char -1))))))))
@@ -425,7 +425,7 @@ in the selected frame."
425 (setq tem (Buffer-menu-buffer t)) 425 (setq tem (Buffer-menu-buffer t))
426 (let ((buffer-read-only nil)) 426 (let ((buffer-read-only nil))
427 (delete-char -1) 427 (delete-char -1)
428 (insert ?\ )) 428 (insert ?\s))
429 (or (eq tem buff) (memq tem others) (setq others (cons tem others)))) 429 (or (eq tem buff) (memq tem others) (setq others (cons tem others))))
430 (setq others (nreverse others) 430 (setq others (nreverse others)
431 tem (/ (1- (frame-height)) (1+ (length others)))) 431 tem (/ (1- (frame-height)) (1+ (length others))))
@@ -521,7 +521,7 @@ The current window remains selected."
521 (save-excursion 521 (save-excursion
522 (set-buffer (Buffer-menu-buffer t)) 522 (set-buffer (Buffer-menu-buffer t))
523 (vc-toggle-read-only) 523 (vc-toggle-read-only)
524 (setq char (if buffer-read-only ?% ? ))) 524 (setq char (if buffer-read-only ?% ?\s)))
525 (save-excursion 525 (save-excursion
526 (beginning-of-line) 526 (beginning-of-line)
527 (forward-char 1) 527 (forward-char 1)
@@ -594,7 +594,7 @@ For more information, see the function `buffer-menu'."
594 (make-string (- Buffer-menu-buffer+size-width 594 (make-string (- Buffer-menu-buffer+size-width
595 (length name) 595 (length name)
596 (length size)) 596 (length size))
597 ? ) 597 ?\s)
598 size)) 598 size))
599 599
600(defun Buffer-menu-sort (column) 600(defun Buffer-menu-sort (column)
@@ -677,7 +677,7 @@ it means list those buffers and no others.
677For more information, see the function `buffer-menu'." 677For more information, see the function `buffer-menu'."
678 (let* ((old-buffer (current-buffer)) 678 (let* ((old-buffer (current-buffer))
679 (standard-output standard-output) 679 (standard-output standard-output)
680 (mode-end (make-string (- Buffer-menu-mode-width 2) ? )) 680 (mode-end (make-string (- Buffer-menu-mode-width 2) ?\s))
681 (header (concat "CRM " 681 (header (concat "CRM "
682 (Buffer-menu-buffer+size 682 (Buffer-menu-buffer+size
683 (Buffer-menu-make-sort-button "Buffer" 2) 683 (Buffer-menu-make-sort-button "Buffer" 2)
@@ -712,7 +712,7 @@ For more information, see the function `buffer-menu'."
712 (insert header 712 (insert header
713 (apply 'string 713 (apply 'string
714 (mapcar (lambda (c) 714 (mapcar (lambda (c)
715 (if (memq c '(?\n ?\ )) c underline)) 715 (if (memq c '(?\n ?\s)) c underline))
716 header))))) 716 header)))))
717 ;; Collect info for every buffer we're interested in. 717 ;; Collect info for every buffer we're interested in.
718 (dolist (buffer (or buffer-list (buffer-list))) 718 (dolist (buffer (or buffer-list (buffer-list)))
@@ -732,17 +732,17 @@ For more information, see the function `buffer-menu'."
732 (format-mode-line mode-line-process 732 (format-mode-line mode-line-process
733 nil nil buffer)))) 733 nil nil buffer))))
734 (bits (string 734 (bits (string
735 (if (eq buffer old-buffer) ?. ?\ ) 735 (if (eq buffer old-buffer) ?. ?\s)
736 ;; Handle readonly status. The output buffer 736 ;; Handle readonly status. The output buffer
737 ;; is special cased to appear readonly; it is 737 ;; is special cased to appear readonly; it is
738 ;; actually made so at a later date. 738 ;; actually made so at a later date.
739 (if (or (eq buffer standard-output) 739 (if (or (eq buffer standard-output)
740 buffer-read-only) 740 buffer-read-only)
741 ?% ?\ ) 741 ?% ?\s)
742 ;; Identify modified buffers. 742 ;; Identify modified buffers.
743 (if (buffer-modified-p) ?* ?\ ) 743 (if (buffer-modified-p) ?* ?\s)
744 ;; Space separator. 744 ;; Space separator.
745 ?\ ))) 745 ?\s)))
746 (unless file 746 (unless file
747 ;; No visited file. Check local value of 747 ;; No visited file. Check local value of
748 ;; list-buffers-directory. 748 ;; list-buffers-directory.
diff --git a/lisp/calc/README b/lisp/calc/README
index a307b711f1e..97f2a29f6ce 100644
--- a/lisp/calc/README
+++ b/lisp/calc/README
@@ -2,7 +2,8 @@
2This directory contains Calc, an advanced desk calculator for GNU 2This directory contains Calc, an advanced desk calculator for GNU
3Emacs. 3Emacs.
4 4
5"Calc" Copyright 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 5"Calc" Copyright 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
6 2005 Free Software Foundation, Inc.
6 7
7Written by: 8Written by:
8 Dave Gillespie 9 Dave Gillespie
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 8af03c4d206..6919527751b 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -1,6 +1,7 @@
1;;; calc-aent.el --- algebraic entry functions for Calc 1;;; calc-aent.el --- algebraic entry functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: Dave Gillespie <daveg@synaptics.com> 6;; Author: Dave Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el
index 45d66231835..ada18830988 100644
--- a/lisp/calc/calc-alg.el
+++ b/lisp/calc/calc-alg.el
@@ -1,6 +1,7 @@
1;;; calc-alg.el --- algebraic functions for Calc 1;;; calc-alg.el --- algebraic functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el
index bba7a8fe942..25ccfc48019 100644
--- a/lisp/calc/calc-arith.el
+++ b/lisp/calc/calc-arith.el
@@ -1,6 +1,7 @@
1;;; calc-arith.el --- arithmetic functions for Calc 1;;; calc-arith.el --- arithmetic functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-bin.el b/lisp/calc/calc-bin.el
index 445f9d28531..376c049e93e 100644
--- a/lisp/calc/calc-bin.el
+++ b/lisp/calc/calc-bin.el
@@ -1,6 +1,7 @@
1;;; calc-bin.el --- binary functions for Calc 1;;; calc-bin.el --- binary functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el
index b4b397c43f6..5105148a60f 100644
--- a/lisp/calc/calc-comb.el
+++ b/lisp/calc/calc-comb.el
@@ -1,6 +1,7 @@
1;;; calc-comb.el --- combinatoric functions for Calc 1;;; calc-comb.el --- combinatoric functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-cplx.el b/lisp/calc/calc-cplx.el
index 32d8a07ffc0..cf9054343d4 100644
--- a/lisp/calc/calc-cplx.el
+++ b/lisp/calc/calc-cplx.el
@@ -1,6 +1,7 @@
1;;; calc-cplx.el --- Complex number functions for Calc 1;;; calc-cplx.el --- Complex number functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index 0a7696c9311..4127c0b33da 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -1,6 +1,7 @@
1;;; calc-embed.el --- embed Calc in a buffer 1;;; calc-embed.el --- embed Calc in a buffer
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 0b177b06dc4..db370f766d9 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1,6 +1,7 @@
1;;; calc-ext.el --- various extension functions for Calc 1;;; calc-ext.el --- various extension functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-fin.el b/lisp/calc/calc-fin.el
index c65e8341394..b15f7c254d1 100644
--- a/lisp/calc/calc-fin.el
+++ b/lisp/calc/calc-fin.el
@@ -1,6 +1,7 @@
1;;; calc-fin.el --- financial functions for Calc 1;;; calc-fin.el --- financial functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index ad2ef9dbbff..3a192e3f0be 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -1,7 +1,7 @@
1;;; calc-forms.el --- data format conversion functions for Calc 1;;; calc-forms.el --- data format conversion functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; Free Software Foundation, Inc. 4;; 2005 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-frac.el b/lisp/calc/calc-frac.el
index 87ee59440c3..bf3850b72b9 100644
--- a/lisp/calc/calc-frac.el
+++ b/lisp/calc/calc-frac.el
@@ -1,6 +1,7 @@
1;;; calc-frac.el --- fraction functions for Calc 1;;; calc-frac.el --- fraction functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-funcs.el b/lisp/calc/calc-funcs.el
index 7ae9f524c90..9d491a2c540 100644
--- a/lisp/calc/calc-funcs.el
+++ b/lisp/calc/calc-funcs.el
@@ -1,6 +1,7 @@
1;;; calc-funcs.el --- well-known functions for Calc 1;;; calc-funcs.el --- well-known functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index 113cdcd33bc..31d45c50a70 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -1,6 +1,7 @@
1;;; calc-graph.el --- graph output functions for Calc 1;;; calc-graph.el --- graph output functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 84176b36eea..2d79fd36f6c 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -1,7 +1,7 @@
1;;; calc-help.el --- help display functions for Calc, 1;;; calc-help.el --- help display functions for Calc,
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; Free Software Foundation, Inc. 4;; 2005 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-incom.el b/lisp/calc/calc-incom.el
index 3fdec5a4b06..50d6f16f7bd 100644
--- a/lisp/calc/calc-incom.el
+++ b/lisp/calc/calc-incom.el
@@ -1,6 +1,7 @@
1;;; calc-incom.el --- complex data type input functions for Calc 1;;; calc-incom.el --- complex data type input functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-keypd.el b/lisp/calc/calc-keypd.el
index ad1e4664661..f3034bdd4b3 100644
--- a/lisp/calc/calc-keypd.el
+++ b/lisp/calc/calc-keypd.el
@@ -1,6 +1,7 @@
1;;; calc-keypd.el --- mouse-capable keypad input for Calc 1;;; calc-keypd.el --- mouse-capable keypad input for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index 67cc5270942..e0099ee4e07 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -1,6 +1,7 @@
1;;; calc-lang.el --- calc language functions 1;;; calc-lang.el --- calc language functions
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-macs.el b/lisp/calc/calc-macs.el
index 1004a8f1f56..352ffafe389 100644
--- a/lisp/calc/calc-macs.el
+++ b/lisp/calc/calc-macs.el
@@ -1,6 +1,7 @@
1;;; calc-macs.el --- important macros for Calc 1;;; calc-macs.el --- important macros for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-map.el b/lisp/calc/calc-map.el
index e636dd565fa..da9b91243ae 100644
--- a/lisp/calc/calc-map.el
+++ b/lisp/calc/calc-map.el
@@ -1,6 +1,7 @@
1;;; calc-map.el --- higher-order functions for Calc 1;;; calc-map.el --- higher-order functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index bd939e1669c..53d80350834 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -1,6 +1,7 @@
1;;; calc-math.el --- mathematical functions for Calc 1;;; calc-math.el --- mathematical functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index 643465f8478..e8c0ea4b658 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -1,6 +1,7 @@
1;;; calc-misc.el --- miscellaneous functions for Calc 1;;; calc-misc.el --- miscellaneous functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el
index e0e2ccbd717..5e627203049 100644
--- a/lisp/calc/calc-mode.el
+++ b/lisp/calc/calc-mode.el
@@ -1,6 +1,7 @@
1;;; calc-mode.el --- calculator modes for Calc 1;;; calc-mode.el --- calculator modes for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-mtx.el b/lisp/calc/calc-mtx.el
index ea79c98252e..0b18927a7f1 100644
--- a/lisp/calc/calc-mtx.el
+++ b/lisp/calc/calc-mtx.el
@@ -1,6 +1,7 @@
1;;; calc-mtx.el --- matrix functions for Calc 1;;; calc-mtx.el --- matrix functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el
index 89d8273d6d6..3dd19b6f67a 100644
--- a/lisp/calc/calc-poly.el
+++ b/lisp/calc/calc-poly.el
@@ -1,6 +1,7 @@
1;;; calc-poly.el --- polynomial functions for Calc 1;;; calc-poly.el --- polynomial functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index 8d2fba7fef0..b44d8d256a5 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -1,6 +1,7 @@
1;;; calc-prog.el --- user programmability functions for Calc 1;;; calc-prog.el --- user programmability functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-rewr.el b/lisp/calc/calc-rewr.el
index 2afb16b7535..5c08bd4baf6 100644
--- a/lisp/calc/calc-rewr.el
+++ b/lisp/calc/calc-rewr.el
@@ -1,6 +1,7 @@
1;;; calc-rewr.el --- rewriting functions for Calc 1;;; calc-rewr.el --- rewriting functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-rules.el b/lisp/calc/calc-rules.el
index 14fb59ce376..a3a07b04563 100644
--- a/lisp/calc/calc-rules.el
+++ b/lisp/calc/calc-rules.el
@@ -1,6 +1,7 @@
1;;; calc-rules.el --- rules for simplifying algebraic expressions in Calc 1;;; calc-rules.el --- rules for simplifying algebraic expressions in Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-sel.el b/lisp/calc/calc-sel.el
index 04cb2bee2bd..87767a12244 100644
--- a/lisp/calc/calc-sel.el
+++ b/lisp/calc/calc-sel.el
@@ -1,7 +1,7 @@
1;;; calc-sel.el --- data selection functions for Calc 1;;; calc-sel.el --- data selection functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; Free Software Foundation, Inc. 4;; 2005 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-stat.el b/lisp/calc/calc-stat.el
index c1b8ebc307c..9db057d30d1 100644
--- a/lisp/calc/calc-stat.el
+++ b/lisp/calc/calc-stat.el
@@ -1,6 +1,7 @@
1;;; calc-stat.el --- statistical functions for Calc 1;;; calc-stat.el --- statistical functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 35db6d71019..1410b7d6651 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -1,6 +1,7 @@
1;;; calc-store.el --- value storage functions for Calc 1;;; calc-store.el --- value storage functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-stuff.el b/lisp/calc/calc-stuff.el
index 0564e39ed57..635dcf95036 100644
--- a/lisp/calc/calc-stuff.el
+++ b/lisp/calc/calc-stuff.el
@@ -1,6 +1,7 @@
1;;; calc-stuff.el --- miscellaneous functions for Calc 1;;; calc-stuff.el --- miscellaneous functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-trail.el b/lisp/calc/calc-trail.el
index e86117585ff..d5bba8dbb92 100644
--- a/lisp/calc/calc-trail.el
+++ b/lisp/calc/calc-trail.el
@@ -1,6 +1,7 @@
1;;; calc-trail.el --- functions for manipulating the Calc "trail" 1;;; calc-trail.el --- functions for manipulating the Calc "trail"
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-undo.el b/lisp/calc/calc-undo.el
index 1837fe071f6..e52ab015f26 100644
--- a/lisp/calc/calc-undo.el
+++ b/lisp/calc/calc-undo.el
@@ -1,6 +1,7 @@
1;;; calc-undo.el --- undo functions for Calc 1;;; calc-undo.el --- undo functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 3857d930902..7d42fd9ca9a 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -1,6 +1,7 @@
1;;; calc-units.el --- unit conversion functions for Calc 1;;; calc-units.el --- unit conversion functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index 1153eabed57..a830887a652 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -1,6 +1,7 @@
1;;; calc-vec.el --- vector functions for Calc 1;;; calc-vec.el --- vector functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index 1544e8956c1..628b1fef1c0 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -1,6 +1,7 @@
1;;; calc-yank.el --- kill-ring functionality for Calc 1;;; calc-yank.el --- kill-ring functionality for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 1dc4e94adb2..c53e7971956 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1,12 +1,12 @@
1;;; calc.el --- the GNU Emacs calculator 1;;; calc.el --- the GNU Emacs calculator
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; Free Software Foundation, Inc. 4;; 2005 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
8;; Keywords: convenience, extensions 8;; Keywords: convenience, extensions
9;; Version: 2.02g 9;; Version: 2.1
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12 12
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index d139dcf28ba..a534e4fd459 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -1,6 +1,7 @@
1;;; calcalg2.el --- more algebraic functions for Calc 1;;; calcalg2.el --- more algebraic functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calcalg3.el b/lisp/calc/calcalg3.el
index 3fff729a012..0aef3ba55af 100644
--- a/lisp/calc/calcalg3.el
+++ b/lisp/calc/calcalg3.el
@@ -1,6 +1,7 @@
1;;; calcalg3.el --- more algebraic functions for Calc 1;;; calcalg3.el --- more algebraic functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calccomp.el b/lisp/calc/calccomp.el
index 70ceb01da64..aab079ed739 100644
--- a/lisp/calc/calccomp.el
+++ b/lisp/calc/calccomp.el
@@ -1,6 +1,7 @@
1;;; calccomp.el --- composition functions for Calc 1;;; calccomp.el --- composition functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calc/calcsel2.el b/lisp/calc/calcsel2.el
index 2a322b8b74b..6734065a701 100644
--- a/lisp/calc/calcsel2.el
+++ b/lisp/calc/calcsel2.el
@@ -1,6 +1,7 @@
1;;; calcsel2.el --- selection functions for Calc 1;;; calcsel2.el --- selection functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc.
4 5
5;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <belanger@truman.edu>
diff --git a/lisp/calculator.el b/lisp/calculator.el
index 923d4022098..4210fad2ec9 100644
--- a/lisp/calculator.el
+++ b/lisp/calculator.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eli Barzilay <eli@barzilay.org> 5;; Author: Eli Barzilay <eli@barzilay.org>
6;; Keywords: tools, convenience 6;; Keywords: tools, convenience
7;; Time-stamp: <26 May 2005, 14:32:34, Lute Kamstra, pijl> 7;; Time-stamp: <2005-07-18 17:45:34 juri>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
@@ -1277,12 +1277,6 @@ arguments."
1277 (if Dbound (fset 'D Dsave) (fmakunbound 'D))))) 1277 (if Dbound (fset 'D Dsave) (fmakunbound 'D)))))
1278 (error 0))) 1278 (error 0)))
1279 1279
1280(eval-when-compile ; silence the compiler
1281 (or (fboundp 'event-key)
1282 (defun event-key (&rest _) nil))
1283 (or (fboundp 'key-press-event-p)
1284 (defun key-press-event-p (&rest _) nil)))
1285
1286;;;--------------------------------------------------------------------- 1280;;;---------------------------------------------------------------------
1287;;; Input interaction 1281;;; Input interaction
1288 1282
@@ -1301,8 +1295,9 @@ Optional string argument KEYS will force using it as the keys entered."
1301 (setq k (aref inp i)) 1295 (setq k (aref inp i))
1302 ;; if Emacs will someday have a event-key, then this would 1296 ;; if Emacs will someday have a event-key, then this would
1303 ;; probably be modified anyway 1297 ;; probably be modified anyway
1304 (and (fboundp 'event-key) (key-press-event-p k) 1298 (and (if (fboundp 'key-press-event-p) (key-press-event-p k))
1305 (event-key k) (setq k (event-key k))) 1299 (if (fboundp 'event-key)
1300 (and (event-key k) (setq k (event-key k)))))
1306 ;; assume all symbols are translatable with an ascii-character 1301 ;; assume all symbols are translatable with an ascii-character
1307 (and (symbolp k) 1302 (and (symbolp k)
1308 (setq k (or (get k 'ascii-character) ? ))) 1303 (setq k (or (get k 'ascii-character) ? )))
@@ -1599,7 +1594,7 @@ Optional string argument KEYS will force using it as the keys entered."
1599 (calculator-displayers 1594 (calculator-displayers
1600 (if calculator-copy-displayer nil calculator-displayers))) 1595 (if calculator-copy-displayer nil calculator-displayers)))
1601 (calculator-enter) 1596 (calculator-enter)
1602 ;; remove trailing spaces and and an index 1597 ;; remove trailing spaces and an index
1603 (let ((s (cdr calculator-stack-display))) 1598 (let ((s (cdr calculator-stack-display)))
1604 (and s 1599 (and s
1605 (if (string-match "^\\([^ ]+\\) *\\(\\[[0-9/]+\\]\\)? *$" s) 1600 (if (string-match "^\\([^ ]+\\) *\\(\\[[0-9/]+\\]\\)? *$" s)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 8fe92fc0810..ada15878f13 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1818,7 +1818,7 @@ Driven by the variable `calendar-date-display-form'.")
1818 t) 1818 t)
1819 1819
1820(autoload 'calendar-goto-hebrew-date "cal-hebrew" 1820(autoload 'calendar-goto-hebrew-date "cal-hebrew"
1821 "Move cursor to Hebrew date date." 1821 "Move cursor to Hebrew date."
1822 t) 1822 t)
1823 1823
1824(autoload 'calendar-print-hebrew-date "cal-hebrew" 1824(autoload 'calendar-print-hebrew-date "cal-hebrew"
@@ -1830,7 +1830,7 @@ Driven by the variable `calendar-date-display-form'.")
1830 t) 1830 t)
1831 1831
1832(autoload 'calendar-goto-coptic-date "cal-coptic" 1832(autoload 'calendar-goto-coptic-date "cal-coptic"
1833 "Move cursor to Coptic date date." 1833 "Move cursor to Coptic date."
1834 t) 1834 t)
1835 1835
1836(autoload 'calendar-print-coptic-date "cal-coptic" 1836(autoload 'calendar-print-coptic-date "cal-coptic"
@@ -1842,7 +1842,7 @@ Driven by the variable `calendar-date-display-form'.")
1842 t) 1842 t)
1843 1843
1844(autoload 'calendar-goto-ethiopic-date "cal-coptic" 1844(autoload 'calendar-goto-ethiopic-date "cal-coptic"
1845 "Move cursor to Ethiopic date date." 1845 "Move cursor to Ethiopic date."
1846 t) 1846 t)
1847 1847
1848(autoload 'calendar-print-ethiopic-date "cal-coptic" 1848(autoload 'calendar-print-ethiopic-date "cal-coptic"
@@ -1854,7 +1854,7 @@ Driven by the variable `calendar-date-display-form'.")
1854 t) 1854 t)
1855 1855
1856(autoload 'calendar-goto-persian-date "cal-persia" 1856(autoload 'calendar-goto-persian-date "cal-persia"
1857 "Move cursor to Persian date date." 1857 "Move cursor to Persian date."
1858 t) 1858 t)
1859 1859
1860(autoload 'calendar-print-persian-date "cal-persia" 1860(autoload 'calendar-print-persian-date "cal-persia"
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index aa33ac598e1..7e9e44210ef 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -189,7 +189,8 @@ buffer."
189 (save-current-buffer 189 (save-current-buffer
190 (set-buffer unfolded-buffer) 190 (set-buffer unfolded-buffer)
191 (erase-buffer) 191 (erase-buffer)
192 (insert-buffer folded-ical-buffer) 192 (insert-buffer-substring folded-ical-buffer)
193 (goto-char (point-min))
193 (while (re-search-forward "\r?\n[ \t]" nil t) 194 (while (re-search-forward "\r?\n[ \t]" nil t)
194 (replace-match "" nil nil))) 195 (replace-match "" nil nil)))
195 unfolded-buffer)) 196 unfolded-buffer))
diff --git a/lisp/comint.el b/lisp/comint.el
index 99ea2c44436..ab0d41d6735 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -411,17 +411,15 @@ See `comint-send-input'."
411 "*If non-nil, use `comint-prompt-regexp' to recognize prompts. 411 "*If non-nil, use `comint-prompt-regexp' to recognize prompts.
412If nil, then program output and user-input are given different `field' 412If nil, then program output and user-input are given different `field'
413properties, which Emacs commands can use to distinguish them (in 413properties, which Emacs commands can use to distinguish them (in
414particular, common movement commands such as begining-of-line respect 414particular, common movement commands such as `beginning-of-line'
415field boundaries in a natural way)." 415respect field boundaries in a natural way)."
416 :type 'boolean 416 :type 'boolean
417 :group 'comint) 417 :group 'comint)
418 418
419;; Autoload is necessary for Custom to recognize old alias. 419;; Autoload is necessary for Custom to recognize old alias.
420;;;###autoload 420;;;###autoload
421(defvaralias 'comint-use-prompt-regexp-instead-of-fields 421(define-obsolete-variable-alias 'comint-use-prompt-regexp-instead-of-fields
422 'comint-use-prompt-regexp) 422 'comint-use-prompt-regexp "22.1")
423(make-obsolete-variable 'comint-use-prompt-regexp-instead-of-fields
424 'comint-use-prompt-regexp "22.1")
425 423
426(defcustom comint-mode-hook nil 424(defcustom comint-mode-hook nil
427 "Hook run upon entry to `comint-mode'. 425 "Hook run upon entry to `comint-mode'.
@@ -1079,14 +1077,14 @@ Moves relative to START, or `comint-input-ring-index'."
1079 (if (string-match regexp (ring-ref comint-input-ring n)) 1077 (if (string-match regexp (ring-ref comint-input-ring n))
1080 n))) 1078 n)))
1081 1079
1082(defun comint-previous-matching-input (regexp arg) 1080(defun comint-previous-matching-input (regexp n)
1083 "Search backwards through input history for match for REGEXP. 1081 "Search backwards through input history for match for REGEXP.
1084\(Previous history elements are earlier commands.) 1082\(Previous history elements are earlier commands.)
1085With prefix argument N, search for Nth previous match. 1083With prefix argument N, search for Nth previous match.
1086If N is negative, find the next or Nth next match." 1084If N is negative, find the next or Nth next match."
1087 (interactive (comint-regexp-arg "Previous input matching (regexp): ")) 1085 (interactive (comint-regexp-arg "Previous input matching (regexp): "))
1088 (setq arg (comint-search-arg arg)) 1086 (setq n (comint-search-arg n))
1089 (let ((pos (comint-previous-matching-input-string-position regexp arg))) 1087 (let ((pos (comint-previous-matching-input-string-position regexp n)))
1090 ;; Has a match been found? 1088 ;; Has a match been found?
1091 (if (null pos) 1089 (if (null pos)
1092 (error "Not found") 1090 (error "Not found")
@@ -1099,15 +1097,15 @@ If N is negative, find the next or Nth next match."
1099 (point)) 1097 (point))
1100 (insert (ring-ref comint-input-ring pos))))) 1098 (insert (ring-ref comint-input-ring pos)))))
1101 1099
1102(defun comint-next-matching-input (regexp arg) 1100(defun comint-next-matching-input (regexp n)
1103 "Search forwards through input history for match for REGEXP. 1101 "Search forwards through input history for match for REGEXP.
1104\(Later history elements are more recent commands.) 1102\(Later history elements are more recent commands.)
1105With prefix argument N, search for Nth following match. 1103With prefix argument N, search for Nth following match.
1106If N is negative, find the previous or Nth previous match." 1104If N is negative, find the previous or Nth previous match."
1107 (interactive (comint-regexp-arg "Next input matching (regexp): ")) 1105 (interactive (comint-regexp-arg "Next input matching (regexp): "))
1108 (comint-previous-matching-input regexp (- arg))) 1106 (comint-previous-matching-input regexp (- n)))
1109 1107
1110(defun comint-previous-matching-input-from-input (arg) 1108(defun comint-previous-matching-input-from-input (n)
1111 "Search backwards through input history for match for current input. 1109 "Search backwards through input history for match for current input.
1112\(Previous history elements are earlier commands.) 1110\(Previous history elements are earlier commands.)
1113With prefix argument N, search for Nth previous match. 1111With prefix argument N, search for Nth previous match.
@@ -1124,15 +1122,15 @@ If N is negative, search forwards for the -Nth following match."
1124 comint-input-ring-index nil)) 1122 comint-input-ring-index nil))
1125 (comint-previous-matching-input 1123 (comint-previous-matching-input
1126 (concat "^" (regexp-quote comint-matching-input-from-input-string)) 1124 (concat "^" (regexp-quote comint-matching-input-from-input-string))
1127 arg)) 1125 n))
1128 1126
1129(defun comint-next-matching-input-from-input (arg) 1127(defun comint-next-matching-input-from-input (n)
1130 "Search forwards through input history for match for current input. 1128 "Search forwards through input history for match for current input.
1131\(Following history elements are more recent commands.) 1129\(Following history elements are more recent commands.)
1132With prefix argument N, search for Nth following match. 1130With prefix argument N, search for Nth following match.
1133If N is negative, search backwards for the -Nth previous match." 1131If N is negative, search backwards for the -Nth previous match."
1134 (interactive "p") 1132 (interactive "p")
1135 (comint-previous-matching-input-from-input (- arg))) 1133 (comint-previous-matching-input-from-input (- n)))
1136 1134
1137 1135
1138(defun comint-replace-by-expanded-history (&optional silent start) 1136(defun comint-replace-by-expanded-history (&optional silent start)
@@ -1434,14 +1432,14 @@ If the interpreter is the csh,
1434 return the current line with any initial string matching the 1432 return the current line with any initial string matching the
1435 regexp `comint-prompt-regexp' removed. 1433 regexp `comint-prompt-regexp' removed.
1436 `comint-input-filter-functions' monitors input for \"cd\", \"pushd\", and 1434 `comint-input-filter-functions' monitors input for \"cd\", \"pushd\", and
1437 \"popd\" commands. When it sees one, it cd's the buffer. 1435 \"popd\" commands. When it sees one, it cd's the buffer.
1438 comint-input-filter is the default: returns t if the input isn't all white 1436 `comint-input-filter' is the default: returns t if the input isn't all white
1439 space. 1437 space.
1440 1438
1441If the Comint is Lucid Common Lisp, 1439If the Comint is Lucid Common Lisp,
1442 comint-get-old-input snarfs the sexp ending at point. 1440 `comint-get-old-input' snarfs the sexp ending at point.
1443 comint-input-filter-functions does nothing. 1441 `comint-input-filter-functions' does nothing.
1444 comint-input-filter returns nil if the input matches input-filter-regexp, 1442 `comint-input-filter' returns nil if the input matches input-filter-regexp,
1445 which matches (1) all whitespace (2) :a, :c, etc. 1443 which matches (1) all whitespace (2) :a, :c, etc.
1446 1444
1447Similarly for Soar, Scheme, etc." 1445Similarly for Soar, Scheme, etc."
@@ -2002,8 +2000,8 @@ Does not delete the prompt."
2002 (delete-region pmark (point)))) 2000 (delete-region pmark (point))))
2003 ;; Output message and put back prompt 2001 ;; Output message and put back prompt
2004 (comint-output-filter proc replacement))) 2002 (comint-output-filter proc replacement)))
2005(defalias 'comint-kill-output 'comint-delete-output) 2003(define-obsolete-function-alias 'comint-kill-output
2006(make-obsolete 'comint-kill-output 'comint-delete-output "21.1") 2004 'comint-delete-output "21.1")
2007 2005
2008(defun comint-write-output (filename &optional append mustbenew) 2006(defun comint-write-output (filename &optional append mustbenew)
2009 "Write output from interpreter since last input to FILENAME. 2007 "Write output from interpreter since last input to FILENAME.
@@ -2169,7 +2167,7 @@ If N is negative, find the next or Nth next match."
2169 (goto-char pos)))) 2167 (goto-char pos))))
2170 2168
2171 2169
2172(defun comint-forward-matching-input (regexp arg) 2170(defun comint-forward-matching-input (regexp n)
2173 "Search forward through buffer for input fields that match REGEXP. 2171 "Search forward through buffer for input fields that match REGEXP.
2174If `comint-use-prompt-regexp' is non-nil, then input fields are identified 2172If `comint-use-prompt-regexp' is non-nil, then input fields are identified
2175by lines that match `comint-prompt-regexp'. 2173by lines that match `comint-prompt-regexp'.
@@ -2177,7 +2175,7 @@ by lines that match `comint-prompt-regexp'.
2177With prefix argument N, search for Nth following match. 2175With prefix argument N, search for Nth following match.
2178If N is negative, find the previous or Nth previous match." 2176If N is negative, find the previous or Nth previous match."
2179 (interactive (comint-regexp-arg "Forward input matching (regexp): ")) 2177 (interactive (comint-regexp-arg "Forward input matching (regexp): "))
2180 (comint-backward-matching-input regexp (- arg))) 2178 (comint-backward-matching-input regexp (- n)))
2181 2179
2182 2180
2183(defun comint-next-prompt (n) 2181(defun comint-next-prompt (n)
@@ -2388,7 +2386,7 @@ updated using `comint-update-fence', if necessary."
2388(defun comint-source-default (previous-dir/file source-modes) 2386(defun comint-source-default (previous-dir/file source-modes)
2389 "Compute the defaults for `load-file' and `compile-file' commands. 2387 "Compute the defaults for `load-file' and `compile-file' commands.
2390 2388
2391PREVIOUS-DIR/FILE is a pair (directory . filename) from the last 2389PREVIOUS-DIR/FILE is a pair (DIRECTORY . FILENAME) from the last
2392source-file processing command, or nil if there hasn't been one yet. 2390source-file processing command, or nil if there hasn't been one yet.
2393SOURCE-MODES is a list used to determine what buffers contain source 2391SOURCE-MODES is a list used to determine what buffers contain source
2394files: if the major mode of the buffer is in SOURCE-MODES, it's source. 2392files: if the major mode of the buffer is in SOURCE-MODES, it's source.
@@ -2409,7 +2407,7 @@ processing command (i.e., PREVIOUS-DIR/FILE). If this is the first time
2409the command has been run (PREVIOUS-DIR/FILE is nil), the default directory 2407the command has been run (PREVIOUS-DIR/FILE is nil), the default directory
2410is the cwd, with no default file. (\"no default file\" = nil) 2408is the cwd, with no default file. (\"no default file\" = nil)
2411 2409
2412SOURCE-REGEXP is typically going to be something like (tea-mode) 2410SOURCE-MODES is typically going to be something like (tea-mode)
2413for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode) 2411for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
2414for Soar programs, etc. 2412for Soar programs, etc.
2415 2413
@@ -2440,7 +2438,7 @@ the load or compile."
2440 (set-buffer old-buffer))))) 2438 (set-buffer old-buffer)))))
2441 2439
2442(defun comint-extract-string () 2440(defun comint-extract-string ()
2443 "Return string around POINT, or nil." 2441 "Return string around point, or nil."
2444 (let ((syntax (syntax-ppss))) 2442 (let ((syntax (syntax-ppss)))
2445 (when (nth 3 syntax) 2443 (when (nth 3 syntax)
2446 (condition-case () 2444 (condition-case ()
@@ -2460,7 +2458,7 @@ See `comint-source-default' for more on determining defaults.
2460PROMPT is the prompt string. PREV-DIR/FILE is the (DIRECTORY . FILE) pair 2458PROMPT is the prompt string. PREV-DIR/FILE is the (DIRECTORY . FILE) pair
2461from the last source processing command. SOURCE-MODES is a list of major 2459from the last source processing command. SOURCE-MODES is a list of major
2462modes used to determine what file buffers contain source files. (These 2460modes used to determine what file buffers contain source files. (These
2463two arguments are used for determining defaults). If MUSTMATCH-P is true, 2461two arguments are used for determining defaults.) If MUSTMATCH-P is true,
2464then the filename reader will only accept a file that exists. 2462then the filename reader will only accept a file that exists.
2465 2463
2466A typical use: 2464A typical use:
@@ -2618,8 +2616,7 @@ This is a good thing to set in mode hooks.")
2618(defun comint-word (word-chars) 2616(defun comint-word (word-chars)
2619 "Return the word of WORD-CHARS at point, or nil if none is found. 2617 "Return the word of WORD-CHARS at point, or nil if none is found.
2620Word constituents are considered to be those in WORD-CHARS, which is like the 2618Word constituents are considered to be those in WORD-CHARS, which is like the
2621inside of a \"[...]\" (see `skip-chars-forward'), 2619inside of a \"[...]\" (see `skip-chars-forward'), plus all non-ASCII characters."
2622plus all non-ASCII characters."
2623 (save-excursion 2620 (save-excursion
2624 (let ((here (point)) 2621 (let ((here (point))
2625 giveup) 2622 giveup)
diff --git a/lisp/compare-w.el b/lisp/compare-w.el
index e0a6d5cf732..4bbed1e1fa8 100644
--- a/lisp/compare-w.el
+++ b/lisp/compare-w.el
@@ -56,7 +56,8 @@ whitespace is considered to match, and is skipped."
56(defcustom compare-ignore-whitespace nil 56(defcustom compare-ignore-whitespace nil
57 "*Non-nil means `compare-windows' ignores whitespace." 57 "*Non-nil means `compare-windows' ignores whitespace."
58 :type 'boolean 58 :type 'boolean
59 :group 'compare-w) 59 :group 'compare-w
60 :version "22.1")
60 61
61(defcustom compare-ignore-case nil 62(defcustom compare-ignore-case nil
62 "*Non-nil means `compare-windows' ignores case differences." 63 "*Non-nil means `compare-windows' ignores case differences."
@@ -88,7 +89,8 @@ be made buffer-local.
88If the value of this variable is `nil', then function `ding' is 89If the value of this variable is `nil', then function `ding' is
89called to beep or flash the screen when points are mismatched." 90called to beep or flash the screen when points are mismatched."
90 :type '(choice regexp function) 91 :type '(choice regexp function)
91 :group 'compare-w) 92 :group 'compare-w
93 :version "22.1")
92 94
93(defcustom compare-windows-sync-string-size 32 95(defcustom compare-windows-sync-string-size 32
94 "*Size of string from one window that is searched in second window. 96 "*Size of string from one window that is searched in second window.
@@ -99,7 +101,8 @@ difference regions more coarse-grained.
99 101
100The default value 32 is good for the most cases." 102The default value 32 is good for the most cases."
101 :type 'integer 103 :type 'integer
102 :group 'compare-w) 104 :group 'compare-w
105 :version "22.1")
103 106
104(defcustom compare-windows-recenter nil 107(defcustom compare-windows-recenter nil
105 "*List of two values, each of which is used as argument of 108 "*List of two values, each of which is used as argument of
@@ -109,23 +112,20 @@ matching points side-by-side.
109The value `(-1 0)' is useful if windows are split vertically, 112The value `(-1 0)' is useful if windows are split vertically,
110and the value `((4) (4))' for horizontally split windows." 113and the value `((4) (4))' for horizontally split windows."
111 :type '(list sexp sexp) 114 :type '(list sexp sexp)
112 :group 'compare-w) 115 :group 'compare-w
116 :version "22.1")
113 117
114(defcustom compare-windows-highlight t 118(defcustom compare-windows-highlight t
115 "*Non-nil means compare-windows highlights the differences." 119 "*Non-nil means compare-windows highlights the differences."
116 :type 'boolean 120 :type 'boolean
117 :group 'compare-w) 121 :group 'compare-w
122 :version "22.1")
118 123
119(defface compare-windows 124(defface compare-windows
120 '((((class color) (min-colors 88) (background light)) 125 '((t :inherit lazy-highlight))
121 (:background "paleturquoise"))
122 (((class color) (min-colors 88) (background dark))
123 (:background "paleturquoise4"))
124 (((class color))
125 (:background "turquoise3"))
126 (t (:underline t)))
127 "Face for highlighting of compare-windows difference regions." 126 "Face for highlighting of compare-windows difference regions."
128 :group 'compare-w) 127 :group 'compare-w
128 :version "22.1")
129;; backward-compatibility alias 129;; backward-compatibility alias
130(put 'compare-windows-face 'face-alias 'compare-windows) 130(put 'compare-windows-face 'face-alias 'compare-windows)
131 131
diff --git a/lisp/composite.el b/lisp/composite.el
index 11c927a3f8b..c25536812df 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -85,7 +85,7 @@ shifting percentage against the font size.")
85(defun encode-composition-rule (rule) 85(defun encode-composition-rule (rule)
86 "Encode composition rule RULE into an integer value. 86 "Encode composition rule RULE into an integer value.
87RULE is a cons of global and new reference point symbols 87RULE is a cons of global and new reference point symbols
88\(see reference-point-alist)." 88\(see `reference-point-alist')."
89 89
90 ;; This must be compatible with C macro COMPOSITION_ENCODE_RULE 90 ;; This must be compatible with C macro COMPOSITION_ENCODE_RULE
91 ;; defined in composite.h. 91 ;; defined in composite.h.
@@ -368,11 +368,11 @@ The argument is a parameterized event of the form
368where N is the number of characters before point to compose, 368where N is the number of characters before point to compose,
369COMPONENTS, if non-nil, is the same as the argument to `compose-region' 369COMPONENTS, if non-nil, is the same as the argument to `compose-region'
370\(which see). If it is nil, `compose-chars-after' is called, 370\(which see). If it is nil, `compose-chars-after' is called,
371and that function find a proper rule to compose the target characters. 371and that function finds a proper rule to compose the target characters.
372This function is intended to be used from input methods. 372This function is intended to be used from input methods.
373The global keymap binds special event `compose-last-chars' to this 373The global keymap binds special event `compose-last-chars' to this
374function. Input method may generate an event (compose-last-chars N COMPONENTS) 374function. Input method may generate an event (compose-last-chars N COMPONENTS)
375after a sequence character events." 375after a sequence of character events."
376 (interactive "e") 376 (interactive "e")
377 (let ((chars (nth 1 args))) 377 (let ((chars (nth 1 args)))
378 (if (and (numberp chars) 378 (if (and (numberp chars)
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 5c3ff9448c0..4a3088e6f12 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4228,6 +4228,7 @@ The format is suitable for use with `easy-menu-define'."
4228 (suppress-keymap map) 4228 (suppress-keymap map)
4229 (define-key map " " 'scroll-up) 4229 (define-key map " " 'scroll-up)
4230 (define-key map "\177" 'scroll-down) 4230 (define-key map "\177" 'scroll-down)
4231 (define-key map "\C-c\C-c" 'Custom-set)
4231 (define-key map "\C-x\C-s" 'Custom-save) 4232 (define-key map "\C-x\C-s" 'Custom-save)
4232 (define-key map "q" 'Custom-buffer-done) 4233 (define-key map "q" 'Custom-buffer-done)
4233 (define-key map "u" 'Custom-goto-parent) 4234 (define-key map "u" 'Custom-goto-parent)
@@ -4257,7 +4258,7 @@ The format is suitable for use with `easy-menu-define'."
4257 ["Reset to Current" Custom-reset-current t] 4258 ["Reset to Current" Custom-reset-current t]
4258 ["Reset to Saved" Custom-reset-saved t] 4259 ["Reset to Saved" Custom-reset-saved t]
4259 ["Reset to Standard Settings" Custom-reset-standard t] 4260 ["Reset to Standard Settings" Custom-reset-standard t]
4260 ["Info" (Info-goto-node "(emacs)Easy Customization") t])) 4261 ["Info" (info "(emacs)Easy Customization") t]))
4261 4262
4262(defun Custom-goto-parent () 4263(defun Custom-goto-parent ()
4263 "Go to the parent group listed at the top of this buffer. 4264 "Go to the parent group listed at the top of this buffer.
diff --git a/lisp/custom.el b/lisp/custom.el
index 9766c77a256..cfb4373fdab 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -584,7 +584,7 @@ This recursively follows aliases."
584 "Themes that have been defined with `deftheme'. 584 "Themes that have been defined with `deftheme'.
585The default value is the list (user standard). The theme `standard' 585The default value is the list (user standard). The theme `standard'
586contains the Emacs standard settings from the original Lisp files. The 586contains the Emacs standard settings from the original Lisp files. The
587theme `user' contains all the the settings the user customized and saved. 587theme `user' contains all the settings the user customized and saved.
588Additional themes declared with the `deftheme' macro will be added to 588Additional themes declared with the `deftheme' macro will be added to
589the front of this list.") 589the front of this list.")
590 590
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 447762704ca..3116a22b8d0 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -434,7 +434,14 @@ as well as widgets, buttons, overlays, and text properties."
434 (if (consp key-list) 434 (if (consp key-list)
435 (list "type" 435 (list "type"
436 (mapconcat #'(lambda (x) (concat "\"" x "\"")) 436 (mapconcat #'(lambda (x) (concat "\"" x "\""))
437 key-list " or "))))) 437 key-list " or ")
438 "with"
439 `(widget-create
440 'link
441 :notify (lambda (&rest ignore)
442 (describe-input-method
443 ',current-input-method))
444 ,(format "%s" current-input-method))))))
438 ("buffer code" 445 ("buffer code"
439 ,(encoded-string-description 446 ,(encoded-string-description
440 (string-as-unibyte (char-to-string char)) nil)) 447 (string-as-unibyte (char-to-string char)) nil))
@@ -458,11 +465,7 @@ as well as widgets, buttons, overlays, and text properties."
458 (format "by display table entry [%s] (see below)" 465 (format "by display table entry [%s] (see below)"
459 (mapconcat 466 (mapconcat
460 #'(lambda (x) 467 #'(lambda (x)
461 (if (> (car x) #x7ffff) 468 (format "?%c" (logand (car x) #x7ffff)))
462 (format "?%c<face-id=%s>"
463 (logand (car x) #x7ffff)
464 (lsh (car x) -19))
465 (format "?%c" (car x))))
466 disp-vector " "))) 469 disp-vector " ")))
467 (composition 470 (composition
468 (let ((from (car composition)) 471 (let ((from (car composition))
@@ -506,13 +509,16 @@ as well as widgets, buttons, overlays, and text properties."
506 (when (cadr elt) 509 (when (cadr elt)
507 (insert (format formatter (car elt))) 510 (insert (format formatter (car elt)))
508 (dolist (clm (cdr elt)) 511 (dolist (clm (cdr elt))
509 (when (>= (+ (current-column) 512 (if (eq (car-safe clm) 'widget-create)
510 (or (string-match "\n" clm) 513 (progn (insert " ") (eval clm))
511 (string-width clm)) 1) 514 (when (>= (+ (current-column)
512 (window-width)) 515 (or (string-match "\n" clm)
513 (insert "\n") 516 (string-width clm))
514 (indent-to (1+ max-width))) 517 1)
515 (insert " " clm)) 518 (window-width))
519 (insert "\n")
520 (indent-to (1+ max-width)))
521 (insert " " clm)))
516 (insert "\n")))) 522 (insert "\n"))))
517 523
518 (save-excursion 524 (save-excursion
@@ -540,7 +546,21 @@ as well as widgets, buttons, overlays, and text properties."
540 (format "%s (0x%02X)" (cadr (aref disp-vector i)) 546 (format "%s (0x%02X)" (cadr (aref disp-vector i))
541 (cddr (aref disp-vector i))) 547 (cddr (aref disp-vector i)))
542 "-- no font --") 548 "-- no font --")
543 "\n "))) 549 "\n")
550 (when (> (car (aref disp-vector i)) #x7ffff)
551 (let* ((face-id (lsh (car (aref disp-vector i)) -19))
552 (face (car (delq nil (mapcar (lambda (face)
553 (and (eq (face-id face)
554 face-id) face))
555 (face-list))))))
556 (when face
557 (insert (propertize " " 'display '(space :align-to 5))
558 "face: ")
559 (widget-create 'link
560 :notify `(lambda (&rest ignore)
561 (describe-face ',face))
562 (format "%S" face))
563 (insert "\n"))))))
544 (insert "these terminal codes:\n") 564 (insert "these terminal codes:\n")
545 (dotimes (i (length disp-vector)) 565 (dotimes (i (length disp-vector))
546 (insert (car (aref disp-vector i)) 566 (insert (car (aref disp-vector i))
@@ -606,7 +626,7 @@ as well as widgets, buttons, overlays, and text properties."
606 (describe-text-mode))))) 626 (describe-text-mode)))))
607 627
608(defalias 'describe-char-after 'describe-char) 628(defalias 'describe-char-after 'describe-char)
609(make-obsolete 'describe-char-after 'describe-char "21.5") 629(make-obsolete 'describe-char-after 'describe-char "22.1")
610 630
611(provide 'descr-text) 631(provide 'descr-text)
612 632
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 3679140ba38..b80aa600a8a 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -106,8 +106,7 @@ desktop is saved."
106 :group 'desktop) 106 :group 'desktop)
107 107
108;; Maintained for backward compatibility 108;; Maintained for backward compatibility
109(defvaralias 'desktop-enable 'desktop-save-mode) 109(define-obsolete-variable-alias 'desktop-enable 'desktop-save-mode "22.1")
110(make-obsolete-variable 'desktop-enable 'desktop-save-mode)
111 110
112(defcustom desktop-save 'ask-if-new 111(defcustom desktop-save 'ask-if-new
113 "*Specifies whether the desktop should be saved when it is killed. 112 "*Specifies whether the desktop should be saved when it is killed.
@@ -120,7 +119,7 @@ Possible values are:
120 if-exists -- save if desktop file exists, otherwise don't save. 119 if-exists -- save if desktop file exists, otherwise don't save.
121 nil -- never save. 120 nil -- never save.
122The desktop is never saved when `desktop-save-mode' is nil. 121The desktop is never saved when `desktop-save-mode' is nil.
123The variables `desktop-directory' and `desktop-base-file-name' 122The variables `desktop-dirname' and `desktop-base-file-name'
124determine where the desktop is saved." 123determine where the desktop is saved."
125 :type '(choice 124 :type '(choice
126 (const :tag "Always save" t) 125 (const :tag "Always save" t)
@@ -137,7 +136,7 @@ determine where the desktop is saved."
137 "Name of file for Emacs desktop, excluding the directory part." 136 "Name of file for Emacs desktop, excluding the directory part."
138 :type 'file 137 :type 'file
139 :group 'desktop) 138 :group 'desktop)
140(defvaralias 'desktop-basefilename 'desktop-base-file-name) 139(define-obsolete-variable-alias 'desktop-basefilename 'desktop-base-file-name "22.1")
141 140
142(defcustom desktop-path '("." "~") 141(defcustom desktop-path '("." "~")
143 "List of directories to search for the desktop file. 142 "List of directories to search for the desktop file.
@@ -200,14 +199,14 @@ Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'."
200 regexp-search-ring-yank-pointer) 199 regexp-search-ring-yank-pointer)
201 "List of global variables that `desktop-clear' will clear. 200 "List of global variables that `desktop-clear' will clear.
202An element may be variable name (a symbol) or a cons cell of the form 201An element may be variable name (a symbol) or a cons cell of the form
203\(VAR . FORM). Symbols are set to nil and for cons cells VAR is set 202\(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
204to the value obtained by evaluateing FORM." 203to the value obtained by evaluating FORM."
205 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp))) 204 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
206 :group 'desktop 205 :group 'desktop
207 :version "22.1") 206 :version "22.1")
208 207
209(defcustom desktop-clear-preserve-buffers-regexp 208(defcustom desktop-clear-preserve-buffers-regexp
210 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$" 209 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*server\\*\\|\\*tramp/.+\\*\\)$"
211 "Regexp identifying buffers that `desktop-clear' should not delete. 210 "Regexp identifying buffers that `desktop-clear' should not delete.
212See also `desktop-clear-preserve-buffers'." 211See also `desktop-clear-preserve-buffers'."
213 :type 'regexp 212 :type 'regexp
@@ -305,9 +304,9 @@ to restore the buffer, the auxiliary information is passed as the argument
305DESKTOP-BUFFER-MISC.") 304DESKTOP-BUFFER-MISC.")
306(make-variable-buffer-local 'desktop-save-buffer) 305(make-variable-buffer-local 'desktop-save-buffer)
307(make-obsolete-variable 'desktop-buffer-modes-to-save 306(make-obsolete-variable 'desktop-buffer-modes-to-save
308 'desktop-save-buffer) 307 'desktop-save-buffer "22.1")
309(make-obsolete-variable 'desktop-buffer-misc-functions 308(make-obsolete-variable 'desktop-buffer-misc-functions
310 'desktop-save-buffer) 309 'desktop-save-buffer "22.1")
311 310
312(defcustom desktop-buffer-mode-handlers 311(defcustom desktop-buffer-mode-handlers
313 '((dired-mode . dired-restore-desktop-buffer) 312 '((dired-mode . dired-restore-desktop-buffer)
@@ -315,7 +314,7 @@ DESKTOP-BUFFER-MISC.")
315 (mh-folder-mode . mh-restore-desktop-buffer) 314 (mh-folder-mode . mh-restore-desktop-buffer)
316 (Info-mode . Info-restore-desktop-buffer)) 315 (Info-mode . Info-restore-desktop-buffer))
317 "Alist of major mode specific functions to restore a desktop buffer. 316 "Alist of major mode specific functions to restore a desktop buffer.
318Functions are called by `desktop-read'. List elements must have the form 317Functions are called by `desktop-read'. List elements must have the form
319\(MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 318\(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
320 319
321Buffers with a major mode not specified here, are restored by the default 320Buffers with a major mode not specified here, are restored by the default
@@ -342,7 +341,7 @@ and variable values for that buffer are copied into it."
342 341
343(put 'desktop-buffer-mode-handlers 'risky-local-variable t) 342(put 'desktop-buffer-mode-handlers 'risky-local-variable t)
344(make-obsolete-variable 'desktop-buffer-handlers 343(make-obsolete-variable 'desktop-buffer-handlers
345 'desktop-buffer-mode-handlers) 344 'desktop-buffer-mode-handlers "22.1")
346 345
347(defcustom desktop-minor-mode-table 346(defcustom desktop-minor-mode-table
348 '((auto-fill-function auto-fill-mode) 347 '((auto-fill-function auto-fill-mode)
@@ -399,7 +398,7 @@ variables listed in `desktop-globals-to-clear'."
399 (string-match desktop-clear-preserve-buffers-regexp bufname) 398 (string-match desktop-clear-preserve-buffers-regexp bufname)
400 (member bufname desktop-clear-preserve-buffers) 399 (member bufname desktop-clear-preserve-buffers)
401 ;; Don't kill buffers made for internal purposes. 400 ;; Don't kill buffers made for internal purposes.
402 (and (not (equal bufname "")) (eq (aref bufname 0) ?\ )) 401 (and (not (equal bufname "")) (eq (aref bufname 0) ?\s))
403 (kill-buffer (car buffers)))) 402 (kill-buffer (car buffers))))
404 (setq buffers (cdr buffers)))) 403 (setq buffers (cdr buffers))))
405 (delete-other-windows)) 404 (delete-other-windows))
@@ -432,7 +431,7 @@ is nil, ask the user where to save the desktop."
432 (condition-case err 431 (condition-case err
433 (desktop-save desktop-dirname) 432 (desktop-save desktop-dirname)
434 (file-error 433 (file-error
435 (unless (yes-or-no-p "Error while saving the desktop. Ignore? ") 434 (unless (yes-or-no-p "Error while saving the desktop. Ignore? ")
436 (signal (car err) (cdr err))))))) 435 (signal (car err) (cdr err)))))))
437 436
438;; ---------------------------------------------------------------------------- 437;; ----------------------------------------------------------------------------
@@ -454,7 +453,7 @@ TXT is a string that when read and evaluated yields value.
454QUOTE may be `may' (value may be quoted), 453QUOTE may be `may' (value may be quoted),
455`must' (values must be quoted), or nil (value may not be quoted)." 454`must' (values must be quoted), or nil (value may not be quoted)."
456 (cond 455 (cond
457 ((or (numberp value) (null value) (eq t value)) 456 ((or (numberp value) (null value) (eq t value) (keywordp value))
458 (cons 'may (prin1-to-string value))) 457 (cons 'may (prin1-to-string value)))
459 ((stringp value) 458 ((stringp value)
460 (let ((copy (copy-sequence value))) 459 (let ((copy (copy-sequence value)))
@@ -711,7 +710,7 @@ This function also sets `desktop-dirname' to nil."
711 "Read and process the desktop file in directory DIRNAME. 710 "Read and process the desktop file in directory DIRNAME.
712Look for a desktop file in DIRNAME, or if DIRNAME is omitted, look in 711Look for a desktop file in DIRNAME, or if DIRNAME is omitted, look in
713directories listed in `desktop-path'. If a desktop file is found, it 712directories listed in `desktop-path'. If a desktop file is found, it
714is processed and `desktop-after-read-hook' is run. If no desktop file 713is processed and `desktop-after-read-hook' is run. If no desktop file
715is found, clear the desktop and run `desktop-no-desktop-file-hook'. 714is found, clear the desktop and run `desktop-no-desktop-file-hook'.
716This function is a no-op when Emacs is running in batch mode. 715This function is a no-op when Emacs is running in batch mode.
717It returns t if a desktop file was loaded, nil otherwise." 716It returns t if a desktop file was loaded, nil otherwise."
@@ -781,7 +780,7 @@ Also inhibit further loading of it."
781 (progn 780 (progn
782 (load "default" t t) 781 (load "default" t t)
783 (setq inhibit-default-init t)))) 782 (setq inhibit-default-init t))))
784(make-obsolete 'desktop-load-default 'desktop-save-mode) 783(make-obsolete 'desktop-load-default 'desktop-save-mode "22.1")
785 784
786;; ---------------------------------------------------------------------------- 785;; ----------------------------------------------------------------------------
787;;;###autoload 786;;;###autoload
@@ -958,7 +957,7 @@ directory DIRNAME."
958 (cons 'overwrite-mode (car mim))))) 957 (cons 'overwrite-mode (car mim)))))
959 958
960(defun desktop-append-buffer-args (&rest args) 959(defun desktop-append-buffer-args (&rest args)
961 "Append ARGS at end of `desktop-buffer-args-list' 960 "Append ARGS at end of `desktop-buffer-args-list'.
962ARGS must be an argument list for `desktop-create-buffer'." 961ARGS must be an argument list for `desktop-create-buffer'."
963 (setq desktop-buffer-args-list (nconc desktop-buffer-args-list (list args))) 962 (setq desktop-buffer-args-list (nconc desktop-buffer-args-list (list args)))
964 (unless desktop-lazy-timer 963 (unless desktop-lazy-timer
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index b6444aad2a4..f10ac7d57d2 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -197,7 +197,7 @@ when editing big diffs)."
197 (((class color) (min-colors 88) (background dark)) 197 (((class color) (min-colors 88) (background dark))
198 :background "grey60" :weight bold) 198 :background "grey60" :weight bold)
199 (((class color) (background light)) 199 (((class color) (background light))
200 :foreground "yellow" :weight bold) 200 :foreground "green" :weight bold)
201 (((class color) (background dark)) 201 (((class color) (background dark))
202 :foreground "cyan" :weight bold) 202 :foreground "cyan" :weight bold)
203 (t :weight bold)) ; :height 1.3 203 (t :weight bold)) ; :height 1.3
@@ -250,6 +250,27 @@ when editing big diffs)."
250(put 'diff-changed-face 'face-alias 'diff-changed) 250(put 'diff-changed-face 'face-alias 'diff-changed)
251(defvar diff-changed-face 'diff-changed) 251(defvar diff-changed-face 'diff-changed)
252 252
253(defface diff-indicator-removed
254 '((t :inherit diff-removed))
255 "`diff-mode' face used to highlight indicator of removed lines (-, <)."
256 :group 'diff-mode
257 :version "22.1")
258(defvar diff-indicator-removed-face 'diff-indicator-removed)
259
260(defface diff-indicator-added
261 '((t :inherit diff-added))
262 "`diff-mode' face used to highlight indicator of added lines (+, >)."
263 :group 'diff-mode
264 :version "22.1")
265(defvar diff-indicator-added-face 'diff-indicator-added)
266
267(defface diff-indicator-changed
268 '((t :inherit diff-changed))
269 "`diff-mode' face used to highlight indicator of changed lines."
270 :group 'diff-mode
271 :version "22.1")
272(defvar diff-indicator-changed-face 'diff-indicator-changed)
273
253(defface diff-function 274(defface diff-function
254 '((t :inherit diff-context)) 275 '((t :inherit diff-context))
255 "`diff-mode' face used to highlight function names produced by \"diff -p\"." 276 "`diff-mode' face used to highlight function names produced by \"diff -p\"."
@@ -259,7 +280,7 @@ when editing big diffs)."
259(defvar diff-function-face 'diff-function) 280(defvar diff-function-face 'diff-function)
260 281
261(defface diff-context 282(defface diff-context
262 '((t :inherit shadow)) 283 '((((class color grayscale) (min-colors 88)) :inherit shadow))
263 "`diff-mode' face used to highlight context and other side-information." 284 "`diff-mode' face used to highlight context and other side-information."
264 :group 'diff-mode) 285 :group 'diff-mode)
265;; backward-compatibility alias 286;; backward-compatibility alias
@@ -298,24 +319,29 @@ when editing big diffs)."
298 319
299 320
300(defvar diff-font-lock-keywords 321(defvar diff-font-lock-keywords
301 `(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified 322 `(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified
302 (1 diff-hunk-header-face) 323 (1 diff-hunk-header-face) (2 diff-function-face))
303 (2 diff-function-face)) 324 ("^\\(\\*\\{15\\}\\)\\(.*\\)$" ;context
304 ("^--- .+ ----$" . diff-hunk-header-face) ;context 325 (1 diff-hunk-header-face) (2 diff-function-face))
305 ("^\\(\\*\\{15\\}\\)\\(.*\\)$" ;context
306 (1 diff-hunk-header-face)
307 (2 diff-function-face))
308 ("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header-face) ;context 326 ("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header-face) ;context
327 ("^--- .+ ----$" . diff-hunk-header-face) ;context
328 ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face) ;normal
329 ("^---$" . diff-hunk-header-face) ;normal
309 ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\(\\S-+\\)\\(.*[^*-]\\)?\n" 330 ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\(\\S-+\\)\\(.*[^*-]\\)?\n"
310 (0 diff-header-face) (2 diff-file-header-face prepend)) 331 (0 diff-header-face) (2 diff-file-header-face prepend))
311 ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face) 332 ("^\\([-<]\\)\\(.*\n\\)"
312 ("^!.*\n" (0 diff-changed-face)) 333 (1 diff-indicator-removed-face) (2 diff-removed-face))
313 ("^[+>].*\n" (0 diff-added-face)) 334 ("^\\([+>]\\)\\(.*\n\\)"
314 ("^[-<].*\n" (0 diff-removed-face)) 335 (1 diff-indicator-added-face) (2 diff-added-face))
315 ("^Index: \\(.+\\).*\n" (0 diff-header-face) (1 diff-index-face prepend)) 336 ("^\\(!\\)\\(.*\n\\)"
337 (1 diff-indicator-changed-face) (2 diff-changed-face))
338 ("^Index: \\(.+\\).*\n"
339 (0 diff-header-face) (1 diff-index-face prepend))
316 ("^Only in .*\n" . diff-nonexistent-face) 340 ("^Only in .*\n" . diff-nonexistent-face)
317 ("^#.*" . font-lock-string-face) 341 ("^\\(#\\)\\(.*\\)"
318 ("^[^-=+*!<>].*\n" (0 diff-context-face)))) 342 (1 font-lock-comment-delimiter-face)
343 (2 font-lock-comment-face))
344 ("^[^-=+*!<>#].*\n" (0 diff-context-face))))
319 345
320(defconst diff-font-lock-defaults 346(defconst diff-font-lock-defaults
321 '(diff-font-lock-keywords t nil nil nil (font-lock-multiline . nil))) 347 '(diff-font-lock-keywords t nil nil nil (font-lock-multiline . nil)))
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 42df15b47d2..006186a562e 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -157,7 +157,7 @@ Read-only folders only work in VM 5, not in VM 4."
157(define-minor-mode dired-omit-mode 157(define-minor-mode dired-omit-mode
158 "Toggle Dired-Omit mode. 158 "Toggle Dired-Omit mode.
159With numeric ARG, enable Dired-Omit mode if ARG is positive, disable 159With numeric ARG, enable Dired-Omit mode if ARG is positive, disable
160otherwise. Enabling and disabling is buffer-local. 160otherwise. Enabling and disabling is buffer-local.
161If enabled, \"uninteresting\" files are not listed. 161If enabled, \"uninteresting\" files are not listed.
162Uninteresting files are those whose filenames match regexp `dired-omit-files', 162Uninteresting files are those whose filenames match regexp `dired-omit-files',
163plus those ending with extensions in `dired-omit-extensions'." 163plus those ending with extensions in `dired-omit-extensions'."
@@ -185,7 +185,7 @@ files and lock files."
185If nil, Dired finds the directory as a subdirectory in some other buffer 185If nil, Dired finds the directory as a subdirectory in some other buffer
186if it is present as one. 186if it is present as one.
187 187
188If there are several Dired buffers for a directory, the most recently 188If there are several dired buffers for a directory, the most recently
189used is chosen. 189used is chosen.
190 190
191Dired avoids switching to the current buffer, so that if you have 191Dired avoids switching to the current buffer, so that if you have
@@ -201,7 +201,7 @@ If nil, there is no maximum size."
201 :group 'dired-x) 201 :group 'dired-x)
202 202
203(defcustom dired-enable-local-variables t 203(defcustom dired-enable-local-variables t
204 "*Control use of local-variables lists in dired. 204 "*Control use of local-variables lists in Dired.
205The value can be t, nil or something else. 205The value can be t, nil or something else.
206A value of t means local-variables lists are obeyed; 206A value of t means local-variables lists are obeyed;
207nil means they are ignored; anything else means query. 207nil means they are ignored; anything else means query.
@@ -232,7 +232,7 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used."
232 :group 'dired-x) 232 :group 'dired-x)
233 233
234(defcustom dired-clean-up-buffers-too t 234(defcustom dired-clean-up-buffers-too t
235 "*Non-nil means offer to kill buffers visiting files and dirs deleted in dired." 235 "*Non-nil means offer to kill buffers visiting files and dirs deleted in Dired."
236 :type 'boolean 236 :type 'boolean
237 :group 'dired-x) 237 :group 'dired-x)
238 238
@@ -271,7 +271,7 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used."
271(add-hook 'dired-after-readin-hook 'dired-omit-expunge) 271(add-hook 'dired-after-readin-hook 'dired-omit-expunge)
272 272
273(defun dired-extra-startup () 273(defun dired-extra-startup ()
274 "Automatically put on `dired-mode-hook' to get extra dired features: 274 "Automatically put on `dired-mode-hook' to get extra Dired features:
275\\<dired-mode-map> 275\\<dired-mode-map>
276 \\[dired-do-run-mail]\t-- run mail on folder (see `dired-bind-vm') 276 \\[dired-do-run-mail]\t-- run mail on folder (see `dired-bind-vm')
277 \\[dired-info]\t-- run info on file 277 \\[dired-info]\t-- run info on file
@@ -279,8 +279,8 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used."
279 \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously 279 \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously
280 \\[dired-omit-mode]\t-- toggle omitting of files 280 \\[dired-omit-mode]\t-- toggle omitting of files
281 \\[dired-mark-sexp]\t-- mark by Lisp expression 281 \\[dired-mark-sexp]\t-- mark by Lisp expression
282 \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring. 282 \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring;
283 \t You can feed it to other commands using \\[yank]. 283 \t you can feed it to other commands using \\[yank]
284 284
285For more features, see variables 285For more features, see variables
286 286
@@ -357,7 +357,7 @@ Remove expanded subdir of deleted dir, if any."
357;;; Mark files with some extension. 357;;; Mark files with some extension.
358(defun dired-mark-extension (extension &optional marker-char) 358(defun dired-mark-extension (extension &optional marker-char)
359 "Mark all files with a certain EXTENSION for use in later commands. 359 "Mark all files with a certain EXTENSION for use in later commands.
360A `.' is not automatically prepended to the string entered." 360A `.' is *not* automatically prepended to the string entered."
361 ;; EXTENSION may also be a list of extensions instead of a single one. 361 ;; EXTENSION may also be a list of extensions instead of a single one.
362 ;; Optional MARKER-CHAR is marker to use. 362 ;; Optional MARKER-CHAR is marker to use.
363 (interactive "sMarking extension: \nP") 363 (interactive "sMarking extension: \nP")
@@ -434,7 +434,7 @@ See variables `dired-texinfo-unclean-extensions',
434(defun dired-jump (&optional other-window) 434(defun dired-jump (&optional other-window)
435 "Jump to dired buffer corresponding to current buffer. 435 "Jump to dired buffer corresponding to current buffer.
436If in a file, dired the current directory and move to file's line. 436If in a file, dired the current directory and move to file's line.
437If in dired already, pop up a level and goto old directory's line. 437If in Dired already, pop up a level and goto old directory's line.
438In case the proper dired file line cannot be found, refresh the dired 438In case the proper dired file line cannot be found, refresh the dired
439buffer and try again." 439buffer and try again."
440 (interactive "P") 440 (interactive "P")
@@ -465,7 +465,7 @@ buffer and try again."
465 (dired-goto-file file)))))))) 465 (dired-goto-file file))))))))
466 466
467(defun dired-jump-other-window () 467(defun dired-jump-other-window ()
468 "Like \\[dired-jump] (dired-jump) but in other window." 468 "Like \\[dired-jump] (`dired-jump') but in other window."
469 (interactive) 469 (interactive)
470 (dired-jump t)) 470 (dired-jump t))
471 471
@@ -478,13 +478,13 @@ buffer and try again."
478;; sk 28-Aug-1991 09:37 478;; sk 28-Aug-1991 09:37
479(defvar dired-omit-localp 'no-dir 479(defvar dired-omit-localp 'no-dir
480 "The LOCALP argument `dired-omit-expunge' passes to `dired-get-filename'. 480 "The LOCALP argument `dired-omit-expunge' passes to `dired-get-filename'.
481If it is 'no-dir, omitting is much faster, but you can only match 481If it is `no-dir', omitting is much faster, but you can only match
482against the non-directory part of the file name. Set it to nil if you 482against the non-directory part of the file name. Set it to nil if you
483need to match the entire file name.") 483need to match the entire file name.")
484 484
485;; \017=^O for Omit - other packages can chose other control characters. 485;; \017=^O for Omit - other packages can chose other control characters.
486(defvar dired-omit-marker-char ?\017 486(defvar dired-omit-marker-char ?\017
487 "Temporary marker used by by dired-omit. 487 "Temporary marker used by dired-omit.
488Should never be used as marker by the user or other packages.") 488Should never be used as marker by the user or other packages.")
489 489
490(defun dired-omit-startup () 490(defun dired-omit-startup ()
@@ -569,9 +569,9 @@ This functions works by temporarily binding `dired-marker-char' to
569REGEXP is matched against the entire file name. 569REGEXP is matched against the entire file name.
570Does not re-mark files which already have a mark. 570Does not re-mark files which already have a mark.
571With prefix argument, unflag all those files. 571With prefix argument, unflag all those files.
572Second optional argument LOCALP is as in `dired-get-filename'." 572Optional fourth argument LOCALP is as in `dired-get-filename'."
573 (interactive "P") 573 (interactive "P")
574 (let ((dired-marker-char (if unflag-p ?\ dired-marker-char))) 574 (let ((dired-marker-char (if unflag-p ?\s dired-marker-char)))
575 (dired-mark-if 575 (dired-mark-if
576 (and 576 (and
577 ;; not already marked 577 ;; not already marked
@@ -621,7 +621,7 @@ Second optional argument LOCALP is as in `dired-get-filename'."
621 621
622;;; For browsing `ls -lR' listings in a dired-like fashion. 622;;; For browsing `ls -lR' listings in a dired-like fashion.
623 623
624(fset 'virtual-dired 'dired-virtual) 624(defalias 'virtual-dired 'dired-virtual)
625(defun dired-virtual (dirname &optional switches) 625(defun dired-virtual (dirname &optional switches)
626 "Put this buffer into Virtual Dired mode. 626 "Put this buffer into Virtual Dired mode.
627 627
@@ -638,10 +638,10 @@ buffer.
638If you have save a Dired buffer in a file you can use \\[dired-virtual] to 638If you have save a Dired buffer in a file you can use \\[dired-virtual] to
639resume it in a later session. 639resume it in a later session.
640 640
641Type \\<dired-mode-map>\\[revert-buffer] in the 641Type \\<dired-mode-map>\\[revert-buffer] \
642Virtual Dired buffer and answer `y' to convert the virtual to a real 642in the Virtual Dired buffer and answer `y' to convert
643dired buffer again. You don't have to do this, though: you can relist 643the virtual to a real dired buffer again. You don't have to do this, though:
644single subdirs using \\[dired-do-redisplay]." 644you can relist single subdirs using \\[dired-do-redisplay]."
645 645
646 ;; DIRNAME is the top level directory of the buffer. It will become 646 ;; DIRNAME is the top level directory of the buffer. It will become
647 ;; its `default-directory'. If nil, the old value of 647 ;; its `default-directory'. If nil, the old value of
@@ -725,12 +725,12 @@ nil."
725;; `buffer-contents-mode-alist'. 725;; `buffer-contents-mode-alist'.
726;; Or you use infer-mode.el and infer-mode-alist, same syntax. 726;; Or you use infer-mode.el and infer-mode-alist, same syntax.
727(defun dired-virtual-mode () 727(defun dired-virtual-mode ()
728 "Put current buffer into virtual dired mode (see `dired-virtual'). 728 "Put current buffer into Virtual Dired mode (see `dired-virtual').
729Useful on `buffer-contents-mode-alist' (which see) with the regexp 729Useful on `buffer-contents-mode-alist' (which see) with the regexp
730 730
731 \"^ \\(/[^ /]+\\)/?+:$\" 731 \"^ \\(/[^ /]+\\)/?+:$\"
732 732
733to put saved dired buffers automatically into virtual dired mode. 733to put saved dired buffers automatically into Virtual Dired mode.
734 734
735Also useful for `auto-mode-alist' (which see) like this: 735Also useful for `auto-mode-alist' (which see) like this:
736 736
@@ -768,7 +768,7 @@ Knows about the special cases in variable `default-directory-alist'."
768 default-directory)) 768 default-directory))
769 769
770(defun dired-smart-shell-command (cmd &optional insert) 770(defun dired-smart-shell-command (cmd &optional insert)
771 "Like function `shell-command', but in the current Tree Dired directory." 771 "Like function `shell-command', but in the current Virtual Dired directory."
772 (interactive (list (read-from-minibuffer "Shell command: " 772 (interactive (list (read-from-minibuffer "Shell command: "
773 nil nil nil 'shell-command-history) 773 nil nil nil 'shell-command-history)
774 current-prefix-arg)) 774 current-prefix-arg))
@@ -800,8 +800,9 @@ Knows about the special cases in variable `default-directory-alist'."
800(defvar dired-local-variables-file (convert-standard-filename ".dired") 800(defvar dired-local-variables-file (convert-standard-filename ".dired")
801 "Filename, as string, containing local dired buffer variables to be hacked. 801 "Filename, as string, containing local dired buffer variables to be hacked.
802If this file found in current directory, then it will be inserted into dired 802If this file found in current directory, then it will be inserted into dired
803buffer and `hack-local-variables' will be run. See Emacs Info pages for more 803buffer and `hack-local-variables' will be run. See Info node
804information on local variables. See also `dired-enable-local-variables'.") 804`(emacs)File Variables' for more information on local variables.
805See also `dired-enable-local-variables'.")
805 806
806(defun dired-hack-local-variables () 807(defun dired-hack-local-variables ()
807 "Evaluate local variables in `dired-local-variables-file' for dired buffer." 808 "Evaluate local variables in `dired-local-variables-file' for dired buffer."
@@ -828,7 +829,7 @@ information on local variables. See also `dired-enable-local-variables'.")
828 829
829(defun dired-omit-here-always () 830(defun dired-omit-here-always ()
830 "Create `dired-local-variables-file' for omitting and reverts directory. 831 "Create `dired-local-variables-file' for omitting and reverts directory.
831Sets dired-omit-file-p to t in a local variables file that is readable by 832Sets `dired-omit-mode' to t in a local variables file that is readable by
832dired." 833dired."
833 (interactive) 834 (interactive)
834 (if (file-exists-p dired-local-variables-file) 835 (if (file-exists-p dired-local-variables-file)
@@ -1024,7 +1025,7 @@ Each element of this list looks like
1024 1025
1025 \(REGEXP COMMAND...\) 1026 \(REGEXP COMMAND...\)
1026 1027
1027where each COMMAND can either be a string or a lisp expression that evaluates 1028where each COMMAND can either be a string or a Lisp expression that evaluates
1028to a string. If several COMMANDs are given, the first one will be the default 1029to a string. If several COMMANDs are given, the first one will be the default
1029and the rest will be added temporarily to the history and can be retrieved 1030and the rest will be added temporarily to the history and can be retrieved
1030with \\[previous-history-element] (M-p) . 1031with \\[previous-history-element] (M-p) .
@@ -1223,14 +1224,14 @@ not absolute ones like
1223 (dired-do-create-files 'relsymlink (function dired-make-relative-symlink) 1224 (dired-do-create-files 'relsymlink (function dired-make-relative-symlink)
1224 "RelSymLink" arg dired-keep-marker-relsymlink)) 1225 "RelSymLink" arg dired-keep-marker-relsymlink))
1225 1226
1226(defun dired-do-relsymlink-regexp (regexp newname &optional whole-name) 1227(defun dired-do-relsymlink-regexp (regexp newname &optional arg whole-name)
1227 "RelSymlink all marked files containing REGEXP to NEWNAME. 1228 "RelSymlink all marked files containing REGEXP to NEWNAME.
1228See functions `dired-do-rename-regexp' and `dired-do-relsymlink' 1229See functions `dired-do-rename-regexp' and `dired-do-relsymlink'
1229for more info." 1230for more info."
1230 (interactive (dired-mark-read-regexp "RelSymLink")) 1231 (interactive (dired-mark-read-regexp "RelSymLink"))
1231 (dired-do-create-files-regexp 1232 (dired-do-create-files-regexp
1232 (function dired-make-relative-symlink) 1233 (function dired-make-relative-symlink)
1233 "RelSymLink" nil regexp newname whole-name dired-keep-marker-relsymlink)) 1234 "RelSymLink" arg regexp newname whole-name dired-keep-marker-relsymlink))
1234 1235
1235 1236
1236;;; VISIT ALL MARKED FILES SIMULTANEOUSLY. 1237;;; VISIT ALL MARKED FILES SIMULTANEOUSLY.
@@ -1321,7 +1322,7 @@ NOSELECT the files are merely found but not selected."
1321 1322
1322(defun dired-man () 1323(defun dired-man ()
1323 "Run man on this file. Display old buffer if buffer name matches filename. 1324 "Run man on this file. Display old buffer if buffer name matches filename.
1324Uses ../lisp/man.el of \\[manual-entry] fame." 1325Uses `man.el' of \\[manual-entry] fame."
1325 (interactive) 1326 (interactive)
1326 (require 'man) 1327 (require 'man)
1327 (let* ((file (dired-get-filename)) 1328 (let* ((file (dired-get-filename))
@@ -1441,7 +1442,7 @@ See also variable `dired-vm-read-only-folders'."
1441(defun dired-initial-position (dirname) 1442(defun dired-initial-position (dirname)
1442 "Where point should go in a new listing of DIRNAME. 1443 "Where point should go in a new listing of DIRNAME.
1443Point assumed at beginning of new subdir line. 1444Point assumed at beginning of new subdir line.
1444You may redefine this function as you wish, e.g. like in dired-x.el." 1445You may redefine this function as you wish, e.g. like in `dired-x.el'."
1445 (end-of-line) 1446 (end-of-line)
1446 (if dired-find-subdir (dired-goto-subdir dirname)) ; new 1447 (if dired-find-subdir (dired-goto-subdir dirname)) ; new
1447 (if dired-trivial-filenames (dired-goto-next-nontrivial-file))) 1448 (if dired-trivial-filenames (dired-goto-next-nontrivial-file)))
@@ -1550,7 +1551,7 @@ to mark all zero length files."
1550(defvar dired-x-hands-off-my-keys t 1551(defvar dired-x-hands-off-my-keys t
1551 "*Non-nil means don't bind `dired-x-find-file' over `find-file' on keyboard. 1552 "*Non-nil means don't bind `dired-x-find-file' over `find-file' on keyboard.
1552Similarly for `dired-x-find-file-other-window' over `find-file-other-window'. 1553Similarly for `dired-x-find-file-other-window' over `find-file-other-window'.
1553If you change this variable after dired-x.el is loaded then do 1554If you change this variable after `dired-x.el' is loaded then do
1554\\[dired-x-bind-find-file].") 1555\\[dired-x-bind-find-file].")
1555 1556
1556;;; Bind `dired-x-find-file{-other-window}' over wherever 1557;;; Bind `dired-x-find-file{-other-window}' over wherever
@@ -1559,7 +1560,7 @@ If you change this variable after dired-x.el is loaded then do
1559 "Bind `dired-x-find-file' in place of `find-file' \(or reverse\). 1560 "Bind `dired-x-find-file' in place of `find-file' \(or reverse\).
1560Similarly for `dired-x-find-file-other-window' and `find-file-other-window'. 1561Similarly for `dired-x-find-file-other-window' and `find-file-other-window'.
1561Binding direction based on `dired-x-hands-off-my-keys'. 1562Binding direction based on `dired-x-hands-off-my-keys'.
1562This function part of `after-init-hook'." 1563This function is part of `after-init-hook'."
1563 (interactive) 1564 (interactive)
1564 (if (interactive-p) 1565 (if (interactive-p)
1565 (setq dired-x-hands-off-my-keys 1566 (setq dired-x-hands-off-my-keys
@@ -1592,9 +1593,9 @@ May create a new window, or reuse an existing one.
1592See the function `display-buffer'. 1593See the function `display-buffer'.
1593 1594
1594Identical to `find-file' except when called interactively, with a prefix arg 1595Identical to `find-file' except when called interactively, with a prefix arg
1595\(e.g., \\[universal-argument]\), in which case it guesses filename near 1596\(e.g., \\[universal-argument]\), in which case it guesses filename near point.
1596point. Useful for editing file mentioned in buffer you are viewing, or to 1597Useful for editing file mentioned in buffer you are viewing,
1597test if that file exists. Use minibuffer after snatching filename." 1598or to test if that file exists. Use minibuffer after snatching filename."
1598 (interactive (list (read-filename-at-point "Find file: "))) 1599 (interactive (list (read-filename-at-point "Find file: ")))
1599 (find-file (expand-file-name filename))) 1600 (find-file (expand-file-name filename)))
1600 1601
@@ -1604,9 +1605,9 @@ May create a new window, or reuse an existing one.
1604See the function `display-buffer'. 1605See the function `display-buffer'.
1605 1606
1606Identical to `find-file-other-window' except when called interactively, with a 1607Identical to `find-file-other-window' except when called interactively, with a
1607prefix arg \(e.g., \\[universal-argument]\), in which case it guesses filename 1608prefix arg \(e.g., \\[universal-argument]\), in which case it guesses filename near point.
1608near point. Useful for editing file mentioned in buffer you are viewing, or 1609Useful for editing file mentioned in buffer you are viewing,
1609to test if that file exists. Use minibuffer after snatching filename." 1610or to test if that file exists. Use minibuffer after snatching filename."
1610 (interactive (list (read-filename-at-point "Find file: "))) 1611 (interactive (list (read-filename-at-point "Find file: ")))
1611 (find-file-other-window (expand-file-name filename))) 1612 (find-file-other-window (expand-file-name filename)))
1612 1613
@@ -1695,7 +1696,7 @@ If `current-prefix-arg' is non-nil, uses name at point as guess."
1695 "List of variables to be appended to reports sent by `dired-x-submit-report'.") 1696 "List of variables to be appended to reports sent by `dired-x-submit-report'.")
1696 1697
1697(defun dired-x-submit-report () 1698(defun dired-x-submit-report ()
1698 "Submit via reporter.el a bug report on program. 1699 "Submit via `reporter.el' a bug report on program.
1699Send report on `dired-x-file' version `dired-x-version,' to 1700Send report on `dired-x-file' version `dired-x-version,' to
1700`dired-x-maintainer' at address `dired-x-help-address' listing 1701`dired-x-maintainer' at address `dired-x-help-address' listing
1701variables `dired-x-variable-list' in the message." 1702variables `dired-x-variable-list' in the message."
diff --git a/lisp/dired.el b/lisp/dired.el
index a45395ecef9..0ba369e4640 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -50,13 +50,13 @@
50 50
51;;;###autoload 51;;;###autoload
52(defcustom dired-listing-switches "-al" 52(defcustom dired-listing-switches "-al"
53 "*Switches passed to `ls' for dired. MUST contain the `l' option. 53 "*Switches passed to `ls' for Dired. MUST contain the `l' option.
54May contain all other options that don't contradict `-l'; 54May contain all other options that don't contradict `-l';
55may contain even `F', `b', `i' and `s'. See also the variable 55may contain even `F', `b', `i' and `s'. See also the variable
56`dired-ls-F-marks-symlinks' concerning the `F' switch. 56`dired-ls-F-marks-symlinks' concerning the `F' switch.
57On systems such as MS-DOS and MS-Windows, which use `ls' emulation in Lisp, 57On systems such as MS-DOS and MS-Windows, which use `ls' emulation in Lisp,
58some of the `ls' switches are not supported; see the doc string of 58some of the `ls' switches are not supported; see the doc string of
59`insert-directory' on ls-lisp.el for more details." 59`insert-directory' on `ls-lisp.el' for more details."
60 :type 'string 60 :type 'string
61 :group 'dired) 61 :group 'dired)
62 62
@@ -88,7 +88,7 @@ If nil, `dired-listing-switches' is used.")
88 88
89;;;###autoload 89;;;###autoload
90(defcustom dired-ls-F-marks-symlinks nil 90(defcustom dired-ls-F-marks-symlinks nil
91 "*Informs dired about how `ls -lF' marks symbolic links. 91 "*Informs Dired about how `ls -lF' marks symbolic links.
92Set this to t if `ls' (or whatever program is specified by 92Set this to t if `ls' (or whatever program is specified by
93`insert-directory-program') with `-lF' marks the symbolic link 93`insert-directory-program') with `-lF' marks the symbolic link
94itself with a trailing @ (usually the case under Ultrix). 94itself with a trailing @ (usually the case under Ultrix).
@@ -153,7 +153,7 @@ If a character, new links are unconditionally marked with that character."
153 153
154;;;###autoload 154;;;###autoload
155(defcustom dired-dwim-target nil 155(defcustom dired-dwim-target nil
156 "*If non-nil, dired tries to guess a default target directory. 156 "*If non-nil, Dired tries to guess a default target directory.
157This means: if there is a dired buffer displayed in the next window, 157This means: if there is a dired buffer displayed in the next window,
158use its current subdir, instead of the current subdir of this dired buffer. 158use its current subdir, instead of the current subdir of this dired buffer.
159 159
@@ -176,13 +176,13 @@ The target is used in the prompt for file copy, rename etc."
176;;; Hook variables 176;;; Hook variables
177 177
178(defcustom dired-load-hook nil 178(defcustom dired-load-hook nil
179 "Run after loading dired. 179 "Run after loading Dired.
180You can customize key bindings or load extensions with this." 180You can customize key bindings or load extensions with this."
181 :group 'dired 181 :group 'dired
182 :type 'hook) 182 :type 'hook)
183 183
184(defcustom dired-mode-hook nil 184(defcustom dired-mode-hook nil
185 "Run at the very end of dired-mode." 185 "Run at the very end of `dired-mode'."
186 :group 'dired 186 :group 'dired
187 :type 'hook) 187 :type 'hook)
188 188
@@ -229,8 +229,7 @@ This is what the do-commands look for, and what the mark-commands store.")
229(defvar dired-del-marker ?D 229(defvar dired-del-marker ?D
230 "Character used to flag files for deletion.") 230 "Character used to flag files for deletion.")
231 231
232(defvar dired-shrink-to-fit 232(defvar dired-shrink-to-fit t
233 t
234;; I see no reason ever to make this nil -- rms. 233;; I see no reason ever to make this nil -- rms.
235;; (> baud-rate search-slow-speed) 234;; (> baud-rate search-slow-speed)
236 "Non-nil means Dired shrinks the display buffer to fit the marked files.") 235 "Non-nil means Dired shrinks the display buffer to fit the marked files.")
@@ -241,7 +240,7 @@ This is what the do-commands look for, and what the mark-commands store.")
241 240
242;;;###autoload 241;;;###autoload
243(defvar dired-directory nil 242(defvar dired-directory nil
244 "The directory name or wildcard spec that this Dired directory lists. 243 "The directory name or wildcard spec that this dired directory lists.
245Local to each dired buffer. May be a list, in which case the car is the 244Local to each dired buffer. May be a list, in which case the car is the
246directory name and the cdr is the list of files to mention. 245directory name and the cdr is the list of files to mention.
247The directory name must be absolute, but need not be fully expanded.") 246The directory name must be absolute, but need not be fully expanded.")
@@ -295,7 +294,7 @@ of the line (\\n or \\r).
295Subexpression 2 must end right before the \\n or \\r.") 294Subexpression 2 must end right before the \\n or \\r.")
296 295
297(defgroup dired-faces nil 296(defgroup dired-faces nil
298 "Faces used by dired." 297 "Faces used by Dired."
299 :group 'dired 298 :group 'dired
300 :group 'faces) 299 :group 'faces)
301 300
@@ -598,7 +597,7 @@ list of files to make directory entries for.
598You can move around in it with the usual commands. 597You can move around in it with the usual commands.
599You can flag files for deletion with \\[dired-flag-file-deletion] and then 598You can flag files for deletion with \\[dired-flag-file-deletion] and then
600delete them by typing \\[dired-do-flagged-delete]. 599delete them by typing \\[dired-do-flagged-delete].
601Type \\[describe-mode] after entering dired for more info. 600Type \\[describe-mode] after entering Dired for more info.
602 601
603If DIRNAME is already in a dired buffer, that buffer is used without refresh." 602If DIRNAME is already in a dired buffer, that buffer is used without refresh."
604 ;; Cannot use (interactive "D") because of wildcards. 603 ;; Cannot use (interactive "D") because of wildcards.
@@ -911,7 +910,7 @@ BEG..END is the line where the file info is located."
911 (move-to-column curcol) 910 (move-to-column curcol)
912 (when (looking-at 911 (when (looking-at
913 (concat 912 (concat
914 (if (eq (char-before) ?\ ) " *" "[^ ]* *") 913 (if (eq (char-before) ?\s) " *" "[^ ]* *")
915 (if num-align "[0-9][^ ]*"))) 914 (if num-align "[0-9][^ ]*")))
916 (- (match-end 0) (match-beginning 0))))) 915 (- (match-end 0) (match-beginning 0)))))
917 ;; Now, the number of spaces to insert is align-pt-offset 916 ;; Now, the number of spaces to insert is align-pt-offset
@@ -1020,7 +1019,7 @@ If HDR is non-nil, insert a header line with the directory name."
1020 1019
1021(defun dired-revert (&optional arg noconfirm) 1020(defun dired-revert (&optional arg noconfirm)
1022 "Reread the dired buffer. 1021 "Reread the dired buffer.
1023Must also be called after dired-actual-switches have changed. 1022Must also be called after `dired-actual-switches' have changed.
1024Should not fail even on completely garbaged buffers. 1023Should not fail even on completely garbaged buffers.
1025Preserves old cursor, marks/flags, hidden-p." 1024Preserves old cursor, marks/flags, hidden-p."
1026 (widen) ; just in case user narrowed 1025 (widen) ; just in case user narrowed
@@ -1500,12 +1499,12 @@ Type \\[dired-find-file-other-window] to find file or dired directory in Other w
1500Type \\[dired-maybe-insert-subdir] to Insert a subdirectory in this buffer. 1499Type \\[dired-maybe-insert-subdir] to Insert a subdirectory in this buffer.
1501Type \\[dired-do-rename] to Rename a file or move the marked files to another directory. 1500Type \\[dired-do-rename] to Rename a file or move the marked files to another directory.
1502Type \\[dired-do-copy] to Copy files. 1501Type \\[dired-do-copy] to Copy files.
1503Type \\[dired-sort-toggle-or-edit] to toggle sorting by name/date or change the `ls' switches. 1502Type \\[dired-sort-toggle-or-edit] to toggle Sorting by name/date or change the `ls' switches.
1504Type \\[revert-buffer] to read all currently expanded directories again. 1503Type \\[revert-buffer] to read all currently expanded directories aGain.
1505 This retains all marks and hides subdirs again that were hidden before. 1504 This retains all marks and hides subdirs again that were hidden before.
1506SPC and DEL can be used to move down and up by lines. 1505SPC and DEL can be used to move down and up by lines.
1507 1506
1508If dired ever gets confused, you can either type \\[revert-buffer] \ 1507If Dired ever gets confused, you can either type \\[revert-buffer] \
1509to read the 1508to read the
1510directories again, type \\[dired-do-redisplay] \ 1509directories again, type \\[dired-do-redisplay] \
1511to relist a single or the marked files or a 1510to relist a single or the marked files or a
@@ -1575,7 +1574,7 @@ Keybindings:
1575;; Idiosyncratic dired commands that don't deal with marks. 1574;; Idiosyncratic dired commands that don't deal with marks.
1576 1575
1577(defun dired-summary () 1576(defun dired-summary ()
1578 "Summarize basic Dired commands and show recent Dired errors." 1577 "Summarize basic Dired commands and show recent dired errors."
1579 (interactive) 1578 (interactive)
1580 (dired-why) 1579 (dired-why)
1581 ;>> this should check the key-bindings and use substitute-command-keys if non-standard 1580 ;>> this should check the key-bindings and use substitute-command-keys if non-standard
@@ -1590,7 +1589,7 @@ You can use it to recover marks, killed lines or subdirs."
1590 (let (buffer-read-only) 1589 (let (buffer-read-only)
1591 (undo)) 1590 (undo))
1592 (dired-build-subdir-alist) 1591 (dired-build-subdir-alist)
1593 (message "Change in Dired buffer undone. 1592 (message "Change in dired buffer undone.
1594Actual changes in files cannot be undone by Emacs.")) 1593Actual changes in files cannot be undone by Emacs."))
1595 1594
1596(defun dired-next-line (arg) 1595(defun dired-next-line (arg)
@@ -1654,7 +1653,7 @@ Creates a buffer if necessary."
1654 file-name 1653 file-name
1655 (if (file-symlink-p file-name) 1654 (if (file-symlink-p file-name)
1656 (error "File is a symlink to a nonexistent target") 1655 (error "File is a symlink to a nonexistent target")
1657 (error "File no longer exists; type `g' to update Dired buffer"))))) 1656 (error "File no longer exists; type `g' to update dired buffer")))))
1658 1657
1659;; Force `f' rather than `e' in the mode doc: 1658;; Force `f' rather than `e' in the mode doc:
1660(defalias 'dired-advertised-find-file 'dired-find-file) 1659(defalias 'dired-advertised-find-file 'dired-find-file)
@@ -1696,7 +1695,7 @@ Creates a buffer if necessary."
1696 (find-file-other-window (file-name-sans-versions file t))))) 1695 (find-file-other-window (file-name-sans-versions file t)))))
1697 1696
1698(defun dired-view-file () 1697(defun dired-view-file ()
1699 "In Dired, examine a file in view mode, returning to dired when done. 1698 "In Dired, examine a file in view mode, returning to Dired when done.
1700When file is a directory, show it in this buffer if it is inserted. 1699When file is a directory, show it in this buffer if it is inserted.
1701Otherwise, display it in another buffer." 1700Otherwise, display it in another buffer."
1702 (interactive) 1701 (interactive)
@@ -1976,7 +1975,7 @@ Return the position of the beginning of the filename, or nil if none found."
1976 "Copy names of marked (or next ARG) files into the kill ring. 1975 "Copy names of marked (or next ARG) files into the kill ring.
1977The names are separated by a space. 1976The names are separated by a space.
1978With a zero prefix arg, use the absolute file name of each marked file. 1977With a zero prefix arg, use the absolute file name of each marked file.
1979With \\[universal-argument], use the file name relative to the Dired buffer's 1978With \\[universal-argument], use the file name relative to the dired buffer's
1980`default-directory'. (This still may contain slashes if in a subdirectory.) 1979`default-directory'. (This still may contain slashes if in a subdirectory.)
1981 1980
1982If on a subdir headerline, use absolute subdirname instead; 1981If on a subdir headerline, use absolute subdirname instead;
@@ -2361,7 +2360,7 @@ Anything else means ask for each directory."
2361(defun dired-delete-file (file &optional recursive) "\ 2360(defun dired-delete-file (file &optional recursive) "\
2362Delete FILE or directory (possibly recursively if optional RECURSIVE is true.) 2361Delete FILE or directory (possibly recursively if optional RECURSIVE is true.)
2363RECURSIVE determines what to do with a non-empty directory. If RECURSIVE is: 2362RECURSIVE determines what to do with a non-empty directory. If RECURSIVE is:
2364Nil, do not delete. 2363nil, do not delete.
2365`always', delete recursively without asking. 2364`always', delete recursively without asking.
2366`top', ask for each directory at top level. 2365`top', ask for each directory at top level.
2367Anything else, ask for each sub-directory." 2366Anything else, ask for each sub-directory."
@@ -2554,7 +2553,7 @@ if there are no flagged files."
2554 ))) 2553 )))
2555 2554
2556(defvar dired-no-confirm nil 2555(defvar dired-no-confirm nil
2557 "A list of symbols for commands dired should not confirm. 2556 "A list of symbols for commands Dired should not confirm.
2558Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress', 2557Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
2559`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink', 2558`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
2560`touch' and `uncompress'.") 2559`touch' and `uncompress'.")
@@ -2891,7 +2890,7 @@ A prefix argument says to unflag those files instead."
2891 "Flag all backup files (names ending with `~') for deletion. 2890 "Flag all backup files (names ending with `~') for deletion.
2892With prefix argument, unflag these files." 2891With prefix argument, unflag these files."
2893 (interactive "P") 2892 (interactive "P")
2894 (let ((dired-marker-char (if unflag-p ?\ dired-del-marker))) 2893 (let ((dired-marker-char (if unflag-p ?\s dired-del-marker)))
2895 (dired-mark-if 2894 (dired-mark-if
2896 ;; Don't call backup-file-name-p unless the last character looks like 2895 ;; Don't call backup-file-name-p unless the last character looks like
2897 ;; it might be the end of a backup file name. This isn't very general, 2896 ;; it might be the end of a backup file name. This isn't very general,
@@ -2925,7 +2924,7 @@ OLD and NEW are both characters used to mark files."
2925 (save-excursion 2924 (save-excursion
2926 (goto-char (point-min)) 2925 (goto-char (point-min))
2927 (while (search-forward string nil t) 2926 (while (search-forward string nil t)
2928 (if (if (= old ?\ ) 2927 (if (if (= old ?\s)
2929 (save-match-data 2928 (save-match-data
2930 (dired-get-filename 'no-dir t)) 2929 (dired-get-filename 'no-dir t))
2931 t) 2930 t)
@@ -2933,7 +2932,7 @@ OLD and NEW are both characters used to mark files."
2933 (match-end 0) old new))))))) 2932 (match-end 0) old new)))))))
2934 2933
2935(defun dired-unmark-all-marks () 2934(defun dired-unmark-all-marks ()
2936 "Remove all marks from all files in the Dired buffer." 2935 "Remove all marks from all files in the dired buffer."
2937 (interactive) 2936 (interactive)
2938 (dired-unmark-all-files ?\r)) 2937 (dired-unmark-all-files ?\r))
2939 2938
@@ -2961,7 +2960,7 @@ Type SPC or `y' to unmark one file, DEL or `n' to skip to next,
2961 (dired-query 'query "Unmark file `%s'? " 2960 (dired-query 'query "Unmark file `%s'? "
2962 file)))) 2961 file))))
2963 (progn (subst-char-in-region (1- (point)) (point) 2962 (progn (subst-char-in-region (1- (point)) (point)
2964 (preceding-char) ?\ ) 2963 (preceding-char) ?\s)
2965 (setq count (1+ count))))) 2964 (setq count (1+ count)))))
2966 (message (if (= count 1) "1 mark removed" 2965 (message (if (= count 1) "1 mark removed"
2967 "%d marks removed") 2966 "%d marks removed")
@@ -3004,7 +3003,7 @@ Thus, use \\[backward-page] to find the beginning of a group of errors."
3004 (apply (function format) log args) 3003 (apply (function format) log args)
3005 log))) 3004 log)))
3006 ((bufferp log) 3005 ((bufferp log)
3007 (insert-buffer log)) 3006 (insert-buffer-substring log))
3008 ((eq t log) 3007 ((eq t log)
3009 (backward-page 1) 3008 (backward-page 1)
3010 (unless (bolp) 3009 (unless (bolp)
@@ -3048,15 +3047,15 @@ format, use `\\[universal-argument] \\[dired]'.")
3048(defvar dired-sort-by-date-regexp 3047(defvar dired-sort-by-date-regexp
3049 (concat "^-[^" dired-ls-sorting-switches 3048 (concat "^-[^" dired-ls-sorting-switches
3050 "]*t[^" dired-ls-sorting-switches "]*$") 3049 "]*t[^" dired-ls-sorting-switches "]*$")
3051 "Regexp recognized by dired to set `by date' mode.") 3050 "Regexp recognized by Dired to set `by date' mode.")
3052 3051
3053(defvar dired-sort-by-name-regexp 3052(defvar dired-sort-by-name-regexp
3054 (concat "^-[^t" dired-ls-sorting-switches "]+$") 3053 (concat "^-[^t" dired-ls-sorting-switches "]+$")
3055 "Regexp recognized by dired to set `by name' mode.") 3054 "Regexp recognized by Dired to set `by name' mode.")
3056 3055
3057(defvar dired-sort-inhibit nil 3056(defvar dired-sort-inhibit nil
3058 "Non-nil means the Dired sort command is disabled. 3057 "Non-nil means the Dired sort command is disabled.
3059The idea is to set this buffer-locally in special Dired buffers.") 3058The idea is to set this buffer-locally in special dired buffers.")
3060 3059
3061(defun dired-sort-set-modeline () 3060(defun dired-sort-set-modeline ()
3062 ;; Set modeline display according to dired-actual-switches. 3061 ;; Set modeline display according to dired-actual-switches.
@@ -3078,7 +3077,7 @@ The idea is to set this buffer-locally in special Dired buffers.")
3078With a prefix argument you can edit the current listing switches instead." 3077With a prefix argument you can edit the current listing switches instead."
3079 (interactive "P") 3078 (interactive "P")
3080 (when dired-sort-inhibit 3079 (when dired-sort-inhibit
3081 (error "Cannot sort this Dired buffer")) 3080 (error "Cannot sort this dired buffer"))
3082 (if arg 3081 (if arg
3083 (dired-sort-other 3082 (dired-sort-other
3084 (read-string "ls switches (must contain -l): " dired-actual-switches)) 3083 (read-string "ls switches (must contain -l): " dired-actual-switches))
@@ -3121,7 +3120,7 @@ With a prefix argument you can edit the current listing switches instead."
3121 (concat result (substring string start)))) 3120 (concat result (substring string start))))
3122 3121
3123(defun dired-sort-other (switches &optional no-revert) 3122(defun dired-sort-other (switches &optional no-revert)
3124 "Specify new ls SWITCHES for current dired buffer. 3123 "Specify new `ls' SWITCHES for current dired buffer.
3125Values matching `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp' 3124Values matching `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp'
3126set the minor mode accordingly, others appear literally in the mode line. 3125set the minor mode accordingly, others appear literally in the mode line.
3127With optional second arg NO-REVERT, don't refresh the listing afterwards." 3126With optional second arg NO-REVERT, don't refresh the listing afterwards."
@@ -3262,7 +3261,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
3262 ;; Directory name followed by list of files. 3261 ;; Directory name followed by list of files.
3263 (cons (desktop-file-name (car dired-directory) desktop-dirname) 3262 (cons (desktop-file-name (car dired-directory) desktop-dirname)
3264 (cdr dired-directory)) 3263 (cdr dired-directory))
3265 ;; Directory name, optionally with with shell wildcard. 3264 ;; Directory name, optionally with shell wildcard.
3266 (desktop-file-name dired-directory desktop-dirname)) 3265 (desktop-file-name dired-directory desktop-dirname))
3267 ;; Subdirectories in `dired-subdir-alist'. 3266 ;; Subdirectories in `dired-subdir-alist'.
3268 (cdr 3267 (cdr
@@ -3277,7 +3276,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
3277 desktop-buffer-misc) 3276 desktop-buffer-misc)
3278 "Restore a dired buffer specified in a desktop file." 3277 "Restore a dired buffer specified in a desktop file."
3279 ;; First element of `desktop-buffer-misc' is the value of `dired-directory'. 3278 ;; First element of `desktop-buffer-misc' is the value of `dired-directory'.
3280 ;; This value is a directory name, optionally with with shell wildcard or 3279 ;; This value is a directory name, optionally with shell wildcard or
3281 ;; a directory name followed by list of files. 3280 ;; a directory name followed by list of files.
3282 (let* ((dired-dir (car desktop-buffer-misc)) 3281 (let* ((dired-dir (car desktop-buffer-misc))
3283 (dir (if (consp dired-dir) (car dired-dir) dired-dir))) 3282 (dir (if (consp dired-dir) (car dired-dir) dired-dir)))
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el
index 5ae76f91316..e9bcab6e4e8 100644
--- a/lisp/dirtrack.el
+++ b/lisp/dirtrack.el
@@ -133,8 +133,8 @@
133(defcustom dirtrack-list (list "^emacs \\([a-zA-Z]:.*\\)>" 1) 133(defcustom dirtrack-list (list "^emacs \\([a-zA-Z]:.*\\)>" 1)
134 "*List for directory tracking. 134 "*List for directory tracking.
135First item is a regexp that describes where to find the path in a prompt. 135First item is a regexp that describes where to find the path in a prompt.
136Second is a number, the regexp group to match. Optional third item is 136Second is a number, the regexp group to match. Optional third item is
137whether the prompt is multi-line. If nil or omitted, prompt is assumed to 137whether the prompt is multi-line. If nil or omitted, prompt is assumed to
138be on a single line." 138be on a single line."
139 :group 'dirtrack 139 :group 'dirtrack
140 :type '(sexp (regexp :tag "Prompt Expression") 140 :type '(sexp (regexp :tag "Prompt Expression")
diff --git a/lisp/ediff-diff.el b/lisp/ediff-diff.el
index 6d6b36692bc..ef859eb9b20 100644
--- a/lisp/ediff-diff.el
+++ b/lisp/ediff-diff.el
@@ -30,6 +30,7 @@
30;; compiler pacifier 30;; compiler pacifier
31(defvar ediff-default-variant) 31(defvar ediff-default-variant)
32(defvar null-device) 32(defvar null-device)
33(defvar longlines-mode)
33 34
34(eval-when-compile 35(eval-when-compile
35 (let ((load-path (cons (expand-file-name ".") load-path))) 36 (let ((load-path (cons (expand-file-name ".") load-path)))
diff --git a/lisp/ediff.el b/lisp/ediff.el
index f842e9dec6c..1bf52b1c59f 100644
--- a/lisp/ediff.el
+++ b/lisp/ediff.el
@@ -1357,11 +1357,13 @@ buffer. If odd -- assume it is in a file."
1357 1357
1358;;;###autoload 1358;;;###autoload
1359(defun ediff-patch-buffer (&optional arg patch-buf) 1359(defun ediff-patch-buffer (&optional arg patch-buf)
1360 "Run Ediff by patching BUFFER-NAME. 1360 "Run Ediff by patching the buffer specified at prompt.
1361Without prefix argument: asks if the patch is in some buffer and prompts for 1361Without the optional prefix ARG, asks if the patch is in some buffer and
1362the buffer or a file, depending on the answer. 1362prompts for the buffer or a file, depending on the answer.
1363With prefix arg=1: assumes the patch is in a file and prompts for the file. 1363With ARG=1, assumes the patch is in a file and prompts for the file.
1364With prefix arg=2: assumes the patch is in a buffer and prompts for the buffer." 1364With ARG=2, assumes the patch is in a buffer and prompts for the buffer.
1365PATCH-BUF is an optional argument, which specifies the buffer that contains the
1366patch. If not given, the user is prompted according to the prefix argument."
1365 (interactive "P") 1367 (interactive "P")
1366 (require 'ediff-ptch) 1368 (require 'ediff-ptch)
1367 (setq patch-buf 1369 (setq patch-buf
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 6aff16143b3..1094b1b8cb1 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -358,7 +358,7 @@ Elements of the list may be be:
358 358
359(defvar byte-compile-interactive-only-functions 359(defvar byte-compile-interactive-only-functions
360 '(beginning-of-buffer end-of-buffer replace-string replace-regexp 360 '(beginning-of-buffer end-of-buffer replace-string replace-regexp
361 insert-file) 361 insert-file insert-buffer insert-file-literally)
362 "List of commands that are not meant to be called from Lisp.") 362 "List of commands that are not meant to be called from Lisp.")
363 363
364(defvar byte-compile-not-obsolete-var nil 364(defvar byte-compile-not-obsolete-var nil
@@ -3355,12 +3355,12 @@ That command is designed for interactive use only" fn))
3355 "Execute forms in BODY, potentially guarded by CONDITION. 3355 "Execute forms in BODY, potentially guarded by CONDITION.
3356CONDITION is a variable whose value is a test in an `if' or `cond'. 3356CONDITION is a variable whose value is a test in an `if' or `cond'.
3357BODY is the code to compile first arm of the if or the body of the 3357BODY is the code to compile first arm of the if or the body of the
3358cond clause. If CONDITION's value is of the form `(foundp 'foo)' 3358cond clause. If CONDITION's value is of the form (fboundp 'foo)
3359or `(boundp 'foo)', the relevant warnings from BODY about foo 3359or (boundp 'foo), the relevant warnings from BODY about foo's
3360being undefined will be suppressed. 3360being undefined will be suppressed.
3361 3361
3362If CONDITION's value is `(featurep 'xemacs)', that suppresses all 3362If CONDITION's value is (not (featurep 'emacs)) or (featurep 'xemacs),
3363warnings during execution of BODY." 3363that suppresses all warnings during execution of BODY."
3364 (declare (indent 1) (debug t)) 3364 (declare (indent 1) (debug t))
3365 `(let* ((fbound 3365 `(let* ((fbound
3366 (if (eq 'fboundp (car-safe ,condition)) 3366 (if (eq 'fboundp (car-safe ,condition))
@@ -3379,8 +3379,10 @@ warnings during execution of BODY."
3379 (if bound 3379 (if bound
3380 (cons bound byte-compile-bound-variables) 3380 (cons bound byte-compile-bound-variables)
3381 byte-compile-bound-variables)) 3381 byte-compile-bound-variables))
3382 ;; Suppress all warnings, for code not used in Emacs.
3382 (byte-compile-warnings 3383 (byte-compile-warnings
3383 (if (equal ,condition '(featurep 'xemacs)) 3384 (if (member ,condition '((featurep 'xemacs)
3385 (not (featurep 'emacs))))
3384 nil byte-compile-warnings))) 3386 nil byte-compile-warnings)))
3385 (unwind-protect 3387 (unwind-protect
3386 (progn ,@body) 3388 (progn ,@body)
@@ -3409,7 +3411,8 @@ warnings during execution of BODY."
3409 (byte-compile-form (nth 2 form) for-effect)) 3411 (byte-compile-form (nth 2 form) for-effect))
3410 (byte-compile-goto 'byte-goto donetag) 3412 (byte-compile-goto 'byte-goto donetag)
3411 (byte-compile-out-tag elsetag) 3413 (byte-compile-out-tag elsetag)
3412 (byte-compile-body (cdr (cdr (cdr form))) for-effect) 3414 (byte-compile-maybe-guarded (list 'not clause)
3415 (byte-compile-body (cdr (cdr (cdr form))) for-effect))
3413 (byte-compile-out-tag donetag)))) 3416 (byte-compile-out-tag donetag))))
3414 (setq for-effect nil)) 3417 (setq for-effect nil))
3415 3418
@@ -3450,24 +3453,38 @@ warnings during execution of BODY."
3450 (args (cdr form))) 3453 (args (cdr form)))
3451 (if (null args) 3454 (if (null args)
3452 (byte-compile-form-do-effect t) 3455 (byte-compile-form-do-effect t)
3453 (while (cdr args) 3456 (byte-compile-and-recursion args failtag))))
3454 (byte-compile-form (car args)) 3457
3458;; Handle compilation of a nontrivial `and' call.
3459;; We use tail recursion so we can use byte-compile-maybe-guarded.
3460(defun byte-compile-and-recursion (rest failtag)
3461 (if (cdr rest)
3462 (progn
3463 (byte-compile-form (car rest))
3455 (byte-compile-goto-if nil for-effect failtag) 3464 (byte-compile-goto-if nil for-effect failtag)
3456 (setq args (cdr args))) 3465 (byte-compile-maybe-guarded (car rest)
3457 (byte-compile-form-do-effect (car args)) 3466 (byte-compile-and-recursion (cdr rest) failtag)))
3458 (byte-compile-out-tag failtag)))) 3467 (byte-compile-form-do-effect (car rest))
3468 (byte-compile-out-tag failtag)))
3459 3469
3460(defun byte-compile-or (form) 3470(defun byte-compile-or (form)
3461 (let ((wintag (byte-compile-make-tag)) 3471 (let ((wintag (byte-compile-make-tag))
3462 (args (cdr form))) 3472 (args (cdr form)))
3463 (if (null args) 3473 (if (null args)
3464 (byte-compile-form-do-effect nil) 3474 (byte-compile-form-do-effect nil)
3465 (while (cdr args) 3475 (byte-compile-or-recursion args wintag))))
3466 (byte-compile-form (car args)) 3476
3477;; Handle compilation of a nontrivial `or' call.
3478;; We use tail recursion so we can use byte-compile-maybe-guarded.
3479(defun byte-compile-or-recursion (rest wintag)
3480 (if (cdr rest)
3481 (progn
3482 (byte-compile-form (car rest))
3467 (byte-compile-goto-if t for-effect wintag) 3483 (byte-compile-goto-if t for-effect wintag)
3468 (setq args (cdr args))) 3484 (byte-compile-maybe-guarded (list 'not (car rest))
3469 (byte-compile-form-do-effect (car args)) 3485 (byte-compile-or-recursion (cdr rest) wintag)))
3470 (byte-compile-out-tag wintag)))) 3486 (byte-compile-form-do-effect (car rest))
3487 (byte-compile-out-tag wintag)))
3471 3488
3472(defun byte-compile-while (form) 3489(defun byte-compile-while (form)
3473 (let ((endtag (byte-compile-make-tag)) 3490 (let ((endtag (byte-compile-make-tag))
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 6534af050f3..2ed1f9b552b 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -430,32 +430,20 @@ be re-created.")
430 430
431;;; Compatibility 431;;; Compatibility
432;; 432;;
433(if (string-match "X[Ee]macs" emacs-version) 433(defalias 'checkdoc-make-overlay
434 (progn 434 (if (featurep 'xemacs) 'make-extent 'make-overlay))
435 (defalias 'checkdoc-make-overlay 'make-extent) 435(defalias 'checkdoc-overlay-put
436 (defalias 'checkdoc-overlay-put 'set-extent-property) 436 (if (featurep 'xemacs) 'set-extent-property 'overlay-put))
437 (defalias 'checkdoc-delete-overlay 'delete-extent) 437(defalias 'checkdoc-delete-overlay
438 (defalias 'checkdoc-overlay-start 'extent-start) 438 (if (featurep 'xemacs) 'delete-extent 'delete-overlay))
439 (defalias 'checkdoc-overlay-end 'extent-end) 439(defalias 'checkdoc-overlay-start
440 (defalias 'checkdoc-mode-line-update 'redraw-modeline) 440 (if (featurep 'xemacs) 'extent-start 'overlay-start))
441 (defalias 'checkdoc-call-eval-buffer 'eval-buffer) 441(defalias 'checkdoc-overlay-end
442 ) 442 (if (featurep 'xemacs) 'extent-end 'overlay-end))
443 (defalias 'checkdoc-make-overlay 'make-overlay) 443(defalias 'checkdoc-mode-line-update
444 (defalias 'checkdoc-overlay-put 'overlay-put) 444 (if (featurep 'xemacs) 'redraw-modeline 'force-mode-line-update))
445 (defalias 'checkdoc-delete-overlay 'delete-overlay) 445(defalias 'checkdoc-char=
446 (defalias 'checkdoc-overlay-start 'overlay-start) 446 (if (featurep 'xemacs) 'char= '=))
447 (defalias 'checkdoc-overlay-end 'overlay-end)
448 (defalias 'checkdoc-mode-line-update 'force-mode-line-update)
449 (defalias 'checkdoc-call-eval-buffer 'eval-current-buffer)
450 )
451
452;; Emacs 20s have MULE characters which don't equate to numbers.
453(if (fboundp 'char=)
454 (defalias 'checkdoc-char= 'char=)
455 (defalias 'checkdoc-char= '=))
456
457;; Read events, not characters
458(defalias 'checkdoc-read-event 'read-event)
459 447
460;;; User level commands 448;;; User level commands
461;; 449;;
@@ -628,7 +616,7 @@ style."
628 (goto-char (checkdoc-error-start (car (car err-list)))) 616 (goto-char (checkdoc-error-start (car (car err-list))))
629 (if (not (pos-visible-in-window-p)) 617 (if (not (pos-visible-in-window-p))
630 (recenter (- (window-height) 2))) 618 (recenter (- (window-height) 2)))
631 (setq c (checkdoc-read-event))) 619 (setq c (read-event)))
632 (if (not (integerp c)) (setq c ??)) 620 (if (not (integerp c)) (setq c ??))
633 (cond 621 (cond
634 ;; Exit condition 622 ;; Exit condition
@@ -844,7 +832,7 @@ Evaluation is done first because good documentation for something that
844doesn't work is just not useful. Comments, doc strings, and rogue 832doesn't work is just not useful. Comments, doc strings, and rogue
845spacing are all verified." 833spacing are all verified."
846 (interactive) 834 (interactive)
847 (checkdoc-call-eval-buffer nil) 835 (eval-buffer nil)
848 (checkdoc-current-buffer t)) 836 (checkdoc-current-buffer t))
849 837
850;;;###autoload 838;;;###autoload
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index bc60bee0374..95d1846b30b 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2384,6 +2384,7 @@ The type name can then be used in `typecase', `check-type', etc."
2384 (cl-make-type-test val (funcall (get type 'cl-deftype-handler)))) 2384 (cl-make-type-test val (funcall (get type 'cl-deftype-handler))))
2385 ((memq type '(nil t)) type) 2385 ((memq type '(nil t)) type)
2386 ((eq type 'null) `(null ,val)) 2386 ((eq type 'null) `(null ,val))
2387 ((eq type 'atom) `(atom ,val))
2387 ((eq type 'float) `(floatp-safe ,val)) 2388 ((eq type 'float) `(floatp-safe ,val))
2388 ((eq type 'real) `(numberp ,val)) 2389 ((eq type 'real) `(numberp ,val))
2389 ((eq type 'fixnum) `(integerp ,val)) 2390 ((eq type 'fixnum) `(integerp ,val))
@@ -2398,7 +2399,7 @@ The type name can then be used in `typecase', `check-type', etc."
2398 (cl-make-type-test val (apply (get (car type) 'cl-deftype-handler) 2399 (cl-make-type-test val (apply (get (car type) 'cl-deftype-handler)
2399 (cdr type)))) 2400 (cdr type))))
2400 ((memq (car type) '(integer float real number)) 2401 ((memq (car type) '(integer float real number))
2401 (delq t (and (cl-make-type-test val (car type)) 2402 (delq t (list 'and (cl-make-type-test val (car type))
2402 (if (memq (cadr type) '(* nil)) t 2403 (if (memq (cadr type) '(* nil)) t
2403 (if (consp (cadr type)) (list '> val (caadr type)) 2404 (if (consp (cadr type)) (list '> val (caadr type))
2404 (list '>= val (cadr type)))) 2405 (list '>= val (cadr type))))
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index ef8e3288bbc..764f58bcd23 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -96,7 +96,7 @@
96;;; PRIVATE: defsubst must be defined before they are first used 96;;; PRIVATE: defsubst must be defined before they are first used
97 97
98(defsubst derived-mode-hook-name (mode) 98(defsubst derived-mode-hook-name (mode)
99 "Construct the mode hook name based on mode name MODE." 99 "Construct a mode-hook name based on a MODE name."
100 (intern (concat (symbol-name mode) "-hook"))) 100 (intern (concat (symbol-name mode) "-hook")))
101 101
102(defsubst derived-mode-map-name (mode) 102(defsubst derived-mode-map-name (mode)
@@ -382,18 +382,11 @@ Always merge its parent into it, since the merge is non-destructive."
382 (derived-mode-merge-abbrev-tables old-table new-table) 382 (derived-mode-merge-abbrev-tables old-table new-table)
383 (setq local-abbrev-table new-table))) 383 (setq local-abbrev-table new-table)))
384 384
385;;;(defun derived-mode-run-setup-function (mode)
386;;; "Run the setup function if it exists."
387
388;;; (let ((fname (derived-mode-setup-function-name mode)))
389;;; (if (fboundp fname)
390;;; (funcall fname))))
391
392(defun derived-mode-run-hooks (mode) 385(defun derived-mode-run-hooks (mode)
393 "Run the mode hook for MODE." 386 "Run the mode hook for MODE."
394 (let ((hooks-name (derived-mode-hook-name mode))) 387 (let ((hooks-name (derived-mode-hook-name mode)))
395 (if (boundp hooks-name) 388 (if (boundp hooks-name)
396 (run-hooks hooks-name)))) 389 (run-hooks hooks-name))))
397 390
398;; Functions to merge maps and tables. 391;; Functions to merge maps and tables.
399 392
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 3b4662277b6..09abd272e53 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -142,8 +142,10 @@ For example, you could write
142 (let* ((mode-name (symbol-name mode)) 142 (let* ((mode-name (symbol-name mode))
143 (pretty-name (easy-mmode-pretty-mode-name mode lighter)) 143 (pretty-name (easy-mmode-pretty-mode-name mode lighter))
144 (globalp nil) 144 (globalp nil)
145 (set nil)
145 (initialize nil) 146 (initialize nil)
146 (group nil) 147 (group nil)
148 (type nil)
147 (extra-args nil) 149 (extra-args nil)
148 (extra-keywords nil) 150 (extra-keywords nil)
149 (require t) 151 (require t)
@@ -160,8 +162,10 @@ For example, you could write
160 (:lighter (setq lighter (pop body))) 162 (:lighter (setq lighter (pop body)))
161 (:global (setq globalp (pop body))) 163 (:global (setq globalp (pop body)))
162 (:extra-args (setq extra-args (pop body))) 164 (:extra-args (setq extra-args (pop body)))
165 (:set (setq set (list :set (pop body))))
163 (:initialize (setq initialize (list :initialize (pop body)))) 166 (:initialize (setq initialize (list :initialize (pop body))))
164 (:group (setq group (nconc group (list :group (pop body))))) 167 (:group (setq group (nconc group (list :group (pop body)))))
168 (:type (setq type (list :type (pop body))))
165 (:require (setq require (pop body))) 169 (:require (setq require (pop body)))
166 (:keymap (setq keymap (pop body))) 170 (:keymap (setq keymap (pop body)))
167 (t (push keyw extra-keywords) (push (pop body) extra-keywords)))) 171 (t (push keyw extra-keywords) (push (pop body) extra-keywords))))
@@ -169,9 +173,10 @@ For example, you could write
169 (setq keymap-sym (if (and keymap (symbolp keymap)) keymap 173 (setq keymap-sym (if (and keymap (symbolp keymap)) keymap
170 (intern (concat mode-name "-map")))) 174 (intern (concat mode-name "-map"))))
171 175
176 (unless set (setq set '(:set 'custom-set-minor-mode)))
177
172 (unless initialize 178 (unless initialize
173 (setq initialize 179 (setq initialize '(:initialize 'custom-initialize-default)))
174 '(:initialize 'custom-initialize-default)))
175 180
176 (unless group 181 (unless group
177 ;; We might as well provide a best-guess default group. 182 ;; We might as well provide a best-guess default group.
@@ -179,6 +184,8 @@ For example, you could write
179 `(:group ',(intern (replace-regexp-in-string 184 `(:group ',(intern (replace-regexp-in-string
180 "-mode\\'" "" mode-name))))) 185 "-mode\\'" "" mode-name)))))
181 186
187 (unless type (setq type '(:type 'boolean)))
188
182 `(progn 189 `(progn
183 ;; Define the variable to enable or disable the mode. 190 ;; Define the variable to enable or disable the mode.
184 ,(if (not globalp) 191 ,(if (not globalp)
@@ -201,10 +208,10 @@ See the command `%s' for a description of this minor-mode."))
201 208
202 `(defcustom ,mode ,init-value 209 `(defcustom ,mode ,init-value
203 ,(format base-doc-string pretty-name mode mode) 210 ,(format base-doc-string pretty-name mode mode)
204 :set 'custom-set-minor-mode 211 ,@set
205 ,@initialize 212 ,@initialize
206 ,@group 213 ,@group
207 :type 'boolean 214 ,@type
208 ,@(cond 215 ,@(cond
209 ((not (and curfile require)) nil) 216 ((not (and curfile require)) nil)
210 ((not (eq require t)) `(:require ,require))) 217 ((not (eq require t)) `(:require ,require)))
@@ -260,12 +267,7 @@ With zero or negative ARG turn mode off.
260 (add-minor-mode ',mode ',lighter 267 (add-minor-mode ',mode ',lighter
261 ,(if keymap keymap-sym 268 ,(if keymap keymap-sym
262 `(if (boundp ',keymap-sym) 269 `(if (boundp ',keymap-sym)
263 (symbol-value ',keymap-sym)))) 270 (symbol-value ',keymap-sym)))))))
264
265 ;; If the mode is global, call the function according to the default.
266 ,(if globalp
267 `(if (and load-file-name (not (equal ,init-value ,mode)))
268 (eval-after-load load-file-name '(,mode (if ,mode 1 -1))))))))
269 271
270;;; 272;;;
271;;; make global minor mode 273;;; make global minor mode
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 1a592709819..f80e9f36dd0 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -243,9 +243,9 @@ Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol
243 `(put (quote ,symbol) 'edebug-form-spec (quote ,spec))) 243 `(put (quote ,symbol) 'edebug-form-spec (quote ,spec)))
244 244
245(defmacro def-edebug-form-spec (symbol spec-form) 245(defmacro def-edebug-form-spec (symbol spec-form)
246 "For compatibility with old version. Use `def-edebug-spec' instead." 246 "For compatibility with old version."
247 (message "Obsolete: use def-edebug-spec instead.")
248 (def-edebug-spec symbol (eval spec-form))) 247 (def-edebug-spec symbol (eval spec-form)))
248(make-obsolete 'def-edebug-form-spec 'def-edebug-spec "22.1")
249 249
250(defun get-edebug-spec (symbol) 250(defun get-edebug-spec (symbol)
251 ;; Get the spec of symbol resolving all indirection. 251 ;; Get the spec of symbol resolving all indirection.
@@ -3651,9 +3651,12 @@ Return the result of the last expression."
3651;; Replace printing functions. 3651;; Replace printing functions.
3652 3652
3653;; obsolete names 3653;; obsolete names
3654(defalias 'edebug-install-custom-print-funcs 'edebug-install-custom-print) 3654(define-obsolete-function-alias 'edebug-install-custom-print-funcs
3655(defalias 'edebug-reset-print-funcs 'edebug-uninstall-custom-print) 3655 'edebug-install-custom-print "22.1")
3656(defalias 'edebug-uninstall-custom-print-funcs 'edebug-uninstall-custom-print) 3656(define-obsolete-function-alias 'edebug-reset-print-funcs
3657 'edebug-uninstall-custom-print "22.1")
3658(define-obsolete-function-alias 'edebug-uninstall-custom-print-funcs
3659 'edebug-uninstall-custom-print "22.1")
3657 3660
3658(defun edebug-install-custom-print () 3661(defun edebug-install-custom-print ()
3659 "Replace print functions used by Edebug with custom versions." 3662 "Replace print functions used by Edebug with custom versions."
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 4c25acf49c3..945acaac73e 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -62,7 +62,7 @@
62 ;; (define-derived-mode foo ...), (define-minor-mode foo) 62 ;; (define-derived-mode foo ...), (define-minor-mode foo)
63 (concat 63 (concat
64 "^\\s-*(\\(def\\(ine-skeleton\\|ine-generic-mode\\|ine-derived-mode\\|\ 64 "^\\s-*(\\(def\\(ine-skeleton\\|ine-generic-mode\\|ine-derived-mode\\|\
65ine-minor-mode\\|un-cvs-mode\\|foo\\|[^cfgv]\\w+\\*?\\)\ 65ine-minor-mode\\|ine-compilation-mode\\|un-cvs-mode\\|foo\\|[^cfgv]\\w+\\*?\\)\
66\\|easy-mmode-define-global-mode\\|menu-bar-make-toggle\\)" 66\\|easy-mmode-define-global-mode\\|menu-bar-make-toggle\\)"
67 find-function-space-re 67 find-function-space-re
68 "\\('\\|\(quote \\)?%s\\(\\s-\\|$\\|\(\\|\)\\)") 68 "\\('\\|\(quote \\)?%s\\(\\s-\\|$\\|\(\\|\)\\)")
diff --git a/lisp/emacs-lisp/find-gc.el b/lisp/emacs-lisp/find-gc.el
index 1606395c673..8d3b0b02a4e 100644
--- a/lisp/emacs-lisp/find-gc.el
+++ b/lisp/emacs-lisp/find-gc.el
@@ -23,56 +23,86 @@
23 23
24;;; Commentary: 24;;; Commentary:
25 25
26;; Produce in unsafe-list the set of all functions that may invoke GC. 26;; Produce in find-gc-unsafe-list the set of all functions that may invoke GC.
27;; This expects the Emacs sources to live in emacs-source-directory. 27;; This expects the Emacs sources to live in find-gc-source-directory.
28;; It creates a temporary working directory /tmp/esrc. 28;; It creates a temporary working directory /tmp/esrc.
29 29
30;;; Code: 30;;; Code:
31 31
32(defvar find-gc-unsafe-list nil
33 "The list of unsafe functions is placed here by `find-gc-unsafe'.")
34
35(defvar find-gc-source-directory)
36
37(defvar find-gc-subrs-callers nil
38 "Alist of users of subrs, from GC testing.
39Each entry has the form (FUNCTION . FUNCTIONS-THAT-CALL-IT).")
40
41(defvar find-gc-subrs-called nil
42 "Alist of subrs called, in GC testing.
43Each entry has the form (FUNCTION . FUNCTIONS-IT-CALLS).")
44
45
46;;; Functions on this list are safe, even if they appear to be able
47;;; to call the target.
48
49(defvar find-gc-noreturn-list '(Fsignal Fthrow wrong_type_argument))
50
51;;; This was originally generated directory-files, but there were
52;;; too many files there that were not actually compiled. The
53;;; list below was created for a HP-UX 7.0 system.
54
55(defvar find-gc-source-files
56 '("dispnew.c" "scroll.c" "xdisp.c" "window.c"
57 "term.c" "cm.c" "emacs.c" "keyboard.c" "macros.c"
58 "keymap.c" "sysdep.c" "buffer.c" "filelock.c"
59 "insdel.c" "marker.c" "minibuf.c" "fileio.c"
60 "dired.c" "filemode.c" "cmds.c" "casefiddle.c"
61 "indent.c" "search.c" "regex.c" "undo.c"
62 "alloc.c" "data.c" "doc.c" "editfns.c"
63 "callint.c" "eval.c" "fns.c" "print.c" "lread.c"
64 "abbrev.c" "syntax.c" "unexec.c"
65 "bytecode.c" "process.c" "callproc.c" "doprnt.c"
66 "x11term.c" "x11fns.c"))
67
68
32(defun find-gc-unsafe () 69(defun find-gc-unsafe ()
70 "Return a list of unsafe functions--that is, which can call GC.
71Also store it in `find-gc-unsafe'."
33 (trace-call-tree nil) 72 (trace-call-tree nil)
34 (trace-use-tree) 73 (trace-use-tree)
35 (find-unsafe-funcs 'Fgarbage_collect) 74 (find-unsafe-funcs 'Fgarbage_collect)
36 (setq unsafe-list (sort unsafe-list 75 (setq find-gc-unsafe-list
37 (function (lambda (x y) 76 (sort find-gc-unsafe-list
38 (string-lessp (car x) (car y)))))) 77 (function (lambda (x y)
78 (string-lessp (car x) (car y))))))
39) 79)
40 80
41(setq emacs-source-directory "/usr/gnu/src/dist/src")
42
43
44;;; This does a depth-first search to find all functions that can 81;;; This does a depth-first search to find all functions that can
45;;; ultimately call the function "target". The result is an a-list 82;;; ultimately call the function "target". The result is an a-list
46;;; in unsafe-list; the cars are the unsafe functions, and the cdrs 83;;; in find-gc-unsafe-list; the cars are the unsafe functions, and the cdrs
47;;; are (one of) the unsafe functions that these functions directly 84;;; are (one of) the unsafe functions that these functions directly
48;;; call. 85;;; call.
49 86
50(defun find-unsafe-funcs (target) 87(defun find-unsafe-funcs (target)
51 (setq unsafe-list (list (list target))) 88 (setq find-gc-unsafe-list (list (list target)))
52 (trace-unsafe target) 89 (trace-unsafe target)
53) 90)
54 91
55(defun trace-unsafe (func) 92(defun trace-unsafe (func)
56 (let ((used (assq func subrs-used))) 93 (let ((used (assq func find-gc-subrs-callers)))
57 (or used 94 (or used
58 (error "No subrs-used for %s" (car unsafe-list))) 95 (error "No find-gc-subrs-callers for %s" (car find-gc-unsafe-list)))
59 (while (setq used (cdr used)) 96 (while (setq used (cdr used))
60 (or (assq (car used) unsafe-list) 97 (or (assq (car used) find-gc-unsafe-list)
61 (memq (car used) noreturn-list) 98 (memq (car used) find-gc-noreturn-list)
62 (progn 99 (progn
63 (setq unsafe-list (cons (cons (car used) func) unsafe-list)) 100 (push (cons (car used) func) find-gc-unsafe-list)
64 (trace-unsafe (car used)))))) 101 (trace-unsafe (car used))))))
65) 102)
66 103
67 104
68;;; Functions on this list are safe, even if they appear to be able
69;;; to call the target.
70
71(setq noreturn-list '( Fsignal Fthrow wrong_type_argument ))
72
73 105
74;;; This produces an a-list of functions in subrs-called. The cdr of
75;;; each entry is a list of functions which the function in car calls.
76 106
77(defun trace-call-tree (&optional already-setup) 107(defun trace-call-tree (&optional already-setup)
78 (message "Setting up directories...") 108 (message "Setting up directories...")
@@ -83,12 +113,12 @@
83 (call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc") 113 (call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc")
84 (call-process "csh" nil nil nil "-c" 114 (call-process "csh" nil nil nil "-c"
85 (format "ln -s %s/*.[ch] /tmp/esrc" 115 (format "ln -s %s/*.[ch] /tmp/esrc"
86 emacs-source-directory)))) 116 find-gc-source-directory))))
87 (save-excursion 117 (save-excursion
88 (set-buffer (get-buffer-create "*Trace Call Tree*")) 118 (set-buffer (get-buffer-create "*Trace Call Tree*"))
89 (setq subrs-called nil) 119 (setq find-gc-subrs-called nil)
90 (let ((case-fold-search nil) 120 (let ((case-fold-search nil)
91 (files source-files) 121 (files find-gc-source-files)
92 name entry) 122 name entry)
93 (while files 123 (while files
94 (message "Compiling %s..." (car files)) 124 (message "Compiling %s..." (car files))
@@ -105,7 +135,7 @@
105 (match-end 0)))) 135 (match-end 0))))
106 (message "%s : %s" (car files) name) 136 (message "%s : %s" (car files) name)
107 (setq entry (list name) 137 (setq entry (list name)
108 subrs-called (cons entry subrs-called))) 138 find-gc-subrs-called (cons entry find-gc-subrs-called)))
109 (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"") 139 (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
110 (progn 140 (progn
111 (setq name (intern (buffer-substring (match-beginning 1) 141 (setq name (intern (buffer-substring (match-beginning 1)
@@ -117,34 +147,14 @@
117) 147)
118 148
119 149
120;;; This was originally generated directory-files, but there were
121;;; too many files there that were not actually compiled. The
122;;; list below was created for a HP-UX 7.0 system.
123
124(setq source-files '("dispnew.c" "scroll.c" "xdisp.c" "window.c"
125 "term.c" "cm.c" "emacs.c" "keyboard.c" "macros.c"
126 "keymap.c" "sysdep.c" "buffer.c" "filelock.c"
127 "insdel.c" "marker.c" "minibuf.c" "fileio.c"
128 "dired.c" "filemode.c" "cmds.c" "casefiddle.c"
129 "indent.c" "search.c" "regex.c" "undo.c"
130 "alloc.c" "data.c" "doc.c" "editfns.c"
131 "callint.c" "eval.c" "fns.c" "print.c" "lread.c"
132 "abbrev.c" "syntax.c" "unexec.c"
133 "bytecode.c" "process.c" "callproc.c" "doprnt.c"
134 "x11term.c" "x11fns.c"))
135
136
137;;; This produces an inverted a-list in subrs-used. The cdr of each
138;;; entry is a list of functions that call the function in car.
139
140(defun trace-use-tree () 150(defun trace-use-tree ()
141 (setq subrs-used (mapcar 'list (mapcar 'car subrs-called))) 151 (setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called)))
142 (let ((ptr subrs-called) 152 (let ((ptr find-gc-subrs-called)
143 p2 found) 153 p2 found)
144 (while ptr 154 (while ptr
145 (setq p2 (car ptr)) 155 (setq p2 (car ptr))
146 (while (setq p2 (cdr p2)) 156 (while (setq p2 (cdr p2))
147 (if (setq found (assq (car p2) subrs-used)) 157 (if (setq found (assq (car p2) find-gc-subrs-callers))
148 (setcdr found (cons (car (car ptr)) (cdr found))))) 158 (setcdr found (cons (car (car ptr)) (cdr found)))))
149 (setq ptr (cdr ptr)))) 159 (setq ptr (cdr ptr))))
150) 160)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 8469aec1362..88e6319709b 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -54,8 +54,9 @@
54 (modify-syntax-entry ?\t " " table) 54 (modify-syntax-entry ?\t " " table)
55 (modify-syntax-entry ?\f " " table) 55 (modify-syntax-entry ?\f " " table)
56 (modify-syntax-entry ?\n "> " table) 56 (modify-syntax-entry ?\n "> " table)
57 ;; Give CR the same syntax as newline, for selective-display. 57;;; This is probably obsolete since nowadays such features use overlays.
58 (modify-syntax-entry ?\^m "> " table) 58;;; ;; Give CR the same syntax as newline, for selective-display.
59;;; (modify-syntax-entry ?\^m "> " table)
59 (modify-syntax-entry ?\; "< " table) 60 (modify-syntax-entry ?\; "< " table)
60 (modify-syntax-entry ?` "' " table) 61 (modify-syntax-entry ?` "' " table)
61 (modify-syntax-entry ?' "' " table) 62 (modify-syntax-entry ?' "' " table)
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index 67a682358f4..bdfe79b3b6a 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -319,7 +319,8 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
319 ;; emacs/xemacs compatibility 319 ;; emacs/xemacs compatibility
320 (if (fboundp 'frame-parameter) 320 (if (fboundp 'frame-parameter)
321 (frame-parameter (selected-frame) 'display-type) 321 (frame-parameter (selected-frame) 'display-type)
322 (frame-property (selected-frame) 'display-type)))) 322 (if (fboundp 'frame-property)
323 (frame-property (selected-frame) 'display-type)))))
323 324
324(defsubst reb-lisp-syntax-p () 325(defsubst reb-lisp-syntax-p ()
325 "Return non-nil if RE Builder uses a Lisp syntax." 326 "Return non-nil if RE Builder uses a Lisp syntax."
@@ -331,10 +332,7 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
331 332
332;;; This is to help people find this in Apropos. 333;;; This is to help people find this in Apropos.
333;;;###autoload 334;;;###autoload
334(defun regexp-builder () 335(defalias 'regexp-builder 're-builder)
335 "Alias for `re-builder': Construct a regexp interactively."
336 (interactive)
337 (re-builder))
338 336
339;;;###autoload 337;;;###autoload
340(defun re-builder () 338(defun re-builder ()
@@ -610,7 +608,8 @@ optional fourth argument FORCE is non-nil."
610(defun reb-cook-regexp (re) 608(defun reb-cook-regexp (re)
611 "Return RE after processing it according to `reb-re-syntax'." 609 "Return RE after processing it according to `reb-re-syntax'."
612 (cond ((eq reb-re-syntax 'lisp-re) 610 (cond ((eq reb-re-syntax 'lisp-re)
613 (lre-compile-string (eval (car (read-from-string re))))) 611 (if (fboundp 'lre-compile-string)
612 (lre-compile-string (eval (car (read-from-string re))))))
614 ((eq reb-re-syntax 'sregex) 613 ((eq reb-re-syntax 'sregex)
615 (apply 'sregex (eval (car (read-from-string re))))) 614 (apply 'sregex (eval (car (read-from-string re)))))
616 ((eq reb-re-syntax 'rx) 615 ((eq reb-re-syntax 'rx)
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index 008a3c3ba49..49979ce3b78 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -62,7 +62,7 @@
62;; If you really need to perform a command which starts with one of 62;; If you really need to perform a command which starts with one of
63;; the prefix keys even when the region is active, you have three options: 63;; the prefix keys even when the region is active, you have three options:
64;; - press the prefix key twice very quickly (within 0.2 seconds), 64;; - press the prefix key twice very quickly (within 0.2 seconds),
65;; - press the prefix key and the following key within 0.2 seconds), or 65;; - press the prefix key and the following key within 0.2 seconds, or
66;; - use the SHIFT key with the prefix key, i.e. C-X or C-C 66;; - use the SHIFT key with the prefix key, i.e. C-X or C-C
67;; 67;;
68;; This behaviour can be customized via the 68;; This behaviour can be customized via the
@@ -274,7 +274,7 @@
274(defcustom cua-enable-cua-keys t 274(defcustom cua-enable-cua-keys t
275 "*Enable using C-z, C-x, C-c, and C-v for undo, cut, copy, and paste. 275 "*Enable using C-z, C-x, C-c, and C-v for undo, cut, copy, and paste.
276If the value is t, these mappings are always enabled. If the value is 276If the value is t, these mappings are always enabled. If the value is
277'shift, these keys are only enabled if the last region was marked with 277`shift', these keys are only enabled if the last region was marked with
278a shifted movement key. If the value is nil, these keys are never 278a shifted movement key. If the value is nil, these keys are never
279enabled." 279enabled."
280 :type '(choice (const :tag "Disabled" nil) 280 :type '(choice (const :tag "Disabled" nil)
@@ -314,9 +314,9 @@ If the value is nil, use a shifted prefix key to inhibit the override."
314 "*If non-nil, registers are supported via numeric prefix arg. 314 "*If non-nil, registers are supported via numeric prefix arg.
315If the value is t, any numeric prefix arg in the range 0 to 9 will be 315If the value is t, any numeric prefix arg in the range 0 to 9 will be
316interpreted as a register number. 316interpreted as a register number.
317If the value is not-ctrl-u, using C-u to enter a numeric prefix is not 317If the value is `not-ctrl-u', using C-u to enter a numeric prefix is not
318interpreted as a register number. 318interpreted as a register number.
319If the value is ctrl-u-only, only numeric prefix entered with C-u is 319If the value is `ctrl-u-only', only numeric prefix entered with C-u is
320interpreted as a register number." 320interpreted as a register number."
321 :type '(choice (const :tag "Disabled" nil) 321 :type '(choice (const :tag "Disabled" nil)
322 (const :tag "Enabled, but C-u arg is not a register" not-ctrl-u) 322 (const :tag "Enabled, but C-u arg is not a register" not-ctrl-u)
@@ -331,7 +331,7 @@ interpreted as a register number."
331 331
332(defcustom cua-use-hyper-key nil 332(defcustom cua-use-hyper-key nil
333 "*If non-nil, bind rectangle commands to H-... instead of M-.... 333 "*If non-nil, bind rectangle commands to H-... instead of M-....
334If set to 'also, toggle region command is also on C-return. 334If set to `also', toggle region command is also on C-return.
335Must be set prior to enabling CUA." 335Must be set prior to enabling CUA."
336 :type '(choice (const :tag "Meta key and C-return" nil) 336 :type '(choice (const :tag "Meta key and C-return" nil)
337 (const :tag "Hyper key only" only) 337 (const :tag "Hyper key only" only)
@@ -362,7 +362,7 @@ managers, so try setting this to nil, if prefix override doesn't work."
362 "*If non-nil, rectangles have virtual straight edges. 362 "*If non-nil, rectangles have virtual straight edges.
363Note that although rectangles are always DISPLAYED with straight edges, the 363Note that although rectangles are always DISPLAYED with straight edges, the
364buffer is NOT modified, until you execute a command that actually modifies it. 364buffer is NOT modified, until you execute a command that actually modifies it.
365\[M-p] toggles this feature when a rectangle is active." 365M-p toggles this feature when a rectangle is active."
366 :type 'boolean 366 :type 'boolean
367 :group 'cua) 367 :group 'cua)
368 368
@@ -1060,118 +1060,122 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1060 1060
1061;;; Pre-command hook 1061;;; Pre-command hook
1062 1062
1063(defun cua--pre-command-handler-1 ()
1064 (let ((movement (eq (get this-command 'CUA) 'move)))
1065
1066 ;; Cancel prefix key timeout if user enters another key.
1067 (when cua--prefix-override-timer
1068 (if (timerp cua--prefix-override-timer)
1069 (cancel-timer cua--prefix-override-timer))
1070 (setq cua--prefix-override-timer nil))
1071
1072 ;; Handle shifted cursor keys and other movement commands.
1073 ;; If region is not active, region is activated if key is shifted.
1074 ;; If region is active, region is cancelled if key is unshifted (and region not started with C-SPC).
1075 ;; If rectangle is active, expand rectangle in specified direction and ignore the movement.
1076 (if movement
1077 (cond
1078 ((if window-system
1079 (memq 'shift (event-modifiers
1080 (aref (this-single-command-raw-keys) 0)))
1081 (or
1082 (memq 'shift (event-modifiers
1083 (aref (this-single-command-keys) 0)))
1084 ;; See if raw escape sequence maps to a shifted event, e.g. S-up or C-S-home.
1085 (and (boundp 'function-key-map)
1086 function-key-map
1087 (let ((ev (lookup-key function-key-map
1088 (this-single-command-raw-keys))))
1089 (and (vector ev)
1090 (symbolp (setq ev (aref ev 0)))
1091 (string-match "S-" (symbol-name ev)))))))
1092 (unless mark-active
1093 (push-mark-command nil t))
1094 (setq cua--last-region-shifted t)
1095 (setq cua--explicit-region-start nil))
1096 ((or cua--explicit-region-start cua--rectangle)
1097 (unless mark-active
1098 (push-mark-command nil nil)))
1099 (t
1100 ;; If we set mark-active to nil here, the region highlight will not be
1101 ;; removed by the direct_output_ commands.
1102 (setq deactivate-mark t)))
1103
1104 ;; Handle delete-selection property on other commands
1105 (if (and mark-active (not deactivate-mark))
1106 (let* ((ds (or (get this-command 'delete-selection)
1107 (get this-command 'pending-delete)))
1108 (nc (cond
1109 ((not ds) nil)
1110 ((eq ds 'yank)
1111 'cua-paste)
1112 ((eq ds 'kill)
1113 (if cua--rectangle
1114 'cua-copy-rectangle
1115 'cua-copy-region))
1116 ((eq ds 'supersede)
1117 (if cua--rectangle
1118 'cua-delete-rectangle
1119 'cua-delete-region))
1120 (t
1121 (if cua--rectangle
1122 'cua-delete-rectangle ;; replace?
1123 'cua-replace-region)))))
1124 (if nc
1125 (setq this-original-command this-command
1126 this-command nc)))))
1127
1128 ;; Detect extension of rectangles by mouse or other movement
1129 (setq cua--buffer-and-point-before-command
1130 (if cua--rectangle (cons (current-buffer) (point))))))
1131
1063(defun cua--pre-command-handler () 1132(defun cua--pre-command-handler ()
1064 (condition-case nil 1133 (when cua-mode
1065 (let ((movement (eq (get this-command 'CUA) 'move))) 1134 (condition-case nil
1066 1135 (cua--pre-command-handler-1)
1067 ;; Cancel prefix key timeout if user enters another key. 1136 (error nil))))
1068 (when cua--prefix-override-timer
1069 (if (timerp cua--prefix-override-timer)
1070 (cancel-timer cua--prefix-override-timer))
1071 (setq cua--prefix-override-timer nil))
1072
1073 ;; Handle shifted cursor keys and other movement commands.
1074 ;; If region is not active, region is activated if key is shifted.
1075 ;; If region is active, region is cancelled if key is unshifted (and region not started with C-SPC).
1076 ;; If rectangle is active, expand rectangle in specified direction and ignore the movement.
1077 (if movement
1078 (cond
1079 ((if window-system
1080 (memq 'shift (event-modifiers
1081 (aref (this-single-command-raw-keys) 0)))
1082 (or
1083 (memq 'shift (event-modifiers
1084 (aref (this-single-command-keys) 0)))
1085 ;; See if raw escape sequence maps to a shifted event, e.g. S-up or C-S-home.
1086 (and (boundp 'function-key-map)
1087 function-key-map
1088 (let ((ev (lookup-key function-key-map
1089 (this-single-command-raw-keys))))
1090 (and (vector ev)
1091 (symbolp (setq ev (aref ev 0)))
1092 (string-match "S-" (symbol-name ev)))))))
1093 (unless mark-active
1094 (push-mark-command nil t))
1095 (setq cua--last-region-shifted t)
1096 (setq cua--explicit-region-start nil))
1097 ((or cua--explicit-region-start cua--rectangle)
1098 (unless mark-active
1099 (push-mark-command nil nil)))
1100 (t
1101 ;; If we set mark-active to nil here, the region highlight will not be
1102 ;; removed by the direct_output_ commands.
1103 (setq deactivate-mark t)))
1104
1105 ;; Handle delete-selection property on other commands
1106 (if (and mark-active (not deactivate-mark))
1107 (let* ((ds (or (get this-command 'delete-selection)
1108 (get this-command 'pending-delete)))
1109 (nc (cond
1110 ((not ds) nil)
1111 ((eq ds 'yank)
1112 'cua-paste)
1113 ((eq ds 'kill)
1114 (if cua--rectangle
1115 'cua-copy-rectangle
1116 'cua-copy-region))
1117 ((eq ds 'supersede)
1118 (if cua--rectangle
1119 'cua-delete-rectangle
1120 'cua-delete-region))
1121 (t
1122 (if cua--rectangle
1123 'cua-delete-rectangle ;; replace?
1124 'cua-replace-region)))))
1125 (if nc
1126 (setq this-original-command this-command
1127 this-command nc)))))
1128
1129 ;; Detect extension of rectangles by mouse or other movement
1130 (setq cua--buffer-and-point-before-command
1131 (if cua--rectangle (cons (current-buffer) (point))))
1132 )
1133 (error nil)))
1134 1137
1135;;; Post-command hook 1138;;; Post-command hook
1136 1139
1137(defun cua--post-command-handler () 1140(defun cua--post-command-handler-1 ()
1138 (condition-case nil 1141 (when cua--global-mark-active
1139 (progn 1142 (cua--global-mark-post-command))
1140 (when cua--global-mark-active 1143 (when (fboundp 'cua--rectangle-post-command)
1141 (cua--global-mark-post-command)) 1144 (cua--rectangle-post-command))
1142 (when (fboundp 'cua--rectangle-post-command) 1145 (setq cua--buffer-and-point-before-command nil)
1143 (cua--rectangle-post-command)) 1146 (if (or (not mark-active) deactivate-mark)
1144 (setq cua--buffer-and-point-before-command nil) 1147 (setq cua--explicit-region-start nil))
1145 (if (or (not mark-active) deactivate-mark) 1148
1146 (setq cua--explicit-region-start nil)) 1149 ;; Debugging
1147 1150 (if cua--debug
1148 ;; Debugging 1151 (cond
1149 (if cua--debug 1152 (cua--rectangle (cua--rectangle-assert))
1150 (cond 1153 (mark-active (message "Mark=%d Point=%d Expl=%s"
1151 (cua--rectangle (cua--rectangle-assert)) 1154 (mark t) (point) cua--explicit-region-start))))
1152 (mark-active (message "Mark=%d Point=%d Expl=%s"
1153 (mark t) (point) cua--explicit-region-start))))
1154
1155 ;; Disable transient-mark-mode if rectangle active in current buffer.
1156 (if (not (window-minibuffer-p (selected-window)))
1157 (setq transient-mark-mode (and (not cua--rectangle)
1158 (if cua-highlight-region-shift-only
1159 (not cua--explicit-region-start)
1160 t))))
1161 (if cua-enable-cursor-indications
1162 (cua--update-indications))
1163 1155
1164 (cua--select-keymaps) 1156 ;; Disable transient-mark-mode if rectangle active in current buffer.
1165 ) 1157 (if (not (window-minibuffer-p (selected-window)))
1158 (setq transient-mark-mode (and (not cua--rectangle)
1159 (if cua-highlight-region-shift-only
1160 (not cua--explicit-region-start)
1161 t))))
1162 (if cua-enable-cursor-indications
1163 (cua--update-indications))
1166 1164
1167 (error nil))) 1165 (cua--select-keymaps))
1166
1167(defun cua--post-command-handler ()
1168 (when cua-mode
1169 (condition-case nil
1170 (cua--post-command-handler-1)
1171 (error nil))))
1168 1172
1169 1173
1170;;; Keymaps 1174;;; Keymaps
1171 1175
1172(defun cua--M/H-key (map key fct) 1176(defun cua--M/H-key (map key fct)
1173 ;; bind H-KEY or M-KEY to FCT in MAP 1177 ;; bind H-KEY or M-KEY to FCT in MAP
1174 (if (eq key 'space) (setq key ? )) 1178 (if (eq key 'space) (setq key ?\s))
1175 (unless (listp key) (setq key (list key))) 1179 (unless (listp key) (setq key (list key)))
1176 (define-key map (vector (cons (if cua-use-hyper-key 'hyper 'meta) key)) fct)) 1180 (define-key map (vector (cons (if cua-use-hyper-key 'hyper 'meta) key)) fct))
1177 1181
@@ -1240,7 +1244,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1240 (cua--M/H-key cua-global-keymap 'space 'cua-set-rectangle-mark) 1244 (cua--M/H-key cua-global-keymap 'space 'cua-set-rectangle-mark)
1241 (define-key cua-global-keymap [(hyper mouse-1)] 'cua-mouse-set-rectangle-mark)) 1245 (define-key cua-global-keymap [(hyper mouse-1)] 'cua-mouse-set-rectangle-mark))
1242 1246
1243 (define-key cua-global-keymap [(shift control ? )] 'cua-toggle-global-mark) 1247 (define-key cua-global-keymap [(shift control ?\s)] 'cua-toggle-global-mark)
1244 1248
1245 ;; replace region with rectangle or element on kill ring 1249 ;; replace region with rectangle or element on kill ring
1246 (define-key cua-global-keymap [remap yank] 'cua-paste) 1250 (define-key cua-global-keymap [remap yank] 'cua-paste)
@@ -1328,10 +1332,26 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1328;;;###autoload 1332;;;###autoload
1329(define-minor-mode cua-mode 1333(define-minor-mode cua-mode
1330 "Toggle CUA key-binding mode. 1334 "Toggle CUA key-binding mode.
1331When enabled, using shifted movement keys will activate the region (and 1335When enabled, using shifted movement keys will activate the
1332highlight the region using `transient-mark-mode'), and typed text replaces 1336region (and highlight the region using `transient-mark-mode'),
1333the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and 1337and typed text replaces the active selection.
1334paste (in addition to the normal Emacs bindings)." 1338
1339Also when enabled, you can use C-z, C-x, C-c, and C-v to undo,
1340cut, copy, and paste in addition to the normal Emacs bindings.
1341The C-x and C-c keys only do cut and copy when the region is
1342active, so in most cases, they do not conflict with the normal
1343function of these prefix keys.
1344
1345If you really need to perform a command which starts with one of
1346the prefix keys even when the region is active, you have three
1347options:
1348- press the prefix key twice very quickly (within 0.2 seconds),
1349- press the prefix key and the following key within 0.2 seconds, or
1350- use the SHIFT key with the prefix key, i.e. C-S-x or C-S-c.
1351
1352You can customize `cua-enable-cua-keys' to completely disable the
1353CUA bindings, or `cua-prefix-override-inhibit-delay' to change
1354the prefix fallback behavior."
1335 :global t 1355 :global t
1336 :group 'cua 1356 :group 'cua
1337 :set-after '(cua-enable-modeline-indications cua-use-hyper-key) 1357 :set-after '(cua-enable-modeline-indications cua-use-hyper-key)
@@ -1393,6 +1413,15 @@ paste (in addition to the normal Emacs bindings)."
1393 (if (or (nth 1 cua--saved-state) (nth 2 cua--saved-state)) " enabled" ""))) 1413 (if (or (nth 1 cua--saved-state) (nth 2 cua--saved-state)) " enabled" "")))
1394 (setq cua--saved-state nil)))) 1414 (setq cua--saved-state nil))))
1395 1415
1416
1417;;;###autoload
1418(defun cua-selection-mode (arg)
1419 "Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings."
1420 (interactive "P")
1421 (setq-default cua-enable-cua-keys nil)
1422 (cua-mode arg))
1423
1424
1396(defun cua-debug () 1425(defun cua-debug ()
1397 "Toggle CUA debugging." 1426 "Toggle CUA debugging."
1398 (interactive) 1427 (interactive)
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index ecd5251891c..47b677b2e19 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -774,7 +774,8 @@ Vi's prefix argument will be used. Otherwise, the prefix argument passed to
774 ) 774 )
775 775
776 (if (commandp com) 776 (if (commandp com)
777 (progn 777 ;; pretend that current state is the state we excaped to
778 (let ((viper-current-state state))
778 (setq prefix-arg (or prefix-arg arg)) 779 (setq prefix-arg (or prefix-arg arg))
779 (command-execute com))) 780 (command-execute com)))
780 ) 781 )
@@ -996,9 +997,12 @@ as a Meta key and any number of multiple escapes is allowed."
996 (inhibit-quit t)) 997 (inhibit-quit t))
997 (if (viper-ESC-event-p event) 998 (if (viper-ESC-event-p event)
998 (progn 999 (progn
999 (if (viper-fast-keysequence-p) 1000 ;; Emacs 22.50.8 introduced a bug, which makes even a single ESC into
1001 ;; a fast keyseq. To guard against this, we added a check if there
1002 ;; are other events as well
1003 (if (and (viper-fast-keysequence-p) unread-command-events)
1000 (progn 1004 (progn
1001 (let (minor-mode-map-alist) 1005 (let (minor-mode-map-alist emulation-mode-map-alists)
1002 (viper-set-unread-command-events event) 1006 (viper-set-unread-command-events event)
1003 (setq keyseq (read-key-sequence nil 'continue-echo)) 1007 (setq keyseq (read-key-sequence nil 'continue-echo))
1004 ) ; let 1008 ) ; let
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index 8d9aed94770..f898c15c158 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -362,8 +362,8 @@ Use `M-x viper-set-expert-level' to change this.")
362(defun viper-activate-input-method () 362(defun viper-activate-input-method ()
363 (cond ((and viper-emacs-p (fboundp 'activate-input-method)) 363 (cond ((and viper-emacs-p (fboundp 'activate-input-method))
364 (activate-input-method default-input-method)) 364 (activate-input-method default-input-method))
365 ((and viper-xemacs-p (fboundp 'quail-mode)) 365 ((featurep 'xemacs)
366 (quail-mode 1)))) 366 (if (fboundp 'quail-mode) (quail-mode 1)))))
367 367
368;; Set quail-mode to ARG 368;; Set quail-mode to ARG
369(defun viper-set-input-method (arg) 369(defun viper-set-input-method (arg)
diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el
index c82be565c4f..68770788349 100644
--- a/lisp/eshell/em-hist.el
+++ b/lisp/eshell/em-hist.el
@@ -204,6 +204,8 @@ element, regardless of any text on the command line. In that case,
204 (define-key eshell-isearch-map [(control ?c)] 'eshell-isearch-cancel-map) 204 (define-key eshell-isearch-map [(control ?c)] 'eshell-isearch-cancel-map)
205 (define-key eshell-isearch-cancel-map [(control ?c)] 'eshell-isearch-cancel)) 205 (define-key eshell-isearch-cancel-map [(control ?c)] 'eshell-isearch-cancel))
206 206
207(defvar eshell-rebind-keys-alist)
208
207;;; Functions: 209;;; Functions:
208 210
209(defun eshell-hist-initialize () 211(defun eshell-hist-initialize ()
@@ -217,10 +219,10 @@ element, regardless of any text on the command line. In that case,
217 219
218 (if (and (eshell-using-module 'eshell-rebind) 220 (if (and (eshell-using-module 'eshell-rebind)
219 (not eshell-non-interactive-p)) 221 (not eshell-non-interactive-p))
220 (let ((rebind-alist (symbol-value 'eshell-rebind-keys-alist))) 222 (let ((rebind-alist eshell-rebind-keys-alist))
221 (make-local-variable 'eshell-rebind-keys-alist) 223 (make-local-variable 'eshell-rebind-keys-alist)
222 (set 'eshell-rebind-keys-alist 224 (setq eshell-rebind-keys-alist
223 (append rebind-alist eshell-hist-rebind-keys-alist)) 225 (append rebind-alist eshell-hist-rebind-keys-alist))
224 (set (make-local-variable 'search-invisible) t) 226 (set (make-local-variable 'search-invisible) t)
225 (set (make-local-variable 'search-exit-option) t) 227 (set (make-local-variable 'search-exit-option) t)
226 (add-hook 'isearch-mode-hook 228 (add-hook 'isearch-mode-hook
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index 514138b6bc2..8ed49ccbd40 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -64,13 +64,13 @@ This is useful for enabling human-readable format (-h), for example."
64 :group 'eshell-ls) 64 :group 'eshell-ls)
65 65
66(defcustom eshell-ls-dired-initial-args nil 66(defcustom eshell-ls-dired-initial-args nil
67 "*If non-nil, args is included before any call to `ls' in dired. 67 "*If non-nil, args is included before any call to `ls' in Dired.
68This is useful for enabling human-readable format (-h), for example." 68This is useful for enabling human-readable format (-h), for example."
69 :type '(repeat :tag "Arguments" string) 69 :type '(repeat :tag "Arguments" string)
70 :group 'eshell-ls) 70 :group 'eshell-ls)
71 71
72(defcustom eshell-ls-use-in-dired nil 72(defcustom eshell-ls-use-in-dired nil
73 "*If non-nil, use `eshell-ls' to read directories in dired." 73 "*If non-nil, use `eshell-ls' to read directories in Dired."
74 :set (lambda (symbol value) 74 :set (lambda (symbol value)
75 (if value 75 (if value
76 (unless (and (boundp 'eshell-ls-use-in-dired) 76 (unless (and (boundp 'eshell-ls-use-in-dired)
@@ -158,7 +158,7 @@ faster and conserves more memory."
158(defface eshell-ls-missing 158(defface eshell-ls-missing
159 '((((class color) (background light)) (:foreground "Red" :weight bold)) 159 '((((class color) (background light)) (:foreground "Red" :weight bold))
160 (((class color) (background dark)) (:foreground "Red" :weight bold))) 160 (((class color) (background dark)) (:foreground "Red" :weight bold)))
161 "*The face used for highlighting non-existant file names." 161 "*The face used for highlighting non-existent file names."
162 :group 'eshell-ls) 162 :group 'eshell-ls)
163;; backward-compatibility alias 163;; backward-compatibility alias
164(put 'eshell-ls-missing-face 'face-alias 'eshell-ls-missing) 164(put 'eshell-ls-missing-face 'face-alias 'eshell-ls-missing)
@@ -863,8 +863,7 @@ to use, and each member of which is the width of that column
863 (cons col-widths newfiles))))) 863 (cons col-widths newfiles)))))
864 864
865(defun eshell-ls-decorated-name (file) 865(defun eshell-ls-decorated-name (file)
866 "Return FILE, possibly decorated. 866 "Return FILE, possibly decorated."
867Use TRUENAME for predicate tests, if passed."
868 (if eshell-ls-use-colors 867 (if eshell-ls-use-colors
869 (let ((face 868 (let ((face
870 (cond 869 (cond
diff --git a/lisp/faces.el b/lisp/faces.el
index 0b301a2af61..733d7cae1ba 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -385,7 +385,7 @@ completely specified)."
385(defun face-attribute-merged-with (attribute value faces &optional frame) 385(defun face-attribute-merged-with (attribute value faces &optional frame)
386 "Merges ATTRIBUTE, initially VALUE, with faces from FACES until absolute. 386 "Merges ATTRIBUTE, initially VALUE, with faces from FACES until absolute.
387FACES may be either a single face or a list of faces. 387FACES may be either a single face or a list of faces.
388\[This is an internal function]" 388\[This is an internal function.]"
389 (cond ((not (face-attribute-relative-p attribute value)) 389 (cond ((not (face-attribute-relative-p attribute value))
390 value) 390 value)
391 ((null faces) 391 ((null faces)
@@ -1095,7 +1095,7 @@ of a global face. Value is the new attribute value."
1095 1095
1096(defun read-face-font (face &optional frame) 1096(defun read-face-font (face &optional frame)
1097 "Read the name of a font for FACE on FRAME. 1097 "Read the name of a font for FACE on FRAME.
1098If optional argument FRAME Is nil or omitted, use the selected frame." 1098If optional argument FRAME is nil or omitted, use the selected frame."
1099 (let ((completion-ignore-case t)) 1099 (let ((completion-ignore-case t))
1100 (completing-read (format "Set font attributes of face `%s' from font: " face) 1100 (completing-read (format "Set font attributes of face `%s' from font: " face)
1101 (append (fontset-list) (x-list-fonts "*" nil frame))))) 1101 (append (fontset-list) (x-list-fonts "*" nil frame)))))
@@ -1103,7 +1103,7 @@ If optional argument FRAME Is nil or omitted, use the selected frame."
1103 1103
1104(defun read-all-face-attributes (face &optional frame) 1104(defun read-all-face-attributes (face &optional frame)
1105 "Interactively read all attributes for FACE. 1105 "Interactively read all attributes for FACE.
1106If optional argument FRAME Is nil or omitted, use the selected frame. 1106If optional argument FRAME is nil or omitted, use the selected frame.
1107Value is a property list of attribute names and new values." 1107Value is a property list of attribute names and new values."
1108 (let (result) 1108 (let (result)
1109 (dolist (attribute face-attribute-name-alist result) 1109 (dolist (attribute face-attribute-name-alist result)
@@ -1117,7 +1117,7 @@ Value is a property list of attribute names and new values."
1117If optional argument FRAME is nil or omitted, modify the face used 1117If optional argument FRAME is nil or omitted, modify the face used
1118for newly created frame, i.e. the global face. 1118for newly created frame, i.e. the global face.
1119For non-interactive use, `set-face-attribute' is preferred. 1119For non-interactive use, `set-face-attribute' is preferred.
1120When called from elisp, if FACE is nil, all arguments but FRAME are ignored 1120When called from Lisp, if FACE is nil, all arguments but FRAME are ignored
1121and the face and its settings are obtained by querying the user." 1121and the face and its settings are obtained by querying the user."
1122 (interactive) 1122 (interactive)
1123 (if face 1123 (if face
@@ -1317,7 +1317,7 @@ If FRAME is omitted or nil, use the selected frame."
1317 (terpri)) 1317 (terpri))
1318 (dolist (a attrs) 1318 (dolist (a attrs)
1319 (let ((attr (face-attribute f (car a) frame))) 1319 (let ((attr (face-attribute f (car a) frame)))
1320 (insert (make-string (- max-width (length (cdr a))) ?\ ) 1320 (insert (make-string (- max-width (length (cdr a))) ?\s)
1321 (cdr a) ": " (format "%s" attr) "\n"))))) 1321 (cdr a) ": " (format "%s" attr) "\n")))))
1322 (terpri))) 1322 (terpri)))
1323 (print-help-return-message)))) 1323 (print-help-return-message))))
@@ -1331,7 +1331,7 @@ If FRAME is omitted or nil, use the selected frame."
1331;; face implementation. 1331;; face implementation.
1332 1332
1333(defun face-attr-construct (face &optional frame) 1333(defun face-attr-construct (face &optional frame)
1334 "Return a defface-style attribute list for FACE on FRAME. 1334 "Return a `defface'-style attribute list for FACE on FRAME.
1335Value is a property list of pairs ATTRIBUTE VALUE for all specified 1335Value is a property list of pairs ATTRIBUTE VALUE for all specified
1336face attributes of FACE where ATTRIBUTE is the attribute name and 1336face attributes of FACE where ATTRIBUTE is the attribute name and
1337VALUE is the specified value of that attribute." 1337VALUE is the specified value of that attribute."
@@ -1836,8 +1836,8 @@ created."
1836;; Update the colors of FACE, after FRAME's own colors have been 1836;; Update the colors of FACE, after FRAME's own colors have been
1837;; changed. 1837;; changed.
1838 1838
1839(defalias 'frame-update-face-colors 'frame-set-background-mode) 1839(define-obsolete-function-alias 'frame-update-face-colors
1840(make-obsolete 'frame-update-face-colors 'frame-set-background-mode "21.1") 1840 'frame-set-background-mode "21.1")
1841 1841
1842 1842
1843;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1843;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1883,12 +1883,10 @@ created."
1883 :group 'basic-faces) 1883 :group 'basic-faces)
1884 1884
1885(defface mode-line-highlight 1885(defface mode-line-highlight
1886 '((((class color) (min-colors 88) (background light)) 1886 '((((class color) (min-colors 88))
1887 :background "RoyalBlue4" :foreground "white") 1887 :box (:line-width 2 :color "grey40" :style released-button))
1888 (((class color) (min-colors 88) (background dark)) 1888 (t
1889 :background "light sky blue" :foreground "black") 1889 :inherit highlight))
1890 (t
1891 :inverse-video t))
1892 "Basic mode line face for highlighting." 1890 "Basic mode line face for highlighting."
1893 :version "22.1" 1891 :version "22.1"
1894 :group 'modeline 1892 :group 'modeline
@@ -2058,7 +2056,7 @@ Note: Other faces cannot inherit from the cursor face."
2058 ;; because in some cases the display engine will do it's own 2056 ;; because in some cases the display engine will do it's own
2059 ;; workaround (to `dim' on ttys) 2057 ;; workaround (to `dim' on ttys)
2060 :slant italic)) 2058 :slant italic))
2061 "Basic italic font." 2059 "Basic italic face."
2062 :group 'basic-faces) 2060 :group 'basic-faces)
2063 2061
2064 2062
@@ -2150,8 +2148,14 @@ Note: Other faces cannot inherit from the cursor face."
2150 :version "22.1") 2148 :version "22.1")
2151 2149
2152(defface shadow 2150(defface shadow
2153 '((((background dark)) :foreground "grey70") 2151 '((((class color grayscale) (min-colors 88) (background light))
2154 (((background light)) :foreground "grey50")) 2152 :foreground "grey50")
2153 (((class color grayscale) (min-colors 88) (background dark))
2154 :foreground "grey70")
2155 (((class color) (min-colors 8) (background light))
2156 :foreground "green")
2157 (((class color) (min-colors 8) (background dark))
2158 :foreground "yellow"))
2155 "Basic face for shadowed text." 2159 "Basic face for shadowed text."
2156 :group 'basic-faces 2160 :group 'basic-faces
2157 :version "22.1") 2161 :version "22.1")
diff --git a/lisp/files.el b/lisp/files.el
index f41a9b29522..6479ef3bc92 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -159,8 +159,7 @@ both at the file level and at the levels of the containing directories."
159 :type 'boolean 159 :type 'boolean
160 :group 'find-file) 160 :group 'find-file)
161 161
162(defcustom revert-without-query 162(defcustom revert-without-query nil
163 nil
164 "*Specify which files should be reverted without query. 163 "*Specify which files should be reverted without query.
165The value is a list of regular expressions. 164The value is a list of regular expressions.
166If the file name matches one of these regular expressions, 165If the file name matches one of these regular expressions,
@@ -178,7 +177,7 @@ If the buffer is visiting a new file, the value is nil.")
178(put 'buffer-file-number 'permanent-local t) 177(put 'buffer-file-number 'permanent-local t)
179 178
180(defvar buffer-file-numbers-unique (not (memq system-type '(windows-nt))) 179(defvar buffer-file-numbers-unique (not (memq system-type '(windows-nt)))
181 "Non-nil means that buffer-file-number uniquely identifies files.") 180 "Non-nil means that `buffer-file-number' uniquely identifies files.")
182 181
183(defvar buffer-file-read-only nil 182(defvar buffer-file-read-only nil
184 "Non-nil if visited file was read-only when visited.") 183 "Non-nil if visited file was read-only when visited.")
@@ -381,9 +380,8 @@ and should return either a buffer or nil."
381These functions are called as soon as the error is detected. 380These functions are called as soon as the error is detected.
382Variable `buffer-file-name' is already set up. 381Variable `buffer-file-name' is already set up.
383The functions are called in the order given until one of them returns non-nil.") 382The functions are called in the order given until one of them returns non-nil.")
384(defvaralias 'find-file-not-found-hooks 'find-file-not-found-functions) 383(define-obsolete-variable-alias 'find-file-not-found-hooks
385(make-obsolete-variable 384 'find-file-not-found-functions "22.1")
386 'find-file-not-found-hooks 'find-file-not-found-functions "22.1")
387 385
388;;;It is not useful to make this a local variable. 386;;;It is not useful to make this a local variable.
389;;;(put 'find-file-hooks 'permanent-local t) 387;;;(put 'find-file-hooks 'permanent-local t)
@@ -395,8 +393,7 @@ functions are called."
395 :type 'hook 393 :type 'hook
396 :options '(auto-insert) 394 :options '(auto-insert)
397 :version "22.1") 395 :version "22.1")
398(defvaralias 'find-file-hooks 'find-file-hook) 396(define-obsolete-variable-alias 'find-file-hooks 'find-file-hook "22.1")
399(make-obsolete-variable 'find-file-hooks 'find-file-hook "22.1")
400 397
401(defvar write-file-functions nil 398(defvar write-file-functions nil
402 "List of functions to be called before writing out a buffer to a file. 399 "List of functions to be called before writing out a buffer to a file.
@@ -412,10 +409,9 @@ This hook is not run if any of the functions in
412to how to save a buffer to file, for instance, choosing a suitable 409to how to save a buffer to file, for instance, choosing a suitable
413coding system and setting mode bits. (See Info 410coding system and setting mode bits. (See Info
414node `(elisp)Saving Buffers'.) To perform various checks or 411node `(elisp)Saving Buffers'.) To perform various checks or
415updates before the buffer is saved, use `before-save-hook' .") 412updates before the buffer is saved, use `before-save-hook'.")
416(put 'write-file-functions 'permanent-local t) 413(put 'write-file-functions 'permanent-local t)
417(defvaralias 'write-file-hooks 'write-file-functions) 414(define-obsolete-variable-alias 'write-file-hooks 'write-file-functions "22.1")
418(make-obsolete-variable 'write-file-hooks 'write-file-functions "22.1")
419 415
420(defvar local-write-file-hooks nil) 416(defvar local-write-file-hooks nil)
421(make-variable-buffer-local 'local-write-file-hooks) 417(make-variable-buffer-local 'local-write-file-hooks)
@@ -439,8 +435,8 @@ For hooks that _do_ pertain to the particular visited file, use
439To perform various checks or updates before the buffer is saved, 435To perform various checks or updates before the buffer is saved,
440use `before-save-hook'.") 436use `before-save-hook'.")
441(make-variable-buffer-local 'write-contents-functions) 437(make-variable-buffer-local 'write-contents-functions)
442(defvaralias 'write-contents-hooks 'write-contents-functions) 438(define-obsolete-variable-alias 'write-contents-hooks
443(make-obsolete-variable 'write-contents-hooks 'write-contents-functions "22.1") 439 'write-contents-functions "22.1")
444 440
445(defcustom enable-local-variables t 441(defcustom enable-local-variables t
446 "*Control use of local variables in files you visit. 442 "*Control use of local variables in files you visit.
@@ -866,8 +862,8 @@ it means chase no more than that many links and then stop."
866 "Change the encoding of FILE's name from CODING to NEW-CODING. 862 "Change the encoding of FILE's name from CODING to NEW-CODING.
867The value is a new name of FILE. 863The value is a new name of FILE.
868Signals a `file-already-exists' error if a file of the new name 864Signals a `file-already-exists' error if a file of the new name
869already exists unless optional third argument OK-IF-ALREADY-EXISTS 865already exists unless optional fourth argument OK-IF-ALREADY-EXISTS
870is non-nil. A number as third arg means request confirmation if 866is non-nil. A number as fourth arg means request confirmation if
871the new name already exists. This is what happens in interactive 867the new name already exists. This is what happens in interactive
872use with M-x." 868use with M-x."
873 (interactive 869 (interactive
@@ -1326,9 +1322,9 @@ When nil, never request confirmation."
1326If a buffer exists visiting FILENAME, return that one, but 1322If a buffer exists visiting FILENAME, return that one, but
1327verify that the file has not changed since visited or saved. 1323verify that the file has not changed since visited or saved.
1328The buffer is not selected, just returned to the caller. 1324The buffer is not selected, just returned to the caller.
1329Optional first arg NOWARN non-nil means suppress any warning messages. 1325Optional second arg NOWARN non-nil means suppress any warning messages.
1330Optional second arg RAWFILE non-nil means the file is read literally. 1326Optional third arg RAWFILE non-nil means the file is read literally.
1331Optional third arg WILDCARDS non-nil means do wildcard processing 1327Optional fourth arg WILDCARDS non-nil means do wildcard processing
1332and visit all the matching files. When wildcards are actually 1328and visit all the matching files. When wildcards are actually
1333used and expanded, return a list of buffers that are visiting 1329used and expanded, return a list of buffers that are visiting
1334the various files." 1330the various files."
@@ -2000,7 +1996,7 @@ if REGEXP matches the text at the beginning of the buffer,
2000to decide the buffer's major mode. 1996to decide the buffer's major mode.
2001 1997
2002If FUNCTION is nil, then it is not called. (That is a way of saying 1998If FUNCTION is nil, then it is not called. (That is a way of saying
2003\"allow `auto-mode-alist' to decide for these files.)") 1999\"allow `auto-mode-alist' to decide for these files.\")")
2004 2000
2005(defun set-auto-mode (&optional keep-mode-if-same) 2001(defun set-auto-mode (&optional keep-mode-if-same)
2006 "Select major mode appropriate for current buffer. 2002 "Select major mode appropriate for current buffer.
@@ -3237,7 +3233,7 @@ in such cases.")
3237 "Save the current buffer in its visited file, if it has been modified. 3233 "Save the current buffer in its visited file, if it has been modified.
3238The hooks `write-contents-functions' and `write-file-functions' get a chance 3234The hooks `write-contents-functions' and `write-file-functions' get a chance
3239to do the job of saving; if they do not, then the buffer is saved in 3235to do the job of saving; if they do not, then the buffer is saved in
3240the visited file file in the usual way. 3236the visited file in the usual way.
3241Before and after saving the buffer, this function runs 3237Before and after saving the buffer, this function runs
3242`before-save-hook' and `after-save-hook', respectively." 3238`before-save-hook' and `after-save-hook', respectively."
3243 (interactive) 3239 (interactive)
@@ -4009,7 +4005,7 @@ specifies the list of buffers to kill, asking for approval for each one."
4009 (and name ; Can be nil for an indirect buffer 4005 (and name ; Can be nil for an indirect buffer
4010 ; if we killed the base buffer. 4006 ; if we killed the base buffer.
4011 (not (string-equal name "")) 4007 (not (string-equal name ""))
4012 (/= (aref name 0) ? ) 4008 (/= (aref name 0) ?\s)
4013 (yes-or-no-p 4009 (yes-or-no-p
4014 (format "Buffer %s %s. Kill? " 4010 (format "Buffer %s %s. Kill? "
4015 name 4011 name
@@ -4392,9 +4388,9 @@ preference to the program given by this variable."
4392 :group 'dired) 4388 :group 'dired)
4393 4389
4394(defun get-free-disk-space (dir) 4390(defun get-free-disk-space (dir)
4395 "Return the mount of free space on directory DIR's file system. 4391 "Return the amount of free space on directory DIR's file system.
4396The result is a string that gives the number of free 1KB blocks, 4392The result is a string that gives the number of free 1KB blocks,
4397or nil if the system call or the program which retrieve the infornmation 4393or nil if the system call or the program which retrieve the information
4398fail. 4394fail.
4399 4395
4400This function calls `file-system-info' if it is available, or invokes the 4396This function calls `file-system-info' if it is available, or invokes the
@@ -4642,7 +4638,7 @@ normally equivalent short `-D' option is just passed on to
4642 (end (insert-directory-adj-pos 4638 (end (insert-directory-adj-pos
4643 (+ beg (read (current-buffer))) 4639 (+ beg (read (current-buffer)))
4644 error-lines))) 4640 error-lines)))
4645 (if (memq (char-after end) '(?\n ?\ )) 4641 (if (memq (char-after end) '(?\n ?\s))
4646 ;; End is followed by \n or by " -> ". 4642 ;; End is followed by \n or by " -> ".
4647 (put-text-property start end 'dired-filename t) 4643 (put-text-property start end 'dired-filename t)
4648 ;; It seems that we can't trust ls's output as to 4644 ;; It seems that we can't trust ls's output as to
diff --git a/lisp/font-core.el b/lisp/font-core.el
index 318191e1757..19417720d3a 100644
--- a/lisp/font-core.el
+++ b/lisp/font-core.el
@@ -125,7 +125,7 @@ major modes support different levels of fontification, you can use the variable
125When you turn Font Lock mode on/off the buffer is fontified/defontified, though 125When you turn Font Lock mode on/off the buffer is fontified/defontified, though
126fontification occurs only if the buffer is less than `font-lock-maximum-size'. 126fontification occurs only if the buffer is less than `font-lock-maximum-size'.
127 127
128For example, to specify that Font Lock mode use use Lazy Lock mode as a support 128For example, to specify that Font Lock mode uses Lazy Lock mode as a support
129mode and use maximum levels of fontification, put in your ~/.emacs: 129mode and use maximum levels of fontification, put in your ~/.emacs:
130 130
131 (setq font-lock-support-mode 'lazy-lock-mode) 131 (setq font-lock-support-mode 'lazy-lock-mode)
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 0ba073409f2..6a95bc973d8 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1830,8 +1830,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1830 :group 'font-lock-highlighting-faces) 1830 :group 'font-lock-highlighting-faces)
1831 1831
1832(defface font-lock-regexp-grouping-backslash 1832(defface font-lock-regexp-grouping-backslash
1833 '((((class color) (min-colors 16)) :inherit escape-glyph) 1833 '((t :inherit bold))
1834 (t :inherit bold))
1835 "Font Lock mode face for backslashes in Lisp regexp grouping constructs." 1834 "Font Lock mode face for backslashes in Lisp regexp grouping constructs."
1836 :group 'font-lock-highlighting-faces) 1835 :group 'font-lock-highlighting-faces)
1837 1836
diff --git a/lisp/forms-d2.el b/lisp/forms-d2.el
index 19164b6a6db..63b47fc028d 100644
--- a/lisp/forms-d2.el
+++ b/lisp/forms-d2.el
@@ -32,17 +32,17 @@
32;; The following functions are used by this form for layout purposes. 32;; The following functions are used by this form for layout purposes.
33;; 33;;
34(defun arch-tocol (target &optional fill) 34(defun arch-tocol (target &optional fill)
35 "Produces a string to skip to column TARGET. Prepends newline if needed. 35 "Produces a string to skip to column TARGET. Prepends newline if needed.
36The optional FILL should be a character, used to fill to the column." 36The optional FILL should be a character, used to fill to the column."
37 (if (null fill) 37 (if (null fill)
38 (setq fill ? )) 38 (setq fill ?\s))
39 (if (< target (current-column)) 39 (if (< target (current-column))
40 (concat "\n" (make-string target fill)) 40 (concat "\n" (make-string target fill))
41 (make-string (- target (current-column)) fill))) 41 (make-string (- target (current-column)) fill)))
42;; 42;;
43(defun arch-rj (target field &optional fill) 43(defun arch-rj (target field &optional fill)
44 "Produces a string to skip to column TARGET minus the width of field FIELD. 44 "Produces a string to skip to column TARGET minus the width of field FIELD.
45Prepends newline if needed. The optional FILL should be a character, 45Prepends newline if needed. The optional FILL should be a character,
46used to fill to the column." 46used to fill to the column."
47 (arch-tocol (- target (length (nth field forms-fields))) fill)) 47 (arch-tocol (- target (length (nth field forms-fields))) fill))
48 48
diff --git a/lisp/frame.el b/lisp/frame.el
index 5496c857af0..e416817d185 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -592,8 +592,7 @@ The functions are run with one arg, the newly created frame.")
592 "Functions to run after a frame's font has been changed.") 592 "Functions to run after a frame's font has been changed.")
593 593
594;; Alias, kept temporarily. 594;; Alias, kept temporarily.
595(defalias 'new-frame 'make-frame) 595(define-obsolete-function-alias 'new-frame 'make-frame "22.1")
596(make-obsolete 'new-frame 'make-frame "22.1")
597 596
598(defun make-frame (&optional parameters) 597(defun make-frame (&optional parameters)
599 "Return a newly created frame displaying the current buffer. 598 "Return a newly created frame displaying the current buffer.
@@ -851,7 +850,7 @@ When called interactively, prompt for the name of the font to use.
851To get the frame's current default font, use `frame-parameters'. 850To get the frame's current default font, use `frame-parameters'.
852 851
853The default behavior is to keep the numbers of lines and columns in 852The default behavior is to keep the numbers of lines and columns in
854the frame, thus may change its pixel size. If optional KEEP-SIZE is 853the frame, thus may change its pixel size. If optional KEEP-SIZE is
855non-nil (interactively, prefix argument) the current frame size (in 854non-nil (interactively, prefix argument) the current frame size (in
856pixels) is kept by adjusting the numbers of the lines and columns." 855pixels) is kept by adjusting the numbers of the lines and columns."
857 (interactive 856 (interactive
@@ -1149,23 +1148,21 @@ The value is one of the symbols `static-gray', `gray-scale',
1149 1148
1150 1149
1151;;;; Aliases for backward compatibility with Emacs 18. 1150;;;; Aliases for backward compatibility with Emacs 18.
1152(defalias 'screen-height 'frame-height) 1151(define-obsolete-function-alias 'screen-height 'frame-height) ;before 19.15
1153(defalias 'screen-width 'frame-width) 1152(define-obsolete-function-alias 'screen-width 'frame-width) ;before 19.15
1154 1153
1155(defun set-screen-width (cols &optional pretend) 1154(defun set-screen-width (cols &optional pretend)
1156 "Obsolete function to change the size of the screen to COLS columns. 1155 "Change the size of the screen to COLS columns.
1157Optional second arg non-nil means that redisplay should use COLS columns 1156Optional second arg non-nil means that redisplay should use COLS columns
1158but that the idea of the actual width of the frame should not be changed. 1157but that the idea of the actual width of the frame should not be changed.
1159This function is provided only for compatibility with Emacs 18; new code 1158This function is provided only for compatibility with Emacs 18."
1160should use `set-frame-width instead'."
1161 (set-frame-width (selected-frame) cols pretend)) 1159 (set-frame-width (selected-frame) cols pretend))
1162 1160
1163(defun set-screen-height (lines &optional pretend) 1161(defun set-screen-height (lines &optional pretend)
1164 "Obsolete function to change the height of the screen to LINES lines. 1162 "Change the height of the screen to LINES lines.
1165Optional second arg non-nil means that redisplay should use LINES lines 1163Optional second arg non-nil means that redisplay should use LINES lines
1166but that the idea of the actual height of the screen should not be changed. 1164but that the idea of the actual height of the screen should not be changed.
1167This function is provided only for compatibility with Emacs 18; new code 1165This function is provided only for compatibility with Emacs 18."
1168should use `set-frame-height' instead."
1169 (set-frame-height (selected-frame) lines pretend)) 1166 (set-frame-height (selected-frame) lines pretend))
1170 1167
1171(defun delete-other-frames (&optional frame) 1168(defun delete-other-frames (&optional frame)
@@ -1188,14 +1185,12 @@ left untouched. FRAME nil or omitted means use the selected frame."
1188 (when (eq (frame-parameter frame 'minibuffer) 'only) 1185 (when (eq (frame-parameter frame 'minibuffer) 'only)
1189 (delete-frame frame))))) 1186 (delete-frame frame)))))
1190 1187
1191(make-obsolete 'screen-height 'frame-height) ;before 19.15
1192(make-obsolete 'screen-width 'frame-width) ;before 19.15
1193(make-obsolete 'set-screen-width 'set-frame-width) ;before 19.15 1188(make-obsolete 'set-screen-width 'set-frame-width) ;before 19.15
1194(make-obsolete 'set-screen-height 'set-frame-height) ;before 19.15 1189(make-obsolete 'set-screen-height 'set-frame-height) ;before 19.15
1195 1190
1196;; miscellaneous obsolescence declarations 1191;; miscellaneous obsolescence declarations
1197(defvaralias 'delete-frame-hook 'delete-frame-functions) 1192(define-obsolete-variable-alias 'delete-frame-hook
1198(make-obsolete-variable 'delete-frame-hook 'delete-frame-functions "22.1") 1193 'delete-frame-functions "22.1")
1199 1194
1200 1195
1201;; Highlighting trailing whitespace. 1196;; Highlighting trailing whitespace.
@@ -1286,8 +1281,7 @@ cursor display. On a text-only terminal, this is not implemented."
1286 'blink-cursor-start))) 1281 'blink-cursor-start)))
1287 (internal-show-cursor nil t))) 1282 (internal-show-cursor nil t)))
1288 1283
1289(defvaralias 'blink-cursor 'blink-cursor-mode) 1284(define-obsolete-variable-alias 'blink-cursor 'blink-cursor-mode "22.1")
1290(make-obsolete-variable 'blink-cursor 'blink-cursor-mode "22.1")
1291 1285
1292(defun blink-cursor-start () 1286(defun blink-cursor-start ()
1293 "Timer function called from the timer `blink-cursor-idle-timer'. 1287 "Timer function called from the timer `blink-cursor-idle-timer'.
@@ -1333,7 +1327,7 @@ itself as a pre-command hook."
1333 1327
1334 1328
1335(defcustom cursor-in-non-selected-windows t 1329(defcustom cursor-in-non-selected-windows t
1336 "*Non-nil means show a hollow box cursor in non-selected-windows. 1330 "*Non-nil means show a hollow box cursor in non-selected windows.
1337If nil, don't show a cursor except in the selected window. 1331If nil, don't show a cursor except in the selected window.
1338Use Custom to set this variable to get the display updated." 1332Use Custom to set this variable to get the display updated."
1339 :tag "Cursor in non-selected windows" 1333 :tag "Cursor in non-selected windows"
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 7298fb92d69..33f639380a6 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,25 @@
12005-07-21 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * mml.el (mml-minibuffer-read-disposition): Don't use inline by default
4 for text/rtf. Display default in prompt. Pass default for M-n.
5
6 * mm-uu.el (mm-uu-copy-to-buffer): Use with-current-buffer.
7
82005-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
9
10 * gnus-msg.el (gnus-button-mailto): Remove
11 save-selected-window-window hackery because it relies on
12 save-selected-window internals.
13
142005-07-15 Katsumi Yamaoka <yamaoka@jpl.org>
15
16 * gnus-art.el (gnus-article-next-page): Use gnus-end-of-window.
17 (gnus-article-next-page-1): Use gnus-beginning-of-window.
18 (gnus-article-prev-page): Ditto.
19
20 * gnus-util.el (gnus-beginning-of-window): New function.
21 (gnus-end-of-window): New function.
22
12005-07-13 Katsumi Yamaoka <yamaoka@jpl.org> 232005-07-13 Katsumi Yamaoka <yamaoka@jpl.org>
2 24
3 * gnus-salt.el (gnus-pick-mode): Remove the 5th arg of 25 * gnus-salt.el (gnus-pick-mode): Remove the 5th arg of
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 82f06d2f5a2..2be1afea77d 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -5160,7 +5160,7 @@ If given a numerical ARG, move forward ARG pages."
5160If end of article, return non-nil. Otherwise return nil. 5160If end of article, return non-nil. Otherwise return nil.
5161Argument LINES specifies lines to be scrolled up." 5161Argument LINES specifies lines to be scrolled up."
5162 (interactive "p") 5162 (interactive "p")
5163 (move-to-window-line (max (- -1 scroll-margin) (- -1 (window-body-height)))) 5163 (gnus-end-of-window)
5164 (if (save-excursion 5164 (if (save-excursion
5165 (end-of-line) 5165 (end-of-line)
5166 (and (pos-visible-in-window-p) ;Not continuation line. 5166 (and (pos-visible-in-window-p) ;Not continuation line.
@@ -5189,13 +5189,13 @@ Argument LINES specifies lines to be scrolled up."
5189 (end-of-buffer 5189 (end-of-buffer
5190 ;; Long lines may cause an end-of-buffer error. 5190 ;; Long lines may cause an end-of-buffer error.
5191 (goto-char (point-max))))) 5191 (goto-char (point-max)))))
5192 (move-to-window-line (min scroll-margin (window-body-height)))) 5192 (gnus-beginning-of-window))
5193 5193
5194(defun gnus-article-prev-page (&optional lines) 5194(defun gnus-article-prev-page (&optional lines)
5195 "Show previous page of current article. 5195 "Show previous page of current article.
5196Argument LINES specifies lines to be scrolled down." 5196Argument LINES specifies lines to be scrolled down."
5197 (interactive "p") 5197 (interactive "p")
5198 (move-to-window-line (min scroll-margin (window-body-height))) 5198 (gnus-beginning-of-window)
5199 (if (and gnus-page-broken 5199 (if (and gnus-page-broken
5200 (bobp) 5200 (bobp)
5201 (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? 5201 (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer?
@@ -5209,7 +5209,7 @@ Argument LINES specifies lines to be scrolled down."
5209 (scroll-down lines) 5209 (scroll-down lines)
5210 (beginning-of-buffer 5210 (beginning-of-buffer
5211 (goto-char (point-min)))) 5211 (goto-char (point-min))))
5212 (move-to-window-line (min scroll-margin (window-body-height))))))) 5212 (gnus-beginning-of-window)))))
5213 5213
5214(defun gnus-article-only-boring-p () 5214(defun gnus-article-only-boring-p ()
5215 "Decide whether there is only boring text remaining in the article. 5215 "Decide whether there is only boring text remaining in the article.
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 8cc8bfe5dd1..1317211389d 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -466,27 +466,19 @@ Gcc: header for archiving purposes."
466 ;; COMPOSEFUNC should return t if succeed. Undocumented ??? 466 ;; COMPOSEFUNC should return t if succeed. Undocumented ???
467 t) 467 t)
468 468
469(defvar save-selected-window-window)
470
471;;;###autoload 469;;;###autoload
472(defun gnus-button-mailto (address) 470(defun gnus-button-mailto (address)
473 "Mail to ADDRESS." 471 "Mail to ADDRESS."
474 (set-buffer (gnus-copy-article-buffer)) 472 (set-buffer (gnus-copy-article-buffer))
475 (gnus-setup-message 'message 473 (gnus-setup-message 'message
476 (message-reply address)) 474 (message-reply address)))
477 (and (boundp 'save-selected-window-window)
478 (not (window-live-p save-selected-window-window))
479 (setq save-selected-window-window (selected-window))))
480 475
481;;;###autoload 476;;;###autoload
482(defun gnus-button-reply (&optional to-address wide) 477(defun gnus-button-reply (&optional to-address wide)
483 "Like `message-reply'." 478 "Like `message-reply'."
484 (interactive) 479 (interactive)
485 (gnus-setup-message 'message 480 (gnus-setup-message 'message
486 (message-reply to-address wide)) 481 (message-reply to-address wide)))
487 (and (boundp 'save-selected-window-window)
488 (not (window-live-p save-selected-window-window))
489 (setq save-selected-window-window (selected-window))))
490 482
491;;;###autoload 483;;;###autoload
492(define-mail-user-agent 'gnus-user-agent 484(define-mail-user-agent 'gnus-user-agent
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index da14d52161b..363b9c2f4a0 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1,5 +1,5 @@
1;;; gnus-util.el --- utility functions for Gnus 1;;; gnus-util.el --- utility functions for Gnus
2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1577,6 +1577,30 @@ empty directories from OLD-PATH."
1577 (defalias 'gnus-set-process-query-on-exit-flag 1577 (defalias 'gnus-set-process-query-on-exit-flag
1578 'process-kill-without-query)) 1578 'process-kill-without-query))
1579 1579
1580(defun gnus-beginning-of-window ()
1581 "Move point to the beginning of the window."
1582 (move-to-window-line
1583 (if (featurep 'xemacs)
1584 0
1585 (min scroll-margin
1586 (max 1 (- (window-height)
1587 (if mode-line-format 1 0)
1588 (if (and (boundp 'header-line-format)
1589 (symbol-value 'header-line-format))
1590 1 0)))))))
1591
1592(defun gnus-end-of-window ()
1593 "Move point to the end of the window."
1594 (move-to-window-line
1595 (if (featurep 'xemacs)
1596 -1
1597 (max (- -1 scroll-margin)
1598 (- -1 (max 1 (- (window-height)
1599 (if mode-line-format 1 0)
1600 (if (and (boundp 'header-line-format)
1601 (symbol-value 'header-line-format))
1602 1 0))))))))
1603
1580(provide 'gnus-util) 1604(provide 'gnus-util)
1581 1605
1582;;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49 1606;;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index ad40ffb4564..5d8f696fe41 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -111,8 +111,8 @@ This can be either \"inline\" or \"attachment\".")
111 "^exit 0$" 111 "^exit 0$"
112 mm-uu-shar-extract) 112 mm-uu-shar-extract)
113 (forward 113 (forward
114;;; Thanks to Edward J. Sabol <sabol@alderaan.gsfc.nasa.gov> and 114 ;; Thanks to Edward J. Sabol <sabol@alderaan.gsfc.nasa.gov> and
115;;; Peter von der Ah\'e <pahe@daimi.au.dk> 115 ;; Peter von der Ah\'e <pahe@daimi.au.dk>
116 "^-+ \\(Start of \\)?Forwarded message" 116 "^-+ \\(Start of \\)?Forwarded message"
117 "^-+ End \\(of \\)?forwarded message" 117 "^-+ End \\(of \\)?forwarded message"
118 mm-uu-forward-extract 118 mm-uu-forward-extract
@@ -186,13 +186,12 @@ To disable dissecting shar codes, for instance, add
186(defun mm-uu-copy-to-buffer (&optional from to) 186(defun mm-uu-copy-to-buffer (&optional from to)
187 "Copy the contents of the current buffer to a fresh buffer. 187 "Copy the contents of the current buffer to a fresh buffer.
188Return that buffer." 188Return that buffer."
189 (save-excursion 189 (let ((obuf (current-buffer))
190 (let ((obuf (current-buffer)) 190 (coding-system
191 (coding-system 191 ;; Might not exist in non-MULE XEmacs
192 ;; Might not exist in non-MULE XEmacs 192 (when (boundp 'buffer-file-coding-system)
193 (when (boundp 'buffer-file-coding-system) 193 buffer-file-coding-system)))
194 buffer-file-coding-system))) 194 (with-current-buffer (generate-new-buffer " *mm-uu*")
195 (set-buffer (generate-new-buffer " *mm-uu*"))
196 (setq buffer-file-coding-system coding-system) 195 (setq buffer-file-coding-system coding-system)
197 (insert-buffer-substring obuf from to) 196 (insert-buffer-substring obuf from to)
198 (current-buffer)))) 197 (current-buffer))))
@@ -496,5 +495,5 @@ Return that buffer."
496 495
497(provide 'mm-uu) 496(provide 'mm-uu)
498 497
499;;; arch-tag: 7db076bf-53db-4320-aa19-ca76a1d2ab2c 498;; arch-tag: 7db076bf-53db-4320-aa19-ca76a1d2ab2c
500;;; mm-uu.el ends here 499;;; mm-uu.el ends here
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 9721a054f06..a44a4560cf8 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -942,13 +942,15 @@ See Info node `(emacs-mime)Composing'.
942 description)) 942 description))
943 943
944(defun mml-minibuffer-read-disposition (type &optional default) 944(defun mml-minibuffer-read-disposition (type &optional default)
945 (let* ((default (or default 945 (unless default (setq default
946 (if (string-match "^text/.*" type) 946 (if (and (string-match "\\`text/" type)
947 "inline" 947 (not (string-match "\\`text/rtf\\'" type)))
948 "attachment"))) 948 "inline"
949 (disposition (completing-read "Disposition: " 949 "attachment")))
950 '(("attachment") ("inline") ("")) 950 (let ((disposition (completing-read
951 nil t))) 951 (format "Disposition (default %s): " default)
952 '(("attachment") ("inline") (""))
953 nil t nil nil default)))
952 (if (not (equal disposition "")) 954 (if (not (equal disposition ""))
953 disposition 955 disposition
954 default))) 956 default)))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 6160391df95..93c34af7a5c 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -217,13 +217,13 @@ ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
217 (intern (upcase name)))))) 217 (intern (upcase name))))))
218 arglist))) 218 arglist)))
219 219
220;;; Could be this, if we make symbol-file do the work below. 220;; Could be this, if we make symbol-file do the work below.
221;;; (defun help-C-file-name (subr-or-var kind) 221;; (defun help-C-file-name (subr-or-var kind)
222;;; "Return the name of the C file where SUBR-OR-VAR is defined. 222;; "Return the name of the C file where SUBR-OR-VAR is defined.
223;;; KIND should be `var' for a variable or `subr' for a subroutine." 223;; KIND should be `var' for a variable or `subr' for a subroutine."
224;;; (symbol-file (if (symbolp subr-or-var) subr-or-var 224;; (symbol-file (if (symbolp subr-or-var) subr-or-var
225;;; (subr-name subr-or-var)) 225;; (subr-name subr-or-var))
226;;; (if (eq kind 'var) 'defvar 'defun))) 226;; (if (eq kind 'var) 'defvar 'defun)))
227;;;###autoload 227;;;###autoload
228(defun help-C-file-name (subr-or-var kind) 228(defun help-C-file-name (subr-or-var kind)
229 "Return the name of the C file where SUBR-OR-VAR is defined. 229 "Return the name of the C file where SUBR-OR-VAR is defined.
@@ -715,5 +715,5 @@ BUFFER should be a buffer or a buffer name."
715 715
716(provide 'help-fns) 716(provide 'help-fns)
717 717
718;;; arch-tag: 9e10331c-ae81-4d13-965d-c4819aaab0b3 718;; arch-tag: 9e10331c-ae81-4d13-965d-c4819aaab0b3
719;;; help-fns.el ends here 719;;; help-fns.el ends here
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 3349bc058f3..831db8cc0cc 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -631,5 +631,5 @@ For the cross-reference format, see `help-make-xrefs'."
631 631
632(provide 'help-mode) 632(provide 'help-mode)
633 633
634;;; arch-tag: 850954ae-3725-4cb4-8e91-0bf6d52d6b0b 634;; arch-tag: 850954ae-3725-4cb4-8e91-0bf6d52d6b0b
635;;; help-mode.el ends here 635;;; help-mode.el ends here
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 894633a1f34..35423ec0335 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -287,7 +287,7 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
287 (set (make-local-variable 'eldoc-documentation-function) 287 (set (make-local-variable 'eldoc-documentation-function)
288 'hexl-print-current-point-info) 288 'hexl-print-current-point-info)
289 (eldoc-add-command-completions "hexl-") 289 (eldoc-add-command-completions "hexl-")
290 (eldoc-remove-command "hexl-save-buffer" 290 (eldoc-remove-command "hexl-save-buffer"
291 "hexl-current-address") 291 "hexl-current-address")
292 292
293 (if hexl-follow-ascii (hexl-follow-ascii 1))) 293 (if hexl-follow-ascii (hexl-follow-ascii 1)))
@@ -918,7 +918,7 @@ Customize the variable `hexl-follow-ascii' to disable this feature."
918(defun hexl-activate-ruler () 918(defun hexl-activate-ruler ()
919 "Activate `ruler-mode'" 919 "Activate `ruler-mode'"
920 (require 'ruler-mode) 920 (require 'ruler-mode)
921 (set (make-local-variable 'ruler-mode-ruler-function) 921 (set (make-local-variable 'ruler-mode-ruler-function)
922 'hexl-mode-ruler) 922 'hexl-mode-ruler)
923 (ruler-mode 1)) 923 (ruler-mode 1))
924 924
@@ -929,7 +929,7 @@ Customize the variable `hexl-follow-ascii' to disable this feature."
929 (with-no-warnings 929 (with-no-warnings
930 (set (make-local-variable 'hl-line-range-function) 930 (set (make-local-variable 'hl-line-range-function)
931 'hexl-highlight-line-range) 931 'hexl-highlight-line-range)
932 (set (make-local-variable 'hl-line-face) 932 (set (make-local-variable 'hl-line-face)
933 'highlight)) 933 'highlight))
934 (hl-line-mode 1)) 934 (hl-line-mode 1))
935 935
@@ -1009,7 +1009,8 @@ This function is assumed to be used as call back function for `hl-line-mode'."
1009 (define-key hexl-mode-map "\C-e" 'hexl-end-of-line) 1009 (define-key hexl-mode-map "\C-e" 'hexl-end-of-line)
1010 (define-key hexl-mode-map "\C-f" 'hexl-forward-char) 1010 (define-key hexl-mode-map "\C-f" 'hexl-forward-char)
1011 1011
1012 (if (not (eq (key-binding (char-to-string help-char)) 'help-command)) 1012 (if (not (memq (key-binding (char-to-string help-char))
1013 '(help-command ehelp-command)))
1013 (define-key hexl-mode-map (char-to-string help-char) 'undefined)) 1014 (define-key hexl-mode-map (char-to-string help-char) 'undefined))
1014 1015
1015 (define-key hexl-mode-map "\C-k" 'undefined) 1016 (define-key hexl-mode-map "\C-k" 'undefined)
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 59468147cb7..df95766641b 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -81,11 +81,11 @@
81;; 81;;
82;; Example usage: 82;; Example usage:
83;; (defun my-highlight-changes-enable-hook () 83;; (defun my-highlight-changes-enable-hook ()
84;; (add-hook 'local-write-file-hooks 'highlight-changes-rotate-faces) 84;; (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)
85;; ) 85;; )
86;; 86;;
87;; (defun my-highlight-changes-disable-hook () 87;; (defun my-highlight-changes-disable-hook ()
88;; (remove-hook 'local-write-file-hooks 'highlight-changes-rotate-faces) 88;; (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t)
89;; ) 89;; )
90;; 90;;
91;; (add-hook 'highlight-changes-enable-hook 'my-highlight-changes-enable-hook) 91;; (add-hook 'highlight-changes-enable-hook 'my-highlight-changes-enable-hook)
@@ -213,7 +213,7 @@
213;; indentation on inserts gets underlined (which can look pretty ugly!). 213;; indentation on inserts gets underlined (which can look pretty ugly!).
214 214
215(defface highlight-changes 215(defface highlight-changes
216 '((((min-colors 88) (class color)) (:foreground "red1" )) 216 '((((min-colors 88) (class color)) (:foreground "red1"))
217 (((class color)) (:foreground "red" )) 217 (((class color)) (:foreground "red" ))
218 (t (:inverse-video t))) 218 (t (:inverse-video t)))
219 "Face used for highlighting changes." 219 "Face used for highlighting changes."
@@ -270,7 +270,7 @@ This variable must be set to one of the symbols `active' or `passive'."
270(defcustom highlight-changes-global-initial-state 'passive 270(defcustom highlight-changes-global-initial-state 'passive
271 "*What state `global-highlight-changes' should start in. 271 "*What state `global-highlight-changes' should start in.
272This is used if `global-highlight-changes' is called with no argument. 272This is used if `global-highlight-changes' is called with no argument.
273This variable must be set to either `active' or `passive'" 273This variable must be set to either `active' or `passive'."
274 :type '(choice (const :tag "Active" active) 274 :type '(choice (const :tag "Active" active)
275 (const :tag "Passive" passive)) 275 (const :tag "Passive" passive))
276 :group 'highlight-changes) 276 :group 'highlight-changes)
@@ -302,8 +302,8 @@ A list means the elements are major modes suitable for Highlight
302Changes mode, or a list whose first element is `not' followed by major 302Changes mode, or a list whose first element is `not' followed by major
303modes which are not suitable. 303modes which are not suitable.
304 304
305t means the buffer is suitable if it is visiting a file and its name 305A value of t means the buffer is suitable if it is visiting a file and
306does not begin with ` ' or `*'. 306its name does not begin with ` ' or `*'.
307 307
308A value of nil means no buffers are suitable for `global-highlight-changes' 308A value of nil means no buffers are suitable for `global-highlight-changes'
309\(effectively disabling the mode). 309\(effectively disabling the mode).
@@ -488,7 +488,7 @@ This is the opposite of `hilit-chg-display-changes'."
488 "Fix change overlays in region between BEG and END. 488 "Fix change overlays in region between BEG and END.
489 489
490Ensure the overlays agree with the changes as determined from 490Ensure the overlays agree with the changes as determined from
491the text properties of type `hilit-chg' ." 491the text properties of type `hilit-chg'."
492 ;; Remove or alter overlays in region beg..end 492 ;; Remove or alter overlays in region beg..end
493 (let (ov-start ov-end props q) 493 (let (ov-start ov-end props q)
494 ;; temp for debugging: 494 ;; temp for debugging:
@@ -641,12 +641,12 @@ Functions:
641\\[highlight-changes-remove-highlight] - remove the change face from the region 641\\[highlight-changes-remove-highlight] - remove the change face from the region
642\\[highlight-changes-rotate-faces] - rotate different \"ages\" of changes \ 642\\[highlight-changes-rotate-faces] - rotate different \"ages\" of changes \
643through 643through
644 various faces. 644 various faces
645 645
646Hook variables: 646Hook variables:
647`highlight-changes-enable-hook' - when enabling Highlight Changes mode. 647`highlight-changes-enable-hook' - when enabling Highlight Changes mode
648`highlight-changes-toggle-hook' - when entering active or passive state 648`highlight-changes-toggle-hook' - when entering active or passive state
649`highlight-changes-disable-hook' - when turning off Highlight Changes mode." 649`highlight-changes-disable-hook' - when turning off Highlight Changes mode"
650 (interactive "P") 650 (interactive "P")
651 (if (or (display-color-p) 651 (if (or (display-color-p)
652 (and (fboundp 'x-display-grayscale-p) (x-display-grayscale-p))) 652 (and (fboundp 'x-display-grayscale-p) (x-display-grayscale-p)))
@@ -781,11 +781,11 @@ of `highlight-changes-face-list', one level older changes are shown in
781face described by the second element, and so on. Very old changes remain 781face described by the second element, and so on. Very old changes remain
782shown in the last face in the list. 782shown in the last face in the list.
783 783
784You can automatically rotate colors when the buffer is saved 784You can automatically rotate colors when the buffer is saved by adding
785by adding the following to `local-write-file-hooks', by evaling it in the 785this function to `write-file-functions' as a buffer-local value. To do
786buffer to be saved): 786this, eval the following in the buffer to be saved:
787 787
788 \(add-hook 'local-write-file-hooks 'highlight-changes-rotate-faces)" 788 \(add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)"
789 (interactive) 789 (interactive)
790 ;; If not in active mode do nothing but don't complain because this 790 ;; If not in active mode do nothing but don't complain because this
791 ;; may be bound to a hook. 791 ;; may be bound to a hook.
@@ -800,8 +800,7 @@ buffer to be saved):
800 ;; and display them all if active 800 ;; and display them all if active
801 (if (eq highlight-changes-mode 'active) 801 (if (eq highlight-changes-mode 'active)
802 (hilit-chg-display-changes)))) 802 (hilit-chg-display-changes))))
803 ;; This always returns nil so it is safe to use in 803 ;; This always returns nil so it is safe to use in write-file-functions
804 ;; local-write-file-hook
805 nil) 804 nil)
806 805
807;; ======================================================================== 806;; ========================================================================
@@ -886,7 +885,7 @@ The default is the current buffer and the one in the next window.
886If either buffer is modified and is visiting a file, you are prompted 885If either buffer is modified and is visiting a file, you are prompted
887to save the file. 886to save the file.
888 887
889Unless the buffer is unmodified and visiting a file, the buffer is 888Unless the buffer is unmodified and visiting a file, the buffer is
890written to a temporary file for comparison. 889written to a temporary file for comparison.
891 890
892If a buffer is read-only, differences will be highlighted but no property 891If a buffer is read-only, differences will be highlighted but no property
@@ -1110,9 +1109,9 @@ variable `highlight-changes-global-changes-existing-buffers' is non-nil).
1110 1109
1111A buffer is appropriate for Highlight Changes mode if all these are true: 1110A buffer is appropriate for Highlight Changes mode if all these are true:
1112- the buffer is not a special buffer (one whose name begins with 1111- the buffer is not a special buffer (one whose name begins with
1113 `*' or ` ') 1112 `*' or ` '),
1114- the buffer's mode is suitable as per variable 1113- the buffer's mode is suitable as per variable
1115 `highlight-changes-global-modes' 1114 `highlight-changes-global-modes',
1116- Highlight Changes mode is not already on for this buffer. 1115- Highlight Changes mode is not already on for this buffer.
1117 1116
1118This function is called from `hilit-chg-update-all-buffers' or 1117This function is called from `hilit-chg-update-all-buffers' or
diff --git a/lisp/ido.el b/lisp/ido.el
index 97adb97bdd5..9d7b4877fe8 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -101,9 +101,9 @@
101;; The list in {...} are the matching buffers, most recent first 101;; The list in {...} are the matching buffers, most recent first
102;; (buffers visible in the current frame are put at the end of the 102;; (buffers visible in the current frame are put at the end of the
103;; list by default). At any time I can select the item at the head of 103;; list by default). At any time I can select the item at the head of
104;; the list by pressing RET. I can also bring the put the first 104;; the list by pressing RET. I can also put the first element at the
105;; element at the end of the list by pressing C-s or [right], or put 105;; end of the list by pressing C-s or [right], or bring the last
106;; the last element at the head of the list by pressing C-r or [left]. 106;; element to the head of the list by pressing C-r or [left].
107;; 107;;
108;; The item in [...] indicates what can be added to my input by 108;; The item in [...] indicates what can be added to my input by
109;; pressing TAB. In this case, I will get "3" added to my input. 109;; pressing TAB. In this case, I will get "3" added to my input.
@@ -210,8 +210,7 @@
210;; Example: 210;; Example:
211;; 211;;
212;; If you have again two Buffers "123456" and "123" then hitting "2" does 212;; If you have again two Buffers "123456" and "123" then hitting "2" does
213;; not match because "2" is not a PREFIX in any of the buffer-names. This 213;; not match because "2" is not a PREFIX in any of the buffer-names.
214;; is the only difference between the substring and prefix matching.
215 214
216;; Flexible matching 215;; Flexible matching
217;; ----------------- 216;; -----------------
@@ -236,14 +235,10 @@
236;; 235;;
237;; There is limited provision for regexp matching within ido, 236;; There is limited provision for regexp matching within ido,
238;; enabled through `ido-enable-regexp' (toggle with C-t). 237;; enabled through `ido-enable-regexp' (toggle with C-t).
239;; This allows you to type `c$' for example and see all file names 238;; This allows you to type `[ch]$' for example and see all file names
240;; ending in `c'. This facility is quite limited though in two 239;; ending in `c' or `h'.
241;; respects. First, you can't currently type in expressions like 240;;
242;; `[0-9]' directly -- you have to type them in when ido-enable-regexp 241;; Note: ido-style completion is inhibited when you enable regexp matching.
243;; is nil and then toggle on the regexp functionality. Likewise,
244;; don't enter an expression containing `\' in regexp mode. If you
245;; try, ido gets confused, so just hit C-g and try again. Secondly,
246;; no completion mechanism is currently offered with regexp searching.
247 242
248 243
249;; Customization 244;; Customization
@@ -1405,7 +1400,7 @@ This function also adds a hook to the minibuffer."
1405 (define-key map "\C-s" 'ido-next-match) 1400 (define-key map "\C-s" 'ido-next-match)
1406 (define-key map "\C-t" 'ido-toggle-regexp) 1401 (define-key map "\C-t" 'ido-toggle-regexp)
1407 (define-key map "\C-z" 'ido-undo-merge-work-directory) 1402 (define-key map "\C-z" 'ido-undo-merge-work-directory)
1408 (define-key map [(control ? )] 'ido-restrict-to-matches) 1403 (define-key map [(control ?\s)] 'ido-restrict-to-matches)
1409 (define-key map [(control ?@)] 'ido-restrict-to-matches) 1404 (define-key map [(control ?@)] 'ido-restrict-to-matches)
1410 (define-key map [right] 'ido-next-match) 1405 (define-key map [right] 'ido-next-match)
1411 (define-key map [left] 'ido-prev-match) 1406 (define-key map [left] 'ido-prev-match)
@@ -1436,7 +1431,7 @@ This function also adds a hook to the minibuffer."
1436 (define-key map [(meta ?m)] 'ido-make-directory) 1431 (define-key map [(meta ?m)] 'ido-make-directory)
1437 (define-key map [(meta ?n)] 'ido-next-work-directory) 1432 (define-key map [(meta ?n)] 'ido-next-work-directory)
1438 (define-key map [(meta ?o)] 'ido-prev-work-file) 1433 (define-key map [(meta ?o)] 'ido-prev-work-file)
1439 (define-key map [(meta ?O)] 'ido-next-work-file) 1434 (define-key map [(meta control ?o)] 'ido-next-work-file)
1440 (define-key map [(meta ?p)] 'ido-prev-work-directory) 1435 (define-key map [(meta ?p)] 'ido-prev-work-directory)
1441 (define-key map [(meta ?s)] 'ido-merge-work-directories) 1436 (define-key map [(meta ?s)] 'ido-merge-work-directories)
1442 ) 1437 )
@@ -2028,7 +2023,8 @@ If INITIAL is non-nil, it specifies the initial input string."
2028 (setq item 'file)) 2023 (setq item 'file))
2029 (let ((ido-current-directory (ido-expand-directory default)) 2024 (let ((ido-current-directory (ido-expand-directory default))
2030 (ido-context-switch-command switch-cmd) 2025 (ido-context-switch-command switch-cmd)
2031 ido-directory-nonreadable ido-directory-too-big 2026 ido-directory-nonreadable ido-directory-too-big
2027 (minibuffer-completing-file-name t)
2032 filename) 2028 filename)
2033 2029
2034 (if (or (not ido-mode) (ido-is-slow-ftp-host)) 2030 (if (or (not ido-mode) (ido-is-slow-ftp-host))
@@ -2056,7 +2052,7 @@ If INITIAL is non-nil, it specifies the initial input string."
2056 2052
2057 ((and ido-use-filename-at-point 2053 ((and ido-use-filename-at-point
2058 (setq fn (if (eq ido-use-filename-at-point 'guess) 2054 (setq fn (if (eq ido-use-filename-at-point 'guess)
2059 (ffap-guesser) 2055 (with-no-warnings (ffap-guesser))
2060 (ffap-string-at-point))) 2056 (ffap-string-at-point)))
2061 (not (string-match "^http:/" fn)) 2057 (not (string-match "^http:/" fn))
2062 (setq d (file-name-directory fn)) 2058 (setq d (file-name-directory fn))
@@ -4215,6 +4211,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
4215 4211
4216(put 'dired-do-rename 'ido 'ignore) 4212(put 'dired-do-rename 'ido 'ignore)
4217(put 'ibuffer-find-file 'ido 'find-file) 4213(put 'ibuffer-find-file 'ido 'find-file)
4214(put 'dired-other-window 'ido 'dir)
4218 4215
4219;;;###autoload 4216;;;###autoload
4220(defun ido-read-buffer (prompt &optional default require-match) 4217(defun ido-read-buffer (prompt &optional default require-match)
@@ -4255,6 +4252,7 @@ See `read-file-name' for additional parameters."
4255 (ido-context-switch-command 4252 (ido-context-switch-command
4256 (if (eq (get this-command 'ido) 'find-file) nil 'ignore)) 4253 (if (eq (get this-command 'ido) 'find-file) nil 'ignore))
4257 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) 4254 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
4255 (minibuffer-completing-file-name t)
4258 (ido-current-directory (ido-expand-directory dir)) 4256 (ido-current-directory (ido-expand-directory dir))
4259 (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) 4257 (ido-directory-nonreadable (not (file-readable-p ido-current-directory)))
4260 (ido-directory-too-big (and (not ido-directory-nonreadable) 4258 (ido-directory-too-big (and (not ido-directory-nonreadable)
@@ -4287,6 +4285,7 @@ See `read-file-name' for additional parameters."
4287Read directory name, prompting with PROMPT and completing in directory DIR. 4285Read directory name, prompting with PROMPT and completing in directory DIR.
4288See `read-directory-name' for additional parameters." 4286See `read-directory-name' for additional parameters."
4289 (let* (filename 4287 (let* (filename
4288 (minibuffer-completing-file-name t)
4290 (ido-context-switch-command 'ignore) 4289 (ido-context-switch-command 'ignore)
4291 ido-saved-vc-hb 4290 ido-saved-vc-hb
4292 (ido-current-directory (ido-expand-directory dir)) 4291 (ido-current-directory (ido-expand-directory dir))
diff --git a/lisp/image-file.el b/lisp/image-file.el
index 8f74dd63c0a..be95470184c 100644
--- a/lisp/image-file.el
+++ b/lisp/image-file.el
@@ -118,6 +118,7 @@ the command `insert-file-contents'."
118 (create-image data nil t)) 118 (create-image data nil t))
119 (props 119 (props
120 `(display ,image 120 `(display ,image
121 yank-handler (image-file-yank-handler)
121 intangible ,image 122 intangible ,image
122 rear-nonsticky (display intangible) 123 rear-nonsticky (display intangible)
123 ;; This a cheap attempt to make the whole buffer 124 ;; This a cheap attempt to make the whole buffer
@@ -135,6 +136,19 @@ the command `insert-file-contents'."
135 (setq truncate-lines t)))) 136 (setq truncate-lines t))))
136 rval)) 137 rval))
137 138
139;; We use a yank-handler to make yanked images unique, so that
140;; yanking two copies of the same image next to each other are
141;; recognized as two different images.
142(defun image-file-yank-handler (string)
143 "Yank handler for inserting an image into a buffer."
144 (let ((image (get-text-property 0 'display string)))
145 (if (consp image)
146 (put-text-property 0 (length string)
147 'display
148 (cons (car image) (cdr image))
149 string))
150 (insert string)))
151
138(put 'image-file-handler 'safe-magic t) 152(put 'image-file-handler 'safe-magic t)
139(defun image-file-handler (operation &rest args) 153(defun image-file-handler (operation &rest args)
140 "Filename handler for inserting image files. 154 "Filename handler for inserting image files.
diff --git a/lisp/info.el b/lisp/info.el
index 695d67c3647..a7f4c494244 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -96,7 +96,7 @@ The Lisp code is executed when the node is selected.")
96(defface info-xref-visited 96(defface info-xref-visited
97 '((default :inherit info-xref) 97 '((default :inherit info-xref)
98 (((class color) (background light)) :foreground "magenta4") 98 (((class color) (background light)) :foreground "magenta4")
99 (((class color) (background dark)) :foreground "magenta3")) ;"violet"? 99 (((class color) (background dark)) :foreground "violet"))
100 "Face for visited Info cross-references." 100 "Face for visited Info cross-references."
101 :group 'info) 101 :group 'info)
102 102
@@ -3527,7 +3527,10 @@ the variable `Info-file-list-for-emacs'."
3527 (Info-goto-emacs-command-node command))))) 3527 (Info-goto-emacs-command-node command)))))
3528 3528
3529(defface info-title-1 3529(defface info-title-1
3530 '((((type tty pc) (class color)) :foreground "green" :weight bold) 3530 '((((type tty pc) (class color) (background light))
3531 :foreground "green" :weight bold)
3532 (((type tty pc) (class color) (background dark))
3533 :foreground "yellow" :weight bold)
3531 (t :height 1.2 :inherit info-title-2)) 3534 (t :height 1.2 :inherit info-title-2))
3532 "Face for info titles at level 1." 3535 "Face for info titles at level 1."
3533 :group 'info) 3536 :group 'info)
diff --git a/lisp/international/isearch-x.el b/lisp/international/isearch-x.el
index 46193d24d2c..1d0d50b01ac 100644
--- a/lisp/international/isearch-x.el
+++ b/lisp/international/isearch-x.el
@@ -98,9 +98,9 @@
98(defun isearch-process-search-multibyte-characters (last-char) 98(defun isearch-process-search-multibyte-characters (last-char)
99 (if (eq this-command 'isearch-printing-char) 99 (if (eq this-command 'isearch-printing-char)
100 (let ((overriding-terminal-local-map nil) 100 (let ((overriding-terminal-local-map nil)
101 (prompt (concat (isearch-message-prefix))) 101 (prompt (isearch-message-prefix))
102 (minibuffer-local-map isearch-minibuffer-local-map) 102 (minibuffer-local-map isearch-minibuffer-local-map)
103 str) 103 str junk-hist)
104 (if isearch-input-method-function 104 (if isearch-input-method-function
105 (let (;; Let input method work rather tersely. 105 (let (;; Let input method work rather tersely.
106 (input-method-verbose-flag nil)) 106 (input-method-verbose-flag nil))
@@ -108,8 +108,8 @@
108 (cons 'with-input-method 108 (cons 'with-input-method
109 (cons last-char unread-command-events)) 109 (cons last-char unread-command-events))
110 ;; Inherit current-input-method in a minibuffer. 110 ;; Inherit current-input-method in a minibuffer.
111 str (read-string prompt isearch-message nil nil t)) 111 str (read-string prompt isearch-message 'junk-hist nil t))
112 (if (not str) 112 (if (or (not str) (< (length str) (length isearch-message)))
113 ;; All inputs were deleted while the input method 113 ;; All inputs were deleted while the input method
114 ;; was working. 114 ;; was working.
115 (setq str "") 115 (setq str "")
@@ -124,7 +124,7 @@
124 (setq unread-command-events 124 (setq unread-command-events
125 (cons 'with-keyboard-coding 125 (cons 'with-keyboard-coding
126 (cons last-char unread-command-events)) 126 (cons last-char unread-command-events))
127 str (read-string prompt))) 127 str (read-string prompt nil 'junk-hist)))
128 128
129 (if (and str (> (length str) 0)) 129 (if (and str (> (length str) 0))
130 (let ((unread-command-events nil)) 130 (let ((unread-command-events nil))
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index b84fb380802..cdb76a2ccc1 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -800,7 +800,7 @@ returned without any user interaction. See also the command
800`prefer-coding-system'. 800`prefer-coding-system'.
801 801
802However, the user is queried if the chosen coding system is 802However, the user is queried if the chosen coding system is
803inconsistent with what would be selected by `set-auto-coding' from 803inconsistent with what would be selected by `find-auto-coding' from
804coding cookies &c. if the contents of the region were read from a 804coding cookies &c. if the contents of the region were read from a
805file. (That could lead to data corruption in a file subsequently 805file. (That could lead to data corruption in a file subsequently
806re-visited and edited.) 806re-visited and edited.)
@@ -830,7 +830,33 @@ and TO is ignored."
830 (not (listp default-coding-system))) 830 (not (listp default-coding-system)))
831 (setq default-coding-system (list default-coding-system))) 831 (setq default-coding-system (list default-coding-system)))
832 832
833 (let ((no-other-defaults nil)) 833 (let ((no-other-defaults nil)
834 auto-cs)
835 (unless (or (stringp from) find-file-literally)
836 ;; Find an auto-coding that is specified for the the current
837 ;; buffer and file from the region FROM and TO.
838 (save-excursion
839 (save-restriction
840 (widen)
841 (goto-char from)
842 (setq auto-cs (find-auto-coding (or file buffer-file-name "")
843 (- to from)))
844 (if auto-cs
845 (if (coding-system-p (car auto-cs))
846 (setq auto-cs (car auto-cs))
847 (display-warning
848 :warning
849 (format "\
850Invalid coding system `%s' is specified
851for the current buffer/file by the %s.
852It is highly recommended to fix it before writing to a file."
853 (car auto-cs)
854 (if (eq (cdr auto-cs) :coding) ":coding tag"
855 (format "variable `%s'" (cdr auto-cs)))))
856 (or (yes-or-no-p "Really proceed with writing? ")
857 (error "Save aborted"))
858 (setq auto-cs nil))))))
859
834 (if (eq (car default-coding-system) t) 860 (if (eq (car default-coding-system) t)
835 (setq no-other-defaults t 861 (setq no-other-defaults t
836 default-coding-system (cdr default-coding-system))) 862 default-coding-system (cdr default-coding-system)))
@@ -840,6 +866,15 @@ and TO is ignored."
840 (mapcar (function (lambda (x) (cons x (coding-system-base x)))) 866 (mapcar (function (lambda (x) (cons x (coding-system-base x))))
841 default-coding-system)) 867 default-coding-system))
842 868
869 (if (and auto-cs (not no-other-defaults))
870 ;; If the file has a coding cookie, try to use it before anything
871 ;; else (i.e. before default-coding-system which will typically come
872 ;; from file-coding-system-alist).
873 (let ((base (coding-system-base auto-cs)))
874 (or (memq base '(nil undecided))
875 (rassq base default-coding-system)
876 (push (cons auto-cs base) default-coding-system))))
877
843 ;; From now on, the list of defaults is reversed. 878 ;; From now on, the list of defaults is reversed.
844 (setq default-coding-system (nreverse default-coding-system)) 879 (setq default-coding-system (nreverse default-coding-system))
845 880
@@ -871,52 +906,45 @@ and TO is ignored."
871 (coding-system-get preferred :mime-charset) 906 (coding-system-get preferred :mime-charset)
872 (not (rassq base default-coding-system)) 907 (not (rassq base default-coding-system))
873 (push (cons preferred base) 908 (push (cons preferred base)
874 default-coding-system))))) 909 default-coding-system))))
875 910
876 (if select-safe-coding-system-accept-default-p 911 (if select-safe-coding-system-accept-default-p
877 (setq accept-default-p select-safe-coding-system-accept-default-p)) 912 (setq accept-default-p select-safe-coding-system-accept-default-p))
878 913
879 (let ((codings (find-coding-systems-region from to)) 914 (let ((codings (find-coding-systems-region from to))
880 (coding-system nil) 915 (coding-system nil)
881 safe rejected unsafe) 916 safe rejected unsafe)
882 ;; Classify the defaults into safe, rejected, and unsafe. 917 ;; Classify the defaults into safe, rejected, and unsafe.
883 (dolist (elt default-coding-system) 918 (dolist (elt default-coding-system)
884 (if (or (eq (car codings) 'undecided) 919 (if (or (eq (car codings) 'undecided)
885 (memq (cdr elt) codings)) 920 (memq (cdr elt) codings))
886 (if (and (functionp accept-default-p) 921 (if (and (functionp accept-default-p)
887 (not (funcall accept-default-p (cdr elt)))) 922 (not (funcall accept-default-p (cdr elt))))
888 (push (car elt) rejected) 923 (push (car elt) rejected)
889 (push (car elt) safe)) 924 (push (car elt) safe))
890 (push (car elt) unsafe))) 925 (push (car elt) unsafe)))
891 (if safe 926 (if safe
892 (setq coding-system (car safe))) 927 (setq coding-system (car safe)))
893 928
894 ;; If all the defaults failed, ask a user. 929 ;; If all the defaults failed, ask a user.
895 (unless coding-system 930 (unless coding-system
896 (setq coding-system (select-safe-coding-system-interactively 931 (setq coding-system (select-safe-coding-system-interactively
897 from to codings unsafe rejected (car codings)))) 932 from to codings unsafe rejected (car codings))))
898 933
899 (if (and coding-system (vectorp (coding-system-eol-type coding-system))) 934 (if (and coding-system (vectorp (coding-system-eol-type coding-system)))
900 (let ((eol (coding-system-eol-type buffer-file-coding-system))) 935 (let ((eol (coding-system-eol-type buffer-file-coding-system)))
901 (if (numberp eol) 936 (if (numberp eol)
902 (setq coding-system 937 (setq coding-system
903 (coding-system-change-eol-conversion coding-system eol))))) 938 (coding-system-change-eol-conversion coding-system eol)))))
904 939
905 ;; Check we're not inconsistent with what `coding:' spec &c would 940 ;; Check we're not inconsistent with what `coding:' spec &c would
906 ;; give when file is re-read. 941 ;; give when file is re-read.
907 ;; But don't do this if we explicitly ignored the cookie 942 ;; But don't do this if we explicitly ignored the cookie
908 ;; by using `find-file-literally'. 943 ;; by using `find-file-literally'.
909 (unless (or (stringp from) 944 (when (and auto-cs
910 find-file-literally 945 (not (and
911 (and coding-system 946 coding-system
912 (memq (coding-system-type coding-system) '(0 5)))) 947 (memq (coding-system-type coding-system) '(0 5)))))
913 (let ((auto-cs (save-excursion
914 (save-restriction
915 (widen)
916 (narrow-to-region from to)
917 (goto-char (point-min))
918 (set-auto-coding (or file buffer-file-name "")
919 (buffer-size))))))
920 ;; Merge coding-system and auto-cs as far as possible. 948 ;; Merge coding-system and auto-cs as far as possible.
921 (if (not coding-system) 949 (if (not coding-system)
922 (setq coding-system auto-cs) 950 (setq coding-system auto-cs)
@@ -948,8 +976,8 @@ and TO is ignored."
948 (format "Selected encoding %s disagrees with \ 976 (format "Selected encoding %s disagrees with \
949%s specified by file contents. Really save (else edit coding cookies \ 977%s specified by file contents. Really save (else edit coding cookies \
950and try again)? " coding-system auto-cs)) 978and try again)? " coding-system auto-cs))
951 (error "Save aborted"))))) 979 (error "Save aborted"))))
952 coding-system)) 980 coding-system)))
953 981
954(setq select-safe-coding-system-function 'select-safe-coding-system) 982(setq select-safe-coding-system-function 'select-safe-coding-system)
955 983
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 2ba0c034d92..b66ef2cd028 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1576,8 +1576,8 @@ This is used for loading and byte-compiling Emacs Lisp files.")
1576 (setq alist (cdr alist)))) 1576 (setq alist (cdr alist))))
1577 coding-system)) 1577 coding-system))
1578 1578
1579(defun set-auto-coding (filename size) 1579(defun find-auto-coding (filename size)
1580 "Return coding system for a file FILENAME of which SIZE bytes follow point. 1580 "Find a coding system for a file FILENAME of which SIZE bytes follow point.
1581These bytes should include at least the first 1k of the file 1581These bytes should include at least the first 1k of the file
1582and the last 3k of the file, but the middle may be omitted. 1582and the last 3k of the file, but the middle may be omitted.
1583 1583
@@ -1591,12 +1591,21 @@ contents of the current buffer following point against
1591succeed, it checks to see if any function in `auto-coding-functions' 1591succeed, it checks to see if any function in `auto-coding-functions'
1592gives a match. 1592gives a match.
1593 1593
1594The return value is the specified coding system, or nil if nothing is 1594If a coding system is specifed, the return value is a
1595specified. 1595cons (CODING . SOURCE), where CODING is the specified coding
1596system and SOURCE is a symbol `auto-coding-alist',
1597`auto-coding-regexp-alist', `coding:', or `auto-coding-functions'
1598indicating by what CODING is specified. Note that the validity
1599of CODING is not checked; it's callers responsibility to check
1600it.
1601
1602If nothing is specified, the return value is nil.
1596 1603
1597The variable `set-auto-coding-function' (which see) is set to this 1604The variable `set-auto-coding-function' (which see) is set to this
1598function by default." 1605function by default."
1599 (or (auto-coding-alist-lookup filename) 1606 (or (let ((coding-system (auto-coding-alist-lookup filename)))
1607 (if coding-system
1608 (cons coding-system 'auto-coding-alist)))
1600 ;; Try using `auto-coding-regexp-alist'. 1609 ;; Try using `auto-coding-regexp-alist'.
1601 (save-excursion 1610 (save-excursion
1602 (let ((alist auto-coding-regexp-alist) 1611 (let ((alist auto-coding-regexp-alist)
@@ -1606,7 +1615,8 @@ function by default."
1606 (when (re-search-forward regexp (+ (point) size) t) 1615 (when (re-search-forward regexp (+ (point) size) t)
1607 (setq coding-system (cdr (car alist))))) 1616 (setq coding-system (cdr (car alist)))))
1608 (setq alist (cdr alist))) 1617 (setq alist (cdr alist)))
1609 coding-system)) 1618 (if coding-system
1619 (cons coding-system 'auto-coding-regexp-alist))))
1610 (let* ((case-fold-search t) 1620 (let* ((case-fold-search t)
1611 (head-start (point)) 1621 (head-start (point))
1612 (head-end (+ head-start (min size 1024))) 1622 (head-end (+ head-start (min size 1024)))
@@ -1640,9 +1650,7 @@ function by default."
1640 (re-search-forward 1650 (re-search-forward
1641 "\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)" 1651 "\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)"
1642 head-end t)) 1652 head-end t))
1643 (setq coding-system (intern (match-string 2))) 1653 (setq coding-system (intern (match-string 2))))))
1644 (or (coding-system-p coding-system)
1645 (setq coding-system nil)))))
1646 1654
1647 ;; If no coding: tag in the head, check the tail. 1655 ;; If no coding: tag in the head, check the tail.
1648 ;; Here we must pay attention to the case that the end-of-line 1656 ;; Here we must pay attention to the case that the end-of-line
@@ -1683,10 +1691,9 @@ function by default."
1683 (setq coding-system 'raw-text)) 1691 (setq coding-system 'raw-text))
1684 (when (and (not coding-system) 1692 (when (and (not coding-system)
1685 (re-search-forward re-coding tail-end t)) 1693 (re-search-forward re-coding tail-end t))
1686 (setq coding-system (intern (match-string 1))) 1694 (setq coding-system (intern (match-string 1)))))))
1687 (or (coding-system-p coding-system) 1695 (if coding-system
1688 (setq coding-system nil)))))) 1696 (cons coding-system :coding)))
1689 coding-system)
1690 ;; Finally, try all the `auto-coding-functions'. 1697 ;; Finally, try all the `auto-coding-functions'.
1691 (let ((funcs auto-coding-functions) 1698 (let ((funcs auto-coding-functions)
1692 (coding-system nil)) 1699 (coding-system nil))
@@ -1696,7 +1703,16 @@ function by default."
1696 (goto-char (point-min)) 1703 (goto-char (point-min))
1697 (funcall (pop funcs) size)) 1704 (funcall (pop funcs) size))
1698 (error nil)))) 1705 (error nil))))
1699 coding-system))) 1706 (if coding-system
1707 (cons coding-system 'auto-coding-functions)))))
1708
1709(defun set-auto-coding (filename size)
1710 "Return coding system for a file FILENAME of which SIZE bytes follow point.
1711See `find-auto-coding' for how the coding system is found.
1712Return nil if an invalid coding system is found."
1713 (let ((found (find-auto-coding filename size)))
1714 (if (and found (coding-system-p (car found)))
1715 (car found))))
1700 1716
1701(setq set-auto-coding-function 'set-auto-coding) 1717(setq set-auto-coding-function 'set-auto-coding)
1702 1718
diff --git a/lisp/isearch.el b/lisp/isearch.el
index ec3dcc37886..90a12b7a7b9 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -154,7 +154,12 @@ command history."
154 "Function(s) to call after starting up an incremental search.") 154 "Function(s) to call after starting up an incremental search.")
155 155
156(defvar isearch-mode-end-hook nil 156(defvar isearch-mode-end-hook nil
157 "Function(s) to call after terminating an incremental search.") 157 "Function(s) to call after terminating an incremental search.
158When these functions are called, `isearch-mode-end-hook-quit'
159is non-nil if the user quit the search.")
160
161(defvar isearch-mode-end-hook-quit nil
162 "Non-nil while running `isearch-mode-end-hook' if user quit the search.")
158 163
159(defvar isearch-wrap-function nil 164(defvar isearch-wrap-function nil
160 "Function to call to wrap the search when search is failed. 165 "Function to call to wrap the search when search is failed.
@@ -205,7 +210,7 @@ Default value, nil, means edit the string instead."
205 '((((class color) (min-colors 88) (background light)) 210 '((((class color) (min-colors 88) (background light))
206 ;; The background must not be too dark, for that means 211 ;; The background must not be too dark, for that means
207 ;; the character is hard to see when the cursor is there. 212 ;; the character is hard to see when the cursor is there.
208 (:background "magenta2" :foreground "lightskyblue1")) 213 (:background "magenta3" :foreground "lightskyblue1"))
209 (((class color) (min-colors 88) (background dark)) 214 (((class color) (min-colors 88) (background dark))
210 (:background "palevioletred2" :foreground "brown4")) 215 (:background "palevioletred2" :foreground "brown4"))
211 (((class color) (min-colors 16)) 216 (((class color) (min-colors 16))
@@ -352,13 +357,6 @@ A value of nil means highlight all matches."
352 (define-key map "\M-\C-y" 'isearch-yank-char) 357 (define-key map "\M-\C-y" 'isearch-yank-char)
353 (define-key map "\C-y" 'isearch-yank-line) 358 (define-key map "\C-y" 'isearch-yank-line)
354 359
355 ;; Define keys for regexp chars * ? } |.
356 ;; Nothing special for + because it matches at least once.
357 (define-key map "*" 'isearch-*-char)
358 (define-key map "?" 'isearch-*-char)
359 (define-key map "}" 'isearch-}-char)
360 (define-key map "|" 'isearch-|-char)
361
362 ;; Turned off because I find I expect to get the global definition--rms. 360 ;; Turned off because I find I expect to get the global definition--rms.
363 ;; ;; Instead bind C-h to special help command for isearch-mode. 361 ;; ;; Instead bind C-h to special help command for isearch-mode.
364 ;; (define-key map "\C-h" 'isearch-mode-help) 362 ;; (define-key map "\C-h" 'isearch-mode-help)
@@ -740,6 +738,12 @@ is treated as a regexp. See \\[isearch-forward] for more info."
740 (setq disable-point-adjustment t)) 738 (setq disable-point-adjustment t))
741 739
742(defun isearch-done (&optional nopush edit) 740(defun isearch-done (&optional nopush edit)
741 "Exit Isearch mode.
742For successful search, pass no args.
743For a failing search, NOPUSH is t.
744For going to the minibuffer to edit the search string,
745NOPUSH is t and EDIT is t."
746
743 (if isearch-resume-in-command-history 747 (if isearch-resume-in-command-history
744 (let ((command `(isearch-resume ,isearch-string ,isearch-regexp 748 (let ((command `(isearch-resume ,isearch-string ,isearch-regexp
745 ,isearch-word ,isearch-forward 749 ,isearch-word ,isearch-forward
@@ -791,7 +795,8 @@ is treated as a regexp. See \\[isearch-forward] for more info."
791 ;; Update the ring data. 795 ;; Update the ring data.
792 (isearch-update-ring isearch-string isearch-regexp)) 796 (isearch-update-ring isearch-string isearch-regexp))
793 797
794 (run-hooks 'isearch-mode-end-hook) 798 (let ((isearch-mode-end-hook-quit (and nopush (not edit))))
799 (run-hooks 'isearch-mode-end-hook))
795 800
796 ;; If there was movement, mark the starting position. 801 ;; If there was movement, mark the starting position.
797 ;; Maybe should test difference between and set mark iff > threshold. 802 ;; Maybe should test difference between and set mark iff > threshold.
@@ -1400,14 +1405,14 @@ might return the position of the end of the line."
1400Respects \\[isearch-repeat-forward] and \\[isearch-repeat-backward] by 1405Respects \\[isearch-repeat-forward] and \\[isearch-repeat-backward] by
1401stopping at `isearch-barrier' as needed. 1406stopping at `isearch-barrier' as needed.
1402 1407
1403Do nothing if a backslash is escaping the liberalizing character. If 1408Do nothing if a backslash is escaping the liberalizing character.
1404WANT-BACKSLASH is non-nil, invert this behavior (for \\} and \\|). 1409If WANT-BACKSLASH is non-nil, invert this behavior (for \\} and \\|).
1405 1410
1406Do nothing if regexp has recently been invalid unless optional ALLOW-INVALID 1411Do nothing if regexp has recently been invalid unless optional
1407non-nil. 1412ALLOW-INVALID non-nil.
1408 1413
1409If optional TO-BARRIER non-nil, ignore previous matches and go exactly to the 1414If optional TO-BARRIER non-nil, ignore previous matches and go exactly
1410barrier." 1415to the barrier."
1411 ;; (eq (not a) (not b)) makes all non-nil values equivalent 1416 ;; (eq (not a) (not b)) makes all non-nil values equivalent
1412 (when (and isearch-regexp (eq (not (isearch-backslash isearch-string)) 1417 (when (and isearch-regexp (eq (not (isearch-backslash isearch-string))
1413 (not want-backslash)) 1418 (not want-backslash))
@@ -1453,26 +1458,7 @@ barrier."
1453 (goto-char (if isearch-forward 1458 (goto-char (if isearch-forward
1454 (max last-other-end isearch-barrier) 1459 (max last-other-end isearch-barrier)
1455 (min last-other-end isearch-barrier))) 1460 (min last-other-end isearch-barrier)))
1456 (setq isearch-adjusted t)))))) 1461 (setq isearch-adjusted t)))))))
1457 (isearch-process-search-char last-command-char))
1458
1459;; * and ? are special when not preceded by \.
1460(defun isearch-*-char ()
1461 "Maybe back up to handle * and ? specially in regexps."
1462 (interactive)
1463 (isearch-fallback nil))
1464
1465;; } is special when it is preceded by \.
1466(defun isearch-}-char ()
1467 "Handle \\} specially in regexps."
1468 (interactive)
1469 (isearch-fallback t t))
1470
1471;; | is special when it is preceded by \.
1472(defun isearch-|-char ()
1473 "If in regexp search, jump to the barrier unless in a group."
1474 (interactive)
1475 (isearch-fallback t nil t))
1476 1462
1477(defun isearch-unread-key-sequence (keylist) 1463(defun isearch-unread-key-sequence (keylist)
1478 "Unread the given key-sequence KEYLIST. 1464 "Unread the given key-sequence KEYLIST.
@@ -1770,10 +1756,10 @@ Isearch mode."
1770 (isearch-process-search-char char)))) 1756 (isearch-process-search-char char))))
1771 1757
1772(defun isearch-return-char () 1758(defun isearch-return-char ()
1773 "Convert return into newline for incremental search. 1759 "Convert return into newline for incremental search."
1774Obsolete."
1775 (interactive) 1760 (interactive)
1776 (isearch-process-search-char ?\n)) 1761 (isearch-process-search-char ?\n))
1762(make-obsolete 'isearch-return-char 'isearch-printing-char)
1777 1763
1778(defun isearch-printing-char () 1764(defun isearch-printing-char ()
1779 "Add this ordinary printing character to the search string and search." 1765 "Add this ordinary printing character to the search string and search."
@@ -1792,6 +1778,14 @@ Obsolete."
1792 (isearch-process-search-char char))))) 1778 (isearch-process-search-char char)))))
1793 1779
1794(defun isearch-process-search-char (char) 1780(defun isearch-process-search-char (char)
1781 ;; * and ? are special in regexps when not preceded by \.
1782 ;; } and | are special in regexps when preceded by \.
1783 ;; Nothing special for + because it matches at least once.
1784 (cond
1785 ((memq char '(?* ??)) (isearch-fallback nil))
1786 ((eq char ?\}) (isearch-fallback t t))
1787 ((eq char ?|) (isearch-fallback t nil t)))
1788
1795 ;; Append the char to the search string, update the message and re-search. 1789 ;; Append the char to the search string, update the message and re-search.
1796 (isearch-process-search-string 1790 (isearch-process-search-string
1797 (char-to-string char) 1791 (char-to-string char)
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index bc6060f40c4..2eea86e7a4a 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -125,9 +125,18 @@ usually do not have translators to read other languages for them.\n\n")
125 125
126 (insert "\n\n") 126 (insert "\n\n")
127 (setq user-point (point)) 127 (setq user-point (point))
128 (insert "\n\n\n") 128 (insert "\n\n")
129
130 (insert "If emacs crashed, and you have the emacs process in the gdb debugger,\n"
131 "please include the output from the following gdb commands:\n"
132 " `bt full' and `xbacktrace'.\n")
133
134 (let ((debug-file (expand-file-name "DEBUG" data-directory)))
135 (if (file-readable-p debug-file)
136 (insert "If you would like to further debug the crash, please read the file\n"
137 debug-file " for instructions.\n")))
129 138
130 (insert "In " (emacs-version) "\n") 139 (insert "\n\nIn " (emacs-version) "\n")
131 (if (fboundp 'x-server-vendor) 140 (if (fboundp 'x-server-vendor)
132 (condition-case nil 141 (condition-case nil
133 (insert "X server distributor `" (x-server-vendor) "', version " 142 (insert "X server distributor `" (x-server-vendor) "', version "
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 0c076011044..55a4d060fad 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -1,6 +1,6 @@
1;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail 1;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
2 2
3;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004 3;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp> 6;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp>
@@ -207,7 +207,7 @@ This is relative to `smtpmail-queue-dir'.")
207(defvar smtpmail-queue-index (concat smtpmail-queue-dir 207(defvar smtpmail-queue-index (concat smtpmail-queue-dir
208 smtpmail-queue-index-file)) 208 smtpmail-queue-index-file))
209 209
210(defconst smtpmail-auth-supported '(cram-md5 login) 210(defconst smtpmail-auth-supported '(cram-md5 plain login)
211 "List of supported SMTP AUTH mechanisms.") 211 "List of supported SMTP AUTH mechanisms.")
212 212
213;;; 213;;;
@@ -559,8 +559,24 @@ This is relative to `smtpmail-queue-dir'.")
559 (not (integerp (car ret))) 559 (not (integerp (car ret)))
560 (>= (car ret) 400)) 560 (>= (car ret) 400))
561 (throw 'done nil))) 561 (throw 'done nil)))
562 ((eq mech 'plain)
563 (smtpmail-send-command process "AUTH PLAIN")
564 (if (or (null (car (setq ret (smtpmail-read-response process))))
565 (not (integerp (car ret)))
566 (not (equal (car ret) 334)))
567 (throw 'done nil))
568 (smtpmail-send-command process (base64-encode-string
569 (concat "\0"
570 (smtpmail-cred-user cred)
571 "\0"
572 (smtpmail-cred-passwd cred))))
573 (if (or (null (car (setq ret (smtpmail-read-response process))))
574 (not (integerp (car ret)))
575 (not (equal (car ret) 235)))
576 (throw 'done nil)))
577
562 (t 578 (t
563 (error "Mechanism %s not implemented" mech))) 579 (error "Mechanism %s not implemented" mech)))
564 ;; Remember the password. 580 ;; Remember the password.
565 (when (and (not (stringp smtpmail-auth-credentials)) 581 (when (and (not (stringp smtpmail-auth-credentials))
566 (null (smtpmail-cred-passwd cred))) 582 (null (smtpmail-cred-passwd cred)))
diff --git a/lisp/mail/uce.el b/lisp/mail/uce.el
index 14e613ac280..2a7fedf8493 100644
--- a/lisp/mail/uce.el
+++ b/lisp/mail/uce.el
@@ -283,7 +283,7 @@ address, and postmaster of the mail relay used."
283 (re-search-forward "^Lines:") 283 (re-search-forward "^Lines:")
284 (beginning-of-line)) 284 (beginning-of-line))
285 ((eq uce-mail-reader 'rmail) 285 ((eq uce-mail-reader 'rmail)
286 (beginning-of-buffer) 286 (goto-char (point-min))
287 (search-forward "*** EOOH ***\n") 287 (search-forward "*** EOOH ***\n")
288 (beginning-of-line) 288 (beginning-of-line)
289 (forward-line -1))) 289 (forward-line -1)))
@@ -364,11 +364,7 @@ address, and postmaster of the mail relay used."
364 (if (file-exists-p "~/.signature") 364 (if (file-exists-p "~/.signature")
365 (progn 365 (progn
366 (insert "\n\n-- \n") 366 (insert "\n\n-- \n")
367 (insert-file "~/.signature") 367 (forward-char (cadr (insert-file-contents "~/.signature"))))))
368 ;; Function insert-file leaves point where it was,
369 ;; while we want to place signature in the ``middle''
370 ;; of the message.
371 (exchange-point-and-mark))))
372 (uce-signature 368 (uce-signature
373 (insert "\n\n-- \n" uce-signature))) 369 (insert "\n\n-- \n" uce-signature)))
374 ;; And text of the original message. 370 ;; And text of the original message.
diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el
index a4ad3044f43..6ee8840d3bb 100644
--- a/lisp/net/eudc-bob.el
+++ b/lisp/net/eudc-bob.el
@@ -69,7 +69,7 @@
69 69
70(defun eudc-jump-to-event (event) 70(defun eudc-jump-to-event (event)
71 "Jump to the window and point where EVENT occurred." 71 "Jump to the window and point where EVENT occurred."
72 (if eudc-xemacs-p 72 (if (fboundp 'event-closest-point)
73 (goto-char (event-closest-point event)) 73 (goto-char (event-closest-point event))
74 (set-buffer (window-buffer (posn-window (event-start event)))) 74 (set-buffer (window-buffer (posn-window (event-start event))))
75 (goto-char (posn-point (event-start event))))) 75 (goto-char (posn-point (event-start event)))))
@@ -89,7 +89,7 @@
89 89
90(defun eudc-bob-can-display-inline-images () 90(defun eudc-bob-can-display-inline-images ()
91 "Return non-nil if we can display images inline." 91 "Return non-nil if we can display images inline."
92 (if eudc-xemacs-p 92 (if (fboundp 'console-type)
93 (and (memq (console-type) '(x mswindows)) 93 (and (memq (console-type) '(x mswindows))
94 (fboundp 'make-glyph)) 94 (fboundp 'make-glyph))
95 (and (fboundp 'display-graphic-p) 95 (and (fboundp 'display-graphic-p)
@@ -120,7 +120,7 @@ LABEL."
120 "Display the JPEG DATA at point. 120 "Display the JPEG DATA at point.
121If INLINE is non-nil, try to inline the image otherwise simply 121If INLINE is non-nil, try to inline the image otherwise simply
122display a button." 122display a button."
123 (cond (eudc-xemacs-p 123 (cond ((fboundp 'make-glyph)
124 (let ((glyph (if (eudc-bob-can-display-inline-images) 124 (let ((glyph (if (eudc-bob-can-display-inline-images)
125 (make-glyph (list (vector 'jpeg :data data) 125 (make-glyph (list (vector 'jpeg :data data)
126 [string :data "[JPEG Picture]"]))))) 126 [string :data "[JPEG Picture]"])))))
diff --git a/lisp/net/eudc-hotlist.el b/lisp/net/eudc-hotlist.el
index f892bd6058e..a13606e8f43 100644
--- a/lisp/net/eudc-hotlist.el
+++ b/lisp/net/eudc-hotlist.el
@@ -51,11 +51,11 @@ These are the special commands of this mode:
51 (setq major-mode 'eudc-hotlist-mode) 51 (setq major-mode 'eudc-hotlist-mode)
52 (setq mode-name "EUDC-Servers") 52 (setq mode-name "EUDC-Servers")
53 (use-local-map eudc-hotlist-mode-map) 53 (use-local-map eudc-hotlist-mode-map)
54 (setq mode-popup-menu eudc-hotlist-menu) 54 (when (featurep 'xemacs)
55 (when (and eudc-xemacs-p 55 (setq mode-popup-menu eudc-hotlist-menu)
56 (featurep 'menubar)) 56 (when (featurep 'menubar)
57 (set-buffer-menubar current-menubar) 57 (set-buffer-menubar current-menubar)
58 (add-submenu nil (cons "EUDC-Hotlist" (cdr (cdr eudc-hotlist-menu))))) 58 (add-submenu nil (cons "EUDC-Hotlist" (cdr (cdr eudc-hotlist-menu))))))
59 (setq buffer-read-only t) 59 (setq buffer-read-only t)
60 (run-mode-hooks 'eudc-hotlist-mode-hook)) 60 (run-mode-hooks 'eudc-hotlist-mode-hook))
61 61
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 6d6e606e5e5..9b029a17074 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2095,7 +2095,7 @@ target of the symlink differ."
2095 file))) 2095 file)))
2096 (unless noerror 2096 (unless noerror
2097 (when (not (file-exists-p file)) 2097 (when (not (file-exists-p file))
2098 (error "Cannot load nonexistant file `%s'" file))) 2098 (error "Cannot load nonexistent file `%s'" file)))
2099 (if (not (file-exists-p file)) 2099 (if (not (file-exists-p file))
2100 nil 2100 nil
2101 (unless nomessage 2101 (unless nomessage
diff --git a/lisp/novice.el b/lisp/novice.el
index 6fd67d4ac1e..ea17ea642e5 100644
--- a/lisp/novice.el
+++ b/lisp/novice.el
@@ -42,8 +42,7 @@
42If nil, the feature is disabled, i.e., all commands work normally.") 42If nil, the feature is disabled, i.e., all commands work normally.")
43 43
44;;;###autoload 44;;;###autoload
45(defvaralias 'disabled-command-hook 'disabled-command-function) 45(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
46;;;###autoload (make-obsolete-variable 'disabled-command-hook 'disabled-command-function "22.1")
47 46
48;;;###autoload 47;;;###autoload
49(defun disabled-command-function (&rest ignore) 48(defun disabled-command-function (&rest ignore)
diff --git a/lisp/paths.el b/lisp/paths.el
index b79e925aee3..388da1af8f2 100644
--- a/lisp/paths.el
+++ b/lisp/paths.el
@@ -37,13 +37,13 @@
37;; DOC file rather than in memory. 37;; DOC file rather than in memory.
38 38
39(defun prune-directory-list (dirs &optional keep reject) 39(defun prune-directory-list (dirs &optional keep reject)
40 "Returns a copy of DIRS with all non-existant directories removed. 40 "Returns a copy of DIRS with all non-existent directories removed.
41The optional argument KEEP is a list of directories to retain even if 41The optional argument KEEP is a list of directories to retain even if
42they don't exist, and REJECT is a list of directories to remove from 42they don't exist, and REJECT is a list of directories to remove from
43DIRS, even if they exist; REJECT takes precedence over KEEP. 43DIRS, even if they exist; REJECT takes precedence over KEEP.
44 44
45Note that membership in REJECT and KEEP is checked using simple string 45Note that membership in REJECT and KEEP is checked using simple string
46comparision." 46comparison."
47 (apply #'nconc 47 (apply #'nconc
48 (mapcar (lambda (dir) 48 (mapcar (lambda (dir)
49 (and (not (member dir reject)) 49 (and (not (member dir reject))
diff --git a/lisp/pcvs-util.el b/lisp/pcvs-util.el
index 9531f06b3c6..05495d1e264 100644
--- a/lisp/pcvs-util.el
+++ b/lisp/pcvs-util.el
@@ -188,7 +188,7 @@ arguments. If ARGS is not a list, no argument will be passed."
188 "Concatenate the STRINGS, adding the SEPARATOR (default \" \"). 188 "Concatenate the STRINGS, adding the SEPARATOR (default \" \").
189This tries to quote the strings to avoid ambiguity such that 189This tries to quote the strings to avoid ambiguity such that
190 (cvs-string->strings (cvs-strings->string strs)) == strs 190 (cvs-string->strings (cvs-strings->string strs)) == strs
191Only some SEPARATOR will work properly." 191Only some SEPARATORs will work properly."
192 (let ((sep (or separator " "))) 192 (let ((sep (or separator " ")))
193 (mapconcat 193 (mapconcat
194 (lambda (str) 194 (lambda (str)
@@ -277,7 +277,7 @@ The SEPARATOR regexp defaults to \"\\s-+\"."
277 277
278(defun cvs-flags-query (sym &optional desc arg) 278(defun cvs-flags-query (sym &optional desc arg)
279 "Query flags based on SYM. 279 "Query flags based on SYM.
280Optional argument DESC will be used for the prompt 280Optional argument DESC will be used for the prompt.
281If ARG (or a prefix argument) is nil, just use the 0th default. 281If ARG (or a prefix argument) is nil, just use the 0th default.
282If it is a non-negative integer, use the corresponding default. 282If it is a non-negative integer, use the corresponding default.
283If it is a negative integer query for a new value of the corresponding 283If it is a negative integer query for a new value of the corresponding
@@ -382,7 +382,7 @@ If ARG is nil toggle the PREFIX's value between its 0th default and nil
382 382
383(defun cvs-prefix-get (sym &optional read-only) 383(defun cvs-prefix-get (sym &optional read-only)
384 "Return the current value of the prefix SYM. 384 "Return the current value of the prefix SYM.
385and reset it unless READ-ONLY is non-nil." 385And reset it unless READ-ONLY is non-nil."
386 (prog1 (symbol-value sym) 386 (prog1 (symbol-value sym)
387 (unless (or read-only 387 (unless (or read-only
388 (cvs-flags-persist (symbol-value (cvs-prefix-sym sym)))) 388 (cvs-flags-persist (symbol-value (cvs-prefix-sym sym))))
diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el
index df68343ddc2..00193973b00 100644
--- a/lisp/play/gamegrid.el
+++ b/lisp/play/gamegrid.el
@@ -179,9 +179,7 @@ static unsigned char gamegrid_bits[] = {
179 179
180(defun gamegrid-make-mono-tty-face () 180(defun gamegrid-make-mono-tty-face ()
181 (let ((face (make-face 'gamegrid-mono-tty-face))) 181 (let ((face (make-face 'gamegrid-mono-tty-face)))
182 (condition-case nil 182 (set-face-inverse-video-p face t)
183 (set-face-property face 'reverse t)
184 (error nil))
185 face)) 183 face))
186 184
187(defun gamegrid-make-color-tty-face (color) 185(defun gamegrid-make-color-tty-face (color)
@@ -298,7 +296,7 @@ static unsigned char gamegrid_bits[] = {
298 'emacs-tty))) 296 'emacs-tty)))
299 297
300(defun gamegrid-set-display-table () 298(defun gamegrid-set-display-table ()
301 (if (fboundp 'specifierp) 299 (if (featurep 'xemacs)
302 (add-spec-to-specifier current-display-table 300 (add-spec-to-specifier current-display-table
303 gamegrid-display-table 301 gamegrid-display-table
304 (current-buffer) 302 (current-buffer)
@@ -409,7 +407,7 @@ static unsigned char gamegrid_bits[] = {
409 407
410(defun gamegrid-set-timer (delay) 408(defun gamegrid-set-timer (delay)
411 (if gamegrid-timer 409 (if gamegrid-timer
412 (if (featurep 'itimer) 410 (if (fboundp 'set-itimer-restart)
413 (set-itimer-restart gamegrid-timer delay) 411 (set-itimer-restart gamegrid-timer delay)
414 (timer-set-time gamegrid-timer 412 (timer-set-time gamegrid-timer
415 (list (aref gamegrid-timer 1) 413 (list (aref gamegrid-timer 1)
@@ -475,25 +473,27 @@ FILE is created there."
475;; FILE in the user's home directory. There is presumably no 473;; FILE in the user's home directory. There is presumably no
476;; shared game directory. 474;; shared game directory.
477 475
476(defvar gamegrid-shared-game-dir)
477
478(defun gamegrid-add-score-with-update-game-score (file score) 478(defun gamegrid-add-score-with-update-game-score (file score)
479 (let* ((result nil) ;; What is this good for? -- os 479 (let* ((result nil) ;; What is this good for? -- os
480 (have-shared-game-dir 480 (gamegrid-shared-game-dir
481 (not (zerop (logand (file-modes 481 (not (zerop (logand (file-modes
482 (expand-file-name "update-game-score" 482 (expand-file-name "update-game-score"
483 exec-directory)) 483 exec-directory))
484 #o4000))))) 484 #o4000)))))
485 (cond ((file-name-absolute-p file) 485 (cond ((file-name-absolute-p file)
486 (gamegrid-add-score-insecure file score)) 486 (gamegrid-add-score-insecure file score))
487 ((and have-shared-game-dir 487 ((and gamegrid-shared-game-dir
488 (file-exists-p (expand-file-name file shared-game-score-directory))) 488 (file-exists-p (expand-file-name file shared-game-score-directory)))
489 ;; Use the setuid "update-game-score" program to update a 489 ;; Use the setuid "update-game-score" program to update a
490 ;; system-wide score file. 490 ;; system-wide score file.
491 (gamegrid-add-score-with-update-game-score-1 491 (gamegrid-add-score-with-update-game-score-1 file
492 (expand-file-name file shared-game-score-directory) score)) 492 (expand-file-name file shared-game-score-directory) score))
493 ;; Else: Add the score to a score file in the user's home 493 ;; Else: Add the score to a score file in the user's home
494 ;; directory. 494 ;; directory.
495 (have-shared-game-dir 495 (gamegrid-shared-game-dir
496 ;; If `have-shared-game-dir' is non-nil, then 496 ;; If `gamegrid-shared-game-dir' is non-nil, then
497 ;; "update-gamescore" program is setuid, so don't use it. 497 ;; "update-gamescore" program is setuid, so don't use it.
498 (unless (file-exists-p 498 (unless (file-exists-p
499 (directory-file-name gamegrid-user-score-file-directory)) 499 (directory-file-name gamegrid-user-score-file-directory))
@@ -509,9 +509,9 @@ FILE is created there."
509 (setq f (expand-file-name file f)) 509 (setq f (expand-file-name file f))
510 (unless (file-exists-p f) 510 (unless (file-exists-p f)
511 (write-region "" nil f nil 'silent nil 'excl))) 511 (write-region "" nil f nil 'silent nil 'excl)))
512 (gamegrid-add-score-with-update-game-score-1 f score)))))) 512 (gamegrid-add-score-with-update-game-score-1 file f score))))))
513 513
514(defun gamegrid-add-score-with-update-game-score-1 (target score) 514(defun gamegrid-add-score-with-update-game-score-1 (file target score)
515 (let ((default-directory "/") 515 (let ((default-directory "/")
516 (errbuf (generate-new-buffer " *update-game-score loss*"))) 516 (errbuf (generate-new-buffer " *update-game-score loss*")))
517 (apply 517 (apply
@@ -521,7 +521,7 @@ FILE is created there."
521 (expand-file-name "update-game-score" exec-directory) 521 (expand-file-name "update-game-score" exec-directory)
522 nil errbuf nil 522 nil errbuf nil
523 "-m" (int-to-string gamegrid-score-file-length) 523 "-m" (int-to-string gamegrid-score-file-length)
524 "-d" (if have-shared-game-dir 524 "-d" (if gamegrid-shared-game-dir
525 (expand-file-name shared-game-score-directory) 525 (expand-file-name shared-game-score-directory)
526 (file-name-directory target)) 526 (file-name-directory target))
527 file 527 file
diff --git a/lisp/play/snake.el b/lisp/play/snake.el
index 8909f3fada2..a36b29eee59 100644
--- a/lisp/play/snake.el
+++ b/lisp/play/snake.el
@@ -370,15 +370,16 @@ Snake mode keybindings:
370 (setq major-mode 'snake-mode) 370 (setq major-mode 'snake-mode)
371 (setq mode-name "Snake") 371 (setq mode-name "Snake")
372 372
373 (setq mode-popup-menu 373 (unless (featurep 'emacs)
374 '("Snake Commands" 374 (setq mode-popup-menu
375 ["Start new game" snake-start-game] 375 '("Snake Commands"
376 ["End game" snake-end-game 376 ["Start new game" snake-start-game]
377 (snake-active-p)] 377 ["End game" snake-end-game
378 ["Pause" snake-pause-game 378 (snake-active-p)]
379 (and (snake-active-p) (not snake-paused))] 379 ["Pause" snake-pause-game
380 ["Resume" snake-pause-game 380 (and (snake-active-p) (not snake-paused))]
381 (and (snake-active-p) snake-paused)])) 381 ["Resume" snake-pause-game
382 (and (snake-active-p) snake-paused)])))
382 383
383 (setq gamegrid-use-glyphs snake-use-glyphs-flag) 384 (setq gamegrid-use-glyphs snake-use-glyphs-flag)
384 (setq gamegrid-use-color snake-use-color-flag) 385 (setq gamegrid-use-color snake-use-color-flag)
diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el
index 7ef997a9865..9ecb9261241 100644
--- a/lisp/play/tetris.el
+++ b/lisp/play/tetris.el
@@ -601,15 +601,16 @@ tetris-mode keybindings:
601 (setq major-mode 'tetris-mode) 601 (setq major-mode 'tetris-mode)
602 (setq mode-name "Tetris") 602 (setq mode-name "Tetris")
603 603
604 (setq mode-popup-menu 604 (unless (featurep 'emacs)
605 '("Tetris Commands" 605 (setq mode-popup-menu
606 ["Start new game" tetris-start-game] 606 '("Tetris Commands"
607 ["End game" tetris-end-game 607 ["Start new game" tetris-start-game]
608 (tetris-active-p)] 608 ["End game" tetris-end-game
609 ["Pause" tetris-pause-game 609 (tetris-active-p)]
610 (and (tetris-active-p) (not tetris-paused))] 610 ["Pause" tetris-pause-game
611 ["Resume" tetris-pause-game 611 (and (tetris-active-p) (not tetris-paused))]
612 (and (tetris-active-p) tetris-paused)])) 612 ["Resume" tetris-pause-game
613 (and (tetris-active-p) tetris-paused)])))
613 614
614 (setq gamegrid-use-glyphs tetris-use-glyphs) 615 (setq gamegrid-use-glyphs tetris-use-glyphs)
615 (setq gamegrid-use-color tetris-use-color) 616 (setq gamegrid-use-color tetris-use-color)
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index a075729ab99..7379a6f0352 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -622,7 +622,7 @@ If the element is a function or a list of a function and a number,
622 (sit-for 3) 622 (sit-for 3)
623 (erase-buffer) 623 (erase-buffer)
624 (sit-for 3) 624 (sit-for 3)
625 (insert-buffer "*Messages*") 625 (insert-buffer-substring "*Messages*")
626 (message "") 626 (message "")
627 (goto-char (point-max)) 627 (goto-char (point-max))
628 (recenter -1) 628 (recenter -1)
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index fdb1a9d69f7..d062d6d1e98 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -5349,7 +5349,8 @@ spec buffer in here and modify it to make it a body.
5349This function typically is to be hooked into `ff-file-created-hooks'." 5349This function typically is to be hooked into `ff-file-created-hooks'."
5350 (interactive) 5350 (interactive)
5351 (delete-region (point-min) (point-max)) 5351 (delete-region (point-min) (point-max))
5352 (insert-buffer (car (cdr (buffer-list)))) 5352 (insert-buffer-substring (car (cdr (buffer-list))))
5353 (goto-char (point-min))
5353 (ada-mode) 5354 (ada-mode)
5354 5355
5355 (let (found ada-procedure-or-package-start-regexp) 5356 (let (found ada-procedure-or-package-start-regexp)
diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el
index 94ac76c0686..c98dbdac892 100644
--- a/lisp/progmodes/asm-mode.el
+++ b/lisp/progmodes/asm-mode.el
@@ -204,7 +204,8 @@ repeatedly until you are satisfied with the kind of comment."
204 (let (comempty comment) 204 (let (comempty comment)
205 (save-excursion 205 (save-excursion
206 (beginning-of-line) 206 (beginning-of-line)
207 (setq comment (comment-search-forward (line-end-position) t)) 207 (with-no-warnings
208 (setq comment (comment-search-forward (line-end-position) t)))
208 (setq comempty (looking-at "[ \t]*$"))) 209 (setq comempty (looking-at "[ \t]*$")))
209 210
210 (cond 211 (cond
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 99d33553f53..02fe9c5f117 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -1790,7 +1790,8 @@ Any other key combination is executed normally."
1790 (let (char event) 1790 (let (char event)
1791 (if (fboundp 'next-command-event) ; XEmacs 1791 (if (fboundp 'next-command-event) ; XEmacs
1792 (setq event (next-command-event) 1792 (setq event (next-command-event)
1793 char (event-to-character event)) 1793 char (and (fboundp 'event-to-character)
1794 (event-to-character event)))
1794 (setq event (read-event) 1795 (setq event (read-event)
1795 char event)) 1796 char event))
1796 ;; Insert char if not equal to `?', or if abbrev-mode is off. 1797 ;; Insert char if not equal to `?', or if abbrev-mode is off.
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index f4b6a705ea9..8a426a37365 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -503,15 +503,11 @@ Also display the main routine in the disassembly buffer if present."
503 (setq gdb-var-list (nreverse var-list)))))) 503 (setq gdb-var-list (nreverse var-list))))))
504 504
505(defun gdb-var-update () 505(defun gdb-var-update ()
506 (if (not (member 'gdb-var-update gdb-pending-triggers)) 506 (when (not (member 'gdb-var-update gdb-pending-triggers))
507 (progn 507 (gdb-enqueue-input
508 (gdb-enqueue-input 508 (list "server interpreter mi \"-var-update *\"\n"
509 (list 509 'gdb-var-update-handler))
510 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) 510 (push 'gdb-var-update gdb-pending-triggers)))
511 "server interpreter mi \"-var-update *\"\n"
512 "-var-update *\n")
513 'gdb-var-update-handler))
514 (push 'gdb-var-update gdb-pending-triggers))))
515 511
516(defconst gdb-var-update-regexp "name=\"\\(.*?\\)\"") 512(defconst gdb-var-update-regexp "name=\"\\(.*?\\)\"")
517 513
@@ -522,13 +518,9 @@ Also display the main routine in the disassembly buffer if present."
522 (let ((varnum (match-string 1))) 518 (let ((varnum (match-string 1)))
523 (gdb-enqueue-input 519 (gdb-enqueue-input
524 (list 520 (list
525 (if (with-current-buffer gud-comint-buffer 521 (concat "server interpreter mi \"-var-evaluate-expression "
526 (eq gud-minor-mode 'gdba)) 522 varnum "\"\n")
527 (concat "server interpreter mi \"-var-evaluate-expression " 523 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))))))
528 varnum "\"\n")
529 (concat "-var-evaluate-expression " varnum "\n"))
530 `(lambda () (gdb-var-evaluate-expression-handler
531 ,varnum t)))))))
532 (setq gdb-pending-triggers 524 (setq gdb-pending-triggers
533 (delq 'gdb-var-update gdb-pending-triggers)) 525 (delq 'gdb-var-update gdb-pending-triggers))
534 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) 526 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
@@ -544,9 +536,10 @@ Also display the main routine in the disassembly buffer if present."
544 (speedbar-timer-fn))) 536 (speedbar-timer-fn)))
545 537
546(defun gdb-var-delete () 538(defun gdb-var-delete ()
547 "Delete watched expression from the speedbar." 539 "Delete watch expression at point from the speedbar."
548 (interactive) 540 (interactive)
549 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) 541 (if (with-current-buffer
542 gud-comint-buffer (memq gud-minor-mode '(gdbmi gdba)))
550 (let ((text (speedbar-line-text))) 543 (let ((text (speedbar-line-text)))
551 (string-match "\\(\\S-+\\)" text) 544 (string-match "\\(\\S-+\\)" text)
552 (let* ((expr (match-string 1 text)) 545 (let* ((expr (match-string 1 text))
@@ -595,7 +588,9 @@ INDENT is the current indentation depth."
595 (cond ((string-match "+" text) ;expand this node 588 (cond ((string-match "+" text) ;expand this node
596 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) 589 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))
597 (gdb-var-list-children token) 590 (gdb-var-list-children token)
598 (gdbmi-var-list-children token))) 591 (progn
592 (gdbmi-var-update)
593 (gdbmi-var-list-children token))))
599 ((string-match "-" text) ;contract this node 594 ((string-match "-" text) ;contract this node
600 (dolist (var gdb-var-list) 595 (dolist (var gdb-var-list)
601 (if (string-match (concat token "\\.") (nth 1 var)) 596 (if (string-match (concat token "\\.") (nth 1 var))
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 0f1045eeb5a..8f6dd73cba1 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -196,6 +196,7 @@ See `compilation-error-screen-columns'"
196 (define-key map "p" 'previous-error-no-select) 196 (define-key map "p" 'previous-error-no-select)
197 (define-key map "{" 'compilation-previous-file) 197 (define-key map "{" 'compilation-previous-file)
198 (define-key map "}" 'compilation-next-file) 198 (define-key map "}" 'compilation-next-file)
199 (define-key map [backtab] 'compilation-previous-file)
199 (define-key map "\t" 'compilation-next-file) 200 (define-key map "\t" 'compilation-next-file)
200 201
201 ;; Set up the menu-bar 202 ;; Set up the menu-bar
@@ -255,16 +256,17 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
255\\(?:-\\(?:\\([0-9]+\\)\\4\\)?\\.?\\([0-9]+\\)?\\)?\\2" 256\\(?:-\\(?:\\([0-9]+\\)\\4\\)?\\.?\\([0-9]+\\)?\\)?\\2"
256 1 (3 . 6) (5 . 7)) 257 1 (3 . 6) (5 . 7))
257 ("^\\(\\(.+?\\):\\([0-9]+\\):\\).*?\ 258 ("^\\(\\(.+?\\):\\([0-9]+\\):\\).*?\
258\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(?:\033\\[K\\)?\\)" 259\\(\033\\[01;31m\\(?:\033\\[K\\)?\\)\\(.*?\\)\\(\033\\[[0-9]*m\\)"
259 2 3 260 2 3
260 ;; Calculate column positions (beg . end) of first grep match on a line 261 ;; Calculate column positions (beg . end) of first grep match on a line
261 ((lambda () 262 ((lambda ()
262 (setq compilation-error-screen-columns nil) 263 (setq compilation-error-screen-columns nil)
263 (- (match-beginning 5) (match-end 1) 8)) 264 (- (match-beginning 4) (match-end 1)))
264 . 265 .
265 (lambda () (- (match-end 5) (match-end 1) 8))) 266 (lambda () (- (match-end 5) (match-end 1)
267 (- (match-end 4) (match-beginning 4)))))
266 nil 1) 268 nil 1)
267 ("^Binary file \\(.+\\) matches$" 1 nil nil 1)) 269 ("^Binary file \\(.+\\) matches$" 1 nil nil 1 1))
268 "Regexp used to match grep hits. See `compilation-error-regexp-alist'.") 270 "Regexp used to match grep hits. See `compilation-error-regexp-alist'.")
269 271
270(defvar grep-error "grep hit" 272(defvar grep-error "grep hit"
@@ -296,17 +298,21 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
296 (1 compilation-warning-face) 298 (1 compilation-warning-face)
297 (2 compilation-line-face)) 299 (2 compilation-line-face))
298 ;; Highlight grep matches and delete markers 300 ;; Highlight grep matches and delete markers
299 ("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(?:\033\\[K\\)?\\)" 301 ("\\(\033\\[01;31m\\)\\(.*?\\)\\(\033\\[[0-9]*m\\)"
300 ;; Refontification does not work after the markers have been 302 ;; Refontification does not work after the markers have been
301 ;; deleted. So we use the font-lock-face property here as Font 303 ;; deleted. So we use the font-lock-face property here as Font
302 ;; Lock does not clear that. 304 ;; Lock does not clear that.
303 (2 (list 'face nil 'font-lock-face grep-match-face)) 305 (2 (list 'face nil 'font-lock-face grep-match-face))
304 ((lambda (p)) 306 ((lambda (bound))
305 (progn 307 (progn
306 ;; Delete markers with `replace-match' because it updates 308 ;; Delete markers with `replace-match' because it updates
307 ;; the match-data, whereas `delete-region' would render it obsolete. 309 ;; the match-data, whereas `delete-region' would render it obsolete.
308 (replace-match "" t t nil 3) 310 (replace-match "" t t nil 3)
309 (replace-match "" t t nil 1))))) 311 (replace-match "" t t nil 1))))
312 ("\\(\033\\[[0-9;]*[mK]\\)"
313 ;; Delete all remaining escape sequences
314 ((lambda (bound))
315 (replace-match "" t t nil 1))))
310 "Additional things to highlight in grep output. 316 "Additional things to highlight in grep output.
311This gets tacked on the end of the generated expressions.") 317This gets tacked on the end of the generated expressions.")
312 318
@@ -354,7 +360,10 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
354 (when (eq grep-highlight-matches t) 360 (when (eq grep-highlight-matches t)
355 ;; Modify `process-environment' locally bound in `compilation-start' 361 ;; Modify `process-environment' locally bound in `compilation-start'
356 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always")) 362 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always"))
357 (setenv "GREP_COLOR" "01;41")) 363 ;; for GNU grep 2.5.1
364 (setenv "GREP_COLOR" "01;31")
365 ;; for GNU grep 2.5.1-cvs
366 (setenv "GREP_COLORS" "mt=01;31:fn=:ln=:bn=:se=:ml=:cx=:ne"))
358 (set (make-local-variable 'compilation-exit-message-function) 367 (set (make-local-variable 'compilation-exit-message-function)
359 (lambda (status code msg) 368 (lambda (status code msg)
360 (if (eq status 'exit) 369 (if (eq status 'exit)
@@ -514,6 +523,7 @@ temporarily highlight in visited source lines."
514 command-args) 523 command-args)
515 'grep-mode nil highlight-regexp))) 524 'grep-mode nil highlight-regexp)))
516 525
526;;;###autoload
517(define-compilation-mode grep-mode "Grep" 527(define-compilation-mode grep-mode "Grep"
518 "Sets `grep-last-buffer' and `compilation-window-height'." 528 "Sets `grep-last-buffer' and `compilation-window-height'."
519 (setq grep-last-buffer (current-buffer)) 529 (setq grep-last-buffer (current-buffer))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 50644383667..f93ff3d7e02 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -42,7 +42,6 @@
42(eval-when-compile (require 'cl)) ; for case macro 42(eval-when-compile (require 'cl)) ; for case macro
43 43
44(require 'comint) 44(require 'comint)
45(require 'etags)
46(require 'font-lock) 45(require 'font-lock)
47 46
48;; ====================================================================== 47;; ======================================================================
@@ -352,10 +351,10 @@ t means that there is no stack, and we are in display-file mode.")
352 (not (memq gud-minor-mode '(gdbmi gdba))))] 351 (not (memq gud-minor-mode '(gdbmi gdba))))]
353 ["Edit value" speedbar-edit-line 352 ["Edit value" speedbar-edit-line
354 (with-current-buffer gud-comint-buffer 353 (with-current-buffer gud-comint-buffer
355 (not (memq gud-minor-mode '(gdbmi gdba))))] 354 (memq gud-minor-mode '(gdbmi gdba)))]
356 ["Delete expression" gdb-var-delete 355 ["Delete expression" gdb-var-delete
357 (with-current-buffer gud-comint-buffer 356 (with-current-buffer gud-comint-buffer
358 (not (memq gud-minor-mode '(gdbmi gdba))))]) 357 (memq gud-minor-mode '(gdbmi gdba)))])
359 "Additional menu items to add to the speedbar frame.") 358 "Additional menu items to add to the speedbar frame.")
360 359
361;; Make sure our special speedbar mode is loaded 360;; Make sure our special speedbar mode is loaded
@@ -833,6 +832,7 @@ The directory containing FILE becomes the initial working directory
833and source-file directory for your debugger." 832and source-file directory for your debugger."
834 (interactive (list (gud-query-cmdline 'sdb))) 833 (interactive (list (gud-query-cmdline 'sdb)))
835 834
835 (if gud-sdb-needs-tags (require 'etags))
836 (if (and gud-sdb-needs-tags 836 (if (and gud-sdb-needs-tags
837 (not (and (boundp 'tags-file-name) 837 (not (and (boundp 'tags-file-name)
838 (stringp tags-file-name) 838 (stringp tags-file-name)
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index ebe37bc1d46..3212107b20d 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -1493,12 +1493,12 @@ The default is a name found in the buffer around point."
1493 1493
1494(if pascal-outline-map 1494(if pascal-outline-map
1495 nil 1495 nil
1496 (if (boundp 'set-keymap-name) 1496 (if (fboundp 'set-keymap-name)
1497 (set-keymap-name pascal-outline-map 'pascal-outline-map)) 1497 (set-keymap-name pascal-outline-map 'pascal-outline-map))
1498 (if (not (boundp 'set-keymap-parent)) 1498 (if (fboundp 'set-keymap-parent)
1499 (setq pascal-outline-map (copy-keymap pascal-mode-map)) 1499 (set-keymap-parent (setq pascal-outline-map (make-sparse-keymap))
1500 (setq pascal-outline-map (make-sparse-keymap)) 1500 pascal-mode-map)
1501 (set-keymap-parent pascal-outline-map pascal-mode-map)) 1501 (setq pascal-outline-map (copy-keymap pascal-mode-map)))
1502 (define-key pascal-outline-map "\M-\C-a" 'pascal-outline-prev-defun) 1502 (define-key pascal-outline-map "\M-\C-a" 'pascal-outline-prev-defun)
1503 (define-key pascal-outline-map "\M-\C-e" 'pascal-outline-next-defun) 1503 (define-key pascal-outline-map "\M-\C-e" 'pascal-outline-next-defun)
1504 (define-key pascal-outline-map "\C-c\C-d" 'pascal-outline-goto-defun) 1504 (define-key pascal-outline-map "\C-c\C-d" 'pascal-outline-goto-defun)
@@ -1533,7 +1533,7 @@ Pascal Outline mode provides some additional commands.
1533 (interactive "P") 1533 (interactive "P")
1534 (setq pascal-outline-mode 1534 (setq pascal-outline-mode
1535 (if (null arg) (not pascal-outline-mode) t)) 1535 (if (null arg) (not pascal-outline-mode) t))
1536 (if (boundp 'redraw-mode-line) 1536 (if (fboundp 'redraw-mode-line)
1537 (redraw-mode-line)) 1537 (redraw-mode-line))
1538 (if pascal-outline-mode 1538 (if pascal-outline-mode
1539 (progn 1539 (progn
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 98d65d6a653..ffaa78becc1 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -2269,7 +2269,7 @@ programming like EPS.
2269FILENAME is ignored, if it doesn't exist or is read protected. 2269FILENAME is ignored, if it doesn't exist or is read protected.
2270 2270
2271X and Y are relative positions on paper to put the image. 2271X and Y are relative positions on paper to put the image.
2272If X and Y are nil, the image is centralized on paper. 2272If X and Y are nil, the image is centered on paper.
2273 2273
2274XSCALE and YSCALE are scale factor to be applied to image before printing. 2274XSCALE and YSCALE are scale factor to be applied to image before printing.
2275If XSCALE and YSCALE are nil, the original size is used. 2275If XSCALE and YSCALE are nil, the original size is used.
@@ -3031,7 +3031,7 @@ Valid values are:
3031 Where RED, GREEN and BLUE are reals between 0.0 (no color) and 3031 Where RED, GREEN and BLUE are reals between 0.0 (no color) and
3032 1.0 (full color). 3032 1.0 (full color).
3033 3033
3034Any other value is ignored and it's used the black color. 3034Any other value is ignored and black will be used.
3035 3035
3036It's used only when `ps-print-color-p' is non-nil." 3036It's used only when `ps-print-color-p' is non-nil."
3037 :type '(choice :menu-tag "Default Foreground Gray/Color" 3037 :type '(choice :menu-tag "Default Foreground Gray/Color"
@@ -3071,7 +3071,7 @@ Valid values are:
3071 Where RED, GREEN and BLUE are reals between 0.0 (no color) and 3071 Where RED, GREEN and BLUE are reals between 0.0 (no color) and
3072 1.0 (full color). 3072 1.0 (full color).
3073 3073
3074Any other value is ignored and it's used the white color. 3074Any other value is ignored and white will be used.
3075 3075
3076It's used only when `ps-print-color-p' is non-nil. 3076It's used only when `ps-print-color-p' is non-nil.
3077 3077
@@ -4137,10 +4137,10 @@ Each symbol correspond to one bit in a bit vector.")
4137If optional MERGE-P is non-nil, extensions in FACE-EXTENSION-LIST are merged 4137If optional MERGE-P is non-nil, extensions in FACE-EXTENSION-LIST are merged
4138with face extension in ALIST-SYM; otherwise, overrides. 4138with face extension in ALIST-SYM; otherwise, overrides.
4139 4139
4140If optional ALIST-SYM is nil, it's used `ps-print-face-extension-alist'; 4140If optional ALIST-SYM is nil, `ps-print-face-extension-alist' is used;
4141otherwise, it should be an alist symbol. 4141otherwise, it should be an alist symbol.
4142 4142
4143The elements in FACE-EXTENSION-LIST is like those for `ps-extend-face'. 4143The elements in FACE-EXTENSION-LIST are like those for `ps-extend-face'.
4144 4144
4145See `ps-extend-face' for documentation." 4145See `ps-extend-face' for documentation."
4146 (while face-extension-list 4146 (while face-extension-list
@@ -4155,7 +4155,7 @@ See `ps-extend-face' for documentation."
4155If optional MERGE-P is non-nil, extensions in FACE-EXTENSION list are merged 4155If optional MERGE-P is non-nil, extensions in FACE-EXTENSION list are merged
4156with face extensions in ALIST-SYM; otherwise, overrides. 4156with face extensions in ALIST-SYM; otherwise, overrides.
4157 4157
4158If optional ALIST-SYM is nil, it's used `ps-print-face-extension-alist'; 4158If optional ALIST-SYM is nil, `ps-print-face-extension-alist' is used;
4159otherwise, it should be an alist symbol. 4159otherwise, it should be an alist symbol.
4160 4160
4161The elements of FACE-EXTENSION list have the form: 4161The elements of FACE-EXTENSION list have the form:
@@ -4974,7 +4974,7 @@ page-height == ((floor print-height ((th + ls) * zh)) * ((th + ls) * zh)) - th
4974 "PrintHeight 2 div BottomMargin add") 4974 "PrintHeight 2 div BottomMargin add")
4975 "\nBeginBackImage\n") 4975 "\nBeginBackImage\n")
4976 (ps-insert-file image-file) 4976 (ps-insert-file image-file)
4977 ;; coordinate adjustment to centralize image 4977 ;; coordinate adjustment to center image
4978 ;; around x and y position 4978 ;; around x and y position
4979 (let ((box (ps-get-boundingbox))) 4979 (let ((box (ps-get-boundingbox)))
4980 (save-excursion 4980 (save-excursion
diff --git a/lisp/replace.el b/lisp/replace.el
index a8ef61e828d..451650401b1 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -847,7 +847,7 @@ Compatibility function for \\[next-error] invocations."
847 '((((class color) (min-colors 88) (background light)) 847 '((((class color) (min-colors 88) (background light))
848 :background "Tan") 848 :background "Tan")
849 (((class color) (min-colors 88) (background dark)) 849 (((class color) (min-colors 88) (background dark))
850 :background "RoyalBlue4") 850 :background "RoyalBlue3")
851 (((class color) (min-colors 8)) 851 (((class color) (min-colors 8))
852 :background "blue" :foreground "white") 852 :background "blue" :foreground "white")
853 (((type tty) (class mono)) 853 (((type tty) (class mono))
diff --git a/lisp/s-region.el b/lisp/s-region.el
index d3fa6b1f307..b28ab222434 100644
--- a/lisp/s-region.el
+++ b/lisp/s-region.el
@@ -63,12 +63,12 @@
63 (error "Non-vector key: %S" key))) 63 (error "Non-vector key: %S" key)))
64 64
65(defun s-region-move-p1 (&rest arg) 65(defun s-region-move-p1 (&rest arg)
66 "This is an overlay function to point-moving keys that are interactive \"p\"" 66 "This is an overlay function to point-moving keys that are interactive \"p\"."
67 (interactive "p") 67 (interactive "p")
68 (apply (function s-region-move) arg)) 68 (apply (function s-region-move) arg))
69 69
70(defun s-region-move-p2 (&rest arg) 70(defun s-region-move-p2 (&rest arg)
71 "This is an overlay function to point-moving keys that are interactive \"P\"" 71 "This is an overlay function to point-moving keys that are interactive \"P\"."
72 (interactive "P") 72 (interactive "P")
73 (apply (function s-region-move) arg)) 73 (apply (function s-region-move) arg))
74 74
@@ -83,10 +83,10 @@
83 (delete-overlay s-region-overlay)) 83 (delete-overlay s-region-overlay))
84 84
85(defun s-region-bind (keylist &optional map) 85(defun s-region-bind (keylist &optional map)
86 "Bind shifted keys in KEYLIST to s-region-move-p1 or s-region-move-p2. 86 "Bind shifted keys in KEYLIST to `s-region-move-p1' or `s-region-move-p2'.
87Each key in KEYLIST is shifted and bound to one of the s-region-move 87Each key in KEYLIST is shifted and bound to one of the `s-region-move'
88functions provided it is already bound to some command or other. 88functions provided it is already bound to some command or other.
89Optional third argument MAP specifies keymap to add binding to, defaulting 89Optional second argument MAP specifies keymap to add binding to, defaulting
90to global keymap." 90to global keymap."
91 (let ((p2 (list 'scroll-up 'scroll-down 91 (let ((p2 (list 'scroll-up 'scroll-down
92 'beginning-of-buffer 'end-of-buffer))) 92 'beginning-of-buffer 'end-of-buffer)))
diff --git a/lisp/server.el b/lisp/server.el
index 73878d8435b..48ff50f3dbc 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -625,7 +625,7 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
625 ;; a minibuffer/dedicated-window (if there's no other). 625 ;; a minibuffer/dedicated-window (if there's no other).
626 (error (pop-to-buffer next-buffer))))))))) 626 (error (pop-to-buffer next-buffer)))))))))
627 627
628(global-set-key "\C-x#" 'server-edit) 628(define-key ctl-x-map "#" 'server-edit)
629 629
630(defun server-unload-hook () 630(defun server-unload-hook ()
631 (server-start t) 631 (server-start t)
diff --git a/lisp/simple.el b/lisp/simple.el
index 4adc5b05273..32b83c465ae 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -74,7 +74,7 @@ wait this many seconds after Emacs becomes idle before doing an update."
74;;; next-error support framework 74;;; next-error support framework
75 75
76(defgroup next-error nil 76(defgroup next-error nil
77 "next-error support framework." 77 "`next-error' support framework."
78 :group 'compilation 78 :group 'compilation
79 :version "22.1") 79 :version "22.1")
80 80
@@ -86,8 +86,8 @@ wait this many seconds after Emacs becomes idle before doing an update."
86 86
87(defcustom next-error-highlight 0.1 87(defcustom next-error-highlight 0.1
88 "*Highlighting of locations in selected source buffers. 88 "*Highlighting of locations in selected source buffers.
89If number, highlight the locus in next-error face for given time in seconds. 89If number, highlight the locus in `next-error' face for given time in seconds.
90If t, use persistent overlays fontified in next-error face. 90If t, use persistent overlays fontified in `next-error' face.
91If nil, don't highlight the locus in the source buffer. 91If nil, don't highlight the locus in the source buffer.
92If `fringe-arrow', indicate the locus by the fringe arrow." 92If `fringe-arrow', indicate the locus by the fringe arrow."
93 :type '(choice (number :tag "Delay") 93 :type '(choice (number :tag "Delay")
@@ -99,8 +99,8 @@ If `fringe-arrow', indicate the locus by the fringe arrow."
99 99
100(defcustom next-error-highlight-no-select 0.1 100(defcustom next-error-highlight-no-select 0.1
101 "*Highlighting of locations in non-selected source buffers. 101 "*Highlighting of locations in non-selected source buffers.
102If number, highlight the locus in next-error face for given time in seconds. 102If number, highlight the locus in `next-error' face for given time in seconds.
103If t, use persistent overlays fontified in next-error face. 103If t, use persistent overlays fontified in `next-error' face.
104If nil, don't highlight the locus in the source buffer. 104If nil, don't highlight the locus in the source buffer.
105If `fringe-arrow', indicate the locus by the fringe arrow." 105If `fringe-arrow', indicate the locus by the fringe arrow."
106 :type '(choice (number :tag "Delay") 106 :type '(choice (number :tag "Delay")
@@ -122,7 +122,7 @@ If `fringe-arrow', indicate the locus by the fringe arrow."
122(add-to-list 'overlay-arrow-variable-list 'next-error-overlay-arrow-position) 122(add-to-list 'overlay-arrow-variable-list 'next-error-overlay-arrow-position)
123 123
124(defvar next-error-last-buffer nil 124(defvar next-error-last-buffer nil
125 "The most recent next-error buffer. 125 "The most recent `next-error' buffer.
126A buffer becomes most recent when its compilation, grep, or 126A buffer becomes most recent when its compilation, grep, or
127similar mode is started, or when it is used with \\[next-error] 127similar mode is started, or when it is used with \\[next-error]
128or \\[compile-goto-error].") 128or \\[compile-goto-error].")
@@ -143,7 +143,7 @@ to navigate in it.")
143 &optional avoid-current 143 &optional avoid-current
144 extra-test-inclusive 144 extra-test-inclusive
145 extra-test-exclusive) 145 extra-test-exclusive)
146 "Test if BUFFER is a next-error capable buffer. 146 "Test if BUFFER is a `next-error' capable buffer.
147 147
148If AVOID-CURRENT is non-nil, treat the current buffer 148If AVOID-CURRENT is non-nil, treat the current buffer
149as an absolute last resort only. 149as an absolute last resort only.
@@ -170,7 +170,7 @@ that buffer is rejected."
170(defun next-error-find-buffer (&optional avoid-current 170(defun next-error-find-buffer (&optional avoid-current
171 extra-test-inclusive 171 extra-test-inclusive
172 extra-test-exclusive) 172 extra-test-exclusive)
173 "Return a next-error capable buffer. 173 "Return a `next-error' capable buffer.
174If AVOID-CURRENT is non-nil, treat the current buffer 174If AVOID-CURRENT is non-nil, treat the current buffer
175as an absolute last resort only. 175as an absolute last resort only.
176 176
@@ -223,7 +223,7 @@ that buffer is rejected."
223 (error "No next-error capable buffer found"))) 223 (error "No next-error capable buffer found")))
224 224
225(defun next-error (&optional arg reset) 225(defun next-error (&optional arg reset)
226 "Visit next next-error message and corresponding source code. 226 "Visit next `next-error' message and corresponding source code.
227 227
228If all the error messages parsed so far have been processed already, 228If all the error messages parsed so far have been processed already,
229the message buffer is checked for new ones. 229the message buffer is checked for new ones.
@@ -264,7 +264,7 @@ See variables `compilation-parse-errors-function' and
264(defalias 'next-match 'next-error) 264(defalias 'next-match 'next-error)
265 265
266(defun previous-error (&optional n) 266(defun previous-error (&optional n)
267 "Visit previous next-error message and corresponding source code. 267 "Visit previous `next-error' message and corresponding source code.
268 268
269Prefix arg N says how many error messages to move backwards (or 269Prefix arg N says how many error messages to move backwards (or
270forwards, if negative). 270forwards, if negative).
@@ -282,7 +282,7 @@ This operates on the output from the \\[compile] command, for instance."
282 (next-error n t)) 282 (next-error n t))
283 283
284(defun next-error-no-select (&optional n) 284(defun next-error-no-select (&optional n)
285 "Move point to the next error in the next-error buffer and highlight match. 285 "Move point to the next error in the `next-error' buffer and highlight match.
286Prefix arg N says how many error messages to move forwards (or 286Prefix arg N says how many error messages to move forwards (or
287backwards, if negative). 287backwards, if negative).
288Finds and highlights the source line like \\[next-error], but does not 288Finds and highlights the source line like \\[next-error], but does not
@@ -293,7 +293,7 @@ select the source buffer."
293 (pop-to-buffer next-error-last-buffer)) 293 (pop-to-buffer next-error-last-buffer))
294 294
295(defun previous-error-no-select (&optional n) 295(defun previous-error-no-select (&optional n)
296 "Move point to the previous error in the next-error buffer and highlight match. 296 "Move point to the previous error in the `next-error' buffer and highlight match.
297Prefix arg N says how many error messages to move backwards (or 297Prefix arg N says how many error messages to move backwards (or
298forwards, if negative). 298forwards, if negative).
299Finds and highlights the source line like \\[previous-error], but does not 299Finds and highlights the source line like \\[previous-error], but does not
@@ -426,8 +426,8 @@ than the value of `fill-column' and ARG is nil."
426 426
427(defun open-line (n) 427(defun open-line (n)
428 "Insert a newline and leave point before it. 428 "Insert a newline and leave point before it.
429If there is a fill prefix and/or a left-margin, insert them on the new line 429If there is a fill prefix and/or a `left-margin', insert them
430if the line would have been blank. 430on the new line if the line would have been blank.
431With arg N, insert N newlines." 431With arg N, insert N newlines."
432 (interactive "*p") 432 (interactive "*p")
433 (let* ((do-fill-prefix (and fill-prefix (bolp))) 433 (let* ((do-fill-prefix (and fill-prefix (bolp)))
@@ -449,7 +449,7 @@ With arg N, insert N newlines."
449(defun split-line (&optional arg) 449(defun split-line (&optional arg)
450 "Split current line, moving portion beyond point vertically down. 450 "Split current line, moving portion beyond point vertically down.
451If the current line starts with `fill-prefix', insert it on the new 451If the current line starts with `fill-prefix', insert it on the new
452line as well. With prefix ARG, don't insert fill-prefix on new line. 452line as well. With prefix ARG, don't insert `fill-prefix' on new line.
453 453
454When called from Lisp code, ARG may be a prefix string to copy." 454When called from Lisp code, ARG may be a prefix string to copy."
455 (interactive "*P") 455 (interactive "*P")
@@ -647,7 +647,7 @@ Leave one space or none, according to the context."
647 (save-excursion (forward-char -1) 647 (save-excursion (forward-char -1)
648 (looking-at "$\\|\\s(\\|\\s'"))) 648 (looking-at "$\\|\\s(\\|\\s'")))
649 nil 649 nil
650 (insert ?\ )))) 650 (insert ?\s))))
651 651
652(defun delete-horizontal-space (&optional backward-only) 652(defun delete-horizontal-space (&optional backward-only)
653 "Delete all spaces and tabs around point. 653 "Delete all spaces and tabs around point.
@@ -671,9 +671,9 @@ If BACKWARD-ONLY is non-nil, only delete spaces before point."
671 (skip-chars-backward " \t") 671 (skip-chars-backward " \t")
672 (constrain-to-field nil orig-pos) 672 (constrain-to-field nil orig-pos)
673 (dotimes (i (or n 1)) 673 (dotimes (i (or n 1))
674 (if (= (following-char) ?\ ) 674 (if (= (following-char) ?\s)
675 (forward-char 1) 675 (forward-char 1)
676 (insert ?\ ))) 676 (insert ?\s)))
677 (delete-region 677 (delete-region
678 (point) 678 (point)
679 (progn 679 (progn
@@ -1274,7 +1274,7 @@ by the new completion."
1274;; For compatibility with the old subr of the same name. 1274;; For compatibility with the old subr of the same name.
1275(defun minibuffer-prompt-width () 1275(defun minibuffer-prompt-width ()
1276 "Return the display width of the minibuffer prompt. 1276 "Return the display width of the minibuffer prompt.
1277Return 0 if current buffer is not a mini-buffer." 1277Return 0 if current buffer is not a minibuffer."
1278 ;; Return the width of everything before the field at the end of 1278 ;; Return the width of everything before the field at the end of
1279 ;; the buffer; this should be 0 for normal buffers. 1279 ;; the buffer; this should be 0 for normal buffers.
1280 (1- (minibuffer-prompt-end))) 1280 (1- (minibuffer-prompt-end)))
@@ -2345,7 +2345,7 @@ handler, if non-nil, is stored as a `yank-handler' text property on STRING).
2345 2345
2346When the yank handler has a non-nil PARAM element, the original STRING 2346When the yank handler has a non-nil PARAM element, the original STRING
2347argument is not used by `insert-for-yank'. However, since Lisp code 2347argument is not used by `insert-for-yank'. However, since Lisp code
2348may access and use elements from the kill-ring directly, the STRING 2348may access and use elements from the kill ring directly, the STRING
2349argument should still be a \"useful\" string for such uses." 2349argument should still be a \"useful\" string for such uses."
2350 (if (> (length string) 0) 2350 (if (> (length string) 0)
2351 (if yank-handler 2351 (if yank-handler
@@ -2684,7 +2684,7 @@ and KILLP is t if a prefix arg was specified."
2684 (let ((col (current-column))) 2684 (let ((col (current-column)))
2685 (forward-char -1) 2685 (forward-char -1)
2686 (setq col (- col (current-column))) 2686 (setq col (- col (current-column)))
2687 (insert-char ?\ col) 2687 (insert-char ?\s col)
2688 (delete-char 1))) 2688 (delete-char 1)))
2689 (forward-char -1) 2689 (forward-char -1)
2690 (setq count (1- count)))))) 2690 (setq count (1- count))))))
@@ -4075,7 +4075,7 @@ Just \\[universal-argument] as argument means to use the current column."
4075 (setq arg (current-column))) 4075 (setq arg (current-column)))
4076 (if (not (integerp arg)) 4076 (if (not (integerp arg))
4077 ;; Disallow missing argument; it's probably a typo for C-x C-f. 4077 ;; Disallow missing argument; it's probably a typo for C-x C-f.
4078 (error "Set-fill-column requires an explicit argument") 4078 (error "set-fill-column requires an explicit argument")
4079 (message "Fill column set to %d (was %d)" arg fill-column) 4079 (message "Fill column set to %d (was %d)" arg fill-column)
4080 (setq fill-column arg))) 4080 (setq fill-column arg)))
4081 4081
@@ -4155,7 +4155,7 @@ with the character typed.
4155typing characters do. 4155typing characters do.
4156 4156
4157Note that binary overwrite mode is not its own minor mode; it is a 4157Note that binary overwrite mode is not its own minor mode; it is a
4158specialization of overwrite-mode, entered by setting the 4158specialization of overwrite mode, entered by setting the
4159`overwrite-mode' variable to `overwrite-mode-binary'." 4159`overwrite-mode' variable to `overwrite-mode-binary'."
4160 (interactive "P") 4160 (interactive "P")
4161 (setq overwrite-mode 4161 (setq overwrite-mode
@@ -4999,7 +4999,7 @@ PREFIX is the string that represents this modifier in an event type symbol."
4999 (define-key function-key-map (vector keypad) (vector normal)))) 4999 (define-key function-key-map (vector keypad) (vector normal))))
5000 '((kp-0 ?0) (kp-1 ?1) (kp-2 ?2) (kp-3 ?3) (kp-4 ?4) 5000 '((kp-0 ?0) (kp-1 ?1) (kp-2 ?2) (kp-3 ?3) (kp-4 ?4)
5001 (kp-5 ?5) (kp-6 ?6) (kp-7 ?7) (kp-8 ?8) (kp-9 ?9) 5001 (kp-5 ?5) (kp-6 ?6) (kp-7 ?7) (kp-8 ?8) (kp-9 ?9)
5002 (kp-space ?\ ) 5002 (kp-space ?\s)
5003 (kp-tab ?\t) 5003 (kp-tab ?\t)
5004 (kp-enter ?\r) 5004 (kp-enter ?\r)
5005 (kp-multiply ?*) 5005 (kp-multiply ?*)
@@ -5140,7 +5140,7 @@ or by incrementing the N in an existing suffix.
5140DISPLAY-FLAG non-nil means show the new buffer with `pop-to-buffer'. 5140DISPLAY-FLAG non-nil means show the new buffer with `pop-to-buffer'.
5141This is always done when called interactively. 5141This is always done when called interactively.
5142 5142
5143Optional last arg NORECORD non-nil means do not put this buffer at the 5143Optional third arg NORECORD non-nil means do not put this buffer at the
5144front of the list of recently selected ones." 5144front of the list of recently selected ones."
5145 (interactive 5145 (interactive
5146 (progn 5146 (progn
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index f854621cc85..d0d7a0e96c6 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -154,7 +154,7 @@ on `skeleton-autowrap'. An ARG of M-0 will prevent this just for once.
154This command can also be an abbrev expansion (3rd and 4th columns in 154This command can also be an abbrev expansion (3rd and 4th columns in
155\\[edit-abbrevs] buffer: \"\" command-name). 155\\[edit-abbrevs] buffer: \"\" command-name).
156 156
157Optional first argument STR may also be a string which will be the value 157Optional second argument STR may also be a string which will be the value
158of `str' whereas the skeleton's interactor is then ignored." 158of `str' whereas the skeleton's interactor is then ignored."
159 (skeleton-insert (funcall skeleton-filter skeleton) 159 (skeleton-insert (funcall skeleton-filter skeleton)
160 ;; Pretend C-x a e passed its prefix arg to us 160 ;; Pretend C-x a e passed its prefix arg to us
diff --git a/lisp/startup.el b/lisp/startup.el
index 18b331b3a5f..2f71a9ba352 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -184,9 +184,9 @@ This is because we already did so.")
184 184
185(defvar keyboard-type nil 185(defvar keyboard-type nil
186 "The brand of keyboard you are using. 186 "The brand of keyboard you are using.
187This variable is used to define 187This variable is used to define the proper function and keypad
188the proper function and keypad keys for use under X. It is used in a 188keys for use under X. It is used in a fashion analogous to the
189fashion analogous to the environment variable TERM.") 189environment variable TERM.")
190 190
191(defvar window-setup-hook nil 191(defvar window-setup-hook nil
192 "Normal hook run to initialize window system display. 192 "Normal hook run to initialize window system display.
@@ -234,7 +234,7 @@ is less convenient.
234This variable is defined for customization so as to make 234This variable is defined for customization so as to make
235it visible in the relevant context. However, actually customizing it 235it visible in the relevant context. However, actually customizing it
236is not allowed, since it would not work anyway. The only way to set 236is not allowed, since it would not work anyway. The only way to set
237this variable usefully is to set it during while building and dumping Emacs." 237this variable usefully is to set it while building and dumping Emacs."
238 :type '(choice (const :tag "none" nil) string) 238 :type '(choice (const :tag "none" nil) string)
239 :group 'initialization 239 :group 'initialization
240 :initialize 'custom-initialize-default 240 :initialize 'custom-initialize-default
@@ -664,9 +664,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
664 ;; processed. This is consistent with the way main in emacs.c 664 ;; processed. This is consistent with the way main in emacs.c
665 ;; does things. 665 ;; does things.
666 (while (and (not done) args) 666 (while (and (not done) args)
667 (let* ((longopts '(("--no-init-file") ("--no-site-file") ("--user") 667 (let* ((longopts '(("--no-init-file") ("--no-site-file") ("--debug-init")
668 ("--debug-init") ("--iconic") ("--icon-type") 668 ("--user") ("--iconic") ("--icon-type") ("--quick")
669 ("--no-blinking-cursor") ("--bare-bones"))) 669 ("--no-blinking-cursor") ("--basic-display")))
670 (argi (pop args)) 670 (argi (pop args))
671 (orig-argi argi) 671 (orig-argi argi)
672 argval) 672 argval)
@@ -1057,6 +1057,7 @@ Read the Emacs Manual\tView the Emacs manual using Info
1057 :face variable-pitch 1057 :face variable-pitch
1058 "\ 1058 "\
1059Copying Conditions\tConditions for redistributing and changing Emacs 1059Copying Conditions\tConditions for redistributing and changing Emacs
1060Getting New Versions\tHow to obtain the latest version of Emacs
1060More Manuals / Ordering Manuals Buying printed manuals from the FSF\n") 1061More Manuals / Ordering Manuals Buying printed manuals from the FSF\n")
1061 (:face variable-pitch 1062 (:face variable-pitch
1062 "You can do basic editing with the menu bar and scroll bar \ 1063 "You can do basic editing with the menu bar and scroll bar \
@@ -1345,20 +1346,20 @@ You can do basic editing with the menu bar and scroll bar using the mouse.
1345 1346
1346Useful File menu items: 1347Useful File menu items:
1347Exit Emacs (or type Control-x followed by Control-c) 1348Exit Emacs (or type Control-x followed by Control-c)
1348Recover Session recover files you were editing before a crash 1349Recover Session Recover files you were editing before a crash
1349 1350
1350Important Help menu items: 1351Important Help menu items:
1351Emacs Tutorial Learn-by-doing tutorial for using Emacs efficiently. 1352Emacs Tutorial Learn how to use Emacs efficiently
1352Emacs FAQ Frequently asked questions and answers 1353Emacs FAQ Frequently asked questions and answers
1353Read the Emacs Manual View the Emacs manual using Info 1354Read the Emacs Manual View the Emacs manual using Info
1354\(Non)Warranty GNU Emacs comes with ABSOLUTELY NO WARRANTY 1355\(Non)Warranty GNU Emacs comes with ABSOLUTELY NO WARRANTY
1355Copying Conditions Conditions for redistributing and changing Emacs. 1356Copying Conditions Conditions for redistributing and changing Emacs
1356Getting New Versions How to obtain the latest version of Emacs. 1357Getting New Versions How to obtain the latest version of Emacs
1357More Manuals / Ordering Manuals How to order printed manuals from the FSF. 1358More Manuals / Ordering Manuals How to order printed manuals from the FSF
1358") 1359")
1359 (insert "\n\n" (emacs-version) 1360 (insert "\n\n" (emacs-version)
1360 " 1361 "
1361Copyright (C) 2004 Free Software Foundation, Inc.")) 1362Copyright (C) 2005 Free Software Foundation, Inc."))
1362 1363
1363 ;; No mouse menus, so give help using kbd commands. 1364 ;; No mouse menus, so give help using kbd commands.
1364 1365
@@ -1406,7 +1407,7 @@ If you have no Meta key, you may instead type ESC followed by the character.)")
1406 1407
1407 (insert "\n\n" (emacs-version) 1408 (insert "\n\n" (emacs-version)
1408 " 1409 "
1409Copyright (C) 2004 Free Software Foundation, Inc.") 1410Copyright (C) 2005 Free Software Foundation, Inc.")
1410 1411
1411 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying) 1412 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
1412 (eq (key-binding "\C-h\C-d") 'describe-distribution) 1413 (eq (key-binding "\C-h\C-d") 'describe-distribution)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index bb99591d1e1..a35a5d6f161 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -243,9 +243,9 @@ ones, then strokes should NOT pick the one that came closest."
243 243
244(defcustom strokes-grid-resolution 9 244(defcustom strokes-grid-resolution 9
245 "*Integer defining dimensions of the stroke grid. 245 "*Integer defining dimensions of the stroke grid.
246The grid is a square grid, where STROKES-GRID-RESOLUTION defaults to 246The grid is a square grid, where `strokes-grid-resolution' defaults to
247`9', making a 9x9 grid whose coordinates go from (0 . 0) on the top 247`9', making a 9x9 grid whose coordinates go from (0 . 0) on the top
248left to ((STROKES-GRID-RESOLUTION - 1) . (STROKES-GRID-RESOLUTION - 1)) 248left to ((strokes-grid-resolution - 1) . (strokes-grid-resolution - 1))
249on the bottom right. The greater the resolution, the more intricate 249on the bottom right. The greater the resolution, the more intricate
250your strokes can be. 250your strokes can be.
251NOTE: This variable should be odd and MUST NOT be less than 3 and need 251NOTE: This variable should be odd and MUST NOT be less than 3 and need
@@ -259,7 +259,7 @@ WARNING: Changing the value of this variable will gravely affect the
259 :group 'strokes) 259 :group 'strokes)
260 260
261(defcustom strokes-file (convert-standard-filename "~/.strokes") 261(defcustom strokes-file (convert-standard-filename "~/.strokes")
262 "*File containing saved strokes for stroke-mode (default is ~/.strokes)." 262 "*File containing saved strokes for Strokes mode (default is ~/.strokes)."
263 :type 'file 263 :type 'file
264 :group 'strokes) 264 :group 'strokes)
265 265
@@ -284,17 +284,17 @@ This is set properly in the function `strokes-update-window-configuration'.")
284 "Last stroke entered by the user. 284 "Last stroke entered by the user.
285Its value gets set every time the function 285Its value gets set every time the function
286`strokes-fill-stroke' gets called, 286`strokes-fill-stroke' gets called,
287since that is the best time to set the variable") 287since that is the best time to set the variable.")
288 288
289(defvar strokes-global-map '() 289(defvar strokes-global-map '()
290 "Association list of strokes and their definitions. 290 "Association list of strokes and their definitions.
291Each entry is (STROKE . COMMAND) where STROKE is itself a list of 291Each entry is (STROKE . COMMAND) where STROKE is itself a list of
292coordinates (X . Y) where X and Y are lists of positions on the 292coordinates (X . Y) where X and Y are lists of positions on the
293normalized stroke grid, with the top left at (0 . 0). COMMAND is the 293normalized stroke grid, with the top left at (0 . 0). COMMAND is the
294corresponding interactive function") 294corresponding interactive function.")
295 295
296(defvar strokes-load-hook nil 296(defvar strokes-load-hook nil
297 "Function or functions to be called when `strokes' is loaded.") 297 "Functions to be called when Strokes is loaded.")
298 298
299;;; ### NOT IMPLEMENTED YET ### 299;;; ### NOT IMPLEMENTED YET ###
300;;(defvar edit-strokes-menu 300;;(defvar edit-strokes-menu
@@ -473,10 +473,10 @@ Compare `strokes-global-set-stroke'."
473 473
474(defun strokes-get-grid-position (stroke-extent position &optional grid-resolution) 474(defun strokes-get-grid-position (stroke-extent position &optional grid-resolution)
475 "Map POSITION to a new grid position. 475 "Map POSITION to a new grid position.
476Do so based on its STROKE-EXTENT and GRID-RESOLUTION. 476Do so based on its STROKE-EXTENT and GRID-RESOLUTION.
477STROKE-EXTENT as a list \(\(XMIN . YMIN\) \(XMAX . YMAX\)\). 477STROKE-EXTENT as a list \(\(XMIN . YMIN\) \(XMAX . YMAX\)\).
478If POSITION is a `strokes-lift', then it is itself returned. 478If POSITION is a `strokes-lift', then it is itself returned.
479Optional GRID-RESOLUTION may be used in place of STROKES-GRID-RESOLUTION. 479Optional GRID-RESOLUTION may be used in place of `strokes-grid-resolution'.
480The grid is a square whose dimension is [0,GRID-RESOLUTION)." 480The grid is a square whose dimension is [0,GRID-RESOLUTION)."
481 (cond ((consp position) ; actual pixel location 481 (cond ((consp position) ; actual pixel location
482 (let ((grid-resolution (or grid-resolution strokes-grid-resolution)) 482 (let ((grid-resolution (or grid-resolution strokes-grid-resolution))
@@ -566,7 +566,7 @@ The return value is a list ((XMIN . YMIN) (XMAX . YMAX))."
566(defun strokes-renormalize-to-grid (positions &optional grid-resolution) 566(defun strokes-renormalize-to-grid (positions &optional grid-resolution)
567 "Map POSITIONS to a new grid whose dimensions are based on GRID-RESOLUTION. 567 "Map POSITIONS to a new grid whose dimensions are based on GRID-RESOLUTION.
568POSITIONS is a list of positions and stroke-lifts. 568POSITIONS is a list of positions and stroke-lifts.
569Optional GRID-RESOLUTION may be used in place of STROKES-GRID-RESOLUTION. 569Optional GRID-RESOLUTION may be used in place of `strokes-grid-resolution'.
570The grid is a square whose dimension is [0,GRID-RESOLUTION)." 570The grid is a square whose dimension is [0,GRID-RESOLUTION)."
571 (or grid-resolution (setq grid-resolution strokes-grid-resolution)) 571 (or grid-resolution (setq grid-resolution strokes-grid-resolution))
572 (let ((stroke-extent (strokes-get-stroke-extent positions))) 572 (let ((stroke-extent (strokes-get-stroke-extent positions)))
@@ -726,7 +726,7 @@ Optional PROMPT in minibuffer displays before and during stroke reading.
726This function will display the stroke interactively as it is being 726This function will display the stroke interactively as it is being
727entered in the strokes buffer if the variable 727entered in the strokes buffer if the variable
728`strokes-use-strokes-buffer' is non-nil. 728`strokes-use-strokes-buffer' is non-nil.
729Optional EVENT is acceptable as the starting event of the stroke" 729Optional EVENT is acceptable as the starting event of the stroke."
730 (save-excursion 730 (save-excursion
731 (let ((pix-locs nil) 731 (let ((pix-locs nil)
732 (grid-locs nil) 732 (grid-locs nil)
@@ -790,7 +790,7 @@ Optional PROMPT in minibuffer displays before and during stroke reading.
790Note that a complex stroke allows the user to pen-up and pen-down. This 790Note that a complex stroke allows the user to pen-up and pen-down. This
791is implemented by allowing the user to paint with button 1 or button 2 and 791is implemented by allowing the user to paint with button 1 or button 2 and
792then complete the stroke with button 3. 792then complete the stroke with button 3.
793Optional EVENT is acceptable as the starting event of the stroke" 793Optional EVENT is acceptable as the starting event of the stroke."
794 (save-excursion 794 (save-excursion
795 (save-window-excursion 795 (save-window-excursion
796 (set-window-configuration strokes-window-configuration) 796 (set-window-configuration strokes-window-configuration)
@@ -892,11 +892,12 @@ This must be bound to a mouse event."
892 892
893;;;###autoload 893;;;###autoload
894(defun strokes-help () 894(defun strokes-help ()
895 "Get instruction on using the `strokes' package." 895 "Get instruction on using the Strokes package."
896 (interactive) 896 (interactive)
897 (with-output-to-temp-buffer "*Help with Strokes*" 897 (with-output-to-temp-buffer "*Help with Strokes*"
898 (princ 898 (princ
899 "This is help for the strokes package. 899 (substitute-command-keys
900 "This is help for the strokes package.
900 901
901------------------------------------------------------------ 902------------------------------------------------------------
902 903
@@ -986,7 +987,7 @@ You can change this location by setting the variable `strokes-file'.
986You will be prompted to save them when you exit Emacs, or you can save 987You will be prompted to save them when you exit Emacs, or you can save
987them with 988them with
988 989
989> M-x strokes-save-strokes 990> M-x strokes-prompt-user-save-strokes
990 991
991Your strokes get loaded automatically when you enable `strokes-mode'. 992Your strokes get loaded automatically when you enable `strokes-mode'.
992You can also load in your user-defined strokes with 993You can also load in your user-defined strokes with
@@ -1024,7 +1025,7 @@ o Strokes are a bit computer-dependent in that they depend somewhat on
1024 variable which many people wanted to see was 1025 variable which many people wanted to see was
1025 `strokes-use-strokes-buffer' which allows the user to use strokes 1026 `strokes-use-strokes-buffer' which allows the user to use strokes
1026 silently--without displaying the strokes. All variables can be set 1027 silently--without displaying the strokes. All variables can be set
1027 by customizing the group `strokes' via \[customize-group].") 1028 by customizing the group `strokes' via \\[customize-group]."))
1028 (set-buffer standard-output) 1029 (set-buffer standard-output)
1029 (help-mode) 1030 (help-mode)
1030 (print-help-return-message))) 1031 (print-help-return-message)))
diff --git a/lisp/tempo.el b/lisp/tempo.el
index 3f5687d0d08..915d3a430d8 100644
--- a/lisp/tempo.el
+++ b/lisp/tempo.el
@@ -117,7 +117,7 @@
117(defcustom tempo-interactive nil 117(defcustom tempo-interactive nil
118 "*Prompt user for strings in templates. 118 "*Prompt user for strings in templates.
119If this variable is non-nil, `tempo-insert' prompts the 119If this variable is non-nil, `tempo-insert' prompts the
120user for text to insert in the templates" 120user for text to insert in the templates."
121 :type 'boolean 121 :type 'boolean
122 :group 'tempo) 122 :group 'tempo)
123 123
@@ -133,7 +133,7 @@ In Transient Mark mode, this option is unused."
133 133
134(defcustom tempo-show-completion-buffer t 134(defcustom tempo-show-completion-buffer t
135 "*If non-nil, show a buffer with possible completions, when only 135 "*If non-nil, show a buffer with possible completions, when only
136a partial completion can be found" 136a partial completion can be found."
137 :type 'boolean 137 :type 'boolean
138 :group 'tempo) 138 :group 'tempo)
139 139
@@ -148,17 +148,17 @@ disappears at the next keypress; otherwise, it remains forever."
148(defvar tempo-insert-string-functions nil 148(defvar tempo-insert-string-functions nil
149 "List of functions to run when inserting a string. 149 "List of functions to run when inserting a string.
150Each function is called with a single arg, STRING and should return 150Each function is called with a single arg, STRING and should return
151another string. This could be used for making all strings upcase by 151another string. This could be used for making all strings upcase by
152setting it to '(upcase), for example.") 152setting it to '(upcase), for example.")
153 153
154(defvar tempo-tags nil 154(defvar tempo-tags nil
155 "An association list with tags and corresponding templates") 155 "An association list with tags and corresponding templates.")
156 156
157(defvar tempo-local-tags '((tempo-tags . nil)) 157(defvar tempo-local-tags '((tempo-tags . nil))
158 "A list of locally installed tag completion lists. 158 "A list of locally installed tag completion lists.
159It is a association list where the car of every element is a symbol 159It is a association list where the car of every element is a symbol
160whose variable value is a template list. The cdr part, if non-nil, is a 160whose variable value is a template list. The cdr part, if non-nil,
161function or a regexp that defines the string to match. See the 161is a function or a regexp that defines the string to match. See the
162documentation for the function `tempo-complete-tag' for more info. 162documentation for the function `tempo-complete-tag' for more info.
163 163
164`tempo-tags' is always in the last position in this list.") 164`tempo-tags' is always in the last position in this list.")
@@ -175,8 +175,8 @@ documentation for the function `tempo-complete-tag' for more info.
175(defvar tempo-match-finder "\\b\\([[:word:]]+\\)\\=" 175(defvar tempo-match-finder "\\b\\([[:word:]]+\\)\\="
176 "The regexp or function used to find the string to match against tags. 176 "The regexp or function used to find the string to match against tags.
177 177
178If `tempo-match-finder is a string, it should contain a regular 178If `tempo-match-finder' is a string, it should contain a regular
179expression with at least one \\( \\) pair. When searching for tags, 179expression with at least one \\( \\) pair. When searching for tags,
180`tempo-complete-tag' calls `re-search-backward' with this string, and 180`tempo-complete-tag' calls `re-search-backward' with this string, and
181the string between the first \\( and \\) is used for matching against 181the string between the first \\( and \\) is used for matching against
182each string in the tag list. If one is found, the whole text between 182each string in the tag list. If one is found, the whole text between
@@ -229,51 +229,50 @@ NAME is a string that contains the name of the template, ELEMENTS is a
229list of elements in the template, TAG is the tag used for completion, 229list of elements in the template, TAG is the tag used for completion,
230DOCUMENTATION is the documentation string for the insertion command 230DOCUMENTATION is the documentation string for the insertion command
231created, and TAGLIST (a symbol) is the tag list that TAG (if provided) 231created, and TAGLIST (a symbol) is the tag list that TAG (if provided)
232should be added to). If TAGLIST is nil and TAG is non-nil, TAG is 232should be added to. If TAGLIST is nil and TAG is non-nil, TAG is
233added to `tempo-tags' 233added to `tempo-tags'.
234 234
235The elements in ELEMENTS can be of several types: 235The elements in ELEMENTS can be of several types:
236 236
237 - A string. It is sent to the hooks in `tempo-insert-string-functions', 237 - A string: It is sent to the hooks in `tempo-insert-string-functions',
238 and the result is inserted. 238 and the result is inserted.
239 - The symbol 'p. This position is saved in `tempo-marks'. 239 - The symbol `p': This position is saved in `tempo-marks'.
240 - The symbol 'r. If `tempo-insert' is called with ON-REGION non-nil 240 - The symbol `r': If `tempo-insert' is called with ON-REGION non-nil
241 the current region is placed here. Otherwise it works like 'p. 241 the current region is placed here. Otherwise it works like `p'.
242 - (p PROMPT <NAME> <NOINSERT>) If `tempo-interactive' is non-nil, the 242 - (p PROMPT <NAME> <NOINSERT>): If `tempo-interactive' is non-nil, the
243 user is prompted in the minibuffer with PROMPT for a string to be 243 user is prompted in the minibuffer with PROMPT for a string to be
244 inserted. If the optional parameter NAME is non-nil, the text is 244 inserted. If the optional parameter NAME is non-nil, the text is
245 saved for later insertion with the `s' tag. If there already is 245 saved for later insertion with the `s' tag. If there already is
246 something saved under NAME that value is used instead and no 246 something saved under NAME that value is used instead and no
247 prompting is made. If NOINSERT is provided and non-nil, nothing is 247 prompting is made. If NOINSERT is provided and non-nil, nothing is
248 inserted, but text is still saved when a NAME is provided. For 248 inserted, but text is still saved when a NAME is provided. For
249 clarity, the symbol 'noinsert should be used as argument. 249 clarity, the symbol `noinsert' should be used as argument.
250 - (P PROMPT <NAME> <NOINSERT>) Works just like the previous tag, but 250 - (P PROMPT <NAME> <NOINSERT>): Works just like the previous tag, but
251 forces tempo-interactive to be true. 251 forces `tempo-interactive' to be true.
252 - (r PROMPT <NAME> <NOINSERT>) like the previous, but if 252 - (r PROMPT <NAME> <NOINSERT>): Like the previous tag, but if
253 `tempo-interactive' is nil and `tempo-insert' is called with 253 `tempo-interactive' is nil and `tempo-insert' is called with
254 ON-REGION non-nil, the current region is placed here. This usually 254 ON-REGION non-nil, the current region is placed here. This usually
255 happens when you call the template function with a prefix argument. 255 happens when you call the template function with a prefix argument.
256 - (s NAME) Inserts text previously read with the (p ..) construct. 256 - (s NAME): Inserts text previously read with the (p ..) construct.
257 Finds the insertion saved under NAME and inserts it. Acts like 'p 257 Finds the insertion saved under NAME and inserts it. Acts like `p'
258 if tempo-interactive is nil. 258 if tempo-interactive is nil.
259 - '& If there is only whitespace between the line start and point, 259 - `&': If there is only whitespace between the line start and point,
260 nothing happens. Otherwise a newline is inserted. 260 nothing happens. Otherwise a newline is inserted.
261 - '% If there is only whitespace between point and end-of-line 261 - `%': If there is only whitespace between point and end of line,
262 nothing happens. Otherwise a newline is inserted. 262 nothing happens. Otherwise a newline is inserted.
263 - 'n inserts a newline. 263 - `n': Inserts a newline.
264 - '> The line is indented using `indent-according-to-mode'. Note that 264 - `>': The line is indented using `indent-according-to-mode'. Note
265 you often should place this item after the text you want on the 265 that you often should place this item after the text you want on
266 line. 266 the line.
267 - 'r> Like r, but it also indents the region. 267 - `r>': Like `r', but it also indents the region.
268 - 'n> Inserts a newline and indents line. 268 - `n>': Inserts a newline and indents line.
269 - 'o Like '% but leaves the point before the newline. 269 - `o': Like `%' but leaves the point before the newline.
270 - nil. It is ignored. 270 - nil: It is ignored.
271 - Anything else. It is evaluated and the result is treated as an 271 - Anything else: It is evaluated and the result is treated as an
272 element to be inserted. One additional tag is useful for these 272 element to be inserted. One additional tag is useful for these
273 cases. If an expression returns a list '(l foo bar), the elements 273 cases. If an expression returns a list '(l foo bar), the elements
274 after 'l will be inserted according to the usual rules. This makes 274 after `l' will be inserted according to the usual rules. This makes
275 it possible to return several elements from one expression." 275 it possible to return several elements from one expression."
276
277 (let* ((template-name (intern (concat "tempo-template-" 276 (let* ((template-name (intern (concat "tempo-template-"
278 name))) 277 name)))
279 (command-name template-name)) 278 (command-name template-name))
@@ -296,14 +295,14 @@ The elements in ELEMENTS can be of several types:
296(defun tempo-insert-template (template on-region) 295(defun tempo-insert-template (template on-region)
297 "Insert a template. 296 "Insert a template.
298TEMPLATE is the template to be inserted. If ON-REGION is non-nil the 297TEMPLATE is the template to be inserted. If ON-REGION is non-nil the
299`r' elements are replaced with the current region. In Transient Mark 298`r' elements are replaced with the current region. In Transient Mark
300mode, ON-REGION is ignored and assumed true if the region is active." 299mode, ON-REGION is ignored and assumed true if the region is active."
301 (unwind-protect 300 (unwind-protect
302 (progn 301 (progn
303 (if (or (and (boundp 'transient-mark-mode) ; For Emacs 302 (if (or (and (boundp 'transient-mark-mode) ; For Emacs
304 transient-mark-mode 303 transient-mark-mode
305 mark-active) 304 mark-active)
306 (and (boundp 'zmacs-regions) ; For XEmacs 305 (if (featurep 'xemacs)
307 zmacs-regions (mark))) 306 zmacs-regions (mark)))
308 (setq on-region t)) 307 (setq on-region t))
309 (and on-region 308 (and on-region
@@ -399,9 +398,9 @@ possible."
399;;; tempo-insert-prompt 398;;; tempo-insert-prompt
400 399
401(defun tempo-insert-prompt-compat (prompt) 400(defun tempo-insert-prompt-compat (prompt)
402 "Compatibility hack for tempo-insert-prompt. 401 "Compatibility hack for `tempo-insert-prompt'.
403PROMPT can be either a prompt string, or a list of arguments to 402PROMPT can be either a prompt string, or a list of arguments to
404tempo-insert-prompt, or nil." 403`tempo-insert-prompt', or nil."
405 (if (consp prompt) ; not nil either 404 (if (consp prompt) ; not nil either
406 (apply 'tempo-insert-prompt prompt) 405 (apply 'tempo-insert-prompt prompt)
407 (tempo-insert-prompt prompt))) 406 (tempo-insert-prompt prompt)))
@@ -410,12 +409,12 @@ tempo-insert-prompt, or nil."
410 "Prompt for a text string and insert it in the current buffer. 409 "Prompt for a text string and insert it in the current buffer.
411If the variable `tempo-interactive' is non-nil the user is prompted 410If the variable `tempo-interactive' is non-nil the user is prompted
412for a string in the minibuffer, which is then inserted in the current 411for a string in the minibuffer, which is then inserted in the current
413buffer. If `tempo-interactive' is nil, the current point is placed on 412buffer. If `tempo-interactive' is nil, the current point is placed on
414`tempo-mark'. 413`tempo-mark'.
415 414
416PROMPT is the prompt string, SAVE-NAME is a name to save the inserted 415PROMPT is the prompt string, SAVE-NAME is a name to save the inserted
417text under. If the optional argument NO-INSERT is non-nil, no text i 416text under. If the optional argument NO-INSERT is non-nil, no text is
418inserted. This can be useful when there is a SAVE-NAME. 417inserted. This can be useful when there is a SAVE-NAME.
419 418
420If there already is a value for SAVE-NAME, it is used and the user is 419If there already is a value for SAVE-NAME, it is used and the user is
421never prompted." 420never prompted."
@@ -448,8 +447,7 @@ never prompted."
448;;; tempo-is-user-element 447;;; tempo-is-user-element
449 448
450(defun tempo-is-user-element (element) 449(defun tempo-is-user-element (element)
451 "Tries all the user-defined element handlers in 450 "Tries all the user-defined element handlers in `tempo-user-elements'."
452`tempo-user-elements'"
453 ;; Sigh... I need (some list) 451 ;; Sigh... I need (some list)
454 (catch 'found 452 (catch 'found
455 (mapcar (function (lambda (handler) 453 (mapcar (function (lambda (handler)
@@ -531,7 +529,7 @@ and insert the results."
531;;; tempo-insert-mark 529;;; tempo-insert-mark
532 530
533(defun tempo-insert-mark (mark) 531(defun tempo-insert-mark (mark)
534 "Insert a mark `tempo-marks' while keeping it sorted" 532 "Insert a mark `tempo-marks' while keeping it sorted."
535 (cond ((null tempo-marks) (setq tempo-marks (list mark))) 533 (cond ((null tempo-marks) (setq tempo-marks (list mark)))
536 ((< mark (car tempo-marks)) (setq tempo-marks (cons mark tempo-marks))) 534 ((< mark (car tempo-marks)) (setq tempo-marks (cons mark tempo-marks)))
537 (t (let ((lp tempo-marks)) 535 (t (let ((lp tempo-marks))
@@ -603,8 +601,8 @@ TAG-LIST is a symbol whose variable value is a tag list created with
603 601
604COMPLETION-FUNCTION is an obsolete option for specifying an optional 602COMPLETION-FUNCTION is an obsolete option for specifying an optional
605function or string that is used by `\\[tempo-complete-tag]' to find a 603function or string that is used by `\\[tempo-complete-tag]' to find a
606string to match the tag against. It has the same definition as the 604string to match the tag against. It has the same definition as the
607variable `tempo-match-finder'. In this version, supplying a 605variable `tempo-match-finder'. In this version, supplying a
608COMPLETION-FUNCTION just sets `tempo-match-finder' locally." 606COMPLETION-FUNCTION just sets `tempo-match-finder' locally."
609 (let ((old (assq tag-list tempo-local-tags))) 607 (let ((old (assq tag-list tempo-local-tags)))
610 (if old 608 (if old
@@ -647,7 +645,7 @@ If `tempo-dirty-collection' is nil, the old collection is reused."
647 645
648(defun tempo-find-match-string (finder) 646(defun tempo-find-match-string (finder)
649 "Find a string to be matched against a tag list. 647 "Find a string to be matched against a tag list.
650FINDER is a function or a string. Returns (STRING . POS), or nil 648FINDER is a function or a string. Returns (STRING . POS), or nil
651if no reasonable string is found." 649if no reasonable string is found."
652 (cond ((stringp finder) 650 (cond ((stringp finder)
653 (let (successful) 651 (let (successful)
@@ -671,7 +669,7 @@ if no reasonable string is found."
671All the tags in the tag lists in `tempo-local-tags' 669All the tags in the tag lists in `tempo-local-tags'
672\(this includes `tempo-tags') are searched for a match for the text 670\(this includes `tempo-tags') are searched for a match for the text
673before the point. The way the string to match for is determined can 671before the point. The way the string to match for is determined can
674be altered with the variable `tempo-match-finder'. If 672be altered with the variable `tempo-match-finder'. If
675`tempo-match-finder' returns nil, then the results are the same as 673`tempo-match-finder' returns nil, then the results are the same as
676no match at all. 674no match at all.
677 675
diff --git a/lisp/term.el b/lisp/term.el
index 2947e68f746..ddb9fe5168e 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1100,6 +1100,8 @@ Entry to this mode runs the hooks on `term-mode-hook'."
1100 (make-local-variable 'term-current-face) 1100 (make-local-variable 'term-current-face)
1101 (make-local-variable 'term-pending-frame) 1101 (make-local-variable 'term-pending-frame)
1102 (setq term-pending-frame nil) 1102 (setq term-pending-frame nil)
1103 ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
1104 (set (make-local-variable 'cua-mode) nil)
1103 (run-mode-hooks 'term-mode-hook) 1105 (run-mode-hooks 'term-mode-hook)
1104 (term-if-xemacs 1106 (term-if-xemacs
1105 (set-buffer-menubar 1107 (set-buffer-menubar
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 1709b1554a5..26708deefe2 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.13 8;; Version: 3.14
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -21,8 +21,8 @@
21 21
22;; You should have received a copy of the GNU General Public License 22;; You should have received a copy of the GNU General Public License
23;; along with GNU Emacs; see the file COPYING. If not, write to the 23;; along with GNU Emacs; see the file COPYING. If not, write to the
24;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 24;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25;; Boston, MA 02110-1301, USA. 25;; Boston, MA 02111-1307, USA.
26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27;; 27;;
28;;; Commentary: 28;;; Commentary:
@@ -80,6 +80,12 @@
80;; 80;;
81;; Changes: 81;; Changes:
82;; ------- 82;; -------
83;; Version 3.14
84;; - Formulas for individual fields in table.
85;; - Automatic recalculation in calculating tables.
86;; - Named fields and columns in tables.
87;; - Fixed bug with calling `org-archive' several times in a row.
88;;
83;; Version 3.13 89;; Version 3.13
84;; - Efficiency improvements: Fewer table re-alignments needed. 90;; - Efficiency improvements: Fewer table re-alignments needed.
85;; - New special lines in tables, for defining names for individual cells. 91;; - New special lines in tables, for defining names for individual cells.
@@ -182,7 +188,7 @@
182 188
183;;; Customization variables 189;;; Customization variables
184 190
185(defvar org-version "3.13" 191(defvar org-version "3.14"
186 "The version number of the file org.el.") 192 "The version number of the file org.el.")
187(defun org-version () 193(defun org-version ()
188 (interactive) 194 (interactive)
@@ -1215,6 +1221,20 @@ line will be formatted with <th> tags."
1215 :group 'org-table 1221 :group 'org-table
1216 :type 'boolean) 1222 :type 'boolean)
1217 1223
1224(defcustom org-table-tab-recognizes-table.el t
1225 "Non-nil means, TAB will automatically notice a table.el table.
1226When it sees such a table, it moves point into it and - if necessary -
1227calls `table-recognize-table'."
1228 :group 'org-table
1229 :type 'boolean)
1230
1231;; FIXME: Should this one be in another group? Which one?
1232(defcustom org-enable-fixed-width-editor t
1233 "Non-nil means, lines starting with \":\" are treated as fixed-width.
1234This currently only means, they are never auto-wrapped.
1235When nil, such lines will be treated like ordinary lines."
1236 :group 'org-table
1237 :type 'boolean)
1218 1238
1219(defgroup org-table-calculation nil 1239(defgroup org-table-calculation nil
1220 "Options concerning tables in Org-mode." 1240 "Options concerning tables in Org-mode."
@@ -1284,29 +1304,10 @@ in table calculations, including symbolics etc."
1284 :group 'org-table-calculation 1304 :group 'org-table-calculation
1285 :type 'boolean) 1305 :type 'boolean)
1286 1306
1287(defcustom org-table-tab-recognizes-table.el t 1307(defcustom org-table-allow-automatic-line-recalculation t
1288 "Non-nil means, TAB will automatically notice a table.el table. 1308 "Non-nil means, lines makred with |#| or |*| will be recomputed automatically.
1289When it sees such a table, it moves point into it and - if necessary - 1309Automatically means, when TAB or RET or C-c C-c are pressed in the line."
1290calls `table-recognize-table'." 1310 :group 'org-table-calculation
1291 :group 'org-table
1292 :type 'boolean)
1293
1294(defcustom org-export-prefer-native-exporter-for-tables nil
1295 "Non-nil means, always export tables created with table.el natively.
1296Natively means, use the HTML code generator in table.el.
1297When nil, Org-mode's own HTML generator is used when possible (i.e. if
1298the table does not use row- or column-spanning). This has the
1299advantage, that the automatic HTML conversions for math symbols and
1300sub/superscripts can be applied. Org-mode's HTML generator is also
1301much faster."
1302 :group 'org-table
1303 :type 'boolean)
1304
1305(defcustom org-enable-fixed-width-editor t
1306 "Non-nil means, lines starting with \":\" are treated as fixed-width.
1307This currently only means, they are never auto-wrapped.
1308When nil, such lines will be treated like ordinary lines."
1309 :group 'org-table
1310 :type 'boolean) 1311 :type 'boolean)
1311 1312
1312(defgroup org-export nil 1313(defgroup org-export nil
@@ -1425,6 +1426,17 @@ This option can also be set with the +OPTIONS line, e.g. \"|:nil\"."
1425 :group 'org-export 1426 :group 'org-export
1426 :type 'boolean) 1427 :type 'boolean)
1427 1428
1429(defcustom org-export-prefer-native-exporter-for-tables nil
1430 "Non-nil means, always export tables created with table.el natively.
1431Natively means, use the HTML code generator in table.el.
1432When nil, Org-mode's own HTML generator is used when possible (i.e. if
1433the table does not use row- or column-spanning). This has the
1434advantage, that the automatic HTML conversions for math symbols and
1435sub/superscripts can be applied. Org-mode's HTML generator is also
1436much faster."
1437 :group 'org-export
1438 :type 'boolean)
1439
1428(defcustom org-export-html-table-tag 1440(defcustom org-export-html-table-tag
1429 "<table border=1 cellspacing=0 cellpadding=6>" 1441 "<table border=1 cellspacing=0 cellpadding=6>"
1430 "The HTML tag used to start a table. 1442 "The HTML tag used to start a table.
@@ -1926,7 +1938,7 @@ The following commands are available:
1926 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" 1938 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
1927 (1 'org-table t)) 1939 (1 'org-table t))
1928 '("^[ \t]*\\(:.*\\)" (1 'org-table t)) 1940 '("^[ \t]*\\(:.*\\)" (1 'org-table t))
1929 '("| *\\(=[^|\n]*\\)" (1 'org-formula t)) 1941 '("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
1930 '("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t)) 1942 '("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
1931 ))) 1943 )))
1932 (set (make-local-variable 'org-font-lock-keywords) 1944 (set (make-local-variable 'org-font-lock-keywords)
@@ -2634,7 +2646,10 @@ heading be marked DONE, and the current time will be added."
2634 (setq level (match-end 0)) 2646 (setq level (match-end 0))
2635 (setq heading nil level 0)) 2647 (setq heading nil level 0))
2636 (save-excursion 2648 (save-excursion
2637 (org-copy-subtree) ; We first only copy, in case something goes wrong 2649 ;; We first only copy, in case something goes wrong
2650 ;; we need to protect this-command, to avoid kill-region sets it,
2651 ;; which would lead to duplication of subtrees
2652 (let (this-command) (org-copy-subtree))
2638 (set-buffer buffer) 2653 (set-buffer buffer)
2639 ;; Enforce org-mode for the archive buffer 2654 ;; Enforce org-mode for the archive buffer
2640 (if (not (eq major-mode 'org-mode)) 2655 (if (not (eq major-mode 'org-mode))
@@ -2691,7 +2706,7 @@ heading be marked DONE, and the current time will be added."
2691 (if (not (eq this-buffer buffer)) (save-buffer)))) 2706 (if (not (eq this-buffer buffer)) (save-buffer))))
2692 ;; Here we are back in the original buffer. Everything seems to have 2707 ;; Here we are back in the original buffer. Everything seems to have
2693 ;; worked. So now cut the tree and finish up. 2708 ;; worked. So now cut the tree and finish up.
2694 (org-cut-subtree) 2709 (let (this-command) (org-cut-subtree))
2695 (if (looking-at "[ \t]*$") (kill-line)) 2710 (if (looking-at "[ \t]*$") (kill-line))
2696 (message "Subtree archived %s" 2711 (message "Subtree archived %s"
2697 (if (eq this-buffer buffer) 2712 (if (eq this-buffer buffer)
@@ -2717,7 +2732,6 @@ At all other locations, this simply calls `ispell-complete-word'."
2717 (skip-chars-backward "a-zA-Z0-9_:$") 2732 (skip-chars-backward "a-zA-Z0-9_:$")
2718 (point))) 2733 (point)))
2719 (texp (equal (char-before beg) ?\\)) 2734 (texp (equal (char-before beg) ?\\))
2720 (form (equal (char-before beg) ?=))
2721 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2)) 2735 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
2722 beg) 2736 beg)
2723 "#+")) 2737 "#+"))
@@ -2734,9 +2748,6 @@ At all other locations, this simply calls `ispell-complete-word'."
2734 (texp 2748 (texp
2735 (setq type :tex) 2749 (setq type :tex)
2736 org-html-entities) 2750 org-html-entities)
2737 (form
2738 (setq type :form)
2739 '(("sum") ("sumv") ("sumh")))
2740 ((string-match "\\`\\*+[ \t]*\\'" 2751 ((string-match "\\`\\*+[ \t]*\\'"
2741 (buffer-substring (point-at-bol) beg)) 2752 (buffer-substring (point-at-bol) beg))
2742 (setq type :todo) 2753 (setq type :todo)
@@ -5816,6 +5827,8 @@ See also the variable `org-reverse-note-order'."
5816 "Detects a table line marked for automatic recalculation.") 5827 "Detects a table line marked for automatic recalculation.")
5817(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)" 5828(defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)"
5818 "Detects a table line marked for automatic recalculation.") 5829 "Detects a table line marked for automatic recalculation.")
5830(defconst org-table-calculate-mark-regexp "^[ \t]*| *[!$^_#*] *\\(|\\|$\\)"
5831 "Detects a table line marked for automatic recalculation.")
5819(defconst org-table-hline-regexp "^[ \t]*|-" 5832(defconst org-table-hline-regexp "^[ \t]*|-"
5820 "Detects an org-type table hline.") 5833 "Detects an org-type table hline.")
5821(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]" 5834(defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]"
@@ -6119,7 +6132,7 @@ Optional argument NEW may specify text to replace the current field content."
6119 (cond 6132 (cond
6120 ((and (not new) org-table-may-need-update)) ; Realignment will happen anyway 6133 ((and (not new) org-table-may-need-update)) ; Realignment will happen anyway
6121 ((org-at-table-hline-p) 6134 ((org-at-table-hline-p)
6122 ;; FIXME: I use to enforce realign here, but I think this is not needed. 6135 ;; FIXME: I used to enforce realign here, but I think this is not needed.
6123 ;; (setq org-table-may-need-update t) 6136 ;; (setq org-table-may-need-update t)
6124 ) 6137 )
6125 ((and (not new) 6138 ((and (not new)
@@ -6133,15 +6146,17 @@ Optional argument NEW may specify text to replace the current field content."
6133 (let* ((pos (point)) s 6146 (let* ((pos (point)) s
6134 (col (org-table-current-column)) 6147 (col (org-table-current-column))
6135 (num (nth (1- col) org-table-last-alignment)) 6148 (num (nth (1- col) org-table-last-alignment))
6136 l f n o upd) 6149 l f n o e)
6137 (when (> col 0) 6150 (when (> col 0)
6138 (skip-chars-backward "^|\n") 6151 (skip-chars-backward "^|\n")
6139 (if (looking-at " *\\([^|\n]*?\\) *|") 6152 (if (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")
6140 (progn 6153 (progn
6141 (setq s (match-string 1) 6154 (setq s (match-string 1)
6142 o (match-string 0) 6155 o (match-string 0)
6143 l (max 1 (- (match-end 0) (match-beginning 0) 3))) 6156 l (max 1 (- (match-end 0) (match-beginning 0) 3))
6144 (setq f (format (if num " %%%ds |" " %%-%ds |") l) 6157 e (not (= (match-beginning 2) (match-end 2))))
6158 (setq f (format (if num " %%%ds %s" " %%-%ds %s")
6159 l (if e "|" (setq org-table-may-need-update t) ""))
6145 n (format f s t t)) 6160 n (format f s t t))
6146 (if new 6161 (if new
6147 (if (<= (length new) l) 6162 (if (<= (length new) l)
@@ -6980,91 +6995,186 @@ If NLAST is a number, only the NLAST fields will actually be summed."
6980 ((equal n 0) nil) 6995 ((equal n 0) nil)
6981 (t n)))) 6996 (t n))))
6982 6997
6998(defun org-table-get-vertical-vector (desc &optional tbeg col)
6999 "Get a calc vector from a column, according to descriptor DESC.
7000Optional arguments TBEG and COL can give the beginning of the table
7001and the current column, to avoid unnecessary parsing."
7002 (save-excursion
7003 (or tbeg (setq tbeg (org-table-begin)))
7004 (or col (setq col (org-table-current-column)))
7005 (let (beg end nn n n1 n2 l (thisline (org-current-line)) hline-list)
7006 (cond
7007 ((string-match "\\(I+\\)\\(-\\(I+\\)\\)?" desc)
7008 (setq n1 (- (match-end 1) (match-beginning 1)))
7009 (if (match-beginning 3)
7010 (setq n2 (- (match-end 2) (match-beginning 3))))
7011 (setq n (if n2 (max n1 n2) n1))
7012 (setq n1 (if n2 (min n1 n2)))
7013 (setq nn n)
7014 (while (and (> nn 0)
7015 (re-search-backward org-table-hline-regexp tbeg t))
7016 (push (org-current-line) hline-list)
7017 (setq nn (1- nn)))
7018 (setq hline-list (nreverse hline-list))
7019 (goto-line (nth (1- n) hline-list))
7020 (when (re-search-forward org-table-dataline-regexp)
7021 (org-table-goto-column col)
7022 (setq beg (point)))
7023 (goto-line (if n1 (nth (1- n1) hline-list) thisline))
7024 (when (re-search-backward org-table-dataline-regexp)
7025 (org-table-goto-column col)
7026 (setq end (point)))
7027 (setq l (apply 'append (org-table-copy-region beg end)))
7028 (concat "[" (mapconcat (lambda (x) (setq x (org-trim x))
7029 (if (equal x "") "0" x))
7030 l ",") "]"))
7031 ((string-match "\\([0-9]+\\)-\\([0-9]+\\)" desc)
7032 (setq n1 (string-to-number (match-string 1 desc))
7033 n2 (string-to-number (match-string 2 desc)))
7034 (beginning-of-line 1)
7035 (save-excursion
7036 (when (re-search-backward org-table-dataline-regexp tbeg t n1)
7037 (org-table-goto-column col)
7038 (setq beg (point))))
7039 (when (re-search-backward org-table-dataline-regexp tbeg t n2)
7040 (org-table-goto-column col)
7041 (setq end (point)))
7042 (setq l (apply 'append (org-table-copy-region beg end)))
7043 (concat "[" (mapconcat
7044 (lambda (x) (setq x (org-trim x))
7045 (if (equal x "") "0" x))
7046 l ",") "]"))
7047 ((string-match "\\([0-9]+\\)" desc)
7048 (beginning-of-line 1)
7049 (when (re-search-backward org-table-dataline-regexp tbeg t
7050 (string-to-number (match-string 0 desc)))
7051 (org-table-goto-column col)
7052 (org-trim (org-table-get-field))))))))
7053
6983(defvar org-table-formula-history nil) 7054(defvar org-table-formula-history nil)
6984 7055
6985(defun org-table-get-formula (&optional equation) 7056(defvar org-table-column-names nil
7057 "Alist with column names, derived from the `!' line.")
7058(defvar org-table-column-name-regexp nil
7059 "Regular expression matching the current column names.")
7060(defvar org-table-local-parameters nil
7061 "Alist with parameter names, derived from the `$' line.")
7062(defvar org-table-named-field-locations nil
7063 "Alist with locations of named fields.")
7064
7065(defun org-table-get-formula (&optional equation named)
6986 "Read a formula from the minibuffer, offer stored formula as default." 7066 "Read a formula from the minibuffer, offer stored formula as default."
6987 (let* ((col (org-table-current-column)) 7067 (let* ((name (car (rassoc (list (org-current-line)
7068 (org-table-current-column))
7069 org-table-named-field-locations)))
7070 (scol (if named
7071 (if name name
7072 (error "Not in a named field"))
7073 (int-to-string (org-table-current-column))))
7074 (dummy (and name (not named)
7075 (not (y-or-n-p "Replace named-field formula with column equation? " ))
7076 (error "Abort")))
6988 (org-table-may-need-update nil) 7077 (org-table-may-need-update nil)
6989 (stored-list (org-table-get-stored-formulas)) 7078 (stored-list (org-table-get-stored-formulas))
6990 (stored (cdr (assoc col stored-list))) 7079 (stored (cdr (assoc scol stored-list)))
6991 (eq (cond 7080 (eq (cond
6992 ((and stored equation (string-match "^ *= *$" equation)) 7081 ((and stored equation (string-match "^ *= *$" equation))
6993 stored) 7082 stored)
6994 ((stringp equation) 7083 ((stringp equation)
6995 equation) 7084 equation)
6996 (t (read-string 7085 (t (read-string
6997 "Formula: " (or stored "") 'org-table-formula-history 7086 (format "%s formula $%s=" (if named "Field" "Column") scol)
6998 stored))))) 7087 (or stored "") 'org-table-formula-history
6999 (if (not (string-match "\\S-" eq)) 7088 ;stored
7000 (error "Empty formula")) 7089 ))))
7090 mustsave)
7091 (when (not (string-match "\\S-" eq))
7092 ;; remove formula
7093 (setq stored-list (delq (assoc scol stored-list) stored-list))
7094 (org-table-store-formulas stored-list)
7095 (error "Formula removed"))
7001 (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq))) 7096 (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq)))
7002 (if (string-match " *$" eq) (setq eq (replace-match "" t t eq))) 7097 (if (string-match " *$" eq) (setq eq (replace-match "" t t eq)))
7098 (if (and name (not named))
7099 ;; We set the column equation, delete the named one.
7100 (setq stored-list (delq (assoc name stored-list) stored-list)
7101 mustsave t))
7003 (if stored 7102 (if stored
7004 (setcdr (assoc col stored-list) eq) 7103 (setcdr (assoc scol stored-list) eq)
7005 (setq stored-list (cons (cons col eq) stored-list))) 7104 (setq stored-list (cons (cons scol eq) stored-list)))
7006 (if (not (equal stored eq)) 7105 (if (or mustsave (not (equal stored eq)))
7007 (org-table-store-formulas stored-list)) 7106 (org-table-store-formulas stored-list))
7008 eq)) 7107 eq))
7009 7108
7010(defun org-table-store-formulas (alist) 7109(defun org-table-store-formulas (alist)
7011 "Store the list of formulas below the current table." 7110 "Store the list of formulas below the current table."
7012 (setq alist (sort alist (lambda (a b) (< (car a) (car b))))) 7111 (setq alist (sort alist (lambda (a b) (string< (car a) (car b)))))
7013 (save-excursion 7112 (save-excursion
7014 (goto-char (org-table-end)) 7113 (goto-char (org-table-end))
7015 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?") 7114 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?")
7016 (delete-region (point) (match-end 0))) 7115 (delete-region (point) (match-end 0)))
7017 (insert "#+TBLFM: " 7116 (insert "#+TBLFM: "
7018 (mapconcat (lambda (x) 7117 (mapconcat (lambda (x)
7019 (concat "$" (int-to-string (car x)) "=" (cdr x))) 7118 (concat "$" (car x) "=" (cdr x)))
7020 alist "::") 7119 alist "::")
7021 "\n"))) 7120 "\n")))
7022 7121
7023(defun org-table-get-stored-formulas () 7122(defun org-table-get-stored-formulas ()
7024 "Return an alist withh the t=stored formulas directly after current table." 7123 "Return an alist with the t=stored formulas directly after current table."
7025 (interactive) 7124 (interactive)
7026 (let (col eq eq-alist strings string) 7125 (let (scol eq eq-alist strings string seen)
7027 (save-excursion 7126 (save-excursion
7028 (goto-char (org-table-end)) 7127 (goto-char (org-table-end))
7029 (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)") 7128 (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)")
7030 (setq strings (org-split-string (match-string 2) " *:: *")) 7129 (setq strings (org-split-string (match-string 2) " *:: *"))
7031 (while (setq string (pop strings)) 7130 (while (setq string (pop strings))
7032 (if (string-match "\\$\\([0-9]+\\) *= *\\(.*[^ \t]\\)" string) 7131 (when (string-match "\\$\\([a-zA-Z0-9]+\\) *= *\\(.*[^ \t]\\)" string)
7033 (setq col (string-to-number (match-string 1 string)) 7132 (setq scol (match-string 1 string)
7034 eq (match-string 2 string) 7133 eq (match-string 2 string)
7035 eq-alist (cons (cons col eq) eq-alist)))))) 7134 eq-alist (cons (cons scol eq) eq-alist))
7036 eq-alist)) 7135 (if (member scol seen)
7136 (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol)
7137 (push scol seen))))))
7138 (nreverse eq-alist)))
7037 7139
7038(defun org-table-modify-formulas (action &rest columns) 7140(defun org-table-modify-formulas (action &rest columns)
7039 "Modify the formulas stored below the current table. 7141 "Modify the formulas stored below the current table.
7040ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are 7142ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
7041expected, for the other action only a single column number is needed." 7143expected, for the other action only a single column number is needed."
7042 (let ((list (org-table-get-stored-formulas)) 7144 (let ((list (org-table-get-stored-formulas))
7043 (nmax (length (org-split-string (buffer-substring (point-at-bol) (point-at-eol)) 7145 (nmax (length (org-split-string
7044 "|"))) 7146 (buffer-substring (point-at-bol) (point-at-eol))
7045 col col1 col2) 7147 "|")))
7148 col col1 col2 scol si sc1 sc2)
7046 (cond 7149 (cond
7047 ((null list)) ; No action needed if there are no stored formulas 7150 ((null list)) ; No action needed if there are no stored formulas
7048 ((eq action 'remove) 7151 ((eq action 'remove)
7049 (setq col (car columns)) 7152 (setq col (car columns)
7050 (org-table-replace-in-formulas list col "INVALID") 7153 scol (int-to-string col))
7051 (if (assoc col list) (setq list (delq (assoc col list) list))) 7154 (org-table-replace-in-formulas list scol "INVALID")
7155 (if (assoc scol list) (setq list (delq (assoc scol list) list)))
7052 (loop for i from (1+ col) upto nmax by 1 do 7156 (loop for i from (1+ col) upto nmax by 1 do
7053 (org-table-replace-in-formulas list i (1- i)) 7157 (setq si (int-to-string i))
7054 (if (assoc i list) (setcar (assoc i list) (1- i))))) 7158 (org-table-replace-in-formulas list si (int-to-string (1- i)))
7159 (if (assoc si list) (setcar (assoc si list)
7160 (int-to-string (1- i))))))
7055 ((eq action 'insert) 7161 ((eq action 'insert)
7056 (setq col (car columns)) 7162 (setq col (car columns))
7057 (loop for i from nmax downto col by 1 do 7163 (loop for i from nmax downto col by 1 do
7058 (org-table-replace-in-formulas list i (1+ i)) 7164 (setq si (int-to-string i))
7059 (if (assoc i list) (setcar (assoc i list) (1+ i))))) 7165 (org-table-replace-in-formulas list si (int-to-string (1+ i)))
7166 (if (assoc si list) (setcar (assoc si list)
7167 (int-to-string (1+ i))))))
7060 ((eq action 'swap) 7168 ((eq action 'swap)
7061 (setq col1 (car columns) col2 (nth 1 columns)) 7169 (setq col1 (car columns) col2 (nth 1 columns)
7062 (org-table-replace-in-formulas list col1 "Z") 7170 sc1 (int-to-string col1) sc2 (int-to-string col2))
7063 (org-table-replace-in-formulas list col2 col1) 7171 ;; Hopefully, ZqZ will never be a name in a table... FIXME:
7064 (org-table-replace-in-formulas list "Z" col2) 7172 (org-table-replace-in-formulas list sc1 "ZqZ")
7065 (if (assoc col1 list) (setcar (assoc col1 list) "Z")) 7173 (org-table-replace-in-formulas list sc2 sc1)
7066 (if (assoc col2 list) (setcar (assoc col2 list) col1)) 7174 (org-table-replace-in-formulas list "ZqZ" sc2)
7067 (if (assoc "Z" list) (setcar (assoc "Z" list) col2))) 7175 (if (assoc sc1 list) (setcar (assoc sc1 list) "ZqZ"))
7176 (if (assoc sc2 list) (setcar (assoc sc2 list) sc1))
7177 (if (assoc "ZqZ" list) (setcar (assoc "ZqZ" list) sc2)))
7068 (t (error "Invalid action in `org-table-modify-formulas'"))) 7178 (t (error "Invalid action in `org-table-modify-formulas'")))
7069 (if list (org-table-store-formulas list)))) 7179 (if list (org-table-store-formulas list))))
7070 7180
@@ -7079,20 +7189,14 @@ expected, for the other action only a single column number is needed."
7079 (setq s (replace-match s2 t t s))) 7189 (setq s (replace-match s2 t t s)))
7080 (setcdr elt s)))) 7190 (setcdr elt s))))
7081 7191
7082(defvar org-table-column-names nil
7083 "Alist with column names, derived from the `!' line.")
7084(defvar org-table-column-name-regexp nil
7085 "Regular expression matching the current column names.")
7086(defvar org-table-local-parameters nil
7087 "Alist with parameter names, derived from the `$' line.")
7088
7089(defun org-table-get-specials () 7192(defun org-table-get-specials ()
7090 "Get the column nmaes and local parameters for this table." 7193 "Get the column nmaes and local parameters for this table."
7091 (save-excursion 7194 (save-excursion
7092 (let ((beg (org-table-begin)) (end (org-table-end)) 7195 (let ((beg (org-table-begin)) (end (org-table-end))
7093 names name fields fields1 field cnt c v) 7196 names name fields fields1 field cnt c v line col)
7094 (setq org-table-column-names nil 7197 (setq org-table-column-names nil
7095 org-table-local-parameters nil) 7198 org-table-local-parameters nil
7199 org-table-named-field-locations nil)
7096 (goto-char beg) 7200 (goto-char beg)
7097 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t) 7201 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
7098 (setq names (org-split-string (match-string 1) " *| *") 7202 (setq names (org-split-string (match-string 1) " *| *")
@@ -7117,13 +7221,15 @@ expected, for the other action only a single column number is needed."
7117 fields (org-split-string (match-string 2) " *| *")) 7221 fields (org-split-string (match-string 2) " *| *"))
7118 (save-excursion 7222 (save-excursion
7119 (beginning-of-line (if (equal c "_") 2 0)) 7223 (beginning-of-line (if (equal c "_") 2 0))
7224 (setq line (org-current-line) col 1)
7120 (and (looking-at "^[ \t]*|[^|]*\\(|.*\\)") 7225 (and (looking-at "^[ \t]*|[^|]*\\(|.*\\)")
7121 (setq fields1 (org-split-string (match-string 1) " *| *")))) 7226 (setq fields1 (org-split-string (match-string 1) " *| *"))))
7122 (while (setq field (pop fields)) 7227 (while (and fields1 (setq field (pop fields)))
7123 (setq v (pop fields1)) 7228 (setq v (pop fields1) col (1+ col))
7124 (if (and (stringp field) (stringp v) 7229 (when (and (stringp field) (stringp v)
7125 (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field)) 7230 (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field))
7126 (push (cons field v) org-table-local-parameters))))))) 7231 (push (cons field v) org-table-local-parameters)
7232 (push (list field line col) org-table-named-field-locations)))))))
7127 7233
7128(defun org-this-word () 7234(defun org-this-word ()
7129 ;; Get the current word 7235 ;; Get the current word
@@ -7133,46 +7239,18 @@ expected, for the other action only a single column number is needed."
7133 (buffer-substring-no-properties beg end)))) 7239 (buffer-substring-no-properties beg end))))
7134 7240
7135(defun org-table-maybe-eval-formula () 7241(defun org-table-maybe-eval-formula ()
7136 "Check if the current field starts with \"=\" and evaluate the formula." 7242 "Check if the current field starts with \"=\" or \":=\".
7243If yes, store the formula and apply it."
7137 ;; We already know we are in a table. Get field will only return a formula 7244 ;; We already know we are in a table. Get field will only return a formula
7138 ;; when appropriate. It might return a separator line, but no problem. 7245 ;; when appropriate. It might return a separator line, but no problem.
7139 (when org-table-formula-evaluate-inline 7246 (when org-table-formula-evaluate-inline
7140 (let* ((field (org-trim (or (org-table-get-field) ""))) 7247 (let* ((field (org-trim (or (org-table-get-field) "")))
7141 (dfield (downcase field)) 7248 named eq)
7142 col bolpos nlast) 7249 (when (string-match "^:?=\\(.+\\)" field)
7143 (when (equal (string-to-char field) ?=) 7250 (setq named (equal (string-to-char field) ?:)
7144 (if (string-match "^\\(=sum[vh]?\\)\\([0-9]+\\)$" dfield) 7251 eq (match-string 1 field))
7145 (setq nlast (1+ (string-to-number (match-string 2 dfield))) 7252 (if (fboundp 'calc-eval)
7146 dfield (match-string 1 dfield))) 7253 (org-table-eval-formula (if named '(4) nil) eq))))))
7147 (cond
7148 ((equal dfield "=sumh")
7149 (org-table-get-field
7150 nil (org-table-sum
7151 (save-excursion (org-table-goto-column 1) (point))
7152 (point) nlast)))
7153 ((member dfield '("=sum" "=sumv"))
7154 (setq col (org-table-current-column)
7155 bolpos (point-at-bol))
7156 (org-table-get-field
7157 nil (org-table-sum
7158 (save-excursion
7159 (goto-char (org-table-begin))
7160 (if (re-search-forward org-table-dataline-regexp bolpos t)
7161 (progn
7162 (goto-char (match-beginning 0))
7163 (org-table-goto-column col)
7164 (point))
7165 (error "No datalines above current")))
7166 (point) nlast)))
7167 ((and (string-match "^ *=" field)
7168 (fboundp 'calc-eval))
7169 (org-table-eval-formula nil field)))))))
7170
7171(defvar org-last-recalc-undo-list nil)
7172(defcustom org-table-allow-line-recalculation t
7173 "FIXME:"
7174 :group 'org-table
7175 :type 'boolean)
7176 7254
7177(defvar org-recalc-commands nil 7255(defvar org-recalc-commands nil
7178 "List of commands triggering the reccalculation of a line. 7256 "List of commands triggering the reccalculation of a line.
@@ -7210,8 +7288,10 @@ of the new mark."
7210 (col (org-table-current-column)) 7288 (col (org-table-current-column))
7211 (forcenew (car (assoc newchar org-recalc-marks))) 7289 (forcenew (car (assoc newchar org-recalc-marks)))
7212 epos new) 7290 epos new)
7213 (if l1 (setq newchar (char-to-string (read-char-exclusive "Change region to what mark? Type # * ! $ or SPC: ")) 7291 (when l1
7214 forcenew (car (assoc newchar org-recalc-marks)))) 7292 (message "Change region to what mark? Type # * ! $ or SPC: ")
7293 (setq newchar (char-to-string (read-char-exclusive))
7294 forcenew (car (assoc newchar org-recalc-marks))))
7215 (if (and newchar (not forcenew)) 7295 (if (and newchar (not forcenew))
7216 (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'" 7296 (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'"
7217 newchar)) 7297 newchar))
@@ -7248,7 +7328,7 @@ of the new mark."
7248(defun org-table-maybe-recalculate-line () 7328(defun org-table-maybe-recalculate-line ()
7249 "Recompute the current line if marked for it, and if we haven't just done it." 7329 "Recompute the current line if marked for it, and if we haven't just done it."
7250 (interactive) 7330 (interactive)
7251 (and org-table-allow-line-recalculation 7331 (and org-table-allow-automatic-line-recalculation
7252 (not (and (memq last-command org-recalc-commands) 7332 (not (and (memq last-command org-recalc-commands)
7253 (equal org-last-recalc-line (org-current-line)))) 7333 (equal org-last-recalc-line (org-current-line))))
7254 (save-excursion (beginning-of-line 1) 7334 (save-excursion (beginning-of-line 1)
@@ -7273,7 +7353,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
7273 (cons var (cons value modes))) 7353 (cons var (cons value modes)))
7274 modes) 7354 modes)
7275 7355
7276(defun org-table-eval-formula (&optional ndown equation 7356(defun org-table-eval-formula (&optional arg equation
7277 suppress-align suppress-const 7357 suppress-align suppress-const
7278 suppress-store) 7358 suppress-store)
7279 "Replace the table field value at the cursor by the result of a calculation. 7359 "Replace the table field value at the cursor by the result of a calculation.
@@ -7283,64 +7363,46 @@ most exciting program ever written for GNU Emacs. So you need to have calc
7283installed in order to use this function. 7363installed in order to use this function.
7284 7364
7285In a table, this command replaces the value in the current field with the 7365In a table, this command replaces the value in the current field with the
7286result of a formula. While nowhere near the computation options of a 7366result of a formula. It also installes the formula as the \"current\" column
7287spreadsheet program, this is still very useful. There is no automatic 7367formula, by storing it in a special line below the table. When called
7288updating of a calculated field, but the table will remember the last 7368with a `C-u' prefix, the current field must ba a named field, and the
7289formula for each column. The command needs to be applied again after 7369formula is installed as valid in only this specific field.
7290changing input fields. 7370
7291 7371When called, the command first prompts for a formula, which is read in
7292When called, the command first prompts for a formula, which is read in the 7372the minibuffer. Previously entered formulas are available through the
7293minibuffer. Previously entered formulas are available through the history 7373history list, and the last used formula is offered as a default.
7294list, and the last used formula for each column is offered as a default.
7295These stored formulas are adapted correctly when moving, inserting, or 7374These stored formulas are adapted correctly when moving, inserting, or
7296deleting columns with the corresponding commands. 7375deleting columns with the corresponding commands.
7297 7376
7298The formula can be any algebraic expression understood by the calc package. 7377The formula can be any algebraic expression understood by the calc package.
7299Before evaluation, variable substitution takes place: \"$\" is replaced by 7378For details, see the Org-mode manual.
7300the field the cursor is currently in, and $1..$n reference the fields in 7379
7301the current row. Values from a *different* row can *not* be referenced 7380This function can also be called from Lisp programs and offers
7302here, so the command supports only horizontal computing. The formula can 7381additional Arguments: EQUATION can be the formula to apply. If this
7303contain an optional printf format specifier after a semicolon, to reformat 7382argument is given, the user will not be prompted. SUPPRESS-ALIGN is
7304the result. 7383used to speed-up recursive calls by by-passing unnecessary aligns.
7305 7384SUPPRESS-CONST suppresses the interpretation of constants in the
7306A few examples for formulas: 7385formula, assuming that this has been done already outside the fuction.
7307 $1+$2 Sum of first and second field 7386SUPPRESS-STORE means the formula should not be stored, either because
7308 $1+$2;%.2f Same, and format result to two digits after dec.point 7387it is already stored, or because it is a modified equation that should
7309 exp($2)+exp($1) Math functions can be used 7388not overwrite the stored one."
7310 $;%.1f Reformat current cell to 1 digit after dec.point
7311 ($3-32)*5/9 degrees F -> C conversion
7312
7313When called with a raw \\[universal-argument] prefix, the formula is applied to the current
7314field, and to the same same column in all following rows, until reaching a
7315horizontal line or the end of the table. When the command is called with a
7316numeric prefix argument (like M-3 or C-7 or \\[universal-argument] 24), the formula is applied
7317to the current row, and to the following n-1 rows (but not beyond a
7318separator line).
7319
7320This function can also be called from Lisp programs and offers two additional
7321Arguments: EQUATION can be the formula to apply. If this argument is given,
7322the user will not be prompted. SUPPRESS-ALIGN is used to speed-up
7323recursive calls by by-passing unnecessary aligns. SUPPRESS-CONST suppresses
7324the interpretation of constants in the formula. SUPPRESS-STORE means the
7325formula should not be stored, either because it is already stored, or because
7326it is a modified equation that should not overwrite the stored one."
7327 (interactive "P") 7389 (interactive "P")
7328 (setq ndown (if (equal ndown '(4)) 10000 (prefix-numeric-value ndown)))
7329 (require 'calc) 7390 (require 'calc)
7330 (org-table-check-inside-data-field) 7391 (org-table-check-inside-data-field)
7331 (org-table-get-specials) 7392 (org-table-get-specials)
7332 (let* (fields 7393 (let* (fields
7394 (ndown (if (integerp arg) arg 1))
7333 (org-table-automatic-realign nil) 7395 (org-table-automatic-realign nil)
7334 (case-fold-search nil) 7396 (case-fold-search nil)
7335 (down (> ndown 1)) 7397 (down (> ndown 1))
7336 (formula (if (and equation suppress-store) 7398 (formula (if (and equation suppress-store)
7337 equation 7399 equation
7338 (org-table-get-formula equation))) 7400 (org-table-get-formula equation (equal arg '(4)))))
7339 (n0 (org-table-current-column)) 7401 (n0 (org-table-current-column))
7340 (modes (copy-sequence org-calc-default-modes)) 7402 (modes (copy-sequence org-calc-default-modes))
7341 n form fmt x ev orig c) 7403 n form fmt x ev orig c)
7342 ;; Parse the format string. Since we have a lot of modes, this is 7404 ;; Parse the format string. Since we have a lot of modes, this is
7343 ;; a lot of work. 7405 ;; a lot of work. However, I think calc still uses most of the time.
7344 (if (string-match ";" formula) 7406 (if (string-match ";" formula)
7345 (let ((tmp (org-split-string formula ";"))) 7407 (let ((tmp (org-split-string formula ";")))
7346 (setq formula (car tmp) 7408 (setq formula (car tmp)
@@ -7374,6 +7436,7 @@ it is a modified equation that should not overwrite the stored one."
7374 fields))) 7436 fields)))
7375 (setq ndown (1- ndown)) 7437 (setq ndown (1- ndown))
7376 (setq form (copy-sequence formula)) 7438 (setq form (copy-sequence formula))
7439 ;; Insert the references to fields in same row
7377 (while (string-match "\\$\\([0-9]+\\)?" form) 7440 (while (string-match "\\$\\([0-9]+\\)?" form)
7378 (setq n (if (match-beginning 1) 7441 (setq n (if (match-beginning 1)
7379 (string-to-int (match-string 1 form)) 7442 (string-to-int (match-string 1 form))
@@ -7383,6 +7446,13 @@ it is a modified equation that should not overwrite the stored one."
7383 (match-string 0 form))) 7446 (match-string 0 form)))
7384 (if (equal x "") (setq x "0")) 7447 (if (equal x "") (setq x "0"))
7385 (setq form (replace-match (concat "(" x ")") t t form))) 7448 (setq form (replace-match (concat "(" x ")") t t form)))
7449 ;; Insert ranges in current column
7450 (while (string-match "\\&[-I0-9]+" form)
7451 (setq form (replace-match
7452 (save-match-data
7453 (org-table-get-vertical-vector (match-string 0 form)
7454 nil n0))
7455 t t form)))
7386 (setq ev (calc-eval (cons form modes) 7456 (setq ev (calc-eval (cons form modes)
7387 (if org-table-formula-numbers-only 'num))) 7457 (if org-table-formula-numbers-only 'num)))
7388 7458
@@ -7424,24 +7494,32 @@ $1-> %s\n" orig formula form))
7424 (unless (org-at-table-p) (error "Not at a table")) 7494 (unless (org-at-table-p) (error "Not at a table"))
7425 (org-table-get-specials) 7495 (org-table-get-specials)
7426 (let* ((eqlist (sort (org-table-get-stored-formulas) 7496 (let* ((eqlist (sort (org-table-get-stored-formulas)
7427 (lambda (a b) (< (car a) (car b))))) 7497 (lambda (a b) (string< (car a) (car b)))))
7428 (inhibit-redisplay t) 7498 (inhibit-redisplay t)
7429 (line-re org-table-dataline-regexp) 7499 (line-re org-table-dataline-regexp)
7430 (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) 7500 (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point))))
7431 (thiscol (org-table-current-column)) 7501 (thiscol (org-table-current-column))
7432 beg end entry eql (cnt 0)) 7502 beg end entry eqlnum eqlname eql (cnt 0) eq a name)
7433 ;; Insert constants in all formulas 7503 ;; Insert constants in all formulas
7434 (setq eqlist 7504 (setq eqlist
7435 (mapcar (lambda (x) 7505 (mapcar (lambda (x)
7436 (setcdr x (org-table-formula-substitute-names (cdr x))) 7506 (setcdr x (org-table-formula-substitute-names (cdr x)))
7437 x) 7507 x)
7438 eqlist)) 7508 eqlist))
7509 ;; Split the equation list
7510 (while (setq eq (pop eqlist))
7511 (if (<= (string-to-char (car eq)) ?9)
7512 (push eq eqlnum)
7513 (push eq eqlname)))
7514 (setq eqlnum (nreverse eqlnum) eqlname (nreverse eqlname))
7439 (if all 7515 (if all
7440 (progn 7516 (progn
7441 (setq end (move-marker (make-marker) (1+ (org-table-end)))) 7517 (setq end (move-marker (make-marker) (1+ (org-table-end))))
7442 (goto-char (setq beg (org-table-begin))) 7518 (goto-char (setq beg (org-table-begin)))
7443 (if (re-search-forward org-table-recalculate-regexp end t) 7519 (if (re-search-forward org-table-calculate-mark-regexp end t)
7520 ;; This is a table with marked lines, only compute selected lines
7444 (setq line-re org-table-recalculate-regexp) 7521 (setq line-re org-table-recalculate-regexp)
7522 ;; Move forward to the first non-header line
7445 (if (and (re-search-forward org-table-dataline-regexp end t) 7523 (if (and (re-search-forward org-table-dataline-regexp end t)
7446 (re-search-forward org-table-hline-regexp end t) 7524 (re-search-forward org-table-hline-regexp end t)
7447 (re-search-forward org-table-dataline-regexp end t)) 7525 (re-search-forward org-table-dataline-regexp end t))
@@ -7452,23 +7530,37 @@ $1-> %s\n" orig formula form))
7452 (goto-char beg) 7530 (goto-char beg)
7453 (and all (message "Re-applying formulas to full table...")) 7531 (and all (message "Re-applying formulas to full table..."))
7454 (while (re-search-forward line-re end t) 7532 (while (re-search-forward line-re end t)
7455 (unless (string-match "^ *[!$] *$" (org-table-get-field 1)) 7533 (unless (string-match "^ *[_^!$] *$" (org-table-get-field 1))
7456 ;; Unprotected line, recalculate 7534 ;; Unprotected line, recalculate
7457 (and all (message "Re-applying formulas to full table...(line %d)" 7535 (and all (message "Re-applying formulas to full table...(line %d)"
7458 (setq cnt (1+ cnt)))) 7536 (setq cnt (1+ cnt))))
7459 (setq org-last-recalc-line (org-current-line)) 7537 (setq org-last-recalc-line (org-current-line))
7460 (setq eql eqlist) 7538 (setq eql eqlnum)
7461 (while (setq entry (pop eql)) 7539 (while (setq entry (pop eql))
7462 (goto-line org-last-recalc-line) 7540 (goto-line org-last-recalc-line)
7463 (org-table-goto-column (car entry) nil 'force) 7541 (org-table-goto-column (string-to-int (car entry)) nil 'force)
7464 (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore)))) 7542 (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
7465 (goto-line thisline) 7543 (goto-line thisline)
7466 (org-table-goto-column thiscol) 7544 (org-table-goto-column thiscol)
7467 (or noalign (and org-table-may-need-update (org-table-align)) 7545 (or noalign (and org-table-may-need-update (org-table-align))
7468 (and all (message "Re-applying formulas to %d lines...done" cnt))))) 7546 (and all (message "Re-applying formulas to %d lines...done" cnt)))
7547 ;; Now do the names fields
7548 (while (setq eq (pop eqlname))
7549 (setq name (car eq)
7550 a (assoc name org-table-named-field-locations))
7551 (when a
7552 (message "Re-applying formula to named field: %s" name)
7553 (goto-line (nth 1 a))
7554 (org-table-goto-column (nth 2 a))
7555 (org-table-eval-formula nil (cdr eq) 'noalign 'nocst 'nostore)))
7556 ;; back to initial position
7557 (goto-line thisline)
7558 (org-table-goto-column thiscol)
7559 (or noalign (and org-table-may-need-update (org-table-align))
7560 (and all (message "Re-applying formulas...done")))))
7469 7561
7470(defun org-table-formula-substitute-names (f) 7562(defun org-table-formula-substitute-names (f)
7471 "Replace $const with values in stirng F." 7563 "Replace $const with values in string F."
7472 (let ((start 0) a n1 n2 nn1 nn2 s (f1 f)) 7564 (let ((start 0) a n1 n2 nn1 nn2 s (f1 f))
7473 ;; First, check for column names 7565 ;; First, check for column names
7474 (while (setq start (string-match org-table-column-name-regexp f start)) 7566 (while (setq start (string-match org-table-column-name-regexp f start))
@@ -7505,6 +7597,136 @@ Parameters get priority."
7505 (and (fboundp 'constants-get) (constants-get const)) 7597 (and (fboundp 'constants-get) (constants-get const))
7506 "#UNDEFINED_NAME")) 7598 "#UNDEFINED_NAME"))
7507 7599
7600(defvar org-edit-formulas-map (make-sparse-keymap))
7601(define-key org-edit-formulas-map "\C-c\C-c" 'org-finish-edit-formulas)
7602(define-key org-edit-formulas-map "\C-c\C-q" 'org-abort-edit-formulas)
7603(define-key org-edit-formulas-map "\C-c?" 'org-show-variable)
7604
7605(defvar org-pos)
7606(defvar org-window-configuration)
7607
7608(defun org-table-edit-formulas ()
7609 "Edit the formulas of the current table in a separate buffer."
7610 (interactive)
7611 (unless (org-at-table-p)
7612 (error "Not at a table"))
7613 (org-table-get-specials)
7614 (let ((eql (org-table-get-stored-formulas))
7615 (pos (move-marker (make-marker) (point)))
7616 (wc (current-window-configuration))
7617 entry loc s)
7618 (switch-to-buffer-other-window "*Edit Formulas*")
7619 (erase-buffer)
7620 (fundamental-mode)
7621 (set (make-local-variable 'org-pos) pos)
7622 (set (make-local-variable 'org-window-configuration) wc)
7623 (use-local-map org-edit-formulas-map)
7624 (setq s "# Edit formulas and finish with `C-c C-c'.
7625# Use `C-u C-c C-c' to also appy them immediately to the entire table.
7626# Use `C-c ?' to get information about $name at point.
7627# To cancel editing, press `C-c C-q'.\n")
7628 (put-text-property 0 (length s) 'face 'font-lock-comment-face s)
7629 (insert s)
7630 (while (setq entry (pop eql))
7631 (when (setq loc (assoc (car entry) org-table-named-field-locations))
7632 (setq s (format "# Named formula, referring to column %d in line %d\n"
7633 (nth 2 loc) (nth 1 loc)))
7634 (put-text-property 0 (length s) 'face 'font-lock-comment-face s)
7635 (insert s))
7636 (setq s (concat "$" (car entry) "=" (cdr entry) "\n"))
7637 (remove-text-properties 0 (length s) '(face nil) s)
7638 (insert s))
7639 (goto-char (point-min))
7640 (message "Edit formulas and finish with `C-c C-c'.")))
7641
7642(defun org-show-variable ()
7643 "Show the location/value of the $ expression at point."
7644 (interactive)
7645 (let (var (pos org-pos) (win (selected-window)) e)
7646 (save-excursion
7647 (or (looking-at "\\$") (skip-chars-backward "$a-zA-Z0-9"))
7648 (if (looking-at "\\$\\([a-zA-Z0-9]+\\)")
7649 (setq var (match-string 1))
7650 (error "No variable at point")))
7651 (cond
7652 ((setq e (assoc var org-table-named-field-locations))
7653 (switch-to-buffer-other-window (marker-buffer pos))
7654 (goto-line (nth 1 e))
7655 (org-table-goto-column (nth 2 e))
7656 (select-window win)
7657 (message "Named field, column %d of line %d" (nth 2 e) (nth 1 e)))
7658 ((setq e (assoc var org-table-column-names))
7659 (switch-to-buffer-other-window (marker-buffer pos))
7660 (goto-char pos)
7661 (goto-char (org-table-begin))
7662 (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|")
7663 (org-table-end) t)
7664 (progn
7665 (goto-char (match-beginning 1))
7666 (message "Named column (column %s)" (cdr e)))
7667 (error "Column name not found"))
7668 (select-window win))
7669 ((string-match "^[0-9]$" var)
7670 ;; column number
7671 (switch-to-buffer-other-window (marker-buffer pos))
7672 (goto-char pos)
7673 (goto-char (org-table-begin))
7674 (recenter 1)
7675 (if (re-search-forward org-table-dataline-regexp
7676 (org-table-end) t)
7677 (progn
7678 (goto-char (match-beginning 0))
7679 (org-table-goto-column (string-to-number var))
7680 (message "Column %s" var))
7681 (error "Column name not found"))
7682 (select-window win))
7683 ((setq e (assoc var org-table-local-parameters))
7684 (switch-to-buffer-other-window (marker-buffer pos))
7685 (goto-char pos)
7686 (goto-char (org-table-begin))
7687 (if (re-search-forward (concat "^[ \t]*| *\\$ *.*?| *\\(" var "=\\)") nil t)
7688 (progn
7689 (goto-char (match-beginning 1))
7690 (message "Local parameter."))
7691 (error "Parameter not found"))
7692 (select-window win))
7693 (t
7694 (cond
7695 ((setq e (assoc var org-table-formula-constants))
7696 (message "Constant: $%s=%s in `org-table-formula-constants'." var (cdr e)))
7697 ((setq e (and (fboundp 'constants-get) (constants-get var)))
7698 (message "Constant: $%s=%s, retrieved from `constants.el'." var e))
7699 (t (error "Undefined name $%s" var)))))))
7700
7701(defun org-finish-edit-formulas (&optional arg)
7702 "Parse the buffer for formula definitions and install them.
7703With prefix ARG, apply the new formulas to the table."
7704 (interactive "P")
7705 (let ((pos org-pos) eql)
7706 (goto-char (point-min))
7707 (while (re-search-forward "^\\$\\([a-zA-Z0-9]+\\) *= *\\(.*?\\) *$" nil t)
7708 (push (cons (match-string 1) (match-string 2)) eql))
7709 (set-window-configuration org-window-configuration)
7710 (select-window (get-buffer-window (marker-buffer pos)))
7711 (goto-char pos)
7712 (unless (org-at-table-p)
7713 (error "Lost table position - cannot install formulae"))
7714 (org-table-store-formulas eql)
7715 (move-marker pos nil)
7716 (kill-buffer "*Edit Formulas*")
7717 (if arg
7718 (org-table-recalculate 'all)
7719 (message "New formulas installed - press C-u C-c C-c to apply."))))
7720
7721(defun org-abort-edit-formulas ()
7722 "Abort editing formulas, without installing the changes."
7723 (interactive)
7724 (let ((pos org-pos))
7725 (set-window-configuration org-window-configuration)
7726 (select-window (get-buffer-window (marker-buffer pos)))
7727 (goto-char pos)
7728 (message "Formula editing aborted without installing changes")))
7729
7508;;; The orgtbl minor mode 7730;;; The orgtbl minor mode
7509 7731
7510;; Define a minor mode which can be used in other modes in order to 7732;; Define a minor mode which can be used in other modes in order to
@@ -7657,6 +7879,7 @@ to execute outside of tables."
7657 '("\C-c+" org-table-sum) 7879 '("\C-c+" org-table-sum)
7658 '("\C-c|" org-table-toggle-vline-visibility) 7880 '("\C-c|" org-table-toggle-vline-visibility)
7659 '("\C-c=" org-table-eval-formula) 7881 '("\C-c=" org-table-eval-formula)
7882 '("\C-c'" org-table-edit-formulas)
7660 '("\C-c*" org-table-recalculate) 7883 '("\C-c*" org-table-recalculate)
7661 '([(control ?#)] org-table-rotate-recalc-marks))) 7884 '([(control ?#)] org-table-rotate-recalc-marks)))
7662 elt key fun cmd) 7885 elt key fun cmd)
@@ -7714,8 +7937,9 @@ to execute outside of tables."
7714 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"] 7937 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"]
7715 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"]) 7938 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"])
7716 "--" 7939 "--"
7717 ["Eval Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="] 7940 ["Set Column Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="]
7718 ["Eval Formula Down " (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] 7941 ["Set Named Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
7942 ["Edit Formulas" org-table-edit-formulas :active (org-at-table-p) :keys "C-c '"]
7719 ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"] 7943 ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"]
7720 ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"] 7944 ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"]
7721 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"] 7945 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"]
@@ -8685,6 +8909,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
8685 (t 8909 (t
8686 ;; Normal lines 8910 ;; Normal lines
8687 ;; Lines starting with "-", and empty lines make new paragraph. 8911 ;; Lines starting with "-", and empty lines make new paragraph.
8912 ;; FIXME: Should we add + and *?
8688 (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>")) 8913 (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>"))
8689 (insert line (if org-export-preserve-breaks "<br>\n" "\n")))) 8914 (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
8690 )) 8915 ))
@@ -9101,6 +9326,7 @@ When LEVEL is non-nil, increase section numbers on that level."
9101(define-key org-mode-map "\C-c+" 'org-table-sum) 9326(define-key org-mode-map "\C-c+" 'org-table-sum)
9102(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility) 9327(define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility)
9103(define-key org-mode-map "\C-c=" 'org-table-eval-formula) 9328(define-key org-mode-map "\C-c=" 'org-table-eval-formula)
9329(define-key org-mode-map "\C-c'" 'org-table-edit-formulas)
9104(define-key org-mode-map "\C-c*" 'org-table-recalculate) 9330(define-key org-mode-map "\C-c*" 'org-table-recalculate)
9105(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks) 9331(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
9106(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el) 9332(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el)
@@ -9385,11 +9611,14 @@ scanning the buffer for these lines and updating the information."
9385 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)]) 9611 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
9386 "--" 9612 "--"
9387 ("Calculate" 9613 ("Calculate"
9388 ["Eval Formula" org-table-eval-formula (org-at-table-p)] 9614 ["Set Column Formula" org-table-eval-formula (org-at-table-p)]
9389 ["Eval Formula Down" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] 9615 ["Set Named Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
9616 ["Edit Formulas" org-table-edit-formulas (org-at-table-p)]
9617 "--"
9390 ["Recalculate line" org-table-recalculate (org-at-table-p)] 9618 ["Recalculate line" org-table-recalculate (org-at-table-p)]
9391 ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"] 9619 ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
9392 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)] 9620 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
9621 "--"
9393 ["Sum Column/Rectangle" org-table-sum 9622 ["Sum Column/Rectangle" org-table-sum
9394 (or (org-at-table-p) (org-region-active-p))] 9623 (or (org-at-table-p) (org-region-active-p))]
9395 ["Which Column?" org-table-current-column (org-at-table-p)]) 9624 ["Which Column?" org-table-current-column (org-at-table-p)])
diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el
index fd788a772e4..3ae39213dff 100644
--- a/lisp/textmodes/picture.el
+++ b/lisp/textmodes/picture.el
@@ -710,7 +710,7 @@ You can manipulate rectangles with these commands:
710 C-c C-r Draw a rectangular box around mark and point. 710 C-c C-r Draw a rectangular box around mark and point.
711 \\[copy-rectangle-to-register] Copies a rectangle to a register. 711 \\[copy-rectangle-to-register] Copies a rectangle to a register.
712 \\[advertised-undo] Can undo effects of rectangle overlay commands 712 \\[advertised-undo] Can undo effects of rectangle overlay commands
713 commands if invoked soon enough. 713 if invoked soon enough.
714You can return to the previous mode with: 714You can return to the previous mode with:
715 C-c C-c Which also strips trailing whitespace from every line. 715 C-c C-c Which also strips trailing whitespace from every line.
716 Stripping is suppressed by supplying an argument. 716 Stripping is suppressed by supplying an argument.
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 0313379814f..2609ff4ee13 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,11 @@
12005-07-15 Richard M. Stallman <rms@gnu.org>
2
3 * url-http.el (url-http-parse-headers): Add :redirect arg-pair
4 when calling url-retrieve, to indicate a redirect.
5
6 * url.el (url-retrieve): The callback function can get an additional
7 keyword arg pair.
8
12005-07-04 Lute Kamstra <lute@gnu.org> 92005-07-04 Lute Kamstra <lute@gnu.org>
2 10
3 Update FSF's address in GPL notices. 11 Update FSF's address in GPL notices.
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 92cbf41e76b..b8bf920e2e5 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -501,8 +501,9 @@ should be shown to the user."
501 (url-request-data url-http-data) 501 (url-request-data url-http-data)
502 (url-request-extra-headers url-http-extra-headers)) 502 (url-request-extra-headers url-http-extra-headers))
503 (url-retrieve redirect-uri url-callback-function 503 (url-retrieve redirect-uri url-callback-function
504 (cons redirect-uri 504 (cons :redirect
505 (cdr url-callback-arguments))) 505 (cons redirect-uri
506 url-callback-arguments)))
506 (url-mark-buffer-as-dead (current-buffer)))))) 507 (url-mark-buffer-as-dead (current-buffer))))))
507 (4 ; Client error 508 (4 ; Client error
508 ;; 400 Bad Request 509 ;; 400 Bad Request
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 695aceb871e..21859ad9566 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -123,9 +123,14 @@ Emacs."
123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
124(defun url-retrieve (url callback &optional cbargs) 124(defun url-retrieve (url callback &optional cbargs)
125 "Retrieve URL asynchronously and call CALLBACK with CBARGS when finished. 125 "Retrieve URL asynchronously and call CALLBACK with CBARGS when finished.
126The callback is called when the object has been completely retrieved, with 126URL is either a string or a parsed URL.
127
128CALLBACK is called when the object has been completely retrieved, with
127the current buffer containing the object, and any MIME headers associated 129the current buffer containing the object, and any MIME headers associated
128with it. URL is either a string or a parsed URL. 130with it. Normally it gets the arguments in the list CBARGS.
131However, if what we find is a redirect, CALLBACK is given
132two additional args, `:redirect' and the redirected URL,
133followed by CBARGS.
129 134
130Return the buffer URL will load into, or nil if the process has 135Return the buffer URL will load into, or nil if the process has
131already completed." 136already completed."
diff --git a/lisp/vcursor.el b/lisp/vcursor.el
index fd7d1416661..89f30cf7232 100644
--- a/lisp/vcursor.el
+++ b/lisp/vcursor.el
@@ -356,7 +356,7 @@ disable the vcursor."
356 356
357(defun vcursor-bind-keys (var value) 357(defun vcursor-bind-keys (var value)
358 "Alter the value of the variable VAR to VALUE, binding keys as required. 358 "Alter the value of the variable VAR to VALUE, binding keys as required.
359VAR is usually vcursor-key-bindings. Normally this function is called 359VAR is usually `vcursor-key-bindings'. Normally this function is called
360on loading vcursor and from the customize package." 360on loading vcursor and from the customize package."
361 (set var value) 361 (set var value)
362 (cond 362 (cond
@@ -464,8 +464,8 @@ on loading vcursor and from the customize package."
464 464
465(defcustom vcursor-key-bindings nil 465(defcustom vcursor-key-bindings nil
466 "*How to bind keys when vcursor is loaded. 466 "*How to bind keys when vcursor is loaded.
467If t, guess; if xterm, use bindings suitable for an X terminal; if 467If t, guess; if `xterm', use bindings suitable for an X terminal; if
468oemacs, use bindings which work on a PC with Oemacs. If nil, don't 468`oemacs', use bindings which work on a PC with Oemacs. If nil, don't
469define any key bindings. 469define any key bindings.
470 470
471Default is nil." 471Default is nil."
@@ -514,7 +514,7 @@ scrolling set this. It is used by the `vcursor-auto-disable' code.")
514 514
515(defvar vcursor-use-vcursor-map nil 515(defvar vcursor-use-vcursor-map nil
516 "Non-nil if the vcursor map is mapped directly onto the main keymap. 516 "Non-nil if the vcursor map is mapped directly onto the main keymap.
517See vcursor-toggle-vcursor-map.") 517See `vcursor-toggle-vcursor-map'.")
518(make-variable-buffer-local 'vcursor-use-vcursor-map) 518(make-variable-buffer-local 'vcursor-use-vcursor-map)
519 519
520(defvar vcursor-map nil "Keymap for vcursor command.") 520(defvar vcursor-map nil "Keymap for vcursor command.")
@@ -575,7 +575,7 @@ With optional NOT-THIS non-nil never return the current window.
575 575
576With NEW-WIN non-nil, display the virtual cursor buffer in another 576With NEW-WIN non-nil, display the virtual cursor buffer in another
577window if the virtual cursor is not currently visible \(note, however, 577window if the virtual cursor is not currently visible \(note, however,
578that this function never changes window-point\). 578that this function never changes `window-point'\).
579 579
580With THIS-FRAME non-nil, don't search other frames for a new window 580With THIS-FRAME non-nil, don't search other frames for a new window
581\(though if the vcursor is already off-frame then its current window is 581\(though if the vcursor is already off-frame then its current window is
@@ -674,15 +674,15 @@ another window. With LEAVE-W, use the current `vcursor-window'."
674 (insert text)) 674 (insert text))
675 ) 675 )
676 676
677(defun vcursor-relative-move (fn &rest args) 677(defun vcursor-relative-move (func &rest args)
678 "Use FUNCTION with arbitrary ARG1 ... to move the virtual cursor. 678 "Call FUNC with arbitrary ARGS ... to move the virtual cursor.
679 679
680This is called by most of the virtual-cursor motion commands." 680This is called by most of the virtual-cursor motion commands."
681 (let (text opoint) 681 (let (text opoint)
682 (save-excursion 682 (save-excursion
683 (vcursor-locate) 683 (vcursor-locate)
684 (setq opoint (point)) 684 (setq opoint (point))
685 (apply fn args) 685 (apply func args)
686 (and (eq opoint (point-max)) (eq opoint (point)) 686 (and (eq opoint (point-max)) (eq opoint (point))
687 (signal 'end-of-buffer nil)) 687 (signal 'end-of-buffer nil))
688 (vcursor-move (point)) 688 (vcursor-move (point))
@@ -730,7 +730,7 @@ The vcursor will always appear in an unselected window."
730) 730)
731 731
732(defun vcursor-scroll-down (&optional n) 732(defun vcursor-scroll-down (&optional n)
733 "Scroll down the vcursor window ARG lines or near-full screen if none. 733 "Scroll down the vcursor window ARG lines or near full screen if none.
734The vcursor will always appear in an unselected window." 734The vcursor will always appear in an unselected window."
735 735
736 (interactive "P") 736 (interactive "P")
@@ -791,10 +791,10 @@ is visible in the current one."
791 (setq vcursor-last-command t) 791 (setq vcursor-last-command t)
792 ) 792 )
793 793
794(defun vcursor-get-char-count (fn &rest args) 794(defun vcursor-get-char-count (func &rest args)
795 "Apply FN to ARG1 ... and return the number of characters moved. 795 "Apply FUNC to ARGS ... and return the number of characters moved.
796Point is temporarily set to the virtual cursor position before FN is 796Point is temporarily set to the virtual cursor position before FUNC
797called. 797is called.
798 798
799This is called by most of the virtual-cursor copying commands to find 799This is called by most of the virtual-cursor copying commands to find
800out how much to copy." 800out how much to copy."
@@ -803,7 +803,7 @@ out how much to copy."
803 (save-excursion 803 (save-excursion
804 (set-buffer (overlay-buffer vcursor-overlay)) 804 (set-buffer (overlay-buffer vcursor-overlay))
805 (let ((start (goto-char (overlay-start vcursor-overlay)))) 805 (let ((start (goto-char (overlay-start vcursor-overlay))))
806 (- (progn (apply fn args) (point)) start))) 806 (- (progn (apply func args) (point)) start)))
807 ) 807 )
808 808
809;; Make sure the virtual cursor is active. Unless arg is non-nil, 809;; Make sure the virtual cursor is active. Unless arg is non-nil,
@@ -822,13 +822,12 @@ Next time you use it, it will start from point.
822 822
823With a positive prefix ARG, the first window in cyclic order 823With a positive prefix ARG, the first window in cyclic order
824displaying the virtual cursor (or which was recently displaying the 824displaying the virtual cursor (or which was recently displaying the
825virtual cursor) will be deleted unless it's the selected 825virtual cursor) will be deleted unless it's the selected window.
826window.
827 826
828With a negative prefix argument, enable the virtual cursor: make it 827With a negative prefix argument, enable the virtual cursor: make it
829active at the same point as the real cursor. 828active at the same point as the real cursor.
830 829
831Copying mode is always turned off: the next use of the vcursor will 830Copying mode is always turned off: the next use of the vcursor will
832not copy text until you turn it on again." 831not copy text until you turn it on again."
833 832
834 (interactive "P") 833 (interactive "P")
@@ -854,7 +853,7 @@ This is the next window cyclically after one currently showing the
854virtual cursor, or else after the current selected window. If there 853virtual cursor, or else after the current selected window. If there
855is no other window, the current window is split. 854is no other window, the current window is split.
856 855
857Arguments N and optional ALL-FRAMES are the same as with other-window. 856Arguments N and optional ALL-FRAMES are the same as with `other-window'.
858ALL-FRAMES is also used to decide whether to split the window." 857ALL-FRAMES is also used to decide whether to split the window."
859 858
860 (interactive "p") 859 (interactive "p")
@@ -1042,7 +1041,7 @@ ARG is as for `end-of-line'."
1042 1041
1043(defun vcursor-beginning-of-buffer (&optional arg) 1042(defun vcursor-beginning-of-buffer (&optional arg)
1044 "Move the virtual cursor to the beginning of its buffer. 1043 "Move the virtual cursor to the beginning of its buffer.
1045ARG is as for beginning-of-buffer." 1044ARG is as for `beginning-of-buffer'."
1046 (interactive "P") 1045 (interactive "P")
1047 (vcursor-relative-move 1046 (vcursor-relative-move
1048 (lambda (arg) 1047 (lambda (arg)
@@ -1053,7 +1052,7 @@ ARG is as for beginning-of-buffer."
1053 1052
1054(defun vcursor-end-of-buffer (&optional arg) 1053(defun vcursor-end-of-buffer (&optional arg)
1055 "Move the virtual cursor to the end of its buffer. 1054 "Move the virtual cursor to the end of its buffer.
1056ARG is as for end-of-buffer. 1055ARG is as for `end-of-buffer'.
1057 1056
1058Actually, the vcursor is moved to the second from last character or it 1057Actually, the vcursor is moved to the second from last character or it
1059would be invisible." 1058would be invisible."
diff --git a/lisp/version.el b/lisp/version.el
index eb073ee6d40..110317bff6c 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -47,7 +47,7 @@ Time at which Emacs was dumped out.")
47 47
48(defconst emacs-build-system (system-name)) 48(defconst emacs-build-system (system-name))
49 49
50(defun emacs-version (&optional here) "\ 50(defun emacs-version (&optional here) "\
51Return string describing the version of Emacs that is running. 51Return string describing the version of Emacs that is running.
52If optional argument HERE is non-nil, insert string at point. 52If optional argument HERE is non-nil, insert string at point.
53Don't use this function in programs to choose actions according 53Don't use this function in programs to choose actions according
@@ -83,7 +83,7 @@ to the system configuration; look at `system-configuration' instead."
83 83
84;; We put version info into the executable in the form that `ident' uses. 84;; We put version info into the executable in the form that `ident' uses.
85(or (memq system-type '(vax-vms windows-nt)) 85(or (memq system-type '(vax-vms windows-nt))
86 (purecopy (concat "\n$Id: " (subst-char-in-string ?\n ? (emacs-version)) 86 (purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version))
87 " $\n"))) 87 " $\n")))
88 88
89;;Local variables: 89;;Local variables:
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index 5b52849e2f4..9edcdb8c29e 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -1,6 +1,6 @@
1;;; w32-fns.el --- Lisp routines for Windows NT 1;;; w32-fns.el --- Lisp routines for Windows NT
2 2
3;; Copyright (C) 1994, 2001, 2004 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 2001, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Geoff Voelker <voelker@cs.washington.edu> 5;; Author: Geoff Voelker <voelker@cs.washington.edu>
6;; Keywords: internal 6;; Keywords: internal
@@ -60,7 +60,7 @@ That includes all Windows systems except for 9X/Me."
60 60
61(defun w32-shell-name () 61(defun w32-shell-name ()
62 "Return the name of the shell being used." 62 "Return the name of the shell being used."
63 (or (and (boundp 'explicit-shell-file-name) explicit-shell-file-name) 63 (or (bound-and-true-p explicit-shell-file-name)
64 (getenv "ESHELL") 64 (getenv "ESHELL")
65 (getenv "SHELL") 65 (getenv "SHELL")
66 (and (w32-using-nt) "cmd.exe") 66 (and (w32-using-nt) "cmd.exe")
@@ -272,7 +272,7 @@ shell requires it (see `w32-shell-dos-semantics')."
272(defun set-w32-system-coding-system (coding-system) 272(defun set-w32-system-coding-system (coding-system)
273 "Set the coding system used by the Windows system to CODING-SYSTEM. 273 "Set the coding system used by the Windows system to CODING-SYSTEM.
274This is used for things like passing font names with non-ASCII 274This is used for things like passing font names with non-ASCII
275characters in them to the system. For a list of possible values of 275characters in them to the system. For a list of possible values of
276CODING-SYSTEM, use \\[list-coding-systems]. 276CODING-SYSTEM, use \\[list-coding-systems].
277 277
278This function is provided for backward compatibility, since 278This function is provided for backward compatibility, since
@@ -355,8 +355,8 @@ This function is provided for backward compatibility, since
355Creates entries in `w32-charset-info-alist'. 355Creates entries in `w32-charset-info-alist'.
356XLFD-CHARSET is a string which will appear in the XLFD font name to 356XLFD-CHARSET is a string which will appear in the XLFD font name to
357identify the character set. WINDOWS-CHARSET is a symbol identifying 357identify the character set. WINDOWS-CHARSET is a symbol identifying
358the Windows character set this maps to. For the list of possible 358the Windows character set this maps to. For the list of possible
359values, see the documentation for `w32-charset-info-alist'. CODEPAGE 359values, see the documentation for `w32-charset-info-alist'. CODEPAGE
360can be a numeric codepage that Windows uses to display the character 360can be a numeric codepage that Windows uses to display the character
361set, t for Unicode output with no codepage translation or nil for 8 361set, t for Unicode output with no codepage translation or nil for 8
362bit output with no translation." 362bit output with no translation."
@@ -431,7 +431,7 @@ bit output with no translation."
431(defun x-select-text (text &optional push) 431(defun x-select-text (text &optional push)
432 "Make TEXT the last selected text. 432 "Make TEXT the last selected text.
433If `x-select-enable-clipboard' is non-nil, copy the text to the system 433If `x-select-enable-clipboard' is non-nil, copy the text to the system
434clipboard as well. Optional PUSH is ignored on Windows." 434clipboard as well. Optional PUSH is ignored on Windows."
435 (if x-select-enable-clipboard 435 (if x-select-enable-clipboard
436 (w32-set-clipboard-data text)) 436 (w32-set-clipboard-data text))
437 (setq x-last-selected-text text)) 437 (setq x-last-selected-text text))
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 6db1e2b2f3c..ac31a4d820b 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -150,33 +150,26 @@ visited by the buffers.")
150don't define it." 150don't define it."
151 `(defvar ,sym ,val ,doc)))) 151 `(defvar ,sym ,val ,doc))))
152 152
153(if (fboundp 'make-overlay) 153(defalias 'whitespace-make-overlay
154 (progn 154 (if (featurep 'xemacs) 'make-extent 'make-overlay))
155 (defalias 'whitespace-make-overlay 'make-overlay) 155(defalias 'whitespace-overlay-put
156 (defalias 'whitespace-overlay-put 'overlay-put) 156 (if (featurep 'xemacs) 'set-extent-property 'overlay-put))
157 (defalias 'whitespace-delete-overlay 'delete-overlay) 157(defalias 'whitespace-delete-overlay
158 (defalias 'whitespace-overlay-start 'overlay-start) 158 (if (featurep 'xemacs) 'delete-extent 'delete-overlay))
159 (defalias 'whitespace-overlay-end 'overlay-end) 159(defalias 'whitespace-overlay-start
160 (defalias 'whitespace-mode-line-update 'force-mode-line-update)) 160 (if (featurep 'xemacs) 'extent-start 'overlay-start))
161 (defalias 'whitespace-make-overlay 'make-extent) 161(defalias 'whitespace-overlay-end
162 (defalias 'whitespace-overlay-put 'set-extent-property) 162 (if (featurep 'xemacs) 'extent-end 'overlay-end))
163 (defalias 'whitespace-delete-overlay 'delete-extent) 163(defalias 'whitespace-mode-line-update
164 (defalias 'whitespace-overlay-start 'extent-start) 164 (if (featurep 'xemacs) 'redraw-modeline 'force-mode-line-update))
165 (defalias 'whitespace-overlay-end 'extent-end) 165
166 (defalias 'whitespace-mode-line-update 'redraw-modeline))
167
168(if (featurep 'xemacs)
169(defgroup whitespace nil
170 "Check for and fix five different types of whitespaces in source code."
171 ;; Since XEmacs doesn't have a 'convenience group, use the next best group
172 ;; which is 'editing?
173 :link '(emacs-commentary-link "whitespace.el")
174 :group 'editing)
175(defgroup whitespace nil 166(defgroup whitespace nil
176 "Check for and fix five different types of whitespaces in source code." 167 "Check for and fix five different types of whitespaces in source code."
177 :version "21.1" 168 :version "21.1"
178 :link '(emacs-commentary-link "whitespace.el") 169 :link '(emacs-commentary-link "whitespace.el")
179 :group 'convenience)) 170 ;; Since XEmacs doesn't have a 'convenience group, use the next best group
171 ;; which is 'editing?
172 :group (if (featurep 'xemacs) 'editing 'convenience))
180 173
181(defcustom whitespace-check-leading-whitespace t 174(defcustom whitespace-check-leading-whitespace t
182 "Flag to check leading whitespace. This is the global for the system. 175 "Flag to check leading whitespace. This is the global for the system.
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 3cab849ae74..372b068ceaf 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -275,7 +275,7 @@ minibuffer."
275 (while (not (or (and (>= char ?0) (< char next-digit)) 275 (while (not (or (and (>= char ?0) (< char next-digit))
276 (eq value 'keyboard-quit))) 276 (eq value 'keyboard-quit)))
277 ;; Unread a SPC to lead to our new menu. 277 ;; Unread a SPC to lead to our new menu.
278 (setq unread-command-events (cons ?\ unread-command-events)) 278 (setq unread-command-events (cons ?\s unread-command-events))
279 (setq keys (read-key-sequence title)) 279 (setq keys (read-key-sequence title))
280 (setq value 280 (setq value
281 (lookup-key overriding-terminal-local-map keys t) 281 (lookup-key overriding-terminal-local-map keys t)
@@ -377,7 +377,7 @@ new value.")
377 (end (widget-field-end field))) 377 (end (widget-field-end field)))
378 (when size 378 (when size
379 (while (and (> end begin) 379 (while (and (> end begin)
380 (eq (char-after (1- end)) ?\ )) 380 (eq (char-after (1- end)) ?\s))
381 (setq end (1- end)))) 381 (setq end (1- end))))
382 (while (< begin end) 382 (while (< begin end)
383 (let ((old (char-after begin))) 383 (let ((old (char-after begin)))
@@ -441,14 +441,8 @@ new value.")
441 (prog1 (progn ,@form) 441 (prog1 (progn ,@form)
442 (goto-char (point-max)))))) 442 (goto-char (point-max))))))
443 443
444(defface widget-inactive '((((class grayscale color) 444(defface widget-inactive
445 (background dark)) 445 '((t :inherit shadow))
446 (:foreground "light gray"))
447 (((class grayscale color)
448 (background light))
449 (:foreground "dim gray"))
450 (t
451 (:slant italic)))
452 "Face used for inactive widgets." 446 "Face used for inactive widgets."
453 :group 'widget-faces) 447 :group 'widget-faces)
454;; backward-compatibility alias 448;; backward-compatibility alias
@@ -802,8 +796,8 @@ The optional ARGS are additional keyword arguments."
802 &optional button-from button-to 796 &optional button-from button-to
803 &rest args) 797 &rest args)
804 "Return a widget of type TYPE with endpoint FROM TO. 798 "Return a widget of type TYPE with endpoint FROM TO.
805Optional ARGS are extra keyword arguments for TYPE. 799No text will be inserted to the buffer, instead the text between FROM
806and TO will be used as the widgets end points. If optional arguments 800and TO will be used as the widgets end points. If optional arguments
807BUTTON-FROM and BUTTON-TO are given, these will be used as the widgets 801BUTTON-FROM and BUTTON-TO are given, these will be used as the widgets
808button end points. 802button end points.
809Optional ARGS are extra keyword arguments for TYPE." 803Optional ARGS are extra keyword arguments for TYPE."
@@ -1111,7 +1105,7 @@ the field."
1111 :group 'widgets) 1105 :group 'widgets)
1112 1106
1113(defun widget-narrow-to-field () 1107(defun widget-narrow-to-field ()
1114 "Narrow to field" 1108 "Narrow to field."
1115 (interactive) 1109 (interactive)
1116 (let ((field (widget-field-find (point)))) 1110 (let ((field (widget-field-find (point))))
1117 (if field 1111 (if field
@@ -1219,7 +1213,7 @@ When not inside a field, move to the previous button or field."
1219 1213
1220(defun widget-field-find (pos) 1214(defun widget-field-find (pos)
1221 "Return the field at POS. 1215 "Return the field at POS.
1222Unlike (get-char-property POS 'field) this, works with empty fields too." 1216Unlike (get-char-property POS 'field), this works with empty fields too."
1223 (let ((fields widget-field-list) 1217 (let ((fields widget-field-list)
1224 field found) 1218 field found)
1225 (while fields 1219 (while fields
@@ -1269,7 +1263,7 @@ Unlike (get-char-property POS 'field) this, works with empty fields too."
1269 ;; Field too small. 1263 ;; Field too small.
1270 (save-excursion 1264 (save-excursion
1271 (goto-char end) 1265 (goto-char end)
1272 (insert-char ?\ (- (+ begin size) end)))) 1266 (insert-char ?\s (- (+ begin size) end))))
1273 ((> (- end begin) size) 1267 ((> (- end begin) size)
1274 ;; Field too large and 1268 ;; Field too large and
1275 (if (or (< (point) (+ begin size)) 1269 (if (or (< (point) (+ begin size))
@@ -1280,7 +1274,7 @@ Unlike (get-char-property POS 'field) this, works with empty fields too."
1280 (setq begin (point))) 1274 (setq begin (point)))
1281 (save-excursion 1275 (save-excursion
1282 (goto-char end) 1276 (goto-char end)
1283 (while (and (eq (preceding-char) ?\ ) 1277 (while (and (eq (preceding-char) ?\s)
1284 (> (point) begin)) 1278 (> (point) begin))
1285 (delete-backward-char 1))))))) 1279 (delete-backward-char 1)))))))
1286 (widget-specify-secret field)) 1280 (widget-specify-secret field))
@@ -1440,7 +1434,7 @@ If that does not exists, call the value of `widget-complete-field'."
1440 ((eq escape ?n) 1434 ((eq escape ?n)
1441 (when (widget-get widget :indent) 1435 (when (widget-get widget :indent)
1442 (insert ?\n) 1436 (insert ?\n)
1443 (insert-char ? (widget-get widget :indent)))) 1437 (insert-char ?\s (widget-get widget :indent))))
1444 ((eq escape ?t) 1438 ((eq escape ?t)
1445 (let ((image (widget-get widget :tag-glyph)) 1439 (let ((image (widget-get widget :tag-glyph))
1446 (tag (widget-get widget :tag))) 1440 (tag (widget-get widget :tag)))
@@ -1504,7 +1498,7 @@ If that does not exists, call the value of `widget-complete-field'."
1504 (when doc-text 1498 (when doc-text
1505 (and (eq (preceding-char) ?\n) 1499 (and (eq (preceding-char) ?\n)
1506 (widget-get widget :indent) 1500 (widget-get widget :indent)
1507 (insert-char ? (widget-get widget :indent))) 1501 (insert-char ?\s (widget-get widget :indent)))
1508 ;; The `*' in the beginning is redundant. 1502 ;; The `*' in the beginning is redundant.
1509 (when (eq (aref doc-text 0) ?*) 1503 (when (eq (aref doc-text 0) ?*)
1510 (setq doc-text (substring doc-text 1))) 1504 (setq doc-text (substring doc-text 1)))
@@ -1757,7 +1751,7 @@ If END is omitted, it defaults to the length of LIST."
1757 :action 'widget-url-link-action) 1751 :action 'widget-url-link-action)
1758 1752
1759(defun widget-url-link-action (widget &optional event) 1753(defun widget-url-link-action (widget &optional event)
1760 "Open the url specified by WIDGET." 1754 "Open the URL specified by WIDGET."
1761 (browse-url (widget-value widget))) 1755 (browse-url (widget-value widget)))
1762 1756
1763;;; The `function-link' Widget. 1757;;; The `function-link' Widget.
@@ -1797,7 +1791,7 @@ If END is omitted, it defaults to the length of LIST."
1797 :action 'widget-emacs-library-link-action) 1791 :action 'widget-emacs-library-link-action)
1798 1792
1799(defun widget-emacs-library-link-action (widget &optional event) 1793(defun widget-emacs-library-link-action (widget &optional event)
1800 "Find the Emacs Library file specified by WIDGET." 1794 "Find the Emacs library file specified by WIDGET."
1801 (find-file (locate-library (widget-value widget)))) 1795 (find-file (locate-library (widget-value widget))))
1802 1796
1803;;; The `emacs-commentary-link' Widget. 1797;;; The `emacs-commentary-link' Widget.
@@ -1878,7 +1872,7 @@ the earlier input."
1878 (insert value) 1872 (insert value)
1879 (and size 1873 (and size
1880 (< (length value) size) 1874 (< (length value) size)
1881 (insert-char ?\ (- size (length value)))) 1875 (insert-char ?\s (- size (length value))))
1882 (unless (memq widget widget-field-list) 1876 (unless (memq widget widget-field-list)
1883 (setq widget-field-new (cons widget widget-field-new))) 1877 (setq widget-field-new (cons widget widget-field-new)))
1884 (move-marker (cdr overlay) (point)) 1878 (move-marker (cdr overlay) (point))
@@ -1911,7 +1905,7 @@ the earlier input."
1911 (while (and size 1905 (while (and size
1912 (not (zerop size)) 1906 (not (zerop size))
1913 (> to from) 1907 (> to from)
1914 (eq (char-after (1- to)) ?\ )) 1908 (eq (char-after (1- to)) ?\s))
1915 (setq to (1- to))) 1909 (setq to (1- to)))
1916 (let ((result (buffer-substring-no-properties from to))) 1910 (let ((result (buffer-substring-no-properties from to)))
1917 (when secret 1911 (when secret
@@ -2192,7 +2186,7 @@ when he invoked the menu."
2192If the item is checked, CHOSEN is a cons whose cdr is the value." 2186If the item is checked, CHOSEN is a cons whose cdr is the value."
2193 (and (eq (preceding-char) ?\n) 2187 (and (eq (preceding-char) ?\n)
2194 (widget-get widget :indent) 2188 (widget-get widget :indent)
2195 (insert-char ? (widget-get widget :indent))) 2189 (insert-char ?\s (widget-get widget :indent)))
2196 (widget-specify-insert 2190 (widget-specify-insert
2197 (let* ((children (widget-get widget :children)) 2191 (let* ((children (widget-get widget :children))
2198 (buttons (widget-get widget :buttons)) 2192 (buttons (widget-get widget :buttons))
@@ -2372,7 +2366,7 @@ Return an alist of (TYPE MATCH)."
2372 ;; (setq type (widget-convert type)) 2366 ;; (setq type (widget-convert type))
2373 (and (eq (preceding-char) ?\n) 2367 (and (eq (preceding-char) ?\n)
2374 (widget-get widget :indent) 2368 (widget-get widget :indent)
2375 (insert-char ? (widget-get widget :indent))) 2369 (insert-char ?\s (widget-get widget :indent)))
2376 (widget-specify-insert 2370 (widget-specify-insert
2377 (let* ((value (widget-get widget :value)) 2371 (let* ((value (widget-get widget :value))
2378 (children (widget-get widget :children)) 2372 (children (widget-get widget :children))
@@ -2550,7 +2544,7 @@ Return an alist of (TYPE MATCH)."
2550 ;; (let ((widget-push-button-gui widget-editable-list-gui)) 2544 ;; (let ((widget-push-button-gui widget-editable-list-gui))
2551 (cond ((eq escape ?i) 2545 (cond ((eq escape ?i)
2552 (and (widget-get widget :indent) 2546 (and (widget-get widget :indent)
2553 (insert-char ?\ (widget-get widget :indent))) 2547 (insert-char ?\s (widget-get widget :indent)))
2554 (apply 'widget-create-child-and-convert 2548 (apply 'widget-create-child-and-convert
2555 widget 'insert-button 2549 widget 'insert-button
2556 (widget-get widget :append-button-args))) 2550 (widget-get widget :append-button-args)))
@@ -2662,7 +2656,7 @@ Return an alist of (TYPE MATCH)."
2662 (widget-specify-insert 2656 (widget-specify-insert
2663 (save-excursion 2657 (save-excursion
2664 (and (widget-get widget :indent) 2658 (and (widget-get widget :indent)
2665 (insert-char ?\ (widget-get widget :indent))) 2659 (insert-char ?\s (widget-get widget :indent)))
2666 (insert (widget-get widget :entry-format))) 2660 (insert (widget-get widget :entry-format)))
2667 ;; Parse % escapes in format. 2661 ;; Parse % escapes in format.
2668 (while (re-search-forward "%\\(.\\)" nil t) 2662 (while (re-search-forward "%\\(.\\)" nil t)
@@ -2726,7 +2720,7 @@ Return an alist of (TYPE MATCH)."
2726 value (cdr answer)) 2720 value (cdr answer))
2727 (and (eq (preceding-char) ?\n) 2721 (and (eq (preceding-char) ?\n)
2728 (widget-get widget :indent) 2722 (widget-get widget :indent)
2729 (insert-char ?\ (widget-get widget :indent))) 2723 (insert-char ?\s (widget-get widget :indent)))
2730 (push (cond ((null answer) 2724 (push (cond ((null answer)
2731 (widget-create-child widget arg)) 2725 (widget-create-child widget arg))
2732 ((widget-get arg :inline) 2726 ((widget-get arg :inline)
@@ -2865,7 +2859,7 @@ link for that string."
2865 (narrow-to-region from to) 2859 (narrow-to-region from to)
2866 (goto-char (point-min)) 2860 (goto-char (point-min))
2867 (while (search-forward "\n" nil t) 2861 (while (search-forward "\n" nil t)
2868 (insert-char ?\ indent))))))) 2862 (insert-char ?\s indent)))))))
2869 2863
2870;;; The `documentation-string' Widget. 2864;;; The `documentation-string' Widget.
2871 2865
@@ -2885,7 +2879,7 @@ link for that string."
2885 (let ((before (substring doc 0 (match-beginning 0))) 2879 (let ((before (substring doc 0 (match-beginning 0)))
2886 (after (substring doc (match-beginning 0))) 2880 (after (substring doc (match-beginning 0)))
2887 button) 2881 button)
2888 (insert before ?\ ) 2882 (insert before ?\s)
2889 (widget-documentation-link-add widget start (point)) 2883 (widget-documentation-link-add widget start (point))
2890 (setq button 2884 (setq button
2891 (widget-create-child-and-convert 2885 (widget-create-child-and-convert
@@ -2899,7 +2893,7 @@ link for that string."
2899 (when shown 2893 (when shown
2900 (setq start (point)) 2894 (setq start (point))
2901 (when (and indent (not (zerop indent))) 2895 (when (and indent (not (zerop indent)))
2902 (insert-char ?\ indent)) 2896 (insert-char ?\s indent))
2903 (insert after) 2897 (insert after)
2904 (widget-documentation-link-add widget start (point))) 2898 (widget-documentation-link-add widget start (point)))
2905 (widget-put widget :buttons (list button))) 2899 (widget-put widget :buttons (list button)))
@@ -3634,7 +3628,7 @@ example:
3634 (widget-apply widget :notify widget event)))) 3628 (widget-apply widget :notify widget event))))
3635 3629
3636(defun widget-color-notify (widget child &optional event) 3630(defun widget-color-notify (widget child &optional event)
3637 "Update the sample, and notofy the parent." 3631 "Update the sample, and notify the parent."
3638 (overlay-put (widget-get widget :sample-overlay) 3632 (overlay-put (widget-get widget :sample-overlay)
3639 'face (widget-apply widget :sample-face-get)) 3633 'face (widget-apply widget :sample-face-get))
3640 (widget-default-notify widget child event)) 3634 (widget-default-notify widget child event))
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index d0590a47551..5ed7f2165ce 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,7 +1,24 @@
12005-07-21 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * internals.texi (Garbage Collection): Add gc-cons-percentage.
4
52005-07-18 Juri Linkov <juri@jurta.org>
6
7 * commands.texi (Accessing Events):
8 * frames.texi (Text Terminal Colors, Resources):
9 * markers.texi (The Mark):
10 * modes.texi (Defining Minor Modes):
11 Delete duplicate duplicate words.
12
132005-07-16 Richard M. Stallman <rms@gnu.org>
14
15 * display.texi (Managing Overlays): Clarify make-overlay
16 args for insertion types.
17
12005-07-13 Luc Teirlinck <teirllm@auburn.edu> 182005-07-13 Luc Teirlinck <teirllm@auburn.edu>
2 19
3 * customize.texi (Variable Definitions): Add 20 * customize.texi (Variable Definitions):
4 `custom-initialize-safe-set' and `custom-initialize-safe-default'. 21 Add `custom-initialize-safe-set' and `custom-initialize-safe-default'.
5 `standard-value' is a list too. 22 `standard-value' is a list too.
6 (Defining New Types): Use @key{RET} instead of @key{ret}. 23 (Defining New Types): Use @key{RET} instead of @key{ret}.
7 24
diff --git a/lispref/commands.texi b/lispref/commands.texi
index 225deab4a20..5ded722155c 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -1773,7 +1773,7 @@ Return the window that @var{position} is in.
1773@defun posn-area position 1773@defun posn-area position
1774Return the window area recorded in @var{position}. It returns @code{nil} 1774Return the window area recorded in @var{position}. It returns @code{nil}
1775when the event occurred in the text area of the window; otherwise, it 1775when the event occurred in the text area of the window; otherwise, it
1776is a symbol identifying the area in which the the event occurred. 1776is a symbol identifying the area in which the event occurred.
1777@end defun 1777@end defun
1778 1778
1779@defun posn-point position 1779@defun posn-point position
diff --git a/lispref/display.texi b/lispref/display.texi
index 75d20f7e51c..de024a71b32 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -1133,12 +1133,14 @@ markers. If @var{buffer} is omitted, the overlay is created in the
1133current buffer. 1133current buffer.
1134 1134
1135The arguments @var{front-advance} and @var{rear-advance} specify the 1135The arguments @var{front-advance} and @var{rear-advance} specify the
1136insertion type for the start of the overlay and for the end of the 1136marker insertion type for the start of the overlay and for the end of
1137overlay, respectively. @xref{Marker Insertion Types}. If 1137the overlay, respectively. @xref{Marker Insertion Types}. If they
1138@var{front-advance} is non-@code{nil}, text inserted at the beginning 1138are both @code{nil}, the default, then the overlay extends to include
1139of the overlay is excluded from the overlay. If @var{read-advance} is 1139any text inserted at the beginning, but not text inserted at the end.
1140non-@code{nil}, text inserted at the beginning of the overlay is 1140If @var{front-advance} is non-@code{nil}, text inserted at the
1141included in the overlay. 1141beginning of the overlay is excluded from the overlay. If
1142@var{rear-advance} is non-@code{nil}, text inserted at the end of the
1143overlay is included in the overlay.
1142@end defun 1144@end defun
1143 1145
1144@defun overlay-start overlay 1146@defun overlay-start overlay
diff --git a/lispref/frames.texi b/lispref/frames.texi
index 13921c0b6fc..827f98d24c2 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -1744,7 +1744,7 @@ This function associates the color name @var{name} with
1744color number @var{number} on the terminal. 1744color number @var{number} on the terminal.
1745 1745
1746The optional argument @var{rgb}, if specified, is an rgb value, a list 1746The optional argument @var{rgb}, if specified, is an rgb value, a list
1747of three numbers that specify what what the color actually looks like. 1747of three numbers that specify what the color actually looks like.
1748If you do not specify @var{rgb}, then this color cannot be used by 1748If you do not specify @var{rgb}, then this color cannot be used by
1749@code{tty-color-approximate} to approximate other colors, because 1749@code{tty-color-approximate} to approximate other colors, because
1750Emacs will not know what it looks like. 1750Emacs will not know what it looks like.
@@ -1822,7 +1822,7 @@ xterm.vt100.background: yellow
1822@end example 1822@end example
1823 1823
1824@noindent 1824@noindent
1825in in your X resources file (whose name is usually @file{~/.Xdefaults} 1825in your X resources file (whose name is usually @file{~/.Xdefaults}
1826or @file{~/.Xresources}). Then: 1826or @file{~/.Xresources}). Then:
1827 1827
1828@example 1828@example
diff --git a/lispref/internals.texi b/lispref/internals.texi
index 5a83c82ff5f..61b643bd54a 100644
--- a/lispref/internals.texi
+++ b/lispref/internals.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999 3@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999, 2005
4@c Free Software Foundation, Inc. 4@c Free Software Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/internals 6@setfilename ../info/internals
@@ -368,6 +368,18 @@ until the subsequent garbage collection, at which time
368@code{garbage-collect} will set the threshold back to 10,000. 368@code{garbage-collect} will set the threshold back to 10,000.
369@end defopt 369@end defopt
370 370
371@defopt gc-cons-percentage
372The value of this variable is the minimum portion of the heap that
373should be allocated before a garbage collection takes place. It is
374used only if the specified size is larger than
375@code{gc-cons-threshold}.
376
377As the heap size increases, the time to perform a garbage collection
378increases, so in order to compensate, this variable tries to
379correspondingly reduce the frequency of collection by letting Emacs
380allocate more memory between each collection.
381@end defopt
382
371 The value returned by @code{garbage-collect} describes the amount of 383 The value returned by @code{garbage-collect} describes the amount of
372memory used by Lisp data, broken down by data type. By contrast, the 384memory used by Lisp data, broken down by data type. By contrast, the
373function @code{memory-limit} provides information on the total amount of 385function @code{memory-limit} provides information on the total amount of
diff --git a/lispref/markers.texi b/lispref/markers.texi
index 4eb34ce13a0..60b2aae6a98 100644
--- a/lispref/markers.texi
+++ b/lispref/markers.texi
@@ -444,7 +444,7 @@ programming. So we do not describe it here.
444This function returns the current buffer's mark position as an integer. 444This function returns the current buffer's mark position as an integer.
445 445
446If Transient Mark mode is enabled, @code{mark-even-if-inactive} is 446If Transient Mark mode is enabled, @code{mark-even-if-inactive} is
447@code{nil} and and the mark is inactive, @code{mark} normally signals 447@code{nil} and the mark is inactive, @code{mark} normally signals
448an error. However, if @var{force} is non-@code{nil}, then @code{mark} 448an error. However, if @var{force} is non-@code{nil}, then @code{mark}
449returns the mark position anyway---or @code{nil}, if the mark is not 449returns the mark position anyway---or @code{nil}, if the mark is not
450yet set for this buffer. 450yet set for this buffer.
diff --git a/lispref/modes.texi b/lispref/modes.texi
index ac13e30b90c..132c309cb96 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -1415,7 +1415,7 @@ This is equivalent to specifying @var{lighter} positionally.
1415This is equivalent to specifying @var{keymap} positionally. 1415This is equivalent to specifying @var{keymap} positionally.
1416@end table 1416@end table
1417 1417
1418Any other keyword arguments are passed passed directly to the 1418Any other keyword arguments are passed directly to the
1419@code{defcustom} generated for the variable @var{mode}. 1419@code{defcustom} generated for the variable @var{mode}.
1420 1420
1421The command named @var{mode} first performs the standard actions such 1421The command named @var{mode} first performs the standard actions such
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 17a92de5415..4ce570b989c 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,8 @@
12005-07-19 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
4 labels in menu bar.
5
12005-07-04 Lute Kamstra <lute@gnu.org> 62005-07-04 Lute Kamstra <lute@gnu.org>
2 7
3 Update FSF's address in GPL notices. 8 Update FSF's address in GPL notices.
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c
index 02a2f035aa3..27118d8ab92 100644
--- a/lwlib/lwlib-Xm.c
+++ b/lwlib/lwlib-Xm.c
@@ -524,6 +524,10 @@ make_menu_in_widget (instance, widget, val, keep_first_children)
524 Widget* old_children; 524 Widget* old_children;
525 unsigned int old_num_children; 525 unsigned int old_num_children;
526 526
527 /* Disable drag and drop for labels in menu bar. */
528 static char overrideTrans[] = "<Btn2Down>: Noop()";
529 XtTranslations override = XtParseTranslationTable (overrideTrans);
530
527 old_children = XtCompositeChildren (widget, &old_num_children); 531 old_children = XtCompositeChildren (widget, &old_num_children);
528 532
529 /* Allocate the children array */ 533 /* Allocate the children array */
@@ -632,6 +636,8 @@ make_menu_in_widget (instance, widget, val, keep_first_children)
632 636
633 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback, 637 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback,
634 (XtPointer)instance); 638 (XtPointer)instance);
639 XtOverrideTranslations (button, override);
640
635 } 641 }
636 642
637 children[child_index] = button; 643 children[child_index] = button;
diff --git a/man/ChangeLog b/man/ChangeLog
index 2c5852598e0..43edb631b9c 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,60 @@
12005-07-19 Carsten Dominik <dominik@science.uva.nl>
2
3 * org.texi: Version 3.14
4
52005-07-04 Carsten Dominik <dominik@science.uva.nl>
6
7 * org.texi: Version 3.13
8
92005-07-19 Juri Linkov <juri@jurta.org>
10
11 * files.texi (Comparing Files): Mention resync for `compare-windows'.
12
132005-07-18 Juri Linkov <juri@jurta.org>
14
15 * calc.texi (Time Zones, Logical Operations):
16 * cl.texi (Overview):
17 * custom.texi (Easy Customization):
18 * files.texi (Old Versions):
19 * frames.texi (Wheeled Mice):
20 * mule.texi (Specify Coding):
21 * org.texi (TODO types):
22 * sc.texi (Emacs 18 MUAs):
23 * speedbar.texi (Top):
24 * text.texi (Cell Justification):
25 * trouble.texi (After a Crash):
26 * url.texi (History):
27 * xresources.texi (GTK styles):
28 Delete duplicate duplicate words.
29
302005-07-17 Richard M. Stallman <rms@gnu.org>
31
32 * frames.texi (Creating Frames): Fix foreground color example.
33
34 * custom.texi (Init Examples): Clean up text about conditionals.
35
362005-07-16 Richard M. Stallman <rms@gnu.org>
37
38 * mini.texi (Completion Commands): Fix command name for ?.
39
402005-07-16 Johan Bockgard <bojohan@users.sourceforge.net> (tiny change)
41
42 * cl.texi (Type Predicates): Document `atom' type.
43
442005-07-16 Eli Zaretskii <eliz@gnu.org>
45
46 * display.texi (Standard Faces): Explain that customization of
47 `menu' face has no effect on w32 and with GTK. Add
48 cross-references.
49
50 * cmdargs.texi (General Variables): Clarify the default location
51 of $HOME on w32 systems.
52
532005-07-15 Jason Rumney <jasonr@gnu.org>
54
55 * cmdargs.texi (General Variables): Default HOME on MS Windows has
56 changed.
57
12005-07-08 Kenichi Handa <handa@m17n.org> 582005-07-08 Kenichi Handa <handa@m17n.org>
2 59
3 * mule.texi (Recognize Coding): Recommend 60 * mule.texi (Recognize Coding): Recommend
@@ -40,6 +97,7 @@
40 * mh-e.texi (Copying): 97 * mh-e.texi (Copying):
41 * trouble.texi (Checklist): Update FSF's address. 98 * trouble.texi (Checklist): Update FSF's address.
42 99
100>>>>>>> 1.631
432005-07-03 Richard M. Stallman <rms@gnu.org> 1012005-07-03 Richard M. Stallman <rms@gnu.org>
44 102
45 * flymake.texi (Example -- Configuring a tool called directly): 103 * flymake.texi (Example -- Configuring a tool called directly):
@@ -515,7 +573,7 @@
515 573
5162005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 5742005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
517 575
518 * xresources.texi (Lucid Resources): Add fonSet resource. 576 * xresources.texi (Lucid Resources): Add fontSet resource.
519 577
5202005-04-06 Katsumi Yamaoka <yamaoka@jpl.org> 5782005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
521 579
diff --git a/man/calc.texi b/man/calc.texi
index 9b7bf7342bd..3ceb0c3ebff 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -17574,7 +17574,7 @@ beginning of daylight savings time; converting a date/time form that
17574falls in this hour results in a time value for the following hour, 17574falls in this hour results in a time value for the following hour,
17575from 3 a.m.@: to 4 a.m. At the end of daylight savings time, the 17575from 3 a.m.@: to 4 a.m. At the end of daylight savings time, the
17576hour from 1 a.m.@: to 2 a.m.@: repeats itself; converting a date/time 17576hour from 1 a.m.@: to 2 a.m.@: repeats itself; converting a date/time
17577form that falls in in this hour results in a time value for the first 17577form that falls in this hour results in a time value for the first
17578manifestation of that time (@emph{not} the one that occurs one hour later). 17578manifestation of that time (@emph{not} the one that occurs one hour later).
17579 17579
17580If @code{math-daylight-savings-hook} is @code{nil}, then the 17580If @code{math-daylight-savings-hook} is @code{nil}, then the
@@ -25691,7 +25691,7 @@ stack. It also works elementwise on vectors. For example, if
25691variable and the lefthand side is a number (as in @samp{2.34 = x}), then 25691variable and the lefthand side is a number (as in @samp{2.34 = x}), then
25692Calc keeps the lefthand side instead. Finally, this command works with 25692Calc keeps the lefthand side instead. Finally, this command works with
25693assignments @samp{x := 2.34} as well as equations, always taking the 25693assignments @samp{x := 2.34} as well as equations, always taking the
25694the righthand side, and for @samp{=>} (evaluates-to) operators, always 25694righthand side, and for @samp{=>} (evaluates-to) operators, always
25695taking the lefthand side. 25695taking the lefthand side.
25696 25696
25697@kindex a & 25697@kindex a &
diff --git a/man/cl.texi b/man/cl.texi
index c150e0d2b4d..b99322b1e23 100644
--- a/man/cl.texi
+++ b/man/cl.texi
@@ -136,7 +136,7 @@ Lisp version of the function (e.g., @code{assoc*}).
136The package described here was written by Dave Gillespie, 136The package described here was written by Dave Gillespie,
137@file{daveg@@synaptics.com}. It is a total rewrite of the original 137@file{daveg@@synaptics.com}. It is a total rewrite of the original
1381986 @file{cl.el} package by Cesar Quiroz. Most features of the 1381986 @file{cl.el} package by Cesar Quiroz. Most features of the
139the Quiroz package have been retained; any incompatibilities are 139Quiroz package have been retained; any incompatibilities are
140noted in the descriptions below. Care has been taken in this 140noted in the descriptions below. Care has been taken in this
141version to ensure that each function is defined efficiently, 141version to ensure that each function is defined efficiently,
142concisely, and with minimal impact on the rest of the Emacs 142concisely, and with minimal impact on the rest of the Emacs
@@ -736,6 +736,11 @@ Thus @code{(typep @var{object} 'null)} is equivalent to
736@code{(null @var{object})}. 736@code{(null @var{object})}.
737 737
738@item 738@item
739The type symbol @code{atom} represents all objects that are not cons
740cells. Thus @code{(typep @var{object} 'atom)} is equivalent to
741@code{(atom @var{object})}.
742
743@item
739The type symbol @code{real} is a synonym for @code{number}, and 744The type symbol @code{real} is a synonym for @code{number}, and
740@code{fixnum} is a synonym for @code{integer}. 745@code{fixnum} is a synonym for @code{integer}.
741 746
diff --git a/man/cmdargs.texi b/man/cmdargs.texi
index 5094a924cc7..2dbdb5c5887 100644
--- a/man/cmdargs.texi
+++ b/man/cmdargs.texi
@@ -478,10 +478,15 @@ This variable defaults to @file{~/.bash_history} if you use Bash, to
478otherwise. 478otherwise.
479@item HOME 479@item HOME
480The location of the user's files in the directory tree; used for 480The location of the user's files in the directory tree; used for
481expansion of file names starting with a tilde (@file{~}). On MS-DOS, it 481expansion of file names starting with a tilde (@file{~}). On MS-DOS,
482defaults to the directory from which Emacs was started, with @samp{/bin} 482it defaults to the directory from which Emacs was started, with
483removed from the end if it was present. On Windows, the default value 483@samp{/bin} removed from the end if it was present. On Windows, the
484of @env{HOME} is @file{C:/}, the root directory of drive @file{C:}. 484default value of @env{HOME} is the @file{Application Data}
485subdirectory of the user profile directory (normally, this is
486@file{C:/Documents and Settings/@var{username}/Application Data},
487where @var{username} is your user name), though for backwards
488compatibility @file{C:/} will be used instead if a @file{.emacs} file
489is found there.
485@item HOSTNAME 490@item HOSTNAME
486The name of the machine that Emacs is running on. 491The name of the machine that Emacs is running on.
487@item INCPATH 492@item INCPATH
diff --git a/man/custom.texi b/man/custom.texi
index ffded429c48..38e885cefc7 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -184,7 +184,7 @@ attributes (@pxref{Faces}).
184 184
185@findex customize 185@findex customize
186@cindex customization buffer 186@cindex customization buffer
187 You can browse interactively through the the user options and change 187 You can browse interactively through the user options and change
188some of them using @kbd{M-x customize}. This command creates a 188some of them using @kbd{M-x customize}. This command creates a
189@dfn{customization buffer}, which offers commands to navigate through 189@dfn{customization buffer}, which offers commands to navigate through
190a logically organized structure of the Emacs user options; you can 190a logically organized structure of the Emacs user options; you can
@@ -2313,42 +2313,37 @@ Enable the use of the command @code{narrow-to-region} without confirmation.
2313@end example 2313@end example
2314 2314
2315@item 2315@item
2316Adjusting the configuration to various contexts. 2316Adjusting the configuration to various platforms and Emacs versions.
2317 2317
2318In most of the cases, people want their Emacs to behave the same on 2318Users typically want Emacs to behave the same on all systems, so the
2319all their machines, so their configuration should be the same, no 2319same init file is right for all platforms. However, sometimes it
2320matter whether it's GNU/Linux or not, under X11 or on a tty, with one 2320happens that a function you use for customizing Emacs is not available
2321version of Emacs or another, ... 2321on some platforms or in older Emacs versions. To deal with that
2322 2322situation, put the customization inside a conditional that tests whether
2323What can happen, tho, is that depending on the circumstance some 2323the function or facility is available, like this:
2324features may or may not be available. In that case just prepend each
2325such customization with a little test that ensures that the feature
2326can be used. The best tests are usually checking that the feature is
2327available, rather than checking what kind of environment is
2328being used.
2329 2324
2330@example 2325@example
2331(if (fboundp 'blinking-cursor-mode) 2326(if (fboundp 'blink-cursor-mode)
2332 (blinking-cursor-mode 0)) 2327 (blink-cursor-mode 0))
2333@end example
2334 2328
2335@example
2336(if (boundp 'coding-category-utf-8) 2329(if (boundp 'coding-category-utf-8)
2337 (set-coding-priority '(coding-category-utf-8))) 2330 (set-coding-priority '(coding-category-utf-8)))
2338@end example 2331@end example
2339 2332
2333@noindent
2334You can also simply disregard the errors that occur if the
2335function is not defined.
2336
2340@example 2337@example
2341(require 'cl) ; To define `ignore-errors'. 2338(condition case ()
2342(ignore-errors (set-face-background 'region "grey75")) 2339 (set-face-background 'region "grey75")
2340 (error nil))
2343@end example 2341@end example
2344 2342
2345Note also that a @code{setq} on a variable which does not exist is 2343A @code{setq} on a variable which does not exist is generally
2346generally harmless, so those usually do not need to be made 2344harmless, so those do not need a conditional.
2347conditional on any kind of test.
2348
2349@end itemize 2345@end itemize
2350 2346
2351
2352@node Terminal Init 2347@node Terminal Init
2353@subsection Terminal-specific Initialization 2348@subsection Terminal-specific Initialization
2354 2349
diff --git a/man/display.texi b/man/display.texi
index 2b4bb03df1d..06b3a58642f 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -214,9 +214,16 @@ colors of this face affect the appearance of tool bar icons. @xref{Tool Bars}.
214@item tooltip 214@item tooltip
215This face is used for tooltips. @xref{Tooltips}. 215This face is used for tooltips. @xref{Tooltips}.
216@item menu 216@item menu
217This face determines the colors and font of Emacs's menus. Setting the 217@cindex menu bar appearance
218font of LessTif/Motif menus is currently not supported; attempts to set 218@cindex @code{menu} face, no effect if customized
219the font are ignored in this case. @xref{Menu Bars}. 219@cindex customization of @code{menu} face
220This face determines the colors and font of Emacs's menus. @xref{Menu
221Bars}. Setting the font of LessTif/Motif menus is currently not
222supported; attempts to set the font are ignored in this case.
223Likewise, attempts to customize this face in Emacs built with GTK and
224in the MS-Windows port are ignored by the respective GUI toolkits;
225you need to use system-wide styles and options to change the
226appearance of the menus.
220@end table 227@end table
221 228
222@node Font Lock 229@node Font Lock
diff --git a/man/files.texi b/man/files.texi
index 06833e785a2..c1f32bcf7ad 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -1643,7 +1643,7 @@ them; they exist only in the records of the master file.
1643@kindex C-x v g 1643@kindex C-x v g
1644 For some backends, you can display the file @dfn{annotated} with 1644 For some backends, you can display the file @dfn{annotated} with
1645per-line version information and using colors to enhance the visual 1645per-line version information and using colors to enhance the visual
1646appearance, with the the command @kbd{M-x vc-annotate}. 1646appearance, with the command @kbd{M-x vc-annotate}.
1647It creates a new buffer 1647It creates a new buffer
1648to display file's text, colored to show how old each part is. Text 1648to display file's text, colored to show how old each part is. Text
1649colored red is new, blue means old, and intermediate colors indicate 1649colored red is new, blue means old, and intermediate colors indicate
@@ -2923,8 +2923,10 @@ window with that in the next window. Comparison starts at point in each
2923window, and each starting position is pushed on the mark ring in its 2923window, and each starting position is pushed on the mark ring in its
2924respective buffer. Then point moves forward in each window, a character 2924respective buffer. Then point moves forward in each window, a character
2925at a time, until a mismatch between the two windows is reached. Then 2925at a time, until a mismatch between the two windows is reached. Then
2926the command is finished. For more information about windows in Emacs, 2926the command is finished. Another invocation of this command with
2927@ref{Windows}. 2927points on mismatching positions tries to skip non-matching text and
2928move points forward, until a match between the two windows is reached.
2929For more information about windows in Emacs, @ref{Windows}.
2928 2930
2929@vindex compare-ignore-case 2931@vindex compare-ignore-case
2930@vindex compare-ignore-whitespace 2932@vindex compare-ignore-whitespace
diff --git a/man/frames.texi b/man/frames.texi
index e5bada851ad..742091082c1 100644
--- a/man/frames.texi
+++ b/man/frames.texi
@@ -495,10 +495,9 @@ parameter, as shown here:
495Here's a similar example for specifying a foreground color: 495Here's a similar example for specifying a foreground color:
496 496
497@example 497@example
498(add-to-list 'default-frame-alist '(background-color . "blue")) 498(add-to-list 'default-frame-alist '(foreground-color . "blue"))
499@end example 499@end example
500 500
501
502@node Frame Commands 501@node Frame Commands
503@section Frame Commands 502@section Frame Commands
504 503
@@ -844,7 +843,7 @@ feature, use @kbd{M-x mouse-wheel-mode}.
844 The variables @code{mouse-wheel-follow-mouse} and 843 The variables @code{mouse-wheel-follow-mouse} and
845@code{mouse-wheel-scroll-amount} determine where and by how much 844@code{mouse-wheel-scroll-amount} determine where and by how much
846buffers are scrolled. The variable 845buffers are scrolled. The variable
847@code{mouse-wheel-progressive-speed} determines whether the the scroll 846@code{mouse-wheel-progressive-speed} determines whether the scroll
848speed is linked to how fast you move the wheel. 847speed is linked to how fast you move the wheel.
849 848
850@node Drag and Drop 849@node Drag and Drop
diff --git a/man/mini.texi b/man/mini.texi
index 0a775000722..47daebc1e75 100644
--- a/man/mini.texi
+++ b/man/mini.texi
@@ -270,7 +270,7 @@ Completion}.
270@end ifnottex 270@end ifnottex
271@item ? 271@item ?
272Display a list of all possible completions of the text in the minibuffer 272Display a list of all possible completions of the text in the minibuffer
273(@code{minibuffer-list-completions}). 273(@code{minibuffer-completion-help}).
274@end table 274@end table
275 275
276@kindex SPC 276@kindex SPC
diff --git a/man/mule.texi b/man/mule.texi
index b14f546c458..7156c814f71 100644
--- a/man/mule.texi
+++ b/man/mule.texi
@@ -1105,7 +1105,7 @@ C-w} to specify a new file name for that buffer.
1105 1105
1106@findex recode-file-name 1106@findex recode-file-name
1107 If a mistake occurs when encoding a file name, use the command 1107 If a mistake occurs when encoding a file name, use the command
1108command @kbd{M-x recode-file-name} to change the file name's coding 1108@kbd{M-x recode-file-name} to change the file name's coding
1109system. This prompts for an existing file name, its old coding 1109system. This prompts for an existing file name, its old coding
1110system, and the coding system to which you wish to convert. 1110system, and the coding system to which you wish to convert.
1111 1111
diff --git a/man/org.texi b/man/org.texi
index 1c1ac5ae4f9..61c2eb5e7ad 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,7 +4,7 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 3.13 7@set VERSION 3.14
8@set DATE July 2005 8@set DATE July 2005
9 9
10@dircategory Emacs 10@dircategory Emacs
@@ -94,7 +94,7 @@ Introduction
94 94
95* Summary:: Brief summary of what Org-mode does 95* Summary:: Brief summary of what Org-mode does
96* Installation and Activation:: How to install Org-mode 96* Installation and Activation:: How to install Org-mode
97* Feedback:: Bug reportes, ideas, patches etc. 97* Feedback:: Bug reports, ideas, patches etc.
98 98
99Document Structure 99Document Structure
100 100
@@ -116,9 +116,11 @@ Tables
116Calculations in tables 116Calculations in tables
117 117
118* Formula syntax:: How to write a formula 118* Formula syntax:: How to write a formula
119* Applying a formula:: How to get a formula executed 119* Column formulas:: Formulas valid for all fields in a column
120* Recalculation:: Re-applying all formulas in a table 120* Advanced features:: Field names, parameters and automatic recalc
121* Summing:: Summing columns and rows 121* Named-field formulas:: Formulas valid in single fields
122* Editing/debugging formulas:: Changing a stored formula
123* Appetizer::
122 124
123Hyperlinks 125Hyperlinks
124 126
@@ -180,7 +182,7 @@ Miscellaneous
180@menu 182@menu
181* Summary:: Brief summary of what Org-mode does 183* Summary:: Brief summary of what Org-mode does
182* Installation and Activation:: How to install Org-mode 184* Installation and Activation:: How to install Org-mode
183* Feedback:: Bug reportes, ideas, patches etc. 185* Feedback:: Bug reports, ideas, patches etc.
184@end menu 186@end menu
185 187
186@node Summary, Installation and Activation, Introduction, Introduction 188@node Summary, Installation and Activation, Introduction, Introduction
@@ -198,7 +200,7 @@ help to work with the tree. Tables are easily created with a built-in
198table editor. Org-mode supports ToDo items, deadlines, time stamps, 200table editor. Org-mode supports ToDo items, deadlines, time stamps,
199and scheduling. It dynamically compiles entries into an agenda that 201and scheduling. It dynamically compiles entries into an agenda that
200utilizes and smoothly integrates much of the Emacs calendar and diary. 202utilizes and smoothly integrates much of the Emacs calendar and diary.
201Plain text URL-like links connect to websites, emails, usenet 203Plain text URL-like links connect to websites, emails, Usenet
202messages, BBDB entries, and any files related to the projects. For 204messages, BBDB entries, and any files related to the projects. For
203printing and sharing of notes, an Org-mode file can be exported as a 205printing and sharing of notes, an Org-mode file can be exported as a
204structured ASCII file, or as HTML. 206structured ASCII file, or as HTML.
@@ -715,10 +717,19 @@ above.
715@cindex calculations, in tables 717@cindex calculations, in tables
716@kindex C-c = 718@kindex C-c =
717@item C-c = 719@item C-c =
718Replace current field with the result of a formula. When called with a 720Install a new formula for the current column and replace current field
719@kbd{C-u} prefix, apply the equation in the current field and down 721with the result of the formula.
720through the current column to a horizonal separator line or the end of 722
721the table. For details, see @ref{Table calculations}. 723@kindex C-u C-c =
724@item C-u C-c =
725Install a new formula for the current field, which must be a named
726field. Evaluate the formula and replace the field content with the
727result.
728
729@kindex C-c '
730@item C-c '
731Edit all formulas associated with the current table in a separate
732buffer.
722 733
723@kindex C-c * 734@kindex C-c *
724@item C-c * 735@item C-c *
@@ -729,9 +740,9 @@ first horizontal separator line). For details, see @ref{Table calculations}.
729 740
730@kindex C-# 741@kindex C-#
731@item C-# 742@item C-#
732Rotate the recalculation mark in first column through the states 743Rotate the calculation mark in first column through the states
733@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of 744@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
734these marks see @ref{Table calculations}. When there is an active 745these marks see @ref{Advanced features}. When there is an active
735region, change all marks in the region. 746region, change all marks in the region.
736 747
737@kindex C-c ? 748@kindex C-c ?
@@ -791,36 +802,58 @@ it off with
791@section Calculations in tables 802@section Calculations in tables
792@cindex calculations, in tables 803@cindex calculations, in tables
793 804
794While the Org-mode table editor misses many features of a full 805The table editor has some spreadsheet-like capabilities. The Emacs
795spreadsheet, it nevertheless has very useful capabilities to compute 806@file{calc} package is required for this feature to work. There are
796fields. In horizontal direction, it can use complex expressions to 807basically two levels of complexity for table calculations in Org-mode.
797compute a field from other fields @emph{in the same row}, using named 808On the basic level, tables do only horizontal computations, so a field
798columns, constants and parameters. The Emacs @file{calc} package is 809can be computed from other fields @emph{in the same row}, and Org-mode
799required for this feature to work. In vertical direction, only 810assumes that there is only one formula for each column. This is very
800summing is supported. 811efficient to work with and enough for many tasks. On the complex
812level, columns and individual fields can be named for easier
813referencing in formulas, individual named fields can have their own
814formula associated with them, and recalculation can be automated.
801 815
802@menu 816@menu
803* Formula syntax:: How to write a formula 817* Formula syntax:: How to write a formula
804* Applying a formula:: How to get a formula executed 818* Column formulas:: Formulas valid for all fields in a column
805* Recalculation:: Re-applying all formulas in a table 819* Advanced features:: Field names, parameters and automatic recalc
806* Summing:: Summing columns and rows 820* Named-field formulas:: Formulas valid in single fields
821* Editing/debugging formulas:: Changing a stored formula
822* Appetizer:: Taste the power of calc
807@end menu 823@end menu
808 824
809@node Formula syntax, Applying a formula, Table calculations, Table calculations 825@node Formula syntax, Column formulas, Table calculations, Table calculations
810@subsection Formula syntax 826@subsection Formula syntax
811 827
812A formula for horizontal computations can be any algebraic expression 828A formula can be any algebraic expression understood by the Emacs
813understood by the Emacs @file{calc} package. Before evaluation, 829@file{calc} package. Before evaluation by @code{calc-eval}
814variable substitution takes place: @samp{$} is replaced by the field 830(@pxref{Calling Calc from Your Lisp Programs,calc-eval,Calling calc
815the cursor is currently in, and $1..$n reference the fields in the 831from Your Lisp Programs,calc,GNU Emacs Calc Manual}), variable
816current row. @samp{$name} is interpreted as the name of a column, 832substitution takes place:
817parameter or constant. Constants are defined globally through the 833
818variable @code{org-table-formula-constants}. If you have the 834@example
835 $ @r{refers to the current field}
836 $3 @r{refers to the field in column 3 of the current row}
837 $3..$7 @r{a vector of the fields in columns 3-7 of current row}
838 $P1..$P3 @r{vector of column range, using column names}
839 &2 @r{second data field above the current, in same column}
840 &5-2 @r{vector from fifth to second field above current}
841 &III-II @r{vector of fields between 2nd and 3rd hline above}
842 &III @r{vector of fields between third hline above and current field}
843 $name @r{a named field, parameter or constant}
844@end example
845
846The range vectors can be directly fed into the calc vector functions
847like functions @samp{vmean} and @samp{vsum}.
848
849@samp{$name} is interpreted as the name of a column, parameter or
850constant. Constants are defined globally through the variable
851@code{org-table-formula-constants}. If you have the
819@file{constants.el} package, it will also be used to resolve 852@file{constants.el} package, it will also be used to resolve
820constants, including natural constants like @samp{$k} for Plancks 853constants, including natural constants like @samp{$k} for Planck's
821constant, units like @samp{$km} for kilometers. Column names and 854constant, units like @samp{$km} for kilometers. Column names and
822parameters can be specified in special table lines. These are 855parameters can be specified in special table lines. These are
823described below, see @ref{Recalculation}. 856described below, see @ref{Advanced features}.
824 857
825A formula can contain an optional mode string after a semicolon. This 858A formula can contain an optional mode string after a semicolon. This
826string consists of flags to influence calc's modes@footnote{By 859string consists of flags to influence calc's modes@footnote{By
@@ -833,66 +866,65 @@ switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
833@samp{e2} or @samp{f4} to switch to normal, scientific, engineering, 866@samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
834or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F}, 867or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
835and @samp{S} to turn on degrees, radians, fraction and symbolic modes, 868and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
836respectively. In addition, you may provide a @code{printf} specifier 869respectively. In addition, you may provide a @code{printf} format
837to reformat the final result. A few examples: 870specifier to reformat the final result. A few examples:
838@example 871@example
839 $1+$2 @r{Sum of first and second field} 872 $1+$2 @r{Sum of first and second field}
840 $1+$2;%.2f @r{Same, format result to two decimals} 873 $1+$2;%.2f @r{Same, format result to two decimals}
841 exp($2)+exp($1) @r{Math functions can be used} 874 exp($2)+exp($1) @r{Math functions can be used}
842 $;%.1f @r{Reformat current cell to 1 decimal} 875 $;%.1f @r{Reformat current cell to 1 decimal}
843 ($3-32)*5/9 @r{degrees F -> C conversion} 876 ($3-32)*5/9 @r{Degrees F -> C conversion}
844 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}} 877 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
845 tan($1);Dp3s1 @r{compute in degrees, precision 3, display SCI 1} 878 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
846 vmean($2..$7) @r{compute column range mean, using vector function} 879 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
880 vmean($2..$7) @r{Compute column range mean, using vector function}
881 vsum(&III) @r{Sum numbers from 3rd hline above to here}
847 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree} 882 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
848@end example 883@end example
849 884
850@node Applying a formula, Recalculation, Formula syntax, Table calculations 885@node Column formulas, Advanced features, Formula syntax, Table calculations
851@subsection Applying a formula 886@subsection Column formulas
852 887
853To apply a formula to a field, type it directly into the field, 888To apply a formula to a field, type it directly into the field,
854preceded by an equal sign, like @samp{=$1+$2}. When you press 889preceded by an equal sign, like @samp{=$1+$2}. When you press
855@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the 890@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
856field, the formula will be evaluated and replaced with the result. If 891field, the formula will be stored as the formula for the current
857the field contains only @samp{=}, the formula most recently applied 892column, evaluated and the current field replaced with the result. If
858anywhere in the @emph{same column} will be used. 893the field contains only @samp{=}, the previously stored formula for
894this column is used.
859 895
860For each column, Org-mode will remember the most recently used 896For each column, Org-mode will remember the most recently used
861formula. The information is stored in a special line directly below 897formula. The information is stored in a special line starting with
862the table. When adding/deleting/moving columns with the appropriate 898@samp{#+TBLFM} directly below the table. When adding/deleting/moving
863commands, the stored equations will be modified accordingly. When a 899columns with the appropriate commands, the stored equations will be
864column used in a calculation is removed, references to this column 900modified accordingly. When a column used in a calculation is removed,
865become invalid and will cause an error upon applying the equation. 901references to this column become invalid and will cause an error upon
902applying the equation.
866 903
867Instead of typing an equation into the field, you may also use the 904Instead of typing an equation into the field, you may also use the
868command @kbd{C-c =}. It prompts for a formula (with default taken 905command @kbd{C-c =}. It prompts for a formula (with default taken
869from the @samp{#+TBLFM:} line) and applies it to the current field. 906from the @samp{#+TBLFM:} line) and applies it to the current field. A
870If you use a prefix argument (i.e. @kbd{C-u C-c =}), the formula will 907numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
871be applied to the current field and down to the next separator line 908subsequent fields in the current column.
872or the end of the table. A numerical prefix will apply it to that
873many fields in the current column.
874
875When the evaluation of a formula leads to an error, the field content
876becomes the string @samp{#ERROR}. If you would like see what is going
877on during variable substitution and calculation in order to find a
878bug, turn on formula debugging in the menu and repeat the calculation
879by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
880Detailed information will be displayed.
881
882@node Recalculation, Summing, Applying a formula, Table calculations
883@subsection Recalculation
884 909
885To recompute all the fields in a line, use the command @kbd{C-c *}. 910To recompute all the fields in a line, use the command @kbd{C-c *}.
886It re-applies all stored equations to the current row, from left to 911It re-applies all stored equations to the current row, from left to
887right. With a @kbd{C-u} prefix, this will be done to every line in 912right. With a @kbd{C-u} prefix, this will be done to every line in
888the table, so use this command it you want to make sure the entire 913the table, so use this command it you want to make sure the entire
889table is up-to-date. A more automatic way of recalculating the 914table is up-to-date. @kbd{C-u C-c C-c} is another way to update the
890current line requires marking the line: If the first column of a row 915entire table. Global updating does not touch the line(s) above the
891contains only @samp{#}, the row will be re-computed with every 916first horizontal separator line, assuming that this is the table
892@key{TAB}, @key{RET}, and @kbd{C-c C-c} in this row. Here is an 917header.
893example of a table that collects exam results of students, with some 918
894rows activated for semi-automatic computations. 919@node Advanced features, Named-field formulas, Column formulas, Table calculations
895 920@subsection Advanced features
921
922If you want want the recalculation of fields to happen automatically,
923or if you want to be able to assign a formula to an individual field
924(instead of an entire column) you need to reserve the first column of
925the table for special marking characters. Here is an example of a
926table that collects exam results of students and makes use of these
927features:
896@example 928@example
897@group 929@group
898|---+---------+--------+--------+--------+-------+------| 930|---+---------+--------+--------+--------+-------+------|
@@ -903,50 +935,112 @@ rows activated for semi-automatic computations.
903| ^ | | m1 | m2 | m3 | mt | | 935| ^ | | m1 | m2 | m3 | mt | |
904|---+---------+--------+--------+--------+-------+------| 936|---+---------+--------+--------+--------+-------+------|
905| # | Peter | 10 | 8 | 23 | 41 | 8.2 | 937| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
906| # | Sara | 7 | 14 | 19 | 40 | 8.0 | 938| # | Sara | 6 | 14 | 19 | 39 | 7.8 |
907| # | Sam | 2 | 4 | 3 | 9 | 1.8 | 939| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
908|---+---------+--------+--------+--------+-------+------| 940|---+---------+--------+--------+--------+-------+------|
941| | Average | | | | 29.7 | |
942| ^ | | | | | at | |
909| $ | max=50 | | | | | | 943| $ | max=50 | | | | | |
910|---+---------+--------+--------+--------+-------+------| 944|---+---------+--------+--------+--------+-------+------|
911#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f 945#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
912@end group 946@end group
913@end example 947@end example
914@noindent
915The example also demonstrates a number of features:
916@enumerate
917@item
918If the first field of a row contains only @samp{!}, this row defines
919@emph{names} for the different columns so that you can write
920@samp{$Tot} instead of @samp{$6} --- useful in larger tables,
921when counting columns becomes error prone.
922@item
923If the first field of a row contains only @samp{$}, fields in this row
924can define @emph{parameters} for formulas. For example, if a field in
925a @samp{$} row contains @samp{max=50}, then formulas in this table can
926refer to the value 50 using @samp{$max}. Parameters work exactly like
927constants, only that they can be defined on a per-table basis.
928Changing a parameter and then recalculating the table can be useful
929and fun.
930@item
931It the first field contains only @samp{^}, fields in this row define
932names for the fields in the row above, for example @samp{$m1} for
933@samp{10}. Similarly, if the marking character is @samp{_}, the names
934are valie for the fields in the row below.
935@item
936A column range @samp{$P1..$P3} is expanded to a vector, so that calc's
937vector functions (in this case @samp{vsum}, but there are many more)
938can be applied to ranges. For a range, columns may be referenced by
939name or number, in either sequence.
940@end enumerate
941 948
942@noindent If a table contains any line with @samp{#} as the 949@noindent @b{Important}: Please note that for these special tables,
943first field, @kbd{C-u C-c *} will only change the marked lines and 950recalculating the table with @kbd{C-u C-c *} does only affect rows
944leave all unmarked lines alone. You can also mark a line with 951which are marked @samp{#} or @samp{*}, and named fields. The column
945@samp{*}. These lines will also be recalculated with @kbd{C-u C-c *}, 952formulas are not applied in rows with empty first field.
946but not upon @key{TAB} and @key{RET}. Use this for lines which are 953
947slow to calculate. 954The marking characters have the following meaning:
955@table @samp
956@item !
957The fields in this line define names for the columns, so that you may
958refer to a column as @samp{$Tot} instead of @samp{$6}.
959@item ^
960This row define names for the fields @emph{above} the row. With such
961a definition, any formula in the table may use @samp{$m1} to refer to
962the value @samp{10}. Also, named fields can have their own formula
963associated with them.
964@item _
965Similar to @samp{^}, but defines names for the fields in the row
966@emph{below}.
967@item $
968Fields in this row can define @emph{parameters} for formulas. For
969example, if a field in a @samp{$} row contains @samp{max=50}, then
970formulas in this table can refer to the value 50 using @samp{$max}.
971Parameters work exactly like constants, only that they can be defined on
972a per-table basis. Changing a parameter and then recalculating the
973table can be useful.
974@item #
975Fields in this row are automatically recalculated when pressing
976@key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
977is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
978lines will be left alone by this command.
979@item *
980Selects this line for global recalculation with @kbd{C-u C-c *}, but
981not for automatic recalculation. Use this when automatic
982recalculation slows down editing too much.
983@item
984Unmarked lines are exempted from recalculation with @kbd{C-u C-c *}.
985All lines that should be recalculated should be marked with @samp{#}
986or @samp{*}.
987@end table
988
989@node Named-field formulas, Editing/debugging formulas, Advanced features, Table calculations
990@subsection Named-field formulas
948 991
949Just to wet your appetite on what can be done with the fantastic 992A named field can have its own formula associated with it. In the
993example above, this is used for the @samp{at} field that contains
994the average result of the students. To enter a formula for a named
995field, just type it onto the buffer, preceded by @samp{:=}. Or use
996@kbd{C-u C-c =}. This equation will be stored below the table like
997@samp{$name=...}. Any recalculation in the table (even if only
998requested for the current line) will also update all named field
999formulas.
1000
1001@node Editing/debugging formulas, Appetizer, Named-field formulas, Table calculations
1002@subsection Editing and debugging formulas
1003
1004To edit a column or field formula, you can use the commands @kbd{C-c
1005=} and @kbd{C-u C-c =}, respectively. The currently active expression
1006is then presented as default in the minibuffer, were it may be edited.
1007
1008Note that making a table field blank does not remove the formula
1009associated with the field - during the next recalculation the field
1010will be filled again. To remove a formula from a field, you have to
1011give an empty reply when prompted for the formula, or to edit the
1012@samp{#+TBLFM} line.
1013
1014@kindex C-c C-c
1015You may edit the @samp{#+TBLFM} directly and re-apply
1016the changed equations with @kbd{C-c C-c} in that line, or with the
1017normal recalculation commands in the table.
1018
1019@kindex C-c '
1020@kindex C-c C-c
1021@kindex C-c C-q
1022@kindex C-c ?
1023In particular for large tables with many formulas, it is convenient to
1024use the command @kbd{C-c '} to edit the formulas of the current table
1025in a separate buffer. That buffer will show the formulas one per
1026line, and you are free to edit, add and remove formulas. Press
1027@kbd{C-c ?} on a @samp{$...} expression to get information about its
1028interpretation. Exiting the buffer with @kbd{C-c C-c} only stores the
1029modified formulas below the table. Exiting with @kbd{C-u C-c C-c}
1030also applies them to the entire table. @kbd{C-c C-q} exits without
1031installing the changes.
1032
1033When the evaluation of a formula leads to an error, the field content
1034becomes the string @samp{#ERROR}. If you would like see what is going
1035on during variable substitution and calculation in order to find a
1036bug, turn on formula debugging in the menu and repeat the calculation
1037by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
1038Detailed information will be displayed.
1039
1040@node Appetizer, , Editing/debugging formulas, Table calculations
1041@subsection Appetizer
1042
1043Finally, just to wet your appetite on what can be done with the fantastic
950@file{calc} package, here is a table that computes the Taylor series 1044@file{calc} package, here is a table that computes the Taylor series
951for a couple of functions (homework: try that with Excel :-) 1045for a couple of functions (homework: try that with Excel :-)
952 1046
@@ -966,22 +1060,6 @@ for a couple of functions (homework: try that with Excel :-)
966@end group 1060@end group
967@end example 1061@end example
968 1062
969@node Summing, , Recalculation, Table calculations
970@subsection Summing
971
972Finally, when typing a formula into a field, a number of special
973keywords execute predefined sums over the current row or column and
974enter the result into the current field. These calculations are
975one-off, the formula is not stored, and you will neet to re-enter it
976in order to compute again.
977
978@example
979= @r{Execute the stored formula valid in this column.}
980=sum @r{Sum all fields above the current (alias @code{=sumv}).}
981=sumh @r{Sum all fields to the left of the current field.}
982=sum3 @r{Same as @samp{=sum}, but use just 3 fields above current.}
983@end example
984
985@node orgtbl-mode, table.el, Table calculations, Tables 1063@node orgtbl-mode, table.el, Table calculations, Tables
986@section The Orgtbl minor mode 1064@section The Orgtbl minor mode
987@cindex orgtbl-mode 1065@cindex orgtbl-mode
@@ -1029,7 +1107,7 @@ possible.
1029@chapter Hyperlinks 1107@chapter Hyperlinks
1030@cindex hyperlinks 1108@cindex hyperlinks
1031 1109
1032Just like HMTL, Org-mode provides links to other files, usenet 1110Just like HMTL, Org-mode provides links to other files, Usenet
1033articles, emails and much more. 1111articles, emails and much more.
1034 1112
1035@menu 1113@menu
@@ -1050,7 +1128,7 @@ articles, emails and much more.
1050@cindex USENET links 1128@cindex USENET links
1051@cindex SHELL links 1129@cindex SHELL links
1052 1130
1053Org-mode supports links to files, websites, usenet and email messages; 1131Org-mode supports links to files, websites, Usenet and email messages;
1054and BBDB database entries. Links are just plain-text URL-like 1132and BBDB database entries. Links are just plain-text URL-like
1055locators, optionally enclosed by angular brackets. The following list 1133locators, optionally enclosed by angular brackets. The following list
1056shows examples for each link type. 1134shows examples for each link type.
@@ -1142,13 +1220,14 @@ the @emph{Remember} package by John Wiegley. @emph{Remember} lets you
1142store quick notes with little interruption of your work flow. See 1220store quick notes with little interruption of your work flow. See
1143@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more 1221@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
1144information. The notes produced by @emph{Remember} can be stored in 1222information. The notes produced by @emph{Remember} can be stored in
1145different ways, and Org-mode files are a good target. 1223different ways, and Org-mode files are a good target. Org-mode allows
1146Org-mode allows to file away notes either to a default file, or 1224to file away notes either to a default file, or directly to the
1147directly to the correct location in your Org-mode outline tree. The 1225correct location in your Org-mode outline tree. The following
1148following customization will tell @emph{Remember} to use org files as 1226customization@footnote{The two autoload forms are only necessary if
1149target, and to create annotations compatible with Org-mode links. 1227@file{org.el} is not part of the Emacs distribution or and XEmacs
1228package.} will tell @emph{Remember} to use org files as target, and to
1229create annotations compatible with Org-mode links.
1150 1230
1151@c FIXME: The autoload will not be necessary when Org-mode is part of Emacs
1152@example 1231@example
1153(autoload 'org-remember-annotation "org") 1232(autoload 'org-remember-annotation "org")
1154(autoload 'org-remember-handler "org") 1233(autoload 'org-remember-handler "org")
@@ -2233,7 +2312,6 @@ Toggle the COMMENT keyword at the beginning of an entry.
2233@cindex completion, of TODO keywords 2312@cindex completion, of TODO keywords
2234@cindex completion, of dictionary words 2313@cindex completion, of dictionary words
2235@cindex completion, of option keywords 2314@cindex completion, of option keywords
2236@cindex completion, of keyword formulas
2237 2315
2238Org-mode supports in-buffer completion. This type of completion does 2316Org-mode supports in-buffer completion. This type of completion does
2239not make use of the minibuffer. You simply type a few letters into 2317not make use of the minibuffer. You simply type a few letters into
@@ -2254,8 +2332,6 @@ After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
2254option keyword is already complete, pressing @kbd{M-@key{TAB}} again 2332option keyword is already complete, pressing @kbd{M-@key{TAB}} again
2255will insert example settings for this keyword. 2333will insert example settings for this keyword.
2256@item 2334@item
2257After @samp{=}, complete keyword formulas for tables.
2258@item
2259Elsewhere, complete dictionary words using ispell. 2335Elsewhere, complete dictionary words using ispell.
2260@end itemize 2336@end itemize
2261@end table 2337@end table
@@ -2376,7 +2452,7 @@ checks for the availability of calc by looking for the function
2376been installed properly. As of Emacs 22, calc is part of the Emacs 2452been installed properly. As of Emacs 22, calc is part of the Emacs
2377distribution. Another possibility for interaction between the two 2453distribution. Another possibility for interaction between the two
2378packages is using calc for embedded calculations. @xref{Embedded Mode, 2454packages is using calc for embedded calculations. @xref{Embedded Mode,
2379, Embedded Mode, calc, The calc maanual}. 2455, Embedded Mode, calc, GNU Emacs Calc Manual}.
2380@cindex @file{constants.el} 2456@cindex @file{constants.el}
2381@item @file{constants.el} by Carsten Dominik 2457@item @file{constants.el} by Carsten Dominik
2382In a table formula (@pxref{Table calculations}), it is possible to use 2458In a table formula (@pxref{Table calculations}), it is possible to use
@@ -2431,7 +2507,7 @@ have found too hard to fix.
2431@item 2507@item
2432If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the 2508If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
2433filling is correctly disabled. However, if some text directly 2509filling is correctly disabled. However, if some text directly
2434(without an empty line in between) preceeds or follows a table, calling 2510(without an empty line in between) precedes or follows a table, calling
2435@code{fill-paragraph} in that text will also fill the table like 2511@code{fill-paragraph} in that text will also fill the table like
2436normal text. Also, @code{fill-region} does bypass the 2512normal text. Also, @code{fill-region} does bypass the
2437@code{fill-paragraph} code and will fill tables like normal text. 2513@code{fill-paragraph} code and will fill tables like normal text.
@@ -2490,7 +2566,8 @@ beta testing and contributed a number of very useful ideas.
2490Christian Schlauer proposed angular brackets around links, among other 2566Christian Schlauer proposed angular brackets around links, among other
2491things. 2567things.
2492@item 2568@item
2493David Wainberg suggested to implement an archiving mechanism. 2569David Wainberg suggested to implement an archiving mechanism and helped
2570testing.
2494@item 2571@item
2495Linking to VM/BBDB/GNUS was inspired by Tom Shannon's 2572Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
2496@file{organizer-mode.el}. 2573@file{organizer-mode.el}.
diff --git a/man/sc.texi b/man/sc.texi
index 11ae3d139ce..95ce7f9e5d1 100644
--- a/man/sc.texi
+++ b/man/sc.texi
@@ -948,7 +948,7 @@ to:
948(setq mail-citation-hook 'sc-cite-original) 948(setq mail-citation-hook 'sc-cite-original)
949@end example 949@end example
950 950
951Note the lack of of a single quote on the first argument to @code{setq}. 951Note the lack of a single quote on the first argument to @code{setq}.
952 952
953@node MH-E with any Emacsen, VM with any Emacsen, Emacs 18 MUAs, Getting Connected 953@node MH-E with any Emacsen, VM with any Emacsen, Emacs 18 MUAs, Getting Connected
954@comment node-name, next, previous, up 954@comment node-name, next, previous, up
diff --git a/man/speedbar.texi b/man/speedbar.texi
index 40296f57082..3fea2c33c3d 100644
--- a/man/speedbar.texi
+++ b/man/speedbar.texi
@@ -68,7 +68,7 @@ authors of other packages to provide speedbar summaries customized to
68the needs of that mode. 68the needs of that mode.
69 69
70Throughout this manual, activities are defined as `clicking on', or 70Throughout this manual, activities are defined as `clicking on', or
71`expanding' items. Clicking means using using @kbd{Mouse-2} on a 71`expanding' items. Clicking means using @kbd{Mouse-2} on a
72button. Expanding refers to clicking on an expansion button to display 72button. Expanding refers to clicking on an expansion button to display
73an expanded summary of the entry the expansion button is 73an expanded summary of the entry the expansion button is
74on. @xref{Basic Navigation}. 74on. @xref{Basic Navigation}.
diff --git a/man/text.texi b/man/text.texi
index 13510deda6c..89fb79eece1 100644
--- a/man/text.texi
+++ b/man/text.texi
@@ -2664,7 +2664,7 @@ recognition commands (@pxref{Table Recognition}) are equipped with a
2664convenience feature (turned on by default). During table recognition, 2664convenience feature (turned on by default). During table recognition,
2665the contents of a cell are examined to determine which justification 2665the contents of a cell are examined to determine which justification
2666was originally applied to the cell and then applies this justification 2666was originally applied to the cell and then applies this justification
2667to the the cell. This is a speculative algorithm and is therefore not 2667to the cell. This is a speculative algorithm and is therefore not
2668perfect, however, the justification is deduced correctly most of the 2668perfect, however, the justification is deduced correctly most of the
2669time. If you desire to disable this feature, customize the variable 2669time. If you desire to disable this feature, customize the variable
2670@code{table-detect-cell-alignment} to set it to @code{nil}. 2670@code{table-detect-cell-alignment} to set it to @code{nil}.
diff --git a/man/trouble.texi b/man/trouble.texi
index e7534ed2560..1cd3aa4db12 100644
--- a/man/trouble.texi
+++ b/man/trouble.texi
@@ -368,7 +368,7 @@ available. For each buffer, it lists a buffer number. To save a
368buffer, use @code{ysave-buffer}; you specify the buffer number, and 368buffer, use @code{ysave-buffer}; you specify the buffer number, and
369the file name to write that buffer into. You should use a file name 369the file name to write that buffer into. You should use a file name
370which does not already exist; if the file does exist, the script does 370which does not already exist; if the file does exist, the script does
371not make make a backup of its old contents. 371not make a backup of its old contents.
372 372
373@node Emergency Escape 373@node Emergency Escape
374@subsection Emergency Escape 374@subsection Emergency Escape
diff --git a/man/url.texi b/man/url.texi
index cccd79a0e7e..47b4c4305a9 100644
--- a/man/url.texi
+++ b/man/url.texi
@@ -1065,7 +1065,7 @@ accessed at the given @var{time}.
1065 1065
1066@defopt url-history-track 1066@defopt url-history-track
1067If non-@code{nil}, the library will keep track of all the URLs 1067If non-@code{nil}, the library will keep track of all the URLs
1068accessed. If is is @code{t}, the list is saved to disk at the end of 1068accessed. If it is @code{t}, the list is saved to disk at the end of
1069each Emacs session. The default is @code{nil}. 1069each Emacs session. The default is @code{nil}.
1070@end defopt 1070@end defopt
1071 1071
diff --git a/man/xresources.texi b/man/xresources.texi
index b5090afd260..7f7d9aaf82c 100644
--- a/man/xresources.texi
+++ b/man/xresources.texi
@@ -932,7 +932,7 @@ This is the color for editable text. In Emacs, this color is used for the
932text fields in the file dialog. 932text fields in the file dialog.
933 933
934@item font_name = "@var{font}" 934@item font_name = "@var{font}"
935This specifies the the font for text in the widget. @var{font} is a 935This specifies the font for text in the widget. @var{font} is a
936Pango font name, for example @samp{Sans Italic 10}, @samp{Helvetica 936Pango font name, for example @samp{Sans Italic 10}, @samp{Helvetica
937Bold 12}, @samp{Courier 14}, @samp{Times 18}. See below for exact 937Bold 12}, @samp{Courier 14}, @samp{Times 18}. See below for exact
938syntax. The names are case insensitive. 938syntax. The names are case insensitive.
diff --git a/nt/ChangeLog b/nt/ChangeLog
index c95fd78ab7d..3d846d9f837 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,8 @@
12005-07-16 Eli Zaretskii <eliz@gnu.org>
2
3 * configure.bat: Finish config.log with a line that indicates that
4 the configure step was successful.
5
12005-07-04 Lute Kamstra <lute@gnu.org> 62005-07-04 Lute Kamstra <lute@gnu.org>
2 7
3 Update FSF's address in GPL notices. 8 Update FSF's address in GPL notices.
diff --git a/nt/configure.bat b/nt/configure.bat
index 6a44a3b82c4..bf78ed52bbe 100755
--- a/nt/configure.bat
+++ b/nt/configure.bat
@@ -513,6 +513,7 @@ if not exist ..\site-lisp\subdirs.el copy subdirs.el ..\site-lisp\subdirs.el
513 513
514echo. 514echo.
515echo Emacs successfully configured. 515echo Emacs successfully configured.
516echo Emacs successfully configured. >>config.log
516echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install. 517echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.
517goto end 518goto end
518 519
diff --git a/src/.gdbinit b/src/.gdbinit
index 68042505ed5..95ea18f7136 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -129,20 +129,24 @@ define pitx
129 end 129 end
130 if ($it->what == IT_CHARACTER) 130 if ($it->what == IT_CHARACTER)
131 if ($it->len == 1 && $it->c >= ' ' && it->c < 255) 131 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
132 printf "ch='%c'", $it->c 132 printf " ch='%c'", $it->c
133 else 133 else
134 printf "ch=[%d,%d]", $it->c, $it->len 134 printf " ch=[%d,%d]", $it->c, $it->len
135 end 135 end
136 else 136 else
137 if ($it->what == IT_IMAGE) 137 if ($it->what == IT_IMAGE)
138 printf "IMAGE=%d", $it->image_id 138 printf " IMAGE=%d", $it->image_id
139 else 139 else
140 printf " "
140 output $it->what 141 output $it->what
141 end 142 end
142 end 143 end
143 if ($it->method != GET_FROM_BUFFER) 144 if ($it->method != GET_FROM_BUFFER)
144 printf " next=" 145 printf " next="
145 output $it->method 146 output $it->method
147 if ($it->method == GET_FROM_STRING)
148 printf "[%d]", $it->current.string_pos.charpos
149 end
146 end 150 end
147 printf "\n" 151 printf "\n"
148 if ($it->region_beg_charpos >= 0) 152 if ($it->region_beg_charpos >= 0)
diff --git a/src/ChangeLog b/src/ChangeLog
index f3f865612f6..5f04eec4768 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,164 @@
12005-07-21 Juanma Barranquero <lekktu@gmail.com>
2
3 * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
4
5 * ccl.c (Fregister_ccl_program): Fix typos in docstring.
6 (Fccl_execute_on_string): Likewise; add usage info.
7
8 * composite.c (Fcompose_region_internal)
9 (Fcompose_string_internal):
10 Improve argument/docstring consistency.
11
12 * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer):
13 Fix typos in docstrings.
14
15 * textprop.c (Fnext_char_property_change)
16 (Fprevious_char_property_change): Doc fixes.
17
18 * window.c (Fset_window_margins, Fset_window_fringes):
19 Improve argument/docstring consistency.
20
21 * xfaces.c (Finternal_lisp_face_p): Doc fix.
22
232005-07-21 Andreas Schwab <schwab@suse.de>
24
25 * eval.c (restore_stack_limits): Return a value.
26
272005-07-20 Juanma Barranquero <lekktu@gmail.com>
28
29 * eval.c (Fdefvar): Doc fix.
30
312005-07-20 Kim F. Storm <storm@cua.dk>
32
33 * fileio.c (Fdo_auto_save, do_auto_save_unwind):
34 Use make_save_value to unwind protect stream.
35
36 * lread.c (Fload, load_unwind):
37 Use make_save_value to unwind protect stream.
38
392005-07-19 Juanma Barranquero <lekktu@gmail.com>
40
41 * eval.c (Fprog2, Fcalled_interactively_p),
42 (syms_of_eval) <debug-on-quit>: Doc fixes.
43 (syms_of_eval) <max-specpdl-size>:
44 (Finteractive_p): Fix typos in docstrings.
45
462005-07-19 Kim F. Storm <storm@cua.dk>
47
48 * w32fns.c (Vx_hand_shape): Variable removed.
49 (syms_of_w32fns): Intern and staticpro Qw32_charset_default.
50
512005-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
52
53 * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c).
54
552005-07-18 Kim F. Storm <storm@cua.dk>
56
57 * frame.h (struct frame): New member already_hscrolled_p.
58
59 * xdisp.c (redisplay_internal): Only try to hscroll each frame once
60 to avoid redisplay looping hscrolling back and forth ad infinitum.
61
622005-07-18 Juri Linkov <juri@jurta.org>
63
64 * buffer.c (scroll-up-aggressively, scroll-down-aggressively):
65 * keymap.c (Fminor_mode_key_binding):
66 * macterm.c (mac-emulate-three-button-mouse):
67 Delete duplicate duplicate words.
68
692005-07-18 Ken Raeburn <raeburn@gnu.org>
70
71 * minibuf.c (Ftest_completion): Fix odd syntax in test.
72
732005-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
74
75 * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground.
76
77 * macgui.h (struct _XGC): New struct.
78 (GC): Use it.
79 (GCForeground, GCBackground, GCFont): Use X11 mask values.
80 (XCreateGC, XParseGeometry): Move externs to macterm.h.
81
82 * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations.
83 (XSetFont): Add declaration.
84 (mac_set_forecolor, mac_set_backcolor, mac_set_colors):
85 Remove functions.
86 (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC):
87 New defines.
88 (XDrawLine, mac_draw_line_to_pixmap, XClearWindow)
89 (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle)
90 (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area):
91 Use them.
92 (mac_erase_rectangle): New function.
93 (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect)
94 (x_draw_stretch_glyph_string): Use it.
95 (XChangeGC, XCreateGC, XGetGCValues, XSetForeground)
96 (XSetBackground, XSetFont): Adjust for new GC implementation.
97 (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors.
98 (XTset_vertical_scroll_bar): Clear area under scroll bar.
99
100 * macterm.h (struct mac_display_info): Change types of
101 scratch_cursor_gc black_relief.gc, and white_relief.gc to GC.
102 (XCreateGC, XParseGeometry): Move externs from macgui.h.
103
104 * xfaces.c [MAC_OS] (XCreateGC): Remove extern.
105
1062005-07-16 Richard M. Stallman <rms@gnu.org>
107
108 * buffer.c (Fmake_overlay): Doc fix.
109
1102005-07-16 Eli Zaretskii <eliz@gnu.org>
111
112 * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow,
113 Vw32_valid_locale_ids, and Vw32_valid_codepages.
114
1152005-07-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
116
117 * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string):
118 Use Fstring_as_unibyte instead of string_make_unibyte.
119
1202005-07-15 Richard M. Stallman <rms@gnu.org>
121
122 * xdisp.c (select_frame_for_redisplay): Use find_symbol_value.
123
1242005-07-15 Kim F. Storm <storm@cua.dk>
125
126 * xdisp.c: Fix redisplay loop in last change.
127 (IT_POS_VALID_AFTER_MOVE_P): New macro.
128 (move_it_vertically_backward, move_it_by_lines): Use it.
129
1302005-07-14 Jason Rumney <jasonr@gnu.org>
131
132 * w32.c (init_environment): Default HOME directory to user's
133 appdata directory if possible.
134
1352005-07-14 Kim F. Storm <storm@cua.dk>
136
137 * .gdbinit (pitx): Fix output format. Print string charpos.
138
139 * lread.c (syms_of_lread): Initialize seen_list.
140
141 * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp.
142
143 * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state.
144 Staticpro re_match_object.
145
1462005-07-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
147
148 * macselect.c (get_scrap_target_type_list): Avoid NULL pointer
149 dereference.
150
151 * macterm.c (mac_window_to_frame): Remove duplicate define.
152
1532005-07-14 Kenichi Handa <handa@m17n.org>
154
155 * coding.c (code_convert_region_unwind): ARG is changed to a cons.
156 (code_convert_region): Adjust for the above change.
157 (set_conversion_work_buffer): If the work buffer is already in
158 use, generate a new buffer and return it. Otherwise return Qnil.
159 (run_pre_post_conversion_on_str): Adjust for the above change.
160 (run_pre_write_conversin_on_c_str): Likewise.
161
12005-07-13 Kim F. Storm <storm@cua.dk> 1622005-07-13 Kim F. Storm <storm@cua.dk>
2 163
3 * xdisp.c (start_display): Don't reseat to next visible line start 164 * xdisp.c (start_display): Don't reseat to next visible line start
@@ -9,7 +170,7 @@
9 count rows moved over when moving to start of current row in case 170 count rows moved over when moving to start of current row in case
10 row starts in middle of a string or image. Also move further 171 row starts in middle of a string or image. Also move further
11 backward if we end up in a string or image. 172 backward if we end up in a string or image.
12 (try_cursor_movement): if overlay string spans multiple lines, 173 (try_cursor_movement): If overlay string spans multiple lines,
13 move backward to set cursor on start of an overlay string. 174 move backward to set cursor on start of an overlay string.
14 (cursor_row_p): Row is ok if cursor is at newline from string, but 175 (cursor_row_p): Row is ok if cursor is at newline from string, but
15 string starts on this line (so we always position cursor at start 176 string starts on this line (so we always position cursor at start
@@ -38,22 +199,22 @@
38 (disable_mouse_highlight): Remove unused variable. 199 (disable_mouse_highlight): Remove unused variable.
39 [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click) 200 [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click)
40 (x_scroll_bar_handle_press, x_scroll_bar_handle_release) 201 (x_scroll_bar_handle_press, x_scroll_bar_handle_release)
41 (x_scroll_bar_handle_drag): Remove argument `timestamp'. All 202 (x_scroll_bar_handle_drag): Remove argument `timestamp'.
42 callers changed. 203 All callers changed.
43 [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set 204 [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set
44 timestamp. 205 timestamp.
45 [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise. 206 [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise.
46 (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar 207 (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar
47 only when its width is less than the height. 208 only when its width is less than the height.
48 (XTredeem_scroll_bar): Sync with xterm.c. 209 (XTredeem_scroll_bar): Sync with xterm.c.
49 (font_name_table, font_name_table_size, font_name_count): Make 210 (font_name_table, font_name_table_size, font_name_count):
50 static. 211 Make static.
51 (drag_and_drop_file_list): Remove variable. Previous use is now 212 (drag_and_drop_file_list): Remove variable. Previous use is now
52 local to function. 213 local to function.
53 (do_ae_open_documents): Move DRAG_N_DROP event construction part 214 (do_ae_open_documents): Move DRAG_N_DROP event construction part
54 from XTread_socket. 215 from XTread_socket.
55 (XTread_socket): Consolidate setting of event timestamp. Move 216 (XTread_socket): Consolidate setting of event timestamp.
56 DRAG_N_DROP event construction part to do_ae_open_documents. 217 Move DRAG_N_DROP event construction part to do_ae_open_documents.
57 Support extra_keyboard_modifiers. 218 Support extra_keyboard_modifiers.
58 219
59 * xfaces.c (try_font_list) [MAC_OS]: Try font family name 220 * xfaces.c (try_font_list) [MAC_OS]: Try font family name
diff --git a/src/buffer.c b/src/buffer.c
index 4001801922f..01be485fcc0 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3573,10 +3573,12 @@ DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 5, 0,
3573 doc: /* Create a new overlay with range BEG to END in BUFFER. 3573 doc: /* Create a new overlay with range BEG to END in BUFFER.
3574If omitted, BUFFER defaults to the current buffer. 3574If omitted, BUFFER defaults to the current buffer.
3575BEG and END may be integers or markers. 3575BEG and END may be integers or markers.
3576The fourth arg FRONT-ADVANCE, if non-nil, makes the 3576The fourth arg FRONT-ADVANCE, if non-nil, makes the marker
3577front delimiter advance when text is inserted there. 3577for the front of the overlay advance when text is inserted there
3578The fifth arg REAR-ADVANCE, if non-nil, makes the 3578(which means the text *is not* included in the overlay).
3579rear delimiter advance when text is inserted there. */) 3579The fifth arg REAR-ADVANCE, if non-nil, makes the marker
3580for the rear of the overlay advance when text is inserted there
3581(which means the text *is* included in the overlay). */)
3580 (beg, end, buffer, front_advance, rear_advance) 3582 (beg, end, buffer, front_advance, rear_advance)
3581 Lisp_Object beg, end, buffer; 3583 Lisp_Object beg, end, buffer;
3582 Lisp_Object front_advance, rear_advance; 3584 Lisp_Object front_advance, rear_advance;
@@ -5743,7 +5745,7 @@ that fraction of the window's height from the bottom of the window.
5743When the value is 0.0, point goes at the bottom line, which in the simple 5745When the value is 0.0, point goes at the bottom line, which in the simple
5744case that you moved off with C-f means scrolling just one line. 1.0 means 5746case that you moved off with C-f means scrolling just one line. 1.0 means
5745point goes at the top, so that in that simple case, the window 5747point goes at the top, so that in that simple case, the window
5746window scrolls by a full window height. Meaningful values are 5748scrolls by a full window height. Meaningful values are
5747between 0.0 and 1.0, inclusive. */); 5749between 0.0 and 1.0, inclusive. */);
5748 5750
5749 DEFVAR_PER_BUFFER ("scroll-down-aggressively", 5751 DEFVAR_PER_BUFFER ("scroll-down-aggressively",
@@ -5756,7 +5758,7 @@ that fraction of the window's height from the top of the window.
5756When the value is 0.0, point goes at the top line, which in the simple 5758When the value is 0.0, point goes at the top line, which in the simple
5757case that you moved off with C-b means scrolling just one line. 1.0 means 5759case that you moved off with C-b means scrolling just one line. 1.0 means
5758point goes at the bottom, so that in that simple case, the window 5760point goes at the bottom, so that in that simple case, the window
5759window scrolls by a full window height. Meaningful values are 5761scrolls by a full window height. Meaningful values are
5760between 0.0 and 1.0, inclusive. */); 5762between 0.0 and 1.0, inclusive. */);
5761 5763
5762/*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol, 5764/*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol,
@@ -5944,15 +5946,15 @@ is a member of the list. */);
5944 doc: /* Cursor to use when this buffer is in the selected window. 5946 doc: /* Cursor to use when this buffer is in the selected window.
5945Values are interpreted as follows: 5947Values are interpreted as follows:
5946 5948
5947 t use the cursor specified for the frame 5949 t use the cursor specified for the frame
5948 nil don't display a cursor 5950 nil don't display a cursor
5949 box display a filled box cursor 5951 box display a filled box cursor
5950 hollow display a hollow box cursor 5952 hollow display a hollow box cursor
5951 bar display a vertical bar cursor with default width 5953 bar display a vertical bar cursor with default width
5952 (bar . WIDTH) display a vertical bar cursor with width WIDTH 5954 (bar . WIDTH) display a vertical bar cursor with width WIDTH
5953 hbar display a horizontal bar cursor with default height 5955 hbar display a horizontal bar cursor with default height
5954 (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT 5956 (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT
5955 ANYTHING ELSE display a hollow box cursor. 5957 ANYTHING ELSE display a hollow box cursor
5956 5958
5957When the buffer is displayed in a nonselected window, 5959When the buffer is displayed in a nonselected window,
5958this variable has no effect; the cursor appears as a hollow box. */); 5960this variable has no effect; the cursor appears as a hollow box. */);
diff --git a/src/buffer.h b/src/buffer.h
index d97640d6cea..12475ce26a8 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1,6 +1,6 @@
1/* Header file for the buffer manipulation primitives. 1/* Header file for the buffer manipulation primitives.
2 Copyright (C) 1985,86,93,94,95,97,98,99,2000,01,03,04 2 Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
3 Free Software Foundation, Inc. 3 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -860,6 +860,7 @@ EXFUN (Fget_file_buffer, 1);
860EXFUN (Fnext_overlay_change, 1); 860EXFUN (Fnext_overlay_change, 1);
861EXFUN (Fdelete_overlay, 1); 861EXFUN (Fdelete_overlay, 1);
862EXFUN (Fbuffer_local_value, 2); 862EXFUN (Fbuffer_local_value, 2);
863EXFUN (Fgenerate_new_buffer_name, 2);
863 864
864/* Functions to call before and after each text change. */ 865/* Functions to call before and after each text change. */
865extern Lisp_Object Vbefore_change_functions; 866extern Lisp_Object Vbefore_change_functions;
diff --git a/src/ccl.c b/src/ccl.c
index 6359e947d27..e827ed7f28d 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -2030,7 +2030,7 @@ DEFUN ("ccl-execute-on-string", Fccl_execute_on_string, Sccl_execute_on_string,
2030 3, 5, 0, 2030 3, 5, 0,
2031 doc: /* Execute CCL-PROGRAM with initial STATUS on STRING. 2031 doc: /* Execute CCL-PROGRAM with initial STATUS on STRING.
2032 2032
2033CCL-PROGRAM is a symbol registered by register-ccl-program, 2033CCL-PROGRAM is a symbol registered by `register-ccl-program',
2034or a compiled code generated by `ccl-compile' (for backward compatibility, 2034or a compiled code generated by `ccl-compile' (for backward compatibility,
2035in this case, the execution is slower). 2035in this case, the execution is slower).
2036 2036
@@ -2051,7 +2051,8 @@ It returns the contents of write buffer as a string,
2051If the optional 5th arg UNIBYTE-P is non-nil, the returned string 2051If the optional 5th arg UNIBYTE-P is non-nil, the returned string
2052is a unibyte string. By default it is a multibyte string. 2052is a unibyte string. By default it is a multibyte string.
2053 2053
2054See the documentation of `define-ccl-program' for the detail of CCL program. */) 2054See the documentation of `define-ccl-program' for the detail of CCL program.
2055usage: (ccl-execute-on-string CCL-PROGRAM STATUS STRING &optional CONTINUE UNIBYTE-P) */)
2055 (ccl_prog, status, str, contin, unibyte_p) 2056 (ccl_prog, status, str, contin, unibyte_p)
2056 Lisp_Object ccl_prog, status, str, contin, unibyte_p; 2057 Lisp_Object ccl_prog, status, str, contin, unibyte_p;
2057{ 2058{
@@ -2177,8 +2178,8 @@ See the documentation of `define-ccl-program' for the detail of CCL program. */
2177 2178
2178DEFUN ("register-ccl-program", Fregister_ccl_program, Sregister_ccl_program, 2179DEFUN ("register-ccl-program", Fregister_ccl_program, Sregister_ccl_program,
2179 2, 2, 0, 2180 2, 2, 0,
2180 doc: /* Register CCL program CCL_PROG as NAME in `ccl-program-table'. 2181 doc: /* Register CCL program CCL-PROG as NAME in `ccl-program-table'.
2181CCL_PROG should be a compiled CCL program (vector), or nil. 2182CCL-PROG should be a compiled CCL program (vector), or nil.
2182If it is nil, just reserve NAME as a CCL program name. 2183If it is nil, just reserve NAME as a CCL program name.
2183Return index number of the registered CCL program. */) 2184Return index number of the registered CCL program. */)
2184 (name, ccl_prog) 2185 (name, ccl_prog)
diff --git a/src/composite.c b/src/composite.c
index 63d54b93a34..1eb0b0212fd 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -628,8 +628,8 @@ DEFUN ("compose-region-internal", Fcompose_region_internal,
628Compose text in the region between START and END. 628Compose text in the region between START and END.
629Optional 3rd and 4th arguments are COMPONENTS and MODIFICATION-FUNC 629Optional 3rd and 4th arguments are COMPONENTS and MODIFICATION-FUNC
630for the composition. See `compose-region' for more detail. */) 630for the composition. See `compose-region' for more detail. */)
631 (start, end, components, mod_func) 631 (start, end, components, modification_func)
632 Lisp_Object start, end, components, mod_func; 632 Lisp_Object start, end, components, modification_func;
633{ 633{
634 validate_region (&start, &end); 634 validate_region (&start, &end);
635 if (!NILP (components) 635 if (!NILP (components)
@@ -638,7 +638,7 @@ for the composition. See `compose-region' for more detail. */)
638 && !STRINGP (components)) 638 && !STRINGP (components))
639 CHECK_VECTOR (components); 639 CHECK_VECTOR (components);
640 640
641 compose_text (XINT (start), XINT (end), components, mod_func, Qnil); 641 compose_text (XINT (start), XINT (end), components, modification_func, Qnil);
642 return Qnil; 642 return Qnil;
643} 643}
644 644
@@ -649,8 +649,8 @@ DEFUN ("compose-string-internal", Fcompose_string_internal,
649Compose text between indices START and END of STRING. 649Compose text between indices START and END of STRING.
650Optional 4th and 5th arguments are COMPONENTS and MODIFICATION-FUNC 650Optional 4th and 5th arguments are COMPONENTS and MODIFICATION-FUNC
651for the composition. See `compose-string' for more detail. */) 651for the composition. See `compose-string' for more detail. */)
652 (string, start, end, components, mod_func) 652 (string, start, end, components, modification_func)
653 Lisp_Object string, start, end, components, mod_func; 653 Lisp_Object string, start, end, components, modification_func;
654{ 654{
655 CHECK_STRING (string); 655 CHECK_STRING (string);
656 CHECK_NUMBER (start); 656 CHECK_NUMBER (start);
@@ -661,7 +661,7 @@ for the composition. See `compose-string' for more detail. */)
661 || XINT (end) > SCHARS (string)) 661 || XINT (end) > SCHARS (string))
662 args_out_of_range (start, end); 662 args_out_of_range (start, end);
663 663
664 compose_text (XINT (start), XINT (end), components, mod_func, string); 664 compose_text (XINT (start), XINT (end), components, modification_func, string);
665 return string; 665 return string;
666} 666}
667 667
diff --git a/src/eval.c b/src/eval.c
index 3b4e9fe0324..26d1ce967a7 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -235,6 +235,7 @@ restore_stack_limits (data)
235{ 235{
236 max_specpdl_size = XINT (XCAR (data)); 236 max_specpdl_size = XINT (XCAR (data));
237 max_lisp_eval_depth = XINT (XCDR (data)); 237 max_lisp_eval_depth = XINT (XCDR (data));
238 return Qnil;
238} 239}
239 240
240/* Call the Lisp debugger, giving it argument ARG. */ 241/* Call the Lisp debugger, giving it argument ARG. */
@@ -471,10 +472,10 @@ usage: (prog1 FIRST BODY...) */)
471} 472}
472 473
473DEFUN ("prog2", Fprog2, Sprog2, 2, UNEVALLED, 0, 474DEFUN ("prog2", Fprog2, Sprog2, 2, UNEVALLED, 0,
474 doc: /* Eval X, Y and BODY sequentially; value from Y. 475 doc: /* Eval FORM1, FORM2 and BODY sequentially; value from FORM2.
475The value of Y is saved during the evaluation of the remaining args, 476The value of FORM2 is saved during the evaluation of the
476whose values are discarded. 477remaining args, whose values are discarded.
477usage: (prog2 X Y BODY...) */) 478usage: (prog2 FORM1 FORM2 BODY...) */)
478 (args) 479 (args)
479 Lisp_Object args; 480 Lisp_Object args;
480{ 481{
@@ -564,8 +565,8 @@ usage: (function ARG) */)
564 565
565DEFUN ("interactive-p", Finteractive_p, Sinteractive_p, 0, 0, 0, 566DEFUN ("interactive-p", Finteractive_p, Sinteractive_p, 0, 0, 0,
566 doc: /* Return t if the function was run directly by user input. 567 doc: /* Return t if the function was run directly by user input.
567This means that the function was called with call-interactively (which 568This means that the function was called with `call-interactively'
568includes being called as the binding of a key) 569\(which includes being called as the binding of a key)
569and input is currently coming from the keyboard (not in keyboard macro), 570and input is currently coming from the keyboard (not in keyboard macro),
570and Emacs is not running in batch mode (`noninteractive' is nil). 571and Emacs is not running in batch mode (`noninteractive' is nil).
571 572
@@ -586,14 +587,14 @@ unconditionally for that argument. (`p' is a good way to do this.) */)
586 587
587 588
588DEFUN ("called-interactively-p", Fcalled_interactively_p, Scalled_interactively_p, 0, 0, 0, 589DEFUN ("called-interactively-p", Fcalled_interactively_p, Scalled_interactively_p, 0, 0, 0,
589 doc: /* Return t if the function using this was called with call-interactively. 590 doc: /* Return t if the function using this was called with `call-interactively'.
590This is used for implementing advice and other function-modifying 591This is used for implementing advice and other function-modifying
591features of Emacs. 592features of Emacs.
592 593
593The cleanest way to test whether your function was called with 594The cleanest way to test whether your function was called with
594`call-interactively', the way to do that is by adding an extra 595`call-interactively' is by adding an extra optional argument,
595optional argument, and making the `interactive' spec specify non-nil 596and making the `interactive' spec specify non-nil unconditionally
596unconditionally for that argument. (`p' is a good way to do this.) */) 597for that argument. (`p' is a good way to do this.) */)
597 () 598 ()
598{ 599{
599 return interactive_p (1) ? Qt : Qnil; 600 return interactive_p (1) ? Qt : Qnil;
@@ -779,7 +780,7 @@ The return value is BASE-VARIABLE. */)
779 780
780 781
781DEFUN ("defvar", Fdefvar, Sdefvar, 1, UNEVALLED, 0, 782DEFUN ("defvar", Fdefvar, Sdefvar, 1, UNEVALLED, 0,
782 doc: /* Define SYMBOL as a variable. 783 doc: /* Define SYMBOL as a variable, and return SYMBOL.
783You are not required to define a variable in order to use it, 784You are not required to define a variable in order to use it,
784but the definition can supply documentation and an initial value 785but the definition can supply documentation and an initial value
785in a way that tags can recognize. 786in a way that tags can recognize.
@@ -2859,8 +2860,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
2859 val = (*XSUBR (fun)->function) (internal_args[0]); 2860 val = (*XSUBR (fun)->function) (internal_args[0]);
2860 goto done; 2861 goto done;
2861 case 2: 2862 case 2:
2862 val = (*XSUBR (fun)->function) (internal_args[0], 2863 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1]);
2863 internal_args[1]);
2864 goto done; 2864 goto done;
2865 case 3: 2865 case 3:
2866 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 2866 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1],
@@ -2868,8 +2868,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
2868 goto done; 2868 goto done;
2869 case 4: 2869 case 4:
2870 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 2870 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1],
2871 internal_args[2], 2871 internal_args[2], internal_args[3]);
2872 internal_args[3]);
2873 goto done; 2872 goto done;
2874 case 5: 2873 case 5:
2875 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 2874 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1],
@@ -3395,7 +3394,7 @@ void
3395syms_of_eval () 3394syms_of_eval ()
3396{ 3395{
3397 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size, 3396 DEFVAR_INT ("max-specpdl-size", &max_specpdl_size,
3398 doc: /* *Limit on number of Lisp variable bindings & unwind-protects. 3397 doc: /* *Limit on number of Lisp variable bindings and `unwind-protect's.
3399If Lisp code tries to increase the total number past this amount, 3398If Lisp code tries to increase the total number past this amount,
3400an error is signaled. 3399an error is signaled.
3401You can safely use a value considerably larger than the default value, 3400You can safely use a value considerably larger than the default value,
@@ -3492,10 +3491,8 @@ It does not apply to errors handled by `condition-case'. */);
3492 Vdebug_ignored_errors = Qnil; 3491 Vdebug_ignored_errors = Qnil;
3493 3492
3494 DEFVAR_BOOL ("debug-on-quit", &debug_on_quit, 3493 DEFVAR_BOOL ("debug-on-quit", &debug_on_quit,
3495 doc: /* *Non-nil means enter debugger if quit is signaled (C-g, for example). 3494 doc: /* *Non-nil means enter debugger if quit is signaled (C-g, for example).
3496Does not apply if quit is handled by a `condition-case'. 3495Does not apply if quit is handled by a `condition-case'. */);
3497When you evaluate an expression interactively, this variable
3498is temporarily non-nil if `eval-expression-debug-on-quit' is non-nil. */);
3499 debug_on_quit = 0; 3496 debug_on_quit = 0;
3500 3497
3501 DEFVAR_BOOL ("debug-on-next-call", &debug_on_next_call, 3498 DEFVAR_BOOL ("debug-on-next-call", &debug_on_next_call,
diff --git a/src/fileio.c b/src/fileio.c
index be6bf37ad94..7d84e243207 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5734,13 +5734,13 @@ auto_save_1 ()
5734} 5734}
5735 5735
5736static Lisp_Object 5736static Lisp_Object
5737do_auto_save_unwind (stream) /* used as unwind-protect function */ 5737do_auto_save_unwind (arg) /* used as unwind-protect function */
5738 Lisp_Object stream; 5738 Lisp_Object arg;
5739{ 5739{
5740 FILE *stream = (FILE *) XSAVE_VALUE (arg)->pointer;
5740 auto_saving = 0; 5741 auto_saving = 0;
5741 if (!NILP (stream)) 5742 if (stream != NULL)
5742 fclose ((FILE *) (XFASTINT (XCAR (stream)) << 16 5743 fclose (stream);
5743 | XFASTINT (XCDR (stream))));
5744 return Qnil; 5744 return Qnil;
5745} 5745}
5746 5746
@@ -5785,8 +5785,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer. */)
5785 int auto_saved = 0; 5785 int auto_saved = 0;
5786 int do_handled_files; 5786 int do_handled_files;
5787 Lisp_Object oquit; 5787 Lisp_Object oquit;
5788 FILE *stream; 5788 FILE *stream = NULL;
5789 Lisp_Object lispstream;
5790 int count = SPECPDL_INDEX (); 5789 int count = SPECPDL_INDEX ();
5791 int orig_minibuffer_auto_raise = minibuffer_auto_raise; 5790 int orig_minibuffer_auto_raise = minibuffer_auto_raise;
5792 int old_message_p = 0; 5791 int old_message_p = 0;
@@ -5838,24 +5837,10 @@ A non-nil CURRENT-ONLY argument means save only current buffer. */)
5838 } 5837 }
5839 5838
5840 stream = fopen (SDATA (listfile), "w"); 5839 stream = fopen (SDATA (listfile), "w");
5841 if (stream != NULL)
5842 {
5843 /* Arrange to close that file whether or not we get an error.
5844 Also reset auto_saving to 0. */
5845 lispstream = Fcons (Qnil, Qnil);
5846 XSETCARFASTINT (lispstream, (EMACS_UINT)stream >> 16);
5847 XSETCDRFASTINT (lispstream, (EMACS_UINT)stream & 0xffff);
5848 }
5849 else
5850 lispstream = Qnil;
5851 }
5852 else
5853 {
5854 stream = NULL;
5855 lispstream = Qnil;
5856 } 5840 }
5857 5841
5858 record_unwind_protect (do_auto_save_unwind, lispstream); 5842 record_unwind_protect (do_auto_save_unwind,
5843 make_save_value (stream, 0));
5859 record_unwind_protect (do_auto_save_unwind_1, 5844 record_unwind_protect (do_auto_save_unwind_1,
5860 make_number (minibuffer_auto_raise)); 5845 make_number (minibuffer_auto_raise));
5861 minibuffer_auto_raise = 0; 5846 minibuffer_auto_raise = 0;
diff --git a/src/frame.h b/src/frame.h
index 8e4c77f9af4..290aed3266e 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -463,6 +463,10 @@ struct frame
463 realized. Reset to zero whenever the default face changes. 463 realized. Reset to zero whenever the default face changes.
464 Used to see the difference between a font change and face change. */ 464 Used to see the difference between a font change and face change. */
465 unsigned default_face_done_p : 1; 465 unsigned default_face_done_p : 1;
466
467 /* Set to non-zero if this frame has already been hscrolled during
468 current redisplay. */
469 unsigned already_hscrolled_p : 1;
466}; 470};
467 471
468#ifdef MULTI_KBOARD 472#ifdef MULTI_KBOARD
@@ -821,13 +825,13 @@ extern Lisp_Object selected_frame;
821 Display-related Macros 825 Display-related Macros
822 ***********************************************************************/ 826 ***********************************************************************/
823 827
824/* Canonical y-unit on frame F. 828/* Canonical y-unit on frame F.
825 This value currently equals the line height of the frame (which is 829 This value currently equals the line height of the frame (which is
826 the height of the default font of F). */ 830 the height of the default font of F). */
827 831
828#define FRAME_LINE_HEIGHT(F) ((F)->line_height) 832#define FRAME_LINE_HEIGHT(F) ((F)->line_height)
829 833
830/* Canonical x-unit on frame F. 834/* Canonical x-unit on frame F.
831 This value currently equals the average width of the default font of F. */ 835 This value currently equals the average width of the default font of F. */
832 836
833#define FRAME_COLUMN_WIDTH(F) ((F)->column_width) 837#define FRAME_COLUMN_WIDTH(F) ((F)->column_width)
diff --git a/src/keymap.c b/src/keymap.c
index 090996c7e0d..dd206b8f065 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1694,7 +1694,7 @@ bindings; see the description of `lookup-key' for more details about this. */)
1694 1694
1695DEFUN ("minor-mode-key-binding", Fminor_mode_key_binding, Sminor_mode_key_binding, 1, 2, 0, 1695DEFUN ("minor-mode-key-binding", Fminor_mode_key_binding, Sminor_mode_key_binding, 1, 2, 0,
1696 doc: /* Find the visible minor mode bindings of KEY. 1696 doc: /* Find the visible minor mode bindings of KEY.
1697Return an alist of pairs (MODENAME . BINDING), where MODENAME is the 1697Return an alist of pairs (MODENAME . BINDING), where MODENAME is
1698the symbol which names the minor mode binding KEY, and BINDING is 1698the symbol which names the minor mode binding KEY, and BINDING is
1699KEY's definition in that mode. In particular, if KEY has no 1699KEY's definition in that mode. In particular, if KEY has no
1700minor-mode bindings, return nil. If the first binding is a 1700minor-mode bindings, return nil. If the first binding is a
diff --git a/src/lread.c b/src/lread.c
index 52a68923682..0cac2515b4f 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -853,7 +853,6 @@ Return t if file exists. */)
853{ 853{
854 register FILE *stream; 854 register FILE *stream;
855 register int fd = -1; 855 register int fd = -1;
856 register Lisp_Object lispstream;
857 int count = SPECPDL_INDEX (); 856 int count = SPECPDL_INDEX ();
858 Lisp_Object temp; 857 Lisp_Object temp;
859 struct gcpro gcpro1; 858 struct gcpro gcpro1;
@@ -1088,10 +1087,7 @@ Return t if file exists. */)
1088 } 1087 }
1089 1088
1090 GCPRO1 (file); 1089 GCPRO1 (file);
1091 lispstream = Fcons (Qnil, Qnil); 1090 record_unwind_protect (load_unwind, make_save_value (stream, 0));
1092 XSETCARFASTINT (lispstream, (EMACS_UINT)stream >> 16);
1093 XSETCDRFASTINT (lispstream, (EMACS_UINT)stream & 0xffff);
1094 record_unwind_protect (load_unwind, lispstream);
1095 record_unwind_protect (load_descriptor_unwind, load_descriptor_list); 1091 record_unwind_protect (load_descriptor_unwind, load_descriptor_list);
1096 specbind (Qload_file_name, found); 1092 specbind (Qload_file_name, found);
1097 specbind (Qinhibit_file_name_operation, Qnil); 1093 specbind (Qinhibit_file_name_operation, Qnil);
@@ -1150,11 +1146,12 @@ Return t if file exists. */)
1150} 1146}
1151 1147
1152static Lisp_Object 1148static Lisp_Object
1153load_unwind (stream) /* used as unwind-protect function in load */ 1149load_unwind (arg) /* used as unwind-protect function in load */
1154 Lisp_Object stream; 1150 Lisp_Object arg;
1155{ 1151{
1156 fclose ((FILE *) (XFASTINT (XCAR (stream)) << 16 1152 FILE *stream = (FILE *) XSAVE_VALUE (arg)->pointer;
1157 | XFASTINT (XCDR (stream)))); 1153 if (stream != NULL)
1154 fclose (stream);
1158 if (--load_in_progress < 0) load_in_progress = 0; 1155 if (--load_in_progress < 0) load_in_progress = 0;
1159 return Qnil; 1156 return Qnil;
1160} 1157}
@@ -4161,6 +4158,7 @@ to load. See also `load-dangerous-libraries'. */);
4161 staticpro (&read_objects); 4158 staticpro (&read_objects);
4162 read_objects = Qnil; 4159 read_objects = Qnil;
4163 staticpro (&seen_list); 4160 staticpro (&seen_list);
4161 seen_list = Qnil;
4164 4162
4165 Vloads_in_progress = Qnil; 4163 Vloads_in_progress = Qnil;
4166 staticpro (&Vloads_in_progress); 4164 staticpro (&Vloads_in_progress);
diff --git a/src/mac.c b/src/mac.c
index 203b47a1975..11dd93aa88d 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -1,5 +1,5 @@
1/* Unix emulation routines for GNU Emacs on the Mac OS. 1/* Unix emulation routines for GNU Emacs on the Mac OS.
2 Copyright (C) 2000, 2001 Free Software Foundation, Inc. 2 Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
3 3
4This file is part of GNU Emacs. 4This file is part of GNU Emacs.
5 5
@@ -4144,7 +4144,11 @@ nil. */)
4144 src_encoding = get_cfstring_encoding_from_lisp (source); 4144 src_encoding = get_cfstring_encoding_from_lisp (source);
4145 tgt_encoding = get_cfstring_encoding_from_lisp (target); 4145 tgt_encoding = get_cfstring_encoding_from_lisp (target);
4146 4146
4147 string = string_make_unibyte (string); 4147 /* We really want string_to_unibyte, but since it doesn't exist yet, we
4148 use string_as_unibyte which works as well, except for the fact that
4149 it's too permissive (it doesn't check that the multibyte string only
4150 contain single-byte chars). */
4151 string = Fstring_as_unibyte (string);
4148 if (src_encoding != kCFStringEncodingInvalidId 4152 if (src_encoding != kCFStringEncodingInvalidId
4149 && tgt_encoding != kCFStringEncodingInvalidId) 4153 && tgt_encoding != kCFStringEncodingInvalidId)
4150 str = CFStringCreateWithBytes (NULL, SDATA (string), SBYTES (string), 4154 str = CFStringCreateWithBytes (NULL, SDATA (string), SBYTES (string),
diff --git a/src/macfns.c b/src/macfns.c
index 603f0ec5313..a37ddde3458 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -1570,9 +1570,10 @@ x_set_cursor_color (f, arg, oldval)
1570 { 1570 {
1571 BLOCK_INPUT; 1571 BLOCK_INPUT;
1572 /* Update frame's cursor_gc. */ 1572 /* Update frame's cursor_gc. */
1573 f->output_data.mac->cursor_gc->foreground = fore_pixel; 1573 XSetBackground (FRAME_MAC_DISPLAY (f),
1574 f->output_data.mac->cursor_gc->background = pixel; 1574 f->output_data.mac->cursor_gc, pixel);
1575 1575 XSetForeground (FRAME_MAC_DISPLAY (f),
1576 f->output_data.mac->cursor_gc, fore_pixel);
1576 UNBLOCK_INPUT; 1577 UNBLOCK_INPUT;
1577 1578
1578 if (FRAME_VISIBLE_P (f)) 1579 if (FRAME_VISIBLE_P (f))
diff --git a/src/macgui.h b/src/macgui.h
index d9948278d1b..ca55bad7a8c 100644
--- a/src/macgui.h
+++ b/src/macgui.h
@@ -180,15 +180,24 @@ typedef struct _XGCValues
180 XFontStruct *font; 180 XFontStruct *font;
181} XGCValues; 181} XGCValues;
182 182
183typedef XGCValues *GC; 183typedef struct _XGC
184{
185 /* Original value. */
186 XGCValues xgcv;
187
188 /* Cached data members follow. */
184 189
185extern XGCValues * 190 /* QuickDraw foreground color. */
186XCreateGC (void *, Window, unsigned long, XGCValues *); 191 RGBColor fore_color;
187 192
188#define GCForeground 0x01 193 /* QuickDraw background color. */
189#define GCBackground 0x02 194 RGBColor back_color;
190#define GCFont 0x03 195} *GC;
191#define GCGraphicsExposures 0 196
197#define GCForeground (1L<<2)
198#define GCBackground (1L<<3)
199#define GCFont (1L<<14)
200#define GCGraphicsExposures 0
192 201
193/* Bit Gravity */ 202/* Bit Gravity */
194 203
@@ -248,8 +257,6 @@ typedef struct {
248#define PBaseSize (1L << 8) /* program specified base for incrementing */ 257#define PBaseSize (1L << 8) /* program specified base for incrementing */
249#define PWinGravity (1L << 9) /* program specified window gravity */ 258#define PWinGravity (1L << 9) /* program specified window gravity */
250 259
251extern int XParseGeometry ();
252
253typedef struct { 260typedef struct {
254 int x, y; 261 int x, y;
255 unsigned width, height; 262 unsigned width, height;
diff --git a/src/macselect.c b/src/macselect.c
index b519950eb75..94fe591a206 100644
--- a/src/macselect.c
+++ b/src/macselect.c
@@ -371,7 +371,7 @@ get_scrap_target_type_list (scrap)
371 err = GetScrapFlavorCount (scrap, &count); 371 err = GetScrapFlavorCount (scrap, &count);
372 if (err == noErr) 372 if (err == noErr)
373 flavor_info = xmalloc (sizeof (ScrapFlavorInfo) * count); 373 flavor_info = xmalloc (sizeof (ScrapFlavorInfo) * count);
374 if (err == noErr && flavor_info) 374 if (flavor_info)
375 { 375 {
376 err = GetScrapFlavorInfoList (scrap, &count, flavor_info); 376 err = GetScrapFlavorInfoList (scrap, &count, flavor_info);
377 if (err != noErr) 377 if (err != noErr)
@@ -380,6 +380,8 @@ get_scrap_target_type_list (scrap)
380 flavor_info = NULL; 380 flavor_info = NULL;
381 } 381 }
382 } 382 }
383 if (flavor_info == NULL)
384 count = 0;
383#endif 385#endif
384 for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest)) 386 for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest))
385 { 387 {
diff --git a/src/macterm.c b/src/macterm.c
index 9420f236e59..5b7d3ee2262 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -96,8 +96,6 @@ Boston, MA 02110-1301, USA. */
96 (NILP (Vmac_command_key_is_meta) ? optionKey : cmdKey) \ 96 (NILP (Vmac_command_key_is_meta) ? optionKey : cmdKey) \
97 : controlKey) 97 : controlKey)
98#define macAltKey (NILP (Vmac_command_key_is_meta) ? cmdKey : optionKey) 98#define macAltKey (NILP (Vmac_command_key_is_meta) ? cmdKey : optionKey)
99
100#define mac_window_to_frame(wp) (((mac_output *) GetWRefCon (wp))->mFP)
101 99
102 100
103/* Non-nil means Emacs uses toolkit scroll bars. */ 101/* Non-nil means Emacs uses toolkit scroll bars. */
@@ -263,14 +261,19 @@ static void x_scroll_bar_report_motion P_ ((struct frame **, Lisp_Object *,
263 Lisp_Object *, Lisp_Object *, 261 Lisp_Object *, Lisp_Object *,
264 unsigned long *)); 262 unsigned long *));
265 263
266static int is_emacs_window (WindowPtr); 264static int is_emacs_window P_ ((WindowPtr));
267 265
268int x_bitmap_icon (struct frame *, Lisp_Object); 266static void XSetFont P_ ((Display *, GC, XFontStruct *));
269void x_make_frame_visible (struct frame *);
270 267
271/* Defined in macmenu.h. */ 268/* Defined in macmenu.h. */
272extern void menubar_selection_callback (FRAME_PTR, int); 269extern void menubar_selection_callback (FRAME_PTR, int);
273 270
271#define GC_FORE_COLOR(gc) (&(gc)->fore_color)
272#define GC_BACK_COLOR(gc) (&(gc)->back_color)
273#define GC_FONT(gc) ((gc)->xgcv.font)
274#define MAC_WINDOW_NORMAL_GC(w) (((mac_output *) GetWRefCon (w))->normal_gc)
275
276
274/* X display function emulation */ 277/* X display function emulation */
275 278
276void 279void
@@ -282,51 +285,6 @@ XFreePixmap (display, pixmap)
282} 285}
283 286
284 287
285/* Set foreground color for subsequent QuickDraw commands. Assume
286 graphic port has already been set. */
287
288static void
289mac_set_forecolor (unsigned long color)
290{
291 RGBColor fg_color;
292
293 fg_color.red = RED16_FROM_ULONG (color);
294 fg_color.green = GREEN16_FROM_ULONG (color);
295 fg_color.blue = BLUE16_FROM_ULONG (color);
296
297 RGBForeColor (&fg_color);
298}
299
300
301/* Set background color for subsequent QuickDraw commands. Assume
302 graphic port has already been set. */
303
304static void
305mac_set_backcolor (unsigned long color)
306{
307 RGBColor bg_color;
308
309 bg_color.red = RED16_FROM_ULONG (color);
310 bg_color.green = GREEN16_FROM_ULONG (color);
311 bg_color.blue = BLUE16_FROM_ULONG (color);
312
313 RGBBackColor (&bg_color);
314}
315
316/* Set foreground and background color for subsequent QuickDraw
317 commands. Assume that the graphic port has already been set. */
318
319static void
320mac_set_colors (gc, bg_save)
321 GC gc;
322 RGBColor *bg_save;
323{
324 if (bg_save)
325 GetBackColor (bg_save);
326 mac_set_forecolor (gc->foreground);
327 mac_set_backcolor (gc->background);
328}
329
330/* Mac version of XDrawLine. */ 288/* Mac version of XDrawLine. */
331 289
332static void 290static void
@@ -336,16 +294,12 @@ XDrawLine (display, w, gc, x1, y1, x2, y2)
336 GC gc; 294 GC gc;
337 int x1, y1, x2, y2; 295 int x1, y1, x2, y2;
338{ 296{
339 RGBColor old_bg;
340
341 SetPortWindowPort (w); 297 SetPortWindowPort (w);
342 298
343 mac_set_colors (gc, &old_bg); 299 RGBForeColor (GC_FORE_COLOR (gc));
344 300
345 MoveTo (x1, y1); 301 MoveTo (x1, y1);
346 LineTo (x2, y2); 302 LineTo (x2, y2);
347
348 RGBBackColor (&old_bg);
349} 303}
350 304
351void 305void
@@ -361,7 +315,7 @@ mac_draw_line_to_pixmap (display, p, gc, x1, y1, x2, y2)
361 GetGWorld (&old_port, &old_gdh); 315 GetGWorld (&old_port, &old_gdh);
362 SetGWorld (p, NULL); 316 SetGWorld (p, NULL);
363 317
364 mac_set_colors (gc, NULL); 318 RGBForeColor (GC_FORE_COLOR (gc));
365 319
366 LockPixels (GetGWorldPixMap (p)); 320 LockPixels (GetGWorldPixMap (p));
367 MoveTo (x1, y1); 321 MoveTo (x1, y1);
@@ -371,32 +325,38 @@ mac_draw_line_to_pixmap (display, p, gc, x1, y1, x2, y2)
371 SetGWorld (old_port, old_gdh); 325 SetGWorld (old_port, old_gdh);
372} 326}
373 327
374/* Mac version of XClearArea. */
375 328
376void 329static void
377XClearArea (display, w, x, y, width, height, exposures) 330mac_erase_rectangle (w, gc, x, y, width, height)
378 Display *display;
379 WindowPtr w; 331 WindowPtr w;
332 GC gc;
380 int x, y; 333 int x, y;
381 unsigned int width, height; 334 unsigned int width, height;
382 int exposures;
383{ 335{
384 struct mac_output *mwp = (mac_output *) GetWRefCon (w);
385 Rect r; 336 Rect r;
386 XGCValues xgc;
387 RGBColor old_bg;
388
389 xgc.foreground = mwp->x_compatible.foreground_pixel;
390 xgc.background = mwp->x_compatible.background_pixel;
391 337
392 SetPortWindowPort (w); 338 SetPortWindowPort (w);
393 339
394 mac_set_colors (&xgc, &old_bg); 340 RGBBackColor (GC_BACK_COLOR (gc));
395 SetRect (&r, x, y, x + width, y + height); 341 SetRect (&r, x, y, x + width, y + height);
396 342
397 EraseRect (&r); 343 EraseRect (&r);
398 344
399 RGBBackColor (&old_bg); 345 RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w)));
346}
347
348
349/* Mac version of XClearArea. */
350
351void
352XClearArea (display, w, x, y, width, height, exposures)
353 Display *display;
354 WindowPtr w;
355 int x, y;
356 unsigned int width, height;
357 int exposures;
358{
359 mac_erase_rectangle (w, MAC_WINDOW_NORMAL_GC (w), x, y, width, height);
400} 360}
401 361
402/* Mac version of XClearWindow. */ 362/* Mac version of XClearWindow. */
@@ -406,15 +366,9 @@ XClearWindow (display, w)
406 Display *display; 366 Display *display;
407 WindowPtr w; 367 WindowPtr w;
408{ 368{
409 struct mac_output *mwp = (mac_output *) GetWRefCon (w);
410 XGCValues xgc;
411
412 xgc.foreground = mwp->x_compatible.foreground_pixel;
413 xgc.background = mwp->x_compatible.background_pixel;
414
415 SetPortWindowPort (w); 369 SetPortWindowPort (w);
416 370
417 mac_set_colors (&xgc, NULL); 371 RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w)));
418 372
419#if TARGET_API_MAC_CARBON 373#if TARGET_API_MAC_CARBON
420 { 374 {
@@ -442,7 +396,6 @@ mac_draw_bitmap (display, w, gc, x, y, width, height, bits, overlay_p)
442{ 396{
443 BitMap bitmap; 397 BitMap bitmap;
444 Rect r; 398 Rect r;
445 RGBColor old_bg;
446 399
447 bitmap.rowBytes = sizeof(unsigned short); 400 bitmap.rowBytes = sizeof(unsigned short);
448 bitmap.baseAddr = (char *)bits; 401 bitmap.baseAddr = (char *)bits;
@@ -450,7 +403,8 @@ mac_draw_bitmap (display, w, gc, x, y, width, height, bits, overlay_p)
450 403
451 SetPortWindowPort (w); 404 SetPortWindowPort (w);
452 405
453 mac_set_colors (gc, &old_bg); 406 RGBForeColor (GC_FORE_COLOR (gc));
407 RGBBackColor (GC_BACK_COLOR (gc));
454 SetRect (&r, x, y, x + width, y + height); 408 SetRect (&r, x, y, x + width, y + height);
455 409
456#if TARGET_API_MAC_CARBON 410#if TARGET_API_MAC_CARBON
@@ -463,7 +417,7 @@ mac_draw_bitmap (display, w, gc, x, y, width, height, bits, overlay_p)
463 overlay_p ? srcOr : srcCopy, 0); 417 overlay_p ? srcOr : srcCopy, 0);
464#endif /* not TARGET_API_MAC_CARBON */ 418#endif /* not TARGET_API_MAC_CARBON */
465 419
466 RGBBackColor (&old_bg); 420 RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w)));
467} 421}
468 422
469 423
@@ -569,12 +523,16 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
569 char *data; 523 char *data;
570 unsigned int width, height; 524 unsigned int width, height;
571 unsigned long fg, bg; 525 unsigned long fg, bg;
572 unsigned int depth; /* not used */ 526 unsigned int depth;
573{ 527{
574 Pixmap pixmap; 528 Pixmap pixmap;
575 BitMap bitmap; 529 BitMap bitmap;
576 CGrafPtr old_port; 530 CGrafPtr old_port;
577 GDHandle old_gdh; 531 GDHandle old_gdh;
532 static GC gc = NULL; /* not reentrant */
533
534 if (gc == NULL)
535 gc = XCreateGC (display, w, 0, NULL);
578 536
579 pixmap = XCreatePixmap (display, w, width, height, depth); 537 pixmap = XCreatePixmap (display, w, width, height, depth);
580 if (pixmap == NULL) 538 if (pixmap == NULL)
@@ -583,8 +541,10 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
583 GetGWorld (&old_port, &old_gdh); 541 GetGWorld (&old_port, &old_gdh);
584 SetGWorld (pixmap, NULL); 542 SetGWorld (pixmap, NULL);
585 mac_create_bitmap_from_bitmap_data (&bitmap, data, width, height); 543 mac_create_bitmap_from_bitmap_data (&bitmap, data, width, height);
586 mac_set_forecolor (fg); 544 XSetForeground (display, gc, fg);
587 mac_set_backcolor (bg); 545 XSetBackground (display, gc, bg);
546 RGBForeColor (GC_FORE_COLOR (gc));
547 RGBBackColor (GC_BACK_COLOR (gc));
588 LockPixels (GetGWorldPixMap (pixmap)); 548 LockPixels (GetGWorldPixMap (pixmap));
589#if TARGET_API_MAC_CARBON 549#if TARGET_API_MAC_CARBON
590 CopyBits (&bitmap, GetPortBitMapForCopyBits (pixmap), 550 CopyBits (&bitmap, GetPortBitMapForCopyBits (pixmap),
@@ -612,16 +572,13 @@ XFillRectangle (display, w, gc, x, y, width, height)
612 unsigned int width, height; 572 unsigned int width, height;
613{ 573{
614 Rect r; 574 Rect r;
615 RGBColor old_bg;
616 575
617 SetPortWindowPort (w); 576 SetPortWindowPort (w);
618 577
619 mac_set_colors (gc, &old_bg); 578 RGBForeColor (GC_FORE_COLOR (gc));
620 SetRect (&r, x, y, x + width, y + height); 579 SetRect (&r, x, y, x + width, y + height);
621 580
622 PaintRect (&r); /* using foreground color of gc */ 581 PaintRect (&r); /* using foreground color of gc */
623
624 RGBBackColor (&old_bg);
625} 582}
626 583
627 584
@@ -640,7 +597,7 @@ mac_fill_rectangle_to_pixmap (display, p, gc, x, y, width, height)
640 597
641 GetGWorld (&old_port, &old_gdh); 598 GetGWorld (&old_port, &old_gdh);
642 SetGWorld (p, NULL); 599 SetGWorld (p, NULL);
643 mac_set_colors (gc, NULL); 600 RGBForeColor (GC_FORE_COLOR (gc));
644 SetRect (&r, x, y, x + width, y + height); 601 SetRect (&r, x, y, x + width, y + height);
645 602
646 LockPixels (GetGWorldPixMap (p)); 603 LockPixels (GetGWorldPixMap (p));
@@ -663,16 +620,13 @@ mac_draw_rectangle (display, w, gc, x, y, width, height)
663 unsigned int width, height; 620 unsigned int width, height;
664{ 621{
665 Rect r; 622 Rect r;
666 RGBColor old_bg;
667 623
668 SetPortWindowPort (w); 624 SetPortWindowPort (w);
669 625
670 mac_set_colors (gc, &old_bg); 626 RGBForeColor (GC_FORE_COLOR (gc));
671 SetRect (&r, x, y, x + width + 1, y + height + 1); 627 SetRect (&r, x, y, x + width + 1, y + height + 1);
672 628
673 FrameRect (&r); /* using foreground color of gc */ 629 FrameRect (&r); /* using foreground color of gc */
674
675 RGBBackColor (&old_bg);
676} 630}
677 631
678 632
@@ -693,7 +647,7 @@ mac_draw_rectangle_to_pixmap (display, p, gc, x, y, width, height)
693 647
694 GetGWorld (&old_port, &old_gdh); 648 GetGWorld (&old_port, &old_gdh);
695 SetGWorld (p, NULL); 649 SetGWorld (p, NULL);
696 mac_set_colors (gc, NULL); 650 RGBForeColor (GC_FORE_COLOR (gc));
697 SetRect (&r, x, y, x + width + 1, y + height + 1); 651 SetRect (&r, x, y, x + width + 1, y + height + 1);
698 652
699 LockPixels (GetGWorldPixMap (p)); 653 LockPixels (GetGWorldPixMap (p));
@@ -715,9 +669,6 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode,
715 char *buf; 669 char *buf;
716 int nchars, mode, bytes_per_char; 670 int nchars, mode, bytes_per_char;
717{ 671{
718 RGBColor old_bg;
719
720 SetPortWindowPort (w);
721#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 672#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
722 UInt32 textFlags, savedFlags; 673 UInt32 textFlags, savedFlags;
723 if (!NILP(Vmac_use_core_graphics)) { 674 if (!NILP(Vmac_use_core_graphics)) {
@@ -726,17 +677,22 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode,
726 } 677 }
727#endif 678#endif
728 679
729 mac_set_colors (gc, &old_bg); 680 SetPortWindowPort (w);
681
682 RGBForeColor (GC_FORE_COLOR (gc));
683 if (mode != srcOr)
684 RGBBackColor (GC_BACK_COLOR (gc));
730 685
731 TextFont (gc->font->mac_fontnum); 686 TextFont (GC_FONT (gc)->mac_fontnum);
732 TextSize (gc->font->mac_fontsize); 687 TextSize (GC_FONT (gc)->mac_fontsize);
733 TextFace (gc->font->mac_fontface); 688 TextFace (GC_FONT (gc)->mac_fontface);
734 TextMode (mode); 689 TextMode (mode);
735 690
736 MoveTo (x, y); 691 MoveTo (x, y);
737 DrawText (buf, 0, nchars * bytes_per_char); 692 DrawText (buf, 0, nchars * bytes_per_char);
738 693
739 RGBBackColor (&old_bg); 694 if (mode != srcOr)
695 RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w)));
740#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 696#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
741 if (!NILP(Vmac_use_core_graphics)) 697 if (!NILP(Vmac_use_core_graphics))
742 SwapQDTextFlags(savedFlags); 698 SwapQDTextFlags(savedFlags);
@@ -915,7 +871,7 @@ mac_scroll_area (display, w, gc, src_x, src_y, width, height, dest_x, dest_y)
915 BackColor (whiteColor); 871 BackColor (whiteColor);
916 CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0); 872 CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0);
917 873
918 mac_set_colors (gc, NULL); 874 RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w)));
919#endif /* not TARGET_API_MAC_CARBON */ 875#endif /* not TARGET_API_MAC_CARBON */
920} 876}
921 877
@@ -1005,28 +961,37 @@ mac_copy_area_with_mask_to_pixmap (display, src, mask, dest, gc, src_x, src_y,
1005/* Mac replacement for XChangeGC. */ 961/* Mac replacement for XChangeGC. */
1006 962
1007static void 963static void
1008XChangeGC (void * ignore, XGCValues* gc, unsigned long mask, 964XChangeGC (display, gc, mask, xgcv)
1009 XGCValues *xgcv) 965 Display *display;
966 GC gc;
967 unsigned long mask;
968 XGCValues *xgcv;
1010{ 969{
1011 if (mask & GCForeground) 970 if (mask & GCForeground)
1012 gc->foreground = xgcv->foreground; 971 XSetForeground (display, gc, xgcv->foreground);
1013 if (mask & GCBackground) 972 if (mask & GCBackground)
1014 gc->background = xgcv->background; 973 XSetBackground (display, gc, xgcv->background);
1015 if (mask & GCFont) 974 if (mask & GCFont)
1016 gc->font = xgcv->font; 975 XSetFont (display, gc, xgcv->font);
1017} 976}
1018 977
1019 978
1020/* Mac replacement for XCreateGC. */ 979/* Mac replacement for XCreateGC. */
1021 980
1022XGCValues * 981GC
1023XCreateGC (void * ignore, Window window, unsigned long mask, 982XCreateGC (display, window, mask, xgcv)
1024 XGCValues *xgcv) 983 Display *display;
984 Window window;
985 unsigned long mask;
986 XGCValues *xgcv;
1025{ 987{
1026 XGCValues *gc = (XGCValues *) xmalloc (sizeof (XGCValues)); 988 GC gc = xmalloc (sizeof (*gc));
1027 bzero (gc, sizeof (XGCValues));
1028 989
1029 XChangeGC (ignore, gc, mask, xgcv); 990 if (gc)
991 {
992 bzero (gc, sizeof (*gc));
993 XChangeGC (display, gc, mask, xgcv);
994 }
1030 995
1031 return gc; 996 return gc;
1032} 997}
@@ -1046,10 +1011,18 @@ XFreeGC (display, gc)
1046/* Mac replacement for XGetGCValues. */ 1011/* Mac replacement for XGetGCValues. */
1047 1012
1048static void 1013static void
1049XGetGCValues (void* ignore, XGCValues *gc, 1014XGetGCValues (display, gc, mask, xgcv)
1050 unsigned long mask, XGCValues *xgcv) 1015 Display *display;
1016 GC gc;
1017 unsigned long mask;
1018 XGCValues *xgcv;
1051{ 1019{
1052 XChangeGC (ignore, xgcv, mask, gc); 1020 if (mask & GCForeground)
1021 xgcv->foreground = gc->xgcv.foreground;
1022 if (mask & GCBackground)
1023 xgcv->background = gc->xgcv.background;
1024 if (mask & GCFont)
1025 xgcv->font = gc->xgcv.font;
1053} 1026}
1054 1027
1055 1028
@@ -1061,7 +1034,13 @@ XSetForeground (display, gc, color)
1061 GC gc; 1034 GC gc;
1062 unsigned long color; 1035 unsigned long color;
1063{ 1036{
1064 gc->foreground = color; 1037 if (gc->xgcv.foreground != color)
1038 {
1039 gc->xgcv.foreground = color;
1040 gc->fore_color.red = RED16_FROM_ULONG (color);
1041 gc->fore_color.green = GREEN16_FROM_ULONG (color);
1042 gc->fore_color.blue = BLUE16_FROM_ULONG (color);
1043 }
1065} 1044}
1066 1045
1067 1046
@@ -1073,7 +1052,25 @@ XSetBackground (display, gc, color)
1073 GC gc; 1052 GC gc;
1074 unsigned long color; 1053 unsigned long color;
1075{ 1054{
1076 gc->background = color; 1055 if (gc->xgcv.background != color)
1056 {
1057 gc->xgcv.background = color;
1058 gc->back_color.red = RED16_FROM_ULONG (color);
1059 gc->back_color.green = GREEN16_FROM_ULONG (color);
1060 gc->back_color.blue = BLUE16_FROM_ULONG (color);
1061 }
1062}
1063
1064
1065/* Mac replacement for XSetFont. */
1066
1067static void
1068XSetFont (display, gc, font)
1069 Display *display;
1070 GC gc;
1071 XFontStruct *font;
1072{
1073 gc->xgcv.font = font;
1077} 1074}
1078 1075
1079 1076
@@ -1120,19 +1117,6 @@ XSetWindowBackground (display, w, color)
1120#endif 1117#endif
1121} 1118}
1122 1119
1123
1124/* Mac replacement for XSetFont. */
1125
1126static void
1127XSetFont (display, gc, font)
1128 Display *display;
1129 GC gc;
1130 XFontStruct *font;
1131{
1132 gc->font = font;
1133}
1134
1135
1136/* x_sync is a no-op on Mac. */ 1120/* x_sync is a no-op on Mac. */
1137void 1121void
1138x_sync (f) 1122x_sync (f)
@@ -1443,7 +1427,6 @@ x_draw_fringe_bitmap (w, row, p)
1443 struct frame *f = XFRAME (WINDOW_FRAME (w)); 1427 struct frame *f = XFRAME (WINDOW_FRAME (w));
1444 Display *display = FRAME_MAC_DISPLAY (f); 1428 Display *display = FRAME_MAC_DISPLAY (f);
1445 WindowPtr window = FRAME_MAC_WINDOW (f); 1429 WindowPtr window = FRAME_MAC_WINDOW (f);
1446 XGCValues gcv;
1447 GC gc = f->output_data.mac->normal_gc; 1430 GC gc = f->output_data.mac->normal_gc;
1448 struct face *face = p->face; 1431 struct face *face = p->face;
1449 int rowY; 1432 int rowY;
@@ -1467,9 +1450,6 @@ x_draw_fringe_bitmap (w, row, p)
1467 1450
1468 if (p->bx >= 0 && !p->overlay_p) 1451 if (p->bx >= 0 && !p->overlay_p)
1469 { 1452 {
1470 XGCValues gcv;
1471 gcv.foreground = face->background;
1472
1473#if 0 /* MAC_TODO: stipple */ 1453#if 0 /* MAC_TODO: stipple */
1474 /* In case the same realized face is used for fringes and 1454 /* In case the same realized face is used for fringes and
1475 for something displayed in the text (e.g. face `region' on 1455 for something displayed in the text (e.g. face `region' on
@@ -1481,9 +1461,7 @@ x_draw_fringe_bitmap (w, row, p)
1481 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->background); 1461 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->background);
1482#endif 1462#endif
1483 1463
1484 XFillRectangle (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f), 1464 mac_erase_rectangle (window, face->gc, p->bx, p->by, p->nx, p->ny);
1485 &gcv,
1486 p->bx, p->by, p->nx, p->ny);
1487 1465
1488#if 0 /* MAC_TODO: stipple */ 1466#if 0 /* MAC_TODO: stipple */
1489 if (!face->stipple) 1467 if (!face->stipple)
@@ -1494,15 +1472,17 @@ x_draw_fringe_bitmap (w, row, p)
1494 if (p->which) 1472 if (p->which)
1495 { 1473 {
1496 unsigned short *bits = p->bits + p->dh; 1474 unsigned short *bits = p->bits + p->dh;
1475 XGCValues gcv;
1497 1476
1498 gcv.foreground = (p->cursor_p 1477 XGetGCValues (display, face->gc, GCForeground, &gcv);
1499 ? (p->overlay_p ? face->background 1478 XSetForeground (display, face->gc,
1500 : f->output_data.mac->cursor_pixel) 1479 (p->cursor_p
1501 : face->foreground); 1480 ? (p->overlay_p ? face->background
1502 gcv.background = face->background; 1481 : f->output_data.mac->cursor_pixel)
1503 1482 : face->foreground));
1504 mac_draw_bitmap (display, window, &gcv, p->x, p->y, 1483 mac_draw_bitmap (display, window, face->gc, p->x, p->y,
1505 p->wd, p->h, bits, p->overlay_p); 1484 p->wd, p->h, bits, p->overlay_p);
1485 XSetForeground (display, face->gc, gcv.foreground);
1506 } 1486 }
1507 1487
1508 mac_reset_clipping (display, window); 1488 mac_reset_clipping (display, window);
@@ -1980,10 +1960,7 @@ x_clear_glyph_string_rect (s, x, y, w, h)
1980 struct glyph_string *s; 1960 struct glyph_string *s;
1981 int x, y, w, h; 1961 int x, y, w, h;
1982{ 1962{
1983 XGCValues xgcv; 1963 mac_erase_rectangle (s->window, s->gc, x, y, w, h);
1984
1985 xgcv.foreground = s->gc->background;
1986 XFillRectangle (s->display, s->window, &xgcv, x, y, w, h);
1987} 1964}
1988 1965
1989 1966
@@ -2571,27 +2548,29 @@ x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width,
2571{ 2548{
2572 XGCValues xgcv; 2549 XGCValues xgcv;
2573 2550
2574 xgcv.foreground = s->face->box_color; 2551 XGetGCValues (s->display, s->gc, GCForeground, &xgcv);
2552 XSetForeground (s->display, s->gc, s->face->box_color);
2575 mac_set_clip_rectangle (s->display, s->window, clip_rect); 2553 mac_set_clip_rectangle (s->display, s->window, clip_rect);
2576 2554
2577 /* Top. */ 2555 /* Top. */
2578 XFillRectangle (s->display, s->window, &xgcv, 2556 XFillRectangle (s->display, s->window, s->gc,
2579 left_x, top_y, right_x - left_x + 1, width); 2557 left_x, top_y, right_x - left_x + 1, width);
2580 2558
2581 /* Left. */ 2559 /* Left. */
2582 if (left_p) 2560 if (left_p)
2583 XFillRectangle (s->display, s->window, &xgcv, 2561 XFillRectangle (s->display, s->window, s->gc,
2584 left_x, top_y, width, bottom_y - top_y + 1); 2562 left_x, top_y, width, bottom_y - top_y + 1);
2585 2563
2586 /* Bottom. */ 2564 /* Bottom. */
2587 XFillRectangle (s->display, s->window, &xgcv, 2565 XFillRectangle (s->display, s->window, s->gc,
2588 left_x, bottom_y - width + 1, right_x - left_x + 1, width); 2566 left_x, bottom_y - width + 1, right_x - left_x + 1, width);
2589 2567
2590 /* Right. */ 2568 /* Right. */
2591 if (right_p) 2569 if (right_p)
2592 XFillRectangle (s->display, s->window, &xgcv, 2570 XFillRectangle (s->display, s->window, s->gc,
2593 right_x - width + 1, top_y, width, bottom_y - top_y + 1); 2571 right_x - width + 1, top_y, width, bottom_y - top_y + 1);
2594 2572
2573 XSetForeground (s->display, s->gc, xgcv.foreground);
2595 mac_reset_clipping (s->display, s->window); 2574 mac_reset_clipping (s->display, s->window);
2596} 2575}
2597 2576
@@ -3010,13 +2989,7 @@ x_draw_stretch_glyph_string (s)
3010 } 2989 }
3011 else 2990 else
3012#endif /* MAC_TODO */ 2991#endif /* MAC_TODO */
3013 { 2992 mac_erase_rectangle (s->window, gc, x, y, w, h);
3014 XGCValues xgcv;
3015 XGetGCValues (s->display, gc, GCForeground | GCBackground, &xgcv);
3016 XSetForeground (s->display, gc, xgcv.background);
3017 XFillRectangle (s->display, s->window, gc, x, y, w, h);
3018 XSetForeground (s->display, gc, xgcv.foreground);
3019 }
3020 2993
3021 mac_reset_clipping (s->display, s->window); 2994 mac_reset_clipping (s->display, s->window);
3022 } 2995 }
@@ -4567,13 +4540,10 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
4567 && XINT (bar->width) == sb_width 4540 && XINT (bar->width) == sb_width
4568 && XINT (bar->height) == height)) 4541 && XINT (bar->height) == height))
4569 { 4542 {
4570 /* Clear areas not covered by the scroll bar because it's not as 4543 /* Since toolkit scroll bars are smaller than the space reserved
4571 wide as the area reserved for it . This makes sure a 4544 for them on the frame, we have to clear "under" them. */
4572 previous mode line display is cleared after C-x 2 C-x 1, for
4573 example. */
4574 int area_width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
4575 XClearArea (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f), 4545 XClearArea (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f),
4576 left, top, area_width, height, 0); 4546 left, top, width, height, 0);
4577 4547
4578#if 0 4548#if 0
4579 if (sb_left + sb_width >= FRAME_PIXEL_WIDTH (f)) 4549 if (sb_left + sb_width >= FRAME_PIXEL_WIDTH (f))
@@ -10151,7 +10121,7 @@ useful for non-standard keyboard layouts. */);
10151 doc: /* t means that when the option-key is held down while pressing the 10121 doc: /* t means that when the option-key is held down while pressing the
10152mouse button, the click will register as mouse-2 and while the 10122mouse button, the click will register as mouse-2 and while the
10153command-key is held down, the click will register as mouse-3. 10123command-key is held down, the click will register as mouse-3.
10154'reverse means that the the option-key will register for mouse-3 10124'reverse means that the option-key will register for mouse-3
10155and the command-key will register for mouse-2. nil means that 10125and the command-key will register for mouse-2. nil means that
10156no emulation should be done and the modifiers should be placed 10126no emulation should be done and the modifiers should be placed
10157on the mouse-1 event. */); 10127on the mouse-1 event. */);
diff --git a/src/macterm.h b/src/macterm.h
index f0846b10fa4..71cd4db82c0 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -149,7 +149,7 @@ struct mac_display_info
149 int smallest_font_height; 149 int smallest_font_height;
150 150
151 /* Reusable Graphics Context for drawing a cursor in a non-default face. */ 151 /* Reusable Graphics Context for drawing a cursor in a non-default face. */
152 XGCValues *scratch_cursor_gc; 152 GC scratch_cursor_gc;
153 153
154 /* These variables describe the range of text currently shown in its 154 /* These variables describe the range of text currently shown in its
155 mouse-face, together with the window they apply to. As long as 155 mouse-face, together with the window they apply to. As long as
@@ -388,7 +388,7 @@ struct mac_output {
388 /* Relief GCs, colors etc. */ 388 /* Relief GCs, colors etc. */
389 struct relief 389 struct relief
390 { 390 {
391 XGCValues *gc; 391 GC gc;
392 unsigned long pixel; 392 unsigned long pixel;
393 int allocated_p; 393 int allocated_p;
394 } 394 }
@@ -601,6 +601,8 @@ EXFUN (Fx_display_color_p, 1);
601EXFUN (Fx_display_grayscale_p, 1); 601EXFUN (Fx_display_grayscale_p, 1);
602EXFUN (Fx_display_planes, 1); 602EXFUN (Fx_display_planes, 1);
603extern void x_free_gcs P_ ((struct frame *)); 603extern void x_free_gcs P_ ((struct frame *));
604extern int XParseGeometry P_ ((char *, int *, int *, unsigned int *,
605 unsigned int *));
604 606
605/* Defined in macterm.c. */ 607/* Defined in macterm.c. */
606 608
@@ -614,6 +616,7 @@ extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowPtr, char *,
614 unsigned long, unsigned long, 616 unsigned long, unsigned long,
615 unsigned int)); 617 unsigned int));
616extern void XFreePixmap P_ ((Display *, Pixmap)); 618extern void XFreePixmap P_ ((Display *, Pixmap));
619extern GC XCreateGC P_ ((Display *, Window, unsigned long, XGCValues *));
617extern void XSetForeground P_ ((Display *, GC, unsigned long)); 620extern void XSetForeground P_ ((Display *, GC, unsigned long));
618extern void XSetBackground P_ ((Display *, GC, unsigned long)); 621extern void XSetBackground P_ ((Display *, GC, unsigned long));
619extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long)); 622extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long));
diff --git a/src/minibuf.c b/src/minibuf.c
index cb843375e82..2a54fae8b01 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -349,7 +349,7 @@ BUFFER can be a buffer or a buffer name. */)
349DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end, 349DEFUN ("minibuffer-prompt-end", Fminibuffer_prompt_end,
350 Sminibuffer_prompt_end, 0, 0, 0, 350 Sminibuffer_prompt_end, 0, 0, 0,
351 doc: /* Return the buffer position of the end of the minibuffer prompt. 351 doc: /* Return the buffer position of the end of the minibuffer prompt.
352Return (point-min) if current buffer is not a mini-buffer. */) 352Return (point-min) if current buffer is not a minibuffer. */)
353 () 353 ()
354{ 354{
355 /* This function is written to be most efficient when there's a prompt. */ 355 /* This function is written to be most efficient when there's a prompt. */
@@ -1014,7 +1014,7 @@ DEFUN ("eval-minibuffer", Feval_minibuffer, Seval_minibuffer, 1, 2, 0,
1014Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS 1014Prompt with PROMPT. If non-nil, optional second arg INITIAL-CONTENTS
1015is a string to insert in the minibuffer before reading. 1015is a string to insert in the minibuffer before reading.
1016\(INITIAL-CONTENTS can also be a cons of a string and an integer. Such 1016\(INITIAL-CONTENTS can also be a cons of a string and an integer. Such
1017arguments are used as in `read-from-minibuffer') */) 1017arguments are used as in `read-from-minibuffer'.) */)
1018 (prompt, initial_contents) 1018 (prompt, initial_contents)
1019 Lisp_Object prompt, initial_contents; 1019 Lisp_Object prompt, initial_contents;
1020{ 1020{
@@ -1758,7 +1758,7 @@ the values STRING, PREDICATE and `lambda'. */)
1758 || NILP (alist)) 1758 || NILP (alist))
1759 { 1759 {
1760 tem = Fassoc_string (string, alist, completion_ignore_case ? Qt : Qnil); 1760 tem = Fassoc_string (string, alist, completion_ignore_case ? Qt : Qnil);
1761 if NILP (tem) 1761 if (NILP (tem))
1762 return Qnil; 1762 return Qnil;
1763 } 1763 }
1764 else if (VECTORP (alist)) 1764 else if (VECTORP (alist))
diff --git a/src/search.c b/src/search.c
index 387abacc161..3b212e007e8 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3047,6 +3047,7 @@ syms_of_search ()
3047 searchbufs[i].regexp = Qnil; 3047 searchbufs[i].regexp = Qnil;
3048 searchbufs[i].whitespace_regexp = Qnil; 3048 searchbufs[i].whitespace_regexp = Qnil;
3049 staticpro (&searchbufs[i].regexp); 3049 staticpro (&searchbufs[i].regexp);
3050 staticpro (&searchbufs[i].whitespace_regexp);
3050 searchbufs[i].next = (i == REGEXP_CACHE_SIZE-1 ? 0 : &searchbufs[i+1]); 3051 searchbufs[i].next = (i == REGEXP_CACHE_SIZE-1 ? 0 : &searchbufs[i+1]);
3051 } 3052 }
3052 searchbuf_head = &searchbufs[0]; 3053 searchbuf_head = &searchbufs[0];
diff --git a/src/syntax.c b/src/syntax.c
index 0ceab9d6af8..a859250b15a 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -3391,6 +3391,14 @@ syms_of_syntax ()
3391 3391
3392 staticpro (&Vsyntax_code_object); 3392 staticpro (&Vsyntax_code_object);
3393 3393
3394 staticpro (&gl_state.object);
3395 staticpro (&gl_state.global_code);
3396 staticpro (&gl_state.current_syntax_table);
3397 staticpro (&gl_state.old_prop);
3398
3399 /* Defined in regex.c */
3400 staticpro (&re_match_object);
3401
3394 Qscan_error = intern ("scan-error"); 3402 Qscan_error = intern ("scan-error");
3395 staticpro (&Qscan_error); 3403 staticpro (&Qscan_error);
3396 Fput (Qscan_error, Qerror_conditions, 3404 Fput (Qscan_error, Qerror_conditions,
diff --git a/src/textprop.c b/src/textprop.c
index 718051e38f2..ec75c6907ae 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -719,7 +719,7 @@ it finds a change in some text property, or the beginning or end of an
719overlay, and returns the position of that. 719overlay, and returns the position of that.
720If none is found, the function returns (point-max). 720If none is found, the function returns (point-max).
721 721
722If the optional third argument LIMIT is non-nil, don't search 722If the optional second argument LIMIT is non-nil, don't search
723past position LIMIT; return LIMIT if nothing is found before LIMIT. */) 723past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
724 (position, limit) 724 (position, limit)
725 Lisp_Object position, limit; 725 Lisp_Object position, limit;
@@ -744,7 +744,7 @@ finds a change in some text property, or the beginning or end of an
744overlay, and returns the position of that. 744overlay, and returns the position of that.
745If none is found, the function returns (point-max). 745If none is found, the function returns (point-max).
746 746
747If the optional third argument LIMIT is non-nil, don't search 747If the optional second argument LIMIT is non-nil, don't search
748past position LIMIT; return LIMIT if nothing is found before LIMIT. */) 748past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
749 (position, limit) 749 (position, limit)
750 Lisp_Object position, limit; 750 Lisp_Object position, limit;
diff --git a/src/w32.c b/src/w32.c
index 77959037913..25283c3b4c6 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -20,8 +20,6 @@ Boston, MA 02110-1301, USA.
20 20
21 Geoff Voelker (voelker@cs.washington.edu) 7-29-94 21 Geoff Voelker (voelker@cs.washington.edu) 7-29-94
22*/ 22*/
23
24
25#include <stddef.h> /* for offsetof */ 23#include <stddef.h> /* for offsetof */
26#include <stdlib.h> 24#include <stdlib.h>
27#include <stdio.h> 25#include <stdio.h>
@@ -73,6 +71,7 @@ Boston, MA 02110-1301, USA.
73#define _ANONYMOUS_STRUCT 71#define _ANONYMOUS_STRUCT
74#endif 72#endif
75#include <windows.h> 73#include <windows.h>
74#include <shlobj.h>
76 75
77#ifdef HAVE_SOCKETS /* TCP connection support, if kernel can do it */ 76#ifdef HAVE_SOCKETS /* TCP connection support, if kernel can do it */
78#include <sys/socket.h> 77#include <sys/socket.h>
@@ -100,6 +99,9 @@ Boston, MA 02110-1301, USA.
100#include "w32heap.h" 99#include "w32heap.h"
101#include "systime.h" 100#include "systime.h"
102 101
102typedef HRESULT (WINAPI * ShGetFolderPath_fn)
103 (IN HWND, IN int, IN HANDLE, IN DWORD, OUT char *);
104
103void globals_of_w32 (); 105void globals_of_w32 ();
104 106
105extern Lisp_Object Vw32_downcase_file_names; 107extern Lisp_Object Vw32_downcase_file_names;
@@ -903,7 +905,9 @@ init_environment (char ** argv)
903 static const char * const tempdirs[] = { 905 static const char * const tempdirs[] = {
904 "$TMPDIR", "$TEMP", "$TMP", "c:/" 906 "$TMPDIR", "$TEMP", "$TMP", "c:/"
905 }; 907 };
908
906 int i; 909 int i;
910
907 const int imax = sizeof (tempdirs) / sizeof (tempdirs[0]); 911 const int imax = sizeof (tempdirs) / sizeof (tempdirs[0]);
908 912
909 /* Make sure they have a usable $TMPDIR. Many Emacs functions use 913 /* Make sure they have a usable $TMPDIR. Many Emacs functions use
@@ -942,6 +946,8 @@ init_environment (char ** argv)
942 LPBYTE lpval; 946 LPBYTE lpval;
943 DWORD dwType; 947 DWORD dwType;
944 char locale_name[32]; 948 char locale_name[32];
949 struct stat ignored;
950 char default_home[MAX_PATH];
945 951
946 static struct env_entry 952 static struct env_entry
947 { 953 {
@@ -964,6 +970,35 @@ init_environment (char ** argv)
964 {"LANG", NULL}, 970 {"LANG", NULL},
965 }; 971 };
966 972
973 /* For backwards compatibility, check if a .emacs file exists in C:/
974 If not, then we can try to default to the appdata directory under the
975 user's profile, which is more likely to be writable. */
976 if (stat ("C:/.emacs", &ignored) < 0)
977 {
978 HRESULT profile_result;
979 /* Dynamically load ShGetFolderPath, as it won't exist on versions
980 of Windows 95 and NT4 that have not been updated to include
981 MSIE 5. Also we don't link with shell32.dll by default. */
982 HMODULE shell32_dll;
983 ShGetFolderPath_fn get_folder_path;
984 shell32_dll = GetModuleHandle ("shell32.dll");
985 get_folder_path = (ShGetFolderPath_fn)
986 GetProcAddress (shell32_dll, "SHGetFolderPathA");
987
988 if (get_folder_path != NULL)
989 {
990 profile_result = get_folder_path (NULL, CSIDL_APPDATA, NULL,
991 0, default_home);
992
993 /* If we can't get the appdata dir, revert to old behaviour. */
994 if (profile_result == S_OK)
995 env_vars[0].def_value = default_home;
996 }
997
998 /* Unload shell32.dll, it is not needed anymore. */
999 FreeLibrary (shell32_dll);
1000 }
1001
967 /* Get default locale info and use it for LANG. */ 1002 /* Get default locale info and use it for LANG. */
968 if (GetLocaleInfo (LOCALE_USER_DEFAULT, 1003 if (GetLocaleInfo (LOCALE_USER_DEFAULT,
969 LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP, 1004 LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP,
diff --git a/src/w32fns.c b/src/w32fns.c
index 236aa81d7a8..6bcb668aa8b 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -154,7 +154,7 @@ int display_hourglass_p;
154 over text or in the modeline. */ 154 over text or in the modeline. */
155 155
156Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape; 156Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
157Lisp_Object Vx_hourglass_pointer_shape, Vx_window_horizontal_drag_shape, Vx_hand_shape; 157Lisp_Object Vx_hourglass_pointer_shape, Vx_window_horizontal_drag_shape;
158 158
159/* The shape when over mouse-sensitive text. */ 159/* The shape when over mouse-sensitive text. */
160 160
@@ -8822,6 +8822,8 @@ versions of Windows) characters. */);
8822 staticpro (&Qw32_charset_ansi); 8822 staticpro (&Qw32_charset_ansi);
8823 Qw32_charset_ansi = intern ("w32-charset-ansi"); 8823 Qw32_charset_ansi = intern ("w32-charset-ansi");
8824 staticpro (&Qw32_charset_symbol); 8824 staticpro (&Qw32_charset_symbol);
8825 Qw32_charset_default = intern ("w32-charset-default");
8826 staticpro (&Qw32_charset_default);
8825 Qw32_charset_symbol = intern ("w32-charset-symbol"); 8827 Qw32_charset_symbol = intern ("w32-charset-symbol");
8826 staticpro (&Qw32_charset_shiftjis); 8828 staticpro (&Qw32_charset_shiftjis);
8827 Qw32_charset_shiftjis = intern ("w32-charset-shiftjis"); 8829 Qw32_charset_shiftjis = intern ("w32-charset-shiftjis");
diff --git a/src/w32proc.c b/src/w32proc.c
index 0e3f8f2fd47..7e344985f4e 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -2146,6 +2146,8 @@ syms_of_ntproc ()
2146{ 2146{
2147 Qhigh = intern ("high"); 2147 Qhigh = intern ("high");
2148 Qlow = intern ("low"); 2148 Qlow = intern ("low");
2149 staticpro (&Qhigh);
2150 staticpro (&Qlow);
2149 2151
2150#ifdef HAVE_SOCKETS 2152#ifdef HAVE_SOCKETS
2151 defsubr (&Sw32_has_winsock); 2153 defsubr (&Sw32_has_winsock);
@@ -2241,6 +2243,9 @@ the truename of a file can be slow. */);
2241Note that this option is only useful for files on NTFS volumes, where hard links 2243Note that this option is only useful for files on NTFS volumes, where hard links
2242are supported. Moreover, it slows down `file-attributes' noticeably. */); 2244are supported. Moreover, it slows down `file-attributes' noticeably. */);
2243 Vw32_get_true_file_attributes = Qt; 2245 Vw32_get_true_file_attributes = Qt;
2246
2247 staticpro (&Vw32_valid_locale_ids);
2248 staticpro (&Vw32_valid_codepages);
2244} 2249}
2245/* end of ntproc.c */ 2250/* end of ntproc.c */
2246 2251
diff --git a/src/window.c b/src/window.c
index 9ae9bbf55f4..d926cedc96a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6246,33 +6246,33 @@ Second arg LEFT-WIDTH specifies the number of character cells to
6246reserve for the left marginal area. Optional third arg RIGHT-WIDTH 6246reserve for the left marginal area. Optional third arg RIGHT-WIDTH
6247does the same for the right marginal area. A nil width parameter 6247does the same for the right marginal area. A nil width parameter
6248means no margin. */) 6248means no margin. */)
6249 (window, left, right) 6249 (window, left_width, right_width)
6250 Lisp_Object window, left, right; 6250 Lisp_Object window, left_width, right_width;
6251{ 6251{
6252 struct window *w = decode_window (window); 6252 struct window *w = decode_window (window);
6253 6253
6254 /* Translate negative or zero widths to nil. 6254 /* Translate negative or zero widths to nil.
6255 Margins that are too wide have to be checked elsewhere. */ 6255 Margins that are too wide have to be checked elsewhere. */
6256 6256
6257 if (!NILP (left)) 6257 if (!NILP (left_width))
6258 { 6258 {
6259 CHECK_NUMBER (left); 6259 CHECK_NUMBER (left_width);
6260 if (XINT (left) <= 0) 6260 if (XINT (left_width) <= 0)
6261 left = Qnil; 6261 left_width = Qnil;
6262 } 6262 }
6263 6263
6264 if (!NILP (right)) 6264 if (!NILP (right_width))
6265 { 6265 {
6266 CHECK_NUMBER (right); 6266 CHECK_NUMBER (right_width);
6267 if (XINT (right) <= 0) 6267 if (XINT (right_width) <= 0)
6268 right = Qnil; 6268 right_width = Qnil;
6269 } 6269 }
6270 6270
6271 if (!EQ (w->left_margin_cols, left) 6271 if (!EQ (w->left_margin_cols, left_width)
6272 || !EQ (w->right_margin_cols, right)) 6272 || !EQ (w->right_margin_cols, right_width))
6273 { 6273 {
6274 w->left_margin_cols = left; 6274 w->left_margin_cols = left_width;
6275 w->right_margin_cols = right; 6275 w->right_margin_cols = right_width;
6276 6276
6277 adjust_window_margins (w); 6277 adjust_window_margins (w);
6278 6278
@@ -6317,22 +6317,22 @@ the command `set-fringe-style'.
6317If optional fourth arg OUTSIDE-MARGINS is non-nil, draw the fringes 6317If optional fourth arg OUTSIDE-MARGINS is non-nil, draw the fringes
6318outside of the display margins. By default, fringes are drawn between 6318outside of the display margins. By default, fringes are drawn between
6319display marginal areas and the text area. */) 6319display marginal areas and the text area. */)
6320 (window, left, right, outside_margins) 6320 (window, left_width, right_width, outside_margins)
6321 Lisp_Object window, left, right, outside_margins; 6321 Lisp_Object window, left_width, right_width, outside_margins;
6322{ 6322{
6323 struct window *w = decode_window (window); 6323 struct window *w = decode_window (window);
6324 6324
6325 if (!NILP (left)) 6325 if (!NILP (left_width))
6326 CHECK_NATNUM (left); 6326 CHECK_NATNUM (left_width);
6327 if (!NILP (right)) 6327 if (!NILP (right_width))
6328 CHECK_NATNUM (right); 6328 CHECK_NATNUM (right_width);
6329 6329
6330 if (!EQ (w->left_fringe_width, left) 6330 if (!EQ (w->left_fringe_width, left_width)
6331 || !EQ (w->right_fringe_width, right) 6331 || !EQ (w->right_fringe_width, right_width)
6332 || !EQ (w->fringes_outside_margins, outside_margins)) 6332 || !EQ (w->fringes_outside_margins, outside_margins))
6333 { 6333 {
6334 w->left_fringe_width = left; 6334 w->left_fringe_width = left_width;
6335 w->right_fringe_width = right; 6335 w->right_fringe_width = right_width;
6336 w->fringes_outside_margins = outside_margins; 6336 w->fringes_outside_margins = outside_margins;
6337 6337
6338 adjust_window_margins (w); 6338 adjust_window_margins (w);
diff --git a/src/xdisp.c b/src/xdisp.c
index d1229b3cb9f..f1316969577 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5967,6 +5967,15 @@ next_element_from_composition (it)
5967 Moving an iterator without producing glyphs 5967 Moving an iterator without producing glyphs
5968 ***********************************************************************/ 5968 ***********************************************************************/
5969 5969
5970/* Check if iterator is at a position corresponding to a valid buffer
5971 position after some move_it_ call. */
5972
5973#define IT_POS_VALID_AFTER_MOVE_P(it) \
5974 ((it)->method == GET_FROM_STRING \
5975 ? IT_STRING_CHARPOS (*it) == 0 \
5976 : 1)
5977
5978
5970/* Move iterator IT to a specified buffer or X position within one 5979/* Move iterator IT to a specified buffer or X position within one
5971 line on the display without producing glyphs. 5980 line on the display without producing glyphs.
5972 5981
@@ -6490,7 +6499,7 @@ move_it_vertically_backward (it, dy)
6490 move_it_to (&it2, start_pos, -1, -1, it2.vpos + 1, 6499 move_it_to (&it2, start_pos, -1, -1, it2.vpos + 1,
6491 MOVE_TO_POS | MOVE_TO_VPOS); 6500 MOVE_TO_POS | MOVE_TO_VPOS);
6492 } 6501 }
6493 while (it2.method != GET_FROM_BUFFER); 6502 while (!IT_POS_VALID_AFTER_MOVE_P (&it2));
6494 xassert (IT_CHARPOS (*it) >= BEGV); 6503 xassert (IT_CHARPOS (*it) >= BEGV);
6495 it3 = it2; 6504 it3 = it2;
6496 6505
@@ -6690,7 +6699,7 @@ move_it_by_lines (it, dvpos, need_y_p)
6690 else if (dvpos > 0) 6699 else if (dvpos > 0)
6691 { 6700 {
6692 move_it_to (it, -1, -1, -1, it->vpos + dvpos, MOVE_TO_VPOS); 6701 move_it_to (it, -1, -1, -1, it->vpos + dvpos, MOVE_TO_VPOS);
6693 if (it->method != GET_FROM_BUFFER) 6702 if (!IT_POS_VALID_AFTER_MOVE_P (it))
6694 move_it_to (it, IT_CHARPOS (*it) + 1, -1, -1, -1, MOVE_TO_POS); 6703 move_it_to (it, IT_CHARPOS (*it) + 1, -1, -1, -1, MOVE_TO_POS);
6695 } 6704 }
6696 else 6705 else
@@ -6712,13 +6721,13 @@ move_it_by_lines (it, dvpos, need_y_p)
6712 reseat (it, it->current.pos, 1); 6721 reseat (it, it->current.pos, 1);
6713 6722
6714 /* Move further back if we end up in a string or an image. */ 6723 /* Move further back if we end up in a string or an image. */
6715 while (it->method != GET_FROM_BUFFER) 6724 while (!IT_POS_VALID_AFTER_MOVE_P (it))
6716 { 6725 {
6717 /* First try to move to start of display line. */ 6726 /* First try to move to start of display line. */
6718 dvpos += it->vpos; 6727 dvpos += it->vpos;
6719 move_it_vertically_backward (it, 0); 6728 move_it_vertically_backward (it, 0);
6720 dvpos -= it->vpos; 6729 dvpos -= it->vpos;
6721 if (it->method == GET_FROM_BUFFER) 6730 if (IT_POS_VALID_AFTER_MOVE_P (it))
6722 break; 6731 break;
6723 /* If start of line is still in string or image, 6732 /* If start of line is still in string or image,
6724 move further back. */ 6733 move further back. */
@@ -10182,7 +10191,9 @@ select_frame_for_redisplay (frame)
10182 (BUFFER_LOCAL_VALUEP (val) 10191 (BUFFER_LOCAL_VALUEP (val)
10183 || SOME_BUFFER_LOCAL_VALUEP (val))) 10192 || SOME_BUFFER_LOCAL_VALUEP (val)))
10184 && XBUFFER_LOCAL_VALUE (val)->check_frame) 10193 && XBUFFER_LOCAL_VALUE (val)->check_frame)
10185 Fsymbol_value (sym); 10194 /* Use find_symbol_value rather than Fsymbol_value
10195 to avoid an error if it is void. */
10196 find_symbol_value (sym);
10186 10197
10187 for (tail = XFRAME (old)->param_alist; CONSP (tail); tail = XCDR (tail)) 10198 for (tail = XFRAME (old)->param_alist; CONSP (tail); tail = XCDR (tail))
10188 if (CONSP (XCAR (tail)) 10199 if (CONSP (XCAR (tail))
@@ -10193,7 +10204,7 @@ select_frame_for_redisplay (frame)
10193 (BUFFER_LOCAL_VALUEP (val) 10204 (BUFFER_LOCAL_VALUEP (val)
10194 || SOME_BUFFER_LOCAL_VALUEP (val))) 10205 || SOME_BUFFER_LOCAL_VALUEP (val)))
10195 && XBUFFER_LOCAL_VALUE (val)->check_frame) 10206 && XBUFFER_LOCAL_VALUE (val)->check_frame)
10196 Fsymbol_value (sym); 10207 find_symbol_value (sym);
10197} 10208}
10198 10209
10199 10210
@@ -10267,6 +10278,16 @@ redisplay_internal (preserve_echo_area)
10267 ++redisplaying_p; 10278 ++redisplaying_p;
10268 specbind (Qinhibit_free_realized_faces, Qnil); 10279 specbind (Qinhibit_free_realized_faces, Qnil);
10269 10280
10281 {
10282 Lisp_Object tail, frame;
10283
10284 FOR_EACH_FRAME (tail, frame)
10285 {
10286 struct frame *f = XFRAME (frame);
10287 f->already_hscrolled_p = 0;
10288 }
10289 }
10290
10270 retry: 10291 retry:
10271 pause = 0; 10292 pause = 0;
10272 reconsider_clip_changes (w, current_buffer); 10293 reconsider_clip_changes (w, current_buffer);
@@ -10701,8 +10722,12 @@ redisplay_internal (preserve_echo_area)
10701 if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f)) 10722 if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
10702 { 10723 {
10703 /* See if we have to hscroll. */ 10724 /* See if we have to hscroll. */
10704 if (hscroll_windows (f->root_window)) 10725 if (!f->already_hscrolled_p)
10705 goto retry; 10726 {
10727 f->already_hscrolled_p = 1;
10728 if (hscroll_windows (f->root_window))
10729 goto retry;
10730 }
10706 10731
10707 /* Prevent various kinds of signals during display 10732 /* Prevent various kinds of signals during display
10708 update. stdio is not robust about handling 10733 update. stdio is not robust about handling
diff --git a/src/xfaces.c b/src/xfaces.c
index 1e56955a03a..45379c7dd8c 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -783,8 +783,6 @@ x_free_gc (f, gc)
783#ifdef MAC_OS 783#ifdef MAC_OS
784/* Mac OS emulation of GCs */ 784/* Mac OS emulation of GCs */
785 785
786extern XGCValues *XCreateGC (void *, Window, unsigned long, XGCValues *);
787
788static INLINE GC 786static INLINE GC
789x_create_gc (f, mask, xgcv) 787x_create_gc (f, mask, xgcv)
790 struct frame *f; 788 struct frame *f;
@@ -3988,7 +3986,7 @@ Value is a vector of face attributes. */)
3988DEFUN ("internal-lisp-face-p", Finternal_lisp_face_p, 3986DEFUN ("internal-lisp-face-p", Finternal_lisp_face_p,
3989 Sinternal_lisp_face_p, 1, 2, 0, 3987 Sinternal_lisp_face_p, 1, 2, 0,
3990 doc: /* Return non-nil if FACE names a face. 3988 doc: /* Return non-nil if FACE names a face.
3991If optional second parameter FRAME is non-nil, check for the 3989If optional second argument FRAME is non-nil, check for the
3992existence of a frame-local face with name FACE on that frame. 3990existence of a frame-local face with name FACE on that frame.
3993Otherwise check for the existence of a global face. */) 3991Otherwise check for the existence of a global face. */)
3994 (face, frame) 3992 (face, frame)